function MotorShaftChange(the_obj){
	the_name = the_obj.name;
	the_value = the_obj.value;
//	alert(the_name + ' - ' + the_value);
	if ((the_name == 'cboMotorShaft')) {
		if (the_value == 'Custom'){
			document.myform.cboMotorShaftCustom.disabled = false;
			document.myform.cboMotorBoreUnits.disabled = false;
			document.myform.cboMotorShaftCustom.style.backgroundColor = "#FFFFFF";	
		}
		if (the_value != 'Custom'){
			document.myform.cboMotorShaftCustom.disabled = true;
			document.myform.cboMotorBoreUnits.disabled = true;
			document.myform.cboMotorShaftCustom.style.backgroundColor = "#999999";	
		}
	}
	
	
	if ((the_name == 'cboDriveShaft')) {
		if (the_value == 'Custom'){
			document.myform.cboDriveBoreUnits.disabled = false;
			document.myform.txtDriveBoreUnits.disabled = false;
			document.myform.cboDriveBoreUnits.style.backgroundColor = "#FFFFFF";	
		}
		if (the_value != 'Custom'){
			document.myform.cboDriveBoreUnits.disabled = true;
			document.myform.txtDriveBoreUnits.disabled = true;
			document.myform.cboDriveBoreUnits.style.backgroundColor = "#999999";	
		}
	}
	
	
}

function PopWindow(url) {
	a = document.myform.model_num.value;
	b = document.myform.list_price.value;
	c = document.myform.shipping.value;
	size  = "width=550, height=500";
	sList = window.open(url + "?model_num=" + a + "&list_price=" + b + "&shipping=" + c, "list", size);
}

function IE_FIX_FOCUS_SAVE(){
	Validate(document.myform.shaft_length);
	Validate(document.myform.motor_power);
	Validate(document.myform.motor_rpm);
	Validate(document.myform.fan_blades);
	Validate(document.myform.fan_speed);
}

function Validate(the_obj, second_value){
	
	field_name  = the_obj.name;
	field_value = the_obj.value;
	
	the_units = document.myform.cboDBSEUnits.value;
	if (the_units == 'in') {
		if (field_name == 'shaft_length') {
			if (!IsNumeric(field_value)){
				alert('Shaft Length must be a number between 1 and 300.');
				the_obj.value="";
				return;
			}
			if (field_value>0){
				if ((field_value <= 0) || (field_value > 300)){
					alert('Shaft Length must be a number between 1 and 300.');
					the_obj.value="";
					return;
				} else {
					DeleteRow("SHAFT LENGTH");
				}
			}
		}
	}else{
		if (field_name == 'shaft_length') {
			if (!IsNumeric(field_value)){
				alert('Shaft Length must be a number between 1 and 5000.');
				the_obj.value="";
				return;
			}
			if (field_value>0){
				if ((field_value <= 0) || (field_value > 5000)){
					alert('Shaft Length must be a number between 1 and 5000.');
					the_obj.value="";
					return;
				} else {
					DeleteRow("SHAFT LENGTH");
				}
			}
		}
	}
	if (field_name == 'motor_power') {
		if (!IsNumeric(field_value)){
			alert('Motor Power must be a number between 1 and 450.');
			the_obj.value="";
		}
		if (field_value>0){
			if ((field_value <= 0) || (field_value > 450)){
				alert('Motor Power must be a number between 1 and 450.');
				the_obj.value="";
				return;
			} else {
				DeleteRow("MOTOR POWER");
			}
		}
	}
	if (field_name == 'motor_rpm') {
		if (!IsNumeric(field_value)){
			alert("Motor RPM's must be a number.");
			the_obj.value="";
		}
		if (field_value>0){
			if ((field_value < 100) || (field_value > 5000)){
				alert("Motor RPM's must be a number between 100 and 5000.");
				the_obj.value="";
				return;
			} else {
				DeleteRow("MOTOR SPEED");
			}
		}
	}
	if (field_name == 'fan_blades') {
		if (!IsNumeric(field_value)){
			alert('Fan blades must be a number between 2 and 20.');
			the_obj.value="";
		}
		if (field_value>0){
			if ((field_value < 2) || (field_value > 20)){
				alert('Fan blades must be a number between 2 and 20.');
				the_obj.value="";
				return;
			} else {
				DeleteRow("# OF FAN BLADES");
			}
		}
	}
	if (field_name == 'fan_speed') {
		if (!IsNumeric(field_value)){
			alert('Fan speed must be a number between 1 and 1000.');
			the_obj.value="";
		}
		if (field_value>0){
			if ((field_value < 1) || (field_value > 1000)){
				alert('Fan speed must be a number between 1 and 1000.');
				the_obj.value="";
				return;
			} else {
				DeleteRow("FAN SPEED");
			}
		}
		asd = second_value / field_value;
		if (asd > 0){
			document.myform.fan_ratio.value = asd.toFixed(3);
		}
	}
	if (field_name == 'fan_ratio') {
		asd =  second_value / field_value;
		if (asd > 0){
			if ((document.myform.fan_speed.value == '') && (document.myform.motor_rpm.value != '')){
				document.myform.fan_speed.value = asd.toFixed(0);
			}
		}
	}
	if (field_name == 'txtSpeedRangeLow') {
		if (!IsNumeric(field_value)){
			alert('Speed range must be a number.');
			the_obj.value="";
		}
		if (field_value>0){
			if ((field_value <= 0) || (field_value > 5000)){
				alert('Shaft Length must be a number between 1 and 5000.');
				the_obj.value="";
				return;
			}
		}
	}
	if (field_name == 'cboMotorShaftCustom') {
		if (!IsNumeric(field_value)){
			alert('Custom motor shaft must be a number.');
			the_obj.value="";
		}
		if (field_value>0){
			if ((field_value <= 0) || (field_value > 5000)){
				alert('Shaft Length must be a number between 1 and 5000.');
				the_obj.value="";
				return;
			}
		}
	}
	if (field_name == 'txtDriveBoreUnits') {
		if (!IsNumeric(field_value)){
			alert('Custom Gear Drive input shaft must be a number.');
			the_obj.value="";
		}
		if (field_value>0){
			if ((field_value <= 0) || (field_value > 5000)){
				alert('Shaft Length must be a number between 1 and 5000.');
				the_obj.value="";
				return;
			}
		}
	}
	if (field_name == 'num_starts') {
		if (!IsNumeric(field_value)){
			alert('Number of starts per day must be a number.');
			the_obj.value="";
		}
		if (field_value>0){
			if ((field_value <= 0) || (field_value > 5000)){
				alert('Shaft Length must be a number between 1 and 5000.');
				the_obj.value="";
				return;
			}
		}
	}
	if (field_name == 'num_driveshafts') {
		if (!IsNumeric(field_value)){
			alert('Number of driveshafts must be a number.');
			the_obj.value="";
		}
		if (field_value>0){
			if ((field_value <= 0) || (field_value > 5000)){
				alert('Shaft Length must be a number between 1 and 5000.');
				the_obj.value="";
				return;
			}
		}
	}
}

function extractNumber(obj, decimalPlaces, allowNegative){
	var temp = obj.value;
	
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\.?[0-9]*';
	}
	reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '-' + temp;
	}
	
	if (decimalPlaces != 0) {
		var reg3 = /\./g;
		var reg3Array = reg3.exec(temp);
		if (reg3Array != null) {
			// keep only first occurrence of .
			//  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
		}
	}
	
	obj.value = temp;
}

function blockNonNumbers(obj, e, allowDecimal, allowNegative) {
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	

	if (key == 13 || isCtrl)
	{
		switch (obj.name){
		case "shaft_length":
			document.myform.cboDBSEUnits.focus();
			break;
		case "cboDBSEUnits":
			document.myform.motor_power.focus();
			break;
		case "motor_power":
			document.myform.cboMotorPowerUnits.focus();
			break;
		case "cboMotorPowerUnits":
			document.myform.cboSpeedType.focus();
			break;
		case "cboSpeedType":
			document.myform.motor_rpm.focus();
			break;
		case "motor_rpm":
			if (document.myform.txtSpeedRangeLow.disabled == false)
				document.myform.txtSpeedRangeLow.focus();
			else
				document.myform.fan_blades.focus();
			break;
		case "txtSpeedRangeLow":
			document.myform.fan_blades.focus();
			break;
		case "fan_blades":
			document.myform.fan_speed.focus();
			break;
		case "fan_speed":
			document.myform.fan_ratio.focus();
			break;
		case "fan_ratio":
			document.myform.service_factor.focus();
			break;
		case "service_factor":
			document.myform.txtCustName.focus();
			break;
			
		}		
		return false;
	}
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
	
	return isFirstN || isFirstD || reg.test(keychar);
}

function MakeEnterTab(obj, e, allowDecimal, allowNegative) {
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	keychar = String.fromCharCode(key);
	if (key == 13 || isCtrl)
	{
		switch (obj.name){
		case "txtCustName":
			document.myform.txtLocation.focus();
			break;
		case "txtLocation":
			document.myform.txtPhoneNo.focus();
			break;
		case "txtPhoneNo":
			document.myform.txtCustPO.focus();
			break;
		case "txtCustPO":
			document.myform.num_driveshafts.focus();
			break;
		case "num_driveshafts":
			document.myform.cboMotorShaft.focus();
			break;
		case "cboMotorShaft":
			document.myform.cboMotorShaftCustom.focus();
			break;
		case "cboMotorShaftCustom":
			document.myform.cboMotorBoreUnits.focus();
			break;
		case "cboMotorBoreUnits":
			document.myform.cboMotorKW.focus();
			break;
		case "cboMotorKW":
			document.myform.cboDriveShaft.focus();
			break;
		case "cboDriveShaft":
			document.myform.cboDriveBoreUnits.focus();
			break;
		case "cboDriveBoreUnits":
			document.myform.txtDriveBoreUnits.focus();
			break;
		case "txtDriveBoreUnits":
			document.myform.cboDriveKW.focus();
			break;
		case "cboDriveKW":
			document.myform.notes5.focus();
			break;
		case "notes5":
			document.myform.next.focus();
			break;
		}		
		return false;
	}
	if (key == 8 || isCtrl)
	{
		return true;
	}

	return true;
	

}

function FormFix(the_obj){
	field_name  = the_obj.name;
	field_value = the_obj.value;
	
	//alert(field_value);
	
	if (field_value == "Single"){
		document.myform.txtSpeedRangeLow.value = "";	
		document.myform.txtSpeedRangeLow.disabled = true;	
		document.myform.txtSpeedRangeLow.style.backgroundColor = "#999999";	
	}
	if (field_value == "Two Speed"){
		document.myform.txtSpeedRangeLow.disabled = false;	
		document.myform.txtSpeedRangeLow.style.backgroundColor = "#FFFFFF";	
	}
	if (field_value == "Variable"){
		document.myform.txtSpeedRangeLow.disabled = false;	
		document.myform.txtSpeedRangeLow.style.backgroundColor = "#FFFFFF";	
	}
	
}

function isFunction(a) {
	return typeof a == 'function';
}
 
function isNull(a){
	return typeof a == 'object' && !a;
}
 
function isObject(a) {
	return (typeof a == 'object' && !!a) || isFunction(a);
}

function DeleteRow(the_row_text){
	row = 0;
	err_table = document.getElementById('errors')
	
	while (isObject(err_table.rows[row]))	{
		
		tmp1 = err_table;
		tmp1 = err_table.rows[row];
		tmp1 = err_table.rows[row].cells[0];
		tmp1 = err_table.rows[row].cells[0].innerHTML;
		
		tmp2 = tmp1.match(the_row_text);
		tmp3 = 0;
		if (!isNull(tmp2)) {
			tmp3 = tmp2.length;
		}
		if (tmp3 > 0) {
			err_table.deleteRow(row);
		}
		row++;
	}
}

function DeleteRowFireFox(the_row_text){
	for (row=0; row<10; row++)	{
		
		tmp1 = document.getElementById('errors').rows[row].cells[0].innerHTML;
		tmp2 = tmp1.match(the_row_text);
		tmp3 = 0;
		if (!isNull(tmp2)) {
			tmp3 = tmp2.length;
		}
		if (tmp3 > 0) {
			document.getElementById('errors').deleteRow(row);
		}
	}
}

function IsNumeric(sText) {
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) {
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }