//  check for valid numeric strings
function IsNumeric(strString, strValidChars){
	//var strValidChars = "0123456789.-";
	var strChar;
	var blnResult = true;

	if (strString.length == 0) return false;

	//  test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++){
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1){
			blnResult = false;
		}
	}
	return blnResult;
}

// check for valid integer strings
function IsInteger(strString){
	var strValidChars = "0123456789-";
	return IsNumeric(strString, strValidChars);
}

// check for valid float strings
function IsFloat(strString){
	var strValidChars = "0123456789.,";
	return IsNumeric(strString, strValidChars);
}

// trim string
function TrimString(sInString) {
	sInString = sInString.replace( /^\s+/g, "" );// strip leading
	return sInString.replace( /\s+$/g, "" );// strip trailing
}

function IsEmailAddress(address) {
	var bRet = true;
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	//var address = sEmailAdress;
	if(reg.test(address) == false) {
		bRet = false;
	}
	return bRet;
}

function ValidateForm(){
	var obj_inputs = document.getElementsByTagName("input");
	var obj_selects = document.getElementsByTagName("select");
	var _focus = "";
	var msg = "";
	
	for(var i=0;i<obj_selects.length;i++){
		var required = obj_selects[i].getAttribute("_required");
		if(required != undefined && required == 1){
			if(obj_selects[i].selectedIndex == -1 || (obj_selects[i].selectedIndex == 0 && obj_selects[i].options[obj_selects[i].selectedIndex].value == "")) {
				msg += MSG_REQUIRED.replace(/#element#/gi, obj_selects[i].parentNode.parentNode.childNodes[0].innerHTML) + "\n";
				if(_focus == ""){
					 _focus = obj_selects[i];
				}
			}
		}
	}
	
	for(var i=0;i<obj_inputs.length;i++) {
		var required = obj_inputs[i].getAttribute("_required");
		if(required != undefined) {
			if(required == "1") {
				if(TrimString(obj_inputs[i].value) == "") {
					msg += MSG_REQUIRED.replace(/#element#/gi, obj_inputs[i].parentNode.parentNode.childNodes[0].innerHTML) + "\n";
					obj_inputs[i].value = TrimString(obj_inputs[i].value);
					if(_focus == ""){
						 _focus = obj_inputs[i];
					}
				}
			}
		}
		var validation = obj_inputs[i].getAttribute("_validation");
		if(validation != undefined){
			switch(validation){
				case "integer":
				if (TrimString(obj_inputs[i].value) == "") obj_inputs[i].value = 0;
				if(TrimString(obj_inputs[i].value) != "" && !IsInteger(TrimString(obj_inputs[i].value))){
					msg += MSG_REQUIRED_INT.replace(/#element#/gi, obj_inputs[i].parentNode.parentNode.childNodes[0].innerHTML) + "\n";
					if(_focus == ""){
						 _focus = obj_inputs[i];
					}
				}
				break;
				case "float":
				if (TrimString(obj_inputs[i].value) == "") obj_inputs[i].value = 0;
				obj_inputs[i].value = obj_inputs[i].value.replace(/,/, ".");
				if(TrimString(obj_inputs[i].value) != "" && !IsFloat(TrimString(obj_inputs[i].value))){
					msg += MSG_REQUIRED_FLOAT.replace(/#element#/gi, obj_inputs[i].parentNode.parentNode.childNodes[0].innerHTML) + "\n";
					if(_focus == ""){
						 _focus = obj_inputs[i];
					}
				}
				break;
				case "email":
					obj_inputs[i].value = TrimString(obj_inputs[i].value);
					if(obj_inputs[i].value != "" && !IsEmailAddress(obj_inputs[i].value)){
						msg += MSG_REQUIRED_EMAIL.replace(/#element#/gi, obj_inputs[i].parentNode.parentNode.childNodes[0].innerHTML) + "\n";
						if(_focus == ""){
						 _focus = obj_inputs[i];
						}
					}
				break;
				case "password":
					obj_inputs[i].value = TrimString(obj_inputs[i].value);
					var repass = document.getElementById("re" + obj_inputs[i].id);
					if(repass.value != obj_inputs[i].value){
						msg += MSG_REQUIRED_PASSWORD.replace(/#element#/gi, obj_inputs[i].parentNode.parentNode.childNodes[0].innerHTML) + "\n";
						if(_focus == ""){
						 _focus = obj_inputs[i];
						}
					}
				break;
			}
		}
	}
	if(msg != ""){
		alert(msg);
		_focus.focus();
		return false;
	}
	return true;
}

function ValidateDFMForm(){
	var obj_inputs = document.getElementsByTagName("input");
	var _focus = "";
	var msg = "";
	
	for(var i=0;i<obj_inputs.length;i++){
		var required = obj_inputs[i].getAttribute("required");
		if(required != undefined){
			if(required == "1"){
				if(TrimString(obj_inputs[i].value) == ""){
					msg += MSG_REQUIRED.replace(/#element#/gi, obj_inputs[i].element) + "\n";
					//msg += "The field `" + obj_inputs[i].parentNode.parentNode.childNodes[0].innerHTML + "` is required.\n";
					obj_inputs[i].value = TrimString(obj_inputs[i].value);
					if(_focus == ""){
						 _focus = obj_inputs[i];
					}
				}
			}
		}
		
		var validation = obj_inputs[i].getAttribute("_validation");
		if(validation != undefined) {
			switch(validation) {
				case "integer":
				obj_inputs[i].value = obj_inputs[i].value.replace(/,/, ".");
				if(TrimString(obj_inputs[i].value) != "" && !IsInteger(TrimString(obj_inputs[i].value))){
					msg += MSG_REQUIRED_INT.replace(/#element#/gi, obj_inputs[i].element) + "\n";
					if(_focus == ""){
						 _focus = obj_inputs[i];
					}
				}
				break;
				case "float":
				obj_inputs[i].value = obj_inputs[i].value.replace(/,/, ".");
				if(TrimString(obj_inputs[i].value) != "" && !IsFloat(TrimString(obj_inputs[i].value))){
					msg += MSG_REQUIRED_FLOAT.replace(/#element#/gi, obj_inputs[i].element) + "\n";
					if(_focus == ""){
						 _focus = obj_inputs[i];
					}
				}
				break;
			}
		}
		if(msg != ""){
			alert(msg);
			_focus.focus();
			return false;
		}	
	}
	if(msg != ""){
		alert(msg);
		_focus.focus();
		return false;
	}
	return true;
}

