/* =Global JS Information
----------------------------------------------------------------------------------------------------
Contains: 
    =Button Hover
    =An easy way to deal w/ getting elms.
    =Missing string functionality
    =Table Scripts
    =Set Current Navigation Tab
    =Slide Show
    =Show/Hide Custom Select Box Menu
    =Initialize Document Parameters
----------------------------------------------------------------------------------------------------*/


//=Button Hover ------------------------------------------------------------ */
function swapImg(imgID,onState,offState){
    var obj = document.getElementById(imgID);
    obj.onmouseover = function(){this.className = onState}
    obj.onmouseout = function(){this.className = offState}
}


//=An easy way to deal w/ getting elms. ------------------------------------------------------------ */
function $(element) {
  return(document.getElementById(element));
}


//=Missing string functionality ------------------------------------------------------------ */
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/,"");
}


//=Table Scripts ------------------------------------------------------------ */
function addClassName(el,className) {
    removeClassName(el,className);
    el.className = (el.className + " " + className).trim();
}

function removeClassName(el,className) {
    el.className = el.className.replace(className,"").trim();
}

var Event = {
    add: function(obj,type,fn) {
        if (obj.attachEvent) {
            obj['e'+type+fn] = fn;
            obj[type+fn] = function() { obj['e'+type+fn](window.event); }
            obj.attachEvent('on'+type,obj[type+fn]);
        } else
        obj.addEventListener(type,fn,false);
    },
    remove: function(obj,type,fn) {
        if (obj.detachEvent) {
            obj.detachEvent('on'+type,obj[type+fn]);
            obj[type+fn] = null;
        } else
        obj.removeEventListener(type,fn,false);
    }
}

var stripeTable = {
    bgcolor: '',
    classname: '',
   
   
    stripe: function(el){
     var tbl = el;
      if (!tbl) return;
      
      var rows = tbl.getElementsByTagName('tr');
      var parity = false;
      for(var i=1;i<rows.length;i++){
        if( rows[i].className!="subRow" && rows[i].className!="totals"){
          if(parity){
            for (var c=0,len=rows[i].cells.length; c < len; c++){
              rows[i].cells[c].style.backgroundColor  = "#e5f2fb";
            }              
          }
        }
        parity = !parity;
      }
    },
    
    stripeWithDblHdr: function(el){
      var tbl = el;
      if (!tbl) return;
      var rows = tbl.getElementsByTagName('tr');
      var parity = false;
      var b=0;
      for(var i=2;i<rows.length;i++){
         if (rows[i].className=="bold"){
            if (parity){
              for (var c=0,len=rows[i].cells.length; c < len; c++){
                rows[i].cells[c].style.backgroundColor  = "#e5f2fb";
              }
            }
         i++;
         }
         try {
           while(rows[i].className!="bold") {
             if(parity){
               for (var c=0,len=rows[i].cells.length; c < len; c++){
                 rows[i].cells[c].style.backgroundColor  = "#e5f2fb";
               }              
             }
             i++;          
           } 
           i--;
           parity = !parity;
         }
         catch(Error)
         {
            return;
         }
      }
    },
    
    stripewithSubHdr: function(el){
      var tbl = el;
      if (!tbl) return;
      var rows = tbl.getElementsByTagName('tr');
      var parity = false;
      var b=0;
      for(var i=1;i<rows.length;i++){
         if (rows[i].className=="subHeader"){
           i++;
         }
         try {
           while(rows[i].className!="subHeader") {
             if(parity){
               for (var c=0,len=rows[i].cells.length; c < len; c++){
                 rows[i].cells[c].style.backgroundColor  = "#e5f2fb";
               }              
             }
             parity = !parity;
             i++;          
           } 
           i--;
         }
         catch(Error)
         {
            return;
         }
         parity=false;
      }
    }
}


// Tables: Hide/Show Sub-Rows
function hidesubrows(elm){
    var row = elm;
    var btnImg = elm.getElementsByTagName('img')[0];
    while(row.tagName.toLowerCase() != "tr" ){row=row.parentNode;}
    var bkgClr =row.cells[0].style.backgroundColor;
    var thisRow = row.nextSibling;
    while(thisRow.nodeType == 3){thisRow=thisRow.nextSibling;}   
    while(thisRow != null && thisRow.className == 'subRow'){    //Even' || thisRow.className == 'subRowOdd'){
        btnImg.src = 'images/global/iconMinusRed.png';
        if(thisRow.style.display == 'none' || thisRow.style.display == ''){
            for (var c=0,len=thisRow.cells.length; c < len; c++){
              thisRow.cells[c].style.backgroundColor  = bkgClr;
            }
            try{thisRow.style.display = 'table-row';} 
            catch(e){thisRow.style.display = 'block';}
        }else{
            btnImg.src = 'images/global/iconPlusRed.png';
            thisRow.style.display = 'none'
        }
        thisRow = thisRow.nextSibling;
        while(thisRow.nodeType == 3){thisRow=thisRow.nextSibling;} 
    }
}

function hideShowCells(row,style){
    for(var n=0;n<row.cells.length;n++){
        row.cells[n].style.display = style; 
    }
}

function setExpColl(){
  var cmdButtons = document.getElementsByTagName('a');
  for(var x=0;x<cmdButtons.length;x++){
    if(cmdButtons[x].className=="showHide"){
      cmdButtons[x].onclick=function(){hidesubrows(this);};
    }
  }
}

function changebkgrnd(arg)
{
  var cell = arg;
  var newImage = "url('images/global/tableGradientHover.png' )";
  cell.style.backgroundImage = newImage;
}

function switchback(arg)
{
  var cell = arg;
  var oldImage = "url('images/global/tableGradient.png' )";
  cell.style.backgroundImage = oldImage;
}

/* ---- Dynaic Tabs Functionality ---- */

dynTab.switchTab = function(tabindex, TabIdx)
{ 
   dynTab.ar_tabs[tabindex].dynTab.switchTab(TabIdx); 
}

dynTab.prototype.switchTab = function(tabindex)
{ 
   var Tab; 
  if(this.tabindex == tabindex){
    return false; 
  }
//  if(this.tabindex == tabindex){
//    return tabindex; 
//  }
  for(idx in this.arTab){ 

    Tab = this.arTab[idx]; 
    if(idx == tabindex)
    { 
      Tab[0].className = "activetab"; 
      Tab[1].style.display = "block"; 
      Tab[0].blur(); 
    }
    else
    { 
      Tab[0].className = "inactivetab"; 
      Tab[1].style.display = "none"; 
    } 
  } 
    this.tabindex = tabindex; 
    
} 
dynTab.prototype.newTab = function(id, current){ 

    var dynTabElem, idx = 0, el = '', tbElm = '', windwElms = ''; 
    dynTabElem = document.getElementById(id); 
    if(dynTabElem == null) return;
    dynTab.ar_tabs[dynTab.cnt] = dynTabElem; 
    this.tabElm = dynTabElem; 
    this.tabElm.dynTab = this; 
    this.tabCnt = 0; 
    /*if(tabCnt >0)
    {
       //do somthing
    }*/
    this.arTab = new Array(); 
    tbElm = dynTabElem.firstChild; 
    while(tbElm.className != "tabBtns" )tbElm = tbElm.nextSibling; 
    el = tbElm.firstChild; 
    do{ 
     if(el.tagName == "A"){ 
      el.href = "javascript:dynTab.switchTab(" + dynTab.cnt + "," + idx + ");"; 
     this.arTab[idx] = new Array(el, 0); 
     this.tabCnt = idx++; 
    } 
    }while (el = el.nextSibling); 

    windwElms = dynTabElem.firstChild; 
    while (windwElms.className != "tabBg")windwElms = windwElms.nextSibling; 
    
    el = windwElms.firstChild; 
    
    idx = 0; 
    
    do{ 
        if(el.className == "tabContent"){ 
            this.arTab[idx][1] = el; 
            idx++; 
        } 
    }while (el = el.nextSibling); 
    this.switchTab(current); 

    dynTab.cnt++; 
} 

function dynTab(id, current){ 
    if(typeof(dynTab.cnt) == "undefined"){ 
        dynTab.init(); 
    } 
    current = (typeof(current) == "undefined") ? 0 : current; 
    this.newTab(id, current); 
} 

dynTab.init = function(){ 
    dynTab.cnt = 0; 
  
    dynTab.ar_tabs = new Array(); 
} 
function initDynTabs(){ 
    t1 = new dynTab('tabs'); 
    t2 = new dynTab('myTab2');
}


//=Set Current Navigation Tab ------------------------------------------------------------ */
function setActiveNav(strNavName){

  var activeTab = 0;
   
  switch (strNavName){

    case "navtab1":
        activeTab=0;
      break;
    
    case "navtab2":
        activeTab=1;
      break;
    
    case "navtab3":
        activeTab=2;    
      break;
    
    case "navtab4":
        activeTab=3;    
      break;
    
    case "navtab5":
        activeTab=4;    
      break;
    
    case "navtab6":
        activeTab=5;    
      break;
      
  }

    var navList = $('mainNav');
    var itms = navList.getElementsByTagName('li');
    var newImg = "url('images/global/bgNavRight.png' ) 100% 100% no-repeat";
    for(var n = 0; n < itms.length; n++){
      if( n==activeTab) {
        //itms[n].style.backgroundImage = newImg; 
        //itms[n].style.color = "#000";
        //itms[n].style.fontWeight="Bold";
        itms[n].className = "active first";
        //var spn = itms[n].getElementsByTagName('span');
        //itms[3].childNodes[0].childNodes[0].className = "first";
        
      }
    }

}

//=Slide Show ------------------------------------------------------------ */
var slideshow = {
  
  init: function(){
    var divElms=document.getElementsByTagName("div");
    var slides=new Array();

    for(var x=0,len=divElms.length;x<len;x++){
      if(divElms[x].className != 'slideControls' && divElms[x].className.search('slide')!= -1){
        slides.push(divElms[x]);
      }
    } 

    var btns = document.getElementsByTagName("a");
    
    for(var x=0,len=btns.length;x<len;x++){
      if(btns[x].className.search('previousOff')!= -1){
        Event.add(btns[x],'click',function() { slideshow.showPrevious(this, slides);return false; });
      }
      if(btns[x].className.search('next')!= -1){
        Event.add(btns[x],'click',function() { slideshow.showNext(this, slides);return false; });
      }
    } 
    
  },
    
  showPrevious: function(btn, slides){
    if(slides){ 
      elms=document.getElementsByTagName('a');
      for(var x=0,len=elms.length;x<len;x++){
        if(elms[x].className.search('nextOff')!= -1){
            removeClassName(elms[x],"nextOff");
            addClassName(elms[x],"next");
        }
      } 
      for(var x=0,len=slides.length;x<len;x++){
        if(slides[x].className.search('hide')== -1){
          if(x<=0){
            removeClassName(btn,"previous");
            addClassName(btn,"previousOff");
            return;
          }
          addClassName(slides[x],"hide");
          removeClassName(slides[x-1], "hide");
          break;
        } 
      }
    }    
  },

  showNext: function(btn, slides){
    if(slides){ 
      elms=document.getElementsByTagName('a');
      for(var x=0,len=elms.length;x<len;x++){
        if(elms[x].className.search('previousOff')!= -1){
            removeClassName(elms[x],"previousOff");
            addClassName(elms[x],"previous");
        }
      } 
      for(var x=0,len=slides.length;x<len;x++){
        if(slides[x].className.search('hide')== -1){
          if(x>=slides.length-1){
            removeClassName(btn,"next");
            addClassName(btn,"nextOff");              
            return;
          }       
          addClassName(slides[x],"hide");
          removeClassName(slides[x+1], "hide");
          break;
        } 
      }
    } 
  }
}


//=Show/Hide Custom Select Box Menu ------------------------------------------------------------ */
function jumpMenu(mBox,mClosed,mOpen,optsList){
	var thisObj = this;
	this.mBox = mBox;
	this.mClosed = mClosed;
	this.mOpen = mOpen;	
	this.mList = optsList;
	this.boolClick = false;
	this.boolVisible = false;
	this.mClosed.style.display = "block";
	this.mOpen.style.display = "none";
	this.mList.style.display = "none";
	this.mClosed.onclick = function(){
		thisObj.showHide();
	}
	this.mOpen.onclick = function(){
		thisObj.showHide(thisObj.evt);	
	}
	this.mList.onclick = function(){
		thisObj.showHide(thisObj.evt)
	}		
	this.cNodes = this.mList.childNodes;
	this.count=0;
	for(x=0;x<this.cNodes.length;x++){
		if(this.cNodes[x].tagName=="LI"){
			this.count++;
			if(this.count>10){
				this.mList.style.height = "225px";
				break;
			}
		}
	}
}

function hideObj(e) {
	this.x=e.clientX;
	this.y=e.clientY;
	var c = document.getElementById(this.mBox.id);
	this.objL = c.offsetLeft - document.documentElement.scrollLeft;
	this.objT = c.offsetTop - document.documentElement.scrollTop;
	if(this.boolClick) {
		if(!this.boolVisible){return}		
		else{
			if((this.x<this.objL || this.x>(this.objL+c.offsetWidth)) || (this.y<this.objT || this.y>this.objT+c.offsetHeight)){
				this.showHide(e);
				this.boolVisible = false;	
			}
			else{return;}
		}	
	}
}
jumpMenu.prototype.hideList = hideObj;

function calcTopPos(){
	this.objTop = (this.mBox.offsetTop+21) - document.documentElement.scrollTop;
	this.objBot = this.objTop + this.mList.offsetHeight;
	if(this.objBot>document.documentElement.clientHeight){
		return -(this.mList.offsetHeight+18);
	}
	else{return 0;}
}
jumpMenu.prototype.calcTop = calcTopPos;

function showHideMenu(evt){
	this.mOpen.style.display = (this.mOpen.style.display=="block") ? "none" : "block";
	this.mClosed.style.display = (this.mClosed.style.display=="block") ? "none" : "block";	
	this.mList.style.display = (this.mList.style.display=="block") ? "none" : "block";
	this.yPos = this.calcTop();
	this.mList.style.top = eval('"'+this.yPos+'px"');
	this.mOpen.className = (this.yPos<0) ? "menuOpenUp" : "menuOpen";
	this.boolClick = (this.mList.style.display=="block") ? true : false;
	this.boolVisible = (this.mList.style.display=="block") ? true : false;
}
jumpMenu.prototype.showHide = showHideMenu;

var m = null;
var jMenu = new Array();
var j = 0;
function initJumpMenus(evt){
	var d = document.getElementsByTagName("DIV");
	for(i=0;i<d.length;i++){
		if(d[i].getAttribute("type")=="jumpMenu"){
			var mEls = d[i].getElementsByTagName("UL");
			for(y=0;y<mEls.length;y++){
				var m = mEls[y];
				if(m.className=="menuClosed"){var obj1 = m;}
				else if(m.className=="menuOpen"){var obj2 = m;}
				else if(m.className=="menuOptions"){var obj3 = m;}
			}
			jMenu[j++] = new jumpMenu(d[i],obj1,obj2,obj3);			
		}
	}
	document.onclick = function(event){
		if(!event) var event = window.event;
		for(a=0;a<jMenu.length;a++){
			if(jMenu[a].boolVisible){
				jMenu[a].hideList(event);
			}
		}
	}
}



//=Initialize Document Parameters ------------------------------------------------------------ */
var preSBOnload = (window.onload) ? window.onload : function () {};
	window.onload = function init(){
       preSBOnload(); // retain any previous window.onload handlers
//     Tables
//     --------------------------------------------------
       setExpColl();
       var tbls = document.getElementsByTagName('table');
       for(n=0;n<tbls.length;n++)
       { 
         // Striping for Standard Tables
         if(tbls[n].className.search('stripe')!= -1){
           stripeTable.stripe(tbls[n]);
         }
         // Striping for Tables with Double Header
         if(tbls[n].className.search('stripdblhdr')!= -1){
           stripeTable.stripeWithDblHdr(tbls[n]);
         }
         // Striping for Tables with Sub Headers
         if(tbls[n].className.search('stripsubhdr')!= -1){
           stripeTable.stripewithSubHdr(tbls[n]);
         }
       }
    
//     Tabs
//     --------------------------------------------------    
       initDynTabs();
       
       
//     Custom Jump Menu
//     --------------------------------------------------   
		initJumpMenus();
		

//     Additional Initialization (specified js file)
//     --------------------------------------------------       
       try { 
         InitializeDoc(); 
       }catch(Error){
         return;  
       }

    }
