// for developing
var bookingProcedure = 'package'; // advanced / package

// global var
var packageMode = false;
var partyChanged = false;

// save/toggle the passenger form
function saveAll()
{
	earlyPrices = [0, 0, 0, 0];
    earlyUpdateReceipt();
    
    //alert('saveAll():'+($('#savePassengerFormLink').hasClass('on') ? 'on' : 'off' ) );
    
	//if ($('#savePassengerFormLink').html() == 'Sla reisgezelschap op &gt;') {
	if ($('#savePassengerFormLink').hasClass('on')) {
		if (saveDobs() == true) {
		    //  alert('savedobs(): true');
            passengerForm.hide();
  
            partyChanged = false;

            // save the choice
            rememberChoiceAdvanced();
            // reload the cabins
			date_change();

		} else {
			return false;
		}
	} else {
	    
        passengerForm.show();
	}
	return true;
}

function checkHeights(){
    thHeights = new Array();
    $('#cabinselection .sp6_left .table2 tr').each(function(a) {
            thHeights.push($(this));
             if($(this).children('th').length > 0){
                $(this).height($(this).height()-minHeight);
             }
    });
    $('#cabinselection .sp6_right .table2 tr').each(function(i) {
        // pak de hoogste en zet die op de ander.
        if($(this).children('th').length > 0){
            corHeight = minHeight;
         }else {
             corHeight = 0;
         }
            if (thHeights[i].height() > $(this).height()-corHeight) {
                $(this).height(thHeights[i].height()-corHeight);
            } else {
                thHeights[i].height($(this).height()-corHeight);
            }
    });
    var cabins = $("#num_cabins").val();
    if ($("#num_cabins").val() > 1) {
        $('#changecabinview').hide();
    } else {
        $('#changecabinview').show();
    }
}


function saveDobs() {
    var error = 0;
    for (var numcabin = 0; numcabin < $("#num_cabins").val(); numcabin++) {
    	for (var kids = 0; kids < $("#childs_cabin"+numcabin).val(); kids++) {
        	if (saveDob($('#dob_day_cabin'+numcabin+'_child'+kids).attr('id')) == false) error++;
    	}
    }
    if (error != 0) return false;
    return true;
}

function saveCabins()
{
	/* Save selected cabin amount */
	var cabins = $("#num_cabins").val();

	$.ajax({
		type: "POST",
		url: "/ajax/bookingengine/cabin/save-cabin-number",
		data: {numCabins: cabins},
		success: function(msg) {
			partyChanged = true;
			$("#travel_companion").html(msg);
		}
	});
}

function saveAdult(element)
{
	/* Save selected adult amount */
	var adultsId = $(element).attr('id');
	var adults = $(element).val();

	cabin = adultsId.match('cabin[0-9]+');
	cabinId = cabin[0].match('[0-9]+');
	cabinId = cabinId[0];

	$.ajax({
		type: "POST",
		url: "/ajax/bookingengine/cabin/save-adult",
		data: {'cabinId': cabinId, numAdults: adults},
		success: function(msg){
			partyChanged = true;
			$("#travel_companion").html(msg);
		}
	});
}

function saveChild(element)
{
	/* Save selected child amount */
	var childId = $(element).attr('id');
	var childs = $(element).val();

	cabin = childId.match('cabin[0-9]+');
	cabinId = cabin[0].match('[0-9]+');
	cabinId = cabinId[0];

	$.ajax({
		type: "POST",
		url: "/ajax/bookingengine/cabin/save-child",
		data: {cabinId: cabinId, numChilds: childs},
		success: function(msg){
			partyChanged = true;
			$("#travel_companion").html(msg);
		}
	});
}

function saveDob(element)
{
	/* Save date of birth of child */
	// var id = $(element).attr('id');
	var id = element;
	cabin = id.match('cabin[0-9]+');
	cabinId = cabin[0].match('[0-9]+');
	cabinId = cabinId[0];
	child = id.match('child[0-9]+');
	childId = child[0].match('[0-9]+');
	childId = childId[0];

	day = $('#dob_day_'+cabin+'_'+child).val();
	month = $('#dob_month_'+cabin+'_'+child).val();
	year = $('#dob_year_'+cabin+'_'+child).val();

	timestamp = toTimestamp(year, month, day);
	// M2301 BER20100521 removed alert because it has no use.
	// if (checkDob(id, "now") == 0) {
		// alert("Een persoon ouder dan 18 jaar wordt gezien als een
		// volwassene.");
		// return false;
	// } else
	if (checkDob(id, "now") == -1) {
		alert("Kind "+(parseInt(childId,10)+parseInt(1,10))+" in hut "+(parseInt(cabinId,10)+parseInt(1,10))+" is nog niet geboren!");
		return false;
	} else {
		$.ajax({
			type: "POST",
			url: "/ajax/bookingengine/cabin/save-dob",
			data: {cabinId: cabinId, childId: childId, dob: timestamp},
			success: function(msg){
				$("#travel_companion").html(msg);
                passengerForm.hide();
			}
		});
        return true;
	}
}

function checkDob(dobid, when) {
	var dobcabin = dobid.match('cabin[0-9]+');
	var dobcabinId = dobcabin[0].match('[0-9]+');
	var dobchild = dobid.match('child[0-9]+');
	var dobchildId = dobchild[0].match('[0-9]+');

	day = $('#dob_day_'+dobcabin+'_'+dobchild).val();
	month = $('#dob_month_'+dobcabin+'_'+dobchild).val();
	year = $('#dob_year_'+dobcabin+'_'+dobchild).val();
	datetocheck = (when == "now") ? Date() : Date.UTC(when.split("-")[0], when.split("-")[1]-1, when.split("-")[2]);

	if (parseInt(qryHowOld(datetocheck, Date.UTC(year,month-1,day)),10) >= 18) {
		return 0;
	} else if (parseInt(qryHowOld(datetocheck, Date.UTC(year,month-1,day)),10) <= -1) {
		return -1;
	} else {
		return 1;
	}
	return false;
}

function toTimestamp(year,month,day){
    var datum = new Date(Date.UTC(year,month-1,day));
    return datum.getTime()/1000;
}

function changeElementBg() {
    checkedcabin=null;
    $("#cabinselection input:radio").each( function(index, element) { 
                $(element).parent().parent().removeClass('on');
            });
    var checkedRadio = $("#cabinselection input:radio:checked");
    $(checkedRadio).parent().parent().addClass('on');
    checkedcabin=$(checkedRadio).attr('id');
    
    // set the earlyprice
    var idEarlyPrice = "#earlyprice_"+checkedcabin;
    var price =  $(idEarlyPrice).val();
	earlyPrices = [price];
    earlyUpdateReceipt();
}

// create a dropdown and fill it with available cabinnumbers
// also change the class of the td
function get_cabins(id, cabinNr, inputId)
{
    // remove all pulldowns where the radio is not checked
    /*
    var allRadiosList = $("#roomSelection").find(":radio");
    var l = allRadiosList.length;
    for( var i = 0; i < l; i++){
        var element = allRadiosList[i];// element is taken
        if( element.checked == false ){
            // change the color back
            $("#"+ element.id).parent().removeClass('on');
            // clear the span where the pulldown is
            $("#"+ element.id).parent()
        }
    }
    */
    
    
    checkedcabin=null;
    $("#roomSelection input:radio").each( function(index, element) { 
            if ($(element).is(':checked') == false)
            {
                $(element).parent().parent().removeClass('on');
                $(element).parent().children("span").html("");
            }
        });
    
    var checkedRadio = $("#roomSelection input:radio:checked");
    $(checkedRadio).parent().parent().addClass('on');
    
    if ($("#num_cabins").val() > 1)
    {
        if ($(checkedRadio).hasClass('package'))
        {
            packageMode = true;
            $("#roomSelection input:radio.cruise-only").each( function(index, element) { 
                $(element).attr('disabled',true);
            });
        }else{
            packageMode = false;
            $("#roomSelection input:radio.package").each( function(index, element) { 
                $(element).attr('disabled',true);
            });
        }
    }
    
    // show the loading page
    var pullDownId = inputId+'_pulldown_container';
    $("span#"+pullDownId).html('<img src="/images/loader_wblue.gif" alt="Ophalen..."></img>');
    getDekplan($($('#cabin_cat .deckcolor')[id]).attr('id').split("cabin_id_").join(""));
    // set the earlyprice for this cabin
    var idEarlyPrice = "#earlyprice_"+inputId;
    earlyPrices[cabinNr-1] = $(idEarlyPrice).val();
    earlyUpdateReceipt();

	// render the pulldown
	$.ajax({
	   type: "POST",
	   url: "/ajax/bookingengine/cabin/generateListmenuCabins",
	   data: "id="+id+"&cabinnr="+cabinNr,
	   success: function(msg){
			$("span#"+pullDownId).html(msg);
			checkHeights();
		    // select the previous chosen cabinnr, if applicable
		    if (advancedChoiceRoomnumber[cabinNr] != null)
		    {
		    	$("span#"+pullDownId+" option[value='" + advancedChoiceRoomnumber[cabinNr] + "']").attr("selected", true);
		    	advancedChoiceRoomnumber[cabinNr] = null;
		    }
		    }}
	   );
   	$('#pulldowns').val($('#pulldowns').val() + "a_" + id + "_"+cabinNr + "_pulldown,");

    // set the css class of the td to on
//    var idCheckbox = "#checkbox_"+id+"_"+cabinNr;
//    checkedbox = idCheckbox;
//    $(idCheckbox).parent().addClass('on');

    checkHeights();
}

// use this to show the calculated total in the receipt
function earlyUpdateReceipt()
{
	// earlyPrices is a global var that contains the price for the selected
	// cabin.
	// this function is defined in the receipt/index.phtml
	earlyupdate_receipt(earlyPrices);
}

// the customer clicked the save button
// this is only called from the advanced view
function next_step(numCabins)
{
    $.prettyPhoto.openText('image','Loading','We gaan nu uw boeking voorbereiden zodat u deze eenvoudig kunt voltooien.<br /><br /><div style="width:350px; text-align:center;"><img src="/images/loader.gif" alt="Bezig met laden" /></div>',350,100);

    // check for double roomnumbers
    if (validate_cabins(numCabins))
    {
        err="";
        for (numcabin = 0; numcabin < $("#num_cabins").val(); numcabin++) {
        	for (kids = 0; kids < $("#childs_cabin"+numcabin).val(); kids++) {
        		if (checkDob($('#dob_day_cabin'+numcabin+'_child'+kids).attr('id'), $("#departuredate").val()) == -1) {
        			err+="- Kind "+(parseInt(kids,10)+parseInt(1,10))+" in hut "+(parseInt(numcabin,10)+parseInt(1,10))+" is op de vertrekdatum nog niet geboren!\n";
        		}
        	}
        }
        if (err != "") {
            $.prettyPhoto.close();
            alert("De volgende fouten zijn geconstateerd:\n"+err);
         	return false;
        } else {
            
            $.prettyPhoto.openText('image','Loading','We gaan nu uw boeking voorbereiden zodat u deze eenvoudig kunt voltooien.<br /><br /><div style="width:350px; text-align:center;"><img src="/images/loader.gif" alt="Bezig met laden" /></div>',350,100);

            // clear the cabins from the session
            clear_cabins();
            // set the selected cabins to the session
            cabin_chosen();
            // place a sell request on the chosen cabins
            $.ajax({
                type: "POST",
                url: "/ajax/bookingengine/cabin/sellrequest",
                data: {package: false},
                success: function(msg){
                	if (msg == "success")
                	{
                		if (bookingProcedure == 'package' && packageMode == true)
                        {
                            $.ajax({
                                type: "POST",
                                dataType: 'json',
                                url: "/ajax/bookingengine/package/sellrequest",
                                success: function(msg){
	        	            		// go to the next page
                                    if (msg.success == true) {
                                        gotoNextPage(bookingProcedure);
                                    }else{
                                        alert('Pakket kon niet geboekt worden.' + ((msg.error)? '\nError: ' + msg.error : ''));
                                        window.location.reload();
                                        $.prettyPhoto.close();
                                    }
                                }
                           });
                        }else{
                            gotoNextPage();
                        }
                	}
                	else
                	{
                    	alert("Uw gekozen hut is niet meer beschikbaar. Probeer het aub opnieuw. Onze excuses voor het ongemak.");
                    	window.location.reload();
                	}
                }
              });
        }
    }
    else
    {
        $.prettyPhoto.close();
    }
}

// the customer clicked the save button
// this is only called from the simple view
function next_stepsimple(loader) {
    
    stillLoading = true;
    
    // set the selected cabins to the session
    // retrieve all selected options from the form.
    var radio = $('input[type=radio]:checked');
    if (radio.length < 1) {
        alert("U heeft nog geen hut gekozen.");
        stillLoading = false;
        return;
    }

    
    var id_radio = radio[0].id;
    var selected_range = id_radio.split("_")[1];
    var cabin_type = id_radio.split("_")[2];
    packageMode = (id_radio.split("_")[3] == 'package') ? true : false;
    var range_id_departure_date = rangeids[selected_range];
    
    // clear the cabins from the session
    clear_cabins();
    
    err="";
    for (numcabin = 0; numcabin < $("#num_cabins").val(); numcabin++) {
    	for (kids = 0; kids < $("#childs_cabin"+numcabin).val(); kids++) {

			// M2301 BER20100525 removed alert because it has no use.
    		/*
			 * if
			 * (checkDob($('#dob_day_cabin'+numcabin+'_child'+kids).attr('id'),
			 * range_id_departure_date) == 0) { err+="- Kind
			 * "+(parseInt(kids,10)+parseInt(1,10))+" in hut
			 * "+(parseInt(numcabin,10)+parseInt(1,10))+" is op de vertrekdatum
			 * ouder dan 18\n"; }
			 */
    		if (checkDob($('#dob_day_cabin'+numcabin+'_child'+kids).attr('id'), range_id_departure_date) == -1) {
    			err+="- Kind "+(parseInt(kids,10)+parseInt(1,10))+" in hut "+(parseInt(numcabin,10)+parseInt(1,10))+" is op de vertrekdatum nog niet geboren!\n";
    		}
    	}
    }
    if (err != "") {
        alert("De volgende fouten zijn geconstateerd:\n"+err);
        stillLoading = false;
     	return false;
    } else {
    	for(i=0;i<radio.length;i++) {
        	var id_radio = radio[i].id;
            var selected_range = id_radio.split("_")[1];
            var cabin_type = id_radio.split("_")[2];
            /**
            booking procedure 
            */
            //var bookingProcedure = 'advanced'; // advanced / package
            
            $.prettyPhoto.openText('image','Loading','We gaan nu uw boeking voorbereiden zodat u deze eenvoudig kunt voltooien.<br /><br /><div style="width:350px; text-align:center;"><img src="/images/loader.gif" alt="Bezig met laden" /></div>',350,100);

            $.ajax({
            	type: "POST",
                url: "/ajax/bookingengine/cabin/savecabinsimple",
                data: "selected_range=" + selected_range + "&cabin_type=" + cabin_type + "&bookingProcedure=" + bookingProcedure+ "&package=" + packageMode,
                success: function(msg){
                	if (msg == "success")
                	{
                    	// place a sell request on the chosen cabins
                        $.ajax({
                            type: "POST",
                            url: "/ajax/bookingengine/cabin/sellrequest",
                            success: function(msg){
                                
                                if (msg == "success")
	                        	{
                                    if (bookingProcedure == 'package' && packageMode == true)
                                    {
                                        $.ajax({
                                            type: "POST",
                                            dataType: 'json',
                                            url: "/ajax/bookingengine/package/sellrequest",
                                            success: function(msg){
            	        	            		// go to the next page
                                                if (msg.success == true) {
                                                    gotoNextPage(bookingProcedure);
                                                }else{
                                                    clear_booking();
                                                    alert('Pakket kon niet geboekt worden.' + ((msg.error)? '\nError: ' + msg.error : ''));
                                                    window.location.reload();
                                                    $.prettyPhoto.close();
                                                }
                                            }
                                       });
                                    }else{
                                        gotoNextPage();
                                    }
	                        	}
	                        	else
	                        	{
                   	                clear_booking();
	                            	alert("Uw gekozen hut is niet meer beschikbaar. Probeer het aub opnieuw. Onze excuses voor het ongemak.");
	                            	window.location.reload();
	                        	}
                            }
                        });
                	}
                	else
                	{
                	   clear_booking();
                        stillLoading = false;
                		$.prettyPhoto.close();
                    	alert("De gekozen hut is helaas niet beschikbaar.");
                	}
                }
            });
        }
	}
}

// the customer clicked the fastbook on the cruise page
// this is only called from the fastbooker
function next_stepfast(selected_range, cabin_type) {
    // clear the cabins from the session
    clear_cabins();
    $.prettyPhoto.openText('image','Loading','We gaan nu uw boeking voorbereiden zodat u deze eenvoudig kunt voltooien.<br /><br /><div style="width:350px; text-align:center;"><img src="/images/loader.gif" alt="Bezig met laden" /></div>',350,50);

    $.ajax({
    	type: "POST",
        url: "/ajax/bookingengine/cabin/savecabinsimple",
        data: "selected_range=" + selected_range + "&cabin_type=" + cabin_type,
        success: function(msg){
        	if (msg == "success")
        	{
            	// place a sell request on the chosen cabins
                $.ajax({
                    type: "POST",
                    url: "/ajax/bookingengine/cabin/sellrequest",
                    success: function(msg){
                        // go to the next page
                		gotoNextPage();
                    }
                });
        	} else
        	{
        		$.prettyPhoto.close();
            	alert("De gekozen hut is helaas niet beschikbaar.");
        	}
        }
    });
}


function clear_cabins()
{
    $.ajax({
       async: false,
	   type: "POST",
	   url: "/ajax/bookingengine/cabin/clearCabins",
	   success: function(msg){
	   }
	 });
}

function clear_booking()
{
    $.ajax({
       async: false,
	   type: "POST",
	   url: "/ajax/bookingengine/cabin/clear-booking",
	   success: function(msg){
	   }
	 });
}

function next_date()
{
    $.ajax({
       type: "POST",
       url: "/ajax/bookingengine/cabin/nextdeparturedateview",
       success: function(msg){
        $("#cabinselection").html(msg);
        checkHeights();
    }
     });
}
function previous_date()
{
    $.ajax({
       type: "POST",
       url: "/ajax/bookingengine/cabin/previousdeparturedateview",
       success: function(msg){
        $("#cabinselection").html(msg);
        checkHeights();
    }
     });
}
function toggle_viewtype()
{
	$.prettyPhoto.openText('image','Loading','Bezig met het ophalen van de prijzen.<br /><br /><div style="width:248px; text-align:center;"><img src="/images/loader.gif" alt="Bezig met laden" /></div>',270,90);
    $.ajax({
       type: "POST",
       url: "/ajax/bookingengine/cabin/toggleviewtype",
       success: function(msg){
            $("#cabinselection").html(msg);
            $.prettyPhoto.close();
            checkHeights();
    }
     });
}
function date_change()
{
	var departure_date = $("#departuredate").val();

	$.prettyPhoto.openText('image','Loading','Bezig met het ophalen van de prijzen.<br /><br /><div style="width:248px; text-align:center;"><img src="/images/loader.gif" alt="Bezig met laden" /></div>',270,90);

	$.ajax({
       type: "POST",
       url: "/ajax/bookingengine/cabin/ajaxadvancedcabinview",
       data: "departure_date=" + departure_date + "&checkedcabin=" + checkedcabin + "&checkedbox=" + checkedbox,
       success: function(msg){
            $("#cabinselection").html(msg);
            checkHeights();
            if(!stillLoading){
                $.prettyPhoto.close();
            }
			// apply the previous choices again
			applyChoiceAdvanced();
    	}
     });
}

// show alerts when a roomnumber is chosen more than once.
function validate_cabins(numCabins)
{
    var allPulldownsList = $("#roomSelection").find("option:selected").not($("option.datepulldown"));
    display_alert = false;
    var occurrences;
    // check if there are enough selected elements compared to the number of
	// cabins.
    if (numCabins > allPulldownsList.length)
    {
    	alert("U heeft nog geen hut gekozen.");
    	return false;
    }
    // compare the pulldowns, to check if a roomnumber is chosen multiple times.
    for(i=0;i<allPulldownsList.length;i++)
    {
    	occurrences = 0;
    	for(j=0;j<allPulldownsList.length;j++)
    	{
    	    if((allPulldownsList[i].value == allPulldownsList[j].value)
    	    		&& ((allPulldownsList[j].value!="0") // "beste" keuze
    	    	    && (allPulldownsList[j].value!="ONR") // onrequest return
															// from amadeus
    	    	    && (allPulldownsList[j].value!="GUAR") // guaranteed return
															// from amadeus
    	    		&& (allPulldownsList[j].value!="GUA"))) // guaranteed return
															// from amadeus
    		{
    		    occurrences++;
    		}
    	}
        if(occurrences>1)
        {
            display_alert = true;
        }
    	if(allPulldownsList[i].value=='choose'){
    	    alert("U heeft een categorie gekozen, maar geen hut.");
    	    return false;
    	}
    }
    if(display_alert){
    	   alert("Er is een hut die vaker dan 1 keer gekozen is.");
           return false;
    }
    return true;
}

// save the selected roomnumbers and type
function cabin_chosen()
{
	// retrieve all selected options from the form.
	var allPulldownsList = $("#roomSelection").find("option:selected").not($("option.datepulldown"));

    for(i=0;i<allPulldownsList.length;i++)
    {
        var id_pulldown = allPulldownsList[i].parentNode.id;
        var selected_cabin = id_pulldown.split("_")[2];
        var cabin_type = id_pulldown.split("_")[1];
        var room_number = allPulldownsList[i].value;
        //var bookingProcedure = 'advanced';
    	$.ajax({
        	async: false,
    	   type: "POST",
    	   url: "/ajax/bookingengine/cabin/saveCabin",
    	   data: "selected_cabin=" + selected_cabin + "&cabin_type=" + cabin_type + "&room_number=" + room_number + "&bookingProcedure=" + bookingProcedure,
    	   success: function(msg){
    	   }
    	 });
    }
}

function qryHowOld(varAsOfDate, varBirthDate)
{
var dtAsOfDate;
var dtBirth;
var dtAnniversary;
var intSpan;
var intYears = 0;
var intMonths;
var intWeeks;
var intDays;
var intHours;
var intMinutes;
var intSeconds;
var strHowOld;

// get born date
dtBirth = new Date(varBirthDate);

// get as of date
dtAsOfDate = new Date(varAsOfDate);

// if as of date is on or after born date
if ( dtAsOfDate >= dtBirth )
 {

 // get time span between as of time and birth time
 intSpan = ( dtAsOfDate.getUTCHours() * 3600000 +
             dtAsOfDate.getUTCMinutes() * 60000 +
             dtAsOfDate.getUTCSeconds() * 1000    ) -
           ( dtBirth.getUTCHours() * 3600000 +
             dtBirth.getUTCMinutes() * 60000 +
             dtBirth.getUTCSeconds() * 1000       );

 // start at as of date and look backwards for anniversary

 // if as of day (date) is after birth day (date) or
 // as of day (date) is birth day (date) and
 // as of time is on or after birth time
 if ( dtAsOfDate.getUTCDate() > dtBirth.getUTCDate() ||
      ( dtAsOfDate.getUTCDate() == dtBirth.getUTCDate() && intSpan >= 0 ) )
    {

    // most recent day (date) anniversary is in as of month
    dtAnniversary =
       new Date( Date.UTC( dtAsOfDate.getUTCFullYear(),
                           dtAsOfDate.getUTCMonth(),
                           dtBirth.getUTCDate(),
                           dtBirth.getUTCHours(),
                           dtBirth.getUTCMinutes(),
                           dtBirth.getUTCSeconds() ) );

    }

 // if as of day (date) is before birth day (date) or
 // as of day (date) is birth day (date) and
 // as of time is before birth time
 else
    {

    // most recent day (date) anniversary is in month before as of month
    dtAnniversary =
       new Date( Date.UTC( dtAsOfDate.getUTCFullYear(),
                           dtAsOfDate.getUTCMonth() - 1,
                           dtBirth.getUTCDate(),
                           dtBirth.getUTCHours(),
                           dtBirth.getUTCMinutes(),
                           dtBirth.getUTCSeconds() ) );

    // get previous month
    intMonths = dtAsOfDate.getUTCMonth() - 1;
    if ( intMonths == -1 )
       intMonths = 11;

    // while month is not what it is supposed to be (it will be higher)
    while ( dtAnniversary.getUTCMonth() != intMonths )

       // move back one day
       dtAnniversary.setUTCDate( dtAnniversary.getUTCDate() - 1 );

    }

 // if anniversary month is on or after birth month
 if ( dtAnniversary.getUTCMonth() >= dtBirth.getUTCMonth() )
    {

    // months elapsed is anniversary month - birth month
    intMonths = dtAnniversary.getUTCMonth() - dtBirth.getUTCMonth();

    // years elapsed is anniversary year - birth year
    intYears = dtAnniversary.getUTCFullYear() - dtBirth.getUTCFullYear();

    }

 // if birth month is after anniversary month
 else
    {

    // months elapsed is months left in birth year + anniversary month
    intMonths = (11 - dtBirth.getUTCMonth()) + dtAnniversary.getUTCMonth() + 1;

    // years elapsed is year before anniversary year - birth year
    intYears = (dtAnniversary.getUTCFullYear() - 1) - dtBirth.getUTCFullYear();

    }

 return intYears;
 }
else
	 return -1;
}

// when the party changes, remember the choices made by the customer.
function rememberChoiceAdvanced()
{
	// retrieve all selected options from the form.
	var allPulldownsList = $("#roomSelection").find("option:selected").not($("option.datepulldown"));

	// reset the previous choices
	advancedChoice = [];
	advancedChoiceRoomnumber = [];
    
    // get and save the choices in global vars
    for(i=0;i<allPulldownsList.length;i++)
    {
        var id_pulldown = allPulldownsList[i].parentNode.id;
        var selected_cabin = id_pulldown.split("_")[2];
        var cabin_type = id_pulldown.split("_")[1];
        var room_number = allPulldownsList[i].value;
        advancedChoice[selected_cabin] = allPulldownsList[i].parentNode.parentNode.id;
        advancedChoiceRoomnumber[selected_cabin] = room_number;
    }
}

// after the party changed and the cabins reloaded, reapply the previous choices
function applyChoiceAdvanced()
{
	for(i=1;i<advancedChoice.length;i++)
    {
		// set the option to selected
		$("#" + advancedChoice[i])[0].parentNode.children[0].click();
    }
}

function precacheHotelPrices()
{
   $.ajax({
       type: "GET",
       url: "/ajax/bookingengine/hotel/precachePrices",
       success: function(msg){
    }
   });
}

function changeInfo(rangeID){

    $.ajax({
        url: "/ajax/utils/webmemo/webmemo/rangeID/"+rangeID,
        dataType: 'json',
        success: function(msg){
            $('#sailinginfo').html(msg['webmemo']);
        }
    });
}

function deselectAll(parentId)
{
    $('#'+parentId+' input:radio').each( function(index, element) { 
        $(element).attr('checked',false);
        $(element).attr('disabled',false);
        $(element).parent().parent().removeClass('on');
        $(element).parent().children("span").html("");
    });
    earlyPrices = [0,0,0,0];
    earlyUpdateReceipt();
}

var passengerForm = new function()
{
    this.show = function()
    {
        $('#savePassengerFormLink').html('Sla reisgezelschap op &gt;');
        $('#savePassengerFormLink').addClass('on')
		$('.passengerFormEditable').show();
		$('.passengerFormNonEditable').hide();
		$('.passengerFormNumCabins').show();
    }
    
    this.hide = function()
    {
        $('#savePassengerFormLink').html('(wijzig)');
        $('#savePassengerFormLink').removeClass('on')
		$('.passengerFormEditable').hide();
		$('.passengerFormNonEditable').show();
		$('.passengerFormNumCabins').hide();
    }
}
