// (C)opyright 2005 www.Reg.CA

// For text fields... style="border-style: groove" ?

var changeback_array=new Array(0),global_sending=0;
var basa;
function Validate(frm,val) {
    var valid='^[A-Za-z0-9\\s\\~\\!\\@#\\$\\^\\*\\(\\)\\-\\_=+\\[\\]\\{\\}:&;,\\<\\>\\?\\\\\/\\.\\\'\\"'+"\x25\xE0\xE1\xE9\xE8\xEA\xEE\xEF\xE7\xF6\xF4\xC9\xC7\xF9"+']*$';
    var re=new Array('an','^[A-Za-z\\d]*$','c','^[a-zA-Z]*$','d','^[\\d]*$','phone','^[\\d\\-\\.\\(\\)\\sext]*$','capostal','^[A-Za-z][0-9][A-Za-z][\\s\\-]*[0-9][A-Za-z][0-9]$','txt',valid.toString(),'email','^[\\w\\-\\.]+@[\\w\\-]+\\.[\\w\\-\\.]+$','user','^[A-Za-z\\d\\-\\.]+$','dom','^([A-Za-z\\d\\-\\.]+)\\.[A-Za-z][A-Za-z]+$');
    var a=val.split(","),er="",f=0;
    if(global_sending) { return false; } // Can only post once...
    for (i in a) {
        e="";
        var c=a[i].split("-");
	if(c.length==0 || c[0]=="") { }
	else {
	  var inp=eval("frm."+c[0]+".value");
	  if(c.length<5 || c[5]==''){ c[5]=c[0].substr(0,1).toUpperCase()+c[0].substr(1); }
	  if(c[2]>0 && inp.length<c[2]) { e=c[5]+" is too short\n"; }
	  else if(c[3]>0 && inp.length>c[3]) { e=c[5]+" is too long\n"; }
	  for(var z=0; z<re.length; z+=2) { if(c[1]==re[z]) { c[1]=re[z+1].toString(); break; } }
	  if(c[1].charAt(0)!="^") { c[1]="^"+c[1]; } if(c[1].charAt(c[1].length-1)!="$") { c[1]+="$"; }
	  if(e=="" && c[1] != "" && !(inp=="" && c[2]==0) && !inp.match(c[1])) { e=c[5]+ " contains invalid characters\n"; }
	  if(e!="") { er+=e;
	    var inp=eval("frm."+c[0]); if(!f) { f=inp; }
	    basa=inp.style;
	    changeback_array.push(inp.name+","+inp.style.backgroundColor+","+document.getElementById("e_"+c[0]).style.color+","+c[2]+","+c[3]+",|"+c[1]);
	    inp.style.backgroundColor="#F58383"; document.getElementById("e_"+c[0]).style.color="#CC0000";
	    inp.style.backgroundImage="none"; // Not currently restored
	    if(inp.addEventListener) inp.addEventListener("change",changeback,false);
	    else if(inp.attachEvent) inp.attachEvent("onchange",changeback);
	  }
	}
    }
    if(er!="") { alert(er); f.focus(); return false; }
    return; // No errors - transmitting form - (used to lock buttons: lb(frm))
}
function changeback(e) {
  if (!e) var e = window.event;
  var o,b,c; if(e.srcElement) { o = e.srcElement; } else { o=e.target; }
  for(i in changeback_array) {
    b=changeback_array[i].split(',',5);
    if(b[0]==o.name) {
      c=changeback_array[i].substr(changeback_array[i].indexOf("|")+1);
      if(o.value.length >= b[3] && (o.value.length <= b[4] || b[4]==0) && o.value.match(c)) { } else { return true; }
      o.style.backgroundColor=b[1]; document.getElementById("e_"+o.name).style.color=b[2]; break;
    }
  }
  changeback_array.splice(i,1);
  if(o.removeEventListener) o.removeEventListener('change',changeback,false);
  else if(o.detachEvent) o.detachEvent('onchange',changeback);
  return true;
}
function lb(frm) { // Lock buttons
  if(global_sending) { return false; } // Can only post once...
  global_sending=1; var sub=frm.getElementsByTagName("input");
      for(i=0; i<sub.length; i++) { if(String(sub.item(i).getAttribute("type")).toLowerCase()=="submit") { // Disable submit buttons
      //sub.item(i).value="Processing request....please wait"; sub.item(i).width="300";
      sub.item(i).style.color="red";
      sub.item(i).disabled=true;
    }
  }
  return true;
}
