// General variables
var onImg = new Array();
var offImg = new Array();
var clickImg = new Array();

// Files and directory structures
var navImgDir = "/urlhost/ibo/img/";
var arrowDir = "/urlhost/ibo/img/";
var cssDir = "/urlhost/ibo/css/";
var stylePrefix = "";
var typeof_is_printable = new String(typeof(is_printable));
if (typeof_is_printable.indexOf("undefined") == -1 && is_printable==true)
{
	stylePrefix = "print_";
}

/*
  var winNSCSS = "win_ns.css";
  var NS4CSS =winNSCSS;// "win_ns4.css";
  var winIECSS = "win_ie.css";
  var macCSS = "mac.css";
  var unixCSS = "unix.css";
  var winIE6CSS = "win_ie6.css";
  var strdCSS =winNSCSS; // "default.css";
*/
var NS4CSS = "win_ns.css";
var winIECSS = "win_ie.css";
var winIE6CSS = "win_ie6.css";
var strdCSS = "strd.css";
var macCSS = "mac.css";


// Arrows for navigational elements
var navArrName = arrowDir + "arrow_off.gif";
var navArrHLName = arrowDir + "arrow_on.gif";
var navArrClName = arrowDir + "arrow_click.gif";
var navArrClass = "navArrow";
var navArrW = "7";
var navArrH = "5";
var padNavArr = "10";

// Arrows for HTML headers within content units
var arrPrefix = arrowDir + "a_";
var arrHLName = arrowDir + "arrow_on.gif";
var arrW = "9";
var arrH = "8";
var padArr = "12";

// *************************************************************
//  CLIENT_SIDE SNIFFER CODE
// *************************************************************


	//  CLIENT_SIDE SNIFFER CODE
	// convert all characters to lowercase
        var agt=navigator.userAgent.toLowerCase();
	//alert (agt);
	// *** BROWSER VERSION ***
	// Note: On IE5, these return 4, so use is_ie5up to detect IE5.
	var is_major = parseInt(navigator.appVersion);
	var is_minor = parseFloat(navigator.appVersion);
        // *** BROWSER TYPE ***
	var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
	            && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
	            && (agt.indexOf('webtv')==-1));
	var is_nav4 = (is_nav && (is_major == 4));
	var is_nav5 = (is_nav && (is_major == 5));
	var is_nav5up = (is_nav && (is_major >= 5));
	var is_nav6 = (is_nav && (is_major == 6));
	var is_nav4up = (is_nav && (is_major >= 4));
	var is_nav6up = (is_nav && (is_major >= 6));
	var is_ie   = (agt.indexOf("msie") != -1);
	var is_ie3  = (is_ie && (is_major < 4));
	var is_ie4  = (is_ie && (is_major <= 4) && (agt.indexOf("msie 5.0")==-1) );
	var is_ie5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
	var is_ie5up  = (is_ie  && !is_ie3 && !is_ie4);
	var is_ie6    = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
	var is_opera = (agt.indexOf("opera") != -1);

	// *** PLATFORM ***
	var is_win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
		  
	var is_mac    = (agt.indexOf("mac")!=-1);
	var is_sun   = (agt.indexOf("sunos")!=-1);
	var is_irix  = (agt.indexOf("irix") !=-1);    // SGI
	var is_hpux  = (agt.indexOf("hp-ux")!=-1);
	var is_aix   = (agt.indexOf("aix") !=-1);      // IBM
	var is_linux = (agt.indexOf("inux")!=-1);
	var is_sco   = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1);
	var is_unixware = (agt.indexOf("unix_system_v")!=-1);
	var is_mpras    = (agt.indexOf("ncr")!=-1);
	var is_reliant  = (agt.indexOf("reliantunix")!=-1);
	var is_dec   = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) ||
	       (agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) ||
	       (agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1));
	var is_sinix = (agt.indexOf("sinix")!=-1);
	var is_freebsd = (agt.indexOf("freebsd")!=-1);
	var is_bsd = (agt.indexOf("bsd")!=-1);
	var is_unix  = ((agt.indexOf("x11")!=-1) || is_irix || is_sco ||
	is_unixware || is_mpras || is_reliant ||
	             is_dec || is_sinix || is_aix || is_bsd || is_freebsd);

				 
				 
/*  DEBUG ZONE */

/*				 
var myalert ="";
if (is_major) myalert+= ("is_major\n");
if (is_minor) myalert+= ("is_minor\n");
if (is_nav ) myalert+= ("is_nav\n");
if (is_nav4) myalert+= ("is_nav4\n");
if (is_nav5 ) myalert+= ("is_nav5\n");
if (is_nav5up) myalert+= ("is_nav5up\n");
if (is_nav6 ) myalert+= ("is_nav6\n");
if (is_nav4up)  myalert+= ("is_nav4up\n");
if (is_nav6up ) myalert+= ("is_nav6up\n");
if (is_ie  ) myalert+= ("is_ie\n");
if (is_ie3  ) myalert+= ("is_ie3\n");
if (is_ie4 ) myalert+= ("is_ie4\n");
if (is_ie5 )  myalert+= ("is_ie5\n");
if (is_ie5up )  myalert+= ("is_ie5up\n");
if (is_ie6   ) myalert+= ("is_ie6\n");
if (is_opera) myalert+= ("is_opera\n");
if (is_win  )  myalert+= ("is_win\n");
if (is_mac ) myalert+= ("is_mac\n");
if (is_sun  ) myalert+= ("is_sun\n");
if (is_irix )  myalert+= ("is_irix\n");
if (is_hpux ) myalert+= ("is_hpux\n");
if (is_aix )  myalert+= ("is_aix\n");
if (is_linux ) myalert+= ("is_linux\n");
if (is_sco ) myalert+= ("is_sco\n");
if (is_unixware) myalert+= ("is_unixware\n");
if (is_mpras)    myalert+= ("is_mpras\n");
if (is_reliant)   myalert+= ("is_reliant\n");
if (is_dec)   myalert+= ("is_dec\n");
if (is_sinix ) myalert+= ("is_sinix\n");
if (is_freebsd)  myalert+= ("is_freebsd\n");
if (is_bsd ) myalert+= ("is_bsd\n");
if (is_unix)   myalert+= ("is_unix\n");
alert (myalert);	
*/
/*  END DEBUG ZONE */


  
// Load stylesheet
ChooseStyleSheet();

// Handle Navigator 4 window resizing
if (is_nav4up) {
   var initWidth, initHeight;
   initWidth = window.innerWidth;
   initHeight = window.innerHeight;
   window.captureEvents(Event.RESIZE);
   window.onresize = handleResize;
}

// *********************************************************************
// ROLLOVERS FOR TOP NAVIGATION
// *********************************************************************
var topNavNames = new Array("ibo","sign_in","help","solutions","buy");
var imgName, imgHLName, refName;
if (document.images) {       //if image object is available     
  for (var i = 0; i < topNavNames.length; i++) {
    refName = topNavNames[i];
    imgName = navImgDir + refName + "_off.gif";
    imgHLName = navImgDir + refName + "_on.gif";
    imgClName = navImgDir + refName + "_click.gif";
    onImg[refName] = new Image();
    offImg[refName] = new Image();
    clickImg[refName] = new Image();
    onImg[refName].src = imgHLName;
    offImg[refName].src = imgName;
    clickImg[refName].src = imgName;
  }
}

// *********************************************************************
//  UTILITY FUNCTIONS
// *********************************************************************
// Function to handle window resizing on Navigator 4
function handleResize() {
   if (((initWidth != window.innerWidth) || (initHeight != window.innerHeight)) && (typeof disableReload == "undefined")) {
     location.reload();
   }
   return false;
}

function popupPrint() {
  var winPrint=open('http://welcome.hp.com/country/us/eng/printing_instructions.htm',
					"hpPrintWindow",
					"height=300,width=300,toolbar=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0");
}


// Function to choose the style sheet for use based on the platform
// and browser version

function ChooseStyleSheet() {
  var fileHead = cssDir;
  var styles;
  
  
  if (is_win) {   
    if (is_nav4) {
      styles = fileHead + NS4CSS;
      //alert ("NS4CSS");
    } 
    else if (is_ie6) {
      styles = fileHead + winIE6CSS;
      //alert ("winIE6CSS");
    } 
    else if (is_nav5up) {
      styles = fileHead + macCSS;
      //alert ("macCSS");
    } 
    else if (is_opera) {
      styles = fileHead + macCSS;
      //alert ("macCSS");
    } 
    else {
      styles = fileHead + winIECSS;
      //alert ("winIECSS");
    }
   
  } 
  else if (is_mac) {
    styles = fileHead + macCSS;
  } 
  else if (is_linux) {
    if (is_nav4) {
      styles = fileHead + strdCSS;
    } 
    else {
      styles = fileHead + macCSS;
    }
  } 
  else if (is_hpux) {
    if (is_ie5) {
      styles = fileHead + macCSS;
    } 
    else if (is_nav5up) {
      styles = fileHead + macCSS;
    } 
    else {
      styles = fileHead + strdCSS;
    }
  } 
  else if (is_sun) {
    if (is_nav4) {
      styles = fileHead + NS4CSS;
    } 
    else {
      styles = fileHead + strdCSS;
    }
  }  
  else {
    styles = fileHead + strdCSS;
  }
  document.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + styles + "\">");
  /*  DEBUG ZONE */
  //alert(" I use the stylesheet "+styles+" ");
  /*  END DEBUG ZONE */
  return true;
}




// Swap images on based on a name array
function imageOn(name) {
   if (document.images) {
    document.images[name].src = onImg[name].src
   }
}

// Swap images off based on a name array 
function imageOff(name) {
   if (document.images) {
    document.images[name].src = offImg[name].src
   }
}

// Swap images click based on a name array 
function imageClick(name) {
   if (document.images) {
    document.images[name].src = clickImg[name].src;
   }
}

var id_clicked=-1;

// Helper code to generate Image objects for content arrows
function NavArrowInit(refName) {
   if (document.images) {
	  onImg[refName] = eval("new Image(" + navArrW + "," + navArrH + ")");
	  offImg[refName] = eval("new Image(" + navArrW + "," + navArrH + ")");
	  clickImg[refName] = eval("new Image(" + navArrW + "," + navArrH + ")");
	  onImg[refName].src = navArrHLName;
	  offImg[refName].src = navArrName;
	  clickImg[refName].src = navArrClName;

	  }
  return true;
}

// Helper code to generate Image objects for content arrows
function ContentArrowInit(color,refName) {
   if (document.images) {
	  var arrName = arrPrefix + color + ".gif";
	  onImg[refName] = eval("new Image(" + arrW + "," + arrH + ")");
	  offImg[refName] = eval("new Image(" + arrW + "," + arrH + ")");
	  clickImg[refName] = eval("new Image(" + arrW + "," + arrH + ")");
	  onImg[refName].src = arrHLName;
	  offImg[refName].src = arrName;
	  clickImg[refName].src = arrName;
	  }
  return true;
}

if (document.images) {
	onImg["navArrowOn"] = eval("new Image(" + navArrW + "," + navArrH + ")");
	onImg["navArrowOn"].src = navArrHLName;
	offImg["navArrowOff"] = eval("new Image(" + navArrW + "," + navArrH + ")");
	offImg["navArrowOff"].src = navArrName;
	clickImg["navArrowClick"] = eval("new Image(" + navArrW + "," + navArrH + ")");
	clickImg["navArrowClick"].src = navArrClName;
}

function navArrowOn(name) {
   var cn   = name.substring(4,name.length);
   if (document.images && id_clicked != cn) {
    document.images[name].src = onImg["navArrowOn"].src;
 //   var tdid = "c_" + name.substring(4,name.length);
	//alert(tdid);
  //  hilite(tdid);
 //   hilite("c"+tdid);
   }
}

function hilite(name){
    //alert("name="+name);
  if(document.layers && document.layers["td"+name] != null ){
    document.layers["td"+name].clip.width=100;
    // next line should be uncommented to get bule background for netscape 4
    //document.layers["td"+name].document.bgColor="#6666CC";
    document.layers["td"+name].document.background = "url('/urlhost/ibo/img/grey_blue_bar.gif')";
  }else if(!document.layers){
    //alert("hilite td"+name);
    var cell=document.getElementById("td"+name);
    // next line should be uncommented to get blue background for IE and netscape 6
    //cell.style.backgroundColor="#6666CC";
    cell.style.backgroundImage = "url('/urlhost/ibo/img/grey_blue_bar.gif')";
  }
}   

function clearhilite(name){
  if( document.layers && document.layers["td"+name] != null ){
  // document.layers["td"+name].document.bgColor="#e6e6e6";
     document.layers["td"+name].document.bgImage = "url('/urlhost/ibo/img/grey_bar.gif')";
  }else if(!document.layers){
    //alert("clear td"+name);
    var cell=document.getElementById("td"+name);
   //cell.style.backgroundColor="#e6e6e6";
     cell.style.backgroundImage = "url('/urlhost/ibo/img/grey_bar.gif')";
  }
}

function navArrowOff(name) {
   var cn   = name.substring(4,name.length);
   if (document.images  && id_clicked != cn && document.images[name] !=null ) {
    	document.images[name].src = offImg["navArrowOff"].src;
   }
}

function navArrowClick(name) {
  if (document.images) {
    document.images[name].src = clickImg["navArrowClick"].src;
    var ofst = name.substring(0,4);
    var cn   = name.substring(4,name.length);
    var tdid = "c_"   + cn;
    var tdidb = "a_"   + cn;

    hilite(tdidb);
    hilite(tdid);

    if( id_clicked > -1 && id_clicked!= cn){
      if(document.layers){
	var tdid = "c_"+id_clicked;
	var tdidb = "a_"+id_clicked;
	var nid  = ofst + id_clicked;
	if( document.layers[tdid] ){
	  clearhilite(tdidb);
	  clearhilite(tdid);
	  document.images[nid].src = clickImg["navArrowOff"].src;
	}
      }
      else{
	var tdid = "c_"+id_clicked;
	var tdidb = "a_"+id_clicked;
	var nid  = ofst + id_clicked;
	// if( cn != c) {
	if( document.getElementById("td"+tdid) ){
	  clearhilite(tdidb);
	  clearhilite(tdid);
	  document.images[nid].src = offImg["navArrowOff"].src;
	}
      }
    }
    id_clicked = cn;
  }
}

if (document.images) {
	onImg["contentArrowOn"] = eval("new Image(" + arrW + "," + arrH + ")");
	onImg["contentArrowOn"].src = arrHLName;
}

function contentArrowOn(name) {
   if (document.images ) {
    document.images[name].src = onImg["contentArrowOn"].src;
   }
}

function contentArrowOff(color, name) {
   if (document.images) {
	var imageIndex = "ContentArrow" + color;
	if (typeof offImg[imageIndex] == "undefined")
	{
		var arrName = arrPrefix + color + ".gif";
		offImg[imageIndex] = eval("new Image(" + arrW + "," + arrH + ")");
		offImg[imageIndex].src = arrName;
	}
	document.images[name].src = offImg[imageIndex].src;
   }
}
function contentArrowClick(color, name) {
   if (document.images) {
	var imageIndex = "ContentArrow" + color;
	if (typeof clickImg[imageIndex] == "undefined")
	{
		var arrName = arrPrefix + color + ".gif";
		clickImg[imageIndex] = eval("new Image(" + arrW + "," + arrH + ")");
		clickImg[imageIndex].src = arrName;
	}
	document.images[name].src = clickImg[imageIndex].src;
   }
}
function doNothing(){
}
function openLocationTarget(location, target, li_id){
	var loc = document.getElementById('location_'+location);
   	var url = location;
   	if (loc != null){
   		url = loc.firstChild.data;
    }
   	var ajax = false;
   	try {
   		window.openAjaxLocation(url);
   		ajax = true;
   	}
   	catch (e){ 
//   		alert("NO AJAX");
   	}
//   	alert ('url='+url);
   	if (li_id == null && !ajax){
   		var li_loc = document.getElementById('li_loc_'+location);
   		if (li_loc != null){
   			li_id = li_loc.firstChild.data;
   		}
   	}
   	if (li_id != null && !ajax){
   		var liList = document.getElementsByTagName("li");
   		for (i =0; i < liList.length; i++){
   			var li = liList[i];
   			if (li.id == li_id){
   				addToClass(li,"menuSelected");
   			}
   			else if (li.id.indexOf("menu_index_")==0 && !isInClass(li,"menu_drop_down")){
   				removeFromClass(li,"menuSelected");
   			}
   		}
   		
   	}
   	if (!ajax){
	   	if(target == "_self" || target == "NavBan") {       
	   		window.location = url;
	    }
	   	else if(target == "Content") {       
	   		parent.Content.location = url;
	    }
	   	else if(target == "_top") {       
	   			top.location = url;
	    }
	   	else {
	   		window.open(url,target);
	    }
   	}
}

function openLocation(location, li_id){
   	var loc = document.getElementById('location_'+location);
   	var url = location;
   	if (loc != null){
   		url = loc.firstChild.data;
    }
   	var ajax = false;
   	try {
   		window.openAjaxLocation(url);
   		ajax = true;
   	}
   	catch (e){ 
//   		alert("NO AJAX");
   	}
//   	alert ('url='+url);
   	if (li_id == null && !ajax){
   		var li_loc = document.getElementById('li_loc_'+location);
   		if (li_loc != null){
   			li_id = li_loc.firstChild.data;
   		}
   	}
   	if (li_id != null && !ajax){
   		var liList = document.getElementsByTagName("li");
   		for (i =0; i < liList.length; i++){
   			var li = liList[i];
   			if (li.id == li_id){
   				addToClass(li,"menuSelected");
   			}
   			else if (li.id.indexOf("menu_index_")==0 && !isInClass(li,"menu_drop_down")){
   				removeFromClass(li,"menuSelected");
   			}
   		}
   	}
  	if (!ajax) {
  		window.location = url;
  	}
}

function notifyLocationChange(location, li_id){
   	if (li_id == null){
   		var li_loc = document.getElementById('li_loc_'+location);
   		if (li_loc != null){
   			li_id = li_loc.firstChild.data;
   		}
   	}
   	if (li_id != null){
   		var liList = document.getElementsByTagName("li");
   		for (i =0; i < liList.length; i++){
   			var li = liList[i];
   			if (li.id == li_id){
   				addToClass(li,"menuSelected");
   			}
   			else if (li.id.indexOf("menu_index_")==0 && !isInClass(li,"menu_drop_down")){
   				removeFromClass(li,"menuSelected");
   			}
   		}
   	}
}

function hideUnhideNew(li_id,ul_id){
	var li = document.getElementById(li_id);
	var ul = document.getElementById(ul_id);
	if (isInClass(ul,"hiddenMenu")){
		removeFromClass(ul,"hiddenMenu");
		addToClass(li,"menuSelected");
		var par = ul.parentNode;
		while (isInClass(par,"hiddenMenu")){
			removeFromClass(par, "hiddenMenu");
			par = par.parentNode;
		}
	}
	else {
		removeFromClass(li,"menuSelected");
		addToClass(ul,"hiddenMenu");		
	}
}   	

// From O Reilly Javascript Book 
//Return true if element e is a member of the class c; false otherwise
function isInClass(e, c) {
	if (typeof e == "string") e = document.getElementById(e); // element id
	
	 // Before doing a regexp search, optimize for a couple of common cases.
	 var classes = e.className;
	 if (!classes) return false;    // Not a member of any classes
	 if (classes == c) return true; // Member of just this one class
	
	 // Otherwise, use a regular expression to search for c as a word by itself
	 // \b in a regular expression requires a match at a word boundary.
	 return classes.search("\\b" + c + "\\b") != -1;
}

//Add class c to the className of element e if it is not already there.
function addToClass(e, c) {
	 if (typeof e == "string") e = document.getElementById(e); // element id
	 if (isInClass(e, c)) return; // If already a member, do nothing
	 if (e.className) c = " " + c;  // Whitespace separator, if needed
	 e.className += c;              // Append the new class to the end
}

//Remove all occurrences (if any) of class c from the className of element e
function removeFromClass(e, c) {
	 if (typeof e == "string") e = document.getElementById(e); // element id
	 var classes = e.className;
	 // Search the className for all occurrences of c and replace with "".
	 // \s* matches any number of whitespace characters.
	 // "g" makes the regular expression match any number of occurrences
	 e.className = classes.replace(new RegExp("\\b"+ c+"\\b\\s*", "g"), "");
}

