window.onload = function () {
     
     if (self.init)
          init();
}

var W3CDOM = (document.getElementsByTagName && document.createElement);

function init ()
{
     document.forms['evaluation'].onsubmit = function () {
          return validate()
     }
}

function validate() {
     validForm = true;
     firstError = null;
     errorstring = '';
     var x = document.forms['evaluation'].elements;
     for (var i=0;i<x.length;i++) {
     if(x[i].className != "errorz") continue;
          if (!x[i].value)
               writeError(x[i],'required field');
     }
     if (x['email'].value.indexOf('@') == -1)
          writeError(x['email'],'required field');
     if (x['email'].value.indexOf('.') == -1)
          writeError(x['email'],'required field');
     if (!W3CDOM)
          alert(errorstring);
     if (firstError)
          firstError.focus();
     if (validForm) {
          //alert('All data is valid!');
          return true;
          }
     return false; // I return false anyway to prevent actual form submission. Don't do this at home!

     // when form is valid, i need to run to also run the following
     // document.tellafriend.submit()
     return true;

}

function writeError(obj,message) {
     validForm = false;
     if (obj.hasError) return;
     if (W3CDOM) {
          obj.className += ' error';
          obj.onchange = removeError;
          var sp = document.createElement('span');
          sp.className = 'error';
          sp.appendChild(document.createTextNode(message));
          obj.parentNode.appendChild(sp);
          obj.hasError = sp;
     }
     else {
          errorstring += obj.name + ': ' + message + '\n';
          obj.hasError = true;
     }
     if (!firstError)
          firstError = obj;
}

function removeError() {
     this.className = this.className.substring(0,this.className.lastIndexOf(' '));
     this.parentNode.removeChild(this.hasError);
     this.hasError = null;
     this.onchange = null;
}