/* Common Javascript used throughout system */

var gLabels;

function optionSelect(pSelectObj, pValue) {
// Select the option with the value pValue in the select object

	if (!pSelectObj) return;
	
	for(var aI=0; aI<pSelectObj.options.length; aI++) {
		aOption = pSelectObj.options[aI];
		if (aOption.value == pValue) {
			pSelectObj.selectedIndex = aI;
			break;
		}
	}
}

function orderCheck(pSubmit) {
// return false if there are any quantities that aren't valid
// or if no quantities given on "Submit" = add to shopping list (blank form ok on "Checkout")

	var abNaN = false;
	var abData = false;
	
	for(var aI=0; aI<pSubmit.form.elements.length; aI++) {
		var aEl = pSubmit.form.elements[aI];
		aName = aEl.name;
		if (aName.indexOf("Quantity") == 0) {
			var aValue = aEl.value;
			if (aValue != "") {
				if (isNaN(aValue)) {
					abNaN = true;
					aEl.focus();
					break;
				}
				else abData = true;
			}
		}
	}
	
	if (abNaN) {
		alert("Sorry, you can only enter numbers in the Qty fields. Please try again.");
		return false;
	}
	
	if (pSubmit.name == "Submit" && !abData) {
		alert("You haven't entered any quantities. Please try again.");
		return false;
	}
	
	return true;
	
}

function gbFieldCheck(pType, pValue) {

// Checks whether value (type = Postal | Phone | Email) is valid.
// Returns a string containing "T" (if valid) or "F", a comma, and 
// the correctly formatted value if valid, otherwise the value supplied.

   var aRegExpBlank = /^\s*$/;
   var aValue = String(pValue);

   if (aValue == "null"  ||  aValue == "undefined" || aRegExpBlank.test(pValue)) return ("T,");
   
   var aRegExpTest, aRegExpReplacement;

   switch (pType) {
      case "Postal":
         aValue = aValue.toUpperCase();
         aRegExpTest = /^\s*([a-zA-Z]\d[a-zA-Z])([\s-]*)(\d[a-zA-Z]\d)\s*$/;
         aRegExpReplacement = "$1 $3";
         break;

      case "Phone":
         aRegExpTest = /^[\s\D]*1*[\s\D]*(\d{3})[\D]*(\d{3})[\D]*(\d{4})(\s*|\D+(.*))$/; 
         aRegExpReplacement = "($1) $2-$3$4";
         break;

      case "Email":	//allows alphanumerics and - _ $ ! / ' in parts of email address
      case "EMail":
         aRegExpTest = /^\s*([-a-zA-Z0-9_!$\/']+)((\.[-a-zA-Z0-9_!$\/']+)*)@([-a-zA-Z0-9_!$\/']+)((\.[-a-zA-Z0-9_!$\/']+)+)\s*$/;
         aRegExpReplacement = "$1$2@$4$5";
         break;
         
      default:
         return "F," + aValue;
   }

   if (aRegExpTest.test(aValue)) {
      aValue = aValue.replace(aRegExpTest,aRegExpReplacement);
      for(;aValue.length>0 && aValue.charAt(aValue.length-1)==" ";) aValue = aValue.substr(0,aValue.length-1);
      return "T," + aValue;
   } else {
      return "F," + aValue;
   }
}

function findElement(n,ly) {
	d = document;
	if (CSBVers < 4) return d[n];
	if ((CSBVers >= 6) && (d.getElementById)) {initImgID; return(d.getElementById(n))}; 
	var cd = ly ? ly.document : d;
	var elem = cd[n];
	if (!elem) {
		for (var i=0;i<cd.layers.length;i++) {
			elem = findElement(n,cd.layers[i]);
			if (elem) return elem;
		}
	}
	return elem;
}
function SetImgURL() {
	d = document;
	if (d.images) {
		var img;
		for (var i=0; i<SetImgURL.arguments.length; i+=2) {
			img = null;
			if (d.layers) { img = findElement(SetImgURL.arguments[i],0);}
			else {img = d.images[SetImgURL.arguments[i]];}
			if (img) {img.src = SetImgURL.arguments[i+1];}
			else alert(SetImgURL.arguments[i] + " is not an image");
		}
	}
}
function buttonon(s) {
	 SetImgURL(s,"../nav/pop-button-over.gif");
	return true;
	}
function buttonoff(s) {
	SetImgURL(s,"../nav/pop-button-off.gif");
	return true;
	}

function removeHTMLTags(pStrInput){

		var aStrOutput = pStrInput.replace(/<\/?[^>]+(>|$)/g, "");
 		return aStrOutput; 

}

function NavMenuHighliteCascade(pId){
	var aNavMenu = document.getElementById(pId);
	var aAnchorObjs = aNavMenu.getElementsByTagName('a')
	var aLength = aNavMenu.getElementsByTagName('a').length;
	var aCounter = 0;
	var aIndex = 0;
	var aI = 0;

	gLabels = new Array()

	for (aI=0;aI<aLength;aI++)
	{
		if(removeHTMLTags(aAnchorObjs[aI].innerHTML) == "United States"){		
			gLabels[aI] = aAnchorObjs[aI].innerHTML;
		}else{
			gLabels[aI] = (aAnchorObjs[aI].text?aAnchorObjs[aI].text:aAnchorObjs[aI].firstChild.data);
		}
		

	}

	for (aI=0;aI<aLength;aI++)
	{
		aCounter += 500;
		setTimeout("AnchorHighLiteOn('" + aI + "','" + pId + "')",aCounter);

		aCounter += 500;
		setTimeout("AnchorHighLiteOff('" + aI + "','" + pId + "')",aCounter);
		
	}

	setTimeout("AnchorsStandard('" + pId + "')",aCounter+2000);
	
}

function AnchorHighLiteOn(pIndex,pId){

	var aNavMenu = document.getElementById(pId);
	var aAnchorObjs = aNavMenu.getElementsByTagName('a')
	var aLength = aAnchorObjs.length;

	//var aText = (aAnchorObjs[pIndex].text?aAnchorObjs[pIndex].text:aAnchorObjs[pIndex].firstChild.data);
	var aText = gLabels[pIndex];
	
	if (aAnchorObjs[pIndex] && gLabels[pIndex])
	{
		aAnchorObjs[pIndex].innerHTML = "<font color='red'>" + aText + "</font>";
	}
}

function AnchorHighLiteOff(pIndex,pId){
	
	var aNavMenu = document.getElementById(pId);
	var aAnchorObjs = aNavMenu.getElementsByTagName('a')
	var aLength = aAnchorObjs.length;
	var aText = '';
	
	if (aAnchorObjs[pIndex])
	{
		//var aText = (aAnchorObjs[pIndex].text?aAnchorObjs[pIndex].text:aAnchorObjs[pIndex].firstChild.data);
		aText = gLabels[pIndex];
		aAnchorObjs[pIndex].innerHTML = aText;
	}

}

function AnchorsStandard(pId){
	var aNavMenu = document.getElementById(pId);
	var aAnchorObjs = aNavMenu.getElementsByTagName('a')
	var aLength = aAnchorObjs.length;
	var aText = '';

	for (var aI=0;aI<aLength;aI++)
	{
		if (aAnchorObjs[aI])
		{
			//var aText = (aAnchorObjs[aI].text?aAnchorObjs[aI].text:aAnchorObjs[aI].firstChild.data);
			aText = gLabels[aI];
			aAnchorObjs[aI].innerHTML = aText;
		}
		
	}
}

  function ActiveLinkTextHilite(pActiveLinkId){

	// Hilites links in red as plain text when they are selected, retore previous slected item as a link

	var aPreActiveLinkId = '';
	var aPreActiveLinkHtml = '';
	var aActiveLinkHtml = '';
	
	var abPageLoading = (document.getElementById('PageLoading').value=='true'?true:false);

	if (!abPageLoading)
	{
		aPreActiveLinkId = document.getElementById('ActiveLinkId').value;
		aPreActiveLinkHtml = document.getElementById('ActiveLinkHtml').value;

	aActiveLinkHtml = document.getElementById(pActiveLinkId).innerHTML;

	document.getElementById('ActiveLinkId').value = pActiveLinkId;
	document.getElementById('ActiveLinkHtml').value = aActiveLinkHtml;
	document.getElementById(pActiveLinkId).innerHTML = '<font color=\'red\'>' + gFreatureLinkText[pActiveLinkId] + '</font>';

	if ((aPreActiveLinkId != '') && (aPreActiveLinkHtml != ''))
	{
	  document.getElementById(aPreActiveLinkId).innerHTML = aPreActiveLinkHtml;
	}else{
			document.getElementById('PageLoading').value = 'true';
		}

	}else{
	document.getElementById(pActiveLinkId).innerHTML = '<font color=\'red\'>' + gFreatureLinkText[pActiveLinkId] + '</font>';
		document.getElementById('PageLoading').value = 'false';
	}

  }
