var messageNumericPositiveEN = "The value must be numeric and positive : ";
var messageNumericPositiveFR = "La valeur doit être numérique et positive : ";

function validatePositifNumericFields(aForm, langId) {
	var valid = true;
	var i = 0;
	var elements = aForm.elements;
	
	while(i < elements.length && valid == true)
	{
		if(elements[i].type == "text")
		{
			if(elements[i].value.length == 0) {
				elements[i].value = "0";
			}

			var aValue = elements[i].value;
	
			if(!aValue.match("^([0-9])+(\.([0-9])+)*$"))
			{
				valid = false;
				if(langId == -1)
					alert('The value must be numeric and positive.');
				else
					alert('La valeur doit être numérique et positive.');
				
				elements[i].focus();
			}
		}
		i++;
	}
	if(valid == true)
		aForm.submit();
}

function checkRequiredFieldsFilled( formName, fields, fieldAlertNames, langId) {
    var fieldArray = fields.split( "~" );
    var fieldAlertArray = fieldAlertNames.split( "~" );
    var returnResult = true;
	var emptyOrDoubleRE = "(^$)|(^([0-9])+(\.([0-9])+)*$)";

    for( var index=0; index < fieldArray.length; index++ ) {
        fieldName = fieldArray[ index ];

      if( fieldName.indexOf( "^" ) != -1 ) {
      	// this means either one of two fields has to be filled ( ft or inches M or cm)
    	var checkFieldsArray = fieldName.split( "^" );
		var firstValue = document.forms[formName][ checkFieldsArray[0] ].value;
		var secondValue = document.forms[formName][ checkFieldsArray[1] ].value;

    	if( firstValue == "" && secondValue == "" ) {
        	alert( (langId == -1 ? "You must fill in field : " : "Vous devez remplir ce champ : ") + fieldAlertArray[index] );
       	 	returnResult = false; 
   	 	} else if ( !firstValue.match(emptyOrDoubleRE) || ((firstValue == 0) && (secondValue == 0)) ) {
			document.forms[formName][ checkFieldsArray[0] ].select();
			document.forms[formName][ checkFieldsArray[0] ].focus();
        	alert( (langId == -1 ? messageNumericPositiveEN : messageNumericPositiveFR) + fieldAlertArray[index] );
			returnResult = false;
		} else if ( !secondValue.match(emptyOrDoubleRE) ) {
			document.forms[formName][ checkFieldsArray[1] ].select();
			document.forms[formName][ checkFieldsArray[1] ].focus();
        	alert( (langId == -1 ? messageNumericPositiveEN : messageNumericPositiveFR) + fieldAlertArray[index] );
			returnResult = false;
		}
   	  } else {
		if( document.forms[formName][ fieldName ].value == "" )
       	{
				alert( (langId == -1 ? "You must fill in field: " : "Vous devez remplir ce champ : ") + fieldAlertArray[index] );
				returnResult = false;
       	} else if(!document.forms[formName][ fieldName ].value.match(emptyOrDoubleRE)) {
			document.forms[formName][ fieldName ].select();
			document.forms[formName][ fieldName ].focus();
        	alert( (langId == -1 ? messageNumericPositiveEN : messageNumericPositiveFR) + fieldAlertArray[index] );
			returnResult = false;
		}
      }
    }
    return returnResult;
}

function validateNumericField(element, langId) {
	var numericRE = "^[0-9]+$";
	
	if(element.value.length == 0) {
		element.value = "0";
	}

	if(!element.value.match(numericRE)) {
		element.select();
		element.focus();
       	alert( (langId == -1 ? messageNumericPositiveEN : messageNumericPositiveFR) );
		return false;
	}

	return true;
}

function validateOtherBasementParameters(formName, langId) {
	var formBasement = document.forms[formName];

	if(!validateNumericField(formBasement.numberOfCorners, langId) || !validateNumericField(formBasement.numberOfDoors, langId) || !validateNumericField(formBasement.numberOfJunctions, langId) || !validateNumericField(formBasement.numberOfWindows, langId)) {
		return false;
	}

	return true;
}

function validateOtherDryWallParameters(formName, langId) {
	var formBasement = document.forms[formName];

	if(!validateNumericField(formBasement.numberWindows, langId) || !validateNumericField(formBasement.numberDoors, langId) || !validateNumericField(formBasement.windowHeight, langId) || !validateNumericField(formBasement.doorHeight, langId) || !validateNumericField(formBasement.windowWidth, langId) || !validateNumericField(formBasement.doorWidth, langId)) {
		return false;
	}

	return true;
}

