// global.js for brudder site
// site-wide functionality
// code by CN

/**********************************************************************
   Page initialization
 *********************************************************************/

function globalPageInit() {
   if (isDefined(document.getElementsByTagName)) {
      
      // links
      var links = document.getElementsByTagName('a');
      for (var linkIndex = links.length - 1; linkIndex >= 0; linkIndex--) {
         var linkElement = links[linkIndex];
         
         // external links
         if (linkElement.className.indexOf('external') > -1) {
            linkElement.onclick = function() {
               openExternalLink(this.href);
               return false;
            };
         }
      }
			var featureItemDetails = document.getElementById('feature-item-detail');
      if (featureItemDetails) {
				featureItemDetails.style.display = 'block';
			}
   }
}


/**********************************************************************
   Flash video player initialization and interaction
 *********************************************************************/

function writeSWFObject(placeholderId, file, autoplay) {
   var so = new SWFObject('/swf/mediaplayer.swf', placeholderId + 'flash', '534', '300', '7');
   so.addParam('allowfullscreen', 'true');
   so.addParam('allowscriptaccess', 'always');
   so.addVariable('javascriptid', placeholderId + 'flash');
   so.addVariable('backcolor', '0xffffff');
   so.addVariable('autostart', 'true');
   so.addVariable('enablejs', 'true');
   if (isDefined(autoplay) && autoplay == false) {
      so.addVariable('autostart', false);
   }
   if (file) {
      so.addVariable('file', file);
   }
   so.write(placeholderId);
}

function viewVideo(flvPath, flashPlayerId) {
   var flash = getMovieById(flashPlayerId);
   if (flash && flash.PercentLoaded && flash.PercentLoaded() == 100 && isDefined(flash.loadFile)) {
      flash.loadFile( { file: flvPath } );
   }
   else {
      setTimeout('viewVideo("' + flvPath + '", "' + flashPlayerId + '")', 100);
   }
}

function getMovieById(id) {
   if (navigator.appName.indexOf("Microsoft") != -1) {
      return window[id];
   } 
   else {
      return document[id];
   }
}


/**********************************************************************
   Popups and New Windows
 *********************************************************************/

// openExternalLink(url) - use to open all off-site links
// ie: <a href="http://url.here" onclick="openExternalLink(this.href); return false;">
function openExternalLink(url) {
   return window.open(url, 'external', 'location,menubar,resizable,scrollbars,status,toolbar');
}


/**********************************************************************
   Basic Event Registration
   - has issues see http://www.quirksmode.org/blog/archives/2005/08/addevent_consid.html
 *********************************************************************/

function addEvent(object, eventName, functionRef) {
   if (isDefined(window.addEventListener)) {
      object.addEventListener(eventName, functionRef, false);
   }
   else if (isDefined(window.attachEvent)) {
      object.attachEvent('on' + eventName, functionRef);
   }
}

function removeEvent(object, eventName, functionRef){
   if (isDefined(window.addEventListener)) {
      object.removeEventListener(eventName, functionRef, false);
      return true;
   }
   else if (isDefined(window.attachEvent)) {
      var r = object.detachEvent('on' + eventName, functionRef);
      return r;
   }
}


/**********************************************************************
   Utilities
 *********************************************************************/

function isDefined(property) {
  return (typeof property != 'undefined');
}

function getElementsByClassName(className, parentElement, tagName) {
   var elements = [];
   var children = (parentElement || document.body).getElementsByTagName(tagName || '*');
   for (var childIndex = children.length - 1; childIndex >= 0; childIndex--) {
      var child = children[childIndex];
      if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) {
         elements.push(child);
       }
   }
   return elements;
};

function cumulativeOffset(element) {
   var valueT = 0, valueL = 0;
   do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
   } while (element);
   return [valueL, valueT];
}

   
// call pageInit when document finishes loading
window.addEvent(window, 'load', globalPageInit);
