//2010.02.02 DSL removed mexico from phonemask
var wndEmail;
function closeEmailWindow() {
	if (wndEmail) {
		wndEmail.close();
	}
}
function clickSendEmailFax(id, blnFax) {
	var strURL;

	strURL = "../common/email.asp?id=" + id;
	if (blnFax) {
		strURL += "&method=F&fax_type=EFS";
	}
	else {
		strURL += "&method=E";
	}

	if (wndEmail && !wndEmail.closed) {
		wndEmail.focus();
	}
	else {
		wndEmail = window.open(strURL,"wndEmail","statusbar, scrollbars, resizable");
	}
}

var blnCheckForEditsBeforeUnload = false;
function checkForEditsBeforeUnload() {
	var frm, obj, blnChanged = false, blnTemp, strTemp, objTemp;

	for (var i = 0; i < document.forms.length && !blnChanged && blnCheckForEditsBeforeUnload; ++i) {
		frm = document.forms[i];
		for (var j = 0; j < frm.elements.length && !blnChanged; ++j) {
			obj = frm.elements[j];
			switch(obj.type) {
				case "checkbox":
					if (obj.checked != obj.defaultChecked) {
						obj.focus();
						blnChanged = true;
					}
					break;
				case "password":
				case "file":
				case "text":
				case "textarea":
					if (obj.value != obj.defaultValue) {
						obj.focus();
						obj.select();
						blnChanged = true;
					}
					break;
				case "select-one":
					blnTemp = false;
					//have to check if any were selected to begin with
					//this is to workaround no "default" selected
					//since the browser auto assigns the first option as being selected
					for (var k = 0; k < obj.options.length; ++k) {
						if (obj.options[k].defaultSelected) {
							blnTemp = true;
						}
					}
					//since no default selection, make the first option the default.
					if (!blnTemp) {
						obj.options[0].defaultSelected = true;
						blnTemp = true;
					}
					for (var k = 0; k < obj.options.length && blnTemp; ++k) {
						if (obj.options[k].selected != obj.options[k].defaultSelected) {
							obj.focus();
							blnChanged = true;
						}
					}
					break;
				case "select-multiple":
					for (var k = 0; k < obj.options.length; ++k) {
						if (obj.options[k].selected != obj.options[k].defaultSelected) {
							obj.focus();
							blnChanged = true;
						}
					}
					break;
				case "radio":
					strTemp = "";
					//have to check if multiple values were checked by default
					//if multiple values are selected, the last one will be the "default" checked
					for (var k = 0; k < frm.elements.length; ++k) {
						objTemp = frm.elements[k];
						if (objTemp.name == obj.name) {
							if (objTemp.defaultChecked) {
								strTemp = objTemp.value;
							}
						}
					}
					//if checked and the value doesn't match the default, the value was changed.
					if (obj.checked && obj.value != strTemp) {
						obj.focus();
						blnChanged = true;
					}
					break;
				case "hidden":
				case "submit":
				case "reset":
				case "button":
					break;
				default:
					alert(obj.type);
			}
		}
	}

	if (blnChanged) {
		return "You have made changes to the page that have not been posted."
	}
}

function isValidCode(str) {
	var re = /^[A-Z_0-9]*$/;

	if (str != "" && str.search(re) == -1)
		return false;
	return true;
}

function validateCode(str) {
	if (!isValidCode(str)) {
		alert("Error: This field must consist of only letters, numbers, or underscores.");
		return false;
	}
	return true;
}
	

function setStatus(msg) {
		 status = msg
		 return true
} 

function upperThis(field) {
		 field.value = field.value.toUpperCase()
}

var wndCalendar
function checkCalendarWindow(strForm, strField, strCall) {
 closeCalendarWindow();
 openCalendarWindow(strForm, strField, strCall);
 return false;
}

function openCalendarWindow(strForm, strField, strCall) {
 var objField = eval("document." + strForm + "." + strField);
 var strDate = objField.value;

 var str = "../utilities/calendar.asp?form=" + strForm + "&field=" + strField + "&date=" + strDate + "&call=" + strCall
 wndCalendar = window.open(str, "wndCalendar", "resizable=no,scrollbars=no,width=300,height=320");
}

function closeCalendarWindow() {
 if (wndCalendar)
  wndCalendar.close();
}

function format_the_number(expr, decplaces) {
		 var str = "" + Math.round(eval(expr) * Math.pow(10,decplaces))
		 while (str.length <= decplaces) {
		 	   str = "0" + str
		 }
		 var decpoint = str.length - decplaces
		 return str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
}

var theHelpWindow
function closehelpWindow() {
		 if (theHelpWindow)	 {
		 	theHelpWindow.close()
		 }
}

function openhelpWindow(view_str) {
		 closehelpWindow()				
	     theHelpWindow = window.open(view_str,"subHelp","height=600,width=610,scrollbars,resizable")
 		 theHelpWindow.focus()
}
function phonemask(str,textbox,loc,delim,strcountry){
/** removed comment 2.1.2005 per Pam **/
		 if (strcountry != "") {
		 	var strfield = eval(strcountry);
			var strcount = strfield.options[strfield.selectedIndex].value;
			strcount= strcount.toUpperCase()
			if ((strcount != "USA") && (strcount != "-1") && (strcount != "CANADA")){
			   return true;
			}
			
		 }
    	 var locs = loc.split(',');

		 for (var i = 0; i <= locs.length; i++){
		 	 for (var k = 0; k <= str.length; k++){
	 		 	 if (k == locs[i]){
	  			 	if (str.substring(k, k+1) != delim){
	    			   str = str.substring(0,k) + delim + str.substring(k,str.length)
	  				}
	 			  }
			}
 		 }
		 textbox.value = str

}
function changeStyle(obj, bgColor, bdColor, ftColor) {
   	if (document.getElementById) {
		obj.style.backgroundColor = bgColor;
		obj.style.borderColor = bdColor;
		obj.style.color = ftColor;
	}
}	

function chooseISSILink(view_str) {
		 self.location.href = view_str
}

function checkCard(card_str) {
		var ok = "Y"	
		var the_num = 0 
		var the_f = 1
		var the_nstr = ""
		var chr2 = "" 	
		var the_total  = 0
		var sz = card_str.length
		if ((sz < 13) || (sz > 20)) {
			ok = "N"
			alert("Error: Invalid Card Number.")
		}

		if (card_str.indexOf("x") < 0 && ok == "Y") {
			var chr =""
			for (var i = (sz-1); i >= 0; i--) {
				chr =  card_str.charAt(i)				

				if (isNaN(chr)) {
					alert("Error: Invalid Card Number. All characters in the credit card number must be numeric.")
					ok = "N"
					break
				}
				if (ok == "Y") {
					the_num = parseFloat(chr) * parseFloat(the_f)
				
					the_nstr = String(the_num)
				
					n_sz = the_nstr.length


					for (var j = 0; j < n_sz; j++) {
						if (j > 1) { break };
						chr2 =  the_nstr.charAt(j)
						the_total = parseFloat(the_total) + parseFloat(chr2) 
					}
					if (parseFloat(the_f) == 1) {
						the_f = 2
					} else {
						the_f = 1
					}
				}

			}
			if (ok == "Y") {
				the_total = parseFloat(the_total/10)

				var the_answer = (parseFloat(the_total ) - parseInt(the_total))

				if ((parseFloat(the_total ) - parseInt(the_total )) != 0) {
//					alert("Error: Invalid Card Number. " + String(the_answer))
					alert("Error: Invalid Card Number. ")
					ok = "N";
				}
				
			}

		}
		

		if (ok == "Y") {
		return true
		} else {
		return false
		}
}
function locktrueie(myform){
	myform.ie.checked = true;
}
function lockfalsenet(myform){
	myform.nets.checked = true;
}
function goToURL(str) { 
	try {
		window.location = str;
	}
	catch(e) {
	}
}

function nochange(mycheckbox){
	if (mycheckbox.checked == true){ 
		mycheckbox.checked = false;
	}
	else {
		mycheckbox.checked = true;
	}
} 

//call traverse_html_nodes(document.body)
function traverse_html_nodes(node, func) {
	func(node);

	for (var i = 0; i < node.childNodes.length ; ++i)
		traverse_html_nodes(node.childNodes[i], func);
}

function check_all_elements(node) {
	if (node){
	    if(node.ondblclick) {node.className += " dblclickshade";}
		if(node.readOnly) {node.className += " readonlyshade";}		
	}
}

function onload_check_all_elements() {
	mod_all_textboxes();
}

function mod_all_textboxes(){
	var x = document.getElementsByTagName("input"), bln;
    
	for (var i=0;i<x.length;i++){
		/* check readonly attribute */
		if (x[i].hasAttribute)
			bln = x[i].hasAttribute("readonly");
		else
			bln = x[i].getAttribute("readonly");

		if(bln) {
			x[i].className += " readonlyshade";
		}
		
		if (x[i].getAttribute("ondblclick") != null){
			x[i].className += " dblclickshade";
		}		
	}
}

function setSelect(objSelect, values) {
	for (var i = 0; i < objSelect.options.length; ++i) {
		bln = false;
		switch (typeof(values)) {
			case "string":
				if (objSelect.options[i].value == values)
					bln = true;
				break;
			case "array":
				for (var j = 0; j < values.length; ++j)
					if (values[j] == objSelect.options[i].value)
						bln = true;
				break;
		}
		objSelect.options[i].selected = bln;
	}
}

function DateToJavascriptDate(strDate) {
	dt = null;
	re = /^((1[0-2])|(0?[1-9]))\/[0-3]?[0-9]\/[0-9]{1,4}/;

	str = strDate.match(re);
	if (str) {
		str = str[0];
		intSlash1 = str.indexOf("/");
		intSlash2 = str.indexOf("/", intSlash1 + 1);
		intMonth = parseInt(str.substring(0, intSlash1), 10);
		intDay = parseInt(str.substring(intSlash1 + 1, intSlash2), 10);
		intYear = parseInt(str.substring(intSlash2 + 1, str.length), 10);
		if (intYear < 100)
			intYear += 2000;
		dt = new Date(MonthName(intMonth) + " " + intDay + ", " + intYear);
	}
	return dt;
}
function MonthName(intMonth) {
	var ary = new Array("", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	return ary[intMonth];
}

function removeElement(obj) {
	objParent = obj.parentNode;
	objParent.removeChild(obj);
}

function body_load() {
	onload_check_all_elements();

	mm_createNewMenus();
}
function force_zip_code(strCountry) {
	var bln = false;

	if (strCountry == "" || strCountry.toUpperCase() == "UNITED STATES" || strCountry.toUpperCase() == "CANADA")
		bln = true;

	return bln;
}
function parseDate(str) {
	var dt, ary;

	ary = str.split("/");
	dt = null;
	if (ary.length == 3) {
		if (ary[2] < 100)
			if (ary[2] < 75)
				ary[2] += 2000;
			else
				ary[2] += 1900;
		dt = new Date(ary[2], ary[0] - 1, ary[1]);
	}
	return dt;
}
function getRadio(objRadio) {
	var strReturn;

	strReturn = null;

	if (objRadio.length) {
		for (var i = 0; i < objRadio.length; ++i) {
			if (objRadio[i].checked) {
				strReturn = objRadio[i].value;
			}
		}
	}
	else {
		if (objRadio.checked) {
			strReturn = objRadio.value;
		}
	}

	return strReturn;
}

