// JavaScript Document
var fields = Array();

function handleContactformResponse(arr, txt) {
	document.getElementById('paymentform').innerHTML = txt;
	//document.forms['form_Contact'].innerHTML = '';
	alert(txt);
}
function InitForm() {
// Eventhandlers aan velden koppelen
//
	for(var i=0;i<document.forms['paymentform'].elements.length;i++) {
		elm = document.forms['paymentform'].elements[i];
		eval("elm.onkeyup = function() { Validate('"+elm.name+"') }");
		eval("elm.onchange = function() { Validate('"+elm.name+"') }");
		eval("elm.onclick = function() { Validate('"+elm.name+"') }");
	}
	// fieldobjecten aanmaken voor validatie
	//
	fields[0] = new Field('customernumber', false, 'verplicht0');
	fields[1] = new Field('reference', true, 'verplicht1');
	fields[2] = new Field('companyname', true, 'verplicht2');
	fields[3] = new Field('name', true, 'verplicht3');
	fields[4] = new Field('address', false, 'verplicht4');
	fields[5] = new Field('postalcode', false, 'verplicht5');
	fields[6] = new Field('city', false, 'verplicht6');
	fields[7] = new Field('country', false, 'verplicht7');
	fields[8] = new Field('telephone', true, 'verplicht8', 'telephone("telephone")');
	fields[9] = new Field('email', true, 'verplicht9', 'email("email")');
	fields[10] = new Field('amount_eur', true, 'verplicht10', 'onlyNumbers("amount_eur")');
	fields[11] = new Field('amount_cent', true, 'verplicht10', 'onlyNumbers("amount_cent")');
	fields[12] = new Field('terms', true, 'verplicht11', 'checked("terms")');
	// Haal eerder ingevulde waarden op uit cookies
	//
	getFormCookies('paymentform');
	Validate();
}
function Validate(field) {
	elms = document.forms['paymentform'].elements;
	required = Array(0,1,1,1,1,1,1,1,1,1,1,1); // DEFAULT verplichte velden
	
	var result = true;
	for(var i=0;i<fields.length;i++) {
		if(!fields[i].Validate(field)) {
			result = false;
		}
	}
	return result;
}

function SubmitForm() {
	if(Validate()) {
		paramstring = getFormVariables('paymentform');		
		updateAmount();
		document.forms['paymentform'].submit();		
	}else{
		alert('Some fieds are incorrect. \r\nCheck your input and press "submit order" again');
	}
}
function ClearForm() {
	if(confirm('Are you sure you want to erase all fields?')) {
		document.forms['paymentform'].reset();
	}
}

function updateAmount(){
	var amount_eur;
	var amount_cent;
	var amount_tolal;
	
	amount_eur = parseInt(document.getElementById('amount_eur').value);
	amount_cent = parseInt(document.getElementById('amount_cent').value);

	// if this is not an integer
    if (isNaN(amount_cent)){
      // clear text box
      document.getElementById('amount_cent').value = '00';
	  amount_cent = 00;
    }	
	// if this is not an integer
    if (isNaN(amount_eur)){
      // clear text box
      document.getElementById('amount_eur').value = '0';
	  amount = 0;
    }
	amount_total = (amount_eur*100) + amount_cent;
	
	if(amount_total > 0){
		document.getElementById('amount').value = amount_total;	
	}

}


// 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);
   }
   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.setTextcolor = field_setTextcolor;
   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_setTextcolor(color) {
      if(this.elements) {
         for(var i=0;i<this.elements.length;i++) {
            this.elements[i].style.color = color;
         }
      }else {
         this.element.style.color = color;
      }
   }
   function field_Validate(field) {
      if(this.required) {
         this.setTextcolor('#000000');
         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+');');
            if(result) {
               // NIET verplicht WEL geldig
               //
               this.setTextcolor('#000000');
            }else {
               // NIET verplicht NIET geldig
               //
               if(this.elements) {
                  for(var i=0;i<this.elements.length;i++) {
                     if(this.elements[i].value.length > 0) {
                        this.elements[i].style.color = '#E02A78';
                     }else {
                        this.elements[i].style.color = '#000000';
                     }
                  }
               }else {
                     if(this.element.value.length > 0) {
                        this.element.style.color = '#E02A78';
                     }else {
                        this.element.style.color = '#000000';
                     }
               }
            }
         }else {
            this.setTextcolor('#000000');
            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;
            }
         }
      }else{
         if(this.element.value.length > 0) {
            result = false;
         }else {
            result = true;
         }
      }
      return result;
   }
   function field_isRequired() {
      return this.required;
   }
}

function postalcode(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 telephone(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 onlyNumbers(field) {
   strValue = document.getElementById(field).value;       
   //var arrMatch=new RegExp("^[0-9\-\+\(\) ]{2,8}$").exec(strValue);
   var arrMatch=new RegExp("^[0-9]*$").exec(strValue);

   if(!arrMatch) { 
      result = false;
   }else {
      result = true;
   }
 
   return result;      
}

function checked(field){
	if(document.getElementById(field).checked == 1){
		result = true;
	}else{
		result = false;	
	}
	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;
}

