/*
 *  Form validation methods
 *
 *  Alenas Kisonas 19.08.2002, modified 31.01.2003
 *  alenas@hotmail.com
 */

// Constants to use in your script
var vcText      = 'tx';
var vcEmail     = 'em';
var vcPassword  = 'pw';
var vcPassword1 = 'p1';
var vcPassword2 = 'p2';
var vcNumber    = 'nr';
var vcInteger   = 'it';
var vcDomain    = 'dm';
var vcUserName  = 'un';
var vcPhone     = 'ph';

// include validateDates.js in your html file to use these
var vcTime      = 'tm';
var vcDate      = 'da';
var vcDateTime  = 'dt';

// Useful variables - check these
var vcDateSeparator = "/";
var vcTimeSeparator = ":";
var vcMinCharLength = 3;
var vcShowErrAlerts = false;

// Error messages
var errMsgEnter   = "Please enter your ";
var errMsgInvalid = "Invalid ";
var errMsgEnd     = "!\n";
var errMsgRetype  = "Passwords do not match";

// END OF USER EDITABLE VALUES ------------------------------------------------
var vcUndefined;
var vcValidateDates = false;
var vvSubmited  = false;
var vvForm      = "";
var vvErrorText = "";
var vvPassword1 = "";
var vvPassword2 = "";
var vvBadBrwsr  = true;
if (document.getElementById) vvBadBrwsr=false;

function validateSubmit(fname) {
if (!vvSubmited){
  if (validateForm(fname)) vvSubmited = true;
  else window.alert('Please correct the following:\n'+vvErrorText);
  return vvSubmited;
}
return false;
}
function validateForm(fname) {
vvPassword1 = "";
vvPassword2 = "";
vvErrorText = "";
var fv=fname.elements;
for (var j=0; j<fv.length; j++) {
  vvErrorText += validateObj(fv.item(j));
}
if (vvErrorText == "") return true;
else return false;
}
function validateCheck(obj){
var err = validateObj(obj);
if ((err!='')&&(vcShowErrAlerts)) window.alert(err);
}
function validateObj(obj){
var err = "";
var lev = errorField(obj);
if (lev>0){
  if (lev==1) err = errMsgEnter + stripField(obj);
  else if (lev==2) err = errMsgInvalid + stripField(obj);
  else if (lev==3) err = errMsgRetype;
  err += errMsgEnd;
  if ((!vvBadBrwsr)&&(document.getElementById(obj.name+'_e'+lev))) document.getElementById(obj.name+'_e'+lev).style.display='block';
  else if ((!vvBadBrwsr)&&(document.getElementById(obj.name+'_e0'))){
    lev=0;
    document.getElementById(obj.name+'_e0').innerHTML=err;
    document.getElementById(obj.name+'_e0').style.display='block';
  }
} else lev=-1;
if (!vvBadBrwsr) {
  for (var i=0;i<=3;i++) if (document.getElementById(obj.name+'_e'+i)) if (i!=lev) document.getElementById(obj.name+'_e'+i).style.display='none';
}
return err;
}
function errorField(field){
var suf    = field.name;
if ((suf.charAt(2)=='_')||(suf.charAt(3)=='_')){
var ftype  = suf.substring(0,2);
var req    = (suf.charAt(2)=='r');
var fieldv = field.value;
if (fieldv == "") {
  if (req) return 1;
} else if(ftype==vcText) field.value = validateText(fieldv);
else if (ftype==vcDate) {field.value=validateDate(fieldv); if (field.value=='') return 2;}
else if (ftype==vcDateTime) {field.value=validateDateTime(fieldv); if (field.value=='') return 2;}
else if (ftype==vcTime) {field.value=validateTime(fieldv); if (field.value=='') return 2;}
else if ((ftype==vcEmail) && (!validateEmail(fieldv))) return 2;
else if ((ftype==vcDomain) && (!validateDomain(fieldv))) return 2;
else if ((ftype==vcNumber) && (!validateNumber(fieldv))) return 2;
else if ((ftype==vcInteger) && (!validateInteger(fieldv))) return 2;
else if ((ftype==vcPhone) && (!validatePhone(fieldv))) return 2;
else if ((ftype==vcUserName)&& (((fieldv.length<vcMinCharLength) && (req)) || (!validateUser(fieldv)))) return 2;
else if ((ftype==vcPassword)||(ftype==vcPassword1)||(ftype==vcPassword2)) {
   if (((fieldv.length<vcMinCharLength)&&(req))||(!validatePassword(fieldv))) return 2;
   else if(ftype==vcPassword1) vvPassword1 = fieldv;
   else if(ftype==vcPassword2) {
    vvPassword2 = fieldv;
    if ((vvPassword1!="")&&(vvPassword2!=vvPassword1)) return 3;
  }
}
}
return 0;
}
function validateText(txt){
var regx = /[\']+/;
var text = "";
while (txt!=text){
    text = txt;

    txt = text.replace(regx,"&amp;");
}
var regx = /[\"]+/;
var text = "";
while (txt!=text){
    text = txt;
    txt = text.replace(regx,"&quot;");
}
return txt;
}
function validateEmail(eml){
var regx = /^[\w\.\-]{2,}@[\w\-]{2,}(\.\w{2,})+$/;
return regx.test(eml);
}
function validatePassword(txt){
var regx = /^\w+$/;
return regx.test(txt);
}
function validateNumber(num){
var regx = /^\d*(\.(\d)+){0,1}$/;
return regx.test(num);
}
function validateInteger(num){
var regx = /^\d+$/;
return regx.test(num);
}
function validateDomain(dom){
if (dom=="localhost") return true;
else {
var regx = /^[\w\-]{2,}(\.\w{2,})+$/;
return regx.test(dom);
}
}
function validateUser(usr){
var regx = /^[\w\@\.\-]+$/;
return regx.test(usr);
}
function validatePhone(usr) {
var regx = /^\+{0,1}[\d\-\s]+$/;
return regx.test(usr);
}
function validateDate(txt) {
if (vcValidateDates) return validateDate2(txt);
return txt;
}
function validateDateTime(txt) {
if (vcValidateDates) return validateDateTime2(txt);
return txt;
}
function validateTime(txt) {
if (vcValidateDates) return validateTime2(txt);
return txt;
}
function stripField(obj) {
var nm = obj.name.substring(3);
var regx = /[\_]+/;
var text = "";
while (nm!=text){
    text = nm;
    nm = text.replace(regx," ");
}
return nm;
}
