/* begin at prime javascript by zoolu web */
var AP = {};

// Browser Detect  v2.1.6
// documentation: http://www.dithered.com/javascript/browser_detect/index.html
// license: http://creativecommons.org/licenses/by/1.0/
// code by Chris Nott (chris[at]dithered[dot]com)

function BrowserDetect() {

  var ua = navigator.userAgent.toLowerCase();
  this.isGecko       = (ua.indexOf('gecko') != -1 && ua.indexOf('safari') == -1);
  this.isAppleWebKit = (ua.indexOf('applewebkit') != -1);
  this.isKonqueror   = (ua.indexOf('konqueror') != -1);
  this.isSafari      = (ua.indexOf('safari') != - 1);
  this.isOldSafari      = (this.isSafari && !window.XMLHttpRequest);
  this.isOmniweb     = (ua.indexOf('omniweb') != - 1);
  this.isOpera       = (ua.indexOf('opera') != -1);
  this.isIcab        = (ua.indexOf('icab') != -1);
  this.isAol         = (ua.indexOf('aol') != -1);
  this.isIE          = (ua.indexOf('msie') != -1 && !this.isOpera && (ua.indexOf('webtv') == -1) );
  this.isMozilla     = (this.isGecko && ua.indexOf('gecko/') + 14 == ua.length);
  this.isFirebird    = (ua.indexOf('firebird/') != -1);
  this.isNS          = ( (this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && !this.isOpera && !this.isSafari && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) );
  this.isIECompatible = ( (ua.indexOf('msie') != -1) && !this.isIE);
  this.isNSCompatible = ( (ua.indexOf('mozilla') != -1) && !this.isNS && !this.isMozilla);
  this.geckoVersion = ( (this.isGecko) ? ua.substring( (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 );
  this.equivalentMozilla = ( (this.isGecko) ? parseFloat( ua.substring( ua.indexOf('rv:') + 3 ) ) : -1 );
  this.appleWebKitVersion = ( (this.isAppleWebKit) ? parseFloat( ua.substring( ua.indexOf('applewebkit/') + 12) ) : -1 );
  this.versionMinor = parseFloat(navigator.appVersion);

  if (this.isGecko && !this.isMozilla) {
    this.versionMinor = parseFloat( ua.substring( ua.indexOf('/', ua.indexOf('gecko/') + 6) + 1 ) );
  } else if (this.isMozilla) {
    this.versionMinor = parseFloat( ua.substring( ua.indexOf('rv:') + 3 ) );
  } else if (this.isIE && this.versionMinor >= 4) {
    this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) );
  } else if (this.isKonqueror) {
    this.versionMinor = parseFloat( ua.substring( ua.indexOf('konqueror/') + 10 ) );
  } else if (this.isSafari) {
    this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('safari/') + 7 ) );
  } else if (this.isOmniweb) {
    this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('omniweb/') + 8 ) );
  } else if (this.isOpera) {
    this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera') + 6 ) );
  } else if (this.isIcab) {
    this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab') + 5 ) );
  }

  this.versionMajor = parseInt(this.versionMinor);
  this.isDOM1 = (document.getElementById);
  this.isDOM2Event = (document.addEventListener && document.removeEventListener);
  this.mode = document.compatMode ? document.compatMode : 'BackCompat';
  this.isWin    = (ua.indexOf('win') != -1);
  this.isWin32  = (this.isWin && ( ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1 || ua.indexOf('xp') != -1) );
  this.isMac    = (ua.indexOf('mac') != -1);
  this.isUnix   = (ua.indexOf('unix') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)
  this.isLinux  = (ua.indexOf('linux') != -1);
  this.isNS4x = (this.isNS && this.versionMajor == 4);
  this.isNS40x = (this.isNS4x && this.versionMinor < 4.5);
  this.isNS47x = (this.isNS4x && this.versionMinor >= 4.7);
  this.isNS4up = (this.isNS && this.versionMinor >= 4);
  this.isNS6x = (this.isNS && this.versionMajor == 6);
  this.isNS6up = (this.isNS && this.versionMajor >= 6);
  this.isNS7x = (this.isNS && this.versionMajor == 7);
  this.isNS7up = (this.isNS && this.versionMajor >= 7);
  this.isIE4x = (this.isIE && this.versionMajor == 4);
  this.isIE4up = (this.isIE && this.versionMajor >= 4);
  this.isIE5x = (this.isIE && this.versionMajor == 5);
  this.isIE55 = (this.isIE && this.versionMinor == 5.5);
  this.isIE5up = (this.isIE && this.versionMajor >= 5);
  this.isIE6x = (this.isIE && this.versionMajor == 6);
  this.isIE6up = (this.isIE && this.versionMajor >= 6);
  this.isIE7x = (this.isIE && this.versionMajor == 7);
  this.isIE7up = (this.isIE && this.versionMajor >= 7);
  this.isIE4xMac = (this.isIE4x && this.isMac);

}

AP.Browser = new BrowserDetect();

/* allows us to append events to any elements, plus params */
AP.Event = function() {
    function appendEventHandler(aElement, aEvent, aFunction,aParamObject){
        var zElementFunctions = aEvent +'Functions';
        if(AP.Browser.isSafari&&aElement==window){
          if(window.name==''){   
            window.name = 'win_foo';
          }
          zElementFunctions = window.name+'_'+aEvent+'_Functions';
        }
    
        if (aElement[zElementFunctions]){
          aElement[zElementFunctions][aElement[zElementFunctions].length] = {Function:aFunction,Params:aParamObject};
        } else {
    
            aElement[zElementFunctions] = [];
            if (aElement[aEvent]){
              aElement[aEvent + 'OriginalFunction'] = aElement[aEvent];
            }
        
            aElement[zElementFunctions][aElement[zElementFunctions].length] = {Function:aFunction,Params:aParamObject};
            aElement[aEvent] = (
              function() {
                return function(e){
                  e = (e ? e:window.event);
                  var x;
                  for (x=0;x<this[zElementFunctions].length;x++){
                    aElement.TempFunc = this[zElementFunctions][x].Function;
                    if(!aElement.TempFunc(e,this[zElementFunctions][x].Params)){
                      return false;
                    }
                  }
        
                  if(aElement[aEvent +'OriginalFunction']){
                    aElement.TempFunc = aElement[aEvent + 'OriginalFunction'];
                    if(!aElement.TempFunc(e)){
                      return false;
                    }
                  }
                  return true;
                }
              }
            )();
        }
    }
    
    function removeEventHandler(aElement, aEvent, aFunction,aParamObject){
        if(aElement[aEvent+'Functions']){
            for(var i=aElement[aEvent+'Functions'].length-1;i>=0;i--){
                if(!aFunction||aElement[aEvent+'Functions'][i].Function==aFunction){
                    if(!aParamObject||aParamObject==aElement[aEvent+'Functions'][i].Params){
                      aElement[aEvent+'Functions'].splice(i,1);
                    }
                }
            }
        }
    }

    function onDOMLoad(aFunction,aParamObject) {
        if (!window.__load_events) {
          var init = function () {
            if (arguments.callee.done) return true;
            arguments.callee.done = true;
      
            if (window.__load_timer) {
              clearInterval(window.__load_timer);
              window.__load_timer = null;
            }
      
            for (var i=0;i < window.__load_events.length;i++) {
              window.__load_events[i].Function(window.__load_events[i].Params);
            }
      
            window.__load_events = null;
            return true;
      
          };
      
          if (document.addEventListener) {
            document.addEventListener("DOMContentLoaded", init, false);
          }
      
          if(/KHTML|WebKit/i.test(navigator.userAgent)) {
            window.__load_timer = setInterval(function() {
              if (/loaded|complete/.test(document.readyState)) {
                init();
              }
            }, 10);
          }
      
          /*@cc_on @*/
      
          /*@if (@_win32)
      
            document.write('<scr'+'ipt id="__ie_onload" defer s'+'rc="/home.blankjs"><\/scr'+'ipt>');
      
            var script = document.getElementById('__ie_onload');
      
            script.onreadystatechange = function() {
      
              if (this.readyState == 'complete') {
      
                init();
      
              }
      
            };
      
          /*@end @*/
      
          appendEventHandler(window, "onload", init, aParamObject);
          window.__load_events = [];
        }
      
        window.__load_events.push({Function:aFunction,Params:aParamObject});
    }
    
    return {
       add       : appendEventHandler,
       remove    : removeEventHandler,
       onDOMLoad : onDOMLoad
    }
}()

AP.HeaderUI = function() {
    var delay = 500;
    return {
        init: function(id) {
            var navRoot = document.getElementById(id);

            for (i=0; i<navRoot.childNodes.length; i++) {
                node = navRoot.childNodes[i];
                if (node.nodeName == "LI") {
                    for (j=0; j<node.childNodes.length; j++) {
                        child = node.childNodes[j];
                        if (child.nodeName == "UL") {
                            child.style.display = "none";
                        }
                        if (child.nodeName == "A") {
                            child.onmouseover = AP.HeaderUI.openNav;
                            child.onmouseout = AP.HeaderUI.hideNav;
                        }
                    }
                }
            }
        },
        
        openNav: function(e) {

            if (window.event) event.cancelBubble=true
            else if (e.stopPropagation) e.stopPropagation()

            var node, parent, i;
            var that = this;
            parent = this.parentNode;
                        
            for (i=0; i<parent.childNodes.length; i++) {
                node = parent.childNodes[i];
                if (node.nodeName=="UL") {
                    AP.HeaderUI.removeDelay();
                    if (node.style.display == "none") {
                        if (AP.HeaderUI.params && node != AP.HeaderUI.params.el) {
                            AP.HeaderUI.closeNav.call(AP.HeaderUI.params.el, AP.HeaderUI.params.node);
                        }
                        node.style.display = "block";
                        node.onmouseover = AP.HeaderUI.removeDelay;
                                              
                        node.onmouseout  = function(node) {
                            AP.HeaderUI.delayClose(that, this)
                            return true;
                        };
                    }
                }
            }
            this.blur();
            
            return true;
        },
        
        hideNav: function(e) {           
            if (window.event) event.cancelBubble=true
            else if (e.stopPropagation) e.stopPropagation()
            if (this.nodeName != "A") return true;

            var node, parent, i;
                var that = this;
                parent = this.parentNode;
                            
                for (i=0; i<parent.childNodes.length; i++) {
                    node = parent.childNodes[i];
                    if (node.nodeName=="UL") {
                        if (node.style.display != "none") {
                            AP.HeaderUI.delayClose(this, node);       
                        }
                    }
                }
                this.blur();
            return true;  
        },
        
        removeDelay: function() {
            if (AP.HeaderUI.closeTimeout) clearTimeout(AP.HeaderUI.closeTimeout);
            return true;
        },
        
        delayClose: function(el, node) {
            AP.HeaderUI.params = { el: el, node: node };
            if (AP.HeaderUI.closeTimeout) clearTimeout(AP.HeaderUI.closeTimeout);
            AP.HeaderUI.closeTimeout = setTimeout(function() {
                AP.HeaderUI.closeNav.call(el, node);
            }, delay);
            return true;
        },
        
        closeNav: function(node) {
            node.style.display = "none";
            return true;
        }
    } 
}()

AP.Event.onDOMLoad(AP.HeaderUI.init, 'tabs');