function getElementsByClassName(G,F){
   var A=[];
   var E=new RegExp("(^| )"+G+"( |$)");
   var D=F.getElementsByTagName("*");
   for(var C=0,B=D.length;C<B;C++){
      if(E.test(D[C].className)){
         A.push(D[C])
      }
   }
   return A
}

function widont(A){
   return A.replace(/([^\s])\s+([^\s]+)\s*$/,"$1&nbsp;$2")
}

function zTglc(A,B){
   if(A.className){
      if(A.className==B){
         A.className=""
      }else{
         if(A.className.match(" "+B)){
            A.className=A.className.replace(" "+B,"")
         }else{
            A.className=A.className+" "+B
         }
      }
   }else{
      A.className=B
   }
}

function zCi(){
   var A=document.body.getElementsByTagName("input");
   for(var B=0;B<A.length;B++){
      if(A[B].type=="text"&&A[B].value!=""){
         if(!A[B].getAttribute("autoclear")){
            continue
         }
         A[B].v=A[B].value;
         A[B].onfocus=function(){if(this.value==this.v){this.value=""}};
         A[B].onblur=function(){if(this.value==""){this.value=this.v}}
      }
   }
}

var validationFunctions=new Object();
validationFunctions.required=isReq;
validationFunctions.pattern=isPat;
validationFunctions.numeric=isNum;
validationFunctions.email=isEmail;
validationFunctions.match=isMatch;
validationFunctions.minmax=isMinMax;
var errorMessages=new Object();
errorMessages.required="This field is required.";
errorMessages.pattern="This field is required.";
errorMessages.numeric="Please enter only numbers into this field.";
errorMessages.email="Please enter a valid email address.";
errorMessages.match="This field must match its counterpart.";
errorMessages.minmax="Please answer within the specified range of characters.";

function isReq(B){
   switch(B.type){
      case"file":
      case"hidden":
      case"text":
      case"textarea":
      case"select-one":
         if(B.value){
            return true
         }
         return false;
      case"radio":
         var C=B.form[B.name];
         for(var A=0;A<C.length;A++){
           if(C[A].checked){
              return true
           }
         }
         return false;
      case"checkbox":
         return B.checked
   }
}

function isPat(D,C){
   var C=C||D.getAttribute("pattern");
   var B=new RegExp("^"+C+"$","");
   var A=B.test(D.value);
   if(!A&&D.getAttribute("patternDesc")){
      A=D.getAttribute("patternDesc")
   }
   return A
}

function isNum(A){
   return isPat(A,"\\d+")
}

function isEmail(A){
   return isPat(A,"[\\d\\w._%+-]+@[\\d\\w.-]+\\.[\\w]{2,4}")
}

function isMatch(D){
   var B=D.getAttribute("twin");
   var E=D.parentNode;
   while(E.nodeName!="FORM"){
      var E=E.parentNode
   }
   var A=E.elements;
   for(var C=0;C<A.length;C++){
      if(A[C].name==B){
         if(A[C].value==D.value){
            return true
         }else{
            return false
         }
         break
      }
   }
}

function isMinMax(B){
   var A=B.getAttribute("range");
   A=A.split(",");
   var L=B.value.length;
   errorMessages.minmax="Your entry ("+L+") must be between "+A[0]+" and "+A[1]+" characters.";
   return (L>=A[0] && L<A[1])
}

function createCounter(E){
   var C=E.getAttribute("range");
   C=C.split(",");
   var F=document.createTextNode(C[1]+"-character limit");
   var B=document.createElement("p");
   B.id=E.id+"_max";
   B.className="maxinfo alert";
   B.appendChild(F);
   E.parentNode.insertBefore(B,E.nextSibling);
   if(C[0]>1){
      var A=document.createTextNode(C[0]+"-character minimum");
      var D=document.createElement("p");
      D.id=E.id+"_min";
      D.className="mininfo alert";
      D.appendChild(A);
      E.parentNode.insertBefore(D,E.nextSibling)
   }
   E.onkeypress=E.onchange=function(){
      var G=this.getAttribute("range");
      G=G.split(",");
      if(this.value.length<G[1]){
         gEI(E.id+"_max").innerHTML=(G[1]-this.value.length)+" characters left"
      }else{
         gEI(E.id+"_max").innerHTML="You have reached the character limit";
         this.value=this.value.substring(0,G[1])
      }
   }
}

var W3CDOM=document.createElement&&document.getElementsByTagName;

function validateForms(){
   if(!W3CDOM){
      return 
   }
   var A=document.forms;
   for(var B=0;B<A.length;B++){
      if(!A[B].onsubmit){
         A[B].onsubmit=function(){return validate(this)}
      }
   }
}

function validate(G){
   var C=G||this;
   var B=C.elements;
   var F=true;
   for(var A=0;A<B.length;A++){
      B[A].className=B[A].className.replace(/invalid/,"");
      var E=B[A].getAttribute("validate");
      if(!E||B[A].getAttribute("disabled")){
         continue
      }
      var D=validationFunctions[E](B[A]);
      if(D!=true){
         B[A].className+=" invalid";
         F=false;
         message=(B[A].getAttribute("alert"))?B[A].getAttribute("alert"):errorMessages[E];
         B[A].focus();
         break
      }
   }
   if(!F){
      alert(message)
   }
   return F
}

function splitList(C,B){
   if(C.nodeName!="OL"&&C.nodeName!="UL"){
      return 
   }
   if(!B){
      B=2
   }
   var A=document.createElement("div");
   if(C.id){
      A.id=C.id
   }
   if(C.className){
      A.className=C.className
   }
   var J=new Array();
   var K=C.getElementsByTagName("li");
   var I=Math.ceil(K.length/B);
   for(var H=0;H<B;H++){
      var G=document.createElement(C.nodeName);
      G.className=C.className;
      if(C.nodeName=="OL"){
         G.start=(H*I)+1}zTglc(G,"col"+(H+1));
         for(var F=0;F<I;F++){
            if(C.getElementsByTagName("li")[(H*I)+F]){
               var E=C.getElementsByTagName("li")[(H*I)+F].cloneNode(true);
               G.appendChild(E)
            }
         }
         J.push(G)
      }
      for(var D=0;D<J.length;D++){
         A.appendChild(J[D])
      }
      C.parentNode.appendChild(A);
      C.parentNode.removeChild(C)
};

