//JO 09/13/04
var didFormSubmitted = false
var doPopup = true;

//_________________________________________________________

function handleError(){
	return true;

}window.onerror = handleError;

//_________________________________________________________

function lib_bwcheck(){ //Browsercheck (needed)
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent
	this.dom=document.getElementById?1:0
	this.opera5=this.agent.indexOf("Opera 5")>-1
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	this.ie7=(this.ver.indexOf("MSIE 7")>-1 && this.dom && !this.opera5)?1:0;
	this.ie8=(this.ver.indexOf("MSIE 8")>-1 && this.dom && !this.opera5)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie6
	this.mac=this.agent.indexOf("Mac")>-1
	this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
	return this
}var bw=new lib_bwcheck()

//_________________________________________________________

function setFieldVal(fldObj,val){
	fldObj.value=val
}

//_________________________________________________________

function setdoPopupFalse(){
	doPopup = false;
}

//_________________________________________________________

function reason4leaving(){
	if( doPopup == true ){
		window.open( "bailoutPopup.asp?caller=" + location.href, "01by01", "width=01,height=01,toolbar=0,resizeable=no");
	}
}

//_________________________________________________________

function checkPopup(obj){
	doPopup = false;
	return true;
}

//_________________________________________________________

function validateWrapper(bool){
	if(bool){doPopup = false;}
	return bool;
}

//_________________________________________________________

function didFormSubmit(obj){
	if(!didFormSubmitted){
		didFormSubmitted = true
		checkPopup(obj);
		obj.submit();
		return;
	}
	return;
}

//_________________________________________________________

function setSelects(fieldName, queryValue){
	if(document.forms[0].elements[fieldName]){
	   	var fieldObj = document.forms[0].elements[fieldName];
   		for(i=0; i<fieldObj.length; i++){
   			if(fieldObj[i].value == queryValue){
   				fieldObj[i].selected = true;
   				break;
   			}
   		}
   	}
}

//_________________________________________________________

function fmSubmitFromBlur(fieldObj, tempFieldVal){
	if(fieldObj.changed && fieldObj[fieldObj.selectedIndex].value != tempFieldVal && fieldObj[fieldObj.selectedIndex].value != ""){
		didFormSubmit(fieldObj.form);
	}
}

//_________________________________________________________

function fmSubmitFromChange(fieldObj, tempFieldVal){
	fieldObj.changed = 1;
	if(fieldObj[fieldObj.selectedIndex].value == ""){
		setSelects(fieldObj, tempFieldVal);
		return false;
	}
	if(fieldObj.clicked && fieldObj[fieldObj.selectedIndex].value != tempFieldVal && fieldObj[fieldObj.selectedIndex].value != ""){
		didFormSubmit(fieldObj.form);
	}
}

//_________________________________________________________

function fmFldFocus(fmObj){
	var fieldFocused = 0
	var fieldOpt
	if(fmObj){
		for(i=fmObj.elements.length-1; i >= 0; i--){
			if(fmObj.elements[i].type == "select-one" && !fmObj.elements[i].focused && !fieldFocused){
				fmObj.elements[i].focused;
				fieldFocused = 1
				fmObj.elements[i].focus();
			}
		}
	}return;
}

//_________________________________________________________

function initFmFields(fmObj){
	for(i=0; i < fmObj.elements.length; i++){
		fmObj.elements[i].clicked = 0;
	}
}

//_________________________________________________________

function document_key(fieldObj, e, tempFieldVal) {
	var fm = fieldObj.form
	if(bw.ie){
		if(e.keyCode==13 && fieldObj[fieldObj.selectedIndex].value != tempFieldVal && fieldObj[fieldObj.selectedIndex].value != ""){
			didFormSubmit(fm);
		}
   }
	else if(e.which && fieldObj[fieldObj.selectedIndex].value != tempFieldVal && fieldObj[fieldObj.selectedIndex].value != ""){
		if(e.which==13){
			didFormSubmit(fm);
		}
	}
}

//_________________________________________________________

function showDetails(detailType, url, width, height){
	if(detailType == "plan_suite_desc"){
		if(document.formShowPlan.suite_name.selectedIndex > 0){
			url += "#" + escape(replChar(document.formShowPlan.suite_name[document.formShowPlan.suite_name.selectedIndex].value, " ", "+"))
		}
	}
	openWind(url, width, height);
}

//_________________________________________________________

function choosePlan(){
	if(document.forms["formPlanSelect"]){
		if(document.forms["formPlanSelect"].plan_name){
			if(document.forms["formPlanSelect"].plan_name[0]){
				document.forms["formPlanSelect"].plan_name[0].checked = true;
			}else{
				document.forms["formPlanSelect"].plan_name.checked = true;
			}
		}
		document.forms["formPlanSelect"].submit.focus();
	}
}

//_________________________________________________________

function openWind(url, width, height) {
  var WinName = "" + width + "x" + height
  var remote = eval("window.open(url, WinName, 'scrollbars=yes,width=" + width + ",height=" + height + "')");
  remote.focus();
}

//_________________________________________________________

function setSuiteName(fmName, fieldName, fieldVal){
	if(document.forms[fmName]){
		if(document.forms[fmName].elements[fieldName]){
			var fieldObj = document.forms[fmName].elements[fieldName]
			//fieldObj.options[fieldObj.length] = new Option('Other Locations','other');
			setSelects(fieldObj, fieldVal);
		}
	}
}

//_________________________________________________________

function getRadioVal(fldObj){
	x = fldObj;
	val = "";
	if(x.type == "radio" && !x.length && x.checked){val = x.value	//this line handles radio field with single option, since it doesn't seem to work like a collection until it has multiple options
	}else{
		for(i=0; i<x.length; i++){
			if(x[i].checked == true){
				val = x[i].value;
			}
		}
	}
	return val;
}

//_________________________________________________________

function popWin(url, width, height){
	var remote = eval("window.open(url, '' + width + 'x' + height + '', 'scrollbars=yes,width=" + width + ",height=" + height + "')");
	if(remote){
		remote.focus();
		return false;
	}else{
		return true;
	}
}

//_________________________________________________________

function submitLNPorNew(fm){
	var msg = "";
	
	if(fm.NPA){//PHONE AND ADDRESS FIELDS DISPLAYED SO VALIDATE
		if((getRadioVal(fm.clec_request_type) == "LNP" || fm.clec_request_type.value == "LNP") && fm.LNPFieldsDisplayed){

			var fieldArray = new Array("NPA","NXX","NNNN","els_streetnumber","els_streetname","els_city","els_state","els_zip");
			var typeArray = new Array("intphone","intphone","pin","text","text","text","select","zip");
			var fNameArray = new Array("3 Digit Area Code","First 3 Phone Digits","Last 4 Phone Digits","Street Number","Street Name","City","State","ZIP Code");
			var msgArray = new Array("field is not valid","field is not valid","field is not valid","field is not valid","field is not valid","field is empty","field is not selected","field is not valid");
			msg += fieldValidate(fm.name, fieldArray, typeArray, "English", fNameArray, msgArray, "");
			if(!fm.acknowledge_no_dsl_flg.checked){
				msg += "\nPlease confirm that you have reviewed the requirements for transferring your number"
			}			
		
		}else if((getRadioVal(fm.clec_request_type) == "ELS" || fm.clec_request_type.value == "ELS") && fm.ELSFieldsDisplayed){
	
			var fieldArray = new Array("NPA","NXX","els_streetnumber","els_streetname","els_city","els_state","els_zip");
			var typeArray = new Array("intphone","intphone","text","text","text","select","zip");
			var fNameArray = new Array("3 Digit Area Code","First 3 Phone Digits","Street Number","Street Name","City","State","ZIP Code");
			var msgArray = new Array("field is not valid","field is not valid","field is not valid","field is not valid","field is empty","field is not selected","field is not valid");
			msg += fieldValidate(fm.name, fieldArray, typeArray, "English", fNameArray, msgArray, "");
	
		}
	}else if(fm.els_streetnumber){//NOT CLEC BUT REQUIRES SERVICE ADDRESS
			var fieldArray = new Array("els_streetnumber","els_streetname","els_city","els_state","els_zip","els_country");
			var typeArray = new Array("text","text","text","text","text","select");
			var fNameArray = new Array("Street Number","Street Name","City","State/Province","Postal Code","Country");
			var msgArray = new Array("field is not valid","field is not valid","field is not valid","field is not valid","field is not valid","field is not selected");
			msg += fieldValidate(fm.name, fieldArray, typeArray, "English", fNameArray, msgArray, "");		
	}
	if(msg == ""){
		doPopup = false;
		return true;
	}else{
		alert(msg);
		return false;
	}
}

//_________________________________________________________

function submitLNPAddrLookup(fm){
	var x = checkPopup()
	if(fm.els_streetnumber){// ONLY VALIDATE WHEN FORM FIELDS EXIST, ELSE USER IS SELECTING ADDRESS FROM RADIO LIST
		var fieldArray = new Array("els_streetnumber","els_streetname","els_city","els_state","els_zip");
		var typeArray = new Array("text","text","text","select","zip");
		var fNameArray = new Array("Street Number","Street Name","City","State","ZIP Code");
		var msgArray = new Array("field is not valid","field is not valid","field is empty","field is not selected","field is not valid");
		return validateField(fm.name, fieldArray, typeArray, "English", fNameArray, msgArray);
	}
}

//_________________________________________________________

function submitAddrCorrection(x, clec_request_type, street_num, street_name, room, floor, building, secondary_loc, unit, city, state, zip, npa, nxx, nnnn){
	var fmObj = x
	
	if (fmObj.clec_request_type.value == clec_request_type && fmObj.els_streetnumber.value == street_num && fmObj.els_streetname.value == street_name && fmObj.els_room.value == room && fmObj.els_floor.value == floor && fmObj.els_building.value == building && fmObj.els_secondarylocation.value == secondary_loc && fmObj.els_unit.value == unit && fmObj.els_city.value == city && fmObj.els_state[fmObj.els_state.selectedIndex].value == state && fmObj.els_zip.value == zip && fmObj.NPA.value == npa && fmObj.NXX.value == nxx && fmObj.NNNN.value == nnnn){
		alert("No corrections were made to your form. Please update your information before submitting the form again.");
		return false;
	}else{
		return submitLNPAddrLookup(fmObj);
	}
}

//_________________________________________________________

function submitLOA(x,y){
	var fm = x;
	var pg = y;
	var oWin = 0
	var oFm = 0
	oWin = window.opener;
	if(bw.ie5 || bw.ie6 || bw.ie7 || bw.ie8 || bw.ns6){				// try/catch works on ie5+ or ns6+ else window.onerror will handle for possible access denied error and asp error handling will require fields, JO
		try{ 
			oFm = oWin ? oWin.document.formLOA : 0;	// this line causes an occasional "Access is denied" error if oWin on different domain, JO
		}catch(e){ 
			//continue
		}
	}else{
		oFm = oWin ? oWin.document.formLOA : 0;
	}
	msg = "";
	if(!pg){pg="signup_directory_listing.asp"}

	var fieldArray = new Array("agree_to_local_flg","agree_to_toll_flg","agree_to_long_distance_flg","e_sig_first_name","e_sig_last_name","loa_dob_month","loa_dob_day","loa_dob_year");
	var typeArray = new Array("checkbox","checkbox","checkbox","words","words","select","select","select");
	var fNameArray = new Array("Check Box #1","Check Box #2","Check Box #3","First Name","Last Name","Birth Month","Birth Day","Birth Year");
	var msgArray = new Array("must be checked","must be checked","must be checked","field is not valid","field is not valid","field is required","field is required","field is required");

	if(fm.e_sig_flg.value == "1"){// SUBMIT LOA ONLINE
		if(validateField(fm.name, fieldArray, typeArray, "English", fNameArray, msgArray)){
			if(oWin){
				if(oFm){
					oFm.action = pg
					oFm.e_sig_flg.value = fm.e_sig_flg.value;
					oFm.agree_to_local_flg.value = fm.agree_to_local_flg.value;
					oFm.agree_to_toll_flg.value = fm.agree_to_toll_flg.value;
					oFm.agree_to_long_distance_flg.value = fm.agree_to_long_distance_flg.value;
					oFm.e_sig_first_name.value = fm.e_sig_first_name.value;
					oFm.e_sig_last_name.value = fm.e_sig_last_name.value;
					oFm.loa_id.value = fm.loa_id.value;
					oFm.loa_dob_month.value = fm.loa_dob_month[fm.loa_dob_month.selectedIndex].value;
					oFm.loa_dob_day.value = fm.loa_dob_day[fm.loa_dob_day.selectedIndex].value;
					oFm.loa_dob_year.value = fm.loa_dob_year[fm.loa_dob_year.selectedIndex].value;
					oWin.focus();
					oFm.submit();
					this.window.close();
					return false;
				}
			}
			return true;
		}else{
			return false;
		}
	}else{// PRINT LOA
		msg = fieldValidate(fm.name, fieldArray, typeArray, "English", fNameArray, msgArray)
		if(msg == ""){
			if(oWin){
				if(oFm){
					oFm.action = pg
					oFm.e_sig_flg.value = fm.e_sig_flg.value;
					oFm.agree_to_local_flg.value = fm.agree_to_local_flg.value;
					oFm.agree_to_toll_flg.value = fm.agree_to_toll_flg.value;
					oFm.agree_to_long_distance_flg.value = fm.agree_to_long_distance_flg.value;
					oFm.e_sig_first_name.value = fm.e_sig_first_name.value;
					oFm.e_sig_last_name.value = fm.e_sig_last_name.value;
					oFm.loa_id.value = fm.loa_id.value;
					oFm.loa_dob_month.value = fm.loa_dob_month[fm.loa_dob_month.selectedIndex].value;
					oFm.loa_dob_day.value = fm.loa_dob_day[fm.loa_dob_day.selectedIndex].value;
					oFm.loa_dob_year.value = fm.loa_dob_year[fm.loa_dob_year.selectedIndex].value;
					oWin.focus();
					oFm.submit();
					window.print();
					return false;
				}
			}
			if(fm.printButton){fm.printButton.value="Sending page to printer..."}
			window.print();
			return true;
		}else{
			alert("Although you opted not to submit the Letter of Authorization online we ask that you please complete the form BEFORE printing in order to esure that your form is legible and accurate. The information you print will NOT be submitted during the signup process and you will need to sign and mail/fax the form to us.\n\n" + msg);
			return false;
		}
	}
}

//_________________________________________________________

function submitLOA2(x,y){
	var fm = x;
	var fieldArray = new Array("agree_to_local_flg","agree_to_toll_flg","agree_to_long_distance_flg","e_sig_first_name","e_sig_last_name","loa_dob_month","loa_dob_day","loa_dob_year");
	var typeArray = new Array("checkbox","checkbox","checkbox","words","words","select","select","select");
	var fNameArray = new Array("Check Box #1","Check Box #2","Check Box #3","First Name","Last Name","Birth Month","Birth Day","Birth Year");
	var msgArray = new Array("must be checked","must be checked","must be checked","field is not valid","field is not valid","field is required","field is required","field is required");
	if(y==0){
		msg = fieldValidate(fm.name, fieldArray, typeArray, "English", fNameArray, msgArray)
		if(msg != ""){
			alert("Although you opted not to submit the Letter of Authorization online we ask that you please complete the form BEFORE printing in order to esure that your form is legible and accurate. The information you print will NOT be submitted online and you will need to sign and mail/fax the form to us.\n\n" + msg);
			return false;
		}else{window.print();}
	}else{
		if(validateField(fm.name, fieldArray, typeArray, "English", fNameArray, msgArray)){return true;}else{return false;}
	}
}

//_________________________________________________________

function submitDirListing(x){
	var fm = x
	var fieldArray = new Array("dir_first_name","dir_last_name");
	var typeArray = new Array("words","words");
	var fNameArray = new Array("First Name","Last Name");
	var msgArray = new Array("field is not valid","field is not valid");

	if(fm.clec_request_type.value == "ELS" && getListVal(fm.dir_listing) != "none"){
		if(validateField(fm.name, fieldArray, typeArray, "English", fNameArray, msgArray)){
			checkPopup(fm);
			return true
		}else{
			return false;
		}
	}
	checkPopup(fm);
	return true;
}

//_________________________________________________________

function submitNow(fmObj){
	var fm = fmObj;
	var formValid;
	clearInitVal(fm.ProvinceS);

	if(fm.MACaddress != undefined){	//I HAVE ADAPTER AND MAC
		fm.MACaddress.value = removeNonChars(fm.MACaddress.value.toLowerCase(), "0123456789abcdef");
		fm.MACaddressConf.value = removeNonChars(fm.MACaddressConf.value.toLowerCase(), "0123456789abcdef");

		if(fm.N2PProductID[fm.N2PProductID.selectedIndex].value == ""){
			alert("Please select the device type you received from your reseller.");
			fm.N2PProductID.focus();
			formValid = false;
		}else if(!isMAC(fm.MACaddress.value)){
			alert("Please enter a valid 12 digit MAC address.");
			fm.MACaddress.focus();
			formValid = false;
		}else if(fm.MACaddress.value != fm.MACaddressConf.value){
			alert("Please re-enter your MAC address and be sure to enter the confirm field for accuracy.");
			fm.MACaddressConf.focus();
			formValid = false;
		}else if(fm.agent.value == ""){
			alert("Please enter the Sales Agent Code you received when you purchased your device.");
			fm.agent.focus();
			formValid = false;
		}

	}else{	//DEVICEQUANTITY FIELD IS HIDDEN OR TEXT FIELD, NOT RADIO
		formValid = valFields(fm);
	}
	return formValid;
}

//_________________________________________________________

function valDeviceForm(obj){
	if ( submitNow(obj) == false ){
		doPopup = true;
		return false;
	}else{
		doPopup = false;
		return true;
	}
}

//_________________________________________________________

function valFields(fmObj){
	var fm = fmObj;
	
	var zipType = 'notrequired';
	var stateType = 'notrequired';
	var stateName, stateDesc

	if(fm.UsStateS && fm.CountryS[fm.CountryS.selectedIndex].value == 'US'){
		zipType = 'zip';
		stateType = 'select';
		stateName = 'UsStateS';
		stateDesc = 'State (for U.S. customers)';
	}
	else{
		if(fm.CountryS[fm.CountryS.selectedIndex].value == 'US'){
			zipType = 'zip';
		}else{
			zipType = 'text';
		}
		stateType = 'text';
		stateName = 'ProvinceS';
		stateDesc = 'Province/Region';
	}

	var fieldArray = new Array("AdapterType","FirstNameS","LastNameS","Address1S","CityS",stateName,"CountryS","ZipS");
	var typeArray = new Array("select","words","words","text","words",stateType,"select",zipType);
	var fNameArray = new Array("Power Supply","First Name","Last Name","Address 1","City",stateDesc,"Country","Postal/Zip Code");
	var msgArray = new Array("voltage has not been selected","field is not valid","field is not valid","field is empty","field is not valid","field is empty","has not been selected","value is invalid");
	return validateField(fm.name, fieldArray, typeArray, "English", fNameArray, msgArray);

}

//_________________________________________________________

function removeNonChars(str, chars){
	// RETURN STRING THAT ONLY CONTAINS chars
	var newStr = "";
	for(var i = 0; i < str.length; i++){
		if(chars.indexOf(str.charAt(i)) > -1){
			newStr += str.charAt(i);
		}
	}return newStr;
}

//_________________________________________________________

function isMAC(str){
	if(str.length != 12)
		return false;
	return true;
}

//_________________________________________________________

function isShippingNeeded(fieldObj){
	fm = fieldObj.form
	if(!fm.DeviceQuantity[0].checked){
		alert("You have selected the option:\n\n          \"I already have an InnoMedia 3328-2 telephone adapter\"\n\nindicating you do not wish to purchase a device at this time. If this is correct, then your shipping information is not needed. However, you will need to enter the Sales Agent Code before continuing.\n\n\nIf you wish to purchase the telephone adapter please select the first option:\n\n          \"I need to purchase an InnoMedia 3328-2 telephone adapter\"\n");
	}
}

//_________________________________________________________

function zipChecker(obj) {
	if(obj){
		if(obj[obj.selectedIndex].value == "US"){
			showNormImage("UsStateS", "/images/validate/star.gif");
			showNormImage("ProvinceS", "/images/validate/spacer.gif");
			return;
		}else{
			setSelects("UsStateS", "");
			showNormImage("UsStateS", "/images/validate/spacer.gif");
			showNormImage("ProvinceS", "/images/validate/star.gif");
		}
	}else{
		setSelects("UsStateS", "");
		showNormImage("UsStateS", "/images/validate/spacer.gif");
		showNormImage("ProvinceS", "/images/validate/star.gif");
	}return;
}

//_________________________________________________________

function stateCheck(obj){
	if(obj[obj.selectedIndex].value != ""){setSelects("CountryS", "US");}
}

//_________________________________________________________

var fieldListVal = new Array();
var fieldListText = new Array();
var locationListDisplay = new Array();

function getListMenuVals(x){
	var fieldObj = x;
	var fOp = fieldObj.options;

	for(var i=0; i<fieldObj.length; i++){
		fieldListVal[fieldListVal.length] = fieldObj[i].value
		fieldListText[fieldListText.length] = fieldObj[i].text
	}

	bubbleSort(fieldListText.length)

	fOp[0] = new Option("","");
	for (var i=0; i<fieldListText.length; i++){
		fOp[i+1] = new Option(fieldListText[i],fieldListVal[i]);

	}
	fOp.length = fieldListText.length+1

	return;
}

//_________________________________________________________

function bubbleSort(length) {
    for(var i=0; i<(length-1); i++){
        for(var j=i+1; j<length; j++){
            if (fieldListText[j] < fieldListText[i]) {
                var dummy = fieldListVal[i];
				var dummy2 = fieldListText[i];

                fieldListVal[i] = fieldListVal[j];
				fieldListText[i] = fieldListText[j];

                fieldListVal[j] = dummy;
				fieldListText[j] = dummy2;
            }
		}
	}
	return
}

//_________________________________________________________

function clearInitVal(x){
	fObj = x;
	if(fObj!= undefined){
		if(x.value == "(non-U.S. only)"){
			x.value = "";
		}
	}
}

//_________________________________________________________

function setAsterisks(boolFlag){
	var img;
	if(boolFlag){	img = "/images/validate/star.gif"}
	else{		img = "/images/validate/spacer.gif"}

	showNormImage("FirstNameS", img);
	showNormImage("LastNameS", img);
	showNormImage("Address1S", img);
	showNormImage("CityS", img);
	showNormImage("UsStateS", img);
	showNormImage("CountryS", img);
	showNormImage("ZipS", img);
	showNormImage("AdapterType", img);	
	
	if(boolFlag){	img = "/images/validate/spacer.gif"}
	else{		img = "/images/validate/star.gif"}
	showNormImage("agent", img);
	showNormImage("MACaddress", img);
	showNormImage("MACaddressConf", img);
}

//_________________________________________________________

function formSubmit(fm, pg){
	doPopup = false;
	fm.action=pg;
	fm.submit();
}

//_________________________________________________________

function setTestValues(){
	var fm = document.forms[0]
	if(fm.NPA){
		if(fm.NPA.value == ""){
			fm.NPA.value =  "415";	//415
			fm.NXX.value =  "662";	//662
			fm.NNNN.value =  "9535";//9535
			fm.els_streetnumber.value =  "6970";
			fm.els_streetname.value =  "Lucas valley rd";
			fm.els_room.value =  "101";
			fm.els_floor.value =  "5";
			fm.els_building.value =  "Jonas";
			setSelects("els_secondarylocation","APT");
			fm.els_unit.value =  "7B";
			fm.els_city.value =  "Nicasio";
			setSelects("els_state", "CA");
			fm.els_zip.value =  "94946";
			if(fm.acknowledge_no_dsl_flg){fm.acknowledge_no_dsl_flg.checked = true;}
		}
	}
}