//BEGIN ORDER FORM 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
		if( !isNaN( notAllowedWith ) && isChecked ){
			if( document.optionsForm.features[ parseFloat( notAllowedWith ) ].checked == true ){
				alert("This Feature May Not Be Choosen With " + otherName);
				document.optionsForm.features[i].checked = false;
				return
			}
		}

		//IF FEATURE IS SELECTED ADD TO FEATURE COUNT AND TOTAL COST
		if( isChecked ){
			if( includedFeatures == undefined ){
				includedFeatures = parseFloat(document.optionsForm.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("You 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);
			if( parseFloat(featureAmount) > 0 ){
				featureAmount = parseFloat(featureAmount) - parseFloat(cost);
			}
		}
			
		return
	}
	
	function checkAllowedService( obj, i, imsg, j, jmsg ){
		if( obj.checked == true ){
			if( document.optionsForm.services[i].checked == true ){
				obj.checked = false;
				alert("This Service is not allowed with " + imsg);
				return
			}
			
			if( !isNaN(j) ){
				if( document.optionsForm.services[j].checked == true ){
					obj.checked = false;
					alert("This Service is not allowed with " + jmsg);
					return
				}
			}
		}
	}
	
	function checkProductType( choosen, allowed, obj ){
		if( allowed.toLowerCase() != choosen.toLowerCase() ){
			alert( "This Service is only allowed for " + allowed + " products" );
			obj.checked = false;
			return
		}
		return
	}

	function raiseToZero( num ){
		num = num < 0 ? 0 : num;

		return num
	}
		
	function reSetChoosenFeatures( nb ){
		choosenFeatures = nb;
		packageFeatures = parseFloat( defaultProductFeatureInclude );
		featureAmount = raiseToZero( parseFloat( nb ) - parseFloat( defaultProductFeatureInclude ) ) * parseFloat( defaultCost );
		return
	}
	
	function selectAll( ins, isChecked ){
		for( var j = 0; j < document.optionsForm.p_id.length; j++ ){
			if( document.optionsForm.p_id[j].checked ){
				productSelected = true;
			}
		}
		
		if( isNaN( includedFeatures ) && !productSelected ){
			alert("Please Select Product");
			document.optionsForm.features[ins].checked = false;
			return		
		}
		
		if( isChecked ){
			//choosenFeatures = 0;
			//featureAmount = 0;
			featurePackageChecked = 1;
			document.optionsForm.isFeaturePackage.value = 1;
			
			//UNCHECK ALL FEATURES
			/*for( var i=0; i < ins; i++){
				document.optionsForm.features[i].checked = false;
			}*/
			
			return
		}
		else{
			featurePackageChecked = 0;
			document.optionsForm.isFeaturePackage.value = 0;
			return
		}
		
		return		
	}
	
	function setIncluded( num ){
	
		var numSelected;
	
		productSelected = true;
		numSelected = 0;
	
		if( num == ''){
			//UNCHECK FEATURE PACKAGE ( MUST BE LAST CHECKBOX )
			document.optionsForm.features[ parseFloat(document.optionsForm.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.optionsForm.features.length; i++ ){
			//	document.optionsForm.features[i].checked = false;
			//}
			
			document.optionsForm.includedFeatures.value = 'all';
			return
		}
		
		else{
			//SET BIT INDICATING CHANGE FOR FEATURES
			featurePackageChecked = 0;
			
			document.optionsForm.includedFeatures.value = num;
			includedFeatures = parseFloat(num) + parseFloat(3);
			packageFeatures = parseFloat(num);
			
			for( var i=0; i < document.optionsForm.features.length; i++ ){
				if( document.optionsForm.features[i].checked == true){
					numSelected = parseFloat( numSelected ) + parseFloat( 1 );
				}
			}
	
			if( numSelected > includedFeatures ){
				featureAmount = raiseToZero( parseFloat(numSelected) - parseFloat(num) ) * parseFloat( defaultCost );
				alert("You Current Feature Price is $" + featureAmount + ".  The Feature Package may be more Economical");
			}
					
			return
		}
		
		return
	}
//	END ORDER FORM FUNCTIONS

function checkEmail( lemail ){
	re = /(\S+\@\S+\.\S+)/i;
	if( !re.exec(lemail.value) ){
		alert("Email Must Be in [Username]@[Domain Name].XXX Format");
		lemail.focus();
		return false
	}
	return true
}

function checkNpaNxx( obj, field ){
	if( obj.value.length != 3 ){
		alert( "Please enter a value into the " + field + " field." );
		obj.focus();
		return false
	}
	return true
}

function checkPhone( obj, field, len ){
	if( obj.value.length != len ){
		alert( "Please enter a value into the " + field + " field." );
		obj.focus();
		return false
	}
	return true
}

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 checkNumeric( obj, allowChar ){
	var val, curChar;
	val = obj.value;
	
	for( var i=0; i<val.length; i++ ){
		curChar= val.substring(i, i+1);
		
		if( ( isNaN( curChar ) || curChar == ' ' ) && curChar != allowChar){
			alert("Please Enter Numeric Value");
			obj.value = val.substring( 0, i );
			obj.focus();
			return
		}
	}
	return
}

function checkNumeric( obj, allowChar, allowChar2 ){
	var val, curChar;
	val = obj.value;
	
	for( var i=0; i<val.length; i++ ){
		curChar= val.substring(i, i+1);
		
		if( ( isNaN( curChar ) || curChar == ' ' ) && curChar != allowChar && curChar != allowChar2 ){
			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 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 ){
		alert("Please limit to " + maxLen + " characters.");
		str = obj.value;
		obj.value = str.substring( 0, maxLen-1 );
		return
	}
	return
}

function showFeatureDetail( qs ){
	window.open('featureGuide.cfm?' + qs,'featureGuide','top=50,left=175,height=600,width=900,location=0,scrollbars=1,resizable=1,menu=0,status=0');
	return
}