/*	ORIGINAL FROM WWW.ALTN.COM!

	Randy Peterman
	10-01-02
	Trim function for removing leading and trailing whitespaces.
	Accepts form element name and string both.
	Returns the trimmed string back to the user.
*/

/*
	Dave O'Hara & gauriKa EDITED!
	12-23-03
	Toggle for menu nav sections - WITHOUT IMAGES!
*/
function toggleMenuSectionS(sID, oID, cID)
	{
	var newImg;
	if (document.getElementById)
		{
		if (document.getElementById(sID).style.display == "none")
			{
			document.getElementById(sID).style.display = "";
			document.getElementById(oID).style.display = "none";
			document.getElementById(cID).style.display = "inline";			
			document.getElementById(cID).style.color = "green";
//			document.getElementById(cID).style.font-size = "10px";
			} else	{
					document.getElementById(sID).style.display = "none";
					document.getElementById(oID).style.display = "inline";
					document.getElementById(cID).style.display = "none";	
					document.getElementById(oID).style.color = "#336699";
//					document.getElementById(oID).style.font-size = "10px";
					};
		}
	else
		{
		alert('Your browser does not allow for dynamic javascript and is not standards-compliant.\nPlease update your browser to use our site and have it function correctly.');
		};
	}


function trim(inputString) 
	{
	if(inputString.type == "text")
		{
		inputString = inputString.value;
		};
	for (var i=0; i<document.forms[0].length; i++)
		{
		if (document.forms[0].elements[i].name == inputString)
			{
			inputString = document.forms[0].elements[i].value;
			break;
			};
		}
	if (typeof inputString != "string")
		{
		return inputString;
		};
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	while (ch == " ")
		{
		// Check for spaces at the beginning of the string
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
		};
	ch = retValue.substring(retValue.length-1, retValue.length);
	while (ch == " ") 
		{
		// Check for spaces at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
		};
	while (retValue.indexOf("  ") != -1)
		{
		// Note that there are two spaces in the string - look for multiple spaces within the string
		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); 
		// Again, there are two spaces in each of the strings
	   };
	return retValue; 
	}
	
/*	Dave O'Hara
	01-20-04
	Toggle for Dynamic tables.
*/
function toggleDynamicTable(iid)
	{
	if (document.getElementById)
	{
		iid = document.getElementById(iid)
		if (iid.style.display == "none" || iid.style.display == "")
			{
			iid.style.display = "block";
			}
		else
			{
			iid.style.display = "none";
			};
	}
	else
	{
		alert('Your browser does not allow for dynamic javascript and is not standards-compliant.\nPlease update your browser to use our site and have it function correctly.');
	}
	}
/*
	Dave O'Hara
	07-28-03
	Toggle for item display in orders.
*/
function toggleItemDisplay(iId)
	{
	if (iId == 0)
		{
		var sSet;
		if (document.getElementById("toggleAll").innerText == "[Collapse All Items]")
			{
			sSet = "none";
			document.getElementById("toggleAll").innerText = "[Uncollapse All Items]";
			}
		else
			{
			sSet = "block";
			document.getElementById("toggleAll").innerText = "[Collapse All Items]";
			};
		var tmpID;
		for(var i = 0;i<document.getElementsByTagName("TR").length;i++)
			{
			if (document.getElementsByTagName("TR").item(i) != null)
				{
				if (document.getElementsByTagName("TR").item(i).style.display == "none" && sSet == "block")
					{
					tmpID = document.getElementsByTagName("TR").item(i).id;
					document.getElementById(tmpID+"-tree").innerHTML = "-";
					document.getElementsByTagName("TR").item(i).style.display = "block";
					}
				else if (document.getElementsByTagName("TR").item(i).style.display == "block" && sSet == "none")
					{
					tmpID = document.getElementsByTagName("TR").item(i).id;
					document.getElementById(tmpID+"-tree").innerHTML = "+";
					document.getElementsByTagName("TR").item(i).style.display = "none";
					};
				}
			};
		}
	else
		{
		for(var t = 0;t<document.getElementsByName(iId).length;t++)
			{
			if (document.getElementsByName(iId).item(t).style.display == "none")
				{
				document.getElementById(iId+"-tree").innerHTML = "-";
				document.getElementsByName(iId).item(t).style.display = "block";
				}
			else
				{
				document.getElementById(iId+"-tree").innerHTML = "+";
				document.getElementsByName(iId).item(t).style.display = "none";
				};
			}
		};
	}

/*
	Dave O'Hara
	12-23-03
	Toggle for menu nav sections.
*/
function toggleMenuSection(sImg, sID)
	{
	var newImg;
	if (document.getElementById)
		{
		if (document.getElementById(sID).style.display == "none")
			{
			newImg = document.getElementById(sImg).src;
			newImg = newImg.substr(0, newImg.indexOf("/images/arrowrt.gif", 1)) + "/images/arrowdn.gif"
			document.getElementById(sImg).src = newImg;
			document.getElementById(sID).style.display = "";
			/*document.getElementById(sID).parentElement.style.color = "gold";*/
			}
		else
			{
			newImg = document.getElementById(sImg).src;
			newImg = newImg.substr(0, newImg.indexOf("arrowdn.gif", 1)) + "arrowrt.gif"
			document.getElementById(sImg).src = newImg;
			document.getElementById(sID).style.display = "none";
			/*document.getElementById(sID).parentElement.style.color = "white";*/
			};
		}
	else
		{
		alert('Your browser does not allow for dynamic javascript and is not standards-compliant.\nPlease update your browser to use our site and have it function correctly.');
		};
	}
/*
	Trint Ladd
	2-6-2004
	Generic display toggle
	Written specifically for features page, but should be usable anywhere
*/
function toggleDisplay(sID)
{	
	if (document.getElementById)
	{
	if (document.getElementById(sID).style.display == "none")
		document.getElementById(sID).style.display = "block";
	else
		document.getElementById(sID).style.display = "none";
	}
	else
	{
		alert('Your browser does not allow for dynamic javascript and is not standards-compliant.\nPlease update your browser to use our site and have it function correctly.');
	};

}
/*
	David O'Hara
	02-16-2004
	Sets focus on a form to the first acceptable element
*/
function setFocus()
{
	for (var i=0; i<document.forms[0].length; i++)
		{
		switch (document.forms[0].elements[i].type)
			{
			case "text":
				if (!document.forms[0].elements[i].disabled)
					{
					document.forms[0].elements[i].focus();
					return true;
					}
			case "submit":
				if (!document.forms[0].elements[i].disabled)
					{
					document.forms[0].elements[i].focus();
					return true;
					}
			case "radio":
				if (!document.forms[0].elements[i].disabled)
					{
					document.forms[0].elements[i].focus();
					return true;
					}
			default:
				/* don't set focus since it won't accept */
					break;
			}
		}
}

/*
	Trint Ladd
	02-18-2004
	Returns true if s is a valid email address
*/
function isEmail (s)
{
	/* illegal characters: ( ) < > @ , ; : \ " . [ ] */
	var illegalChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"

	/* user@domain format. */
	var emailPat=/^(.+)@(.+)$/

	var matchArray=s.match(emailPat)
	if (matchArray==null)
		return false
 	var user=matchArray[1]
	var domain=matchArray[2]

	/* valid user (excluding dbl quoted) */
	var userPat=new RegExp("^[^" + illegalChars + "]+(\\.[^" + illegalChars + "]*)*$")
	/* valid dbl quoted user */
	var quotedUser=/^\"[^\"]+\"$/
	if (user.match(userPat)==null && user.match(quotedUser)==null)
		return false

	/* You made it this far, user is okay */

	/* IP domain NOTE: The square brackets are required. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null)
	{	// this is an IP address
		for (var i=1;i<=4;i++)
		{	if (IPArray[i]>255)
				return false
		}

		return true
	}

	/* Named domain */
	var domainPat=new RegExp("^[^" + illegalChars + "]+(\\.[^" + illegalChars + "]+)+$")
	var domainArray=domain.match(domainPat)
	if (domainArray==null)
		return false

	/* Check for valid suffix: .com, .edu, .uk, etc. This could be made more robust */
	var atomPat=new RegExp("[^" + illegalChars + "]+","g")
	var domArr=domain.match(atomPat)
	var suffix=domArr[domArr.length-1]
	if (suffix.length<2 || suffix.length>4)
		return false

	return true;
}

/*
Trint
2-23-2004
This is specifically for validation on the pricing page.
I've made it more generic so it can be used to check any radio set.
*/
function isChecked(arrRadioSet)
{	//Handle radio sets with only one button
	if(arrRadioSet.checked)
		return true;
	for(i=0; i<arrRadioSet.length; i++)
	{	if(arrRadioSet[i].checked)
			return true;
	}
}

/*
Trint
2-23-2004
Function to open new windows
args:
	URL - duh.
	wintype - the format of window to open
		0 (default) - no window args, acts like target="_blank"
		1 - layout_no_menu style window, 500 x 820
		2 - empty window for screenshots, pdf files, etc.
	optional third argument for name of child window
*/
function openWindow(URL, wintype)
{	var winname, child;
	if(openWindow.arguments.length > 2)
		winname = openWindow.arguments[2];
	else
		winname = "winChild";

	switch(wintype)
	{	case 1: //layout_no_menu
			child = window.open(URL, winname, "height=500,width=820,directories=no,location=no,menubar=no,toolbar=no,resizable=yes,scrollbars=yes,titlebar=yes");
			child.focus();
			break;
		case 2: //layout_no_menu
			child = window.open(URL, winname, "height=500,width=700,directories=no,location=no,menubar=no,toolbar=no,resizable=yes,scrollbars=yes,titlebar=yes");
			child.focus();
			break;
		case 3: //no resize - redirects
			child = window.open(URL, winname, "height=400,width=500,directories=no,location=no,menubar=no,toolbar=no,resizable=no,scrollbars=no,titlebar=yes");
			child.focus();
			break;
		default:
			child = window.open(URL, winname, "");
			child.focus();
			break;
	}
}


////////////////////////////////////////////////////////////////
// Grab the selected value from a <select> tag.
// Trint Ladd 12-11-2003
function getOptionValue(field)
{	if(field == null || field.length == 0) //No options in the select
		return "";
	var index = field.selectedIndex;
	if(index<0) //Nothing selected
		return "";
	return field.options[index].value;
}

/*
	Dave O'Hara
	04-02-04
	Used by the credit card page to stop multiple submits.
*/
function frmCCSubmit(btnDIV)
	{
	if (bBeenSubmitted == 1)
		{
		alert("You order has been submitted for processing, please be patient.");
		return false;
		}
	else
		{
		btnDIV.innerHTML = "<p class=\"ccSubmit\">Processing Order...</p>";
		bBeenSubmitted = 1;
		return true;
		};
	}
