/*********************************PUBLIC STRING FUNCTIONS*******************/
String.prototype.trim = function(){return this.replace(/(^[\s\n\r]*)|([\s\n\r]*$)/g, "");}
String.prototype.ltrim = function(){return this.replace(/(^\s*)/g, "");}
String.prototype.rtrim = function(){return this.replace(/(\s*$)/g, "");}
String.prototype.isEmpty = function(){return (this.trim() == "");}
/*********************************END STRING FUNCTIONS*******************/

var Overrided_Page_ClientValidate;
function OverridePage_ClientValidate()
{
	var fn = (typeof(Page_ClientValidate) == 'function') ? Page_ClientValidate : " return true;";
	if((fn+"").indexOf('function') < 0)
		fn = new Function(fn);
	Overrided_Page_ClientValidate = fn;
	window.Page_ClientValidate = new Function(" return (Overrided_Page_ClientValidate() && CspSingleValidates());");
	
}
window.onload = OverridePage_ClientValidate;
/**********************************FUNCTIONS*****************************************/

var Csp_Page_IsValid = false;

function CspSingleValidates()
{
	Csp_Page_IsValid = true;
	
	validators = document.getElementsByTagName("validator");
	
	var i;
	for(i=0; i < validators.length; i++)
		ValidateControl(validators[i])

	try{event.returnValue = Csp_Page_IsValid;} catch(e){}
	return Csp_Page_IsValid;
}

function ControlGetValue(control)
{
	switch (control.tagName)
	{
		case "INPUT":
			return control.value;
		case "SELECT":
			return control.options[control.selectedIndex].value;
	}
}

function IsValidByRegExp(value, regexp)
{
	var reg = new RegExp(regexp,"g");
	return (value.replace(reg, "") == "");
}

function ValidateControl(validator)
{
	var isValid = true;
	var controlID = validator.getAttribute("controltovalidate");
	var required = validator.getAttribute("required");
	var type = validator.getAttribute("validatortype");
	var regexp = validator.getAttribute("regexp");
	
	control = document.getElementById(controlID);
	value = ControlGetValue(control)+"";
	if(required == "True")
	{
		isValid = !value.isEmpty();
		document.getElementById("span_req"+controlID).style.display = (isValid) ? "none" : "inline";
	}	
	
	if(!regexp.isEmpty())
	{
		isValid = IsValidByRegExp(value, regexp);
		document.getElementById("span_"+controlID).style.display = (isValid) ? "none" : "inline";	
	}

	if(!isValid) 
		Csp_Page_IsValid = false;
	
	return isValid;
}
