/*
<fusedoc fuse="main.js" language="ColdFusion" specification="3.0">
	<responsibilities>
		I contain a number of various Javascript functions used in various places.
	</responsibilities>
	<properties>
		<history
			author="Ryan J. Heldt"
			email="rheldt@globalreach.com"
			date="09/07/2007"
			type="create" role="architect"
			comments="Conversion to Spry 1.5" />
		<history
			author="Ryan J. Heldt"
			email="rheldt@globalreach.com"
			date="06/13/2007"
			type="create" role="architect"
			comments="Perfected and cleaned up a number of things" />
		<history
			author="Ryan J. Heldt"
			email="rheldt@globalreach.com"
			date="05/01/2007"
			type="create" role="architect"
			comments="Initial creation of functions" />
		<property name="copyright" value="Copyright 2007 Global Reach Internet Productions. All rights reserved." />
	</properties>
</fusedoc>
*/

// Determine Browser Version
var isInternetExplorer=false;
var isMozilla=false;
if (navigator.appName.substring(0,1)=="M") {
	var isInternetExplorer=true;	
} else {
	var isMozilla=true;
}

// Effects Timer
var showTimer;

// Changes the display property of an object
function changeElementDisplay(id,value) {
	if (value=="hide") {
		document.getElementById(id).style.display="none";
	} else {
		//document.getElementById(id).style.display="";
		document.getElementById(id).style.display="block";
	}
}

// Toggles the display property of an object
function toggleElementDisplay(id,imageID) {
	if (document.getElementById(id).style.display=="none") {
		document.getElementById(id).style.display="";
		document.getElementById(imageID).src="/images/tree_open.gif";
	} else { 
		document.getElementById(id).style.display="none";
		document.getElementById(imageID).src="/images/tree_closed.gif";
	}
}

// Changes the content of an object
function changeElementValue(id,value) {
	document.getElementById(id).innerHTML=value; 
}

// Changes the class assignment of an object
function changeElementClass(id,value) {
	document.getElementById(id).className=value;
}

// Changes the image source of an image object
function changeImageSrc(id,value) {
	document.getElementById(id).src=value;
}

// Used to show session messages
function showMessage(message,result) {
	clearTimeout(showTimer);
	changeElementDisplay("message","show");	
	changeElementValue("messagetext",message);
	if (result=="error") {
		changeElementClass("message","error");
		changeImageSrc("messageicon","/images/error.gif");
	} else {			
		changeElementClass("message","success");		
		changeImageSrc("messageicon","/images/success.gif");
	}
	Spry.Effect.DoFade('message', {duration: 500, from: 0, to: 100, toggle: false});
	Spry.Effect.DoBlind('message', {duration: 500, from: '0%', to: '100%', toggle: false});
	//if (result!="error") {
	//	showTimer = setTimeout("hideMessage()",10000);
	//}
}

// Used to hide session messages
function hideMessage() {
	Spry.Effect.DoFade('message', {duration: 500, from: 100, to: 0, toggle: false});
	Spry.Effect.DoBlind('message', {duration: 500, from: '100%', to: '0%', toggle: false});
	var hideTimer = setTimeout("changeElementDisplay('message','hide')",450);
}

// Parses the XML status message and sends it to showMessage
function parseResult(value) {	
	if (value.xhRequest) {
		var result = value.xhRequest.responseText;
		var xmldom = Spry.Utils.stringToXMLDoc(result);   
		var messages = xmldom.getElementsByTagName("messages");
		var node = messages.item(0);
		var message = node.getElementsByTagName("message")[0].childNodes[0].nodeValue;   
		var messageType = node.getElementsByTagName("messageType")[0].childNodes[0].nodeValue;   	
		showMessage(message,messageType);
	}
}

// Toggles the checked/unchecked status of checkbox arrays
function checkboxToggle(isChecked,checkboxArray) {
	if(checkboxArray.length) {
		for(var i=0; i<checkboxArray.length; i++) {
			checkboxArray[i].checked = isChecked;
		}
	} else {
		checkboxArray.checked = isChecked;
	}
} 

// Select a dropdown item by value
function dropdownSelect(name,value) {
	var dropdown = eval('document.mainform.' + name);
	for (rr = 0; rr < dropdown.length; rr++) {
		if (dropdown[rr].value == value) {
			dropdown.selectedIndex = rr;
		}
	}
}

// Create a new cookie
function createCookie(name,value) {
	var days = 1;
	var date = new Date();
	date.setTime(date.getTime()+(days*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
	document.cookie = name+"="+value+expires+"; path=/";
}

// Read the value of a cookie
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.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 "";
}

// Deletes a cookie
function deleteCookie(name) {
	createCookie(name,"",-1);
}

// Submits a form
function submitMainform(i) {
	if (arguments.length){
		document.mainform.submit();		
	}
	else {
		if (validate(document.mainform)) {
			document.mainform.submit();
		}
	}
}
