//--CSS Browser selection
//function css_browser_selector(u){var ua = u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1;},g='gecko',w='webkit',s='safari',h=document.getElementsByTagName('html')[0],b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3')?g+' ff3':is('gecko/')?g:/opera(\s|\/)(\d+)/.test(ua)?'opera opera'+RegExp.$2:is('konqueror')?'konqueror':is('chrome')?w+' chrome':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?'mobile':is('iphone')?'iphone':is('ipod')?'ipod':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win':is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);
//---Enables tabs in the side-bar
function Popular(target) {
 typeof target == "object" ? this.element = target : this.element = document.getElementById(target); if (!this.element) return false;  
 this.ul = this.element.getElementsByTagName("ul")[0]; 
 this.tabs = this.ul.getElementsByTagName("li");
 this.tabContent = this.getTabContent();
 this.bind(); }
Popular.prototype.getTabContent = function() {
 tabContent= new Array();    
 this.divs = this.element.getElementsByTagName("div");
 for(var i = 0; i < this.divs.length; i++) {
 if (/tabContent/i.test(this.divs[i].className)) {
 tabContent.push(this.divs[i]);                        
 }} return tabContent; }
Popular.prototype.bind = function() {    
 var o = this;
 for(var i = 0; i < this.tabs.length; i++) {
 this.tabs[i].onclick = function() { 
 if (this.className != 'selected') {
 o.open(this); return false;
 var a = this.getElementsByTagName("a")[0];
 if (a) a.onclick = function() { 
 return false; }}}}}
Popular.prototype.open = function(caller) {    
 for(var i = 0; i < this.tabs.length; i++) {
 var tab = this.tabs[i]; 
 if (tab == caller) {  
 this.collapse();
 tab.className = "selected"
 this.tabContent[i].style.display = "block";}}}
Popular.prototype.collapse = function() {
 for(var i = 0; i < this.tabs.length; i++) {    
 this.tabs[i].className = "";
 this.tabContent[i].style.display = "none"; } }

//---Opens external links in new tabs
function go_external(){ 
	var hostname = window.location.hostname.replace("www.", "").toLowerCase();
	var i = document.links.length;
	while ( --i >= 0 ) {
		var thisLink = document.links[i];
		var thisHref = thisLink.href.toLowerCase();
		if ( thisHref.indexOf("http://") != -1 && thisHref.indexOf(hostname) == -1 ) {
			thisLink.target = '_blank';
			thisLink.className = 'external';}}}

//---Hides divs. 
function toggleDiv(divid){
  if(document.getElementById(divid).style.display == 'none'){
    document.getElementById(divid).style.display = 'block';
  }else{
    document.getElementById(divid).style.display = 'none';
  }
}

//---Motion Pack
var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();


function slidedown(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){
        obj[objname] = document.getElementById(objname);

        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
                endSlide(objname)
        else {
                var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;

                obj[objname].style.height = d + "px";
        }

        return;
}

function endSlide(objname){
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
                obj[objname].style.display = "none";

        obj[objname].style.height = endHeight[objname] + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
}

function toggleSlide(objname){
  if(document.getElementById(objname).style.display == "none"){
    // div is hidden, so let's slide down
    slidedown(objname);
    document.getElementById('unhidelink').style.display = 'none';
    document.getElementById('hidelink').style.display = 'block';

  }else{
    // div is not hidden, so slide up
    slideup(objname);
    document.getElementById('unhidelink').style.display = 'block';
    document.getElementById('hidelink').style.display = 'none';
  }

}

//---Collapsing Archives
/*  Collapse Functions, version 1.5
 *
 *--------------------------------------------------------------------------*/
String.prototype.trim = function() {
  return this.replace(/^\s+|\s+$/g,"");
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  } else {
    var expires = "";
  }
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') {
      c = c.substring(1,c.length);
    }
    if (c.indexOf(nameEQ) == 0) {
      return c.substring(nameEQ.length,c.length);
    }
  }
  return null;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}
function collapsAddLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
function autoExpandCollapse(collapsClass) {
  var cookies = document.cookie.split(';');
  var cookiePattern = new RegExp(collapsClass+'(-[0-9]+|List-[0-9]+-[0-9]+|List-[0-9]+)');
  var classPattern = new RegExp('^' + collapsClass);
  var hide = collapsClass + ' ' + 'collapse'
  var show = collapsClass + ' ' + 'expand'
  for (var cookieIndex=0; cookieIndex<cookies.length; cookieIndex++) {
    var cookieparts= cookies[cookieIndex].split('=');
    var cookiename=cookieparts[0].trim();
    var cookievalue=cookieparts[1].trim();
    if (cookiename.match(cookiePattern)) {
      var expand= document.getElementById(cookiename);
      if (expand) {
        var thisli = expand.parentNode;
        for (var childI=0; childI< thisli.childNodes.length; childI++) {
          if (thisli.childNodes[childI].nodeName.toLowerCase() == 'span') {
            theSpan=thisli.childNodes[childI];
            if (theSpan.className.match(classPattern)) {
              if ((theSpan.className == show && cookievalue ==1) ||
                  (theSpan.className == hide && cookievalue ==0)) {
                var theOnclick=theSpan.onclick+"";
                var matches=theOnclick.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/);
                var expand=matches[1].replace(/\\u25BA/, '\u25BA');
                var collapse=matches[2].replace(/\\u25BC/, '\u25BC');
                collapse=collapse.replace(/\\u2014/, '\u2014');
                expandCollapse(theSpan,expand,collapse,0,collapsClass);
              }
            }
          }
        } 
      }
    }
  }
}

function expandCollapse( e, expand,collapse, animate, collapsClass ) {
  var classPattern= new RegExp('^' + collapsClass);
  if (expand=='expandImg') {
    expand=expandSym;
  }
  if (collapse=='collapseImg') {
    collapse=collapseSym;
  }
  if( e.target ) {
    src = e.target;
  } else if (e.className && e.className.match(classPattern)) {
    src=e;
  } else {
    try {
      src = window.event.srcElement;
    } catch (err) {
    }
  }

  srcList = src.parentNode;
  if (src.nodeName.toLowerCase() == 'img' ||
      src.parentNode.nodeName.toLowerCase() == 'h2') {
    srcList = src.parentNode.parentNode;
    src=src.parentNode;
  } else if (src.parentNode.parentNode.nodeName.toLowerCase() == 'h2') {
    src=src.parentNode;
    srcList = src.parentNode.parentNode;
  }
  if (srcList.nodeName.toLowerCase() == 'span') {
    srcList= srcList.parentNode;
    src= src.parentNode;
  }
  if (srcList.nodeName.toLowerCase() == 'h2') {
    srcList=srcList.parentNode;
  }
  childList = null;

  for( i = 0; i < srcList.childNodes.length; i++ ) {
    if( srcList.childNodes[i].nodeName.toLowerCase() == 'ul' ) {
      childList = srcList.childNodes[i];
    }
  }
  var hide = collapsClass + ' ' + 'collapse'
  var show = collapsClass + ' ' + 'expand'
  var theSpan = src.childNodes[0];
  var theId= childList.getAttribute('id');
  if (theSpan.className!='sym') {
    theSpan = theSpan.childNodes[0];
    //alert(childList.getAttribute('id'));
    theId = childList.childNodes[0].getAttribute('id');
  }
  if( src.getAttribute( 'class' ) == hide ) {
    createCookie(theId,0,7);
    src.setAttribute('class',show);
    src.setAttribute('title','click to expand');
    theSpan.innerHTML=expand;
    if (animate==1) {
      Effect.BlindUp(childList, {duration: 0.5});
    } else {
      childList.style.display = 'none';
    }
  } else {
    createCookie(theId,1,7);
    src.setAttribute('class',hide);
    src.setAttribute('title','click to collapse');
    theSpan.innerHTML=collapse;
    if (animate==1) {
      Effect.BlindDown(childList, {duration: 0.5});
    } else {
      childList.style.display = 'block';
    }
  }

  if( e.preventDefault ) {
    e.preventDefault();
  }

  return false;
}
