// get a channel for callbacks
var channel = new Date().getTime();
var _sitePrefix = '';

// get the browser's hash location
var hash = window.location.hash;
var _hash = hash.substr(1);
setDefaultUrl(hash);

// an SWFObject instance used for placing the flash
var so;

function onWheel(event) {
  var delta = 0;
  // handle IE and opera
  if (event.wheelDelta) {
    delta = event.wheelDelta/120;
    // opera uses a reversed sign
    if (window.opera) delta = -delta;
  }
  // handle Mozilla
  else if (event.detail) {
    delta = - event.detail / 3;
  }
  // handle Safari
  if( /AppleWebKit/.test(navigator.userAgent) ) {
    delta /= 3; 
  }
  // send nonzero deltas to Flash
  //  a positive delta indicates scrolling up,
  //  and a negative delta indicates scrolling down
  if (delta != 0) {
    document[so.getAttribute('id')].onWheel(delta);
  }
  // prevent the event from bubbling and being handled elsewhere
  if (event.preventDefault) event.preventDefault();
  event.returnValue = false;
}

function addFlash(params) {
  // set defaults
  if (params.divId == undefined) params.divId = 'voicethreadContainer';
  if (params.userId == undefined) params.userId = 0;
  if (params.prefix == undefined) params.prefix = '';
  if (params.siteArea == undefined) params.siteArea = '';
  if (params.auth == undefined) params.auth = '';
  if (params.env == undefined) params.env = 'voicethread';
  if ((params.swfPath == undefined) || (params.swfPath == ''))
    params.swfPath = 'index.swf';
  if (params.defaultHash == undefined) params.defaultHash = '#home';
  // pass the hash to the player
  if (! (hash.length > 1)) hash = params.defaultHash;
  // make up the player url
  var swfUrl = params.prefix+params.swfPath+'?#env='+params.env;
  if (params.userId > 0) 
    swfUrl += '&u='+params.userId;
  swfUrl += '&lc='+channel;
  swfUrl += '&h='+escape(hash.substr(1));
  if (params.siteArea.length > 0) swfUrl += '&sa='+escape(params.siteArea);
  if (params.auth.length > 0) swfUrl += '&a='+escape(params.auth);
  // embed the player
  so = new SWFObject(swfUrl, 'voicethread', '100%', '100%', '7', '#666666');
  so.addParam('allowScriptAccess','always');
  var result = so.write(params.divId);
  if (result) {
    document.body.style.background = '#666666';
  }
  // listen for mouse wheel events in Mozilla
  if (window.addEventListener) {
    window.addEventListener('DOMMouseScroll', onWheel, false);
  }
  // ...and in IE/Opera
  window.onmousewheel = document.onmousewheel = onWheel;
}

var histCall = 0;
function setPlayerUrl(hash) {
  if (browser == 'Safari') return;
  if ((hash != _hash) || (browser != 'IE')) {
    _hash = hash;
    var histUrl = _sitePrefix+'extra/history.swf?lc='+escape(channel)+'&h='+escape(hash);
    var hist = new SWFObject(histUrl, 'history_'+(histCall++), '500', '50', '7', '#FFFFFF');
    hist.write("historyContainer");
  }
}
