/** Useful functions **/
// fix return url to make it absolute path if it's not
function fixRetURL( form ) {
	if( form.retURL.value.indexOf("index.html") == 0 ) {
		form.retURL.value = document.location.host + form.retURL.value;
	}
}

function checkPhone( form ) {
	  
	  if ( ! isNumber( form.npa.value ) ||
	       form.npa.value < 99 || 
	       form.npa.value > 1000 ) {
	    selectElement( form.npa );
	    alert( "Please enter a valid area code." );
	    return( false );
	  }
	  else if ( ! isNumber( form.nxx.value ) ||
	            form.nxx.value < 99 || 
	            form.nxx.value > 1000 ) {
	    selectElement( form.nxx );
	    alert( "Please enter a valid phone number." );
	    return( false );
	  }
	  else if ( ! isNumber( form.xxxx.value ) ||
	            form.xxxx.value.length != 4 ) {
	    selectElement( form.xxxx );
	    alert( "Please enter a valid phone number." );
	    return( false );
	  }
	  else {
	    return( true );
	  }
}

function isNumber( value ) {
	  if ( 1 + ( value - 1 ) == value ) {
	    return( true );
	  }
	  else {
	    return( false );
	  }
}

function autoSkip( start, finish, maxLength ) {
	  // if no text is selected (where possible to sense) and text is at 
	  // or greater than maxLength, then go to next field
	  var selectedTextLength = 0;
	  if ( document.selection && document.selection.createRange ) {
	    var selectedTextRange = document.selection.createRange( );
	    selectedTextLength = selectedTextRange.text.length;
	  }
	  if ( selectedTextLength == 0 && start.value.length >= maxLength ) {
	    selectElement( finish );
	  }
}

function selectElement( element ) {
	  // focus on element and select all text if possible
	  element.focus( );
	  if ( document.selection && document.selection.createRange ) {
	    var range = element.createTextRange( );
	    range.select( );
	  }
}
	
function getCharCount( c, s ){
	var count = 0;
	for( var i=0; i<s.length; i++)
		if( s.charAt(i) == c )
			count ++;
	return count;
}

/* Form Checks */
function checkQuoteForm( ) {
		form = document.quoteForm;
		flag = true;
	
		if( form.product.value == "unselected" || form.product.value.indexOf("----")>-1 || form.product.value == "Data" )
		{
		form.product[0].focus();
			alert( 'Please choose your product interest.' );
		flag = false;	
		}
		else if ( form.full_name.value == "" ) {
		form.full_name.focus( );
		alert( 'Please provide your name.' );
		flag = false;
			}
		else if ( form.email.value == "" ) {
			form.email.focus( );
			alert( 'Please provide your email address.' );
			flag = false;
		}
		else if ( form.company.value == "" ) {
			form.company.focus( );
			alert( 'Please provide your company name.' );
			flag = false;
		}
		else if ( ! checkPhone( form ) ) {
			flag = false;
		}
		else if ( form.street.value == "" ) {
			form.street.focus( );
			alert( 'Please provide your street address.' );
			flag = false;
		}
		else if ( form.zip.value == "" ) {
			form.zip.focus( );
			alert( 'Please provide your zip code.' );
			flag = false;
		}
		
		if( flag ) 
		{
			form.phone.value = form.npa.value + "-" + form.nxx.value + "-" + form.xxxx.value;
			document.getElementById("product_interest").value = form.product.value;
		var splitName = form.full_name.value.split(" ");
				document.getElementById('first_name').value = splitName[0];
		document.getElementById('last_name').value = ((splitName.length == 2) ? splitName[1] : " ");
		// 
		}
	
		fixRetURL( form )
	
		return flag;
}


function checkBigQuoteForm( ) {
	form = document.quoteForm;
	flag = true;

	prod_int = "";
	//SIP
	if( form.unlimitedPlan && form.unlimitedPlan.checked )
		prod_int+="SIP-Unlimited,";
	if( form.meteredPlan && form.meteredPlan.checked )
		prod_int+="SIP-Metered,";
	//Business Internet Access
	if( form.t1 && form.t1.checked )
		prod_int+="Full/Frac T1,";
	if( form.t3 && form.t3.checked )
		prod_int+="DS3/T3,";
	if( form.nxt1 && form.nxt1.checked )
		prod_int+="NxT1,";
	if( form.ethernet && form.ethernet.checked )
		prod_int+="Ethernet,";
	if( form.privatelines && form.privatelines.checked )
		prod_int+="Private Lines,";
	if( form.mpls && form.mpls.checked )
		prod_int+="MPLS/VPN,";
	if( form.colo && form.colo.checked )
		prod_int+="Colocation,";
	if( form.oc3 && form.oc3.checked )
		prod_int+="OC3,";
	//General Data
	if( form.InternetServices && form.InternetServices.checked )
		prod_int+="Internet Services,";
	//Phonebooth
	if( form.phonebooth && form.phonebooth.checked )
		prod_int+="Phonebooth,";
	// General Voice
	if( form.VoiceServices && form.VoiceServices.checked )
		prod_int+="Voice Services,";
	//Boxset  (SHOULD ALWAYS BE THERE)
	if( form.boxsetVol1 && form.boxsetVol1.checked )
		prod_int+="BoxSet-Vol1,";
	if( form.boxsetVol2 && form.boxsetVol2.checked )
		prod_int+="BoxSet-Vol2,";
	if( form.boxsetVol3 && form.boxsetVol3.checked )
		prod_int+="BoxSet-Vol3,";
	if( form.boxsetVol4 && form.unplugged.checked )
		prod_int+="BoxSet-Unplugged,";
	if( form.BoxSet && form.BoxSet.checked )
		prod_int+="BoxSet,"
	//enterprise
	if( form.origination && form.origination.checked )
		prod_int+="Origination,";
	if( form.termination && form.termination.checked )
		prod_int+="Termination,";
			
	if(prod_int == "")
	{
		alert( 'Please choose your product interest.' );
	flag = false;	
	}
	else if ( form.full_name.value == "" ) {
	form.full_name.focus( );
	alert( 'Please provide your name.' );
	flag = false;
		}
	else if ( form.email.value == "" ) {
		form.email.focus( );
		alert( 'Please provide your email address.' );
		flag = false;
	}
	else if ( form.company && form.company.value == "" ) {
		form.company.focus( );
		alert( 'Please provide your company name.' );
		flag = false;
	}
	else if ( ! checkPhone( form ) ) {
		flag = false;
	}
	else if ( form.street.value == "" ) {
		form.street.focus( );
		alert( 'Please provide your street address.' );
		flag = false;
	}
	else if ( form.zip.value == "" ) {
		form.zip.focus( );
		alert( 'Please provide your zip code.' );
		flag = false;
	}
	  
	// assumes position 1 is yes
	if( form.multileOfficeLocations && document.getElementById("multipleOfficeLocations")) {
		if( form.multileOfficeLocations.selectedIndex == 1 ){
			document.getElementById("multipleOfficeLocations").value = "1+";  
		}
		else document.getElementById("multipleOfficeLocations").value = "1";
	}
	
	if( flag ) {
		form.phone.value = form.npa.value + "-" + form.nxx.value + "-" + form.xxxx.value;
		if( getCharCount( ',', prod_int ) > 1 ) {
			prod_int = "Multiple Products";
		}
		document.getElementById("product_interest").value = prod_int;
		var splitName = form.full_name.value.split(" ");
		document.getElementById('first_name').value = splitName[0];
		document.getElementById('last_name').value = ((splitName.length == 2) ? splitName[1] : " "); 
	}
	
	fixRetURL( form )

	return flag;
}

/* Mini Parnter Form */
function checkPartnerForm() {
	form = document.requestForm;
	flag = true;

	if ( form.name.value == "" ) {
		form.name.focus();
		alert( 'You must provide your name.' );
		flag = false;
	}

	else if ( form.email.value == "" ) {
		form.email.focus();
		alert( 'You must provide your email address.' );
		flag = false;
	}

	else if ( form.city.value == "" ) {
		form.city.focus();
		alert( 'You must provide the city.' );
		flag = false;
	}

	else if ( form.state.value == "none" ) {
		form.state.focus();
		alert( 'You must provide the state.' );
		flag = false;
	}

	if( flag ) {
		form.applicantName.value = form.name.value;
		// build and populate "phone" hidden field from phone parts
		var npa = form.npa.value;
		var nxx = form.nxx.value;
		var xxxx = form.xxxx.value;
		form.phone.value = npa + "-" + nxx + "-" + xxxx;
		// build and populate name hidden fields from name field
		var splitName = form.name.value.split(" ");
		if(splitName && splitName.length>1)
			form.first_name.value = splitName[0];
		form.last_name.value = ((splitName.length >1) ? splitName[1] : splitName[0]);
		form.submit( );
	}
}