function agree(){
   window.self.location="index.html";
}
function validate(e){
   if(e.nodeType==1 && e.nodeName=="FORM")
      return vName(e.name) && vEmail(e.email) &&
             vSub(e.subject) && vTxt(e.text) && vMark(e.mark);
   else
      switch(e.name){
         case "name":
            vName(e);
            break;
         case "email":
            vEmail(e);
            break;
         case "subject":
            vSub(e);
            break;
         case "text":
            vTxt(e);
            break;
      }
}
function vName(e){
   var v=false;
   var err=errorCell(e);
   var name=/^(\w+.?\s?)*\w+\.?$/;
   var crag=/craig/i;
   if(e.textLength==0)
      err.nodeValue="Cannot leave name field blank.";
   else if(!name.test(e.value))
      err.nodeValue="Not a valid name.";
   else if(crag.test(e.value)){
      e.value="Crag";
      err.nodeValue="LOL!";
      v=true;
   }else{
      err.nodeValue=ch(160);
      v=true;
   }
   return v;
}
function vEmail(e){
   var v=false;
   var err=errorCell(e);
   var email=/^[\w.\-]{2,64}@[\w.\-]{2,255}\.[\w]{2,6}$/;
   if(e.textLength==0)
      err.nodeValue="Cannot leave email field blank.";
   else if(!email.test(e.value))
      err.nodeValue="Not a valid email address.";
   else{
      err.nodeValue=ch(160);
      v=true;
   }
   return v;
}
function vSub(e){
   var v=false;
   var err=errorCell(e);
   if(e.textLength==0)
      err.nodeValue="Cannot leave subject field blank.";
   else{
      err.nodeValue=ch(160);
      v=true;
   }
   return v;
}
function vTxt(e){
   var v=false;
   var err=errorDiv(e);
   if(e.textLength==0)
      err.nodeValue="Cannot leave text field blank.";
   else{
      err.nodeValue=ch(160);
      v=true;
   }
   return v;
}
function sum(e){
   const MAX=512;
   var err=errorDiv(e);
   var count=e.textLength;
   if(count>MAX)
      e.value=e.value.substr(0,MAX);
   else if(count>0.9*MAX)
      err.nodeValue=(MAX-count)+" characters remaining.";
   else{
      err.nodeValue=ch(160);
   }
}
function vMark(e){
   var v=false;
   var i=0;
   do{
      v=e[i++].checked;
   }while(i<5 && !v);
   return v;
}
function errorCell(obj){
   do{
      obj=obj.parentNode;
   }while(obj.nodeName!="TR");
   var nodes=obj.childNodes,found=false;
   for(var i=0;i<nodes.length && !found;i++)
      if(nodes[i].nodeName=="TD" && nodes[i].className=="error"){
         obj=nodes[i].firstChild;
         found=true;
      }
   return obj;
}
function errorDiv(obj){
   do{
      obj=obj.nextSibling;
   }while(obj.nodeName!="DIV");
   return obj.firstChild;
}
function ch(x){
   return String.fromCharCode(x);
}
