window.onload = FormOnLoad;

var lastPcChecked = null;
var lastHuisnrChecked = null;

var idVoorletters;
var idPostcode;
var idWoonplaats
var idStraatnaam;
var idHuisnr;
var classVoorletters;
var field_id_voorletters;

// NB: It would be better to move this hard coded language label to somewhere else.
var e_zipcode_retrieve = "Deze postcode kan niet gevonden worden. Voer alsjeblieft je straat en woonplaats in.";

function FormOnLoad() {
    if(field_id_voorletters != null) {
        var elmVoorletters = document.getElementById(field_id_voorletters);
        if(document.addEventListener) {
            elmVoorletters.addEventListener("blur", voorlettersChanged, false);
        } else {
            elmVoorletters.attachEvent("onblur", voorlettersChanged);
        }
    }
    if(idVoorletters != null) {
        var elmVoorletters = document.getElementById(idVoorletters);
        if(document.addEventListener) {
            elmVoorletters.addEventListener("blur", voorlettersChanged, false);
        } else {
            elmVoorletters.attachEvent("onblur", voorlettersChanged);
        }
    }
    
    if(classVoorletters != null) {
	    var elClassVoorletters = document.getElementsByClassName(classVoorletters, "input");
	    if(elClassVoorletters)	{
	  		for (var i=0; i < elClassVoorletters.length; i++) {
	  			if(document.addEventListener)	{
	  				elClassVoorletters[i].addEventListener("blur", voorlettersChanged, false);
	  			}	else {
	  				elClassVoorletters[i].attachEvent("onblur", voorlettersChanged);
	  			}
	  		}
	  	}
		}
    
    if (idPostcode && idHuisnr && idStraatnaam && idWoonplaats) {
        var elmPostcode = document.getElementById(idPostcode);
        if (elmPostcode) {
        	 if(document.addEventListener) {
        		 elmPostcode.addEventListener("change", postcodeChanged, false);
        		 elmPostcode.addEventListener("blur", postcodeChanged, false);
	         } else {
	        	 elmPostcode.attachEvent("onchange", postcodeChanged);
	        	 elmPostcode.attachEvent("onblur", postcodeChanged);
	         }
        }
        var elmHuisnr = document.getElementById(idHuisnr);
        if (elmHuisnr) {
        	if(document.addEventListener) {
        		elmHuisnr.addEventListener("change", postcodeChanged, false);
        		elmHuisnr.addEventListener("blur", postcodeChanged, false);
        	} else {
        		elmHuisnr.attachEvent("onchange", postcodeChanged);
        		elmHuisnr.attachEvent("onblur", postcodeChanged);
        	}
        }
        if (elmPostcode && elmHuisnr) {
            setTimeout("postcodeChanged()", 50);
        }
    }

    if (document.getElementById("kieslotenFlash")) {
        setTimeout("NrOfLotsChanged()", 50);
    }
    
    var idAddLot = document.getElementById("addLotNr");
	if (idAddLot) { 
		if(document.addEventListener) {
			// REGISTERING THE EVENTS FOR DOM COMPLIANT BROWSERS
			idAddLot.addEventListener("click", addLotNummer, false);
		} else {
			// REGISTERING THE EVENTS FOR IE
			idAddLot.attachEvent("onclick", addLotNummer);
		}
	}
	
	for (i=1;i<6;i++) {
		var lotEl = document.getElementById("lotnummer"+i);
		if(lotEl != null) {
	        if(document.addEventListener) {
	        	lotEl.addEventListener("blur", toUpperCase, false);
	        	lotEl.addEventListener("blur", checkForDuplicateLots, false);
	        	lotEl.addEventListener("keyup", lotsChanged, false);
	        } else {
	        	lotEl.attachEvent("onblur", toUpperCase);
	        	lotEl.attachEvent("onblur", checkForDuplicateLots);
	        	lotEl.attachEvent("onkeyup", lotsChanged);
	        }
	    }
	}
	
	hideLotNummers();
	
	disableCopyForElement(document.getElementById("Vultercontrolenogmaalsjee-mailadresin"));
	disableCopyForElement(document.getElementById("E-mailadres"));
}

function disableCopyForElement(elm){
    if (elm!=null) {
                elm.setAttribute('onKeyDown',"return DisableCtrlKey(event)");
                elm.setAttribute('oncopy','return false;');
                elm.setAttribute('onpast','return false;');
                elm.setAttribute('oncut','return false;');
    }
}

function DisableCtrlKey(e) {
    var code = (document.all) ? event.keyCode:e.which;
    if (parseInt(code)==17) {
                if (window.event) {//IE
                           window.event.returnValue = false;
                } else {//Firefox
                           e.preventDefault();
                }
    }
}

function enableFields() {
    // Enable woonplaats + straatnaam, otherwise sessionvalues will be empty
    if (idWoonplaats) {
        var elmWoonplaats = document.getElementById(idWoonplaats);
        if (elmWoonplaats) {
            elmWoonplaats.disabled = false;
        }
    }

    if (idStraatnaam) {
        var elmStraatnaam = document.getElementById(idStraatnaam);
        if (elmStraatnaam) {
            elmStraatnaam.disabled = false;
        }
    }
}

function voorlettersChanged(e) {
	if(field_id_voorletters != null) {
		var elVoorletters = document.getElementById(field_id_voorletters);
  	if(elVoorletters)	{
  		changeVoorletters(elVoorletters);
  	}
	}
	if(idVoorletters != null) {
		var elVoorletters = document.getElementById(idVoorletters);
  	if(elVoorletters)	{
  		changeVoorletters(elVoorletters);
  	}
	}
	if(classVoorletters != null) {
	// IE doesn't handle this object due to event bubbling, so retreive objects all over again
  	var elClassVoorletters = document.getElementsByClassName(classVoorletters, "input");
  	if(elClassVoorletters)	{
  		for (var i=0; i < elClassVoorletters.length; i++) {
  			changeVoorletters(elClassVoorletters[i]);
  		}
  	}
	}    
}

function changeVoorletters(elVoorletters) {
	var voorletters = elVoorletters.value;
	if(voorletters != null && voorletters != "") {
		var voorletters_length = 5;
		var voorletters_pattern = /[^a-z]/ig;

		var voorletters = voorletters.replace(voorletters_pattern, '');
		var voorletters = voorletters.toUpperCase();
		var voorletters_formatted = '';

		for(var i = 0; i < voorletters.length && i < voorletters_length; i++) {
			voorletters_formatted += voorletters.charAt(i) + '.';
		}

		voorletters_formatted = voorletters_formatted.replace(/^\s+/, '');
		voorletters_formatted = voorletters_formatted.replace(/\s+$/, '');
		voorletters_formatted = voorletters_formatted.replace(/^T.H/, 'Th');

		elVoorletters.value = voorletters_formatted;
	}	
}

function toUpperCase(evt) {
	var elm = (evt.target) ? evt.target : evt.srcElement;
	if (elm !=null && elm != "") {
	    var val = elm.value;
	    if(val != null && val != "") {
	    	elm.value = val.toUpperCase();
	    }
	}
}

/**
 * Event handling for zipcode changes
 */
function postcodeChanged(e) {
  var elmPostcode = document.getElementById(idPostcode);
  var elmHuisnr = document.getElementById(idHuisnr);
  var elmStraatnaam = document.getElementById(idStraatnaam);
  var elmWoonplaats = document.getElementById(idWoonplaats);
  if(elmPostcode && elmHuisnr && elmStraatnaam && elmWoonplaats) {
    var postcode        = elmPostcode.value;
    var huisnummer  = elmHuisnr.value;
    if (postcode != null && postcode != "") {
      postcode = postcode.toUpperCase();
      postcode = postcode.replace(" ", "");
      postcode = postcode.substr(0,6);
      elmPostcode.value = postcode;
    }
    if (elmStraatnaam && elmWoonplaats && (postcode != lastPcChecked || huisnummer != lastHuisnrChecked)) {
      if (postcode != null && postcode != "" && huisnummer != null && huisnummer != "") {
        lastPcChecked = postcode;
        lastHuisnrChecked = huisnummer;
        testPostcode(postcode, huisnummer, elmStraatnaam.value, elmWoonplaats.value);
      } else {
        elmStraatnaam.value= "";
        elmWoonplaats.value= "";
        elmStraatnaam.disabled = true;
        elmWoonplaats.disabled = true;
      }
    }
  }
}


/**
 * Sets the errors in a fieldset by the fieldset id. Shows them if they are present, hides them otherwise.
 */
function setErrorsById (setid, errors) {
    var elSet = document.getElementById(setid);
    return setErrors(elSet, errors);
}

/**
 * Sets the error in a fieldset by an formelement id in the fieldset. Shows them if they are present, hides them otherwise.
 */
function setErrorByElement (id, error, isNormalForm) {
    if(id != null && id != "") {
      var fieldSet = getFieldSet(id, isNormalForm);
      if (!fieldSet) {
    		fieldSet = getFormularDiv(id);
    		/** Parent node contains errorMessage div **/
    		//if (fieldSet) fieldSet = fieldSet.parentNode;
    		isNormalForm = false;
    	}
      
      if(fieldSet && !isNormalForm) {
          if (error) {
              var errors = new Array(1);
              errors[0] = error;
              setErrors(fieldSet, null, errors, isNormalForm);
          } else {
              setErrors(fieldSet, null, null, isNormalForm);
          }
      } else if (fieldSet && isNormalForm) {
          var legendElement = getLegend(id);
          var allInputs = document.getElementsByName(id);

          if (allInputs && error) {
              var errors = new Array(1);
              var inputElement = allInputs[0];          
              errors[0] = error;
              setErrors(inputElement, legendElement, errors, isNormalForm);
          } else if(allInputs) {
              var inputElement = allInputs[0];          
              setErrors(inputElement, legendElement, null, isNormalForm);
          }
      } else {
          if (error != null){ 
        	  alert(error);
          }
      }
    }
}

/**
 * Sets the error of a form.
 */
function setFormError(formid, error) {
    if(error != null && error != "" && error != "null") {
        alert(error);
    } else {
        alert(e_form_default);
    }
}

/**
 * Sets the errors in a fieldset. Shows them if they are present, hides them otherwise.
 */
function setErrors (elSet, legendElement, errors, isNormalForm) {
    valid = errors == null || errors.length == 0;
    if(elSet) {
        if(!valid) {
            showErrors(elSet, legendElement, errors, isNormalForm);
        } else {
            hideErrors(elSet, legendElement, null, isNormalForm);
        }
    } else if (!valid){
        alert(errors.join('\n'));
    }

    return valid;
}

/**
 * Shows the errors in a fieldset.
 */
function showErrors (elSet, legendElement, errors, isNormalForm) {
    if(legendElement == null) {
      addClass(elSet, "error");
      var elError = getErrorElement(elSet);
      if(elError != null) {
          elError.innerHTML = errors.join("<br />");
      }
    } else if(legendElement != null) {
      addClass(elSet, "error");
      addClass(legendElement, "error");      

//    var elError = document.getElementById("formErrorMessage");
      var elError = $(elSet).parents("form").find("p#formErrorMessage");
      if(elError != null) {
//        elError.innerHTML = errors.join("<br />");
          elError.html(errors.join("<br />"));    
      }
    }
}

/**
 * Hides errors in a fieldset.
 */
function hideErrors (elSet, legendElement) {
    if(legendElement == null) {
      removeClass(elSet, "error");
      var elError = getErrorElement(elSet);
      if(elError != null) {
          elError.innerHTML = "";
      }
    } else {
      removeClass(elSet, "error");
      removeClass(legendElement, "error");

//    var elError = document.getElementById("formErrorMessage");
      var elError = $(elSet).parents("form").find("p#formErrorMessage");
      if(elError != null) {
//        elError.innerHTML = "";
          elError.html("");
      }
    }    
}

/**
 * Determine the first decendant of an element with class errorMessage.
 */
function getErrorElement(element) {   
    if(element != null) {
        var elements = element.getElementsByTagName("*");
        
        if(elements != null && elements.length != 0) {
            for(var i=0; i<elements.length; i++) {
                if(elements[i].className == "errorMessage") {
                    return elements[i];
                }
            }
        }
    }
}

/**
 * Determine the fieldset element based on the id of a formelement.
 */
function getFieldSet(id, isNormalForm) {
  if(isNormalForm == false) {
    var fieldSet = document.getElementById(id);
  } else {
    var fieldSet = document.getElementById("fieldset" + id);
  }
  
  var fieldSetFound = false;
  var maxLoop = 10;
  
  while(fieldSet != null && fieldSet.parentNode && !fieldSetFound && maxLoop >= 0) {
    fieldSet = fieldSet.parentNode;
    if(fieldSet.tagName == 'FIELDSET'){
      fieldSetFound = true;
    }
    maxLoop--;
  }
  
  if(fieldSetFound) {
    return fieldSet;
  } else {
    return null;
  }
}

function getLegend(id) {
  var legend = document.getElementById("legend" + id);
  
  if(!legend) {
    return null;
  } else {
    return legend;
  }
}

/**
 * Retrieves an address based on a zipcode and housenumber
 */
function testPostcode(postcode, huisnummer, street, city) {
    if (street == null) {
        street = "";
    }
    if (city == null) {
        city = "";
    }

  var myPostcodeScript = "/web/wcbservlet/nl.gx.ngdl.ngdlformcomponents.servlet.zipcodexmlhttprequestservlet?zipcode=" + postcode + "&housenumber=" + huisnummer + "&street=" + street + "&city=" + city;
  if (0 > postcode.search(/[0-9]{4}[A-Za-z]{2}/)) {
    return false;
  }
  var xmlHttp = null;
  if (typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
  }
  if (!xmlHttp) {
    try {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
      xmlHttp = null;
      }
    }
  }

  if (xmlHttp) {
    xmlHttp.open('GET', myPostcodeScript, true);
    xmlHttp.onreadystatechange = function () {
      if (xmlHttp.readyState == 4) {
        var responseString = xmlHttp.responseText;
        setAddress(responseString)
      }
    };
    xmlHttp.send(null);
  } else {
    return false;
  }
}

/**
 * Sets the address in the form (address is of format streetname|city)
 */
function setAddress(address) {

    var elmStraatnaam = document.getElementById(idStraatnaam);
    var elmWoonplaats = document.getElementById(idWoonplaats);

    if (elmStraatnaam && elmWoonplaats) {
        var strClassStraat = elmStraatnaam.className? elmStraatnaam.className.split(" ")[0]: "";
        var strClassPlaats = elmWoonplaats.className? elmWoonplaats.className.split(" ")[0]: "";

        if(address != "") {
            var myPlaats = address.split("|");
            var wasValid = elmStraatnaam.disabled && elmWoonplaats.disabled;
            elmStraatnaam.value = myPlaats[0];
            elmWoonplaats.value = myPlaats[1];

            if (myPlaats[2] == 'true') {
                elmStraatnaam.disabled = true;
                elmWoonplaats.disabled = true;
                elmStraatnaam.className = strClassStraat + ' readOnly';
                elmWoonplaats.className = strClassPlaats + ' readOnly';
                setLabel(elmStraatnaam.parentNode,"readOnly");
                setLabel(elmWoonplaats.parentNode,"readOnly");
                setErrorByElement(idPostcode);
            } else {
                elmStraatnaam.disabled = false;
                elmWoonplaats.disabled = false;
                elmStraatnaam.className = strClassStraat;
                elmWoonplaats.className = strClassPlaats;
                setLabel(elmStraatnaam.parentNode,"");
                setLabel(elmWoonplaats.parentNode,"");

                if (wasValid || elmStraatnaam.value == '' || elmWoonplaats.value == '') {
                    setErrorByElement(idPostcode, e_zipcode_retrieve);
                }
            }
        }
    }
}

/**
 * Sets the label of an element
 */
function setLabel(labelElement,classElement) {
  var labelElements = labelElement.getElementsByTagName('label');
  for(var i = 0; i < labelElements.length; i++) {
    labelElements[i].className = classElement;
  }
}

/**
 * Adds a class to an element.
 */

function addClass(target, classValue)
{
    if(target != null) {
        var pattern = new RegExp("(^| )" + classValue + "( |$)");

        if (!pattern.test(target.className)) {
            if (target.className == "") {
                target.className = classValue;
            } else {
                target.className += " " + classValue;
            }
        }
    }

    return true;
}

/**
 * Removes a class from an element.
 */

function removeClass(target, classValue)
{
    if(target != null) {
        var removedClass = target.className;
        var pattern = new RegExp("(^| )" + classValue + "( |$)");

        removedClass = removedClass.replace(pattern, "$1");
        removedClass = removedClass.replace(/ $/, "");

        target.className = removedClass;

        return true;
    }
}

/**
 * Checks if a value is empty.
 */
function isEmpty(value) {
    return value == null || value == "";
}

/**
 * Trims a string.
 */
function trim(value) {
   value = value.replace(/^\s+/,'');
   value = value.replace(/\s+$/,'');
   return value;
}

/**
 * Add value to an array
 */
function addValue(values, value) {
    var newValues;
    if(values == null) {
        newValues = new Array(1);
        newValues[0] = value;
    } else {
        newValues = new Array(values.length + 1);
        for(var i=0; i<values.length; i++) {
            newValues[i] = values[i];
        }
        newValues[values.length] = value;
    }
    return newValues;
}

/**
 * Generic method for adding onload funtions
 */
function addOnLoadEvent(func) {
  if (typeof window.addEventListener != 'undefined') {
    window.addEventListener('load', func, false);
  } else if (typeof document.addEventListener != 'undefined') {
    document.addEventListener('load', func, false);
  } else if (typeof window.attachEvent != 'undefined') {
    window.attachEvent('onload', func);
  } else {
    var oldfunc = window.onload;
    if (typeof window.onload != 'function') {
      window.onload = func;
    } else {
      window.onload = function() {
        oldfunc();
        func();
      };
    }
  }
}

/**
 * Tooltip functions
 */
function tooltip(obj,txt) {
  txt = (typeof txt == 'undefined') ? obj.title : txt;
  myPosition = findPos(obj);
  myTooltip = document.getElementById('spmTooltip');
  var elmTxt = myTooltip.getElementsByTagName("div")[1]? myTooltip.getElementsByTagName("div")[1]: null;
  if (elmTxt) {
    elmTxt.innerHTML = txt;
  }
  myTooltip.style.left = (myPosition[0] - 38)+"px";
  myTooltip.style.top = (myPosition[1] - myTooltip.offsetHeight)+"px";
  myTooltip.style.visibility = "visible";
}

function tooltipHide() {
  document.getElementById('spmTooltip').style.visibility = "hidden";
}

function ttpKeepAlive(obj) {
  document.getElementById(obj.id).style.visibility = "visible";
}

function ttpHide(obj) {
  document.getElementById(obj.id).style.visibility = "hidden";
}

function findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    curleft = obj.offsetLeft
    curtop = obj.offsetTop
    while (obj = obj.offsetParent) {
      curleft += obj.offsetLeft
      curtop += obj.offsetTop
    }
  }
  return [curleft,curtop];
}

function getFormularDiv (id) {
	var parent;			// the parent
	var depth = 1;			// current depth
	var maxDepth = 4;		// max search depth
	var divClass = "formular";	// the class we re searching for
	formElement = document.getElementById(id);
	
	// search the formular div
	if (!formElement) {
		return null;
	}

	// if there is no parentnode, the element is a radiobutton,
	// so we have to get the first arrayelement to continue
	if (!formElement.parentNode) formElement = formElement[0];
	parent = formElement;
	
	var isFound = false;
	// loop through the parents until we find formular or until we went too deep
	while(parent.parentNode && !isFound && depth < maxDepth){
		parent = parent.parentNode;
		sClassNames = parent.className.split(' ');
		for (var i = 0; i < sClassNames.length; i++) {
			if (sClassNames[i] == divClass) {
				isFound = true;
				break;
			}
		}		
		depth++;
	}
	// if we didn t find the formular, the element was not in a subform...
	// to make the element red we select the parent instead
	if(!isFound) {
		parent = formElement.parentNode;
	}
	
	return parent;
}

//--------------------------------------------------------
// Copy from NPL: function setFormularError(formElement, isFout, message, toonMessage)
//  d.d.20090316: change: use BGL solution for showing errors
//--------------------------------------------------------
//
//  This function finds the parent div 'formular' and encapsulates it in a div class="formularError".
//  This will result in a red box around formular.
//  input:
//      - formElement -> the element which contains (or doesn't contain) a error
//      - isFout -> boolean tests is the formelement is fout
//      - message -> the message to show when it's isFout (else the old message is cleared and the red box is removed)
//      - toonMessage -> als deze op true staat dan tonen we de error message in het form...anders in een alertbox
//
function setFormularError(formElement, isFout, message, toonMessage)
{
    var strId = formElement? formElement.id: "";
    
    if (!formElement) {
        if (isFout && toonMessage && message != "@errormessage@") {
            alert(message);
        }
        return false;
    }

    if(isFout && toonMessage) {
    	setErrorByElement(strId, message, false);
    } else {
        setErrorByElement(strId, null, false);
    }
}

// This works a bit different, it uses only the formpartidentifier because in these forms
// the ID could be the alias and not the identifier. Most sales stuff won't work.
function setNormalFormularError(formPartId, isFout, message, toonMessage)
{
    if (!formPartId || formPartId == "") {
        if (isFout && toonMessage && message != "@errormessage@") {
            alert(message);
        }
        return false;
    }

    if(isFout && toonMessage) {
        setErrorByElement(formPartId, message, true);
    } else {
        setErrorByElement(formPartId, null, true);
    }
}

//
// RESET FUNCTIONALITY FOR INPUT FIELDS...
// INITIALIZE WITH boxReset(id,id...)
//

var inpBox = new Object();

function boxReset()
{
    var myElem;
    for(var i=0;i<arguments.length;i++) {
        myElem = document.getElementById(arguments[i]);

        if (myElem) {
            inpBox[myElem.id] = myElem.value;


            if (document.addEventListener) {
              // REGISTERING THE EVENTS FOR DOM COMPLIANT BROWSERS
                myElem.addEventListener("focus",boxGotFocus,false);
                myElem.addEventListener("blur",boxLostFocus,false);
            } else {
              // REGISTERING THE EVENTS FOR IE
                myElem.attachEvent("onblur",boxLostFocus);
                myElem.attachEvent("onfocus",boxGotFocus);
            }

        }
    }
}

function boxGotFocus(e)
{
  myBox = (!window.event) ? e.target:window.event.srcElement;

  if (myBox.value == inpBox[myBox.id])
  {
    myBox.value = "";
  }
}

function boxLostFocus(e)
{
  myBox = (!window.event) ? e.target:window.event.srcElement;

  if (myBox.value == "")
  {
    myBox.value = inpBox[myBox.id];
  }
}

function toonBenificient() {
	var x = document.getElementById("beneficient").selectedIndex;
	if (x == 0){
		document.getElementById("beniSelectie").firstChild.nodeValue="onze goede doelen";
	} else {
		document.getElementById("beniSelectie").firstChild.nodeValue=document.getElementById("beneficient").options[x].text;
	}	
}

/*
 * Lotnummers
 */
/** Auto update lots input fields. */
function lotsChanged(evt) {
	var elm = (evt.target) ? evt.target : evt.srcElement;
	if (evt.keyCode == 8) {
		return; //skip check when hit the backspace
	}
	if (elm !=null && elm != "" && elm.value != null) {
		if (elm.value.length==11 || elm.value.length==2) {
			elm.value = elm.value + "-";
		} else if (elm.value.length==14) {
			elm.blur(); //lost focus
		}
	}
}
function checkForDuplicateLots() {
	for (i=1;i<6;i++) {
		var lotEl1 = document.getElementById("lotnummer"+i);
		if (lotEl1!=null && lotEl1.value!='' && lotEl1.value!='06-') {
			if (!isLotNummerValid(lotEl1.value)) {
				var message = 'Er is iets mis gegaan. Het ingevulde lotnummer is niet juist. ';
				message += 'Een lotnummer bestaat uit een mobiel telefoonnummer met daarachter twee karakters. ';
				message += 'VB: 06-12345678-AA. Wil je het lotnummer nogmaals invullen?';
				setFormularError(lotEl1, true, message, true);
				return false;
			}
			// check for duplicate nrs
			for (j=1;j<6;j++) {
				if(i==j) {
					continue;
				}
				var lotEl2 = document.getElementById("lotnummer"+j);
				if (lotEl2!=null && lotEl2.value!='' && lotEl2.value!='06-') {
					if (lotEl1.value.toUpperCase()==lotEl2.value.toUpperCase()) {
						var message = 'Er is iets mis gegaan. Heb je misschien hetzelfde lotnummer nogmaals ingevuld? ';
						message += 'Een lotnummer is uniek, dus het is niet mogelijk om een lotummer meerdere keren in te vullen.';
						setFormularError(lotEl2, true, message, true);
						return false;
					}
				}
			}
		}
		
	}
	setFormularError(document.getElementById("lotnummer1"), false, "", true);
	return true;
}
function hideLotNummers() {
	for (i=2;i<6;i++) {
		var lotEl = document.getElementById("lotnummer"+i);
		if (lotEl!=null) {
			if (lotEl.value.length>3) {
				continue;
			}
			lotEl.style.display='none';
			// hide BRs
			var br = lotEl.parentNode.previousSibling;
			console.log('node'+br.nodeName);
			if (br.nodeName=='BR'){ //IE
				br.style.display='none';
			}
			var br2 = br.previousSibling;
			if (br2.nodeName=='BR'){ //FF
				br2.style.display='none';
			}
		}
	}
}
function isLotNummerValid(lotNr) {
	if (lotNr==null) {
		return false;
	}
	if (0 > lotNr.search(/06-[0-9]{8}-[A-Za-z]{2}/)) {
		return false; 
	}
	return true;
}
function addLotNummer(e) {
	if (checkForDuplicateLots()) {
		for (i=2;i<6;i++) {
			var lotEl = document.getElementById("lotnummer"+i);
			if (lotEl!=null) {
				if (lotEl.style.display=='none') {
					if (isLotNummerValid(document.getElementById("lotnummer"+(i-1)).value)) {
						showLotNr(i);
						return;
					}
				}
			}
		}
	}
}
function showLotNr(x) {
	var lotEl = document.getElementById("lotnummer"+x);
	if (lotEl!=null) {
		var br = lotEl.parentNode.previousSibling;
		if (br.nodeName=='BR'){ //IE
			br.removeAttribute('style');
		}
		var br2 = br.previousSibling;
		if (br2.nodeName=='BR'){ //FF
			br2.style.display='inline';
			br2.removeAttribute('style');
		}
		lotEl.style.display='inline';
	}
}

if (document.getElementsByClassName == undefined) {
	document.getElementsByClassName = function(className, tagName)	{
		var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
		if (tagName == null || tagName == '') tagName = '*';
		var allElements = document.getElementsByTagName(tagName);
		var results = [];

		var element;
		for (var i = 0; (element = allElements[i]) != null; i++) {
			var elementClass = element.className;
			if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
				results.push(element);
		}

		return results;
	}
}
