<!--
//---------------------------------------
// Javascript File: Form Validator v2.02
//---------------------------------------

function trim(inputString) {
  if (typeof inputString != "string") { return inputString; }
  var retValue = inputString;
  var ch = retValue.substring(0, 1);
  while (ch == " ") {
    retValue = retValue.substring(1, retValue.length);
    ch = retValue.substring(0, 1);
  };
  ch = retValue.substring(retValue.length-1, retValue.length);
  while (ch == " ") {
    retValue = retValue.substring(0, retValue.length-1);
    ch = retValue.substring(retValue.length-1, retValue.length);
  };
  while (retValue.indexOf("  ") != -1) {
    retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
  }
  return retValue;
};

function Validator(frmname, validate) {
	if(validate === undefined) { validate = 1; }
  this.formobj=document.forms[frmname];
  if(!this.formobj) {
    alert("BUG: couldnot get Form object "+frmname); return;
  };
  if(validate == 1){
	  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.setAddnlValidationFunction =set_addnl_vfunction1;
  this.setAddnlValidationFunction2=set_addnl_vfunction2;
  this.setAddnlValidationFunction3=set_addnl_vfunction3;
  this.setAddnlValidationFunction4=set_addnl_vfunction4;
  this.clearAllValidations = clear_all_validations;
};

function set_addnl_vfunction1(functionname) { this.formobj.addnlvalidation1 = functionname; }
function set_addnl_vfunction2(functionname) { this.formobj.addnlvalidation2 = functionname; }
function set_addnl_vfunction3(functionname) { this.formobj.addnlvalidation3 = functionname; }
function set_addnl_vfunction4(functionname) { this.formobj.addnlvalidation4 = functionname; }

function clear_all_validations() {
  for(var itr=0;itr < this.formobj.elements.length;itr++) { this.formobj.elements[itr].validationset = null; }
};

function form_submit_handler(frmname) {
	if(frmname == "[object Event]" || frmname == undefined){ formobj = this; formname = this.name; }
	else{ formobj=document.forms[frmname]; formname = frmname; }
  var validAll=true;
  var isFirst=true;
  if(formobj.addnlvalidation1) { str =" var ret = "+formobj.addnlvalidation1; eval(str); if(!ret) validAll=false; }
  if(formobj.addnlvalidation2) { str =" var ret = "+formobj.addnlvalidation2; eval(str); if(!ret) validAll=false; }
  for(var itr=0;itr < formobj.elements.length;itr++) {
    if(formobj.elements[itr].validationset && !formobj.elements[itr].validationset.validate()) {
      validAll=false;
      if (isFirst && formobj.elements[itr].type!='hidden') { isFirst=false; formobj.elements[itr].focus(); }
    };
  };
  if(formobj.addnlvalidation3) { str =" var ret = "+formobj.addnlvalidation3; eval(str); if(!ret) validAll=false; }
  if(formobj.addnlvalidation4) { str =" var ret = "+formobj.addnlvalidation4; eval(str); if(!ret) validAll=false; }
  if (validAll) { DForm(formname); }
  return validAll;
};

function DForm(strName) {
  for(i=0; i < eval("document."+strName+".length"); i++) {
    j=eval("document."+strName+"["+i+"]");
    if ((j.type=="submit")||(j.type=="reset")||(j.type=="button")) { j.disabled=true; }
  };
};

function add_validation(itemname,descriptor,errstr) {
  if(!this.formobj) { alert("BUG: the form object is not set properly"); return; }
  var itemobj = this.formobj[itemname];
  if(!itemobj) { alert("BUG: Couldnot get the input object named: "+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() {
 this.itemobj.value=trim(this.itemobj.value);
 if (this.itemobj.style.display!=='none'||this.desc=='mce_req') {
   var imgobj = document.getElementById("p"+this.itemobj.name)
   if (!V2validateData(this.desc, this.itemobj, this.error)) {
     try { pngChange(imgobj,3); } catch(e) {}
     try { imgobj.title=this.error; } catch(e) {}
     try { setErrorClass(this.itemobj); } catch(e) {}
     return false;
   } else {
     try { pngChange(imgobj,2); } catch(e) {}
     try { imgobj.title='Valid'; } catch(e) {}
     try { this.itemobj.className = this.itemobj.className.replace(' errorField',''); } catch(e) {}
   }
 };
 return true;
};

function setErrorClass(obj) {
  if (obj.type=='hidden') { if (document.getElementById(obj.name + '_Displayer')) { obj = document.getElementById(obj.name + '_Displayer'); obj.focus(); } else { return; } }
  if (obj.hasError) return;
  obj.className += ' errorField';
  obj.onchange = remErrorClass();
  if (!obj.id.indexOf('mce_editor')) { obj.onmouseout = remErrorClass; }
  obj.hasError = true;
};

function remErrorClass() {
  this.className = this.className.replace(' errorField','');
  this.hasError = false;
  this.onchange = null;
};

function pngChange(obj,to) {
 try {
  if (to==1) { newpic="ico-16xWarning.png"; }
  if (to==2) { newpic="ico-16xOk2.png"; }
  if (to==3) { newpic="ico-16xError.png"; }
  if (obj.src.indexOf("transpng.gif")!=-1) {
   obj.style.filter=obj.style.filter.substring(0,obj.style.filter.lastIndexOf("/")+1)+newpic+obj.style.filter.substring(obj.style.filter.lastIndexOf("'"));
  } else {
   obj.src=obj.src.substring(0,obj.src.lastIndexOf("/")+1)+newpic;
  }
 } catch(e) {}
};

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) {
  if (email=="") { 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;
    };
    return true;
  };
  return false;
};

function ValidateWithArray(obj,arrChecks,strError) {
  for (i=0;i<arrChecks.length;i++) {
    if (!V2validateData(arrChecks[i],obj,strError)) {
      try { setErrorClass(obj); } catch(e) {}
      return false;
    };
  };
  return true;
};

function V2validateData(strValidateStr,objValue,strError) {
 var epos = strValidateStr.search("=");
 var command  = "";
 var cmdvalue = "";
 if(epos >= 0) {
  command  = strValidateStr.substring(0,epos);
  cmdvalue = strValidateStr.substr(epos+1);
 } else {
  command = strValidateStr;
 }
 if (objValue.disabled) { return true;  }
 switch(command)  {
   case "req":
   case "required": {
     if(eval(objValue.value.length) == 0) { return false; }
     break;
   };
   case "mce_req": {
     inst=tinyMCE.getInstanceById(objValue.name).editorId;
     tinyMCE.triggerSave(false, false);
     if (trim(tinyMCE.getContent(inst).replace(/&nbsp;/g,""))=='') {
      tinyMCE.execCommand('mceFocus', false, inst);
      setErrorClass(document.getElementById(inst + '_maintable'));
      return false;
     };
     break;
   };
   case "maxlength":
   case "maxlen": {
     if(eval(objValue.value.length) == 0) { return true; }
     if(eval(objValue.value.length) > eval(cmdvalue)) { return false; }
     break;
   };
   case "minlength":
   case "minlen": {
     if(eval(objValue.value.length) == 0) { return true; }
     if(eval(objValue.value.length) <  eval(cmdvalue)) { return false; }
     break;
   };
   case "alnum":
   case "alphanumeric": {
     var charpos = objValue.value.search("[^A-Za-z0-9]");
     if(objValue.value.length > 0 &&  charpos >= 0) { return false; }
     break;
   };
   case "num":
   case "numeric": {
     var charpos = objValue.value.search("[^0-9]");
     if(objValue.value.length > 0 &&  charpos >= 0) { return false; }
     break;
   };
   case "alphabetic":
   case "alpha": {
     var charpos = objValue.value.search("[^A-Za-z]");
     if(objValue.value.length > 0 &&  charpos >= 0) { return false; }
     break;
   };
   case "mon":
   case "money": {
     var charpos = objValue.value.search("[^0-9|\,\.\+\-]");
     if(objValue.value.length > 0 &&  charpos >= 0) { return false; }
     break;
   };
   case "alnumhyphen":{
     var charpos = objValue.value.search("[^A-Za-z0-9\-_]");
     if(objValue.value.length > 0 &&  charpos >= 0) { return false; }
     break;
   };
   case "email": {
     if(!validateEmailv2(objValue.value)) { return false; }
     break;
   };
   case "lt":
   case "lessthan": {
     if(isNaN(objValue.value)) { return false; }
     if(eval(objValue.value) >=  eval(cmdvalue)) { return false; }
     break;
   };
   case "gt":
   case "greaterthan": {
     if(isNaN(objValue.value)) { return false; }
     if(eval(objValue.value) <=  eval(cmdvalue)) { return false; }
     break;
   };
   case "regexp": {
     if(!objValue.value.match(cmdvalue)) { return false; }
     break;
   };
   case "stwith": {
     if(eval(objValue.value.length) < eval(cmdvalue.length)) { return false; }
     if ( eval(objValue.value.substring(0,cmdvalue.length)) != eval(cmdvalue) ) { return false; }
     break;
   };
   case "nostwith": {
     if (eval(objValue.value.length) >= eval(cmdvalue.length)) {
       if ( eval(objValue.value.substring(0,cmdvalue.length)) == eval(cmdvalue) ) { return false; }
     };
     break;
   };
   case "dontselect": {
     if(objValue.selectedIndex == null) { return false; }
     if(objValue.selectedIndex == eval(cmdvalue)) { return false; }
     break;
   };
 };
 return true;
}

// ---------------------------------------------------------
// Copyright (c) 2007 IniCom.Networks - All Rights Reserved
// ---------------------------------------------------------
//-->
