var showBackButtonWarning = true;

jQuery.noConflict();

jQuery(window).bind( 'hashchange', function(e) {
    if(showBackButtonWarning == true) {
        alert(vorige_pagina);   
    } else {
        showBackButtonWarning = true;
    }
});

function updateHash(hash) {
    window.location.hash = hash;
    showBackButtonWarning = false;
}

//    To (globaly) set and remember the INPUT (ID) suffix
var        global_input_suffix        = '';

//    To (globaly) set and remember the "request_form_mx_check" result
var        global_mx_check            = '';

selectedTab = 'lijst';

lastAddedPageNumber = 0;

if(typeof(input_suffix) == 'undefined') {
    var input_suffix = '';    
}


jQuery(document).ready(function() {
    var checksum = getPartyChecksum(input_suffix);
            
    jQuery("<input type='hidden' />")
      .attr("id", "partyChecksumHiddenField")
      .val(checksum)
      .appendTo("body");
});


    
function getPartyChecksum(input_suffix) {
    // create checksum of party, so checksum can be compared after party change with custom-room-search, and disable custom search mode
    var checksum = '';
    
    var objElem = document.getElementById( 'sb_aantal_volwassenen' + input_suffix );
    if( objElem == null ) {
        return;
    }

    checksum += objElem.value;

    var objElem = document.getElementById( 'sb_aantal_kinderen' + input_suffix );
    
    if( objElem == null ) {
        return; 
    }

    checksum += objElem.value;
    var nb_children = parseInt(objElem.value, 10);
    
    if( nb_children != 0 ) {
        for( ix=1; ix<=nb_children; ix++ ) {
            var objElem_d = document.getElementById('sb_geboorte_datum_d_' + ix + input_suffix);

            if(objElem_d == null) {
                return; 
            }
            
            var objElem_m = document.getElementById('sb_geboorte_datum_m_' + ix + input_suffix);
            
            if(objElem_m == null) {
                return; 
            }
            
            var objElem_y = document.getElementById('sb_geboorte_datum_y_' + ix + input_suffix);
            
            if(objElem_y == null) {
                return; 
            }  

            checksum += objElem_d.value.toString() + '-' + objElem_m.value.toString() + '-' + objElem_y.value;
        }
    }
    
    return checksum;
}  
  


///////////////////////////////////////////////////////////////
//                                                           //
// Testing the "request_form_mx_check.php" script            //
//                                                           //
///////////////////////////////////////////////////////////////
function test_mx_check() {
    //
    var POSTthis    = '';
    POSTthis        += '&test=true';
    //
    var mailElem    = document.getElementById( 'email' );
    if( mailElem != null ) {
        if( mailElem.value == '' ) {
            alert('No e-mail data given ...');
            mailElem.focus();
            return;
        }
    } else {
        alert('ID "email" not found ...');
        return;
    }
    POSTthis        += '&email=' + mailElem.value;
    //
    var rsltElem    = document.getElementById( 'result' );
    if( rsltElem == null ) {
        alert('ID "result" not found ...');
        return;
    }
    rsltElem.value    = '...';
    //
    var goElem        = document.getElementById( 'go' );
    if( goElem == null ) {
        alert('ID "go" not found ...');
        return;
    }
    goElem.style.display    = 'none';

    global_mx_check        = '';
    var url                = '/search_and_book/request_form_mx_check.php';

    jQuery.ajax({
        type:        "POST",
        async:        false,
        url:        url,
        data:        POSTthis,
        error:    function(XMLHttpRequest, textStatus, errorThrown){
            alert('Error: Status is ' + textStatus + ' (' + XMLHttpRequest.readyState + '-' + XMLHttpRequest.status + ')' );
        },
        success:    TestMxCheckData
    });

    rsltElem.value            = global_mx_check;
    goElem.style.display    = '';
}
///////////////////////////////////////////////////////////////
//                                                           //
// Check for an MX record of an certain e-maol domain        //
//                                                           //
///////////////////////////////////////////////////////////////
function email_mx_check( email ) {

    var POSTthis        = '&email=' + email;

    global_mx_check        = '';
    var url                = '/search_and_book/request_form_mx_check.php';

    jQuery.ajax({
        type:        "POST",
        async:        false,
        url:        url,
        data:        POSTthis,
        error:    function(XMLHttpRequest, textStatus, errorThrown){
            alert('Error: Status is ' + textStatus + ' (' + XMLHttpRequest.readyState + '-' + XMLHttpRequest.status + ')' );
        },
        success:    TestMxCheckData
    });

    return_code            = global_mx_check.substr(0,2);
    if( return_code.toLowerCase() == 'ok' ) {
        return true;
    } else {
        return false;
    }
}
function TestMxCheckData ( data, textStatus  ) {
    //
    global_mx_check        = data;
}



///////////////////////////////////////////////////////////////
//                                                           //
// the Request-Form-button is hit!!!                         //
//                                                           //
///////////////////////////////////////////////////////////////
function xmitRequest( captcha ) {
    //
    var errors        = '';
    //
    var objElem        = document.getElementById( 'outward_train' );
    if( objElem != null ) {
        if( objElem.value == '' ) {
            errors        += '\n' + strErrorRequestOutwardTrain + ' ....';
            objElem.focus();
        }
    }
    //
    var objElem        = document.getElementById( 'return_train' );
    if( objElem != null ) {
        if( objElem.value == '' ) {
            errors        += '\n' + strErrorRequestReturnTrain + ' ....';
            objElem.focus();
        }
    }
    //
    var objElem        = document.getElementById( 'first_name' );
    if( objElem != null ) {
        if( objElem.value.replace(/ /g, '') == '' ) {
            errors        += '\n' + strErrorRequestFirstname + ' ....';
            objElem.focus();
        }
    }
    //
    var objElem        = document.getElementById( 'surname' );
    if( objElem != null ) {
        if( objElem.value.replace(/ /g, '') == '' ) {
            errors        += '\n' + strErrorRequestSurname + ' ....';
            objElem.focus();
        }
    }
    //
    var objElem        = document.getElementById( 'date_of_birth' );
    if( objElem != null ) {
        if( objElem.value.replace(/ /g, '') == '' ) {
            errors        += '\n' + strErrorRequestDoB + ' ....';
            objElem.focus();
        } else {
            if( !IsNumbers1(objElem.value) ) {
                errors        += '\n' + strErrorRequestDoBFormat + ' ....';
                objElem.focus();
            }
        }
    }
    //
    var objElem        = document.getElementById( 'phone_private' );
    if( objElem != null ) {
        if( objElem.value.replace(/ /g, '') == '' ) {
            errors        += '\n' + strErrorRequestPhonePrivate + ' ....';
            objElem.focus();
        } else {
            if( !IsNumbers2(objElem.value) ) {
                errors        += '\n' + strErrorRequestPhoneFormat + ' ....';
                objElem.focus();
            }
        }
    }
    //
    var objElem        = document.getElementById( 'phone_work' );
    if( objElem != null ) {
        if( objElem.value.replace(/ /g, '') != '' ) {
            if( !IsNumbers2(objElem.value) ) {
                errors        += '\n' + strErrorRequestWorkFormat + ' ....';
                objElem.focus();
            }
        }
    }
    //
    var objElem        = document.getElementById( 'email' );
    if( objElem != null ) {
        if( objElem.value.replace(/ /g, '') == '' ) {
            errors        += '\n' + strErrorRequestEmail + ' ....';
            objElem.focus();
        } else {
            if( !isValidEmail(objElem.value) ) {
                errors        += '\n' + strErrorRequestEmailFormat + ' ....';
                objElem.focus();
            } else {
                if( !email_mx_check( objElem.value ) ) {
                    errors        += '\n' + strErrorRequestEmailDomain + ' ....';
                    objElem.focus();
                }
            }
        }
    }
    //
    var goon        = true;
    var ix            = 0;
    while( goon ) {
        //
        var objElem        = document.getElementById( 'salutation_' + ix );
        if( objElem == null ) {
            goon            = false;
            break;
        }
        //
        var objElem        = document.getElementById( 'first_name_' + ix );
        if( objElem != null ) {
            if( objElem.value.replace(/ /g, '') == '' ) {
                errors        += '\n' + strErrorRequestParty + ' ' + (ix + 1) + ': ' + strErrorRequestFirstname + ' ....';
                objElem.focus();
            }
        }
        //
        var objElem        = document.getElementById( 'surname_' + ix );
        if( objElem != null ) {
            if( objElem.value.replace(/ /g, '') == '' ) {
                errors        += '\n' + strErrorRequestParty + ' ' + (ix + 1) + ': ' + strErrorRequestSurname + ' ....';
                objElem.focus();
            }
        }
        //
        var objElem        = document.getElementById( 'date_of_birth_' + ix );
        if( objElem != null ) {
            if( objElem.value.replace(/ /g, '') == '' ) {
                errors        += '\n' + strErrorRequestParty + ' ' + (ix + 1) + ': ' + strErrorRequestDoB + ' ....';
                objElem.focus();
            } else {
                if( !IsNumbers1(objElem.value) ) {
                    errors        += '\n' + strErrorRequestParty + ' ' + (ix + 1) + ': ' + strErrorRequestDoBFormat + ' ....';
                    objElem.focus();
                }
            }
        }
        //
        ix++;
    }
    //
    var objElem        = document.getElementById( 'homer_phone' );
    if( objElem != null ) {
        if( objElem.value.replace(/ /g, '') != '' ) {
            if( !IsNumbers2(objElem.value) ) {
                errors        += '\n' + strErrorRequestHomerFormat + ' ....';
                objElem.focus();
            } else {
            }
        }
    }
    //
    if( captcha != '' ) {
        var objElem        = document.getElementById( 'captcha' );
        if( objElem != null ) {
            if( objElem.value.replace(/ /g, '') == '' ) {
                errors        += '\n' + strErrorRequestCaptcha + ' ....';
                objElem.focus();
            } else {
                if( objElem.value != captcha ) {
                    errors        += '\n' + strErrorRequestCaptchaError + ' ....';
                    objElem.focus();
                }
            }
        }
    }
    //
    //
    if( errors != '' ) {
        alert( strErrorSearchFound + ':\n' + errors );
        return;
    }
    //
    var objElem                    = document.getElementById( 'ajax_busy' );
    if( objElem != null ) {
        objElem.style.display        = 'inline';
    }
    //
    document.request_form.submit();
}


///////////////////////////////////////////////////////////////
//                                                           //
// show unit description (More info) at searc-results        //
//                                                           //
///////////////////////////////////////////////////////////////
function unitInfo( obj ) {
    //
    var objElem            = document.getElementById( 'unitInfo_' + obj.id );
    if( objElem == null ) {
        return;
    }
    if( obj.innerHTML == strBookingShowDescription ) {
        objElem.style.display    = '';
        obj.innerHTML            = strBookingHideDescription;
    } else {
        objElem.style.display    = 'none';
        obj.innerHTML            = strBookingShowDescription;
    }
}


///////////////////////////////////////////////////////////////
//                                                           //
// name filter handling                                      //
//    (don't AJAX if no value change!)                         //
//                                                           //
///////////////////////////////////////////////////////////////
var    nameFilterValue        = '';
function focusNameFilter( obj ) {
    nameFilterValue            = obj.value;
}
function blurNameFilter( obj ) {
    if( obj.value == nameFilterValue ) {
        return;
    }
    nameFilterValue            = obj.value;
    xmitSortFilter();
}


///////////////////////////////////////////////////////////////
//                                                           //
// a sort or filter request is done!!!                       //
//                                                           //
///////////////////////////////////////////////////////////////
function xmitSortFilter( obj ) {
    ////    
    var page_number;
    page_number = document.getElementById('page_number');
    page_number = page_number.innerHTML;
    ////
    
    //
    var nbRsltElem        = document.getElementById( 'aantal_resultaten' );
    if( nbRsltElem == null ) {
        return;
    }
    //
    var busyElem        = document.getElementById( 'sortfilterbusy' );
    if( busyElem == null ) {
        return;
    }
    //
    var POSTthis        = '&location=content&sortandfilter=1';
    //
    var argFound        = false;
    var argChoice        = false;
    var argElem            = document.getElementById( 'sort_arg' );
    if( argElem != null ) {
        argFound            = true;
        var argValue        = argElem.options[argElem.selectedIndex].value;
        POSTthis            += '&sort_arg=' + argValue;
        if( obj != null ) {
            if( obj.id == 'sort_arg' ) {
                argChoice        = true;
            }
        }
    }
    //
    if( argFound && argChoice ) {
        if( argValue == 'populariteit' ) {
            var seqValue    = 'desc';
        } else {
            var seqValue    = 'asc';
        }
        POSTthis            += '&sort_seq=' + seqValue;
    } else {
        var seqElem            = document.getElementById( 'sort_seq' );
        if( seqElem != null ) {
            var seqValue        = seqElem.className;
            if( obj != null ) {
                if( obj.id == 'sort_seq' ) {
                    if( seqValue == 'asc' ) {
                        seqValue        = 'desc';
                    } else {
                        seqValue        = 'asc';
                    }
                }
            }
            POSTthis            += '&sort_seq=' + seqValue;
        }
    }
    //
    var objElem            = document.getElementById( 'filter_naam' );
    if( objElem != null ) {
        POSTthis            += '&filter_naam=' + objElem.value;
    }
    //
    var objElem            = document.getElementById( 'filter_type' );
    if( objElem != null ) {
        POSTthis            += '&filter_type=' + objElem.value;
    }
    //
    var objElem            = document.getElementById( 'filter_entree' );
    if( objElem != null ) {
        POSTthis            += '&filter_entree=' + objElem.value;
    }
    //
    POSTthis            += getFilterOption( 'filter_restaurant' );
    POSTthis            += getFilterOption( 'filter_bar' );
    POSTthis            += getFilterOption( 'filter_zwembad' );
    POSTthis            += getFilterOption( 'filter_sauna' );
    POSTthis            += getFilterOption( 'filter_fitness' );
    POSTthis            += getFilterOption( 'filter_metro' );
    POSTthis            += getFilterOption( 'filter_pendel' );
    POSTthis            += getFilterOption( 'filter_parkeren' );
    POSTthis            += getFilterOption( 'filter_wifi' );
    //
    POSTthis            += getFilterOption( 'filter_ontbijt' );
    //
    var objElem            = document.getElementById( 'filter_class' );
    if( objElem != null ) {
        POSTthis            += '&filter_class=' + objElem.value;
    }
    //
    POSTthis            += getFilterOption( 'filter_giro' );
    POSTthis            += getFilterOption( 'filter_ideal' );
    POSTthis            += getFilterOption( 'filter_cc' );
    POSTthis            += getFilterOption( 'filter_cash' );
    //
    POSTthis            += getFilterOption( 'filter_car' );
    POSTthis            += getFilterOption( 'filter_bus' );
    POSTthis            += getFilterOption( 'filter_train' );
    POSTthis            += getFilterOption( 'filter_plane' );
    //
    var url                = '/search_and_book/search_and_book.php';
    
    //
    jQuery("#aantal_resultaten").hide("slow", function() {;
        jQuery("#sortfilterbusy").show("slow", function() {;
            jQuery.ajax({
                type:        "POST",
                url:        url,
                data:        POSTthis,
                error:    function(XMLHttpRequest, textStatus, errorThrown){
                    alert('Error: Status is ' + textStatus + ' (' + XMLHttpRequest.readyState + '-' + XMLHttpRequest.status + ')' );
                },
                success:    SortFilterData
            });
        });
    });
}

function SortFilterData ( data, textStatus  ) {
    //      
    var busyElem        = document.getElementById( 'sortfilterbusy' );
    if( busyElem == null ) {
        return;
    }
    jQuery("#sortfilterbusy").hide("slow", function() {;
        jQuery("#aantal_resultaten").show("slow", function() {;
        });
    });
    //
    var resutsElem        = document.getElementById( 'sortfilterresults' );
    if( resutsElem == null ) {
        return;
    }

    resutsElem.innerHTML        = data;
    
    jQuery("#sortfilterresults").html(data);
    //
    //    Get focus away from any (scrollable) select-tag
    var objElem            = document.getElementById( 'filter_naam' );
    if( objElem != null ) {
        if(typeof objElem.focus == 'function') {
            objElem.focus();
        }
    }
    
    initialize();
    changeResultsWeergave(selectedTab); 
}

function getFilterOption( idFilter ) {
    var postThis        = '';
    var objElem            = document.getElementById( idFilter );
    if( objElem != null ) {
        postThis            = '&' + idFilter + '=';
        if( objElem.checked ) {
            postThis            += '1';
        } else {
            postThis            += '0';
        }
    }
    return postThis;
}

///////////////////////////////////////////////////////////////
//                                                           //
// the Search-button is hit!!!                               //
//                                                           //
///////////////////////////////////////////////////////////////
function xmitSearch( sessionname, sessionname_length, input_suffix ) {
    //
    //    Remember INPUT (ID) suffix globaly
    global_input_suffix    = input_suffix;
    //
    
    //
    
    //
    var errors        = '';
    //
    var objElem        = document.getElementById( 'sb_aankomst' + input_suffix );
    if( objElem == null ) {
        return;
    }
    
    var now            = new Date();
    dd                = now.getDate();
    mm                = now.getMonth();
    yy                = now.getFullYear();
    var nowDate        = new Date(yy, mm, dd);
    
    var parts        = objElem.value.split(' ');
    var elems        = parts[1].split('-');
    var dd            = parseInt(elems[0],10);
    var mm            = parseInt(elems[1],10) - 1;
    var yy            = parseInt(elems[2],10);
    var arrivalDate    = new Date(yy, mm, dd);
    //
    
    //
    if( arrivalDate < nowDate ) {
        errors        += '\n' + strErrorSearchArrival + '\n';
        objElem.focus();
    }
    //
    var objElem        = document.getElementById( 'sb_aantal_overnachtingen' + input_suffix );
    if( objElem == null ) {
        return;
    }
    if( objElem.value == '' || objElem.value == '0' ) {
        errors        += '\n' + strErrorSearchDuration + ' ....';
        objElem.focus();
    }
    //
    var objElem        = document.getElementById( 'sb_aantal_volwassenen' + input_suffix );
    if( objElem == null ) {
        return;
    }
    if( objElem.value == '' || objElem.value*1 == '0' ) {
        errors        += '\n' + strErrorSearchNbAdults + ' ....';
        objElem.focus(); 
    }
    
    // check if birthdates are valid
    var containerElemT    = document.getElementById( 'tr_geboorte_data_text' + input_suffix );
    
    if(containerElemT.style.display == '') {
        for( ix=1; ix<11; ix++ ) {
            var dobElem_y = document.getElementById( 'sb_geboorte_datum_y_' + ix + input_suffix );
            
            if(dobElem_y != null) {
                if(isNaN(dobElem_y.value) || dobElem_y.value.length != 4) {
                    errors        += '\n' + strBirthDateFourDigits;
                    dobElem_y.focus();
                }
            }
        }
    }
    
    if(checkFutureBirthDates(input_suffix)) {
        errors        += '\n' + strNoFutureBirthDate;     
    }
    
    //
    // check if number of people is more than 11 and if so, tell visitor to visit group-page
    var nb_people = 0;
    
    var objElem        = document.getElementById( 'sb_aantal_volwassenen' + input_suffix );
    
    if( objElem == null ) {
        return;
    }
    
    if(objElem.value != '') {
        nb_people += objElem.value*1;
    }
    
    var objElem        = document.getElementById( 'sb_aantal_kinderen' + input_suffix );
    
    if( objElem == null ) {
        return;
    } 
    
    if(objElem.value != '') {
        nb_people += objElem.value*1;
    }
    
    if(nb_people > 11) {
        errors += '\n' + strSearchGroupTravel + ' ....';
        objElem.focus();    
    }
    // 
        
    //
    //    Check ages of any children (less then 18 years on arrival date)
    var errorDOB    = checkDOBs(yy,(mm+1),dd, input_suffix);
    if( errorDOB != '' ) {
        errors        += '\n\n' + strErrorDOBs1 + errorDOB + strErrorDOBs2;
    }
    //
    var transport_found    = false;
    //
    var objElem            = document.getElementById( 'sb_transport_auto' + input_suffix );
    if( objElem != null ) {
        if( objElem.checked ) {
            transport_found    = true;
        }
    }
    var objElem            = document.getElementById( 'sb_transport_bus' + input_suffix );
    if( objElem != null ) {
        if( objElem.checked ) {
            transport_found    = true;
        }
    }
    var objElem            = document.getElementById( 'sb_transport_trein' + input_suffix );
    if( objElem != null ) {
        if( objElem.checked ) {
            transport_found    = true;
        }
    }
    var objElem            = document.getElementById( 'sb_transport_vliegtuig' + input_suffix );
    if( objElem != null ) {
        if( objElem.checked ) {
            transport_found    = true;
        }
    }
    if( !transport_found ) {
        errors        += '\n' + strErrorSearchTransport;
    }
    //
    if( errors != '' ) {
        alert( strErrorSearchFound + ':\n' + errors );
        return;
    }
    createCookie( sessionname, sessionname_length, strCookieName, 365, input_suffix );
    var deeplink = generateDeeplink();
    var formId = 'search_form' + input_suffix;
    var formAction = jQuery('#'+formId).attr("action");
    jQuery('#'+formId).attr("action", formAction + deeplink);
    
    jQuery(document).ready(function() {
        if(typeof(jQuery("#progress_indicator").fixedCenter) == 'function') {
            jQuery("#progress_indicator").fixedCenter();
        }
        jQuery("#progress_indicator").show();
    });
    

    var submitSearchForm    = document.getElementById('search_form' + input_suffix);
    submitSearchForm.submit();
}

jQuery(document).ready(function() {
    //setGATestCookies();
    sendGACookieData();
});

// Deze functie set test-cookies voor localhost waar GA cookies ontbreken
function setGATestCookies() {
    jQuery.cookie("__utma", "136431797.630371714.1324049469.1324156617.1324209626.3");
    jQuery.cookie("__utmb", "136431797.1.10.1324209626");
    jQuery.cookie("__utmz", "136431797.1324049469.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)");
}


// Deze functie verzend de GA cookie data naar de server
function sendGACookieData() {
    var utma = jQuery.cookie('__utma');
    var utmb = jQuery.cookie('__utmb');
    var utmz = jQuery.cookie('__utmz');
    
    if(utma != null && utmb != null && utmz != null) {
        var url = '/search_and_book/sync_ga_cookiedata.php';
        var POSTthis = '&utma=' + utma + '&utmb=' + utmb + '&utmz=' + utmz;
    
        jQuery.ajax({
            type:   "POST",
            async:  true,
            url:    url,
            data:   POSTthis,
            error:  function(XMLHttpRequest, textStatus, errorThrown) {
                alert('Error: Status is ' + textStatus + ' (' + XMLHttpRequest.readyState + '-' + XMLHttpRequest.status + ')' );
            },
            success: cookieSentSuccess
        });
    }
}

function cookieSentSuccess(data, textStatus) {
    //alert('data=' + data + ' textStatus=' + textStatus);
}



///////////////////////////////////////////////////////////////
//                                                           //
// the custom-room-layoyt-pulldown-menu is hit!!!            //
//                                                           //
///////////////////////////////////////////////////////////////
function selectCustomRoomLayout(obj) {
    if(obj.value == 'automatic') {
        // hide custom layout inputs
        jQuery("#custom_combinations_layout").hide('slow');     
    } else {
        // show custom layout inputs
        jQuery("#custom_combinations_layout").show('slow');     
    }      
}

function checkAutoRoomLayout(sessionname, sessionname_length, input_suffix, location) {
    var didCustomSearch = jQuery("#btnWijzigen").css('display');
    
    // custom search staat nog aan dus nadat hierna voor auto indeling wordt gekozen, zoekaktie automatisch starten!
    if(didCustomSearch != 'none') {
        if(typeof location == 'undefined') {
            location = 'content';
        }
            
        // in grote zoeken
        if(location == 'content') {
            xmitSearch(sessionname, sessionname_length, input_suffix);       
        } else {
        // in acco-detail-pagina
            xmitAvailability(sessionname, sessionname_length, input_suffix);    
        }
    }
}

///////////////////////////////////////////////////////////////
//                                                           //
// the save-button for the custom room layout is hit!!!      //
//                                                           //
///////////////////////////////////////////////////////////////
function xmitCustomRoomLayout(sessionname, sessionname_length, input_suffix, location) {
    // check if every room has at least 1 adult
    var nb_people = 0;
    var objElem = document.getElementById( 'sb_aantal_volwassenen' + input_suffix );
    
    if( objElem == null ) {
        return;
    }
    
    if(objElem.value != '') {
        nb_people += objElem.value*1;
    }
    
    var objElem = document.getElementById( 'sb_aantal_kinderen' + input_suffix );
    
    if( objElem == null ) {
        return;
    } 
    
    if(objElem.value != '') {
        nb_people += objElem.value*1;
    }
    
    var objElem = document.getElementById('custom_search_arg');
    var roomNumberAges = new Array();
    
    roomNumberAges[1] = new Array();
    roomNumberAges[2] = new Array();
    roomNumberAges[3] = new Array();
    roomNumberAges[4] = new Array();
    roomNumberAges[5] = new Array();
    
    if(objElem != null) {
        if(objElem.value == 'manual') {            
            for(i=0; i<nb_people; i++) {
                var vr = 'persons_rooms_' + i;
                
                var objElem = document.getElementsByName(vr);
                
                for(var j in objElem) {
                    if(objElem[j].checked) {
                        var val = objElem[j].value;
                        val = val.split('_');
                        var roomNumber = val[0]*1;
                        var age = val[1];
                        
                        roomNumberAges[roomNumber].push(age);
                    }
                }
            }
            
            var message = '';
            var messageIndeling = '';
            var isOpvolgend = true;
            
            for(var k in roomNumberAges) {
                if(IsNumeric(k)) {
                    if(roomNumberAges[k].length > 0) {
                        if(isOpvolgend == false) {
                            messageIndeling = strErrorOplopendeKamerindeling;        
                        }
                        
                        var has_adults = false;
                        
                        for(l=0; l<roomNumberAges[k].length; l++) {
                            if(roomNumberAges[k][l] == 99) {
                                has_adults = true;
                            }
                        }
                        
                        if(has_adults == false) {
                            message += sprintf(strRoomHasNoAdult, k); 
                        }
                    } else {
                        isOpvolgend = false;
                    }
                }   
            }
            
            message += messageIndeling;
            
            if(message != '') {
                alert(message);
                return;
            }
        }  
    } 
    
    
    var xax = jQuery("#custom_combinations_layout");
    
    if(typeof location == 'undefined') {
        location = 'content';
    }
        
    // in grote zoeken
    if(location == 'content') {
        xmitSearch(sessionname, sessionname_length, input_suffix);       
    } else {
    // in acco-detail-pagina
        xmitAvailability(sessionname, sessionname_length, input_suffix);    
    }
}

function sprintf(format, etc) {
    var arg = arguments;
    var i = 1;
    return format.replace(/%((%)|s)/g, function (m) { return m[2] || arg[i++] })
}

function IsNumeric(num) {
    return (num >= 0 || num < 0);
}


function changeCustomRoomLayout(sessionname, sessionname_length, input_suffix) {
    jQuery("#btnWijzigen").hide();
    jQuery("#btnOpslaan").show();
    
    var nb_people = 0;
    
    var objElem        = document.getElementById( 'sb_aantal_volwassenen' + input_suffix );
    
    if( objElem == null ) {
        return;
    }
    
    if(objElem.value != '') {
        nb_people += objElem.value*1;
    }
    
    var objElem        = document.getElementById( 'sb_aantal_kinderen' + input_suffix );
    
    if( objElem == null ) {
        return;
    } 
    
    if(objElem.value != '') {
        nb_people += objElem.value*1;
    }
    
    jQuery(".roomSelect").each(function() { 
        jQuery(this).removeAttr('disabled'); 
    });
}   


///////////////////////////////////////////////////////////////
//                                                           //
// the Availability-button is hit!!!                         //
//                                                           //
///////////////////////////////////////////////////////////////
function xmitAvailability( sessionname, sessionname_length, input_suffix, first_call ) {
    if(first_call == null) {
        first_call = false;
    }
    //
    //    Remember INPUT (ID) suffix globaly
    global_input_suffix    = input_suffix;
    //
    createCookie( sessionname, sessionname_length, strCookieName, 365, input_suffix );
    //
    var errors        = '';
    //
    var POSTthis    = '&location=acco';
    //
    var objElem        = document.getElementById( 'sb_aankomst' + input_suffix );
    if( objElem == null ) {
        return;
    }
    POSTthis        += '&sb_aankomst=' + objElem.value;
    //
    var parts        = objElem.value.split(' ');
    var elems        = parts[1].split('-');
    var dd            = parseInt(elems[0],10);
    var mm            = parseInt(elems[1],10) - 1;
    var yy            = parseInt(elems[2],10);
    var arrivalDate    = new Date(yy, mm, dd);
    //
    var now            = new Date();
    dd                = now.getDate();
    mm                = now.getMonth();
    yy                = now.getFullYear();
    var nowDate        = new Date(yy, mm, dd);
    //
    if( arrivalDate < nowDate ) {
        errors        += '\n' + strErrorSearchArrival + '\n';
        objElem.focus();
    }
    //
    var objElem        = document.getElementById( 'sb_aantal_overnachtingen' + input_suffix );
    if( objElem == null ) {
        return;
    }
    POSTthis        += '&sb_aantal_overnachtingen=' + objElem.value;
    if( objElem.value == '' || objElem.value == '0' ) {
        errors        += '\n' + strErrorSearchDuration + ' ....';
        objElem.focus();
    }
    //
    var objElem        = document.getElementById( 'sb_aantal_volwassenen' + input_suffix );
    if( objElem == null ) {
        return;
    }
    POSTthis        += '&sb_aantal_volwassenen=' + objElem.value;
    if( objElem.value == '' || objElem.value*1 == '0' ) {
        errors        += '\n' + strErrorSearchNbAdults + ' ....';
        objElem.focus();
    }
    
    ////
    
    // check if birthdates are valid
    var containerElemT    = document.getElementById( 'tr_geboorte_data_text' + input_suffix );
    
    if(containerElemT.style.display == '') {
        for( ix=1; ix<11; ix++ ) {
            var dobElem_y = document.getElementById( 'sb_geboorte_datum_y_' + ix + input_suffix );
            
            if(dobElem_y != null) {
                if(isNaN(dobElem_y.value) || dobElem_y.value.length != 4) {
                    errors        += '\n' + strBirthDateFourDigits;
                    dobElem_y.focus();
                }
            }
        }
    }
    
    if(checkFutureBirthDates(input_suffix)) {
        errors        += '\n' + strNoFutureBirthDate;     
    }
    
    ////
    //
    // check if number of people is more than 11 and if so, tell visitor to visit group-page
    var nb_people = 0;
    
    var objElem        = document.getElementById( 'sb_aantal_volwassenen' + input_suffix );
    
    if( objElem == null ) {
        return;
    }
    
    if(objElem.value != '') {
        nb_people += objElem.value*1;
    }
    
    var objElem        = document.getElementById( 'sb_aantal_kinderen' + input_suffix );
    
    if( objElem == null ) {
        return;
    } 
    
    if(objElem.value != '') {
        nb_people += objElem.value*1;
    }
    
    if(nb_people > 11) {
        errors += '\n' + strSearchGroupTravel + ' ....';
        objElem.focus();    
    }
    //
    ////
    
    //
    //    Check ages of any children (less then 18 years on arrival date)
    var errorDOB    = checkDOBs(yy,(mm+1),dd, input_suffix);
    POSTthis        += addDOBs(input_suffix);
    if( errorDOB != '' ) {
        errors        += '\n\n' + strErrorDOBs1 + errorDOB + strErrorDOBs2;
    }
    //
    var transport_found    = false;
    //
    var objElem            = document.getElementById( 'sb_transport_auto' + input_suffix );
    if( objElem != null ) {
        if( objElem.checked ) {
            transport_found    = true;
            POSTthis        += '&sb_transport_auto=1';
        }
    }
    var objElem            = document.getElementById( 'sb_transport_bus' + input_suffix );
    if( objElem != null ) {
        if( objElem.checked ) {
            transport_found    = true;
            POSTthis        += '&sb_transport_bus=1';
        }
    }
    var objElem            = document.getElementById( 'sb_transport_trein' + input_suffix );
    if( objElem != null ) {
        if( objElem.checked ) {
            transport_found    = true;
            POSTthis        += '&sb_transport_trein=1';
        }
    }
    var objElem            = document.getElementById( 'sb_transport_vliegtuig' + input_suffix );
    if( objElem != null ) {
        if( objElem.checked ) {
            transport_found    = true;
            POSTthis        += '&sb_transport_vliegtuig=1';
        }
    }
    if( !transport_found ) {
        errors        += '\n' + strErrorSearchTransport;
    }
    //
    if( errors != '' ) {
        alert( strErrorSearchFound + ':\n' + errors );
        return;
    }
    //
    //    All seems well at this point, let's call for the results
    //
    var objElem        = document.getElementById( 'sb_acco' + input_suffix );
    if( objElem == null ) {
        return;
    }
    POSTthis        += '&sb_acco=' + objElem.value;
    POSTthis        += '&first_call=' + first_call;
    ////
    // enable debugging
    POSTthis        += '&DBGSESSID=1;d%3D1';
    ////
    //
    var url                = '/search_and_book/search_and_book.php';
    //
    
    if(typeof(jQuery("#progress_indicator").fixedCenter) == 'function') {
        jQuery("#progress_indicator").fixedCenter();
    }
    
    jQuery("#content_search_box").hide('slow');
    jQuery("#progress_indicator").show();
    
    jQuery.ajax({
        type:        "POST",
        url:        url,
        data:        POSTthis,
        error:    function(XMLHttpRequest, textStatus, errorThrown) {
            jQuery("#progress_indicator").hide();
            alert('Error: Status is ' + textStatus + ' (' + XMLHttpRequest.readyState + '-' + XMLHttpRequest.status + ')' );
        },
        success:    AvailabilityData
    });
}
function AvailabilityData ( data, textStatus  ) {
    //
    jQuery("#progress_indicator").hide();
    var busyElem        = document.getElementById( 'content_busy_box' );
    if( busyElem == null ) {
        return;
    }
    jQuery("#content_busy_box").hide("slow", function() {;
        jQuery("#content_search_results").show("slow", function() {;
        });
    });
    //
    var resutsElem        = document.getElementById( 'content_search_results' );
    if( resutsElem == null ) {
        return;
    }
    resutsElem.innerHTML        = data;
}



///////////////////////////////////////////////////////////////
//                                                           //
// get the Availability-search-form back                     //
//                                                           //
///////////////////////////////////////////////////////////////
function changePreferences(input_suffix) {
    // update party-checksum
    //var checksum = getPartyChecksum(input_suffix);
    //alert('checksum: ' + checksum);
    //alert('input_suffix: ' + input_suffix);
            
    //jQuery("#partyChecksumHiddenField").val(checksum);
    
    jQuery("#content_search_results").hide("slow", function() {;
        jQuery("#content_search_box").show("slow", function() {;
        });
    });
}



///////////////////////////////////////////////////////////////
//                                                           //
// create and write a cookie of this search situation        //
//                                                           //
///////////////////////////////////////////////////////////////
function createCookie( sessionname, sessionname_length, cName, expDays, input_suffix ) {
    //
    var cValue            = strCookieCheck;
    //
    var objElem            = document.getElementById( 'sb_aankomst' + input_suffix );
    if( objElem == null ) {
        return;
    }
    cValue                += objElem.value;
    //
    var objElem            = document.getElementById( 'sb_aantal_overnachtingen' + input_suffix );
    if( objElem == null ) {
        return;
    }
    cValue                += objElem.value;
    //
    var objElem            = document.getElementById( 'sb_aantal_volwassenen' + input_suffix );
    if( objElem == null ) {
        return;
    }
    cValue                += objElem.value;
    
    var nb_adults = parseInt(objElem.value,10); 
    
    //
    var objElem            = document.getElementById( 'sb_aantal_kinderen' + input_suffix );
    if( objElem == null ) {
        return;
    }
    cValue                += objElem.value;
    //
    var nb_children        = parseInt(objElem.value,10);
    if( nb_children != 0 ) {
        for( ix=1; ix<=nb_children; ix++ ) {
            var objElem_d = document.getElementById('sb_geboorte_datum_d_' + ix + input_suffix);

            if(objElem_d == null) {
                alert('Missing: [' + 'sb_geboorte_datum_d_' + ix + input_suffix + ']');
                break;
            }
            
            var objElem_m = document.getElementById('sb_geboorte_datum_m_' + ix + input_suffix);
            
            if(objElem_m == null) {
                alert('Missing: [' + 'sb_geboorte_datum_m_' + ix + input_suffix + ']');
                break;
            }
            
            var objElem_y = document.getElementById('sb_geboorte_datum_y_' + ix + input_suffix);
            
            if(objElem_y == null) {
                alert('Missing: [' + 'sb_geboorte_datum_y_' + ix + input_suffix + ']');
                break;
            }
            
            cValue += objElem_d.value.toString() + '-' + objElem_m.value.toString() + '-' + objElem_y.value;
        }
    }
    //
    var objElem            = document.getElementById( 'sb_aantal_gewenste_units' + input_suffix );
    if( objElem == null ) {
        cValue                += '01';
    } else {
        cValue                += objElem.value;
    }
    //
    var objElem            = document.getElementById( 'div_search_advanced' + input_suffix );
    if( objElem == null ) {
        cValue                += '0xxx';
    } else {
        var opened            = 171;
        var closed            = 187;
        var flipflop        = objElem.innerHTML.charCodeAt(0);
        if( flipflop == closed ) {
            //    Closed
            cValue                += '0';
        } else {
            //    Opened
            cValue                += '1';
        }
        //
        var objElem            = document.getElementById( 'sb_accommodatie' + input_suffix );
        if( objElem == null ) {
            return;
        }
        cValue                += objElem.value;
        //
        var objElem            = document.getElementById( 'sb_afstand' + input_suffix );
        if( objElem == null ) {
            return;
        }
        cValue                += objElem.value;
    }
    //
    var objElem            = document.getElementById( 'sb_transport_auto' + input_suffix );
    if( objElem == null ) {
        cValue                += '0';
    } else {
        if( objElem.checked ) {
            cValue                += '1';
        } else {
            cValue                += '0';
        }
    }
    //
    var objElem            = document.getElementById( 'sb_transport_bus' + input_suffix );
    if( objElem == null ) {
        cValue                += '0';
    } else {
        if( objElem.checked ) {
            cValue                += '1';
        } else {
            cValue                += '0';
        }
    }
    //
    var objElem            = document.getElementById( 'sb_transport_trein' + input_suffix );
    if( objElem == null ) {
        cValue                += '0';
    } else {
        if( objElem.checked ) {
            cValue                += '1';
        } else {
            cValue                += '0';
        }
    }
    //
    var objElem            = document.getElementById( 'sb_transport_vliegtuig' + input_suffix );
    if( objElem == null ) {
        cValue                += '0';
    } else {
        if( objElem.checked ) {
            cValue                += '1';
        } else {
            cValue                += '0';
        }
    }
    
    ////
    var objElem = document.getElementById('custom_search_arg');
    
    
    if(objElem != null) {
        var partyChanged = false;
    
        var checksumBeforeValue = jQuery('#partyChecksumHiddenField').val();
        var checksumAfterValue = getPartyChecksum(input_suffix);
        
        jQuery("#partyChecksumHiddenField").val(checksumAfterValue);
        
        //alert('before: ' + checksumBeforeValue);
        //alert('after: ' + checksumAfterValue);
        
        if(checksumBeforeValue != checksumAfterValue) {
            partyChanged = true;     
        }
        
        //alert('partyChanged: ' + partyChanged);
    
        if(objElem.value == 'manual' && partyChanged == false) {
            cValue += '1';
            nb_people = nb_adults + nb_children;
            
            for(i=0; i<nb_people; i++) {
                var vr = 'persons_rooms_' + i;
                
                var objElem = document.getElementsByName(vr);
                
                for(j=0; j<objElem.length; j++) {
                    if(objElem[j].checked) {
                        cValue += objElem[j].value;   
                    }
                }
            }
        } else {
            cValue += '0';
        }     
    } else {
        cValue += '0';    
    }
    ////
    
    //
    cValue                += sessionname_length;
    cValue                += sessionname;

    //
    //
    var cookieName        = cName;
    //
    var date            = new Date();
    date.setTime( date.getTime() + (expDays*24*60*60*1000) );
    var expires            = 'expires=' + date.toGMTString();
    //
    document.cookie = cookieName + '=' + cValue + '; ' + expires + '; path=/';
}      



///////////////////////////////////////////////////////////////
//                                                           //
// handling number-of-children choice                        //
//                                                           //
///////////////////////////////////////////////////////////////
function showKinderen( input_suffix ) {
    //
    //    Remember INPUT (ID) suffix globaly
    global_input_suffix    = input_suffix;
    //
    //    Get various spots
    var inputElem        = document.getElementById( 'div_geboorte_datum' + input_suffix );
    if( inputElem == null ) {
        return;
    }
    var outputElem        = document.getElementById( 'td_geboorte_data' + input_suffix );
    if( outputElem == null ) {
        return;
    }
    var containerElemT    = document.getElementById( 'tr_geboorte_data_text' + input_suffix );
    if( containerElemT == null ) {
        return;
    }
    var containerElemD    = document.getElementById( 'tr_geboorte_data_data' + input_suffix );
    if( containerElemD == null ) {
        return;
    }
    var nbElem            = document.getElementById( 'sb_aantal_kinderen' + input_suffix );
    if( nbElem == null ) {
        return;
    }
    //
    //    Get numbet of children
    var nb_children        = parseInt(nbElem.value,10);
    if( nb_children == 0 ) {
        containerElemT.style.display        = 'none';
        containerElemD.style.display        = 'none';
        return;
    }
    //
    //    Save any existing entries
    var DOBs_d = new Array();
    var DOBs_m = new Array();
    var DOBs_y = new Array();
    
    for( ix=1; ix<11; ix++ ) {
        //var dobElem            = document.getElementById( 'sb_geboorte_datum_' + ix + input_suffix );
        var dobElem_d = document.getElementById('sb_geboorte_datum_d_' + ix + input_suffix);
        var dobElem_m = document.getElementById('sb_geboorte_datum_m_' + ix + input_suffix);
        var dobElem_y = document.getElementById('sb_geboorte_datum_y_' + ix + input_suffix);
        
        if(dobElem_d == null || dobElem_m == null || dobElem_y == null) {
            break;
        }
        
        DOBs_d[(ix - 1)] = dobElem_d.value;
        DOBs_m[(ix - 1)] = dobElem_m.value;
        DOBs_y[(ix - 1)] = dobElem_y.value;
    }
    //
    //    Get standard birth-day stuff
    var std_birthday    = inputElem.innerHTML;
    //
    //    Show enough dates of birth
    var html            = '';
    var add_html        = '';
    for( ix=1; ix<=nb_children; ix++ ) {
        add_html            = std_birthday.replace(/xyz/g,''+ix);
        if( ix > 1 ) {
            html            += '<br>';
        }
        html            += add_html;
    }
    //
    //    Show it
    containerElemT.style.display    = '';
    containerElemD.style.display    = '';
    outputElem.innerHTML            = html;
    //
    //    Restore any saved entries
    for( ix=0; ix<DOBs_d.length; ix++ ) {
        //var dobElem = document.getElementById( 'sb_geboorte_datum_' + (ix + 1) + input_suffix );
        var dobElem_d = document.getElementById('sb_geboorte_datum_d_' + (ix + 1) + input_suffix);
        var dobElem_m = document.getElementById('sb_geboorte_datum_m_' + (ix + 1) + input_suffix);
        var dobElem_y = document.getElementById('sb_geboorte_datum_y_' + (ix + 1) + input_suffix);
        
        if(dobElem_d == null || dobElem_m == null || dobElem_y == null) {
            break;
        }
        
        dobElem_d.value = DOBs_d[ix];
        dobElem_m.value = DOBs_m[ix]; 
        dobElem_y.value = DOBs_y[ix]; 
    }
}


///////////////////////////////////////////////////////////////
//                                                           //
// Kalender-25 (Aankomst)                                    //
//                                                           //
///////////////////////////////////////////////////////////////
var now                = new Date();
var yesterday        = new Date(now.valueOf() - 1000 * 60 * 60 * 24);
var nextyear        = new Date(now.valueOf() + 1000 * 60 * 60 * 24 * 365);
var cal25            = new CalendarPopup("caldiv", true);
cal25.setCssPrefix("ADZOEKEN");
cal25.offsetX        = 5;
cal25.offsetY        = 5;
cal25.addDisabledDates(null,formatDate(yesterday,"yyyy-MM-dd"));
cal25.addDisabledDates(formatDate(nextyear,"yyyy-MM-dd"),null);
cal25.setTodayText(strToday);
cal25.setMonthAbbreviations("1","2","3","4","5","6","7","8","9","10","11","12");
cal25.monthNames    = strMonthNames;
cal25.dayHeaders    = strDayHeaders;
cal25.setReturnFunction("setMultipleValues25");

var weekdagen        = strWeekDays;

function setMultipleValues25(y,m,d) {
    //
    var when        = new Date(y, (m-1), d);
    var day            = when.getDay();
    var weekdag        = weekdagen[day];
    //
    var dd, mm;
    (d < 10) ? dd = '0' + d : dd = d;
    (m < 10) ? mm = '0' + m : mm = m;
    //
    selDate        = weekdag + ' ' + dd + '-' + mm + '-' + y;
    var objElem        = document.getElementById( 'sb_aankomst' + global_input_suffix );
    if( objElem != null ) {
        objElem.value    = selDate;
        //
        calcTerugDatum( global_input_suffix );
        //
        //    Check ages of any children (less then 18 years on arrival date)
        errors            = checkDOBs(y,m,d, global_input_suffix);
        if( errors != '' ) {
            alert(strErrorDOBs1 + errors + strErrorDOBs2);
        }
    }
}

function displayHeenDatum( input_suffix ) {
    //
    //    Remember INPUT (ID) suffix globaly
    global_input_suffix    = input_suffix;
    //
    var objElem        = document.getElementById( 'sb_aankomst' + input_suffix );
    if( objElem == null ) {
        return;
    }
    var parts            = objElem.value.split(' ');
    var elems            = parts[1].split('-');
    var dd                = parseInt(elems[0],10);
    var mm                = parseInt(elems[1],10) - 1;
    var yy                = parseInt(elems[2],10);
    cal25.currentDate    = new Date(yy, mm, dd);
    //
    if( input_suffix != '' ) {
        cal25.offsetY        = -140;
    }
    cal25.showCalendar( 'sb_kalender_25' + input_suffix );
    cal25.offsetY        = 5;
    return false;
}



///////////////////////////////////////////////////////////////
//                                                           //
// Check any given Date Of Birth                             //
//                                                           //
///////////////////////////////////////////////////////////////
function checkDOBs(y,m,d, input_suffix) {
    //
    var nbElem            = document.getElementById( 'sb_aantal_kinderen' + input_suffix );
    if( nbElem == null ) {
        return '';
    }
    //    Get numbet of children
    var nb_children        = parseInt(nbElem.value,10);
    if( nb_children == 0 ) {
        //    No children ...
        return '';
    }
    //    Get DOB-date components
    var    arrDD            = d;
    var    arrMM            = m;
    var    arrYY            = y;
    var errors            = '';
    for( ix=1; ix<11; ix++ ) {
        var dobElem_d = document.getElementById( 'sb_geboorte_datum_d_' + ix + input_suffix );
        var dobElem_m = document.getElementById( 'sb_geboorte_datum_m_' + ix + input_suffix );
        var dobElem_y = document.getElementById( 'sb_geboorte_datum_y_' + ix + input_suffix );
        
        if(dobElem_d == null || dobElem_m == null || dobElem_y == null) {
            break;
        }
        
        var dobDD            = parseInt(dobElem_d.value,10);
        var dobMM            = parseInt(dobElem_m.value,10);
        var dobYY            = parseInt(dobElem_y.value,10);
    
        
        var diffYY            = arrYY - dobYY;
        if( diffYY > 18 ) {
            //    Older than 18 years!
            if( errors != '' ) {
                errors                += ' en ';
            }
            errors                += ix;
        } else {
            if( diffYY == 18 ) {
                if( dobMM < arrMM ) {
                    //    18 years and some months!
                    if( errors != '' ) {
                        errors                += ' en ';
                    }
                    errors                += ix;
                } else {
                    if( dobMM == arrMM ) {
                        if( dobDD <= arrDD ) {
                            //    18 years and some days and/or birthday!
                            if( errors != '' ) {
                                errors                += ' en ';
                            }
                            errors                += ix;
                        }
                    }
                }
            }
        }
    }
    return errors;
}



///////////////////////////////////////////////////////////////
//                                                           //
// Add=string of any given Date Of Birth for Post-request    //
//                                                           //
///////////////////////////////////////////////////////////////
function addDOBs(input_suffix) {
    //
    var addPOST            = '';
    //
    var nbElem            = document.getElementById( 'sb_aantal_kinderen' + input_suffix );
    if( nbElem == null ) {
        return addPOST;
    }
    //    Get numbet of children
    var nb_children        = parseInt(nbElem.value,10);
    addPOST                += '&sb_aantal_kinderen=' + nb_children;
    if( nb_children == 0 ) {
        //    No children ...
        return addPOST;
    }
    //    Get DOB-date components
    for( ix=1; ix<11; ix++ ) {
        var dobElem            = document.getElementById( 'sb_geboorte_datum_' + ix + input_suffix );
        if( dobElem == null ) {
            break;
        }
        addPOST                += '&sb_geboorte_datum_' + ix + '=' + dobElem.value;
    }
    return addPOST;
}



///////////////////////////////////////////////////////////////
//                                                           //
// Calculate (Vertrek)   Aankomst + Overnachtigingen         //
//                                                           //
///////////////////////////////////////////////////////////////
function calcTerugDatum( input_suffix ) {
    //
    //    Remember INPUT (ID) suffix globaly
    global_input_suffix    = input_suffix;
    //
    var weekdagen    = strWeekDays;
    //
    var objElem        = document.getElementById( 'sb_aantal_overnachtingen' + input_suffix );
    if( objElem == null ) {
        return;
    }
    var nbDays        = parseInt(objElem.value,10);
    //
    var objElem        = document.getElementById( 'sb_aankomst' + input_suffix );
    if( objElem == null ) {
        return;
    }
    var str            = objElem.value;
    var parts        = str.split(' ');
    var elems        = parts[1].split('-');
    var dd            = parseInt(elems[0],10);
    var mm            = parseInt(elems[1],10);
    var yy            = parseInt(elems[2],10);
    //
    var newDate        = new Date;
    var rem            = yy % 4;
    var feb            = 28;
    if( rem == 0 ) {
        feb                = 29;
    }
    dd                += nbDays;
    switch( mm ) {
        // 31 days
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            if( dd > 31 ) {
                dd        -= 31;
                mm++;
            }
            break;
        // 30 days
        case 4:
        case 6:
        case 9:
        case 11:
            if( dd > 30 ) {
                dd        -= 30;
                mm++;
            }
            break;
        // february
        default:
            if( dd > feb ) {
                dd        -= feb;
                mm++;
            }
            break;
    }
    if( mm > 12 ) {
        mm        = 1;
        yy++;
    }
    //
    var when        = new Date(yy, (mm-1), dd);
    var day            = when.getDay();
    var weekdag        = weekdagen[day];
    //
    (dd < 10) ? dd = '0' + dd : dd = dd;
    (mm < 10) ? mm = '0' + mm : mm = mm;
    //
    var formDate    = weekdag + ' ' + dd + '-' + mm + '-' + yy;
    //
    var objElem        = document.getElementById( 'sb_vertrekDIV' + input_suffix );
    if( objElem == null ) {
        return;
    }
    objElem.innerHTML    = formDate;
}



///////////////////////////////////////////////////////////////
//                                                           //
// Kalender-28 (DateOfBirth Children)                        //
//                                                           //
///////////////////////////////////////////////////////////////
var now                = new Date();
var tomorrow        = new Date(now.valueOf() + 1000 * 60 * 60 * 24);
var cal28            = new CalendarPopup("caldiv");
cal28.setCssPrefix("ADZOEKEN");
cal28.offsetX        = 5;
cal28.offsetY        = 5;
cal28.addDisabledDates(formatDate(tomorrow,"yyyy-MM-dd"),null);
cal28.isShowYearNavigation = true;
cal28.setTodayText(strToday);
cal28.setMonthAbbreviations("1","2","3","4","5","6","7","8","9","10","11","12");
cal28.monthNames    = strMonthNames;
cal28.dayHeaders    = strDayHeaders;
cal28.setReturnFunction("setMultipleValues28");

var nbBirthDay        = 0;

function setMultipleValues28(y,m,d) {
    var dd, mm;
    (d < 10) ? dd = '0' + d : dd = d;
    (m < 10) ? mm = '0' + m : mm = m;
    //var selDate        = dd + '-' + mm + '-' + y;

    var objElem_d        = document.getElementById( 'sb_geboorte_datum_d_' + nbBirthDay + global_input_suffix );
    var objElem_m        = document.getElementById( 'sb_geboorte_datum_m_' + nbBirthDay + global_input_suffix );
    var objElem_y        = document.getElementById( 'sb_geboorte_datum_y_' + nbBirthDay + global_input_suffix );
    
    if( objElem_d != null && objElem_m != null && objElem_y != null ) {
        objElem_d.value    = dd;
        objElem_m.value    = mm;
        objElem_y.value    = y;
    }
}

function geboorteDatum( nb, input_suffix ) {
    //
    //    Remember INPUT (ID) suffix globaly
    global_input_suffix    = input_suffix;
    //
    nbBirthDay = nb;    // no var - global defined!
    
    var objElem_d = document.getElementById( 'sb_geboorte_datum_d_' + nb + input_suffix );
    var objElem_m = document.getElementById( 'sb_geboorte_datum_m_' + nb + input_suffix ); 
    var objElem_y = document.getElementById( 'sb_geboorte_datum_y_' + nb + input_suffix ); 
    
    if(objElem_d != null && objElem_m != null && objElem_y != null) {
        //var elems            = objElem.value.split('-');
        //var dd                = parseInt(elems[0],10);
        //var mm                = parseInt(elems[1],10) - 1;
        //var yy                = parseInt(elems[2],10);
        cal28.currentDate    = new Date(objElem_y.value, objElem_m.value-1, objElem_d.value);
    } else {
        cal28.currentDate    = new Date(2000, 1, 1);
    }
    //
    var objElem        = document.getElementById( 'sb_aankomst' + input_suffix );
    if( objElem == null ) {
        return;
    }
    var parts            = objElem.value.split(' ');
    var elems            = parts[1].split('-');
    var dd                = parseInt(elems[0],10);
    var mm                = parseInt(elems[1],10) - 1;
    var yy                = parseInt(elems[2],10) - 18;
    var arrivalDate        = new Date(yy, mm, dd);
    //
    var min18year        = new Date(arrivalDate.valueOf());
    cal28.addDisabledDates(null,formatDate(min18year,"yyyy-MM-dd"));
    //
    if( input_suffix != '' ) {
        cal28.offsetY        = -140;
    }
    cal28.showCalendar('sb_kalender_28_' + nb + input_suffix);
    return false;
}



///////////////////////////////////////////////////////////////
//                                                           //
// Move Filter-area (data)                                   //
//                                                           //
///////////////////////////////////////////////////////////////
function moveFilterArea() {
    var x;
    jQuery(document).ready(function(){
        x                    = 0;
    });
    //
    var frmElem                = document.getElementById( 'contentfilterarea' );
    if( frmElem == null ) {
        //alert('DIV: << contentfilterarea >> not found ...');
        return;
    }
    var toElem                = document.getElementById( 'leftfilterarea' );
    if( toElem == null ) {
        //alert('DIV: << leftfilterarea >> not found ...');
        return;
    }
    
    if( frmElem.innerHTML == '' ) {
        return;
    }
    
    toElem.innerHTML        = frmElem.innerHTML;
    frmElem.innerHTML        = '';            // make it a real MOVE
    //
    var menuElem            = document.getElementById( 'leftmenu_tr_filter' );
    if( menuElem == null ) {
        //alert('DIV: << leftmenu_tr_filter >> not found ...');
        return;
    }
    jQuery("#leftmenu_tr_filter").show("slow");
}



///////////////////////////////////////////////////////////////
//                                                           //
//    Check an e-mail address                                  //
//                                                           //
///////////////////////////////////////////////////////////////
function isValidEmail ( strEmail ) {
    validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
//    search email text for regular exp matches
    if (strEmail.search(validRegExp) == -1) {
        return false;
    }
    return true;
}



///////////////////////////////////////////////////////////////
//                                                           //
//    Check a number range - 1 (DoB)                           //
//                                                           //
///////////////////////////////////////////////////////////////
function IsNumbers1(sText) {
    var ValidChars    = "-/0123456789";
    var IsNumber    = true;
    var Char;

    for( i=0; i<sText.length && IsNumber == true; i++ ) {
        Char        = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber    = false;
        }
    }
    return IsNumber;
}



///////////////////////////////////////////////////////////////
//                                                           //
//    Check a number range - 2 (Phone)                         //
//                                                           //
///////////////////////////////////////////////////////////////
function IsNumbers2(sText) {
    var ValidChars    = "-.()+ 0123456789";
    var IsNumber    = true;
    var Char;

    for( i=0; i<sText.length && IsNumber == true; i++ ) {
        Char        = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber    = false;
        }
    }
    return IsNumber;
}



///////////////////////////////////////////////////////////////
//                                                           //
// Include the language (.js) file                           //
//                                                           //
///////////////////////////////////////////////////////////////
function include( filename ) {
    var head        = document.getElementsByTagName('head')[0];

    var script        = document.createElement('script');
    script.src        = '' + filename;
    script.type        = 'text/javascript';

    head.appendChild( script );
}


function loadPage(index)
{   
    if(index > page_count || index < 1)
    {
        return;
    }
    
    var newPageAnchor = null;
       
    if(index == 0 || index > page_count)
    {
        return;
    }
    //
    for(i=1; i<page_count+1; i++)
    {
        newPageAnchor = document.getElementById('pg'+i.toString());
        
        if(newPageAnchor != null)
        {
            newPageAnchor.className = 'pg-normal';
        }
    }
    
    newPageAnchor = document.getElementById('pg'+index);
    newPageAnchor.className = 'pg-selected';
    //  
    var nbRsltElem        = document.getElementById( 'aantal_resultaten' );
    if( nbRsltElem == null ) {
        return;
    }
    //
    var busyElem        = document.getElementById( 'sortfilterbusy' );
    if( busyElem == null ) {
        return;
    }
    //
    var POSTthis        = '&location=content&page_navigation=1&page_number='+index.toString()+getFilterData();
    //
    var url                = '/search_and_book/search_and_book.php';
    //
    jQuery("#aantal_resultaten").hide("slow", function() {;
        jQuery("#sortfilterbusy").show("slow", function() {;
            jQuery.ajax({
                type:        "POST",
                url:        url,
                data:        POSTthis,
                error:    function(XMLHttpRequest, textStatus, errorThrown){
                    alert('Error: Status is ' + textStatus + ' (' + XMLHttpRequest.readyState + '-' + XMLHttpRequest.status + ')' );
                },
                success:    SortFilterData
            });
        });
    });         
}

function getFilterData()
{
    var POSTthis        = '';
    //
    var argFound        = false;
    var argChoice        = false;
    var argElem            = document.getElementById( 'sort_arg' );
    if( argElem != null ) {
        argFound            = true;
        var argValue        = argElem.options[argElem.selectedIndex].value;
        POSTthis            += '&sort_arg=' + argValue;
    }
    //
    if( argFound && argChoice ) {
        if( argValue == 'populariteit' ) {
            var seqValue    = 'desc';
        } else {
            var seqValue    = 'asc';
        }
        POSTthis            += '&sort_seq=' + seqValue;
    } else {
        var seqElem            = document.getElementById( 'sort_seq' );
        if( seqElem != null ) {
            var seqValue        = seqElem.className;
            POSTthis            += '&sort_seq=' + seqValue;
        }
    }
    //
    var objElem            = document.getElementById( 'filter_naam' );
    if( objElem != null ) {
        POSTthis            += '&filter_naam=' + objElem.value;
    }
    //
    var objElem            = document.getElementById( 'filter_type' );
    if( objElem != null ) {
        POSTthis            += '&filter_type=' + objElem.value;
    }
    //
    var objElem            = document.getElementById( 'filter_entree' );
    if( objElem != null ) {
        POSTthis            += '&filter_entree=' + objElem.value;
    }
    //
    POSTthis            += getFilterOption( 'filter_restaurant' );
    POSTthis            += getFilterOption( 'filter_bar' );
    POSTthis            += getFilterOption( 'filter_zwembad' );
    POSTthis            += getFilterOption( 'filter_sauna' );
    POSTthis            += getFilterOption( 'filter_fitness' );
    POSTthis            += getFilterOption( 'filter_metro' );
    POSTthis            += getFilterOption( 'filter_pendel' );
    POSTthis            += getFilterOption( 'filter_parkeren' );
    POSTthis            += getFilterOption( 'filter_wifi' );
    //
    POSTthis            += getFilterOption( 'filter_ontbijt' );
    //
    var objElem            = document.getElementById( 'filter_class' );
    if( objElem != null ) {
        POSTthis            += '&filter_class=' + objElem.value;
    }
    //
    POSTthis            += getFilterOption( 'filter_giro' );
    POSTthis            += getFilterOption( 'filter_ideal' );
    POSTthis            += getFilterOption( 'filter_cc' );
    POSTthis            += getFilterOption( 'filter_cash' );
    //
    POSTthis            += getFilterOption( 'filter_car' );
    POSTthis            += getFilterOption( 'filter_bus' );
    POSTthis            += getFilterOption( 'filter_train' );
    POSTthis            += getFilterOption( 'filter_plane' );
    //
    return POSTthis;
}

function viewAccoOnMap(accoId) {
    initialize();
    changeResultsWeergave('kaart');
    google.maps.event.trigger(markers[accoId], "click");
    window.location.hash = 'map_canvas_anchor';
}   

function changeResultsWeergave(weergave) {
    if(weergave == 'lijst') {
        document.getElementById('lijst').style.display = '';
        document.getElementById('kaart').style.display = 'none';
        
        document.getElementById('tab_lijst').style.backgroundImage = 'url(/search_and_book/images/tab_right.png)';
        document.getElementById('link_lijst').style.backgroundImage = 'url(/search_and_book/images/tab_left.png)';
        
        document.getElementById('tab_kaart').style.backgroundImage = 'url(/search_and_book/images/tab_right_hover.png)';
        document.getElementById('link_kaart').style.backgroundImage = 'url(/search_and_book/images/tab_left_hover.png)';
        
        selectedTab = 'lijst';
    } else {
        document.getElementById('lijst').style.display = 'none';
        document.getElementById('kaart').style.display = '';
        
        document.getElementById('tab_lijst').style.backgroundImage = 'url(/search_and_book/images/tab_right_hover.png)';
        document.getElementById('link_lijst').style.backgroundImage = 'url(/search_and_book/images/tab_left_hover.png)';
        
        document.getElementById('tab_kaart').style.backgroundImage = 'url(/search_and_book/images/tab_right.png)';
        document.getElementById('link_kaart').style.backgroundImage = 'url(/search_and_book/images/tab_left.png)';
        
        selectedTab = 'kaart';
    }
} 


function calendarDOBCheckYear(defaultYear, input_suffix) {
    
    var objElem        = document.getElementById( 'sb_aankomst' + '' );
    if( objElem == null ) {
        return;
    }
    
    var parts        = objElem.value.split(' ');
    var elems        = parts[1].split('-');
    var dd            = parseInt(elems[0],10);
    var mm            = parseInt(elems[1],10) - 1;
    var yy            = parseInt(elems[2],10);
    
    var res = checkDOBs(yy,(mm+1),dd, '');
    
    var hasEmptyYear = false;
    
    for( ix=1; ix<11; ix++ ) {
        var dobElem_y = document.getElementById( 'sb_geboorte_datum_y_' + ix + '' );
        
        if(dobElem_y != null) {
            if(isNaN(dobElem_y.value) || dobElem_y.value.length != 4) {
                hasEmptyYear = true;
            }
        }
    }
    
    
    
    if(res == '' && !checkFutureBirthDates(input_suffix) && !hasEmptyYear) {
        
    } else {
        for( ix=1; ix<11; ix++ ) {
            var dobElem_y = document.getElementById( 'sb_geboorte_datum_y_' + ix + '' );
            
            if(dobElem_y != null) {
                dobElem_y.value = defaultYear;
            }
        }
    }
}

function checkFutureBirthDates(input_suffix) {

    var today = new Date();
    var hasFutureBirthdates = false;
    
    for( ix=1; ix<11; ix++ ) {
        var dobElem_d = document.getElementById( 'sb_geboorte_datum_d_' + ix + input_suffix );
        var dobElem_m = document.getElementById( 'sb_geboorte_datum_m_' + ix + input_suffix );
        var dobElem_y = document.getElementById( 'sb_geboorte_datum_y_' + ix + input_suffix );
            
        if(dobElem_d == null || dobElem_m == null || dobElem_y == null) {
            break;
        }
            
        var dobDD            = parseInt(dobElem_d.value,10);
        var dobMM            = parseInt(dobElem_m.value,10);
        var dobYY            = parseInt(dobElem_y.value,10);
        
        var dob = new Date();
        dob.setFullYear(dobYY,dobMM-1,dobDD);
        
        if(dob > today) {
            hasFutureBirthdates = true;
        }
    }
    
    return hasFutureBirthdates;
}

// deze functie genereert een deeplink bij iedere zoekopdracht (de form post url wordt in feite ge-updated met toegevoegde
// GET-parameters) zodat zoekopdrachten makkelijk gebookmarked kunnen worden
function generateDeeplink() {
    var cValue             = '';

    var objElem            = document.getElementById( 'sb_aankomst' + input_suffix );
    var dt                 = objElem.value.split(' ');
    dt                     = dt[1].split('-');
    dt                     = dt.reverse();
    cValue                += '?sb_arrival_date=' + dt.join('-');
    
    var objElem = document.getElementById( 'sb_referer' + input_suffix );
    if(objElem != null) {
        cValue += '&sb_referer=' + objElem.value;
    }
   
    var objElem            = document.getElementById( 'sb_aantal_overnachtingen' + input_suffix );
    cValue                += '&sb_los=' + objElem.value;

    var objElem            = document.getElementById( 'sb_aantal_volwassenen' + input_suffix );
    cValue                += '&sb_adults=' + objElem.value;
    
    var nb_adults = parseInt(objElem.value,10); 

    var objElem            = document.getElementById( 'sb_aantal_kinderen' + input_suffix );
    cValue                += '&sb_children=' + objElem.value;

    var nb_children        = parseInt(objElem.value,10);
    if( nb_children != 0 ) {
        for( ix=1; ix<=nb_children; ix++ ) {
            var objElem_d = document.getElementById('sb_geboorte_datum_d_' + ix + input_suffix);
            var objElem_m = document.getElementById('sb_geboorte_datum_m_' + ix + input_suffix);            
            var objElem_y = document.getElementById('sb_geboorte_datum_y_' + ix + input_suffix);
            
            cValue += '&sb_child' + ix + '=' + objElem_y.value.toString() + '-' + objElem_m.value.toString() + '-' + objElem_d.value;
        }
    }

    /*var objElem            = document.getElementById( 'sb_aantal_gewenste_units' + input_suffix );
    if( objElem == null ) {
        cValue                += '&sb_aantal_gewenste_units=' + '01';
    } else {
        cValue                += '&sb_aantal_gewenste_units=' + objElem.value;
    }*/

    var objElem            = document.getElementById( 'sb_transport_auto' + input_suffix );
    if( objElem == null ) {
        cValue                += '&sb_transport_car=' + '0';
    } else {
        if( objElem.checked ) {
            cValue                += '&sb_transport_car=' + '1';
        } else {
            cValue                += '&sb_transport_car=' + '0';
        }
    }

    var objElem            = document.getElementById( 'sb_transport_bus' + input_suffix );
    if( objElem == null ) {
        cValue                += '&sb_transport_bus=' + '0';
    } else {
        if( objElem.checked ) {
            cValue                += '&sb_transport_bus=' + '1';
        } else {
            cValue                += '&sb_transport_bus=' + '0';
        }
    }

    var objElem            = document.getElementById( 'sb_transport_trein' + input_suffix );
    if( objElem == null ) {
        cValue                += '&sb_transport_train=' + '0';
    } else {
        if( objElem.checked ) {
            cValue                += '&sb_transport_train=' + '1';
        } else {
            cValue                += '&sb_transport_train=' + '0';
        }
    }

    /*var objElem            = document.getElementById( 'sb_transport_vliegtuig' + input_suffix );
    if( objElem == null ) {
        cValue                += '&sb_transport_vliegtuig=' + '0';
    } else {
        if( objElem.checked ) {
            cValue                += '&sb_transport_vliegtuig=' + '1';
        } else {
            cValue                += '&sb_transport_vliegtuig=' + '0';
        }
    }*/
    
    return cValue;
}


