// JavaScript Document - Form fields validation

cEmail=1;
cWord=2;
cPhone=3;
cText=4;
cNumber=5;

function checkField(iwhat, ctype, ierror, imandatory)
// itype can be either "Email", "Number", or "Text"

{
  var cfield;
  cfield = iwhat;
  if (trim(cfield.value) == '')
  {
   document.getElementById(ierror).innerHTML= "Please, fill in this field";
   if (imandatory){return false}
  }
  else {
   if (ctype==cEmail){
    if (!isEmail(trim(cfield.value))){
     document.getElementById(ierror).innerHTML= "Not valid e-mail. Please re-type.";
     return false;
    }
   }
   else {
    if (ctype==cWord){
     if (!isWord(trim(cfield.value))){
      document.getElementById(ierror).innerHTML= "Only alphabetical characters here. Please re-type.";
      return false;
     }
    }	 
    else {
     if (ctype==cPhone){
      if (!isPhone(trim(cfield.value))){
       document.getElementById(ierror).innerHTML= "Only numerical characters or \"()-+\" signs here. Please re-type.";
       return false;
      }
     }	 
     else {
      if (ctype==cText){
       if (!isText(trim(cfield.value))){
        document.getElementById(ierror).innerHTML= "Only numerical, alphabetical or \"!?.,@#$%()-+\" signs here. Please re-type.";
        return false;
       }
      }	 
      else {
       if (ctype==cNumber){
        if (!isNumber(trim(cfield.value))){
         document.getElementById(ierror).innerHTML= "Only numerical characters here. Please re-type.";
         return false;
        }
       }	 
	  }
	 }
	}
   }	
  }
  document.getElementById(ierror).innerHTML= "&nbsp";
  cfield.value   = trim(cfield.value);
  return true;
}

function trim(str)
{
   return str.replace(/^\s+|\s+$/g,'');
}

function isEmail(str)
{
   var regex = /^[-_.a-z0-9]+@(([-_a-z0-9]+\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i;
 return regex.test(str);
}

function isWord(str)
{
 var regex = /^(\s|[a-z])+$/i;
 return regex.test(str);
}

function isPhone(str)
{
 var regex = /^(\s|[0-9]|\+|\-|\(|\))+$/i;
 return regex.test(str);
}

function isText(str)
{
 var regex = /^(\s|\w|\!|\?|\.|\,|\@|\#|\$|\%|\(|\)|\-|\+)+$/i;
 return regex.test(str);
}

function isNumber(str)
{
 var regex = /^(\s|[0-9])+$/i;
 return regex.test(str);
}

