/*****************************************
***	get, set, and delete cookie functions
*****************************************/
function getCookie(name) {
	var start = document.cookie.indexOf(name + "=");
	var len = start + name.length + 1;
	if(( !start ) && (name != document.cookie.substring(0, name.length))) {
		return null;
	}
	if(start == -1) {return null;}
	var end = document.cookie.indexOf(";", len);
	if(end == -1) {end = document.cookie.length;}
	return unescape(document.cookie.substring( len, end ));
}

function setCookie(name,value,expires,path,domain,secure) {
	var today = new Date();
	today.setTime(today.getTime());
	if(expires) {
		expires = expires * 1000 * 60 * 60 * 24;
	} else {
		expires = 365 * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date(today.getTime() + (expires));
	document.cookie = name+"="+escape(value) +
		((expires) ? ";expires="+expires_date.toGMTString() : "") + //expires.toGMTString()
		((path) ? ";path=" + path : "") +
		((domain) ? ";domain=" + domain : "") +
		((secure) ? ";secure" : "");
}

function deleteCookie(name,path,domain) {
	if(getCookie(name)) {
		document.cookie = name + "=" +
		((path) ? ";path=" + path : "") +
		((domain) ? ";domain=" + domain : "") +
		";expires=Thu, 01-Jan-1970 00:00:01 GMT";
	}
}

/*****************************************
***	get all elements with specific class attribute
*****************************************/
function getElementsByClass(searchClass,node,tag) {
	var classElements = [];
	if (node === null) { node = document; }
	if (tag === null) { tag = '*'; }
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)");
	var i; var j;
	for(i=0, j=0; i<elsLen; i++) {
		if (pattern.test(els[i].className)) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

/*****************************************
***	Update object's class attribute
*****************************************/
function updateClassName(obj,newclass,classtoreplace) {
	var modifiedclass = obj.className;
	if (classtoreplace !== "") {
		var classEStoreplace = classtoreplace.split(",");
		for(var i=0; i<classEStoreplace.length; i++) {
			if(modifiedclass.indexOf(classEStoreplace[i]) != -1) {
				modifiedclass = modifiedclass.replace(classEStoreplace[i],"");
			}
		}
	}
	if (newclass !== "") {
		var newclassES = newclass.split(",");
		for(var k=0; k<newclassES.length; k++) {
			if (modifiedclass.indexOf(newclassES[k]) == -1) {
				if (modifiedclass.length > 0) {
					modifiedclass = modifiedclass + " " + newclassES[k];
				} else {
					modifiedclass = newclassES[k];
				}
			}
		}
	}
	var modifiedclass2 = "";
	var spacedclass = modifiedclass.split(" ");
	for(var j=0; j<spacedclass.length; j++) {
		if(spacedclass[j].length > 0) {
			modifiedclass2 += spacedclass[j] + " ";
		}
	}
	obj.setAttribute("class", modifiedclass2);
	obj.setAttribute("className", modifiedclass2);
	//alert("final: |"+modifiedclass2+"|");
}

/*****************************************
***	toggle display of an object
***** toggleDisplay() and toggle()
*****************************************/
function toggleDisplay(obj,display) {
	var obj_to_toggle = obj;
	var newstatus = display;
	if(typeof(obj_to_toggle) == "string") { obj_to_toggle = document.getElementById(obj); }
	if(obj_to_toggle !== null) {
		var displaytype = "block";
		//alert(obj_to_toggle.nodeName.toLowerCase());
		if(obj_to_toggle.nodeName.toLowerCase() == "tbody" && navigator.appVersion.toLowerCase().indexOf("msie") == -1) {
			var displaytype = "table-row-group";
		}
		if(obj_to_toggle.nodeName.toLowerCase() == "tr" && navigator.appVersion.toLowerCase().indexOf("msie") == -1) {
			var displaytype = "table-row";
		}
		if(display == true) { obj_to_toggle.style.display = displaytype; }
		else if(display == false) { obj_to_toggle.style.display = "none"; }
		else {
			if((obj_to_toggle.style.display == "none") || (obj_to_toggle.style.display === "")) {
				obj_to_toggle.style.display = displaytype;
				newstatus = true;
			} else {
				obj_to_toggle.style.display = "none";
				newstatus = false;
			}
		}
		return newstatus;
	} else { return false; }
}
function toggle(obj) {
	return toggleDisplay(obj);
}


/*****************************************
***	add js event
*****************************************/
function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
		return true;
	}
}

/*****************************************
***	add page load event
*****************************************/
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		};
	}
}

/*****************************************
***	remove all data from object
*****************************************/
function clearData(obj) {
	var obj_to_clear = obj;
	if(typeof(obj_to_clear) == "string") {
		obj_to_clear = document.getElementById(obj);
	}
	if(obj_to_clear !== null) {
		var idx = obj_to_clear.childNodes.length;
		for (var i = idx - 1; i >= 0; i--) {
			//alert(obj_to_clear.childNodes[i].nodeName);
			obj_to_clear.removeChild(obj_to_clear.childNodes[i]);
		}
	}
}

/*****************************************
***	function to get page and link urls
*****************************************/
function getScriptName() {
	return location.pathname.slice(0,location.pathname.lastIndexOf("/")+1).toLowerCase();
}
function getLinkPath(linkobj) {
	var href = linkobj.getAttribute("href").replace(location.protocol+"//"+location.host,"");
	return href.slice(0,href.lastIndexOf("/")+1).toLowerCase();
}

/*****************************************
***	function to get associative arrays of url variables
*****************************************/
function parseURLVarString() {
	var vars = {};
	var tmp = location.search.replace(/\?/,"").split("&");
	var tmp2;
	for(var i=0; i<tmp.length; i++) {
		tmp2 = tmp[i].split("=");
		if(tmp2.length > 1) { vars[tmp2[0]] = "" + tmp2[1]; }
		else { vars[tmp2[0]] = ""; }
	}
	return vars;
}

/*
function accepts a delimited list as a string and returns js html object separated by specified html node
	list: delimited string to be parsed
	delim: delimited used in string
	sepnode: new html object that will replace delimiter
*/
function parseDelimitedList(list,delim,sepnode) {
	var pieces = list.split(delim);
	var myobj = document.createElement("span");
	for(var i=0; i<pieces.length; i++) {
		var new_txt = document.createTextNode(pieces[i]);
		var new_sep = document.createElement(sepnode);
		myobj.appendChild(new_txt);
		myobj.appendChild(new_sep);
	}
	return myobj;
}

function swap_on(img) {img.src=img.src.replace('_off','_on');}
function swap_off(img) {img.src=img.src.replace('_on','_off');}

function createShowHideRegions(x) {
	var showhideregions = getElementsByClass(x,null,null);
	var expandImage, expandImageWidth, expandImageHeight;
	var contractImage, contractImageWidth, contractImageHeight;
	for (var i=0; i < showhideregions.length; i++) {
		var regionlist = showhideregions[i].href.split("#");
		var region = regionlist[regionlist.length-1];
		var display = showhideregions[i].rel;
		//JS Enabled hide the region, except #1
		if (display != 'on') {document.getElementById(region).style.display = 'none'; }
		else {document.getElementById(region).style.display = 'block';}

		var newImg = document.createElement('IMG');
		newImg.name = 'img_'+region;
		newImg.id = 'img_'+region;
		newImg.border = 0;
		if (x == 'showhideregionplus') {
			/* Creat the arrow image */ 
			if (display != 'on') {newImg.src = '/images/icons/plus.gif';}
			else {newImg.src = '/images/icons/minus.gif';}
			newImg.width = '11';newImg.height = '11';
			newImg.className = 'rc_plusminus';
			expandImage = 'plus';expandImageWidth = '11';expandImageHeight = '11';
			contractImage = 'minus';contractImageWidth = '11';contractImageHeight = '11';
		} else {
			if (display != 'on') {
				newImg.src = '/_images/navigation/arrow_child_yellow.gif';
				newImg.width = '4';
			} else {
				newImg.src = '/_images/navigation/arrow_down_yellow.gif';
				newImg.width = '7';
			}
			newImg.height = '7';
			newImg.className = 'rc_arrow';
			expandImage = 'child'; expandImageWidth = '4'; expandImageHeight = '7';
			contractImage = 'down'; contractImageWidth = '7'; contractImageHeight = '7';
		}
		showhideregions[i].parentNode.insertBefore(newImg,showhideregions[i]); 

		/* Create the onlick event for the image */
		newImg.onclick = function() {
			var thisId = this.id.replace('img_','');
			toggleDisplay(thisId); 
			if (document.getElementById(thisId).style.display == 'block') {
				this.src = this.src.replace(expandImage,contractImage);
				this.width = contractImageWidth;
				this.height = contractImageHeight;
			}
			else {
				this.src = this.src.replace(contractImage,expandImage);
				this.width = expandImageWidth;
				this.height = expandImageHeight;
			}
		}

		/* Create the onlick event for href */
		showhideregions[i].onclick = function() {
			var thisId = this.href.split("#");
			thisId = thisId[thisId.length-1]
			var thisImage = document.getElementById('img_'+thisId);
			toggleDisplay(thisId); 
			if (document.getElementById(thisId).style.display == 'block') {
				thisImage.src = thisImage.src.replace(expandImage,contractImage);
				thisImage.width = contractImageWidth;
				thisImage.height = contractImageHeight;
			}
			else {
				thisImage.src = thisImage.src.replace(contractImage,expandImage);
				thisImage.width = expandImageWidth;
				thisImage.height = expandImageHeight;
			}
			return false;
		};
	}
}

/*****************************************
***	popup window functions
*****************************************/
function popupHelp(Message) {
	var center = 1;
	var width = 600;
	var height = 400;
                                         
    xposition=0; yposition=0;
    if ((parseInt(navigator.appVersion,10) >= 4 ) && (center)){
        xposition = (screen.width - 600) / 2;
        yposition = (screen.height - 400) / 2;
    }
    args = "width=" + width + "," +
		"height=" + height + "," +
		"location=1," +
		"menubar=1," +
		"resizable=1," +
		"scrollbars=1," +
		"status=1," +
		"titlebar=1," +
		"toolbar=1," +
		"hotkeys=0," +
		"screenx=" + xposition + "," +  //NN Only
		"screeny=" + yposition + "," +  //NN Only
		"left=" + xposition + "," +     //IE Only
		"top=" + yposition;           //IE Only
    newWindow = window.open(Message,"HelpWindow", args);
}
function popupWindow(pageToLoad, winName, args) {
	if (args === null) {
	    args = "location=1,menubar=1,resizable=1,scrollbars=1,status=1,titlebar=1,toolbar=1,hotkeys=0";
	}
	newWindow = window.open(pageToLoad, winName, args);
}