// Het Field object wordt gebruikt bij de validatie van de formuliervelden
// Gebruik als volgt:
//
//       fields[0] = new Field('naam',            true,  'verplicht0');
//       fields[1] = new Field('bedrijf',         false, 'verplicht1');
//       fields[2] = new Field('adres',           false, 'verplicht2');
//       fields[3] = new Field('postcode+plaats', false, 'verplicht3', 'postcode("postcode")');
//       fields[4] = new Field('telefoon',        false, 'verplicht4', 'telefoon("telefoon")');
//       fields[5] = new Field('email',           true,  'verplicht5', 'email("email")');
//       
//       Validate();
//       function Validate(field) {
//          for(var i=0;i<fields.length;i++) {
//             fields[i].Validate(field);
//          }
//       }
//
//  SYNTAX: Field(name, required, image, validation)
//  als required == false ==> Validation == true ==> zwarte text, anders rode text
//  als required == trure ==> Validation == true ==> groen vinkje, anders rood uitroepteken
//  wanneer twee velden samen één validatie combineren zoals postcode en plaats, dan in naam met + scheiden.
//  image is de naam van de imagetag waarin het vinkje of uitroepteken geladen wordt. (of pixel.gif indien niet verplicht)
//  roep in de onchange en onclick van ieder veld de validate functie aan...
//
function Field(name, required, image, validation) {
   // Properties
   //
   this.name = name;
   if(name.indexOf('+') > -1) {
     this.names = name.split('+');
     this.element  = false;
     this.elements = Array();
     for(i=0;i<this.names.length;i++) {
        this.elements[i] = document.getElementById(this.names[i]);
     }
   }else {
      this.elements  = false;
      this.element   = document.getElementById(name);
	  //alert(this.element);
   }
   this.required  = required;
   this.imagetag  = document.getElementById(image);
   this.imagename = image;
   if(typeof(validation) == 'undefined') {
      this.validation = '1==1';
   }else {
      this.validation = validation;
   }
   
   // method declaratie
   //
   this.setImage     = field_setImage;
   this.Validate     = field_Validate;
   this.isEmpty      = field_isEmpty;
   this.isRequired   = field_isRequired;
   
   // method implementatie
   //
   function field_setImage(valid) {
      if(valid) {
         this.imagetag.src = '../../../images/form-required-ok.gif';
      }else {
         this.imagetag.src = '../../../images/form-required.gif';
      }
      if(!this.required) {
         this.imagetag.src = '../../../images/pixel.gif';
      }
   }

   function field_Validate(field) {
      if(this.required==true) {
         if(this.isEmpty()) {
            // WEL verplicht, WEL leeg
            this.setImage(false);
            result = false;
         }else {
            eval('result = ('+this.validation+');');
            if(result) {
               // WEL verplicht, NIET leeg, WEL geldig
               this.setImage(true);
            }else {
               // WEL verplicht, NIET leeg, NIET geldig
               this.setImage(false);
            }
         }
      }else{
         this.setImage(false);
         if(!this.isEmpty(true)) {
            eval('result = ('+this.validation+');');                      
         }else{
            result = true;
         }
      }
      return result;            
   }
   function field_isEmpty(allfields) {

      if(this.elements) {
         result = false;
         var j=0;
         for(var i=0;i<this.elements.length;i++) {
            if(this.elements[i].value.length < 1) {
               result = true;
               j++;
            }
         }
         if(allfields) {
            if(j==this.elements.length) {
               result = true;
            }else {
               // Niet alle velden zijn leeg
               result = false;
            }
         }
		
		}
		if(this.element.value){
			if(this.element.value.length > 0){
				result = false;
			}else{
				result = true;
			}
		}else{
			result = true;
		}
				
		return result;
   }
   function field_isRequired() {
      return this.required;
   }
}
function postcode(field) {
   objElement = document.getElementById(field);
   strValue = objElement.value
   var parts = new Array();
   parts[0] = strValue.substring(0,4)
   parts[1] = strValue.substring(4,6)
   if(parts[0].match(/^[1-9][0-9]{3}$/) && parts[1].match(/^[A-Za-z]{2}$/)){
      //eval("document.theForm."+objElement.name+".value = parts[0]+" "+parts[1]
      objElement.value = parts[0]+" "+parts[1];
      arrMatch = true;
   }
   else {
      var arrMatch=new RegExp("^[1-9][0-9]{3}[ ][A-Za-z]{2}$").exec(strValue);
   }
   if(!arrMatch) { 
      result = false;
   }else {
      result = true;
   }
   return result;
}

function telefoon(field) {
   strValue = document.getElementById(field).value;
   var arrMatch=new RegExp("^[0][0-9](([-][0-9][0-9])|([0-9][-][0-9])|([0-9][0-9][-]))[0-9]{6}$").exec(strValue);
   var arrMatch=new RegExp("^[0-9\-\+\(\) ]{10,15}$").exec(strValue);
   if(!arrMatch) { 
      result = false;
   }else {
      result = true;
   }
   return result;
}
function email(field) {
   strValue = document.getElementById(field).value;
   var arrMatch=new RegExp("^[A-Za-z0-9_-]+([.][A-Za-z0-9_-]+){0,4}[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+){1,3}$").exec(strValue)
   if(!arrMatch) { 
      result = false;
   }else {
      result = true;
   }
   return result;
}
function empty(field) {
   strValue = document.getElementById(field).value;
   return (strValue.length < 1);
}

function setCookie(name, value, expires, path, domain) {
   document.cookie = name + "=" + escape(value) + 
   ((expires == null) ? "" : "; expires=" + expires.toGMTString()) +
   ((path == null)    ? "" : "; path=" + path) +
   ((domain == null)  ? "" : "; domain=" + domain);
}
function getCookie(name) {
   var cname = name + "=";               
   var dc = document.cookie;             
   var result = null;
   if(dc.length > 0) {
      begin = dc.indexOf(cname);       
      if(begin != -1) { 
         begin += cname.length;       
         end = dc.indexOf(";", begin);
         if(end == -1) {
            end = dc.length;
         }
         result = unescape(dc.substring(begin, end));
      } 
   }
   return result;
}
function setFormCookies(form) {
   elms = document.forms[form].elements
   var expiration = new Date();
   expiration.setTime(expiration.getTime() + 43200000); // (30 dagen in milliseconden)
   for(var i=0;i<elms.length;i++) {
      if(elms[i].type == 'text') {
         setCookie(form+'_'+elms[i].name, elms[i].value, expiration);
      }
   }
}
function getFormCookies(form) {
   elms = document.forms[form].elements
   for(var i=0;i<elms.length;i++) {
      val = getCookie(form+'_'+elms[i].name);
      if(val) {
         elms[i].value = val;
      } 
   }   
}         

function getFormVariables(form) {
   elms = document.forms[form].elements;
   var result = '';
   for(var i=0;i<elms.length;i++) {
     if(((elms[i].type == 'checkbox') && (elms[i].checked)) || (elms[i].type != 'checkbox')) {
        result += '&'+escape(elms[i].name)+'='+escape(elms[i].value);
     }
   }
   result = result.substring(1);
   return result;
}