/*CHAPTER 4 CODE BEGINS HERE*//* Browser Detection Script begins here. *//* The variable theDOM1 will be true for modern browsers. */var theDOM1 = (document.getElementById) ? true : false;/* theApp will contain the browser name */var theApp = navigator.appName.toLowerCase();/* UA (user agent) contains detailed browser info. For example, UA for Internet Explorer on Mac would be 'mozilla/4.0 (compatible; msie 5.0; mac_powerpc)' */var UA = navigator.userAgent.toLowerCase();/* variables for the two major browsers in existence today. */var isIE = (UA.indexOf('msie') >= 0) ? true : false;var isNS = (UA.indexOf('mozilla') >= 0) ? true : false;/* 'compatible' text string is only in non-Netscape browsers */if (UA.indexOf('compatible')>0){    isNS = false;}/* platform */var thePlatform = navigator.platform.toLowerCase();var isMAC = (UA.indexOf('mac') >= 0) ? true : false;var isWIN = (UA.indexOf('win') >= 0) ? true : false;/* Most UNIX users use X-Windows so this detects UNIX most of the time.*/var isUNIX = (UA.indexOf('x11') >= 0) ? true : false;/* browser version */var version = navigator.appVersion;var isMajor = parseInt( version );/* Internet Explorer version 5 on the Mac reports itself as version 4. This code corrects the problem. */if(isIE && isMAC) {    if(UA.indexOf("msie 5")) {        isMajor = 5;        var stringLoc = UA.indexOf("msie 5");        version = UA.substring(stringLoc + 5, stringLoc + 8);    }}/* Internet Explorer version 6 on Windows reports itself as version 4. This code corrects the problem. */if(isIE && isWIN) {    if(UA.indexOf("msie 6")) {        isMajor = 6;        var stringLoc = UA.indexOf("msie 6");        version = UA.substring(stringLoc + 5, stringLoc + 8);    }    if(UA.indexOf("msie 5.5")) {        isMajor = 5;        var stringLoc = UA.indexOf("msie 5.5");        version = UA.substring(stringLoc + 5, stringLoc + 8);    }}/* Netscape 6 reports itself as version 5 on all platforms.   This code corrects the problem. */if(isNS && isMajor>4) {    if(UA.indexOf("netscape6")) {        isMajor = 6;        var stringLoc = UA.indexOf("netscape6");        version = UA.substring(stringLoc + 10, stringLoc + 14);    }}var isMinor = parseFloat( version );/* a function to report browser info */function getBrowserInfo(){    var temp="<p>";    temp += "User Agent: " + UA + "<br>";    temp += "Platform: " + thePlatform + "<br>";    temp += "Macintosh: " + isMAC + "<br>";    temp += "Windows: " + isWIN + "<br>";    temp += "Application: " + theApp + "<br>";    temp += "Version: " + version + "<br>";    temp += "Netscape: " + isNS + "<br>";    temp += "Internet Explorer: " + isIE + "<br>";    temp += "Major Version: " + isMajor + "<br>";    temp += "Full Version: " + isMinor + "<br>";    temp += "<br>";        if (theDOM1){		temp += "You appear to have a modern browser.<br>";        temp += "Netscape 6, IE 6, or IE5Mac are recommended.";    }else{        temp += "Alert! Your browser is obsolete.<br>";        temp += "You may enjoy the Web more if you upgrade.";            }    temp +="<\/p>";    return temp;}/* End of browser detection code *//* Convert object name string or object reference   into a valid object reference */function getObj(elementid){	if (typeof elementid == "string") {		return document.getElementById(elementid);	}else{		return elementid;			}}/* Object Motion and Position Scripts *//*This function places a positionable object (obj) in   three dimensions (x,y, and z).*/function shiftTo(obj,x,y,z){	var newObj = getObj(obj)	newObj.style.left = x + "px";	newObj.style.top = y + "px";	newObj.style.zIndex = z;}/*This function gets the x coordinate of a positionable object.*/function getObjX(obj){	return parseInt(getObj(obj).style.left);}/*This function gets the y coordinate of a positionable object.*/function getObjY(obj){	return parseInt(getObj(obj).style.top);}/*This function gets the z-index of a positionable object.*/function getObjZ(obj){	return parseInt(getObj(obj).style.zIndex);}/*The emptyNode() function loops through the array of child nodes and removes each one.*/function emptyNode(elementid){	var theNode = getObj(elementid);	for (i=0;i<theNode.childNodes.length;i++){		theNode.removeChild(theNode.childNodes[i]);	}}/*This function gets the available width of the window.*/function getAvailableWidth(){	var theWidth=null;	/*Netscape uses window.innerWidth */	if (window.innerWidth) {		theWidth = window.innerWidth;	}	/*IE uses document.body.clientWidth */	if (document.body.clientWidth) {		theWidth = document.body.clientWidth;	}	return theWidth;}/*This function gets the available height of the window.  IE6.0 on Windows has a bug and returns null.*/function getAvailableHeight(){	var theHeight = null;	/*Netscape uses window.innerHeight */	if (window.innerHeight) {		theHeight = window.innerHeight;	}	/*IE uses document.body.clientHeight */	if (document.body.clientHeight) {		theHeight = document.body.clientHeight;	}	return theHeight;}/*This function sets the total height and width of the window.*/function setWindowSize(w,h){	window.resizeTo(w,h);}/*This function sets the size of the window to cover all of the screen.*/function maximizeWindow(){	window.moveTo(0,0);	window.resizeTo(screen.availWidth,screen.availHeight);}/*END OF CHAPTER 4 CODE*//*CHAPTER 5 CODE BEGINS HERE.*//* Redirects visitors who are using outdated browsers.*/function checkDOM(newlocation){	if (!theDOM1){		window.location.replace(newlocation);	}}/* This function changes the cursor.    The second argument is optional. */function setCursor(cursortype,thisobj){	if (UA.indexOf("msie 5")>=0){		if (cursortype == 'pointer') { cursortype='hand'; }	}    if (thisobj==null){    	document.body.style.cursor = cursortype;    }else{    	getObj(thisobj).style.cursor = cursortype;    }}/*Set the background color of an object*/function setBackground(thisobj, color){	getObj(thisobj).style.background = color;}/*Set the text color of an object*/function setColor(thisobj, color){	getObj(thisobj).style.color = color;}/*Setting the visibility of an object*/function setVisibility(obj,vis){	var theObj = getObj(obj);	if (vis == true || vis=='visible' || vis=='y'){		theObj.style.visibility = "visible";	}else{		theObj.style.visibility = "hidden";	}}/*Getting the visibility of an object*/function isVisible(obj) {	var theObj = getObj(obj);	return theObj.style.visibility;}/*Setting the display of an object*/function setDisplay(obj,dis){	var theObj = getObj(obj);	if (dis==true || dis=='block' || dis=='y'){		theObj.style.display = "block";	}else{		if (dis==false || dis=='n'){			theObj.style.display = "none";		}else{			theObj.style.display = dis;		}	}}/*Getting the display of an object*/function isDisplayed(obj) {	var theObj = getObj(obj);	return theObj.style.display;}/*Set the clip region of an object*/function setClip(obj,top,right,bottom,left){	var theObj = getObj(obj);	var r = 'rect('+top+'px,'+right+'px,'+bottom+'px,'+left+'px)';	theObj.style.clip = r;}/*CHAPTER 6 CODE BEGINS HERE*/function showxy(evt){	if (window.event){ evt = window.event; }	if (evt){		var pos = evt.clientX + ", " + evt.clientY;		window.status=pos;	}}function checkModel(evt){	if (window.event){		alert("This browser uses the IE4+ event model.");	}else{		if (evt){ 			alert("This browser uses the W3C/Netscape6 event model.");		}	}}/*Getting the width of an object*/function getWidth(obj){	var theObj = getObj(obj);	if (theObj.clientWidth){		return parseInt(theObj.clientWidth);	}	if (theObj.offsetWidth){		return parseInt(theObj.offsetWidth);			}}/*Getting the Height of an object*/function getHeight(obj){	var theObj = getObj(obj);	if (theObj.clientHeight){		return parseInt(theObj.clientHeight);	}	if (theObj.offsetHeight){		return parseInt(theObj.offsetHeight);			}}/*Drag and Drop Script for positioned divs and spans*//*Place this in your codelibrary.js file for future use.*/var maxZdrag = document.getElementsByTagName("div").length;	maxZdrag += document.getElementsByTagName("span").length;var dragElem=null;var dragging=false;function setDrag(evt,elementid){	dragElem=getObj(elementid);	startDrag();}function startDrag() {	dragging=true;	document.onmousemove=dragObj;	document.onmouseup=dropObj;}function dragObj(evt) {	if (window.event){ evt = window.event; }	if (evt){		var x = evt.clientX - parseInt(getWidth(dragElem)/2);		var y = evt.clientY - parseInt(getHeight(dragElem)/2);		var z = maxZdrag++;		shiftTo(dragElem,x,y,z);		var pos = "drag coordinates are: " + x + ", " + y + ", " + z;		window.status=pos;	}	return false;}function dropObj() {	dragging=false;	document.onmousemove=null;	document.onmouseup=null;	window.status="";}/*End Drag and Drop Script*//*End of Chapter 6 Code*//*Chapter 7 code*//*Utility function to convert decimal to hexadecimal*/function getHex(base10){	if (base10>255){base10=255;}	var hexSet = "0123456789abcdef";	var theMod = base10 % 16; 	var theRemainder = (base10 - theMod)/16;	var hexNum = hexSet.charAt(theMod) + "";	hexNum += hexSet.charAt(theRemainder);	return hexNum;}/*End of Chapter 7 code*//* Extra functions you may find useful in your work.*//* Many of these functions are from The Web Wizard's Guide to JavaScript.*//*Setting the width of an object*/function setWidth(obj,w){	var theObj = getObj(obj);	theObj.style.width = w + "px";}/*Setting the height of an object*/function setHeight(obj,h){	var theObj = getObj(obj);	theObj.style.height = h + "px";}/* Code to manipulate values from form objects */function getRadioValue(formname,radioname){    var theRadioButtons = document[formname][radioname];    for (i=0;i<theRadioButtons.length;i++){        if (theRadioButtons[i].checked){            return theRadioButtons[i].value;        }    }}function showRadioValue(formname,radioname,thevalue){    var theRadioButtons = document[formname][radioname];    for (i=0;i<theRadioButtons.length;i++){        var temp = theRadioButtons[i].value;        if (temp == thevalue){            theRadioButtons[i].checked = true;        }    }   }function getSelectValue(formname,selectname){    var theMenu = document[formname][selectname];    var selecteditem = theMenu.selectedIndex;    return theMenu.options[selecteditem].value;}function showSelectValue(formname,selectname,thevalue){    var theMenu = document[formname][selectname];    for (i=0;i<theMenu.options.length;i++){        var temp = theMenu.options[i].value;        if (temp == thevalue){            theMenu.selectedIndex = i;        }    }   }/* End of code to manipulate values from form objects *//* Essential Arrays for pages with calendars */var theDays = new Array();theDays[0]="Sunday";theDays[1]="Monday";theDays[2]="Tuesday";theDays[3]="Wednesday";theDays[4]="Thursday";theDays[5]="Friday";theDays[6]="Saturday";var theMonths = new Array();theMonths[0]="January";theMonths[1]="February";theMonths[2]="March";theMonths[3]="April";theMonths[4]="May";theMonths[5]="June";theMonths[6]="July";theMonths[7]="August";theMonths[8]="September";theMonths[9]="October";theMonths[10]="November";theMonths[11]="December";/* End of date code *//* Beginning of Cookie Code Based on code by Bill Dortch   of hidaho designs who has generously placed it in the public domain.*/function SetCookie(name,value,expires,path,domain,secure){	var temp = name + "=" + escape(value);	if (expires){		temp += "; expires=" + expires.toGMTString();	}	if (path){		temp += "; path=" + path;	}	if (domain){		temp += "; domain=" + domain;	}	if (secure){		temp += "; secure";	}	document.cookie = temp;}function GetCookie(name){	var arg = name + "=";	var alen = arg.length;	var clen = document.cookie.length;	var i = 0;	while (i < clen) {		var j = i + alen;		if (document.cookie.substring(i,j) == arg){			return getCookieVal(j);		}		i = document.cookie.indexOf(" ", i) + 1;		if (i == 0) break;	}	return null;}function getCookieVal(offset){	var endstr = document.cookie.indexOf(";", offset);	if (endstr == -1){		endstr = document.cookie.length;	}	return unescape(document.cookie.substring(offset,endstr));}function DeleteCookie (name,path,domain) {  if (GetCookie(name)) {    var temp = name + "=";    temp += ((path) ? "; path=" + path : "");    temp += ((domain) ? "; domain=" + domain : "");    temp += "; expires=Thu, 01-Jan-70 00:00:01 GMT";    document.cookie = temp;  }}/* End of Cookie Code *//* converts days to milliseconds */function daysToMS(days){	return days * 24 * 60 * 60 * 1000;}/* converts weeks to milliseconds */function weeksToMS(weeks){	return weeks * 7 * 24 * 60 * 60 * 1000;}/* converts years to milliseconds */function yearsToMS(years){	return years * 365.25 * 24 * 60 * 60 * 1000;}/* code to open a new window with various features */var myWindow = null;function openWin(url,targetname,W,H,L,T,thefeatures) {    var params = "";    var nofeatures = "toolbar=0,location=0,directories=0,status=0,";    nofeatures += "menubar=0,scrollbars=0,resizable=0,copyhistory=0";    var basicfeatures = "scrollbars=1,resizable=1,menubar=1 ";    var morefeatures = "toolbar=1,location=1,directories=1,";	morefeatures += "status=1,copyhistory=1";    var dimensions = "width=" + W + ",height=" + H;    /* The placement variable contains values for left/top and screenX/screenY. Use both to ensure compatibility with all browsers. */    var placement = "left="  + L + ",top=" + T;    placement += ",screenX="  + L + ",screenY=" + T;        /* The switch control structure makes decisions that depend on the value of a variable. In this case the value of the parameter variable thefeatures determines the value of the variable params. */    switch (thefeatures){        case "none":            params += nofeatures;            break;        case "basic":            params += basicfeatures;            break;        case "full":            params += basicfeatures + "," + morefeatures;            break;        default:            params += thefeatures;    }    /* Adds the dimensions and placement info to the params variable. */    params += "," + dimensions + "," + placement;    /* The window.open()method  creates myWindow. */    myWindow = window.open(url,targetname,params);}function closeWin(){    if (myWindow != null){        myWindow.close();        myWindow = null;        }}/* End of openWin() and closeWin() functions *///The rand function takes a number as a parameter and returns//a random number between 1 and that number. //The Math.random method generates a random number between 0 and 1.//That number is then multiplied by the passed parameter.//1 is added to the product to avoid yielding a zero.//The Math.floor method then deletes everything after the decimal point.function rand(num){	var temp = Math.floor(Math.random() * num) + 1;	return temp;}function goPage(theMenu){    var selecteditem = theMenu.selectedIndex;    var URL = theMenu.options[selecteditem].value;    window.location.href=URL;}/*creates a standard mailto: link that isn't read by most SPAM mailto harvesting robots*/function mailLink(user,domain){	var protocol = "mai";	protocol += "lto:";	var address = user + "@" + domain;	var theLink = "<a    href='" + protocol + address + "'>" + address + "<\/a>";	return theLink; }/* End of codelibrary.js */