var errorColor="#FF0000";
var vMsg={};

function Validator(frmname)
{
	this.formobj=document.forms[frmname];
	if(!this.formobj)
	{
		alert(vMsg["M001"]+frmname);
		return;
	}
	if(this.formobj.onsubmit)
	{
		this.formobj.old_onsubmit = this.formobj.onsubmit;
		this.formobj.onsubmit=null;
	}
	else
	{
		this.formobj.old_onsubmit = null;
	}
	this.formobj.onsubmit=form_submit_handler;
	this.addValidation = add_validation;
	this.clearAllValidations = clear_all_validations;
}
function clear_all_validations()
{
	for(var itr=0;itr < this.formobj.elements.length;itr++)
	{
		this.formobj.elements[itr].validationset = null;
	}
}
function blockReSubmit(frm)
{
	for(i=0;i<frm.elements.length;i++){
		if(frm.elements[i].type=='submit'){
			frm.elements[i].disabled=true;
		}
	}
}
function form_submit_handler()
{
	for(var itr=0;itr < this.elements.length;itr++)
	{
		if(this.elements[itr].validationset && !this.elements[itr].validationset.validate()) return false;
	}
	if(this.old_onsubmit!=null && !this.old_onsubmit()) return false;
	blockReSubmit(this);
	return true;
}
function add_validation(itemname,descriptor,errstr)
{
	if(!this.formobj)
	{
		alert(vMsg["M002"]);
		return;
	}
	var itemobj = this.formobj[itemname];
	if(!itemobj)
	{
		//alert(vMsg["M003"]+itemname);
		return;
	}
	if(!itemobj.validationset) itemobj.validationset = new ValidationSet(itemobj);
  	itemobj.validationset.add(descriptor,errstr);
}

function ValidationDesc(inputitem,desc,error)
{
	this.desc=desc;
	this.error=error;
	this.itemobj = inputitem;
	this.validate=vdesc_validate;
}
function vdesc_validate()
{
	var ret=V2validateData(this.desc,this.itemobj,this.error);
	if(ret!=""){
		if("hidden"!=this.itemobj.type) this.itemobj.focus();
		if("text"==this.itemobj.type) this.itemobj.select();
		var oldBg=this.itemobj.style.backgroundColor;
		this.itemobj.style.backgroundColor=errorColor;
		alert(ret);
		this.itemobj.style.backgroundColor=oldBg;
		return false;
	}
	return true;
}
function ValidationSet(inputitem)
{
	this.vSet=new Array();
	this.add= add_validationdesc;
	this.validate= vset_validate;
	this.itemobj = inputitem;
}
function add_validationdesc(desc,error)
{
	this.vSet[this.vSet.length]= new ValidationDesc(this.itemobj,desc,error);
}
function vset_validate()
{
	for(var itr=0;itr<this.vSet.length;itr++)
	{
		if(!this.vSet[itr].validate()) return false;
	}
	return true;
}
function validateEmailv2(email)
{
// a very simple email validation checking. 
// you can add more complex email checking if it helps 
    if(email.length <= 0)
	{
	  return true;
	}
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) return false;
    if(splitted[1] != null )
    {
      var regexp_user=/^\"?[\w-_\.]*\"?$/;
      if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null)
    {
      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      if(splitted[2].match(regexp_domain) == null) 
      {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
      }// if
      return true;
    }
return false;
}
function V2validateData(strValidateStr,objValue,strError) 
{ 
	var  command  = ""; 
	var  cmdvalue = ""; 
	var epos = strValidateStr.search("="); 
	if(epos >= 0) 
	{ 
		command  = strValidateStr.substring(0,epos); 
		cmdvalue = "," + strValidateStr.substr(epos+1); 
	}else{ 
		command = strValidateStr; 
	}
	if(command){
		if(!strError) strError="";
	  	eval("var ret = validate_" + command +"(objValue" + cmdvalue + ");");
	  	if(ret!="" && strError.length>0) return strError;
	  	return ret;
	}
	return true;
}
function validate_req(objValue){
	return validate_require(objValue);
}
function validate_require(objValue){
	if(eval(objValue.value.length) == 0) return vMsg["M004"]; 
	return "";
}
function validate_maxlen(objValue,maxlen){
	return validate_maxlength(objValue,maxlen);
}
function validate_maxlength(objValue,maxlen){
	if(!maxlen) return "";
	if(eval(objValue.value.length) >  eval(maxlen)) return vMsg["M005"] + maxlen; 
	return "";
}
function validate_minlen(objValue,minlen){
	return validate_minlength(objValue,minlen);
}
function validate_minlength(objValue,minlen){
	if(!minlen) return "";
	if(eval(objValue.value.length) <  eval(minlen)) return vMsg["M006"] + minlen; 
	return "";
}
function validate_alnum(objValue){
	return validate_alphanumeric(objValue);
}
function validate_alphanumeric(objValue){
	var charpos = objValue.value.search("[^A-Za-z0-9]"); 
	if(objValue.value.length > 0 &&  charpos >= 0) return vMsg["M007"]; 
	return ""; 
}
function validate_num(objValue){
	return validate_numeric(objValue);
}
function validate_numeric(objValue){
	var charpos = objValue.value.search("[^0-9]"); 
	if(objValue.value.length > 0 &&  charpos >= 0) return vMsg["M008"];
	return ""; 
}
function validate_alpha(objValue){
	return validate_alphabetic(objValue);
}
function validate_alphabetic(objValue){
	var charpos = objValue.value.search("[^A-Za-z]"); 
	if(objValue.value.length > 0 &&  charpos >= 0) return vMsg["M009"]; 
	return ""; 
}
function validate_dec(objValue){
	return validate_decimal(objValue);
}
function validate_decimal(objValue){
	var charpos = objValue.value.search("[^0-9\-,.]"); 
	if(objValue.value.length > 0 &&  charpos >= 0) return vMsg["M010"]; 
	return ""; 
}
function validate_email(objValue){
	if(!validateEmailv2(objValue.value)) return vMsg["M011"]; 
	return ""; 
}
function validate_lt(objValue,maxval){
	return validate_lessthan(objValue,maxval);
}
function validate_lessthan(objValue,maxval){
	if(isNaN(objValue.value)) return vMsg["M010"];
	if(eval(objValue.value) >=  eval(maxval)) return vMsg["M012"] + maxval;
	return "";
}
function validate_gt(objValue,minval){
	return validate_greaterthan(objValue,minval);
}
function validate_greaterthan(objValue,minval){
	if(isNaN(objValue.value)) return vMsg["M010"];
	if(eval(objValue.value) <=  eval(minval)) return vMsg["M013"] + minval;
	return "";
}	
function validate_regexp(objValue,patt){
	if(objValue.value.length > 0 && !objValue.value.match(patt)) return vMsg["M014"];
	return "";
}
function validate_dontselect(objValue,sel){
	if(objValue.selectedIndex == null) return "";
	if(objValue.selectedIndex == eval(sel)) return vMsg["M015"];
	return "";
}
function validate_chpwd(objValue){	
	if(objValue.value!=mainpwd.value) return vMsg["M016"];
	return "";
}
function validate_mustsel(objValue){
	if(objValue.length<1) return vMsg["M017"];
	return "";
}