<!--
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  }
  else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(initform);

function addAfterLoadEvent(func) {
  if (typeof afterLoad != 'undefined') {
    var oldonload = afterLoad;
  }
  if (typeof afterLoad != 'function') {
    afterLoad = func;
  }
  else {
    afterLoad = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function initform() {
    hide_eindtekst();
    var endelem = false;
    var applyganaar = false;
    var oldid = 0;
    var currentpage = nextpagid-1;
    if (typeof(volgorde) != 'undefined') {
        for(id in volgorde) {
            if (volgorde[id]['pagid'] == undefined || volgorde[id]['pagid'] >= currentpage) {
                applyganaar = false;
                endelem = false;
                force_to_end = false;
                try {
                    if ((volgorde[id]['type'] == 'date' || volgorde[id]['type'] == 'radio' || volgorde[id]['type'] == 'listbox' || volgorde[id]['type'] == 'is_inhabitant' || volgorde[id]['type'] == 'has_outstanding_case' || volgorde[id]['type'] == 'is_belastingplichtig' || volgorde[id]['type'] == 'heeft_machtiging_afgegeven' || volgorde[id]['type'] == 'has_registered_dogs' || volgorde[id]['type'] == 'has_registered_partner' || volgorde[id]['ganaar']) && volgorde[id]['actie'] == '1') {
                        if(typeof(volgorde[id]['option'])=='undefined' && volgorde[id]['type'] == 'date'){
                            volgorde[id]['option'] = process_date(volgorde[id]['soort'],volgorde[id]['id'],1);
                        }

                        if (volgorde[id]['verplicht'] == undefined) {
                            volgorde[id]['verplicht'] = ''
                        }

                        if (volgorde[id]['type'] == 'radio') {
                            element_name = 'xml_'+volgorde[id]['block']+'_'+volgorde[id]['id']+'_'+volgorde[id]['soort']+'_'+volgorde[id]['type'];
                            applyganaar = check_radio_checked(element_name,volgorde[id]['verplicht']);
                        } else if (volgorde[id]['type'] == 'listbox') {
                            listelement = document.getElementById('xml_'+volgorde[id]['block']+'_'+volgorde[id]['id']+'_'+volgorde[id]['soort']+'_'+volgorde[id]['type']);
                            if (listelement.disabled == false) {
                                if (volgorde[id]['verplicht'] == true && listelement.selectedIndex == 0 && volgorde[id]['defaultvalue'] == '') {
                                    force_to_end = true;
                                } else if (volgorde[id]['verplicht'] == true) {
                                    applyganaar = true;
                                } else if (volgorde[id]['defaultvalue'] != undefined && volgorde[id]['defaultvalue'] != '') {
                                    applyganaar = true;
                                } else if (volgorde[id]['defaultvalue'] == undefined && listelement.selectedIndex > 0) {
                                    applyganaar = true;
                                }
                            }
                        }

                        if (((volgorde[id]['option'] != 'ganaar' || applyganaar == true) || ((volgorde[id]['type'] == 'text' || volgorde[id]['type'] == 'date' || volgorde[id]['type'] == 'area') && volgorde[id]['option'] == 'ganaar')) || skipganaaroninit[volgorde[id]['id']] != 1) {
                            // Remember oldid because check() will juggle with
                            // volgorde
                            oldid = id;
                            endelem = check_end(volgorde[id]['soort'], volgorde[id]['id'], volgorde[id]['option'], volgorde[id]['block'], true);
                            check(volgorde[id]['soort'], volgorde[id]['id'], volgorde[id]['option'], volgorde[id]['block'], true, true, force_to_end);
                            id = oldid;
                            if(endelem == true && volgorde[id]['type'] != "text"){
                                break;
                            }
                        }
                    }
                } catch(e) {}

                try {
                    if (volgorde[id]['type'] == 'arisophalen') {
                        aris_product_check_all();
                    }
                } catch (e) {}
            }
        }
    }
}

function check_end(elementsoort,id,waarde,block,init) {
    var eindtekst = false;
    var bereik=0;

    try {
        if (vragen[elementsoort][id][oude_waarde[elementsoort][id]]['vraag'] == 'EINDE') {
            bereik = volgorde.length;
        } else {
            bereik=vragen[(vragen[elementsoort][id][oude_waarde[elementsoort][id]]['soort'])][(vragen[elementsoort][id][oude_waarde[elementsoort][id]]['vraag'])]['volgorde'];
        }
    } catch(err) {
        bereik=0;
    }

    if (oude_waarde[elementsoort] != undefined && oude_waarde[elementsoort][id]!='ganaar') {

        for(j=vragen[elementsoort][id]['volgorde']+1;j<bereik;j++) {
            element_aanzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], init);
        }

        // Tussenliggende vragen uitzetten of verbergen
        try {
            if (vragen[elementsoort][id][waarde]['vraag'] == 'EINDE') {
                bereik = volgorde.length;
            } else {
                bereik=vragen[(vragen[elementsoort][id][waarde]['soort'])][(vragen[elementsoort][id][waarde]['vraag'])]['volgorde'];
                bereik_type=vragen[(vragen[elementsoort][id][waarde]['soort'])][(vragen[elementsoort][id][waarde]['vraag'])]['type'];

                eindtekst = true;
            }
        } catch(err) {
            eindtekst = false;
        }
    }
    return eindtekst;
 }

function hide_eindtekst() {
  if (typeof(volgorde) != 'undefined') {
     for(id in volgorde) {
        try {
            if (volgorde[id]['type'] == 'eindtekst') {
                var element_name = 'eindtekst_container_'+volgorde[id]['block']+'_'+volgorde[id]['id']+'_'+volgorde[id]['soort']+'_'+volgorde[id]['type'];
                
                var elem = document.getElementsByTagName('div');
                var arr = new Array();
                for(i = 0,iarr = 0; i < elem.length; i++) {
                     att = elem[i].getAttribute("name");
                     if(att == element_name) {
                         elem[i].style.display = 'none';
                     }
                }
            }
        } catch(e) {}
    }
}
}

function string2int(str) {
    return((new Number(str)).valueOf());
}

// Functie is een workaround voor de selectbox, deze gebruikt onclick in een
// option, dat werkt niet in IE. Deze functie vervangt de onclick
// functionaliteit
function process_option(name,id,value,block,multiple) {
    if (multiple) {
        idname = 'xml_'+block+'_'+id+'_'+name+'_listbox[]';
    } else {
        idname = 'xml_'+block+'_'+id+'_'+name+'_listbox';
    }
    var selected_object = document.getElementById(idname);
    for(element in vragen[name][id]['values']) {
        if (value == vragen[name][id]['values'][element]) {
            check(name,id,element,block);
            break;
        }
    }
    try {
        var i=selected_object.options.length-1;
        text_area = 'xml_'+block+'_'+id+'_'+name+'_listbox_other';
        var divname = 'alt_html_div_' + 'xml_'+block+'_'+id+'_'+name+'_listbox';
        var alt_html_div = document.getElementById(divname);
        var text_area_default = document.getElementById(text_area);
        if (selected_object.options[i].selected) {
         alt_html_div.style.display  = 'block';
        } else {
         alt_html_div.style.display  = 'none';
         text_area_default.value = '';
        }
    } catch (err) {
    }

}

function remove_attached(file_name) {
    if (document.getElementById(file_name+'_checkbox').checked) {
        document.getElementById(file_name).value='';
        document.getElementById(file_name+'_div').style.display='none';
    }
}

function presubmit() {
    if (document.frm.preview_skip_checks!=null && document.frm.preview_skip_checks.checked==true) {
        document.frm.submit()
    } else {
        if (validate_form()) {
            document.frm.submit()
        }
    }
}

// Make these globally available
var error = 0;
var errormsg = '';

function validate_form() {
    disable_submit('bezig...');

    var tmperror = false;
    var iszijn = 'is';
    var fouten = 'fout';
    var block = 1;

    var element;
    var type;
    var value;
    var isverplicht;
    var herhaal;

    var source_id;
    var source_element;
    var verify;

    var elname;

    var alternative_error = '';

    error = 0;
    errormsg = '';

    for(id in volgorde) {
        alternative_error = '';

        type = volgorde[id]['type'];
        if (volgorde[id]['herhaal'] || volgorde[id]['herhaal'] == 0) {
            herhaal = volgorde[id]['herhaal'];
        } else {
            herhaal = null;
        }
            if (!type) {
                type = 'text';
            }
        label = volgorde[id]['label'];
        if (!label) {
            label = type;
        }

        if (volgorde[id]['vraagnummer'] != undefined) {
            label = volgorde[id]['vraagnummer']+'. '+label;
        }

        if(volgorde[id]['alternative'] && type=='radio') {
            elname = 'xml_'+block+'_'+volgorde[id]['id']+'_'+volgorde[id]['soort']+'_'+type+'_other';
        } else {
            elname = 'xml_'+block+'_'+volgorde[id]['id']+'_'+volgorde[id]['soort']+'_'+type;
        }

        if (volgorde[id]['verplicht']) {
            isverplicht = true;
        } else {
            isverplicht = false;
        }

        element=null;
        //Search specific element
        if(elname.search("inputtabel")>0){
            element = element_search(elname, 'inputtabel');
        }else{
        element=document.getElementById(elname);
        }

        elements = null;

        if (!element) {
            if (type != 'radio' && type != 'listbox') {
                elements=document.getElementsByName(elname+'[]');
            } else {
                elements=document.getElementsByName(elname);
            }
            if (!elements || elements.length==0) {
                elements=document.getElementById(elname+'[]');

            }
            if (elements && elements.length > 0) {
                for(i=0;i<elements.length;i++) {
                    o = elements[i];
                    if (o.checked || o.selected || o.disabled) {
                        element = o;
                    }
                }
            }
        } else if(is_array(element)){
            elements = element;
        }
        if (herhaal!=null) {
            try {
                i = 1;
                while (i > 0) {
                    element = document.getElementById(elname+'_row'+i);
                    i++;
                    if (!element) {
                        i = 0;
                    } else if (!element.disabled && isverplicht && element.value=='') {
                        errormsg += '- U heeft niet alle onderdelen van het verplichte veld "' + label + '" ingevuld.\n';
                        error++;
                        i = 0;
                    }
                }
            } catch(e) {}
        } else if ((elements && elements.length>0 && !elements.disabled) || (element && !element.disabled)) {
            if (!element || element.value=='') {
                value = null;
            } else if(is_array(element)){
                value = new Array();
                for(colrow in element){
                    value[colrow] = document.getElementById(elname+'_'+colrow);
                }
            } else {
                value = element.value;
            }

            var alternative_value = value;
            label = volgorde[id]['label'];
            if (label == '') {
                label = volgorde[id]['type'];
            }

            if (volgorde[id]['vraagnummer'] != undefined) {
                label = volgorde[id]['vraagnummer']+'. '+label;
            }

            var checked_alternative = false;
            if(volgorde[id]['alternative'] == true && type != 'autocomplete'){
                areaname ='alt_html_div_xml_'+block+'_'+volgorde[id]['id']+'_'+volgorde[id]['soort']+'_'+type;
                var elem_areaname = document.getElementById(areaname);
                if(elem_areaname != null && elem_areaname.style.display == 'block') {
                    checked_alternative = true;
                    if (type == 'checkbox' || type == 'listbox' || type == 'radio') {
                        textareaname = 'xml_'+block+'_'+volgorde[id]['id']+'_'+volgorde[id]['soort']+'_'+type+'_other';
                        value = document.getElementById(textareaname).value;
                    }
                    if (value == null || value == '') {
                        alternative_error = '- U heeft geen waarde ingevuld bij "'+volgorde[id]['label']+'".\n';
                    }
                }
            }

            if (isverplicht == true) {
                if (type == 'lamsonq') {
                    var $lamsonq = $('#' + elname);
                    var lamsonq_product = $lamsonq.children('input.products').val();
                    var $lamsonq_product = $('#' + elname + '_product');
                    if ($lamsonq_product.length < 1) {
                        errormsg += '- Er zijn geen producten beschikbaar voor "' + lamsonq_product + '".\n';
                        error++;
                    } else if ($lamsonq_product.val() == '') {
                        errormsg += '- U heeft geen selectie gemaakt voor "' + lamsonq_product + '".\n';
                        error++;
                    } else {
                        var lamsonq_date = $lamsonq.children('input.dates').val();
                        var $lamsonq_date = $('#' + elname + '_date');
                        if ($lamsonq_date.length < 1) {
                            errormsg += '- Er zijn geen data beschikbaar voor "' + lamsonq_date + '".\n';
                            error++;
                        } else {
                            var selected_date = $lamsonq_date.val();
                            var aDate = selected_date.split('-');
                            if (selected_date == '') {
                                errormsg += '- U heeft het verplichte veld "' + lamsonq_date + '" niet ingevuld.\n';
                                error++;
                            } else if (/^[\d]{2}-[\d]{2}-[\d]{4}$/.test(selected_date) == false || $('div.lamsonq div.available_dates > input.' + aDate[2] + '-' + aDate[1] + '-' + aDate[0]).length < 1) {
                                errormsg += '- Het veld "' + lamsonq_date + '" bevat geen geldige datum.\n';
                                error++;
                            } else {
                                var lamsonq_time = $lamsonq.children('input.times').val();
                                var $lamsonq_time = $('#' + elname + '_time');
                                if ($lamsonq_time.length < 1) {
                                    errormsg += '- Er zijn geen tijden beschikbaar voor "' + lamsonq_time + '".\n';
                                    error++;
                                } else if ($lamsonq_time.val() == '') {
                                    errormsg += '- U heeft geen selectie gemaakt voor "' + lamsonq_time + '".\n';
                                    error++;
                                }
                            }
                        }
                    }

                } else if(document.frm.elements[elname] != undefined && (document.frm.elements[elname].type !='hidden' || type=='googlemap') && value !='') {
                    // Treat radio buttons slightly differently);
                    if(type=='radio' && document.frm.elements[elname] != ''){
                        if (volgorde[id]['alternative'] == true) {
                            elname = 'xml_'+block+'_'+volgorde[id]['id']+'_'+volgorde[id]['soort']+'_'+type;
                        }

                        var value = null;
                        // if the radio-list has only one option, it's non-traversable
                        if(typeof(document.frm.elements[elname].length)!='undefined'){
                            for (var i=0; i<document.frm.elements[elname].length; i++)  {
                                if (document.frm.elements[elname][i].checked == true)  {
                                    value = document.frm.elements[elname][i].value;
                                }
                            }
                        }else{
                            // only one option: treat it as an input element
                            if (document.frm.elements[elname].checked == true)  {
                                value = document.frm.elements[elname].value;
                            }
                        }
                        if (volgorde[id]['alternative'] == true && checked_alternative == true) {
                            value = alternative_value;
                        }
                    }
                    if (validate_empty(value) == true) {
                        if (type == 'listbox' || type == 'checkbox' || type == 'radio') {
                            errormsg += '- U heeft geen selectie gemaakt voor "' + label + '".\n';
                            error++;
                        } else if (type=='document' && document.frm.elements[elname+"uploaded"] != undefined) {
                            if (document.frm.elements[elname+"uploaded"].value == "") {
                            errormsg += '- U heeft het verplichte document "' + label + '" niet toegevoegd.\n';
                                error++;
                            }
                        } else {
                            errormsg += '- U heeft het verplichte veld "' + label + '" niet ingevuld.\n';
                        error++;
                    }
                    }
                }else if(document.frm.elements[elname+'[]'] != undefined && document.frm.elements[elname+'[]'].type !='hidden') {
                    if(type == 'listbox'){
                        var checkedcount = count_listbox(elname);
                    }else{
                        var checkedcount = count_checkbox(elname);
                    }
                    if(checkedcount==0){
                        error++;
                        errormsg += '- U heeft geen selectie gemaakt voor "' + label + '".\n';
                    } else {
                        if (alternative_error != '') {
                            error++;
                            errormsg += alternative_error;
                        } else {
                            value = alternative_value;
                        }
                    }
                }else if(document.frm.elements[elname+'[]'] != undefined && document.frm.elements[elname+'[]'].type =='hidden') {
                    if(elname=='xml_1_94_STANDAARDELEMENT_checkbox'){
                        error++;
                        errormsg += '- Omdat er voor "' + label + '" geen beschikbare keuzes zijn, kunt u het formulier niet voltooien.\n';
                    }
                }else if(document.frm.elements[elname] != undefined && document.frm.elements[elname].type =='hidden' && type == 'esrimap') {
                    if(value == null) {
                        error++;
                        errormsg += '- U moet tenminste kapvergunning aanvragen.\n';                    
                    }
                } else if (is_array(value)){
                    // if a element has more than one field an arrays of values is created
                    var array_empty = false;
                    for(colrow in value){
                        //Handle inputtables differently
                        if(type == 'inputtabel'){
                            if (validate_empty(document.frm.elements[elname+'_'+colrow].value) == true && document.frm.elements[elname+'_'+colrow].disabled == false) {
                                array_empty = true;
                            }
                        } else{
                            if (validate_empty(document.frm.elements[elname+'_'+colrow].value) == true) {
                                array_empty = true;
                            }
                        }
                    }
                    if(array_empty){
                        errormsg += '- U heeft van de verplichte velden van "' + label + '" een of meerdere niet ingevuld.\n';
                        error++;
                    }
                } else {
                    // All the other cases, like 'other' fields
                    if (value == '') {
                        error++;
                        errormsg += alternative_error;
                    }
                }
            }

            if ((type == 'numeriek' || type == 'housenumber') && value != null) {
                var allownegative = false;
                if (volgorde[id]['allownegative'] != undefined && volgorde[id]['allownegative'] == '1') {
                    allownegative = true;
                }

                shownumericerror = false;
                numericresult = check_numeric(value,allownegative,volgorde[id]['decimalen']);

                if (numericresult != true) {
                    if (numericresult == 'errordecimals') {
                        error++;
                        errormsg += '- U kunt maximaal '+volgorde[id]['decimalen']+' decimalen invullen bij "' + label + '".\n';
                        shownumericerror = true;
                    } else if (numericresult == 'errornegative') {
                        // Do nothing
                    } else if (numericresult == 'errorcomma') {
                        error++;
                        errormsg += '- U dient een komma als decimaalteken te gebruiken bij "' + label + '".\n';
                        shownumericerror = true;
                    } else {
                        error++;
                        errormsg += '- U heeft een ongeldig nummer ingevuld voor "' + label + '".\n';
                        shownumericerror = true;
                    }

                }
                if (shownumericerror == false) {
                    if (volgorde[id]['startvalue'] != undefined) {
                        volgorde[id]['startvalue'] = String(volgorde[id]['startvalue']);
                        value=parseFloat(value.replace(',','.'));
                        var startvaluetest=parseFloat(volgorde[id]['startvalue'].replace(',','.'));
                        if (volgorde[id]['startvalue'] == '' && allownegative == false) {
                            startvaluetest = 0;
                        }

                        if ((startvaluetest != '' || (startvaluetest == '' && allownegative == false)) && value < startvaluetest) {
                            error++;
                            errormsg += '- U heeft een waarde ingevuld die ligt onder het minimum van '+volgorde[id]['startvalue']+' voor "' + label + '".\n';
                        }
                    }

                    if (volgorde[id]['eindvalue'] != undefined) {
                        volgorde[id]['eindvalue'] = String(volgorde[id]['eindvalue']);
                        var eindvaluetest=parseFloat(volgorde[id]['eindvalue'].replace(',','.'));
                        if (eindvaluetest != '' && value > eindvaluetest) {
                            error++;
                            errormsg += '- U heeft een waarde ingevuld die ligt boven het maximum van '+volgorde[id]['eindvalue']+' voor "' + label + '".\n';
                        }
                    }
                }
            }

            if (type=='email' && value) {
                if (!checkemail(value)) {
                    errormsg += '- U heeft een ongeldig e-mailadres ingevuld voor "' + label + '".\n';
                    error++;
                }
            }

            /**
             * type = date
             * OR
             * type = geboortedatum & non-hidden
             * OR
             * type = geboortedatum & hidden & value!=00-**-****
             */
            if ((type=='date' || type=='datetime' || (type=='geboortedatum' && (document.getElementById(element.id).type!='hidden' || (document.getElementById(element.id).type=='hidden' && value.substr(0,3)!='00-')))) && value  ) {
                var dateerror = false;
                var datum = new String(value);
                result = datum.split(/[-\/]/g);
                var add= '';
                var txt='';
                for(i in result) {
                    txt += add + result[i];
                    add= ' / ';
                }
                dag = result[0];
                maand = result[1];
                jaar = result[2];
                var date = new Date(jaar, maand-1, dag);
                if(element.value != ''){
                  if (date.getDate()!=dag || date.getMonth()!=maand-1 || jaar.length !=4 || dag.length > 2 || maand.length > 2) {
                        errormsg += '- U heeft een ongeldige datum ingevuld voor "' + label + '".\n';
                        error++;
                    }
                }

                var maxdatevalue = volgorde[id]['maxdatevalue'];
                    maxdatevalue = parseInt(maxdatevalue);
                var maxdatetype = volgorde[id]['maxdatetype'];
                var maxdatetimespan = volgorde[id]['maxdatetimespan'];

                var mindatevalue = volgorde[id]['mindatevalue'];
                    mindatevalue = parseInt(mindatevalue);
                var mindatetype = volgorde[id]['mindatetype'];
                var mindatetimespan = volgorde[id]['mindatetimespan'];

                var today = new Date();
                var today_date = today.getDate();
                var today_month = today.getMonth();
                var today_year = today.getFullYear();
                if(isNaN(maxdatevalue) == false){
                    if(maxdatetype != '' ){
                        if(maxdatetype == 'dagen' && maxdatetimespan == 'het verleden'){
                            max_year = today_year;
                            max_month = today_month;
                            max_date = today_date - maxdatevalue;
                        } else if (maxdatetype == 'dagen' && maxdatetimespan == 'de toekomst'){
                            max_year = today_year;
                            max_month = today_month;
                            max_date = today_date + maxdatevalue;
                        }  else if (maxdatetype == 'maanden' && maxdatetimespan == 'het verleden'){
                            max_year = today_year;
                            max_month = today_month - maxdatevalue;
                            max_date = today_date;
                        }   else if (maxdatetype == 'maanden' && maxdatetimespan == 'de toekomst'){
                            max_year = today_year;
                            max_month = today_month + maxdatevalue;
                            max_date = today_date;
                        }   else if (maxdatetype == 'jaren' && maxdatetimespan == 'het verleden'){
                            max_year = today_year - maxdatevalue;
                            max_month = today_month;
                            max_date = today_date;
                        }   else if (maxdatetype == 'jaren' && maxdatetimespan == 'de toekomst'){
                            max_year = today_year + maxdatevalue;
                            max_month = today_month;
                            max_date = today_date;
                        }
                        new_date_max = new Date(max_year,max_month ,max_date);
                         day_max = new_date_max.getDate();
                         if(parseInt(day_max) < 10) {
                            day_max = "0"+day_max;
                         }
                         month_max = parseInt(new_date_max.getMonth()+1);
                         if(month_max < 10) {
                           month_max = "0"+month_max;
                         }
                    }
                }

                 if(isNaN(mindatevalue) == false){
                    if(mindatetype != '' ){
                        if(mindatetype == 'dagen' && mindatetimespan == 'het verleden'){
                            min_year = today_year;
                            min_month = today_month;
                            min_date = today_date - mindatevalue;
                        } else if (mindatetype == 'dagen' && mindatetimespan == 'de toekomst'){
                            min_year = today_year;
                            min_month = today_month;
                            min_date = today_date + mindatevalue;
                        }  else if (mindatetype == 'maanden' && mindatetimespan == 'het verleden'){
                            min_year = today_year;
                            min_month = today_month - mindatevalue;
                            min_date = today_date;
                        }   else if (mindatetype == 'maanden' && mindatetimespan == 'de toekomst'){
                            min_year = today_year;
                            min_month = today_month + mindatevalue;
                            min_date = today_date;
                        }   else if (mindatetype == 'jaren' && mindatetimespan == 'het verleden'){
                            min_year = today_year - mindatevalue;
                            min_month = today_month;
                            min_date = today_date;
                        }   else if (mindatetype == 'jaren' && mindatetimespan == 'de toekomst'){
                            min_year = today_year + mindatevalue;
                            min_month = today_month;
                            min_date = today_date;
                        }
                        new_date_min = new Date(min_year,min_month,min_date);
                        day_min = new_date_min.getDate();
                        if(parseInt(day_min) < 10) {
                            day_min = "0"+day_min;
                        }
                        month_min = parseInt(new_date_min.getMonth()+1);
                        if(month_min < 10) {
                           month_min = "0"+month_min;
                        }
                    }
                }

                if (type == 'geboortedatum') {
                    if (mindatevalue != undefined) {
                        if (mindatetimespan == 'het verleden' && date > new_date_min) {
                            errormsg += '- De minimum leeftijd voor het veld \"' +label+'\" is '+mindatevalue+' jaar.\n';
                            error++;
                            dateerror = true;
                        }
                    }

                    if (maxdatevalue != undefined) {
                        if (maxdatetimespan == 'het verleden' && date < new_date_max) {
                            errormsg += '- De maximum leeftijd voor het veld \"' +label+'\" is '+maxdatevalue+' jaar.\n';
                            error++;
                            dateerror = true;
                        }
                    }
                }

                if (dateerror == false) {
                    if(isNaN(maxdatevalue) == false && isNaN(mindatevalue) == false){
                        if((maxdatetimespan == 'het verleden' && mindatetimespan == 'het verleden' && (date < new_date_max || date > new_date_min)) || (maxdatetimespan == 'de toekomst' && mindatetimespan == 'de toekomst' && (date > new_date_max || date < new_date_min))){
                            if(new_date_min < new_date_max) {
                                errormsg += '- Het veld \"'+label+'\" moet tussen '+day_min+'-'+month_min+'-'+new_date_min.getFullYear()+' en '+day_max+'-'+month_max+'-'+new_date_max.getFullYear()+' liggen.\n';
                            } else {
                                errormsg += '- Het veld \"'+label+'\" moet tussen '+day_max+'-'+month_max+'-'+new_date_max.getFullYear()+' en '+day_min+'-'+month_min+'-'+new_date_min.getFullYear()+' liggen.\n';
                            }
                            error++;
                        } else if(maxdatetimespan == 'de toekomst' && mindatetimespan == 'het verleden' && (date < new_date_min || date > new_date_max)){
                            day_max = new_date_max.getDate();
                            day_max = parseInt(day_max);

                            // Only apply leading zero's if the lenght of the day is 1 character
                            if(day_min.length==1){
                                day_min = "0"+day_min;
                            } 
                            if(day_max.length==1){
                                day_max = "0"+day_max;
                            }
                            errormsg += '- Het veld \"'+label+'\" moet tussen '+day_min+'-'+month_min+'-'+new_date_min.getFullYear()+' en '+day_max+'-'+month_max+'-'+new_date_max.getFullYear()+' liggen.\n';
                            error++;
                        }
                    } else {
                        //Minimal Past
                        if(isNaN(mindatevalue) == false && mindatetimespan == 'het verleden' && (date > new_date_min)){
                            errormsg += '- Het veld \"' +label+'\" mag een maximum datum hebben van '+ day_min+'-'+month_min+'-'+new_date_min.getFullYear()+'.\n';
                            error++;
                        } 
                        //Minimal Future
                        if(isNaN(mindatevalue) == false && mindatetimespan == 'de toekomst' && (date < new_date_min)){
                            errormsg += '- Het veld \"' +label+'\" moet een minimum datum hebben van '+ day_min+'-'+month_min+'-'+new_date_min.getFullYear()+'.\n';
                            error++;
                        }
                        
                        //Maximal past
                        if(isNaN(maxdatevalue) == false && maxdatetimespan == 'het verleden' && (date < new_date_max)){
                            errormsg += '- Het veld \"' +label+'\" moet een minimum datum hebben van '+ day_max+'-'+month_max+'-'+new_date_max.getFullYear()+'.\n';
                            error++;
                        }
                        //Maximal Future
                        if(isNaN(maxdatevalue) == false && maxdatetimespan == 'de toekomst' && (date > new_date_max)){
                            errormsg += '- Het veld \"' +label+'\" mag een maximum datum hebben van '+day_max+'-'+month_max+'-'+new_date_max.getFullYear()+'.\n';
                            error++;
                        }
                    }
                }
            }

            if (type=='document' && value && volgorde[id]['mimetypes']) {
                mimetypes_array = volgorde[id]['mimetypes'];
                mimetypes_ext = mimetypes_array.split(',');
                field = element.value;
                field_value = field.split('.');
                extension = field_value[field_value.length-1];
                found = false;
                for(var i = 0; i < mimetypes_ext.length; i++) {
                                if(mimetypes_ext[i] == extension.toLowerCase()){
                                    found = true;
                                }
                }
                if(found == false){
                    errormsg += '- Het bestandstype bij veld "'+volgorde[id]['label']+'" is niet toegestaan\n';
                    error++;
                }
            }
            if (type=='bsn' && value) {
                if (!checksofi(element,null)) {
                    errormsg += '- U heeft een ongeldig BSN ingevuld voor "' + label + '".\n';
                    error++;
                }
            }

            if (type == 'phone' && value != null) {
                if (check_phonenumber(value, volgorde[id]['maxcijfers']) == false) {
                    errormsg += '- U heeft een ongeldig telefoonnummer ingevuld voor "' + label + '".\n';
                    error++;
                }
            }

            if (type == 'postcode' && value != null) {
                if (check_postcode(element,false) == false) {
                    errormsg += '- U heeft een ongeldige postcode ingevuld voor "' + label + '".\n';
                    error++;
                }
            }

            // ARIS needs to do some magic
            if (type == 'arisophalen') {
                aris_product_fill_hidden();
            }

            //________ EXTERNAL VALIDATION ________//
            if (volgorde[id]['externevalidatie'] != undefined && volgorde[id]['externevalidatie'] == 1) {
                source_type = volgorde[id]['sourcetype'].toUpperCase();
                source_element_type = vragen[source_type][volgorde[id]['sourceid']]['type'];
                source_element_label = vragen[source_type][volgorde[id]['sourceid']]['label'];
                source_id = 'xml_1_'+volgorde[id]['sourceid']+'_'+source_type+'_'+source_element_type;

                                if(document.getElementById(source_id)==null){
                                        // cannot perform check
                                        break;
                                }
                source_value = document.getElementById(source_id).value;

                if (vragen[source_type][volgorde[id]['sourceid']]['vraagnummer'] != undefined) {
                    source_element_label = vragen[source_type][volgorde[id]['sourceid']]['vraagnummer']+'. '+source_element_label;
                }

                verify_type = volgorde[id]['verifytype'].toUpperCase();
                verify_element_type = vragen[verify_type][volgorde[id]['verifyid']]['type'];
                verify_id = 'xml_1_'+volgorde[id]['verifyid']+'_'+verify_type+'_'+verify_element_type;
                try{
                    verify_value = document.getElementById(verify_id).value;
                }catch(e){}

                if(verify_element_type=='checkbox' && verify_id=='xml_1_94_STANDAARDELEMENT_checkbox'){

                    try{
                        var wijzevanbewoning = document.getElementsByName('xml_1_106_STANDAARDELEMENT_radio');
                        var wijzevanbewoningvalue = '';
                        var wijzevanbewoninglength = wijzevanbewoning.length;
                        if (wijzevanbewoninglength == undefined) {
                            if (wijzevanbewoning.checked) {
                                wijzevanbewoningvalue = wijzevanbewoning.value;
                            }
                        }
                        for (var wb=0; wb<wijzevanbewoninglength; wb++) {
                            if (wijzevanbewoning[wb].checked) {
                                wijzevanbewoningvalue = wijzevanbewoning[wb].value;
                            }
                        }
                        wijzevanbewoningvalue = wijzevanbewoningvalue.toLowerCase()

                        if(wijzevanbewoningvalue=='inwonend' || wijzevanbewoningvalue=='samenwonend'){
                            var diff = 2;
                            var compare = 'hoger zijn dan';
                        }else if(wijzevanbewoningvalue=='zorginstelling'){
                            var diff = 0;
                        }else{
                            var diff = 1;
                            var compare = 'minstens gelijk zijn aan';
                        }
                    }catch(e){
                        var diff = 1;
                        var compare = 'minstens gelijk zijn aan';
                    }

                    if(diff>0){
                        var result = validate_count(source_id,verify_id,diff);
                    }else{
                        var result = true;
                    }
                    if(result == false){
                        errormsg += '- De waarde in het veld "'+source_element_label+'" is niet juist. Deze moet '+compare+' het aantal verhuizende personen.\n';
                        error++;
                    }
                }else if(verify_element_type == 'date'  && source_element_type == 'date' && verify_value != '' && source_value != ''){

                    if(source_value > verify_value) {
                        errormsg += '- De datum in het veld "'+label+'" kan niet voor de datum in veld "'+source_element_label+'" liggen.\n';
                        error++;
                    }
                }else{

                if (verify_value != source_value) {
                    errormsg += '- Het veld "'+label+'" is niet gelijk aan het veld "'+source_element_label+'".\n';
                    error++;
                }
            }
        }
    }
    }

    if(document.getElementById('xml_1_103_STANDAARDELEMENT_text')!=null){
        var string = document.getElementById('xml_1_103_STANDAARDELEMENT_text').value;
        var pattern = /^([a-z])*$/i;
        var result = pattern.test(string);
        if(result != true){
            errormsg += '- Het veld \'huisletter\' mag alleen letters bevatten.\n';
            error++;
        }
    }

    // Special Qmatic appointment date/time checker
    var qmaticdate = document.getElementById('xml_1_101_STANDAARDELEMENT_datetime');
    if(qmaticdate != undefined){
        var qmatictimevalue = '';
        if (qmaticdatevalid == 'nosubmit') {
            set_qmaticdatevalid(false);
            errormsg += '- Het datumveld mag niet handmatig ingevuld worden. Kies een datum m.b.v. kalender.\n';
            error++;
            return false;
        } else {
            if (qmaticdate !== null) {
                if (qmaticdate.value != '') {
                    set_qmaticdatevalid(false);
                    var selectbox = document.getElementsByName('xml_1_102_STANDAARDELEMENT_listbox');
                    var qmatictimevalue = selectbox[0].options[selectbox[0].selectedIndex].value;
                    var qmatictimelength = qmatictimevalue.length;
                    if (qmatictimelength > 0) {
                            set_qmaticdatevalid(true);
                        }

                    if (qmatictimevalue == '') {
                        errormsg += '- Er is geen tijd gekozen bij de geselecteerde datum.\n';
                        error++;
                    }
                } else {
                    errormsg += '- Er is geen datum gekozen bij het geselecteerde product.\n';
                    error++;
                }
            } else {
                set_qmaticdatevalid(true);
            }
        }
    }

    // check extra elements
    if(SIM.register.validation_events!=null){
        var e = 0;
        for(e in SIM.register.validation_events){
            var result = SIM.register.validation_events[e](); // call element-specific validator
            if(SIM.register.validation_halted==true){
		        enable_submit();	            
                return false;
            }
            if(result['status']==0){
                if (result.error!='') {
                    errormsg +=  '- ' + result.error + '\n';
                }
                error++;
            }
        }
    }

    // Akkoord controle
    try {
        if (document.frm.confirmatie.checked == false) {
            error++;
            errormsg += '- U dient akkoord te gaan om dit formulier te kunnen versturen.\n';
        }
    } catch (akkoorderr) {}

    // Toon de errors
    if (error > 0) {
        alert('U heeft nog niet alle velden juist ingevuld:\n\n'+errormsg);
    }

    if (error==0) {
        return(true);
    } else {
        enable_submit();
        return(false);
    }
}

function validate_empty(value) {
    if(value == null || value == '') {
        return true;
    } else {
        if(value.match(/^([\s]*)$/) != null) {
            return true;
        } else {
            return false;
        }
    }
}

var elements_aanuit = [];
function element_aanzetten(elementsoort, id, block, type, init) {
    elements_aanuit[elementsoort+'_'+id] = 'aan';
    var disabledunset = false;
    elementid = 'xml_'+block+'_'+id+'_'+elementsoort+'_'+type;

    end = true;

    // When initializing, already disabled elements should not be enabled again
    if (init == true) {
        // Check if the regular id exists and if it's disabled
        try {
            if (document.getElementById(elementid).disabled == true) {
                return;
            } else {
                end = false;
            }
        } catch(e) {
            end = false;
        }

        // Check if the id exists like an array
        try {
            if (document.getElementById(elementid+'[]').disabled == true) {
                return;
            } else {
                end = false;
            }
        } catch(e) {
            end = false;
        }

        // Check if the regular name exists and if it's disabled
        try {
            if (document.getElementsByName(elementid).disabled == false) {
                return;
            } else {
                end = false;
            }
        } catch(e) {
            end = false;
        }

        // Check if the name exists like an array
        try {
            if (document.getElementsByName(elementid+'[]').disabled == true) {
                return;
            } else {
                end = false;
            }
        } catch(e) {
            end = false;
        }
    }
    is_exist=false;
    if (end == false || init == false) {
        try {
            document.getElementById(elementid).disabled=false;
            disabledunset = true;
        } catch(e) {
            try{
                if(document.getElementById(elementid) != undefined){
                    is_exist=true;
                }
            } catch(e){
                  is_exist=false;
            }
            if (type == 'listbox' && is_exist==true) {
                document.getElementById(elementid+'[]').disabled=false;
                disabledunset = true;
            }
        }


        try {
            //Tables have colums and rows
            tablecontainer = document.getElementById(elementid.replace('xml','container'));
            if(type == 'inputtabel'){
                    tableholder = tablecontainer.getElementsByTagName("table")[0];
                    totalrows = tableholder.rows.length;
                    for(r=1; r < totalrows;r++){
                        totalcells = tableholder.rows[r].cells.length;
                        for(c=1; c < totalcells;c++){
                            elementid = tableholder.rows[r].cells[c].firstChild.id;
                            document.getElementById(elementid).disabled=false;
                        }
                    }
                    disabledunset = true;
                    element = document.getElementById(elementid+'_row'+i);
            }
        } catch(e) {}

        try {
            // Checkboxes have an id with []
            if (type == 'checkbox') {
                elements = document.getElementsByName(elementid+'[]');
            } else {
                elements = document.getElementsByName(elementid);
            }

            for(i=0;i<elements.length;i++) {
                elements[i].disabled=false;
                disabledunset = true;
            }
        } catch(e) {}

        // Make the DIV re-appear, if it exists on this page
        try {
            if(type == 'eindtekst'){
                document.getElementById('container_'+block+'_'+id+'_'+elementsoort+'_'+type).style.display='none';
            } else {
                document.getElementById('container_'+block+'_'+id+'_'+elementsoort+'_'+type).style.display='inline';
                document.getElementById('container_'+block+'_'+id+'_'+elementsoort+'_'+type).disabled=false;
                disabledunset = true;
            }
        } catch(e) {}

        // Type date also has a calendar button that needs enabling
        if (type == 'date') {
          try{
            document.getElementById(elementid+'_reset').disabled = false;
          } catch(e) {}
        }

        // If the element has an 'other' option, enable that one, as well.
        if (disabledunset == true) {
            try {
                if (document.getElementById(elementid+'_other') != undefined) {
                    document.getElementById(elementid+'_other').disabled = false;
                }
            } catch(e) {}

            try {
                if (document.getElementById(elementid+'[]_other') != undefined) {
                    document.getElementById(elementid+'[]_other').disabled = false;
                }
            } catch(e) {}
        }
    }

}

function element_uitzetten(elementsoort, id, block, type, weergave) {
    elements_aanuit[elementsoort+'_'+id] = 'uit';   
    var disabledset = false;

    elementname = 'xml_'+block+'_'+id+'_'+elementsoort+'_'+type;
    elementid = 'container_'+block+'_'+id+'_'+elementsoort+'_'+type;
    if (weergave == 1) {
        try {
            document.getElementById('container_'+block+'_'+id+'_'+elementsoort+'_'+type).style.display='none';
        } catch(e) {}
    }

    // Regular elements
    try {
        document.getElementById(elementname).disabled=true;
        disabledset = true;
    } catch(e) {
    }

    // Listboxes
    try {
        if (type == 'listbox') {
            document.getElementById(elementname+'[]').disabled=true;
            disabledset = true;
        }
    } catch(e) {
    }

    // Tables(?)
    try {
        i = 1;
        //Tables have colums and rows  
        tablecontainer = document.getElementById(elementid);
        if(tablecontainer.style.display == 'none'){
            tableholder = tablecontainer.getElementsByTagName("table")[0];
            totalrows = tableholder.rows.length;
            for(r=1; r < totalrows;r++){
                totalcells = tableholder.rows[r].cells.length;
                for(c=1; c < totalcells;c++){
                    elementid = tableholder.rows[r].cells[c].firstChild.id;
                    document.getElementById(elementid).disabled="disabled";
                }
            }
        }
    } catch(e) {}

    // Whatever is left... :/
    try {
        // Checkboxes have an id with []
        if (type == 'checkbox') {
            elements = document.getElementsByName(elementname+'[]');
        } else {
            elements = document.getElementsByName(elementname);
        }

        for(i=0;i<elements.length;i++) {
            elements[i].disabled=true;
            disabledset = true;
        }
    } catch(e) {}

    // Type date also has a calendar button that needs disabling
    if (type == 'date') {
      try{
        document.getElementById('xml_'+block+'_'+id+'_'+elementsoort+'_'+type+'_reset').disabled = true;
        } catch(e){}
    }

    // If the element has an 'other' option, disable that one, as well.
    if (disabledset == true) {
        try {
            if (document.getElementById(elementname+'_other') != undefined) {
                document.getElementById(elementname+'_other').disabled = true;
            }
        } catch(e) {}

        try {
            if (document.getElementById(elementname+'[]_other') != undefined) {
                document.getElementById(elementname+'[]_other').disabled = true;
            }
        } catch(e) {}
    }
}

var skip_check_run = 0;
var element_array = '';
var apply_action_volgorde = 0;
function check(elementsoort,id,waarde,block,init,init_form,force_to_end) {
    var huidige_actie;
    var eindtekst;
    var checked_default;

    if (elements_aanuit[elementsoort+'_'+id] == 'uit') {
        // element has been switched off, so don't execute its action
        return;
    }

    try {
        if (volgorde[vragen[elementsoort][id]['volgorde']]['actie'] != 1) {
            return;
        }
    } catch (err) {
        return;
    }

    try {
        if (oude_waarde['eind'] != undefined && oude_waarde['eind']== true && init == true) {
            return;
        }
    } catch (err) {
        return;
    }

    if(skip_check_run==1){
        return;
    }

    // init is an optional argument and defaults to false
    if (!init) {
        init=false;
    }
    if (!init_form) {
        init_form=false;
    }

    var bereik=0;
    var exist=false;

    try {
        if (vragen[elementsoort][id][oude_waarde[elementsoort][id]]['vraag'] == 'EINDE') {
            bereik = volgorde.length;
        } else {
            bereik=vragen[(vragen[elementsoort][id][oude_waarde[elementsoort][id]]['soort'])][(vragen[elementsoort][id][oude_waarde[elementsoort][id]]['vraag'])]['volgorde'];
        }
    } catch(err) {
        bereik=0;
    }

    hide_eindtekst();
    eindtekst = false;

    if (force_to_end == true) {
        eindtekst = true;
    }

    // Huidige actie bepalen
    // Reset de huidige vraag
    if (oude_waarde[elementsoort] == undefined || oude_waarde[elementsoort][id]!='ganaar') {
        for(j=vragen[elementsoort][id]['volgorde']+1;j<bereik;j++) {
            element_aanzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], init);
        }

        // Tussenliggende vragen uitzetten of verbergen
        try {
            if (vragen[elementsoort][id][waarde] != undefined && vragen[elementsoort][id][waarde]['vraag'] == 'EINDE') {
                // Only activate this if element exists on the current page
                elementname = 'xml_'+block+'_'+id+'_'+elementsoort+'_'+vragen[elementsoort][id]['type'];
                elements = document.getElementsByName(elementname);
                if (elements.length > 0) {
                bereik = volgorde.length;
                }
            } else if (volgorde[vragen[elementsoort][id]['volgorde']]['option'] != undefined && volgorde[vragen[elementsoort][id]['volgorde']]['option'] == 'ganaar') {
                element_volgorde = vragen[elementsoort][id]['volgorde'];
                element_ganaar = volgorde[element_volgorde]['ganaar'];
                bereik = vragen[element_ganaar['soort']][element_ganaar['vraag']]['volgorde'];
            } else {
                // Only activate this if element exists on the current page (does not count for externe validatie)
                elementname = 'xml_'+block+'_'+id+'_'+elementsoort+'_'+vragen[elementsoort][id]['type'];
                elements = document.getElementsByName(elementname);
                if (elements.length > 0 || elementsoort == 'EXTERNEVALIDATIE') {
                bereik=vragen[(vragen[elementsoort][id][waarde]['soort'])][(vragen[elementsoort][id][waarde]['vraag'])]['volgorde'];
                bereik_type=vragen[(vragen[elementsoort][id][waarde]['soort'])][(vragen[elementsoort][id][waarde]['vraag'])]['type'];
                if((bereik_type == 'eindtekst' && init_form == false)){
                    eindtekst = true;
                } else if(bereik_type == 'eindtekst' && init_form == true){
                    eindtekst = true;
                    skip_check_run = 1;
                    for (j=bereik; j<volgorde.length; j++) {
                        try {
                            document.getElementById('container_'+volgorde[j]['block']+'_'+volgorde[j]['id']+'_'+elementsoort+'_'+volgorde[j]['type']).style.display='none';
                        } catch(e) {}
                        try {
                            soort = volgorde[j]['soort'];
                            if(volgorde[j]['id'] == vragen[elementsoort][id][waarde]['vraag']){
                                document.getElementById('container_'+volgorde[j]['block']+'_'+volgorde[j]['id']+'_'+soort+'_'+'eindtekst').style.display='block';
                            } else {
                                element_uitzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], 1);
                            }
                        } catch(e){}
                        document.getElementById('but_volgende').style.display='none';
                        document.getElementById('but_volgende').disabled=true;
                        if(j == (volgorde.length-1)){
                            break;
                        }
                    }
                    init_form = true;
                }
            }
            }
        } catch(err) {
            bereik=0;
        }

        eindeend = false;
        weergave = '';
        for(j=vragen[elementsoort][id]['volgorde']+1;j<bereik;j++) {
            if (j > (vragen[elementsoort][id]['volgorde'])) {
                if(vragen[elementsoort][id][waarde] != undefined && vragen[elementsoort][id][waarde]['vraag'] == 'EINDE'){
                    // Check if this checkable element is actually on the current page
                    element_name = 'xml_1_'+vragen[elementsoort][id]['id']+'_'+vragen[elementsoort][id]['soort']+'_'+vragen[elementsoort][id]['type'];
                    element_array = document.getElementsByName(element_name);
                    if (element_array.length > 0) {
                        eindeend=true;
                        try {
                            document.getElementById('container_'+block+'_'+volgorde[j]['id']+'_'+elementsoort+'_'+volgorde[j]['type']).style.display='none';
                        } catch(e) {}
                    }
                }

                // If the target element is text and the element before that is
                // also text, then you can hide that element.
                if (volgorde[vragen[elementsoort][id]['volgorde']]['option'] != undefined && volgorde[vragen[elementsoort][id]['volgorde']]['option'] == 'ganaar') {
                    weergave = volgorde[vragen[elementsoort][id]['volgorde']]['ganaar']['weergave'];
                } else {
                    weergave = vragen[elementsoort][id][waarde]['weergave'];
                }

                // If the target element is not text and there is a text above
                // it, show that text, except when the target is on another page
                // than that text
                if (j == (bereik-1) && (volgorde[j]['type'] == 'koptekst' || volgorde[j]['type'] == 'tussentekst') && volgorde[j]['actie'] != 1 && volgorde[bereik]['type'] != 'koptekst' && volgorde[bereik]['type'] != 'tussentekst' && (volgorde[bereik]['pagid'] == volgorde[bereik-1]['pagid'])) {
                    // Do nothing
                } else if(eindtekst == false){
                    element_uitzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], weergave);
                    try {
                        document.getElementById('but_volgende').style.display='inline';
                        document.getElementById('but_volgende').disabled=false;
                    } catch(e) {}
                } else if(eindtekst == true){
                    element_uitzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], 1);

                    try {
                        document.getElementById('container_'+block+'_'+volgorde[j]['id']+'_'+elementsoort+'_'+volgorde[j]['type']).style.display='none';
                    } catch(e) {}
                }
            }
        }
        var exist = false;
        overslaan_tot_vraag = new Array();
        for (j=bereik; j<volgorde.length; j++) {
            if(eindtekst != true){
                try {
                    document.getElementById('but_volgende').style.display='inline';
                    document.getElementById('but_volgende').disabled=false;
                } catch(e) {
                }

                // End texts and streetname lists should be skipped. Streetname
                // lists can be too long and will halt/crash your browser. EVIL!
                if (volgorde[j] != '' && volgorde[j] != undefined && volgorde[j]['type'] != 'eindtekst' && volgorde[j]['soort']+volgorde[j]['id'] != 'STANDAARDELEMENT93') {
                    if(volgorde[j]['type'] == 'listbox' || volgorde[j]['type'] == 'radio') {

                        for (valueid in volgorde[j]['values']) {
                            end_elem = false;
                            if(volgorde[j]['type'] == 'listbox'){

                                selected_object=document.getElementById('xml_'+block+'_'+volgorde[j]['id']+'_'+volgorde[j]['soort']+'_'+volgorde[j]['type']);

                                // Does the element exist on the current page?
                                if (selected_object != null && selected_object.length > 0) {
                                    for(i=0;i<=selected_object.length-1;i++){
                                        if (selected_object.options[i].selected &&  selected_object.options[i].value == volgorde[j]['values'][valueid]
                                                && (vragen[volgorde[j].soort][volgorde[j].id][valueid] != null)
                                                && (vragen[(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['soort'])][(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['vraag'])]['type'])=='eindtekst') {
                                            end_elem=true;
                                            element_aanzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], false);
                                            document.getElementById('container_'+block+'_'+volgorde[j]['id']+'_'+volgorde[j]['soort']+'_'+volgorde[j]['type']).style.display='block';
                                            block_id = vragen[(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['soort'])][(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['vraag'])]['block'];
                                            item_id = vragen[(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['soort'])][(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['vraag'])]['id']
                                                soort_id = vragen[(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['soort'])][(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['vraag'])]['soort'];
                                            document.getElementById('container_'+block_id+'_'+item_id+'_'+soort_id+'_eindtekst').style.display='block';
                                            try {
                                                document.getElementById('but_volgende').style.display='none';
                                                document.getElementById('but_volgende').disabled=true;
                                            } catch(e) {}
                                        }
                                    }
                                }
                            } else if(volgorde[j]['type'] == 'radio') {
                                selected_object = document.getElementById('xml_'+block+'_'+volgorde[j]['id']+'_'+volgorde[j]['soort']+'_'+volgorde[j]['type']);

                                // Does the element exist on the current page?
                                if (selected_object != null) {
                                    selected_object_radio = selected_object.childNodes;
                                    for(k=0; k<selected_object_radio.length; k++){
                                        if(selected_object_radio[k].tagName != undefined){
                                            if (selected_object_radio[k].checked == true &&  selected_object_radio[k].value == volgorde[j]['values'][valueid] && (vragen[(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['soort'])][(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['vraag'])]['type'])=='eindtekst') {
                                                end_elem=true;
                                                element_aanzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], false);
                                                document.getElementById('container_'+block+'_'+volgorde[j]['id']+'_'+volgorde[j]['soort']+'_'+volgorde[j]['type']).style.display='block';
                                                block_id = vragen[(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['soort'])][(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['vraag'])]['block'];
                                                item_id = vragen[(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['soort'])][(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['vraag'])]['id']
                                                    soort_id = vragen[(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['soort'])][(vragen[(volgorde[j]['soort'])][(volgorde[j]['id'])][valueid]['vraag'])]['soort'];
                                                document.getElementById('container_'+block_id+'_'+item_id+'_'+soort_id+'_eindtekst').style.display='block';
                                                try {
                                                    document.getElementById('but_volgende').style.display='none';
                                                    document.getElementById('but_volgende').disabled=true;
                                                } catch(e) {}
                                            }
                                        }
                                    }
                                }
                            }
                            if(end_elem == true){
                                break;
                            }

                        }
                        if(end_elem == true){
                            break;
                        }

                    } else {
                        element_aanzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], false);
                    }

                }

            } else {
                try {
                    document.getElementById('container_'+block+'_'+volgorde[j]['id']+'_'+elementsoort+'_'+volgorde[j]['type']).style.display='none';
                } catch(e) {}
                try {
                    soort = volgorde[j]['soort'];
                    if(volgorde[j]['id'] == vragen[elementsoort][id][waarde]['vraag'] && soort == vragen[elementsoort][id][waarde]['soort']){
                        try{
                            if(typeof(block)=='undefined'){
                                block = 1;
                            }
                            document.getElementById('container_'+block+'_'+volgorde[j]['id']+'_'+soort+'_'+'eindtekst').style.display='block';
                        } catch(e){
                        }
                    } else {
                        element_uitzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], 1);
                    }
                } catch(e){}
                button_style=false;
                try {
                    try{
                        if(document.getElementById('xml_'+block+'_'+volgorde[j]['id']+'_'+volgorde[j]['soort']+'_'+volgorde[j]['type']) != null){
                            button_style=true;
                        }
                    } catch(e){
                        button_style=false;
                    }
                    document.getElementById('but_volgende').style.display='none';
                    document.getElementById('but_volgende').disabled=true;
                } catch(e) {}

            }

            if ((overslaan_tot_vraag['soort'] && overslaan_tot_vraag['id']) || eindtekst == true) {
                if (overslaan_tot_vraag['soort'] == volgorde[j]['soort'] && overslaan_tot_vraag['id'] == volgorde[j]['id']) {
                    overslaan_tot_vraag = new Array();
                } else {
                    if (j > vragen[elementsoort][id]['volgorde']) {
                        element_uitzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], overslaan_tot_vraag['weergave']);
                    }
                }
            }

            if (eindtekst != true && overslaan_tot_vraag['soort'] == undefined && overslaan_tot_vraag['id'] == undefined && volgorde[j] != undefined) {
                if (j >= (vragen[elementsoort][id]['volgorde'])) {
                    element_aanzetten(volgorde[j]['soort'], volgorde[j]['id'], volgorde[j]['block'], volgorde[j]['type'], init);
                }
                if (volgorde[j]['option']) {
                    overslaan_tot_vraag['soort'] = volgorde[j][volgorde[j]['option']]['soort'];
                    overslaan_tot_vraag['id'] = volgorde[j][volgorde[j]['option']]['vraag'];
                    overslaan_tot_vraag['weergave'] = volgorde[j][volgorde[j]['option']]['weergave'];
                }
            }

        }

        oude_waarde[elementsoort][id] = waarde;
        if(eindeend == true){
            oude_waarde['eind'] = true;
            oude_waarde['id'] = waarde;
        }
    }

    if (eindeend == true) {
        document.frm.pagid.value = lastpage+1;
    } else {
        document.frm.pagid.value = nextpagid;
    }

    nextelement = vragen[elementsoort][id]['volgorde'];
    for (i=nextelement; i<volgorde.length; i++) {
        nextelement = vragen[elementsoort][id]['volgorde'] + 1;
        if (volgorde[nextelement] != undefined) {
            elementsoort = volgorde[nextelement]['soort'];
            id = volgorde[nextelement]['id'];
            block = volgorde[nextelement]['block'];
            type = volgorde[nextelement]['type'];
            if (volgorde[nextelement]['actie'] != undefined && volgorde[nextelement]['actie'] == '1') {
                if (type == 'radio') {
                    element_name = 'xml_'+block+'_'+id+'_'+elementsoort+'_'+type;
                    if (document.getElementById(element_name) != undefined && document.getElementById(element_name).disabled == false) {
                        element_array = document.getElementsByName(element_name);
                        for (k=0; k<element_array.length; k++) {
                            if (element_array[k].checked != undefined && element_array[k].checked == true) {
                                // Note: action_radio() used to be in 1ms timeout for firefox, doesn't seem to be needed anymore
                                apply_action_volgorde = k;
                                action_radio();
                            }
                        }
                    }
                } else if (type == 'listbox') {
                    listelement = document.getElementById('xml_'+block+'_'+id+'_'+elementsoort+'_'+type);
                    if (listelement != undefined && listelement.disabled == false) {
                        process_option(elementsoort,id,listelement.options[listelement.selectedIndex].value,block,false);
                    }
                }
            }
        }
        nextelement++;
    }
}

function action_radio() {
    element_array[apply_action_volgorde].click();
}

/*
 * Gebruikt in CMS, bij koppelbox, koppelen van formulier elementen aan formulier
 * Het id van geselecteerde item wordt via de class koppelbox gezet voor aanroep van deze functie
 *
 */
function editkoppelitem(objsel) {

    if (objsel.selectedIndex != -1) {
        if (objsel.options[objsel.selectedIndex].value == "tekst") {

         var highest_textid = 0;
         var split_textid = 0;
         var numberofnewtext = 0;

          for (i=0; i<objsel.options.length; i++) {
             if (objsel.options[i].value.indexOf("tekst") != -1) {
                split_textid = objsel.options[i].value.split('tekst_');

                if(parseFloat(split_textid[1]) > highest_textid){
                    highest_textid = parseFloat(split_textid[1]);
                }

                if(split_textid[1] == undefined && i < objsel.selectedIndex){
                    numberofnewtext++;
                }
             }
          }

          highest_textid++;
          highest_textid = highest_textid + numberofnewtext;
          document.frm.editkoppelitemid.value = "tekst_" + highest_textid;

        } else {
            document.frm.editkoppelitemid.value = objsel.options[objsel.selectedIndex].value;
        }

        try{
            document.frm.editkoppelitemid_previous.value = objsel.options[objsel.selectedIndex-1].value;
        } catch(err) {}

        if (document.frm.editkoppelitemid.value.substr(0,16) == 'externevalidatie') {
            document.frm.action.value="editkoppelexternevalidatie";
        } else if (document.frm.editkoppelitemid.value.substr(0,13) == 'standaardblok') {
            document.frm.action.value="editkoppelblok";
        } else {
            document.frm.action.value="editkoppelitem";
        }

        sendform();
    } else {
        alert('Selecteer eerst een element.');
    }

}

function checkmaxchars(obj,maxlength) {
    if (obj.value.length > maxlength) {
        obj.value = obj.value.substring(0,maxlength);
    }
}

function toggle_help(id,tekst,popup) {
    if (popup == '') {
        document.getElementById('formhelp_kop').innerHTML = vraag;
        if (vraag != '') {
            document.getElementById('formhelp_terug').innerHTML = '<a href="#'+id+'" onClick="toggle_help'+popup+'(\''+id+'\',\'\',\'\');">terug naar de vraag</a>';
        } else {
            document.getElementById('formhelp_terug').innerHTML = '';
        }
    } else {
        document.getElementById('formhelp_tekst').innerHTML = tekst;
    }
}

var popupopen = '';
function toggle_helppopup(id) {

    if (popupopen != '' && popupopen != id) {
        oudepopup = popupopen;
        popupopen = '';
        toggle_helppopup(oudepopup,'');
    }

    tekst = document.getElementById('helpcontent_'+id).innerHTML+"<!--[if lte IE 6.5]><iframe id='"+id+"_iframe'></iframe><![endif]-->";

    var element = document.getElementById(id);
    var helpelement = document.getElementById('formhelp');
    helpelement.style.display = 'none';

    if (element.style.display == 'block') {
        element.style.display = 'none';
        element.innerHTML = "<!--[if lte IE 6.5]><iframe id='"+id+"_iframe'></iframe><![endif]-->";
        popupopen = '';
    } else {
        element.innerHTML = tekst;
        element.style.display = 'block';
        popupopen = id;
    }

    if (document.getElementById(id+"_iframe") != null) {
        document.getElementById(id+"_iframe").style.height = document.getElementById(id).offsetHeight;
    }
}

/*
 * RN 2006-08-09: added function herhaalaantal
 */
function herhaalaantal(id, soort, block) {
    elname = 'xml_'+block+'_'+id+'_'+soort+'_'+vragen[soort][id]['type'];
    element = document.getElementById(elname);
    if (element) {
        aantal = string2int(element.value);
        postname = vragen[soort][id]['herhaalvraag']['block']+"_"+vragen[soort][id]['herhaalvraag']['id']+"_"+vragen[soort][id]['herhaalvraag']['soort']+"_"+vragen[soort][id]['herhaalvraag']['type'];
        fieldname = "xml_" + postname;
        if (aantal > vragen[soort][id]['herhaalvraag']['herhaal']) {
            for (i = vragen[soort][id]['herhaalvraag']['herhaal']+1; i <= aantal; i++) {
                o = document.getElementById(fieldname+'_row'+i);
                if (o) {
                    o.disabled = false;
                    o = document.getElementById('container_'+fieldname+'_row'+i);
                    if (o) {
                        o.style.display='inline';
                    }
                } else {
                    maaknieuweherhaalvraag(vragen[soort][id]['herhaalvraag']['id'], vragen[soort][id]['herhaalvraag']['soort'], i)
                }
            }
        } else if (aantal < vragen[soort][id]['herhaalvraag']['herhaal']) {
            for (i = aantal+1; i <= vragen[soort][id]['herhaalvraag']['herhaal']; i++) {
                o = document.getElementById(fieldname+'_row'+i);
                if (o) {
                    o.disabled = true;
                }
                o = document.getElementById('container_'+fieldname+'_row'+i);
                if (o) {
                    o.style.display='none';
                }
            }
        }
        vragen[soort][id]['herhaalvraag']['herhaal'] = aantal;
    }
}

/*
 * RN 2006-08-09: added function maaknieuweherhaalvraag
 */
function maaknieuweherhaalvraag(id, soort, row) {
    html = '';
    if (vragen[soort][id]['type']=="text") {
        postname = vragen[soort][id]['block']+"_"+vragen[soort][id]['id']+"_"+vragen[soort][id]['soort']+"_"+vragen[soort][id]['type'];
        fieldname = "xml_" + postname;
        containerdiv = "container_" + postname;

        // Breedte, label en volgnr
        maxwidth = 250;
        if (vragen[soort][id]['maxwidth']) {
            maxwidth = vragen[soort][id]['maxwidth'];
        }

        label = vragen[soort][id]['type'];
        if (vragen[soort][id]['label']) {
            label = vragen[soort][id]['label'];
        }

        if (vragen[soort][id]['vraagnummer']) {
            label = vragen[soort][id]['vraagnummer'] + '. ' + label;
        }

        volgnr = "";
        if (vragen[soort][id]['volgnr']) {
            volgnr = vragen[soort][id]['volgnr'];
        }

        labelbreak = "yes";

        if (vragen[soort][id]['labeluitlijning'] && vragen[soort][id]['labeluitlijning']=='voor') {
            labelbreak = 'no';
        }

        data = '';
        if (vragen[soort][id]['defaultvalue']) {
            data = vragen[soort][id]['defaultvalue'];
        }

        html += "<div id='container_" + fieldname+'_row'+row+"' class='herhaalcontainerdiv'>\n";
        if (row == 1) {
            html += print_input_text(data, fieldname+'_row'+row, fieldname+'_row'+row, label,true,200,maxwidth,false,volgnr,labelbreak);
        } else {
            html += print_input_text(data, fieldname+'_row'+row, fieldname+'_row'+row, '',true,200,maxwidth,false,volgnr,"yes");
        }
        html += "\n</div>\n";
    }
      document.getElementById(containerdiv).innerHTML += html;
    return(html);
}

/*
 * RN 2006-08-09: added function print_input_text
 */
function print_input_text(data, name, id, label, editable, maxlength, size,password,volgnr,labelbreak) {
    html = '';
    disabled = '';
    if (password==true) type = 'password'; else type = 'text';
    if (volgnr && volgnr != '' && volgnr != '0' && volgnr!=0) volgnr = volgnr + '. '; else volgnr = '';
    if (labelbreak == "yes") pclass='labelbreak'; else pclass='nobreak';
    html += volgnr+label+"<p class='"+pclass+"'><input type='"+type+"' id='"+id+"' name='"+name+"' "+disabled+" maxlength='"+maxlength+"' value='"+data+"' class='input_border' style='width: "+size+"px;'></p>";
  return (html);
}

function generate_word_version() {
    document.frm.simaction.value='export_word';
    document.frm.submit();
}

// count the number of selected options in multiselect list
function count_listbox(name){
var el = document.getElementById(name+'[]');
var count = 0;
for(i=0;i<el.length;i++){
    if(el[i].selected==true){
        count++;
    }
}
return count;
}

// count the number of checked boxes
function count_checkbox(name){
    var el = document.getElementsByName(name+'[]');

    if(typeof(el[0])=='undefined'){ // if undefined, the element is hidden or otherwise disabled, do not check its value
        return 0;
    }
    if (el[0].disabled == true) { // if checkboxes are disabled, do not check its value
      return 1;
    }
    var count = 0;
    for(i=0;i<el.length;i++){
        if(el[i].checked==true){
            count++;
        }
    }
    return count;
}

/**
 * Validation of input field with checkboxes
 *
 * This function calculates the number of checked boxes, adds a
 * diff to it and compares it to the value in 'inputelement'.
 * The 'inputelement' value must be a minimum of 'diff' plus the number of checked boxes.
 */
function validate_count(inputelement,checkboxelement,diff){
    var number1 = document.getElementById(inputelement).value;
    var number2 = count_checkbox(checkboxelement);

    if(number2+diff>number1){
            return false;
    }else{
            return true;
    }
}

/**
 * Compare a date to a set of given offsets and peform an action based on the difference.
 *
 * @param element: a string, element or standaardelement
 * @param id: the numeric id of the element
 * @param returnval: an int, 1 or 0, indicating wether just to return the option (1) or perform the action (0)
 */
function process_date(element,id,returnval){
    var currentdate = new Date();
    var currentday = new Date(currentdate.getFullYear(),currentdate.getMonth(),currentdate.getDate()); // get a current-time-independent version of the date (so, midnight)

    var date  = document.getElementById('xml_1_'+id+'_'+element+'_'+vragen[element][id]['type']).value;
    var dt1   = parseInt(date.substring(0,2),10);
    var mon1  = parseInt(date.substring(3,5),10)-1; // months in JS are 0->11, not 1->12
    var yr1   = parseInt(date.substring(6,10),10);
    var givendate = new Date(yr1, mon1, dt1);

    var diff = (givendate.getTime()-currentday.getTime());
    var num_days = Math.round((((diff / 1000) / 60) / 60) / 24); // the difference in days

    if(vragen[element][id]['actie']==1){

        var el = 0;

        for(checkval in vragen[element][id]){
            if(checkval*1!=checkval){ // make sure the value is a number
                continue;
            }
            // check for a match in the negative range
            if(checkval<0 && num_days<0){
                if(checkval>num_days){
                    el = checkval;
                    break;
                }
            }

            // check for a match in the positive range
            if(checkval>=0 && num_days>=0){
                if(checkval<=num_days){
                    el = checkval;
                }
            }
        }
        if(returnval==1){
            return el;
        }else{
            check(element,id,el,1);
        }
    }
}

function check_radio_checked(element_name,verplicht) {
    if (document.getElementById(element_name) != undefined && document.getElementById(element_name).disabled == false) {
        if (verplicht == true) {
            return true;
        } else {
            element_array = document.getElementsByName(element_name);
            for (k=0; k<element_array.length; k++) {
                if (element_array[k].checked != undefined && element_array[k].checked == true) {
                    return true;
                }
            }
        }
    }
    return false;
}

var N90 = '-90';
var N42 = '-42';
var N30 = '-30';
var N7 = '-7';
var P0 = '0';
var P7 = '+7';
var P30 = '+30';

function disable_submit(label,direction){
    if(label==null){
        label = 'momentje...';
    }
    if (direction == null) {
        if(document.getElementById('but_verzenden')!=null){
            document.getElementById('but_verzenden').disabled='disabled';
            document.getElementById('but_verzenden').value = label;
        }

        if(document.getElementById('but_volgende')!=null){
            document.getElementById('but_volgende').disabled='disabled';
            document.getElementById('but_volgende').value = label;
        }
    } else {
        if(document.getElementById('but_vorige')!=null){
            document.getElementById('but_vorige').disabled='disabled';
            document.getElementById('but_vorige').value = label;
        }
    }
}
function enable_submit(){
    if(document.getElementById('but_verzenden')!=null){
        document.getElementById('but_verzenden').disabled='';
        document.getElementById('but_verzenden').value='verzenden';
    }
    if(document.getElementById('but_volgende')!=null){
        document.getElementById('but_volgende').disabled='';
        document.getElementById('but_volgende').value='volgende';
    }
    if(document.getElementById('but_vorige')!=null){
        document.getElementById('but_vorige').disabled='';
        document.getElementById('but_vorige').value = 'vorige';
    }
}

/**
 * Search through the page for elements with the same elname
 * it is used for elements with additional dynamic ids
 */
function element_search(elname, elementtype){

    var element_array = new Array();
    // check the inputtabel for the whole table
    // changable if usage is more than 10 by 10 tables
    if(elementtype == 'inputtabel'){
        rows:
        for(i=1; i<=10; i++){
            cols:
            for(j=1; j<=10; j++){
                collrow = 'col'+j+'row'+i;
                element = document.getElementById(elname+'_'+collrow);
                if(!element){break;}
                element_array[collrow] = element;
            }
        }
    }

    return element_array;
    // more element types could be checked if necessary
}

-->

