var cMenu = null; //Current Menu
var visibleMenus = new Array();
var topLevelClassName = "tni";
var topActiveClassName = "topNavActive";
var topCurrentClassName = "topNavCurrent";
var activeClassName = "activeItem";
var inactiveClassName = "nonActiveItem";
var MenuTimeoutDelay = 200;
var BrowserName = navigator.userAgent;
var isIE;
if (BrowserName.indexOf("MSIE") == -1)
{
	isIE = false;
} else  {
	isIE = true;
}


function sM(pMenu,id,anch,dir) //Show Menu
{ 
   if(typeof pMenu == "object")
   {
   var base = pMenu;
   } else {
   var base = document.getElementById(pMenu);
   }
   
   if(base.currentLink)
   {
   deactivateNavItem(base.currentLink);
   }
   base.currentLink = anch;
   activateNavItem(base.currentLink);
   visibleMenus[visibleMenus.length] = base;
   base.onmouseout = function() { cMenu = null; setTimeout("hideMenus()",MenuTimeoutDelay);};
   
   if(id == null && dir == null) // && offset == null
   {
      noSubMenu(pMenu);
      return;
   }
   
   var menu = document.getElementById(id);
   //if the nav hasn't loaded get out
   if(typeof menu == "undefined" || menu == null )
   {
	return;  
   }
  
   var top    = getOffsetProperty(anch, "Top", "topnav");
   var left   = getOffsetProperty(anch, "Left", "topnav");
   var width  = anch.offsetWidth;
   var height = anch.offsetHeight;
   if(top == "NaN" || left == "NaN")
   {
    return;  
   }

	//dynamic switch dir variable to left "l" if screen real estate isn't there.
	var offset = 0;
	var menuwrapoffset = 10;
	var availscreensidth = document.documentElement.clientWidth;
	var menutotal = left + (width*2) + menuwrapoffset; 
	if (menutotal > availscreensidth && dir!="b") { dir = "l"; }
	
   switch(dir)
   {
      case "b" : {
                 offset=-25;
				 menu.style.top = (top+height+offset)+"px";
                 menu.style.left = (left)+"px";
                 break;
                 }      
      case "r" : {
				 menu.style.top = (top-offset)+"px";
                 menu.style.left = (left+width+offset)+"px";
                 break;
                 }	
	  case "l" : {
                 offset=-6;
				 menu.style.top  = (top-offset)+"px";
                 menu.style.left = (left-width-offset)+"px";
                 break;
           		 }			  

   }
   
   if (isIE)
   {
   	   menu.style.visibility='visible';
   } else {
   	   menu.style.visibility='visible';
	   //menu.style.height=0;
	   menu.style.opacity=0;
   	   //menu.style.filter = 'alpha(opacity=0)';
	   fade(id, 280); 	
   	   //scalediv(menu, 20, 4); 
   }
	
   if(menu.currentLink)
   {
   deactivateNavItem(menu.currentLink);
   menu.currentLink = null;
   }
   cMenu = base;
   base.childMenu  = menu;
   menu.parentMenu = base;
   visibleMenus[visibleMenus.length] = menu;  
   menu.onmouseout = function(){cMenu = null; setTimeout("hideMenus()",MenuTimeoutDelay);};
}


//New Close Menu 
function cM(pMenu,id,anch)
{
   if(typeof pMenu == "object")
   {
      cMenu = pMenu;
   }else{
      cMenu = document.getElementById(pMenu);
   }
   cMenu.childMenu = null;
}

function hideMenus()
{
   var mTreeBase       = cMenu;
   var resetVisArray   = new Array();
   var activeMenuArray = new Array();
   if(mTreeBase !=null)
     {
      do {
      activeMenuArray[activeMenuArray.length] = mTreeBase;
      activeMenuArray[activeMenuArray.length] = mTreeBase.shadow;
      mTreeBase = mTreeBase.parentMenu;
      } 
      while (mTreeBase != null);
      if(cMenu.childMenu !=null)
      {
      activeMenuArray[activeMenuArray.length] = cMenu.childMenu;
      activeMenuArray[activeMenuArray.length] = cMenu.childMenu.shadow;
      }
     }

   for(i=visibleMenus.length-1; i>=0; i--)
   {
    var m = visibleMenus[i];
    if(m == null)
         continue;
    var hideIt = true;
       for(j=0;j < activeMenuArray.length;j++)
       {
         if(m == activeMenuArray[j])
         {
            hideIt = false;
            break;
         }
       }
	   
// Hides the Top level buttons 
    if(hideIt == true)
    {
     if(m.className.indexOf(topLevelClassName) < 0)
     {
      m.style.visibility='hidden';
     }
     if(m.currentLink)
     {
      deactivateNavItem(m.currentLink);
      m.currentLink = null;
     }
    }else{
     resetVisArray[resetVisArray.length] = m;
    }
   }
   visibleMenus = resetVisArray;
}

function noSubMenu(item)
{   
   if(typeof item == "object")
   {
      cMenu = item;
   }else{
      cMenu = document.getElementById(item);
   }
   cMenu.childMenu = null;
   hideMenus();
}

function activateNavItem(item)
{  
   if(item.className.indexOf(topCurrentClassName) >= 0)
   {
      return;
   }
   else {
      item.doNotDeactivate = false;
   }
    if(item.className.indexOf(topLevelClassName) >= 0)
   {      
        item.className = topLevelClassName +" "+ topActiveClassName;
   }else{
      if(item.className.indexOf(inactiveClassName) > 0)
      {
         item.className = item.className.replace(inactiveClassName,activeClassName);
      }else{
         item.className = activeClassName+" "+item.className;
      }
   }
}

function deactivateNavItem(item)
{
   if(item.className.indexOf(topCurrentClassName) >= 0)
   {
      return;
   }
   if(item.className.indexOf(topLevelClassName) >= 0)
   {      
         item.className = topLevelClassName;
   }else{
      if(item.className.indexOf(activeClassName) > 0)
      {
         item.className = item.className.replace(activeClassName,inactiveClassName);
      }else{
        item.className = inactiveClassName +" "+ item.className;
      }
   }
}

function getOffsetProperty(elementID, property, relativeElmID) {
   var offset = 0;
   if(typeof elementID == "object")
   {
   var element = elementID;
   }else{
   var element = document.getElementById(elementID);
   }  
   if(typeof element == "undefined" || element == null)
   {
    return "NaN";  
   }
   var relativeElm = document.getElementById(relativeElmID);
   if(relativeElm == null || typeof relativeElm == "undefined")
      relativeElm = document.body;
   do {
      offset += eval('element.offset' + property);
      element = element.offsetParent;
      // mac ie5.2 hack //bad form but it works
      var ua = navigator.userAgent.toLowerCase(); 
      var ieMac    = ((ua.indexOf("msie") != -1) && (ua.indexOf("mac")!=-1)); 
      if(ieMac && element == relativeElm)
         offset -= eval('element.offset' + property)
   } while (element != relativeElm && element != null);
   return parseInt(offset);
}

function fade(id, millisec) 
{   
	var speed, timer, i;
	speed = Math.round(millisec / 100); timer = 0;
    for(i = 0; i <= 100; i++) 
	{ 
		setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
        timer++; 
    } 
}
function changeOpac(opacity, id) { 
    var object = document.getElementById(id); 
    object.style.opacity = (opacity / 100); 
    //object.style.filter = "alpha(opacity=" + opacity + ")"; 
}
   
   
function divheight(object, height, step_size, step_time) 
{	
	height = parseFloat(height);	
	el = object;
	var h_size1 = el.offsetHeight;
	
	if (h_size1 < height) 
	{		
		if (h_size1 < height-step_size) 
		{			
			el.style.height = (h_size1+step_size)+"px";			
			timeout_id = setTimeout("divheight('"+object+"','"+ height +"',"+step_size+","+step_time+")", step_time);	
		} else {			
			el.style.height = height+"px";
		}	
	} else if (h_size1 > height) {		
		if (h_size1 > height+step_size) 
		{			
			el.style.height = (h_size1-step_size)+"px";			
			timeout_id = setTimeout("divheight('"+object+"',"+ height +","+step_size+","+step_time+")", step_time); 
		} else {			
			el.style.height = height+"px";
		}
	}
};

function scalediv(object, stepsize, steptime)
{
	var step_size = stepsize;	
	var step_time = steptime;
	var obj = document.getElementById(object.id);
	alert(object);
	if (obj)
	{
		height = obj.scrollHeight;
		if (obj.offsetHeight >= height)
		{
			divheight(object.id, 0, step_size, step_time);
		} else {
			divheight(object.id, height, step_size, step_time);
		}
	}
}
