// JavaScript Document


// On page load for navigation images

var d = document;

// Pop-ups for footer links

popUpWindow = function(URL,windowName,width,height) {
	var w = screen.availWidth;
	var h = screen.availHeight;
	var leftPos = Math.round((w-width)/2);
	var topPos = Math.round((h-height)/2);
	var defaults = "scrollbars=yes,resizable=yes,";
	var centerOnScreen = "top="+topPos+",left="+leftPos+",width="+width+",height="+height;
	// safari seems to need the trailer comma
	var options = defaults + centerOnScreen + ",";
	var msgWindow = window.open(URL,windowName,options);
	msgWindow.focus();
}
popUpVideoWindow = function(URL,windowName,width,height) {
	var w = 955;
	var h = screen.availHeight;
	var leftPos = Math.round((w-width)/2);
	var topPos = Math.round((h-height)/2);
	var defaults = "scrollbars=no,resizable=no,";
	var positionOnScreen = "top="+topPos+",left="+leftPos+",width="+width+",height="+height;
	// safari seems to need the trailer comma
	var options = defaults + positionOnScreen + ",";
	var msgWindow = window.open(URL,windowName,options);
	msgWindow.focus();
}

// function that's called if pre-onload handlers are available
var preInitDone = false;
beforeOnloadInit = function() {
	preInitDone = true;
	init();
};

// proprietary DOMContentLoaded Mozilla event handler
if (d.addEventListener) d.addEventListener("DOMContentLoaded", beforeOnloadInit, null);

// fall back to window.onload if needed
window.onload = function() { if (!preInitDone) init(); };

// write out a behavior for IE/Win 5+ to use the ondocumentready events
d.write('<style type="text/css">');
d.write('body { behavior: url(/js/init.htc); }');
d.write('</style>');

// load stylesheet for js-enabled browsers
if(d.getElementById && d.createTextNode) {
	d.writeln("<link href=\"/css/js_enabled.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />");
}

init = function() {
	if(d.getElementById && d.createTextNode) {
		for(var i=0; t=d.getElementsByTagName("input")[i]; i++) {
			var tt = t.getAttribute("type");
			if(tt == "text") {
				// apply class to text elements
				t.className = (t.className == "") ? "text" : t.className + " text";
			} else if(tt == "button" || tt == "submit") {
				// apply class to button elements
				t.className = (t.className == "") ? "button" : t.className + " button";
			} else if(tt == "image") {
				// apply class to image elements
				t.className = (t.className == "") ? "image" : t.className + " image";
			}
		}
			// apply odd/even classes to add to table rows
		var t = d.getElementsByTagName("TABLE");
		if(t) {
			for(var i=0; i<t.length; i++) {
				if(t[i].className == "product-table" || t[i].className == "partner-profile") {
					var tb = t[i].getElementsByTagName("TBODY")[0];
					for(var j=0; (tr = tb.getElementsByTagName("TR")[j]); j++) {
						if(tr.className == "") {
							if(j % 2) {
								tr.className = "odd";
							} else {
								tr.className = "even";
							}
						}
					}
				}
			}
		}	
		// add event handlers to font controls
		if(d.getElementById("font-small")) {
			d.getElementById("font-small").onclick = function(){fontSize('small'); this.blur(); return false;};
			d.getElementById("font-medium").onclick = function(){fontSize('medium'); this.blur(); return false;};
			d.getElementById("font-large").onclick = function(){fontSize('large'); this.blur(); return false;};
		}
		var bid = d.getElementsByTagName("body")[0].className;
		if (bid == "interior") {
			// init subnav
			var sitenav = document.getElementById("nav-sub");
			if(sitenav) {
				var pid = query["id"];
				for(var i=0; (a = sitenav.getElementsByTagName("a")[i]); i++) {
					var hr = a.getAttribute("href");
					if(hr) {
						if(pid && getLinkID(hr) == pid) {
							a.parentNode.className = "on";
							var c = a.parentNode.parentNode.className;
							switch(c) {
								case "level-3":
									var a = a.parentNode.parentNode.parentNode;
									a.className = "on";
								case "level-2":
									var a = a.parentNode.parentNode.parentNode;
									a.className = "on";
							}
						}
					}
				}
				sitenav.style.visibility = "visible";
			}
		}
	}
	setStyles();
}

getLinkID = function(str) {
	var queryStart = str.indexOf('?');
	if (queryStart!=-1) {
		var query = str.substring(queryStart + 1, str.length);
		var parts = query.split("&");
		for (var i=0; i<parts.length; i++) {
			var bits = parts[i].split("=");
			if (bits[0] == "id") return bits[1];
		}
	}
	return null;
}
setActiveStyleSheet = function(title) {
  if(d.getElementById && d.createTextNode) {
		var i, a;
	  for(i=0; (a = d.getElementsByTagName("link")[i]); i++) {
	    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
	     	a.disabled = true;
	      if(a.getAttribute("title") == title) a.disabled = false;
	    }
	  }
		if(d.getElementById("font-small")) {
			d.getElementById("font-small").className = "";
			d.getElementById("font-medium").className = "";
			d.getElementById("font-large").className = "";
			var l = d.getElementById("font-" + title);
			l.className = "on";
		}
	}
}
setStyles = function() {
  var cookie = readCookie("perrigoStyles");
  var title = cookie ? cookie : "small";
	createCookie("perrigoStyles", title, 365);
 	setActiveStyleSheet(title);
}

fontSize = function(fs) {
	createCookie("perrigoStyles", fs, 365);
	setActiveStyleSheet(fs);
}

createCookie = function(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  d.cookie = name+"="+value+expires+"; path=/";
}

readCookie = function(name) {
  var nameEQ = name + "=";
  var ca = d.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;
}

// Browser Detect Lite  v2.1
// http://www.dithered.com/javascript/browser_detect/index.html
// modified by Chris Nott (chris@NOSPAMdithered.com - remove NOSPAM)
//
// modified by Michael Lovitt to include OmniWeb and Dreamcast

function BrowserDetectLite() {
	var ua = navigator.userAgent.toLowerCase(); 
	this.ua = ua;

	// browser name
	this.isGecko     = (ua.indexOf('gecko') != -1);
	this.isMozilla   = (this.isGecko && ua.indexOf("gecko/") + 14 == ua.length);
	this.isNS        = ( (this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) );
	this.isIE        = ( (ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1) ); 
	this.isOpera     = (ua.indexOf("opera") != -1); 
	this.isKonqueror = (ua.indexOf("konqueror") != -1); 
	this.isIcab      = (ua.indexOf("icab") != -1); 
	this.isAol       = (ua.indexOf("aol") != -1); 
	this.isWebtv     = (ua.indexOf("webtv") != -1); 
	this.isOmniweb   = (ua.indexOf("omniweb") != -1);
	this.isDreamcast   = (ua.indexOf("dreamcast") != -1);
	
	// spoofing and compatible browsers
	this.isIECompatible = ( (ua.indexOf("msie") != -1) && !this.isIE);
	this.isNSCompatible = ( (ua.indexOf("mozilla") != -1) && !this.isNS && !this.isMozilla);
	
	// browser version
	this.versionMinor = parseFloat(navigator.appVersion); 
	
	// correct version number for NS6+ 
	if (this.isNS && this.isGecko) {
		this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('/') + 1 ) );
	}
	
	// correct version number for IE4+ 
	else if (this.isIE && this.versionMinor >= 4) {
		this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) );
	}
	
	// correct version number for Opera 
	else if (this.isOpera) {
		if (ua.indexOf('opera/') != -1) {
			this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera/') + 6 ) );
		}
		else {
			this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera ') + 6 ) );
		}
	}
	
	// correct version number for Konqueror
	else if (this.isKonqueror) {
		this.versionMinor = parseFloat( ua.substring( ua.indexOf('konqueror/') + 10 ) );
	}
	
	// correct version number for iCab 
	else if (this.isIcab) {
		if (ua.indexOf('icab/') != -1) {
			this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab/') + 6 ) );
		}
		else {
			this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab ') + 6 ) );
		}
	}
	
	// correct version number for WebTV
	else if (this.isWebtv) {
		this.versionMinor = parseFloat( ua.substring( ua.indexOf('webtv/') + 6 ) );
	}
	
	this.versionMajor = parseInt(this.versionMinor); 
	this.geckoVersion = ( (this.isGecko) ? ua.substring( (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 );
	
	// platform
	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) );
	this.isMac   = (ua.indexOf('mac') != -1);
	this.isUnix  = (ua.indexOf('unix') != -1 || ua.indexOf('linux') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)
	
	// specific browser shortcuts
	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.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.isIE4xMac = (this.isIE4x && this.isMac);
}
var browser = new BrowserDetectLite();


// if IE5.5+ on win32, then display PNGs with AlphaImageLoader - dependent on Browser Detect Lite
if ((browser.isIE55 || browser.isIE6up) && browser.isWin32) {
	var pngAlpha = true;
	var strExt = ".png";
// else, if the browser can display PNGs normally, then do that. that list includes:
	//     -Gecko Engine: Netscape 6 or Mozilla, Mac or PC
	//     -IE5+ Mac
	//     -Opera 6+ PC
	//     -Opera 5+ Mac
	//     -Opera 6+ Linux
	//     -Omniweb 3.1+
	//     -Icab 1.9+
	//     -WebTV
	//     -Sega Dreamcast
} else if ((browser.isGecko) || (browser.isIE5up && browser.isMac) || (browser.isOpera && browser.isWin && browser.versionMajor >= 6) || (browser.isOpera && browser.isUnix && browser.versionMajor >= 6) || (browser.isOpera && browser.isMac && browser.versionMajor >= 5) || (browser.isOmniweb && browser.versionMinor >= 3.1) || (browser.isIcab && browser.versionMinor >= 1.9) || (browser.isWebtv) || (browser.isDreamcast)) {
	var pngNormal = true;
	var strExt = ".png";
	// otherwise, we use plain old GIFs
} else {
	var strExt = ".gif";
}


// PNG Fix
////////////////////////////////
function insertPNG(strId, strPath, intWidth, intHeight, strClass, strAlt, strMap) {
	if (pngAlpha) {
		d.write('<img style="display: block; height:'+intHeight+'px;width:'+intWidth+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+strPath+'.png\', sizingMethod=\'scale\')" width="'+intWidth+'" height="'+intHeight+'" id="'+strId+'" class="'+strClass+'" src="/images/templates/pngfix.gif" alt="'+strAlt+'" border="0"');
		if(strMap) d.write(' usemap="#' + strMap + '"');
		d.write(' />');
	} else if (pngNormal) {
		d.write('<img src="'+strPath+'.png" width="'+intWidth+'" height="'+intHeight+'" id="'+strId+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" border="0"');
		if(strMap) d.write(' usemap="#' + strMap + '"');
		d.write(' />');
	} else {
		d.write('<img src="'+strPath+'.gif" width="'+intWidth+'" height="'+intHeight+'" id="'+strId+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" border="0"');
		if(strMap) d.write(' usemap="#' + strMap + '"');
		d.write(' />');
	}
}

function getPNG(strId, strPath, intWidth, intHeight, strClass, strAlt) {
	if (pngAlpha) {
		return '<img style="display: block; height:'+intHeight+'px;width:'+intWidth+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+strPath+'.png\', sizingMethod=\'scale\')" width="'+intWidth+'" height="'+intHeight+'" id="'+strId+'" class="'+strClass+'" src="/images/templates/pngfix.gif" alt="'+strAlt+'" border="0" />';
	} else if (pngNormal) {
		return '<img src="'+strPath+'.png" width="'+intWidth+'" height="'+intHeight+'" id="'+strId+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" border="0" />';
	} else {
		return '<img src="'+strPath+'.gif" width="'+intWidth+'" height="'+intHeight+'" id="'+strId+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" border="0" />';
	}
}


// expode and parseQuery are functions to deal with query string    //reads the query strings
function explode(item,delimiter) {
	tempArray=new Array(1);
	var Count=0;
	var tempString=new String(item);
	while (tempString.indexOf(delimiter)>0) {
		tempArray[Count]=tempString.substr(0,tempString.indexOf(delimiter));
		tempString=tempString.substr(tempString.indexOf(delimiter)+1,tempString.length-tempString.indexOf(delimiter)+1);
		Count=Count+1
	}
	tempArray[Count]=tempString;
	return tempArray;
}

function parseQuery() {
	var returnVals = new Array();
	var qString = new String(window.location);
	var queryStart = qString.indexOf('?');
	if (queryStart==-1) {
		return returnVals;
	}
	var query = qString.substring(queryStart + 1, qString.length);
	parts = explode(query, "&");
	for (i in parts) {
		bits = explode(parts[i], "=");
		returnVals[bits[0]] = bits[1];
	}
	return returnVals;
}

var query = parseQuery();