//begin _service.cfm functions
var dom0 = (document.getElementById) ? 1:0;
var includedFeatures;
var packageFeatures;
var choosenFeatures = 0;
var featureAmount = 0;
var featurePackageChecked = 0;
var productSelected = false;
var defaultCost = 4;  //as of launch date all features $4
var defaultProductFeatureInclude = 2; //as of launch date all non unlimted features included 2 features

var stateArray = new Array( "AL","AK","AZ","AR","CA","CO","CT","DC","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MT","MO","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY");

function calcIncluded( i, cost, isChecked, notAllowedWith, otherName ){ //REMOVED:  packageCost

	//CHECK IF PRODUCT IS SELECTED
	for( var j = 0; j < document.order.p_id.length; j++ ){
		if( document.order.p_id[j].checked ){			
			productSelected = true;
		}
	}

	//ALERT IF PRODUCT NOT SELECTED
	if( isNaN( includedFeatures ) && !productSelected && document.order.includedFeatures.value == 0){
		alert("Please Select Rate Plan");
		document.order.features[i].checked = false;
		return		
	}

	//DO NOT ALLOW FEATURE TO BE CHOOSEN IF FEATURE PACKAGE IS SELECTED
	/*else if( featurePackageChecked == 1 ){
		document.order.features[i].checked = false;
	}*/
		
	if( !isNaN( notAllowedWith ) && isChecked ){
		if( document.order.features[ parseFloat( notAllowedWith ) ].checked == true ){
			alert("This Feature May Not Be Choosen With " + otherName);
			document.order.features[i].checked = false;
			return
		}
	}
	//IF FEATURE IS SELECTED ADD TO FEATURE COUNT AND TOTAL COST
	if( isChecked ){
		if( includedFeatures == undefined ){
			includedFeatures = parseFloat(document.order.includedFeatures.value) + parseFloat(3);
		}

		choosenFeatures = parseFloat(choosenFeatures) + parseFloat(1);

		if( parseFloat(choosenFeatures) > parseFloat(packageFeatures) ){
			featureAmount = parseFloat(featureAmount) + parseFloat(cost);
		}

		if( parseFloat(choosenFeatures) > parseFloat(includedFeatures) && featurePackageChecked == 0 ){
			alert("Your Current Feature Price is $" + featureAmount + ".  The Feature Package may be more Economical");
			return
		}
			
		return
	}
	
	//IF FEATURE IS UNSELECTED SUBTRACT FROM FEATURE COUNT AND TOTAL COST
	else if ( !isChecked ){
		choosenFeatures = parseFloat(choosenFeatures) - parseFloat(1);
		featureAmount = parseFloat(featureAmount) - parseFloat(cost);
	}
		
	return
}

function chkProduct(){
	if( document.order.includedFeatures.value == 'all' ){
		showDiv('none','featuresDiv');
		return
	}
		
}

function checkProductType( choosen, allowed, obj ){
	if( allowed != choosen ){
		alert( "This Service is only allowed for " + allowed + " products" );
		obj.checked = false;
		return
	}
	return
}

function reSetChoosenFeatures( nb ){
	choosenFeatures = nb;
	packageFeatures = parseFloat( defaultProductFeatureInclude );
	featureAmount = ( parseFloat( nb ) - parseFloat( defaultProductFeatureInclude ) ) * parseFloat( defaultCost );
	return
}

function selectAll( ins, isChecked ){
	for( var j = 0; j < document.order.p_id.length; j++ ){
		if( document.order.p_id[j].checked ){
			productSelected = true;
		}
	}
	
	if( isNaN( includedFeatures ) && !productSelected ){
		alert("Please Select Product");
		document.order.features[ins].checked = false;
		return		
	}
	
	if( isChecked ){
		//choosenFeatures = 0;
		//featureAmount = 0;
		featurePackageChecked = 1;
		document.order.isFeaturePackage.value = 1;
		
		//UNCHECK ALL FEATURES
		/*for( var i=0; i < ins; i++){
			document.order.features[i].checked = false;
		}*/
		
		return
	}
	else{
		featurePackageChecked = 0;
		document.order.isFeaturePackage.value = 0;
		return
	}
	
	return		
}

function setIncluded( num ){
	var numSelected;

	productSelected = true;
	numSelected = 0;

	if( num == ''){
		//UNCHECK FEATURE PACKAGE ( MUST BE LAST CHECKBOX )
		document.order.features[ parseFloat(document.order.features.length) - parseFloat(1) ].checked = false;
		
		//SET BIT INDICATING NO CHANGE FOR ANY FEATURE
		featurePackageChecked = 1;
		
		//UNSEELECT ALL FEATURES
		//for( var i=0; i < document.order.features.length; i++ ){
		//	document.order.features[i].checked = false;
		//}
		
		//HIDE FEATURE PACKAGE CHECKBOX
		showDiv('none','featuresDiv');
		document.order.includedFeatures.value = 'all';
		return
	}
	
	else{
		//SET BIT INDICATING CHANGE FOR FEATURES
		featurePackageChecked = 0;
		
		//SHOW FEATURE PACKAGE DIV
		showDiv('block','featuresDiv');
		
		document.order.includedFeatures.value = num;
		includedFeatures = parseFloat(num) + parseFloat(3);
		packageFeatures = parseFloat(num);
		
		for( var i=0; i < document.order.features.length; i++ ){
			if( document.order.features[i].checked == true){
				numSelected = parseFloat( numSelected ) + parseFloat( 1 );
			}
		}

		if( numSelected > includedFeatures ){
			featureAmount = ( parseFloat(numSelected) - parseFloat(num) ) * parseFloat( defaultCost );
			alert("Your Current Feature Price is $" + featureAmount + ".  The Feature Package may be more Economical");
		}
				
		return
	}
	
	return
}

function showDiv(func, theSubDiv){
	//var theSubDiv='featuresDiv';
	if (dom0) {
		document.getElementById(theSubDiv).style.display=func;
	}
}
//end _service.cfm functions

function alertCert(obj){
	alert("You Must Agree to all Condidtions");
}

function changeWinStat( msg ){
	window.parent.status = msg;
	return true
}

function checkAllowedService( obj, i, imsg, j, jmsg ){
	if( obj.checked == true ){
		if( document.order.services[i].checked == true ){
			obj.checked = false;
			alert("This Service is not allowed with " + imsg);
			return
		}
		
		if( !isNaN(j) ){
			if( document.order.services[j].checked == true ){
				obj.checked = false;
				alert("This Service is not allowed with " + jmsg);
				return
			}
		}
	}
}

function checkAvailbility( theForm ){
	if( theForm.npa.value.length == 0 || theForm.nxx.value.length == 0){
		alert("Please Enter the First Six Digits of your Telephone Number");
		theForm.npa.focus();
		return
	}
	
	theForm.submit();
	
	return
}
	
function chkEmail( lemail, nxt ){
	re = /(\S+\@\S+\.\S+)/i;
	if( !re.exec(lemail.value) ){
		alert("Email Must Be in [Username]@[Domain Name].XXX Format");
		lemail.focus();
		return
	}
	//nxt.focus();
	return
}

function chkEqualValue(obj1, obj2, name){
	if( obj1.value != obj2.value ){
		alert( name + " Values do not Match");
		//obj1.value = '';
		obj2.value = '';
		//obj2.focus();
		return
	}
	
	return
}

function chkLoaPhone( form ){
	if( form.phone1.value.length != 3 ){
		alert("Please Enter Phone Number")
		form.phone1.focus();
		return false
	}
	if( form.phone2.value.length != 3 ){
		alert("Please Enter Phone Number")
		form.phone2.focus();
		return false
	}
	if( form.phone3.value.length != 4 ){
		alert("Please Enter Phone Number")
		form.phone3.focus();
		return false
	}
	
	return true
}

function chkLoaSig( form ){
	if( form.signiture.value.length == 0 ){
		alert("Please Sign Authorization");
		form.signiture.focus();
		return false
	}
	
	return true
}

function chkPhoneValue(obj, nxt, maxLen){
	if( isNaN(obj.value) ){
		alert("Please Enter Numeric Value");
		obj.value = "";
		return
	}
	else if( (obj.value.length == maxLen) && (nxt != '') ) {
		nxt.focus();
		return
	}
}

function checkNumber( obj ){
	var val, curChar;
	val = obj.value;
	
	for( var i=0; i<val.length; i++ ){
		curChar= val.substring(i, i+1);
		
		if( isNaN( curChar ) || curChar == ' ' ){
			alert("Please Enter Numeric Value");
			obj.value = val.substring( 0, i );
			obj.focus();
			return
		}
	}
	return
}

function checkNumericMoveNext( obj, len, nxt ){
	var val, curChar;
	val = obj.value;
	
	for( var i=0; i<val.length; i++ ){
		curChar= val.substring(i, i+1);
		
		if( isNaN( curChar ) || curChar == ' ' ){
			alert("Please Enter Numeric Value");
			obj.value = val.substring( 0, i );
			obj.focus();
			return
		}
	}
	
	if( obj.value.length == len ){
		nxt.focus();
		return
	}
	
	return
}

function chooseProduct(qs){
	document.location = 'productDetail.cfm?' + qs;
	return
}

function completeOrder(theForm){
	//theForm.action = 'loa.cfm';
	theForm.action = 'pro_loa.cfm';
	theForm.submit();
	return
}

function editOrder(theForm){
	theForm.action = 'results.cfm';
	theForm.submit();
	return
}

function infoRequestFormSub( theForm ){
	if( infoRequestFormValidation( theForm ) ){
		theForm.submit()
		return
	}
	return
}

function infoRequestFormValidation( form ){
	return (
			checkString( form.elements["ir_name"], "Name" ) &&
			checkString( form.elements["ir_email"], "Email" ) &&
			checkString( form.elements["ir_telephone"], "Phone" ) &&
			checkString( form.elements["ir_note"], "Note" )
		)
}

function isValidState( obj ){
	for( i=0; i<stateArray.length; i++ ){
		if( obj.value.toLowerCase() == stateArray[i].toLowerCase() ){
			return true
		}
	}
	
	alert("Please enter Valid State");
	obj.focus();
	
	return false
}

function limitTextLength( obj, maxLen ){
	var str;
	if( obj.value.length > maxLen ){
		str = obj.value;
		obj.value = str.substring( 0, maxLen-1 );
		return
	}
	return
}

function loaFormChkAdditionalNumbers( obj ){
	var lastChar, addNum;
	
	carReg = new RegExp(/[\r\n]/g);
	
	addNum = trim(obj.value);
	lastChar = addNum.substring( addNum.length - 1, addNum.length )
	
	if( carReg.test(lastChar) ){ 
		obj.value = obj.value.replace(carReg,"");

	}
	
	if( lastChar != "," && lastChar != "(" && lastChar != ")" && lastChar != "-" && isNaN(lastChar) ){
		alert("Please Enter Numeric Phone Number");
		obj.value = addNum.substring( 0, addNum.length - 1);
		return
	}
	return
}

function loaFormCheckCertify( form ){
	if ( form.tollCertify[1].checked || form.longCertify[1].checked ){ //|| form.localCertify[1].checked ){
		alert("You Must Agree to all Condidtions");
		return false
	}
	
	return true
}

function loaFormValidation( form ){
	return(
		checkString( form.elements["sb_fname"], "First Name" ) &&
		checkString( form.elements["sb_lname"], "Last Name" ) &&
		checkString( form.elements["sb_address"], "Address" ) &&
		checkString( form.elements["sb_city"], "City" ) &&
		checkString( form.elements["sb_state"], "State" ) &&
		checkString( form.elements["sb_postal"], "Postal" ) &&
		checkString( form.elements["sb_phone"], "Phone" ) &&
		checkString( form.elements["sb_email"], "Email" )
		)
}

function makeLoaDate( form ){
	form.o_date.value = form.o_dateMonth.value + '/' + form.o_dateDay.value + '/' + form.o_dateYear.value
	return
}

function promoDetail( qs ){
	window.open('promo.cfm?' + qs,'promoDetail','top=50,left=175,height=600,width=750,location=0,scrollbars=1,resizable=1,menu=0,status=0');
	return
}

function setPaymentType( obj, form ){
	if( obj == 'Use Existing Method' && form.sb_bestWebAccount.value.length == 0){
		showDiv( 'none', 'creditCardDiv');
		alert("Please Enter Best Web Account Number");
		form.sb_bestWebAccount.focus();
		return
	}
	else if( obj == 'Credit Card' ){
		showDiv( 'block', 'creditCardDiv');
		return
	}

	showDiv( 'none', 'creditCardDiv');
	return
}

function showFeatureDetail( qs ){
	window.open('product_guide.cfm?' + qs,'productGuide','top=50,left=175,height=600,width=750,location=0,scrollbars=1,resizable=1,menu=0,status=0');
	return
}

function signLoa( theForm ){
	if( chkLoaSig( theForm ) && chkLoaPhone( theForm ) ){
		theForm.submit();
		return
	}
	return
}

function subInfoFormSub( theForm ){
	if( subInfoValidateForm( theForm ) && subInfoValidatePaymentOption( theForm ) ){
		theForm.submit();
		return
	}
	
	return
}

function subInfoValidateForm( form ){
	return(
			checkString( form.elements["sb_fname"], "First Name" ) &&
			checkString( form.elements["sb_lname"], "Last Name" ) &&
			checkString( form.elements["sb_address"], "Address" ) &&
			checkString( form.elements["sb_city"], "City" ) &&
			checkString( form.elements["sb_state"], "State" ) &&
			checkString( form.elements["sb_postal"], "Postal" ) &&
			checkString( form.elements["npa"], "Phone" ) &&
			checkString( form.elements["nxx"], "Phone" ) &&
			checkString( form.elements["phone"], "Phone" ) &&
			checkString( form.elements["sb_email"], "Email" ) &&
			checkString( form.elements["vEmail"], "Verify Email" )
		)
}

function subInfoValidatePaymentOption( form ){
	var isChecked;
	for( var i=0; i < form.sb_preferredPaymentMethod.length; i++ ){
		if( form.sb_preferredPaymentMethod[i].checked == true ){
			isChecked = true;
		}
	}
	
	if( !isChecked ){
		alert("Please Select Payment Method");
		return false
	}
	
	//Use Existing Method
	if( form.sb_preferredPaymentMethod[0].checked == true ){
		form.sb_cCardType.value = '';
		form.sb_cCardNumber.value = '';
		form.cCardMonth.value = '';
		form.cCardYear.value = '';
		return( checkString(form.elements["sb_bestWebAccount"],"Best Web Account") );
	}
	//Check Remit
	if( form.sb_preferredPaymentMethod[1].checked == true ){
		form.sb_cCardType.value = '';
		form.sb_cCardNumber.value = '';
		form.cCardMonth.value = '';
		form.cCardYear.value = '';
		return true
	}
	//Credit Card
	if( form.sb_preferredPaymentMethod[2].checked == true ){
		return( 
			checkString( form.elements["sb_cCardType"],"Credit Card Type" ) &&
			checkString( form.elements["sb_cCardNumber"],"Credit Card Number" ) &&
			checkString( form.elements["cCardMonth"],"Credit Card Expiration Date" ) &&
			checkString( form.elements["cCardYear"],"Credit Card Expiration Date" )
		)
	}
}

function validateForm( arg ){
	//ARGUMENTS PASSED IN AS FORM NAME, FORM OBJECTS TO BE VALIDATED
	//FORM OBJECTS TO BE VALIDATED PASSED IN AS "OBJECTNAME|ALERT MESSAGE"
	for ( var i = 1; i < arguments.length; i++ ){
		var cur;
		cur = arguments[i].split('|');
		
		if( eval( arguments[0] + "." + cur[0] + ".value.length") == 0 ){
			alert( cur[1] );
			eval( arguments[0] + "." + cur[0] + ".focus()");
			return
		}
	}
	eval( arguments[0] + ".submit()" );
	return
}
