//(c) Anite Travel Systems 2002
var msValid_Value;
var msValid_Result;
var mnValid_Result = new Number;

function gbValidStringOnSubmit(ainputControl, abMandatory, asFieldName) {
	msValid_Value = ainputControl.value;
	while (msValid_Value.indexOf(" ") != -1) {msValid_Value = msValid_Value.replace(" ","");}
	if (msValid_Value == "") {
		if (abMandatory == false) return(true);
		errorMessage(asFieldName + " (cannot be blank)<br>", ainputControl.id);
		return(false);
	}
	return(true);
}

function gbValidIntegerOnSubmit(ainputControl, abMandatory, asFieldName, anMinValue, anMaxValue) {
	msValid_Value = ainputControl.value;
	if (msValid_Value == "") {
		if (abMandatory == false) return(true);
		errorMessage(asFieldName + " (must contain a whole number)<br>", ainputControl.id);
		return(false);
	}
	msValid_Result = gsValidAsNumber("I", msValid_Value);
	if (msValid_Result == "") {
		errorMessage(asFieldName + " (" + msValid_Value + " is not a whole number)<br>", ainputControl.id);
		return(false);
	} else  {
		mnValid_Result = Math.round(msValid_Result);
		if (mnValid_Result < anMinValue) {
			errorMessage(asFieldName + " (cannot be less than " + anMinValue + ")<br>", ainputControl.id);
			return(false);
		}
		if (mnValid_Result > anMaxValue) {
			errorMessage(asFieldName + " (cannot be greater than than " + anMaxValue + ")<br>", ainputControl.id);
			return(false);
		}
		ainputControl.value = msValid_Result;
		return(true);
	}
}

function gbValidNumberOnSubmit(ainputControl, abMandatory, asFieldName, anDecimalPlaces, anMinValue, anMaxValue) {
	msValid_Value = ainputControl.value;
	if (msValid_Value == "") {
		if (abMandatory == false) return(true);
		errorMessage(asFieldName + " (must contain a number with " + anDecimalPlaces + " decimal places)<br>" , ainputControl.id);
		return(false);
	}
	msValid_Result = gsValidAsNumber("N15-" + anDecimalPlaces, msValid_Value);
	if (msValid_Result == "") {
		errorMessage(asFieldName + " (must contain a number with " + anDecimalPlaces + " decimal places)<br>", ainputControl.id);
		return(false);
	} else {
		mnValid_Result = Math.round(msValid_Result * Math.pow(10, anDecimalPlaces)) / Math.pow(10, anDecimalPlaces);
		if (mnValid_Result < anMinValue) {
			errorMessage(asFieldName + " (cannot be less than " + anMinValue + ")<br>", ainputControl.id);
			return(false);
		}
		if (mnValid_Result > anMaxValue) {
			errorMessage(asFieldName + " (cannot be greater than than " + anMaxValue + ")<br>", ainputControl.id);
			return(false);
		}
		ainputControl.value = msValid_Result;
		return(true);
	}
}

function gbValidTimeOnSubmit(ainputControl, abMandatory, asFieldName) {
	msValid_Value = ainputControl.value;
	if (msValid_Value == "") {
		if (abMandatory == false) return(true);
		errorMessage(asFieldName + " (must contain a time (hh:mm))<br>" , ainputControl.id);
		return(false);
	}
	msValid_Result = gsValidValidateTime(msValid_Value);
	if (msValid_Result == "") {
		errorMessage(asFieldName + " (is not a time (hh:mm))<br>" , ainputControl.id);
		return(false);
	} else {
		ainputControl.value = msValid_Result;
		return(true);
	}
}

function gsValidAsNumber (avType, avNumber) {
	if (avType == "I") {
		if (avNumber == parseInt(avNumber, 10)) return(avNumber);
		else return("");
	}
	if (isNaN(avNumber)) return("");
	var NumVal = new Number(avNumber);
	var RetVal = new String();
	if (avType.indexOf('-') == -1)  {
		if (avType == '%')  {
			NumVal = Math.round(NumVal);
			if (NumVal < 0) NumVal = 0;
			if (NumVal > 100) NumVal = 100;
			RetVal = String(NumVal);
		} else {
			NumVal = Math.round(NumVal);
			if (NumVal >= Math.pow(10, avType)) NumVal = Math.pow(10, avType) - 1;
			RetVal = String(NumVal);
		}
	} else  {
		var IntegerPlaces = new Number(avType.substr(0, avType.indexOf('-')));
		var DecimalPlaces = new Number(avType.substr(avType.indexOf('-') + 1));
		NumVal = Math.round(Math.ceil(NumVal * Math.pow(10, DecimalPlaces))) / Math.pow(10, DecimalPlaces);
		RetVal = String(NumVal);
		if (RetVal.indexOf('.') == -1) RetVal += '.';
		if (RetVal.substring(0, RetVal.indexOf('.')).length > IntegerPlaces) return('');
		while (RetVal.substr(RetVal.indexOf('.') + 1).length < DecimalPlaces) {RetVal += '0';}
	}
	return(RetVal);
}

function gdValidDate(asField, asErrMsg, adMinDate) {
	if (typeof(adMinDate) == "undefined") adMinDate = null;
	var lsVDate = document.getElementById(asField + '_DAY').value + "-" + document.getElementById(asField + '_MONTH').value;
	for (i=0;i<=11;i++){if(MONTH_NAMES_SHORT[i] == lsVDate.substr(3,3)) {month=i;break;}}
	var ldVDate = new Date(lsVDate.substr(7,4), month, lsVDate.substr(0,2));
	if ((ldVDate.getFullYear()!=lsVDate.substr(7,4))||(ldVDate.getMonth()!=month)||(ldVDate.getDate()!=lsVDate.substr(0,2))) {
		errorMessage(asErrMsg + "<br/>", asField + "_DAY");return null;
	} else if (adMinDate == null) {
		return ldVDate;
	} else if (ldVDate < adMinDate) {
		var lsDayStr = formatDate(ldVDate,"dd")+"-"+formatDate(ldVDate,"NNN")+"-"+formatDate(ldVDate,"yyyy")
		errorMessage(asErrMsg + "(must be after " + lsDayStr + ")<br/>", asField + "_DAY");return ldVDate;
	}
}

function gsValidValidateTime(asTime) {
	var tempStr = String(asTime);
	var tempStr2 = String(asTime);
	if (tempStr.length == 4) {tempStr = tempStr2.substring(0, 2) + ":" + tempStr2.charAt(2) + tempStr2.charAt(3);}
	dateArray = gaValidSplitString(tempStr, ":");
	if (dateArray.length != 2) return("");
	if (isNaN(dateArray[0])) return("");
	if (isNaN(dateArray[1])) return("");
	var lnElement = new Number;
	lnElement = parseInt(dateArray[0], 10);
	if (lnElement < 0 || lnElement > 23) return("");
	if (lnElement < 10 ) tempStr = "0" + lnElement + ":"; else tempStr = lnElement + ":";
	lnElement = parseInt(dateArray[1], 10);
	if (lnElement < 0 || lnElement > 59) return("");
	if (lnElement < 10 ) tempStr += "0" + lnElement; else tempStr += lnElement;
	return(tempStr);
}

function gbValidNumber(inString) {
	var tempNum = new Number(inString);
	if (isNaN(tempNum)) return(false);
	else return(true);
}

function gaValidSplitString(inString, splitBy) {
	var i = 0;
	var returnArray = new Array();
	var stringPart = new String;
	while ((inString.length > 0) && (i < 20)) {
		if (inString.indexOf(splitBy) == -1) {
			stringPart = inString.substring(0, inString.length);
			inString = "";
		} else {
			stringPart = inString.substring(0, inString.indexOf(splitBy));
			inString = inString.substring(inString.indexOf(splitBy) + 1, inString.length);
		}
		if (stringPart != "") {
			returnArray[i] = stringPart;
			i++;
		}
	}
	return(returnArray);
}