$(document).ready( function() {
    submitOnce();
    generateCopyrightYear("#copyrightY");
    sidebarInfo.init();
    newsTicker.init();
    vacationSearch.init();
});

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

tab = {
	init : function(){  },
    vacationSearch : function(caller){
		$(caller).parent().parent().find('li').removeClass("current");
		$(caller).parent().addClass("current");
		vacationSearch.updateDaysLeft();
        vacationSearch.refreshHotels(false, false, 'search', false);
        vacationSearch.removeDestination('searchOriginCode', 'searchDestinationAirportCode');
    }
}

newsTicker = {
	init : function(){
		newsTicker.currentItem = 0;
		newsTicker.newsItems = $("#topmenu div.newsTicker ul li").size();
		newsTicker.rightPull = $("#topmenu div.newsTicker ul li:eq(0)").width();

		$("#topmenu div.newsTicker ul li").css({'right':0}); // initially, they are all right: -170px, so they aren;t in view; this will put the first one in view)
		$("#topmenu div.newsTicker ul li:gt(0)").css({'opacity':0}); // make them all invisible but the first

		setInterval(newsTicker.tickNews, 6400); //time in milliseconds

	},
	tickNews : function() {
		$("#topmenu div.newsTicker ul li:eq("+newsTicker.currentItem+")").animate({ opacity: 0 }, 800, "",
			function() {
				newsTicker.currentItem = ++ newsTicker.currentItem % newsTicker.newsItems;
				$("#topmenu div.newsTicker ul li:eq("+newsTicker.currentItem+")").animate({opacity: 1 }, 800 );
			});
	}
}

overlay = {
	open : function(pageToOpen,caller){
		overlay.displayLoader();
		overlay.buildOverlay();
		var currentTime = new Date();

        var glue = "?=";
        if ( pageToOpen.indexOf( '?' ) != -1 )
            glue = "&__time="

		$('div#overlayContainer div.overlayContentContainer div.overlayContent').load(pageToOpen + glue + currentTime.getMilliseconds(),'',function(){
            var cssTopPos = $(window).scrollTop();
		    var cssLeftPos = $(window).scrollLeft();

            $("div.overlayContainer").css({
				'top': cssTopPos+250,
				'left': cssLeftPos+400
			});

            // Add the close button
			$(closeButton).attr('id','btnClose');
			$(closeButton).text('Close');
			$(closeButton).bind('click',function(){
				overlay.close('overlayContainer');
				return false;
			});
			$(this).append(closeButton);

			$('div#overlayContainer').animate({opacity:'show'},'fast');

			// Check if the overlay div appears outsite the body, if so, bring it back in
			if(($(caller).offset().left + $('div.overlayContainer').width()) > $('body').width()){
                $("div#overlayContainer").css({
                    'top': cssTopPos+250,
                    'left': cssLeftPos+400
                });
            }

			$('#bigAjaxLoader').remove();
		});
	},
	close : function(which){
		$('div#'+ which).fadeOut('fast',function(){
			if(which != "passengerContainer" && which != "passengerContainerCustom" && which != "searchLoaderContainer"){$(this).remove();}
			$('div.overlay').fadeOut('fast',function(){
				$(this).remove();
				if(which == 'searchLoaderContainer'){
					location.href = overlay.cancelURL;
				}
			});
		});
	},
	buildOverlay : function(){
		// Build the background overlay div
		backgroundDiv = document.createElement('div');
		$(backgroundDiv).addClass('overlay');
		$(backgroundDiv).css({ 'height':$('body').height(), 'z-indez':1000 });
		$(backgroundDiv).bind('click',function(){
			overlay.close('overlayContainer');
		});

		// Build the content overlay divs
		overlayContainer = document.createElement('div');
		$(overlayContainer).attr({'id':'overlayContainer'});
		$(overlayContainer).addClass('overlayContainer');

		overlayContentContainer = document.createElement('div');
		$(overlayContentContainer).addClass('overlayContentContainer');

		overlayContent = document.createElement('div');
		$(overlayContent).addClass('overlayContent').addClass('clearfix');

		closeButton = document.createElement('a')
		$(closeButton).attr({
			'id':'btnClose',
			'href':'#'
		});
		$(closeButton).text('Close');
		$(closeButton).bind('click',function(){ return false; });

		// Append the content
		$('body').append(backgroundDiv);
		$(overlayContentContainer).append(overlayContent);
		$(overlayContainer).append(overlayContentContainer);
		$('body').append(overlayContainer);

		// Then fade it in
		$('div.overlay').css('opacity',0);
		$('div.overlay').show();
		$('body').append(ajaxLoader);
		$('div.overlay').animate({opacity: 0.35}, 300, "");
	},
	displayLoader : function(){
		ajaxLoader = document.createElement('img')
		$(ajaxLoader).attr({
			'id':'bigAjaxLoader',
			'src':'/media/images/common/web/placeholders/ajax-loader.gif'
		});
		$(ajaxLoader).css({
			'position':'absolute',
			'top':'50%',
			'left':'50%'
		});
	},
	openPassenger : function(caller, which){
		if(which == 'custom'){
			divToOpen = $('div#passengerContainerCustom');
		}else{
			divToOpen = $('div#passengerContainer');
		}

		overlay.displayLoader();

		// Build the background overlay div
		backgroundDiv = document.createElement('div');
		$(backgroundDiv).addClass('overlay');
		$(backgroundDiv).css({'height':$(document).height()});
		$(backgroundDiv).bind('click',function(){
			overlay.close($(divToOpen).attr('id'));
		});

		$('body').append(backgroundDiv);
		$('div.overlay').css('opacity',0);
		$('div.overlay').show();
		$('div.overlay').animate({opacity: 0.35}, 300, "");

		divToOpen.animate({opacity:'show'},'fast');

        var cssTopPos = $(window).scrollTop();
		var cssLeftPos = $(window).scrollLeft();

		divToOpen.css({
				'top': cssTopPos+250,
				'left': cssLeftPos
			});


        // Check if the overlay div appears outsite the body, if so, bring it back in
		if(($(caller).offset().left + divToOpen.width()) > $('body').width()){
			divToOpen.css({
				'top': cssTopPos+250,
				'left': cssLeftPos
			});
		}

		$('#bigAjaxLoader').remove();
	},
	openHome : function(what, where) {
        var cssTopPos = $(window).scrollTop();
		var cssLeftPos = $(window).scrollLeft();
        //alert(" openHome  " + cssTopPos + "  "+cssLeftPos)
        if($(".current a").attr('id') == 'flight_tab' || $(".addfli").attr('class') == 'addfli current hover' || $(".current a").attr('id') == 'activity_tab'){
            //Hide room label
            $(".paxroomlabel").css("display","none");
        }else{
            $(".paxroomlabel").css("display","inline");
        }
		$('div#' + what + ' div.overlayContainer').css({
			'top': cssTopPos+250,
			'left': cssLeftPos+324
		}).show();
    },
	openInsurance : function(divToOpen) {
		$('div#insuranceContainer' + divToOpen).css({
			'top': $(window).scrollTop()+250,
			'left': $(window).scrollLeft()+324
		});

		$('div#insuranceContainer' + divToOpen).show();

	},
	closeInsurance : function(divToClose) {
		$('div#insuranceContainer' + divToClose).css({
				'display': 'none'
			});
	}
}


pricing_option = {
    toggleTourAdults : function( caller, ticket_matrix_id, tour_id, maxAdultsInSearch ,minimumAge) {
        pricing_option.toggleTour( caller, ticket_matrix_id, tour_id, maxAdultsInSearch, 'adultsList', 'adults', true, 17 );
    },
    toggleTourChildren : function( caller, ticket_matrix_id, tour_id, maxChildrenInSearch, minimumAge ) {
        pricing_option.toggleTour( caller, ticket_matrix_id, tour_id, maxChildrenInSearch, 'childrenList', 'children', true, 2 );
    },
    toggleTourInfants : function( caller, ticket_matrix_id, tour_id, maxInfantsInSearch ) {
        pricing_option.toggleTour( caller, ticket_matrix_id, tour_id, maxInfantsInSearch, 'infantsList', 'infants', true, 0 );
    },
    toggleTourSeniors : function( caller, ticket_matrix_id, tour_id, maxSeniorsInSearch,minimumAge ) {
        pricing_option.toggleTour( caller, ticket_matrix_id, tour_id, maxSeniorsInSearch, 'seniorsList', 'seniors', true, 59 );
    },
    toggleTicketSeniors : function( caller, ticket_matrix_id, ticket_id, maxSeniorsInSearch,minimumAge ) {
        pricing_option.toggleTour( caller, ticket_matrix_id, ticket_id, maxSeniorsInSearch, 'seniorsList', 'seniors', false, 59 );
    },
    toggleTicketAdults : function( caller, ticket_matrix_id, ticket_id, maxAdultsInSearch,minimumAge ) {
        pricing_option.toggleTour( caller, ticket_matrix_id, ticket_id, maxAdultsInSearch, 'adultsList', 'adults', false, 17 );
    },
    toggleTicketChildren : function( caller, ticket_matrix_id, ticket_id, maxChildrenInSearch, minimumAge ) {
        pricing_option.toggleTour( caller, ticket_matrix_id, ticket_id, maxChildrenInSearch, 'childrenList', 'children', false, 2 );
    },
    toggleTicketInfants : function( caller, ticket_matrix_id, ticket_id, maxInfantsInSearch ) {
        pricing_option.toggleTour( caller, ticket_matrix_id, ticket_id, maxInfantsInSearch, 'infantsList', 'infants', false, 0 );
    },
    toggleTour : function( caller, ticket_matrix_id, tour_id, maxPaxInSearch, divClassName, paxType, isTour, minimumAge ) {
        pricing_option.desiredNumberOfPax = $(caller).attr('value');

        pricing_option.callingDiv = $(caller).parents('div.ticketOption_' + tour_id );

        // to remove
//        pricing_option.paxNbFromSearch = $(pricing_option.callingDiv).find('.' + divClassName + ' table.ticketOption_'+ paxType + ' li.pax_from_search').size();

        pricing_option.paxNbExtra = $(pricing_option.callingDiv).find('.' + divClassName + ' .extra_pax').size();

        var i = 0;

        // do we need to ADD form element(s) ?
        if ( pricing_option.desiredNumberOfPax > pricing_option.paxNbExtra ) {
           // we need to Add extra 'pax' form element(s)
           for ( i = pricing_option.paxNbExtra; i < pricing_option.desiredNumberOfPax; i++ ) {
              pricing_option.addExtraPax( ticket_matrix_id, tour_id, i, paxType, isTour, minimumAge );
           }
        }
        // do we need to remove form element(s) ?
        else if ( pricing_option.desiredNumberOfPax < pricing_option.paxNbExtra ) {
            // how many we need to remove ?
            var nbToRemove = pricing_option.paxNbExtra - pricing_option.desiredNumberOfPax;
            $(pricing_option.callingDiv).find('.' + divClassName + ' .extra_pax:gt('+( pricing_option.desiredNumberOfPax - 1)+')').remove();
        }

        if ( pricing_option.desiredNumberOfPax == 0 ) {
             $(pricing_option.callingDiv).find('.' + divClassName ).addClass( "hide" );
        }
        else {
             $(pricing_option.callingDiv).find('.' + divClassName ).removeClass( "hide" );
        }
    },
    addExtraPax : function(ticket_matrix_id,tour_id, paxIdx, paxType, isTour, minimumAge ) {
        $.get('/tips/optionsAddExtraPax.jsp?paxIdx='+paxIdx+'&tourId='+tour_id+'&ticketMatrixIdx='+ticket_matrix_id + '&type='+paxType + '&isTour=' + isTour + '&minimumAge=' + minimumAge,function(newChildMarkup){
            if ( $(pricing_option.callingDiv).find('.' + paxType + 'List .extra_pax').size() > 0) {
                $(pricing_option.callingDiv).find('.' + paxType + 'List .extra_pax:last').after(newChildMarkup);
            } else {
                $(pricing_option.callingDiv).find('.' + paxType + 'List').append(newChildMarkup);
            }
        });
    }
}


booking = {
	modify : function(caller) {
		// Open the modify div
		$('#passengersModify').animate({'height':'show'}, 'fast');
	},
	toggleChildren : function(caller,roomNumber){
		booking.callingDiv = $(caller).parents('div.overlayContainer');

		booking.desiredNumberOfChildren = $(caller).attr('value');
		booking.actualNumberOfChildren = $(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tr.room-'+roomNumber+'.child').size();

		if(booking.desiredNumberOfChildren > booking.actualNumberOfChildren){
			// Want to ADD a room
			booking.addChildren(booking.actualNumberOfChildren + 1,roomNumber);
		}else{
            // Want to REMOVE a room
            if ( booking.desiredNumberOfChildren == 0 ) {
                $(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tr.room-'+roomNumber ).remove();
            }
            else {
                $(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tr.room-'+roomNumber+':gt('+(booking.desiredNumberOfChildren - 1)+')').remove();
            }

			if($(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tr.child').size() == 0){
				$(booking.callingDiv).find('.withChildren').hide();
			}
		}
	},
    toggleAdult : function(caller,roomNumber){
		booking.callingDiv = $(caller).parents('div.overlayContainer');

		booking.desiredNumberOfAdults = $(caller).attr('value');
		booking.actualNumberOfAdults = $(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tr.room-'+roomNumber+'.adult').size();

		if(booking.desiredNumberOfAdults > booking.actualNumberOfAdults){
			// Want to ADD a room
			booking.addAdults(booking.actualNumberOfAdults + 1,roomNumber);
		}else{
            // Want to REMOVE a room
            if ( booking.desiredNumberOfAdults == 0 ) {
                $(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tr.room-'+roomNumber ).remove();
            }
            else {
                $(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tr.room-'+roomNumber+':gt('+(booking.desiredNumberOfAdults - 1)+')').remove();
            }

			if($(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tr.adult').size() == 0){
				$(booking.callingDiv).find('.withAdults').hide();
			}
		}

	},

	addAdults : function(adultNumber,roomNumber){
		var buttonValue = $("input[name=seRequestObj.searchType]:checked").val();
		if(booking.desiredNumberOfAdults >= booking.actualNumberOfAdults){
			booking.actualNumberOfAdults = adultNumber + 1;

			$.get('/tips/addAdults.jsp?roomNumber='+roomNumber+'&adultNumber='+adultNumber,function(newAdultMarkup){
				if($(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody tr.room-'+roomNumber).size() > 0){
					$(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody tr.room-'+roomNumber+':last').after(newAdultMarkup);
				}else{
					// Find the previous room number then add the row at the right position
					roomBefore = 0;

					for(i=roomNumber;i>0;i--){
						if($(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody tr.room-'+i).size() > 0){
							roomBefore = i;
							break;
						}
					}
					if(roomBefore != 0){
						// There's a row, add it after
						$(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody tr.room-'+roomBefore+':last').after(newAdultMarkup);
					}else{
						// There are no row, append it to the table
						$(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody').prepend(newAdultMarkup);
					}
				}

				$(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(0)').text(adultNumber);
				if(buttonValue != 0 && buttonValue != 4) {
					$(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(2)').text(roomNumber);
				} else {
					$(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(1)').addClass('hide');
					$(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(2)').addClass('hide');
					$(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(3)').addClass('hide');
				}
				$(booking.callingDiv).find('.withAdults table.bookingPassengersAdults tbody tr.room-'+roomNumber+':last td:eq(1) select').attr('name','RoomConfigurationList['+(roomNumber-1)+'].ageOfAdultList['+(adultNumber-1)+']');

				$.call(booking.addAdults(booking.actualNumberOfAdults,roomNumber));
			});
		}else{
			$(booking.callingDiv).find('.withAdults').slideDown();
		}
	},
	addChildren : function(childrenNumber,roomNumber){
		var buttonValue = $("input[name=seRequestObj.searchType]:checked").val();
		if(booking.desiredNumberOfChildren >= booking.actualNumberOfChildren){
			booking.actualNumberOfChildren = childrenNumber + 1;

			$.get('/tips/addChildren.jsp?roomNumber='+roomNumber+'&childrenNumber='+childrenNumber,function(newChildMarkup){
				if($(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tbody tr.room-'+roomNumber).size() > 0){
					$(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tbody tr.room-'+roomNumber+':last').after(newChildMarkup);
				}else{
					// Find the previous room number then add the row at the right position
					roomBefore = 0;

					for(i=roomNumber;i>0;i--){
						if($(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tbody tr.room-'+i).size() > 0){
							roomBefore = i;
							break;
						}
					}
					if(roomBefore != 0){
						// There's a row, add it after
						$(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tbody tr.room-'+roomBefore+':last').after(newChildMarkup);
					}else{
						// There are no row, append it to the table
						$(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tbody').prepend(newChildMarkup);
					}
				}

				$(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(0)').text(childrenNumber);
				if(buttonValue != 0 && buttonValue != 4) {
					$(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(2)').text(roomNumber);
				} else {
					$(booking.callingDiv).fdd/mm/yyyyind('.withChildren table.bookingPassengersChildren tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(1)').addClass('hide');
					$(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(2)').addClass('hide');
					$(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(3)').addClass('hide');
				}
				$(booking.callingDiv).find('.withChildren table.bookingPassengersChildren tbody tr.room-'+roomNumber+':last td:eq(1) select').attr('name','RoomConfigurationList['+(roomNumber-1)+'].ageOfChildList['+(childrenNumber-1)+']');

				$.call(booking.addChildren(booking.actualNumberOfChildren,roomNumber));
			});
		}else{
			$(booking.callingDiv).find('.withChildren').slideDown();
		}
	},
	toggleSenior : function(caller,roomNumber){
		booking.callingDiv = $(caller).parents('div.overlayContainer');

		booking.desiredNumberOfSenior = $(caller).attr('value');
		booking.actualNumberOfSenior = $(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tr.room-'+roomNumber+'.senior').size();

		if(booking.desiredNumberOfSenior > booking.actualNumberOfSenior){
			// Want to ADD a room
			booking.addSenior(booking.actualNumberOfSenior + 1,roomNumber);
		}else{
			// Want to REMOVE a room
            if ( booking.desiredNumberOfSenior == 0 ) {
                $(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tr.room-'+roomNumber ).remove();
            }
            else {
                $(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tr.room-'+roomNumber+':gt('+(booking.desiredNumberOfSenior - 1)+')').remove();
            }

            if($(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tr.senior').size() == 0){
                $(booking.callingDiv).find('.withSeniors').hide();
            }
        }
	},
	addSenior : function(seniorNumber,roomNumber){
		var buttonValue = $("input[name=seRequestObj.searchType]:checked").val();
		if(booking.desiredNumberOfSenior >= booking.actualNumberOfSenior){
			booking.actualNumberOfSenior = seniorNumber + 1;

			$.get('/tips/addSenior.jsp?roomNumber='+roomNumber+'&seniorNumber='+seniorNumber,function(newSeniorMarkup){
				if($(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody tr.room-'+roomNumber).size() > 0){
					$(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody tr.room-'+roomNumber+':last').after(newSeniorMarkup)
				}else{
					// Find the previous room number then add the row at the right position
					roomBefore = 0;

					for(i=roomNumber;i>0;i--){
						if($(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody tr.room-'+i).size() > 0){
							roomBefore = i;
							break;
						}
					}
					if(roomBefore != 0){
						// There's a row, add it after
						$(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody tr.room-'+roomBefore+':last').after(newSeniorMarkup);
					}else{
						// There are no row, append it to the table
						$(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody').prepend(newSeniorMarkup);
					}
				}                       

				$(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(0)').text(seniorNumber);
				if(buttonValue != 0 && buttonValue != 4) {
					$(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(2)').text(roomNumber);
				} else {
					$(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(1)').addClass('hide');
					$(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(2)').addClass('hide');
					$(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody tr.room-'+roomNumber+':last td:eq(0) span:eq(3)').addClass('hide');
				}
				$(booking.callingDiv).find('.withSeniors table.bookingPassengersSeniors tbody tr.room-'+roomNumber+':last td:eq(1) select').attr('name','RoomConfigurationList['+(roomNumber-1)+'].ageOfSeniorList['+(seniorNumber-1)+']');

				$.call(booking.addSenior(booking.actualNumberOfSenior,roomNumber));
			});
		}else{
			$(booking.callingDiv).find('.withSeniors').slideDown();
		}
	},
 toggleRoom : function(caller,type){

        var roomCounter = $('.bookingPassengersNumbers tr').size()/2 + 1 ;
                $.ajax({
                  url: "/ajax-calls/add_room_ajax.jsp",
                  data: "roomNumber=" + roomCounter + "&type=" + type,
                  cache: false,
                  success: function(html){
                    $('.bookingPassengersTbody').append(html);
                  }
                });

				// Needed to define which room we are in
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last').removeClass('room-1');
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last').addClass('room-' + roomCounter);

                //adult
                $(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(1) select').attr('name','RoomConfigurationList['+(roomCounter-1)+'].adultsNum');
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(1) select').bind('change',function(){
					booking.toggleAdult(this,roomCounter);
				});

				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(2) select').attr('name','RoomConfigurationList['+(roomCounter-1)+'].seniorsNum');
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(2) select').bind('change',function(){
					booking.toggleSenior(this,roomCounter);
				});
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(3) select').attr('name','RoomConfigurationList['+(roomCounter-1)+'].childrenNum');
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(3) select').bind('change',function(){
					booking.toggleChildren(this,roomCounter);
				});

                $(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(4) select').attr('name','RoomConfigurationList['+(roomCounter-1)+'].infantsNum');
    },

    removeRoom : function(caller,type,roomId){
        //remove room row
        if(roomId > 1){
            $('.bookingPassengersNumbers tr').each(function(){
                if($(this).attr('id') == roomId){
                    $(this).remove();
                }
            });


            //remove associated age row and age labels

            $('.bookingPassengersSeniors tr').each(function(){
                if($(this).attr("class").substr(-1) == roomId){
                    $(this).remove();
                }
            });
            $('.bookingPassengersAdults tr').each(function(){
                //work around because when remove the room i+1 it remove automatically the "adult-i" row
                var adultRoomStr = "room-" + roomId;
                if($(this).attr("class").substr(-6) == adultRoomStr){
                    $(this).remove();
                }
            });
            $('.bookingPassengersChildren tr').each(function(){
                if($(this).attr("class").substr(-1) == roomId){
                    $(this).remove();
                }
            });
        }
    },
	toggleRooms : function(caller, type) {
		booking.callingDiv = $(caller).parents('div.overlayContainer');

		booking.desiredNumberOfRooms = $(caller).attr('value');
		booking.actualNumberOfRooms = $(booking.callingDiv).find('table.bookingPassengers tr.room').size();

		if(booking.desiredNumberOfRooms > booking.actualNumberOfRooms){
			// Want to ADD a room
			booking.addRoomRow(booking.actualNumberOfRooms + 1, type);
		}else{

			// Remove the children linked to this room
			numberOfTrs = 0;
			for(i=1;i<=booking.desiredNumbdd/mm/yyyyerOfRooms;i++){
				numberOfTrs += $(booking.callingDiv).find('.withChildren table.bookingPassengers tr.room-'+i).size();
			}
			if(numberOfTrs != 0){
				$(booking.callingDiv).find('.withChildren table.bookingPassengers tr:gt('+parseFloat(numberOfTrs-1)+')').remove();
			}else{
				$(booking.callingDiv).find('.withChildren').hide();
			}

			// Remove the seniors linked to this room
			numberOfTrs = 0;
			for(i=1;i<=booking.desiredNumberOfRooms;i++){
				numberOfTrs += $(booking.callingDiv).find('.withSeniors table.bookingPassengers tr.room-'+i).size();
			}
			if(numberOfTrs != 0){
				$(booking.callingDiv).find('.withSeniors table.bookingPassengers tr:gt('+parseFloat(numberOfTrs-1)+')').remove();
			}else{
				$(booking.callingDiv).find('.withSeniors').hide();
			}

            // Remove the adults linked to this room
			numberOfTrs = 0;
			for(i=1;i<=booking.desiredNumberOfRooms;i++){
				numberOfTrs += $(booking.callingDiv).find('.withAdults table.bookingPassengers tr.room-'+i).size();
			}
			if(numberOfTrs != 0){
				$(booking.callingDiv).find('.withAdults table.bookingPassengers tr:gt('+parseFloat(numberOfTrs-1)+')').remove();
			}else{
				$(booking.callingDiv).find('.withAdults').hide();
			}

            // Want to REMOVE a room
			$(booking.callingDiv).find('table.bookingPassengers:first tr:gt('+booking.desiredNumberOfRooms+')').remove();
		}
	},

	addRoomRow : function(roomNumber, type){
		if(booking.desiredNumberOfRooms > booking.actualNumberOfRooms ){
			booking.actualNumberOfRooms = roomNumber + 1;

			$.get('/tips/addRoomRow.jsp?roomNumber='+roomNumber+'&type='+type,function(newRoomMarkup){

				// Set the room values
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last').after(newRoomMarkup);
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(0) span').text(roomNumber);

				// Needed to define which room we are in
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last').removeClass('room-1');
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last').addClass('room-' + roomNumber);

//				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(1) select option:eq(2)').attr('selected','selected');
                //adult
                $(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(1) select').attr('name','RoomConfigurationList['+(roomNumber-1)+'].adultsNum');
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(1) select').bind('change',function(){
					booking.toggleAdult(this,roomNumber);
				});

				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(2) select').attr('name','RoomConfigurationList['+(roomNumber-1)+'].seniorsNum');
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(2) select').bind('change',function(){
					booking.toggleSenior(this,roomNumber);
				});
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(3) select').attr('name','RoomConfigurationList['+(roomNumber-1)+'].childrenNum');
				$(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(3) select').bind('change',function(){
					booking.toggleChildren(this,roomNumber);
				});

                $(booking.callingDiv).find('table.bookingPassengers tr.room:last td:eq(4) select').attr('name','RoomConfigurationList['+(roomNumber-1)+'].infantsNum');

				$.call(booking.addRoomRow(booking.actualNumberOfRooms, type));
			});
		}
	},
	showSearchLoader : function() {
//		alert('here we are!');
        overlay.cancelURL = location.href;

		// Build the background overlay div
		backgroundDiv = document.createElement('div');
		$(backgroundDiv).addClass('overlay');
		$(backgroundDiv).css({'height':$(document).height()});

		if(!(jQuery.browser.msie))
		$('body').append(backgroundDiv);

        $('div.overlay').css('opacity',0);
		$('div.overlay').show();
        $('div.overlay').animate({opacity: 0.35}, 300, "");

        booking.updateSearchContent();

        $('#searchLoaderContainer').css({
			'top': $(window).scrollTop()+300,
			'left':$(window).scrollLeft()+324
        });

        $('#searchLoaderContainer').show();
        //alert("search loader");
        booking.seconds = 0;
		timerID = setTimeout("booking.updateTimer()", 1000);
//        alert( 'displaying' );
    },
    cancelLoader : function(){
        //alert('cancel');
        overlay.close('searchLoaderContainer');
    },


    stripStars: function( label ) {
        var idxStar = label.indexOf( "*" );
        if ( idxStar != -1 ) {
            return label.substring( idxStar + 1 ).trim();
        }
        else
            return label.trim();
    },
    updateSearchContent : function() {
        
		// Get the div from which the search is done
        searchingDiv = $('div#searchDiv');
        var typeProduct = $('#customSearchType').val();

        startingDate = $(searchingDiv).find('input#departureDate').attr('value');
		arrivingDate = $(searchingDiv).find('input#returnDate').attr('value');

        var numberRoom = $(".room-container").size();
        var numberAdults = 0;
        var numberSeniors = 0;
        var numberChilds = 0;
        var numberInfants = 0;
        for (var x=0; x<=numberRoom; x++){
            var temp=$("div#searchDiv #room-"+x+"-select-0").val();
            if(temp)
            numberAdults+=parseFloat(temp);
        }
        for (var x=0; x<=numberRoom; x++){
            var temp=$("#room-"+x+"-select-1").val();
            if(temp)
            numberSeniors+=parseFloat(temp);
        }
        for (var x=0; x<=numberRoom; x++){
            var temp=$("#room-"+x+"-select-2").val();
            if(temp)
            numberChilds+=parseFloat(temp);
        }
        for (var x=0; x<=numberRoom; x++){
            var temp=$("#room-"+x+"-select-3").val();
            if(temp)
            numberInfants+=parseFloat(temp);
        }

        // cut some section of text depending on the type of product searched
        if ( typeProduct == 'PACKAGE' ) {
            departingCity = booking.stripStars( $(searchingDiv).find('select.leaving-list:visible option:selected').text() );
            arrivingCity = booking.stripStars( $(searchingDiv).find('select.going-list:visible option:selected').text() );
            $('#searchLoaderContainer #departing-city').html(departingCity);
            $('#searchLoaderContainer #arriving-city').html(arrivingCity);
            $('#searchLoaderContainer #starting-date').text(startingDate);
            $('#searchLoaderContainer #arriving-date').text(arrivingDate);
            $('#searchLoaderContainer #number-room').text(numberRoom);
        }
        else if ( typeProduct == 'HOTEL_ONLY' ) {

            arrivingCity = booking.stripStars( $(searchingDiv).find('select.going-list:visible option:selected').text() );

            $('#searchLoaderContainer .depart-city').addClass('hide');
            $('#searchLoaderContainer .to').addClass('hide');

            $('#search-loader-room').css('display', 'block');


            $('#searchLoaderContainer #arriving-city').html(arrivingCity);
            $('#searchLoaderContainer #starting-date').text(startingDate);
            $('#searchLoaderContainer #arriving-date').text(arrivingDate);
            $('#searchLoaderContainer #number-room').text(numberRoom);


        }
        else if ( typeProduct == 'FLIGHT_ONLY' ) {
            // check if it is an open jaw
            if ( $( '#openJawEnabled:checked' ).length == 1 ) {
                var toLabel = $('#searchLoaderContainer .to').html();
                $('#searchLoaderContainer .to').addClass('hide');

                departingCity1 = booking.stripStars( $(searchingDiv).find('#searchOriginCode option:selected').text() );
                departingCity2 = booking.stripStars( $(searchingDiv).find('#searchOpenJawOriginAirportCode option:selected').text() );
                arrivingCity1 = booking.stripStars( $(searchingDiv).find('#searchOpenJawDestinationAirportCode option:selected').text() );

                departingCity = departingCity1 + ' ' + toLabel + ' ' + arrivingCity1 + ' - ';
                arrivingCity = departingCity2 + ' ' + toLabel + ' ' + departingCity1;
            }
            else {
                
                departingCity = booking.stripStars( $(searchingDiv).find('select.leaving-list:visible option:selected').text() );
                arrivingCity = booking.stripStars( $(searchingDiv).find('select.going-list:visible option:selected').text() );
            }


            $('#searchLoaderContainer #departing-city').html(departingCity);
            $('#searchLoaderContainer #arriving-city').html(arrivingCity);
            $('#searchLoaderContainer #starting-date').text(startingDate);
            $('#searchLoaderContainer #arriving-date').text(arrivingDate);
            $('#searchLoaderContainer #number-room').addClass('hide');
        }
        else if ( typeProduct == 'CAR_ONLY' ) {

               var pickupDestValue= $("#destinationCarHandleSelect option:selected").val();
               var dropOffDestValue= $("#carDropOffDestination option:selected").val();

               var pickupDest=  $("#destinationCarHandleSelect option:selected").text();
               var dropOffDest= $("#carDropOffDestination option:selected").text();

               var chek = $('#chkDropOffInfo').is(':checked');

                   if (chek) {
                       // if same location
                     dropOffDestValue = pickupDestValue;
                     dropOffDest =  pickupDest;
                   }

            var titleBlock = $('#carSearchLoaderTitleString').val();
            //var titleBlock = '<p>'+ titleString +'</p>';
            $('#searchLoaderContainer #departing-city').html(titleBlock);

            if (dropOffDestValue !=null && dropOffDestValue.length > 0) {   
                 $('#searchLoaderContainer #arriving-city').html(dropOffDest);
            }else {
                 $('#searchLoaderContainer #arriving-city').html(""); 
            }

            $('#searchLoaderContainer #starting-date').text(startingDate);
            $('#searchLoaderContainer #arriving-date').text(arrivingDate);
            $('#searchLoaderContainer #number-room').addClass( 'hide' );
            $('#searchLoaderContainer #for').addClass( 'hide' );
            $('#searchLoaderContainer #in').addClass( 'hide' );
            $('#searchLoaderContainer #room').addClass( 'hide' );
            return;
            }

            else if (typeProduct == 'ACTIVITY_ONLY'){

                arrivingCity = booking.stripStars( $(searchingDiv).find('select.going-list:visible option:selected').text() );
                var textActivity = $('#activityTitle').val() + ": ";
                var BlockActivityTitle = textActivity + arrivingCity;
                $('#searchLoaderContainer .depart-city').addClass('hide');
                $('#searchLoaderContainer .to').addClass('hide');
                //$('#searchLoaderContainer #arriving-city').html(arrivingCity);
                $('#searchLoaderContainer #arriving-city').html(BlockActivityTitle);
                $('#searchLoaderContainer #starting-date').text(startingDate);
                $('#searchLoaderContainer #arriving-date').text(arrivingDate);
                $('#searchLoaderContainer #number-room').addClass( 'hide' );
            }




        // hide the room label
        if ( $('#flight_tab').parents('li').hasClass( 'current' ) || $('#car_tab').parents('li').hasClass( 'current' )  || $('#activity_tab').parents('li').hasClass( 'current' ) ) {
            if ($('#addHotel').hasClass('addhot') && $('#addHotel').hasClass('current') && $('#addHotel').hasClass('hover'))  {
                 $('#search-loader-room').css('display', 'block');
            }
            else {
                $( '#search-loader-room' ).hide();
            }

        }

		// Build the string with the right numbers
        if ( numberAdults > 1 )
		    $('#searchLoaderContainer ul.hide li:eq(4) span').text(numberAdults);
        if ( numberSeniors > 1 )
    		$('#searchLoaderContainer ul.hide li:eq(5) span').text(numberSeniors);
        if ( numberChilds > 1 )
    		$('#searchLoaderContainer ul.hide li:eq(6) span').text(numberChilds);
        if ( numberInfants > 1 )
    		$('#searchLoaderContainer ul.hide li:eq(7) span').text(numberInfants);


        $('#searchLoaderContainer #passengers').html('');
        var addComma = false;
		if(numberAdults > 0){
            if ( numberAdults > 1 )
    			$('#searchLoaderContainer #passengers').append($('#searchLoaderContainer ul.hide li:eq(4)').html());
            else
                $('#searchLoaderContainer #passengers').append($('#searchLoaderContainer ul.hide li:eq(0)').html());
            addComma = true;
        }

		if(numberSeniors > 0){
            if ( addComma ) {
                $('#searchLoaderContainer #passengers').append(', ');
            }
            if ( numberSeniors > 1 )
                $('#searchLoaderContainer #passengers').append($('#searchLoaderContainer ul.hide li:eq(5)').html());
            else
                $('#searchLoaderContainer #passengers').append($('#searchLoaderContainer ul.hide li:eq(1)').html());
            addComma = true;
        }

		if(numberChilds > 0){
            if ( addComma ) {
    			$('#searchLoaderContainer #passengers').append(', ');
            }
            if ( numberChilds > 1 )
                $('#searchLoaderContainer #passengers').append($('#searchLoaderContainer ul.hide li:eq(6)').html());
            else
                $('#searchLoaderContainer #passengers').append($('#searchLoaderContainer ul.hide li:eq(2)').html());
            addComma = true;
		}

		if(numberInfants > 0){
            if ( addComma ) {
    			$('#searchLoaderContainer #passengers').append(', ');
            }
            if ( numberInfants > 1 )
                $('#searchLoaderContainer #passengers').append($('#searchLoaderContainer ul.hide li:eq(7)').html());
            else
                $('#searchLoaderContainer #passengers').append($('#searchLoaderContainer ul.hide li:eq(3)').html());
		}

		//if ($(searchingDiv).attr('id') == 'customDiv') {
			// do sth
			var buttonValue = $("input[name=seRequestObj.searchType]:checked").val();
			// flight only and flight + car -> no room information is to be displayed
			if (buttonValue == '0' || buttonValue == '4') {
				$('#searchLoader').find('span.in').addClass('hide');
				$('#searchLoader').find('span.room').addClass('hide');
				$('#searchLoader').find('span.numberroom').addClass('hide');
			}
			// hotel only and hotel + car -> no flight information is to be displayed
			if (buttonValue == '1' || buttonValue == '5') {
				$('#searchLoader').find('span.depart-city').addClass('hide');
				$('#searchLoader').find('span.to').addClass('hide');
			}
		//}
	},
	updateSearchPassengerInfo : function(){
        // Get the div from which the search is done
		searchingDiv = $('div#check-availability');
        numberRoom = $(".room-container").size();

        var adultsCount = 0;
        var seniorsCount = 0;
        var childsCount = 0;
        var infantsCount = 0;

        for (var x=0; x<=numberRoom; x++){
            var temp=$("#room-"+x+"-select-0").val();
            if(temp)
            adultsCount+=parseFloat(temp);
        }
        for (var x=0; x<=numberRoom; x++){
            var temp=$("#room-"+x+"-select-1").val();
            if(temp)
            seniorsCount+=parseFloat(temp);
        }
        for (var x=0; x<=numberRoom; x++){
            var temp=$("#room-"+x+"-select-2").val();
            if(temp)
            childsCount+=parseFloat(temp);
        }
        for (var x=0; x<=numberRoom; x++){
            var temp=$("#room-"+x+"-select-3").val();
            if(temp)
            infantsCount+=parseFloat(temp);
        }

		// Set the values
		booking.updateSearchPassengerInfoText(adultsCount, seniorsCount, childsCount, infantsCount, numberRoom);

        //Reset flight section type flag
        $("#bookflightSubtitle").css("display","none");

	},
	updateSearchPassengerInfoText : function(numberAdults, numberSeniors, numberChilds, numberInfants, numberRoom){
		searchingDiv = $('div#passengerHandle');
		if(numberAdults >= 1) {
			$(searchingDiv).find('a.passengerInfos span.adults-number').removeClass('hide');
			$(searchingDiv).find('a.passengerInfos span.adults-number span.number').removeClass('hide');
			$(searchingDiv).find('a.passengerInfos span.adults-number span.number').text(numberAdults);
			if(numberAdults == 1) {
				$(searchingDiv).find('a.passengerInfos span.adults-number span.text').removeClass('hide');
				$(searchingDiv).find('a.passengerInfos span.adults-number span.texts').addClass('hide');
			} else if(numberAdults > 1) {
				$(searchingDiv).find('a.passengerInfos span.adults-number span.texts').removeClass('hide');
				$(searchingDiv).find('a.passengerInfos span.adults-number span.text').addClass('hide');
			}
		} else {
			$(searchingDiv).find('a.passengerInfos span.adults-number').addClass('hide');
		}

		if(numberSeniors >= 1){
			$(searchingDiv).find('a.passengerInfos span.senior-number').removeClass('hide');
			$(searchingDiv).find('a.passengerInfos span.senior-number span.number').removeClass('hide');
			$(searchingDiv).find('a.passengerInfos span.senior-number span.number').text(numberSeniors);
			if(numberSeniors == 1) {
				$(searchingDiv).find('a.passengerInfos span.senior-number span.text').removeClass('hide');
				$(searchingDiv).find('a.passengerInfos span.senior-number span.texts').addClass('hide');
			} else if(numberSeniors > 1) {
				$(searchingDiv).find('a.passengerInfos span.senior-number span.texts').removeClass('hide');
				$(searchingDiv).find('a.passengerInfos span.senior-number span.text').addClass('hide');
			}
		} else {
			$(searchingDiv).find('a.passengerInfos span.senior-number').addClass('hide');
		}
		if(numberChilds >= 1){
			$(searchingDiv).find('a.passengerInfos span.children-number').removeClass('hide');
			$(searchingDiv).find('a.passengerInfos span.children-number span.number').removeClass('hide');
			$(searchingDiv).find('a.passengerInfos span.children-number span.number').text(numberChilds);
			if(numberChilds == 1) {
				$(searchingDiv).find('a.passengerInfos span.children-number span.text').removeClass('hide');
				$(searchingDiv).find('a.passengerInfos span.children-number span.texts').addClass('hide');
			} else if(numberChilds > 1) {
				$(searchingDiv).find('a.passengerInfos span.children-number span.texts').removeClass('hide');
				$(searchingDiv).find('a.passengerInfos span.children-number span.text').addClass('hide');
			}
		} else {
			$(searchingDiv).find('a.passengerInfos span.children-number').addClass('hide')
		}
		if(numberInfants >= 1){
			$(searchingDiv).find('a.passengerInfos span.infants-number').removeClass('hide');
			$(searchingDiv).find('a.passengerInfos span.infants-number span.number').removeClass('hide');
			$(searchingDiv).find('a.passengerInfos span.infants-number span.number').text(numberInfants);
			if(numberInfants == 1) {
				$(searchingDiv).find('a.passengerInfos span.infants-number span.text').removeClass('hide');
				$(searchingDiv).find('a.passengerInfos span.infants-number span.texts').addClass('hide');
			} else if(numberInfants > 1) {
				$(searchingDiv).find('a.passengerInfos span.infants-number span.texts').removeClass('hide');
				$(searchingDiv).find('a.passengerInfos span.infants-number span.text').addClass('hide');
			}
		} else {
			$(searchingDiv).find('a.passengerInfos span.infants-number').addClass('hide');
		}
		if(numberRoom >= 1) {
			//$(searchingDiv).find('a.roomInfos span.room-number').removeClass('hide');
			$(searchingDiv).find('a.roomInfos span.room-number span.number').removeClass('hide');
			$(searchingDiv).find('a.roomInfos span.room-number span.number').text(numberRoom);
			if(numberRoom == 1) {
				$(searchingDiv).find('a.roomInfos span.room-number span.text').removeClass('hide');
				$(searchingDiv).find('a.roomInfos span.room-number span.texts').addClass('hide');
			} else if (numberRoom > 1) {
				$(searchingDiv).find('a.roomInfos span.room-number span.texts').removeClass('hide');
				$(searchingDiv).find('a.roomInfos span.room-number span.text').addClass('hide');
			}
		} else {
			$(searchingDiv).find('a.roomInfos span.room-number').addClass('hide');
		}
	},
	updateTimer : function(){
		booking.seconds += 1;
		searchingDiv = $('#searchLoaderContainer #elapsed-time').text(booking.seconds);

		timerID = setTimeout("booking.updateTimer()", 1000);
	},
	buildNewPassengerPickerTable : function() {
		// remove all the age lists
		$(booking.callingDiv).find('.withSeniors table.bookingPassengers tr').remove();
		$(booking.callingDiv).find('.withChildren table.bookingPassengers tr').remove();
        $(booking.callingDiv).find('.withAdults table.bookingPassengers tr').remove();
		// set number of room to 1
		$('#roomNumSelection select option:eq(0)').attr('selected','selected');
		// reset all the selections to 2-0-0-0
		$(booking.callingDiv).find('table.bookingPassengers tr.room.room-1 td:eq(1) select option:eq(2)').attr('selected','selected');
		$(booking.callingDiv).find('table.bookingPassengers tr.room.room-1 td:eq(2) select option:eq(0)').attr('selected','selected');
		$(booking.callingDiv).find('table.bookingPassengers tr.room.room-1 td:eq(3) select option:eq(0)').attr('selected','selected');
		$(booking.callingDiv).find('table.bookingPassengers tr.room.room-1 td:eq(4) select option:eq(0)').attr('selected','selected');
		// with number of room 1, toggle unnecessary room rows
		booking.toggleRooms($('#roomNumSelection select'), 'custom');

	},
	hideDepartingCityList : function() {
		searchingDiv = $('#customDiv');
		$("label[for='packageFormCustom_seRequestObj_departureAirportCode']").addClass('hide');
		$('#packageFormCustom_seRequestObj_departureAirportCode ').addClass('hide');
		$(searchingDiv).find('span.departureDate').addClass('hide');
		$(searchingDiv).find('span.departureDateHotelOnly').removeClass('hide');
		$(searchingDiv).find('span.returnDate').addClass('hide');
		$(searchingDiv).find('span.returnDateHotelOnly').removeClass('hide');
	},
	displayDepartingCityList : function() {
		searchingDiv = $('#customDiv');
		$("label[for='packageFormCustom_seRequestObj_departureAirportCode']").removeClass('hide');
		$('#packageFormCustom_seRequestObj_departureAirportCode').removeClass('hide');
		$(searchingDiv).find('span.departureDate').removeClass('hide');
		$(searchingDiv).find('span.departureDateHotelOnly').addClass('hide');
		$(searchingDiv).find('span.returnDate').removeClass('hide');
		$(searchingDiv).find('span.returnDateHotelOnly').addClass('hide');
	},

    updatePassengerPopup : function(hasHotel) {
        searchingDiv = $('#customDiv');

		if (!hasHotel) { // hide all "room" stuff

            $(".room-number, #passengerContainerCustom h4, #passengerContainerCustom table.bookingPassengersNumbers " +
              "th:first, #passengerContainerCustom table.bookingPassengersNumbers tr.room td:first, #maxOccupancyText").addClass("hide");

            booking.buildNewPassengerPickerTable();
            booking.updateSearchPassengerInfoText('2', '0', '0', '0', '0');

            // Set Number of rooms to 1
            $("#custom_number-room").val(1);
            $("#custom_number-room").trigger("change");

            // hide the number of rooms selector, not-using class hide because of CSS conflicts
            $("#customNumberOfRoomsSelect").css('display', 'none');

		} else {
            $(".room-number, #passengerContainerCustom h4, #passengerContainerCustom table.bookingPassengersNumbers " +
              "th:first, #passengerContainerCustom table.bookingPassengersNumbers tr.room td:first, #maxOccupancyText").removeClass("hide");

            $("#customNumberOfRoomsSelect").css('display', 'block');

		}

        booking.updateSearchPassengerInfo();
    },
	addCalendarValueToUrl : function(url) {
		searchingDiv = $('div.packageWrap:visible');
		var departingdate = 'bookDeparture='+ $(searchingDiv).find('input.departing-date').attr('value');
		var returningdate = 'bookArrival='+ $(searchingDiv).find('input.returning-date').attr('value');
		var departingcity = 'bookDepartureAirportCode='+ $(searchingDiv).find('select.leaving-list option:selected').attr('value');
		var booktype = 'bookType=';
		var flexible = 'bookFlexible='+$(searchingDiv).find("input[name=datesFlexible]:checked").val();
		var executiveclass = 'executiveClassOnly='+$(searchingDiv).find("input[name=executiveClassOnly]:checked").val();

		if ($(searchingDiv).attr('id') == 'packageDiv') {
			booktype += 0;
		}
		if ($(searchingDiv).attr('id') == 'customDiv') {
			var buttonValue = $("input[name=seRequestObj.searchType]:checked").val();
			if (buttonValue == '3') {
				booktype += 3;
			} else if (buttonValue == '5') {
				booktype += 5;
			} else if (buttonValue == '6' || buttonValue == '4') {
				booktype += 6;
			} else {
				booktype += 3;
			}
		}
		url = url + '&' + departingdate + '&' + returningdate + '&' + flexible + '&' + departingcity + '&' + booktype + '&' + executiveclass + '&end=';
        return url;
	},
    showWaitingPage : function() {
		overlay.cancelURL = location.href;

		// Build the background overlay div
		backgroundDiv = document.createElement('div');
		$(backgroundDiv).addClass('overlay');
		$(backgroundDiv).css({'height':$(document).height()});

		$('body').append(backgroundDiv);
		$('div.overlay').css('opacity',0);
		$('div.overlay').show()
        $('div.overlay').animate({opacity: 0.35}, 300, "");

		$('#searchLoaderContainer').show();

		var scrollTop = window.pageYOffset || document.documentElement.scrollTop || 0;

        // ensure minimum offset
        if ( scrollTop < 100 )
            scrollTop = 100 + ($('#searchLoaderContainer').width()/2);

         var cssTopPos = $(window).scrollTop();
		 var cssLeftPos = $(window).scrollLeft();

        $("#searchLoaderContainer").css({
            'top': cssTopPos+250,
            'left': cssLeftPos+400
        });

        booking.seconds = 0;
		timerID = setTimeout("booking.updateTimer()", 1000);
    },
        showPleaseWaitPage : function(prodSearch,cityDestName, strMessage) {
        $('body').append($("#pleaseWaitContainer"));
        overlay.cancelURL = location.href;

		// Build the background overlay div
		backgroundDiv = document.createElement('div');
		$(backgroundDiv).addClass('overlay');
		$(backgroundDiv).css({'height':$(document).height()});


        if(prodSearch == 'transfer') {
          //This js part added for transfers messages to display:
          //Please leave the 2 lines below commented:
            //var transferTypeVal =  $('input[name=transferType]:checked').attr('title');
           //$('#messageIntro').html("<strong>Searching for transfers to</strong> "+cityDestName+" from "+transferTypeVal);
            $('#messageIntro').html("<strong>"+strMessage+"</strong>");
        }
		$('body').append(backgroundDiv);
		$('div.overlay').css('opacity',0);
		$('div.overlay').show();
        $('div.overlay').animate({opacity: 0.35}, 300, "");

		$('#pleaseWaitContainer').show();

		var scrollTop = window.pageYOffset || document.documentElement.scrollTop || 0;

         var cssTopPos = $(window).scrollTop();
		 var cssLeftPos = $(window).scrollLeft();

        if ($("body #insurance_content").length){
            //alert("assurances");
             $("#pleaseWaitContainer").css({
				'top': 300,
				'left': 400
			});
        }
        else{
		    $("#pleaseWaitContainer").css({
				'top': cssTopPos+250,
				'left': cssLeftPos+400
			});
        }

        booking.seconds = 0;
		timerID = setTimeout("booking.updateTimer()", 1000);
    }
}

PriceView = {
	togglePriceView : function(caller) {
		PriceView.callingDiv = $(caller).parents('div.priceView');
		var buttonPriceViewValue = $("input[name=priceView]:checked").val();
		if (buttonPriceViewValue == 'service') {
			$(PriceView.callingDiv).find('div.priceViewByService').removeClass('hide');
			$(PriceView.callingDiv).find('div.priceViewByPassenger').addClass('hide');
		} else {
			$(PriceView.callingDiv).find('div.priceViewByService').addClass('hide');
			$(PriceView.callingDiv).find('div.priceViewByPassenger').removeClass('hide');
		}
	},
	addPriceView : function(url) {
		var buttonValue = $("input[name=priceView]:checked").val();
		url = url + "&priceViewType=" + buttonValue;
		return url;

	}
}

sidebarInfo = {
	init : function(){ },
	toggle : function(caller){
		if ($(caller).parent().parent().next().css("display") == "none"){
			// show the content
			$(caller).parent().parent().next().slideDown("fast");
			$(caller).addClass("open");
		}else{
			// hide the content
			$(caller).parent().parent().next().slideUp("fast");
			$(caller).removeClass("open");
		}
	}
}

notice = {
	close : function(which){
		$(which).parent().animate({opacity: 'hide'}, 500);
	}
}

dropDown = {
	toggle : function(caller){
		$(caller).next().animate({ 'height' : 'show' }, 300, function(){
			// When the user clicks on the body, we need to close the dropdown
			$(document).bind('click', function(){
				dropDown.close();
			});
		});

		// Bind the click event on every a in the list so it acts like a select
		$(caller).next().find('a').bind('click', function(){
			dropDown.select(this);
			return false;
		})
	},
	close : function(){
		$('div.dropDown').find('ul').slideUp();

		// Remove the click event on the document
		$(document).unbind('click');
	},
	select : function(caller){
		// Set the dropdown text to the selected on as well as the go link
		$(caller).parent().parent().parent().children('a').text($(caller).text());
		$(caller).parent().parent().parent().children('a').attr('href',$(caller).attr('href'));

		dropDown.close();
	},
	goToPage : function(caller){
		// Set the button href to the selected href
		$(caller).attr('href', $(caller).parent().prev().children('a').attr('href'));

		// Go to the page if something has been selected
		if($(caller).attr('href') != "#"){
			$(document).attr('location', $(caller).attr('href'));
		}
	}
}

var INITIALIZED = false;
imageBrowser = {
	init : function(width){
        imageBrowser.inAnimation = false;
        if (INITIALIZED)
            return;

        imageBrowser.currentItem2 = parseFloat(0);
		imageBrowser.currentItem = parseFloat(0);

        $('div.imageBrowser').each(function(){
            imageBrowser.itemsCount = $(this).find('ul li').size();

            // Set the counter
            $(this).find('span.counter').text('1/' + $(this).find('ul li').length);
            $('div.fullscreenText span.counter').text('1/' + $(this).find('ul li').length);

            if ( width != null )
                imageBrowser.galleryWidth = parseFloat(width);
            else
                imageBrowser.galleryWidth = parseFloat($(this).find('ul li img').width());



            // If there's only one picture, remove the previous/newxt links
            if($('ul li').length == 1){
                $(this).find('span.photoBrowser a.photoArrowLeft').remove();
                $(this).find('span.photoBrowser a.photoArrowRight').remove();
                $(this).find('span.photoBrowser span.fRight').css({'margin-left':5})
            }

            $(this).find('ul li:eq(0)').css({position: 'absolute', left: '0px'});

            $(this).find('ul li:gt(0)').each(function(){
                $(this).css({
                    position : 'absolute',
                    right : imageBrowser.galleryWidth
                });
            });
        });

        INITIALIZED = true;
    },
	previous : function(caller){
        if(!imageBrowser.inAnimation){
            tempItemsValue = $(caller).parent().parent().parent().find('span.counter').text();
			tempCurrentItem = tempItemsValue.substr(0,$(caller).parent().parent().parent().find('span.counter').text().indexOf('/'));
			imageBrowser.currentItem = parseFloat(tempCurrentItem - 1); // -1 is cause arrays always start at 0
			imageBrowser.itemsCount = parseFloat(tempItemsValue.substr($(caller).parent().parent().parent().find('span.counter').text().indexOf('/') + 1,$(caller).parent().parent().parent().find('span.counter').text().length));

            imageBrowser.inAnimation = true;

            $(caller).parent().parent().parent().find('ul li:eq('+imageBrowser.currentItem +')').animate({ 'left': imageBrowser.galleryWidth }, 500 );

            imageBrowser.currentItem = (imageBrowser.currentItem - 1) % imageBrowser.itemsCount;
            if(imageBrowser.currentItem < 0){ imageBrowser.currentItem = imageBrowser.itemsCount - 1; }

            $(caller).parent().parent().parent().find('ul li:eq('+imageBrowser.currentItem+')').css('left',-imageBrowser.galleryWidth);
			$(caller).parent().parent().parent().find('ul li:eq('+imageBrowser.currentItem+')').animate({ 'left': 0 }, 500, function(){ imageBrowser.inAnimation = false; } );

			$(caller).parent().parent().parent().find('span.counter').text(imageBrowser.currentItem + 1 + '/' + $(caller).parent().parent().parent().find('ul li').length);
			imageBrowser.currentItem2 = imageBrowser.currentItem;
			$('div.fullscreenText span.counter').text(imageBrowser.currentItem + 1 + '/' + $(caller).parent().parent().parent().find('ul li').length);

			$("#fullscreenPhoto").width(parseFloat($('#fullPhoto img').width()));

		}
	},
	next : function(caller){
        if(!imageBrowser.inAnimation){
            tempItemsValue = $(caller).parent().parent().parent().find('span.counter').text();
			tempCurrentItem = tempItemsValue.substr(0,$(caller).parent().parent().parent().find('span.counter').text().indexOf('/'));
			imageBrowser.currentItem = parseFloat(tempCurrentItem - 1); // -1 is cause arrays always start at 0
			imageBrowser.itemsCount = parseFloat(tempItemsValue.substr($(caller).parent().parent().parent().find('span.counter').text().indexOf('/') + 1,$(caller).parent().parent().parent().find('span.counter').text().length));

            imageBrowser.inAnimation = true;

			$(caller).parent().parent().parent().find('ul li:eq('+imageBrowser.currentItem +')').animate({ 'left': -imageBrowser.galleryWidth }, 500 );

            imageBrowser.currentItem = ++ imageBrowser.currentItem % imageBrowser.itemsCount;

            $(caller).parent().parent().parent().find('ul li:eq('+imageBrowser.currentItem+')').css('left',imageBrowser.galleryWidth);
			$(caller).parent().parent().parent().find('ul li:eq('+imageBrowser.currentItem+')').animate({ 'left': 0 }, 500, function(){ imageBrowser.inAnimation = false; } );

			$(caller).parent().parent().parent().find('span.counter').text(imageBrowser.currentItem + 1 + '/' + $(caller).parent().parent().parent().find('ul li').length);
			imageBrowser.currentItem2 = imageBrowser.currentItem;
			$('div.fullscreenText span.counter').text(imageBrowser.currentItem + 1 + '/' + $(caller).parent().parent().parent().find('ul li').length);

			$("#fullscreenPhoto").width(parseFloat($('#fullPhoto img').width()));
		}
	},
	nextFull : function(caller){
            imageBrowser.fullscreenCurrentItem = ++ imageBrowser.fullscreenCurrentItem % imageBrowser.itemsCount;

            browserDetailsLocation = $(caller).parent().parent().parent().find('li:eq('+imageBrowser.fullscreenCurrentItem+') div.liFullPhoto');

			$("#fullPhoto").fadeOut('fast',function(){
                $("#fullPhoto").html($(browserDetailsLocation).find('img').clone());

				// Put the title and content
				$('#fullscreenPhoto .fullscreenText p:eq(0)').html('<strong>' + $(browserDetailsLocation).find('span.title').text() + '</strong> ( photo '+ (parseFloat(imageBrowser.fullscreenCurrentItem) + 1) +' of '+ imageBrowser.itemsCount +' )');

                var txtP = $('#fullscreenPhoto .fullscreenText p:eq(1)');
				txtP.text($(browserDetailsLocation).find('span.content').text());

                if (txtP.height() < 30) txtP.height(30);

                $("#fullPhoto").fadeIn('fast');
			});

	},
	previousFull : function(caller){
			imageBrowser.fullscreenCurrentItem = (imageBrowser.fullscreenCurrentItem - 1) % imageBrowser.itemsCount;
			if(imageBrowser.fullscreenCurrentItem < 0){ imageBrowser.fullscreenCurrentItem = imageBrowser.itemsCount - 1; }

			browserDetailsLocation = $(caller).parent().parent().parent().find('li:eq('+imageBrowser.fullscreenCurrentItem+') div.liFullPhoto');

			$("#fullPhoto").fadeOut('fast',function(){
				$("#fullPhoto").html($(browserDetailsLocation).find('img').clone());

				// Put the title and content
				$('#fullscreenPhoto .fullscreenText p:eq(0)').html('<strong>' + $(browserDetailsLocation).find('span.title').text() + '</strong> ( photo '+ (parseFloat(imageBrowser.fullscreenCurrentItem) + 1) +' of '+ imageBrowser.itemsCount +' )');
				var txtP = $('#fullscreenPhoto .fullscreenText p:eq(1)');
				txtP.text($(browserDetailsLocation).find('span.content').text());
				if (txtP.height() < 30) txtP.height(30);

				$("#fullPhoto").fadeIn('fast');
			});
	},
	openPicture : function(caller){
		imageBrowser.createFullscreen(caller);

		imageBrowser.loadPicture(caller);
	},
    openCurrentPicture : function(caller){
        imageBrowser.itemsCount = $(caller).parent().find('ul li').size();

        // this should be replace by a count of all preceding-sibling of the li element
        if ( imageBrowser.itemsCount == 1 )
            imageBrowser.currentItem = 0;
        else {
            tempItemsValue = $(caller).parent().find('span.counter').text();
            tempCurrentItem = tempItemsValue.substr(0,$(caller).parent().find('span.counter').text().indexOf('/'));
            imageBrowser.currentItem = parseFloat(tempCurrentItem - 1); // -1 is cause arrays always start at 0
        }

        imageBrowser.createFullscreen($(caller).parent().find("ul li:eq("+imageBrowser.currentItem+") a"));

        imageBrowser.loadPicture($(caller).parent().find("ul li:eq("+imageBrowser.currentItem+") a"));
    },
loadPicture : function(caller){
		// Put the photo in the container
		$("#fullPhoto").html($(caller).next().find('img').clone());

        // Put the title and content
		$('#fullscreenPhoto .fullscreenText p:eq(0)').html('<strong>' + $(caller).next().find('span.title').text() + '</strong> ( photo '+ (parseFloat(imageBrowser.fullscreenCurrentItem) + 1) +' of '+ imageBrowser.itemsCount +' )');
		var txtP = $('#fullscreenPhoto .fullscreenText p:eq(1)');
		txtP.text($(caller).next().find('span.content').text());
		if (txtP.height() < 30) txtP.height(30);

		// Find the largest image, then set it as the default width
		imageBrowser.fullScreenWidth = 300;
		imageBrowser.fullScreenHeight = 300;

		$(caller).parent().parent().parent().find('li div.liFullPhoto img').each(function(){
			imageWidth = parseFloat($(this).css('width'));
			imageHeight = parseFloat($(this).css('height'));
			if(imageWidth >= imageBrowser.fullScreenWidth){ imageBrowser.fullScreenWidth = imageWidth; }
			if(imageHeight >= imageBrowser.fullScreenHeight){ imageBrowser.fullScreenHeight = imageHeight; }
		})

		var scrollTop = window.pageYOffset || document.documentElement.scrollTop || 0;

		// Set the image browser width to the image width
		$('#fullscreenPhoto').css({
			'width': parseFloat(imageBrowser.fullScreenWidth) + 12,
			'margin-top': -(imageBrowser.fullScreenHeight/2) + scrollTop - 30,
			'margin-left': -imageBrowser.fullScreenWidth/2
		});

		// Then fade it in
		if(jQuery.browser.msie && jQuery.browser.version < 7.0){ $('select').hide(); }
		$('div.overlay').css('opacity',0);
		$('div.overlay').show();
		$('div.overlay').animate({opacity: 0.35}, 300, function(){
			$('div#fullscreenPhoto').fadeIn();
		});
	},
	createFullscreen : function(caller){
        imageBrowser.itemsCount = $(caller).parent().parent().find('li').size();

        // this should be replace by a count of all preceding-sibling of the li element
        if ( imageBrowser.itemsCount == 1 )
            imageBrowser.currentItem = 0;
        else {
            tempItemsValue = $(caller).parent().parent().parent().find('span.counter').text();
			tempCurrentItem = tempItemsValue.substr(0,$(caller).parent().parent().parent().find('span.counter').text().indexOf('/'));
			imageBrowser.currentItem = parseFloat(tempCurrentItem - 1); // -1 is cause arrays always start at 0
        }


        imageBrowser.fullscreenCurrentItem = imageBrowser.currentItem;

		// Build the background overlay div
		backgroundDiv = document.createElement('div');
		$(backgroundDiv).addClass('overlay');
		$(backgroundDiv).css({ 'height':$('body').height() });
		$(backgroundDiv).bind('click',function(){
			imageBrowser.closeFullScreen();
		});

        // Containers
		fullScreenPhotoContainer = document.createElement("div");
		$(fullScreenPhotoContainer).attr({'id':'fullscreenPhoto','class':'clearfix'});

		fullScreenPhotoInside = document.createElement("div");
		$(fullScreenPhotoInside).attr('class','fullscreenPhotoInside');

		// Close link
		fullScreenPhotoClose = document.createElement("a");
		$(fullScreenPhotoClose).attr({
			'href':'#',
			'class':'closeWindow'
		});
            $(fullScreenPhotoClose).bind('click',function(){
                imageBrowser.closeFullScreen();
                return false;
            });
			fullScreenCloseImage = document.createElement('img');
			$(fullScreenCloseImage).attr({
				'src':'/media/images/common/web/buttons/btn_X.gif',
				'width':'13',
				'height':'13',
				'alt':'Close'
			});
		$(fullScreenPhotoClose).append(fullScreenCloseImage);

		// Image Container
		imageContainer = document.createElement('div');
		$(imageContainer).attr('id','fullPhoto');

		// Previous link
		previousLink = document.createElement('a');
		$(previousLink).attr({
			'href':'#',
			'class':'arrow fLeft'
		});
			$(previousLink).bind('click',function(){
				imageBrowser.previousFull($(caller));
				return false;
			});
			previousLinkImage = document.createElement('img');
			$(previousLinkImage).attr({
				'src':'/media/images/common/web/buttons/fleche_left_Fullscreen.jpg',
				'width':'29',
				'height':'29'
			});
		$(previousLink).append(previousLinkImage);

		// Next link
		nextLink = document.createElement('a');
		$(nextLink).attr({
			'href':'#',
			'class':'arrow fRight'
		});
			$(nextLink).bind('click',function(){
				imageBrowser.nextFull($(caller));
				return false;
			});
			nextLinkImage = document.createElement('img');
			$(nextLinkImage).attr({
				'src':'/media/images/common/web/buttons/fleche_right_fullscreen.gif',
				'width':'29',
				'height':'29'
			});
		$(nextLink).append(nextLinkImage);

		// Text Container
		textContainer = document.createElement('div');
		$(textContainer).attr('class','fullscreenText');
			titleContainer = document.createElement('p');
			photoCounter = document.createElement('span');
			$(photoCounter).append(titleContainer);

			contentContainer = document.createElement('p');

		$(textContainer).append(titleContainer);
		$(textContainer).append(contentContainer);
		$(fullScreenPhotoInside).append(imageContainer).append(fullScreenPhotoClose);

		// Append the links only if there's more then 1 picture
        if(imageBrowser.itemsCount > 1){
			$(fullScreenPhotoInside).append(nextLink).append(previousLink);
		}

		$(fullScreenPhotoInside).append(textContainer);
		$(fullScreenPhotoContainer).append(fullScreenPhotoInside);

        // Append the content
		$('body').append(backgroundDiv);
		$('body').append(fullScreenPhotoContainer);
	},
	closeFullScreen : function(){
		$('div#fullscreenPhoto').animate({opacity: 0}, 300, function(){
			$('div.overlay').animate({opacity: 0}, 300, function(){
				$('div#fullscreenPhoto').remove();
				$('div.overlay').remove();
				if(jQuery.browser.msie && jQuery.browser.version < 7.0){ $('select').show(); }
			});
		});
	}
}

smallImageBrowser = {
	init : function(){
		smallImageBrowser.inAnimation = false;
		smallImageBrowser.currentItem = parseFloat(0);

		$('div.smallImageBrowser').each(function(){
			smallImageBrowser.itemsCount = $(this).find('ul li').size();
			$(this).find('span.counter').text('1/' + $(this).find('ul li').length);

			$(this).find('ul li:eq(0)').css({position: 'absolute', left: '0px'});

			// Set the counter
			smallImageBrowser.galleryWidth = parseFloat($(this).find('ul li img').width());

			$(this).find('ul li:gt(0)').each(function(){
				$(this).css({
					position : 'absolute',
					right : smallImageBrowser.galleryWidth
				});
			});
		});


	},

	previous : function(caller){
		if(!smallImageBrowser.inAnimation){
			tempItemsValue = $(caller).parent().parent().parent().find('span.counter').text();
			tempCurrentItem = tempItemsValue.substr(0,$(caller).parent().parent().parent().find('span.counter').text().indexOf('/'));
			smallImageBrowser.currentItem = parseFloat(tempCurrentItem - 1); // -1 is cause arrays always start at 0
			smallImageBrowser.itemsCount = parseFloat(tempItemsValue.substr($(caller).parent().parent().parent().find('span.counter').text().indexOf('/') + 1,$(caller).parent().parent().parent().find('span.counter').text().length));

			smallImageBrowser.inAnimation = true;

			$(caller).parent().parent().parent().find('ul li:eq('+smallImageBrowser.currentItem +')').animate({ 'left': smallImageBrowser.galleryWidth }, 500 );

			smallImageBrowser.currentItem = (smallImageBrowser.currentItem - 1) % smallImageBrowser.itemsCount;
			if(smallImageBrowser.currentItem < 0){ smallImageBrowser.currentItem = smallImageBrowser.itemsCount - 1; }

			$(caller).parent().parent().parent().find('ul li:eq('+smallImageBrowser.currentItem +')').css('left',-smallImageBrowser.galleryWidth);
			$(caller).parent().parent().parent().find('ul li:eq('+smallImageBrowser.currentItem +')').animate({ 'left': 0 }, 500, function(){ smallImageBrowser.inAnimation = false; } );

			$(caller).parent().parent().parent().find('span.counter').text(smallImageBrowser.currentItem + 1 + '/' + $(caller).parent().parent().parent().find('ul li').length);
		}
	},
	next : function(caller){
		if(!smallImageBrowser.inAnimation){
			tempItemsValue = $(caller).parent().parent().parent().find('span.counter').text();
			tempCurrentItem = tempItemsValue.substr(0,$(caller).parent().parent().parent().find('span.counter').text().indexOf('/'));
			smallImageBrowser.currentItem = parseFloat(tempCurrentItem - 1); // -1 is cause arrays always start at 0
			smallImageBrowser.itemsCount = parseFloat(tempItemsValue.substr($(caller).parent().parent().parent().find('span.counter').text().indexOf('/') + 1,$(caller).parent().parent().parent().find('span.counter').text().length));

			smallImageBrowser.inAnimation = true;

			$(caller).parent().parent().parent().find('ul li:eq('+smallImageBrowser.currentItem +')').animate({ 'left': -smallImageBrowser.galleryWidth }, 500 );

			smallImageBrowser.currentItem = ++ smallImageBrowser.currentItem % smallImageBrowser.itemsCount;

			$(caller).parent().parent().parent().find('ul li:eq('+smallImageBrowser.currentItem+')').css('left',smallImageBrowser.galleryWidth);
			$(caller).parent().parent().parent().find('ul li:eq('+smallImageBrowser.currentItem+')').animate({ 'left': 0 }, 500, function(){ smallImageBrowser.inAnimation = false; } );

			$(caller).parent().parent().parent().find('span.counter').text(smallImageBrowser.currentItem + 1 + '/' + $(caller).parent().parent().parent().find('ul li').length);
		}
	}
}

detailsContent = {
	show : function(caller) {
		if($(caller).parent().parent().find('div.detailsContent').is(':visible')){
			$(caller).prev().show();
			$(caller).hide();
			$(caller).parent().parent().find('div.detailsContent').show();
			$(caller).parent().parent().find('div.detailsContent').slideUp();
		}else{
			$(caller).next().show();
			$(caller).hide();
			$(caller).parent().parent().find('div.detailsContent').hide();
			$(caller).parent().parent().find('div.detailsContent').slideDown();
		}
	}
}

viewMoreOptions = {
    show : function(caller, divName ) {
        if($('div.' + divName).is(':visible')){
            $(caller).prev().show();
            $(caller).hide();
            $('div.' + divName).show();
            $('div.' + divName).slideUp();
        }else{
            $(caller).next().show();
            $(caller).hide();
            $('div.' + divName).hide();
            $('div.' + divName).slideDown();
        }
    }
}

viewMoreOptionsCar = {
    show : function(caller, divName ) {
        if($(caller).parent().parent().parent().parent().parent().parent().find('div.' + divName).is(':visible')){
            $(caller).prev().show();
            $(caller).hide();
            $(caller).parent().parent().parent().parent().parent().parent().find('div.' + divName).show();
            $(caller).parent().parent().parent().parent().parent().parent().find('div.' + divName).slideUp();
        }else{
            $(caller).next().show();
            $(caller).hide();
            $(caller).parent().parent().parent().parent().parent().parent().find('div.' + divName).hide();
            $(caller).parent().parent().parent().parent().parent().parent().find('div.' + divName).slideDown();
        }
    }
}

roomDescription = {
	show : function(caller, number){
		if($(caller).parent().find('div.roomDescription' + number).is(':visible')){
			$(caller).prev().show();
			$(caller).hide();
			$(caller).parent().find('div.roomDescription' + number).hide();
			$(caller).parent().find('div.roomDescription' + number).slideUp();
		}else{
			$(caller).next().show();
			$(caller).hide();
			$(caller).parent().find('div.roomDescription' + number).show();
			$(caller).parent().find('div.roomDescription' + number).slideDown();
		}
	}
}
cruiseDetailsContent = {
	show : function(caller){
		if($(caller).parent().find('div.detailsContent').is(':visible')){
			$(caller).prev().show();
			$(caller).hide();
			$(caller).parent().find('div.detailsContent').show();
			$(caller).parent().find('div.detailsContent').slideUp();
		}else{
			$(caller).next().show();
			$(caller).hide();
			$(caller).parent().find('div.detailsContent').hide();
			$(caller).parent().find('div.detailsContent').slideDown();
		}
	}
}

filter = {
	open : function(which, caller) {
		if($(which).is(':visible')){
			$(which).slideUp();
			$(caller).removeClass('filterOpen').addClass('filter');
		}else{
			$(which).slideDown();
			$(caller).removeClass('filter').addClass('filterOpen');
		}
	}
}

formCheckboxes = {
	init : function(){
		$('label.toggleContent').each(function(){
			if(! $(this).find('input[type=checkbox]').is(':checked')) $(this).next().hide();
			$(this).bind('click',function(){ $(this).next().slideToggle(); });
		});
	},
	open : function(which,caller){
		if($(caller).find('input[type=checkbox]:checked')){
		}
	}
}

vacationSearch  = {
    init : function(){
		this.leavingDate = new Date();
		this.arrivingDate = new Date();
		this.chainPrefix = "hotelChain";
		this.messageHotelAll = null;
        this.removeDuplicate = true;
        //this.destinations = this.createDestination("packageDestinationAirportCode");
        this.destinations = this.createDestination("searchDestinationAirportCode");
        if ( this.destinations != null ) {
            //vacationSearch.removeDestination('packageOriginCode', 'packageDestinationAirportCode');
            vacationSearch.removeDestination('searchOriginCode', 'searchDestinationAirportCode');
            //vacationSearch.removeDestination('originHandleSelect', 'customDestinationAirportCode');
        }

        //leavingDate = $('div.packageWrap:visible:last div.departureLeft input[type=text]:eq(0)').attr('value');
        leavingDate = $('div.departureLeft input[type=text]:eq(0)').attr('value');
        if(leavingDate) {
			leavingDate = leavingDate.split('/');
			leavingDay = leavingDate[0];
			leavingMonth = leavingDate[1];
			leavingYear = leavingDate[2];
			//set the instance leavingDate with field departing-date value
			this.leavingDate.setYear(leavingYear);
			this.leavingDate.setMonth(leavingMonth - 1);
			this.leavingDate.setDate(leavingDay);
		}
		//arrivingDate = $('div.packageWrap:visible:last div.departureLeft input[type=text]:eq(1)').attr('value');
        arrivingDate = $('div.departureLeft input[type=text]:eq(1)').attr('value');
        if(arrivingDate) {
			arrivingDate = arrivingDate.split('/');
			arrivingDay = arrivingDate[0];
			arrivingMonth = arrivingDate[1];
			arrivingYear = arrivingDate[2];
			//set the instance arrivingDate with field returning-date value
			this.arrivingDate.setYear(arrivingYear);
			this.arrivingDate.setMonth(arrivingMonth - 1);
			this.arrivingDate.setDate(arrivingDay);
		}
	},

	submitChangedWeek: function(formId, numberDays, custom) {
		var formSearch = document.getElementById(formId);
		var oneDay = 1000 * 60 * 60 * 24;
		var newTimeLeaving = this.leavingDate.getTime() + numberDays * oneDay;
		var newTimeArriving = this.arrivingDate.getTime() + numberDays * oneDay;

		this.leavingDate.setTime(newTimeLeaving);
		this.arrivingDate.setTime(newTimeArriving);
		//decrease/increase the value of field departing/returning with numberDays
		formSearch.elements['flightDepartureDate'].value = this.leavingDate.getDate() + '/' + (this.leavingDate.getMonth() + 1) + '/' + this.leavingDate.getFullYear();
		formSearch.elements['departureDate'].value = this.leavingDate.getDate() + '/' + (this.leavingDate.getMonth() + 1) + '/' + this.leavingDate.getFullYear();
		formSearch.elements['flightReturnDate'].value = this.arrivingDate.getDate() + '/' + (this.arrivingDate.getMonth() + 1) + '/' + this.arrivingDate.getFullYear();
		formSearch.elements['returnDate'].value = this.arrivingDate.getDate() + '/' + (this.arrivingDate.getMonth() + 1) + '/' + this.arrivingDate.getFullYear();
		//search again with the new value
		this.updateDaysLeft();
		booking.showSearchLoader('availability');
		formSearch.submit();
	},

	updateDaysLeft : function(){
        //leavingDate = $('div.packageWrap:visible:last div.departureLeft input[type=text]:eq(0)').attr('value');
        leavingDate = $('div.departureLeft input[type=text]:eq(0)').attr('value');
		if(leavingDate){
			leavingDate = leavingDate.split('/');
			leavingDay = leavingDate[0];
			leavingMonth = leavingDate[1];
			leavingYear = leavingDate[2];

			var leavingDate = new Date()

			leavingDate.setYear(leavingYear);
			leavingDate.setMonth(leavingMonth - 1);
			leavingDate.setDate(leavingDay);

			if(this.leavingDate) {
				this.leavingDate.setYear(leavingYear);
				this.leavingDate.setMonth(leavingMonth - 1);
				this.leavingDate.setDate(leavingDay);
			}
		}

		//arrivingDate = $('div.packageWrap:visible:last div.departureLeft input[type=text]:eq(1)').attr('value');
		arrivingDate = $('div.departureLeft input[type=text]:eq(1)').attr('value');
        if(arrivingDate){
			arrivingDate = arrivingDate.split('/');
			arrivingDay = arrivingDate[0];
			arrivingMonth = arrivingDate[1];
			arrivingYear = arrivingDate[2];

			var arrivingDate = new Date()

			arrivingDate.setYear(arrivingYear);
			arrivingDate.setMonth(arrivingMonth - 1);
			arrivingDate.setDate(arrivingDay);
			if(this.arrivingDate) {
				this.arrivingDate.setYear(arrivingYear);
				this.arrivingDate.setMonth(arrivingMonth - 1);
				this.arrivingDate.setDate(arrivingDay);
			}
		}

		if(leavingDate && arrivingDate){
			if((arrivingDate - leavingDate) > 0){
				//$('div.packageWrap:visible:last div.departureRight span.numberNights').text(vacationSearch.days_between(leavingDate,arrivingDate));
                $('div.departureRight span.numberNights').text(vacationSearch.days_between(leavingDate,arrivingDate));
			} else {
				//$('div.packageWrap:visible:last div.departureRight span.numberNights').text('#');
                $('div.departureRight span.numberNights').text('#');
            }
		} else {
			//$('div.packageWrap:visible:last div.departureRight span.numberNights').text('#');
            $('div.departureRight span.numberNights').text('#');
        }
	},
	days_between : function(date1, date2) {

	    // The number of milliseconds in one day
	    var ONE_DAY = 1000 * 60 * 60 * 24

	    // Convert both dates to milliseconds
	    var date1_ms = date1.getTime()
	    var date2_ms = date2.getTime()

	    // Calculate the difference in milliseconds
	    var difference_ms = Math.abs(date1_ms - date2_ms)

	    // Convert back to days and return
	    return Math.round(difference_ms/ONE_DAY)

	},

	refreshHotels : function ( updateSelectedHotel, doUpdateSelectedHotelChain, prefix, resetHotelChain ) {
        var array = $("select[id='" + prefix + "DestinationAirportCode']").map(function(){
            return this.options[this.selectedIndex].value;
        });
        var list = "";
        if ( array.length > 0 )
            list = array[0];
        else
            return;

        /* skip for REGION
        if ( list.indexOf( "REGION" ) != -1 )        	
        return; 
        */

        var selectedHotelCode = "";
		var selectedHotelChain = "";
		if(!resetHotelChain) {
			//if there is a hotel chain selected
			selectedHotelChain = this.checkSelectedHotelChain(prefix, doUpdateSelectedHotelChain);
        }
        //update hidden fields
		this.updateFieldsHotelChain(selectedHotelChain, prefix);

        if ( updateSelectedHotel )
            selectedHotelCode = $( "#" + prefix + "SelectedHotelCode" ).attr( "value" );
        $("#" + "searchDestinationsList").val(list);
        $("#" + "searchHotelName").attr("disabled","disabled");
        callServerWithCallback('/ajax/hotelNameListByAirportCode.do?destinationsList=' + list + '&hotelChain=' + selectedHotelChain + '&removeDuplicate=' + this.removeDuplicate, 'null',
                function(){vacationSearch.populateSelects("hotels", "searchHotelName", selectedHotelCode, selectedHotelChain );});
    },

	populateSelects : function ( AJAXHeaderKey, selectId, selectedHotelCode , selectedHotelChain) {
      var response = request.responseText;
      var cssHotelChain = "background-color: #F9F9FF; font-weight: bold; text-decoration:underline; padding: 0 10px 0 5px;";
      if (response) {
        var selects = document.getElementById( selectId );
        selects.options.length = 0;
        selects.options[0] = new Option(this.messageHotelAll, "all");
        var items = eval("("+response+")");
        for(var item in items) {
		   var opt = new Option(items[item],item);
		   if(item.indexOf(this.chainPrefix) > -1) {
				 opt.style.cssText = cssHotelChain;
		   }
            selects.options[selects.options.length] = opt;
          if ( selectedHotelCode == item ) {
            selects.options[selects.options.length - 1].selected = true;
		  } else if (selectedHotelChain == item) { //preselect the hotelChain
			selects.options[selects.options.length - 1].selected = true;
		  }
        }
        selects.disabled = false;
      }
    },

	/**
	* Refreshes the hotel list if the selected choice represents a hotel chain or all hotels.
	*/
	checkRefresh : function (idR, prefix) {
        var selectedH = $("select[id='" + idR + "'] :selected").attr("value");
        if(selectedH == "all") {
			this.refreshHotels(false, false, prefix, false);
		} else if(selectedH && (selectedH.indexOf(this.chainPrefix) > -1)) {
			this.refreshHotels(true, false, prefix, false);
        } else if(selectedH && (selectedH.indexOf(this.chainPrefix) < 0)) {
            $("#" + prefix + "SelectedHotelName").attr("value", $("select[id='" + idR + "'] :selected").text());
        }
    },

	/**
	* Updates hidden fields
	*/
	updateFieldsHotelChain : function (selectedHotelChain, prefix) {
        if(selectedHotelChain) {
			$("#" + prefix + "NeedReset").attr("value", false);
			$("#" + prefix + "OverallSelect").attr("value", selectedHotelChain.substring(this.chainPrefix.length));
		} else {
			$("#" + prefix + "NeedReset").attr("value", true);
			$("#" + prefix + "OverallSelect").attr("value", "");
		}
	},

	/**
	* Returns code of the selected hotel chain.
	*/
	checkSelectedHotelChain : function (prefix, doUpdateSelectedHotelChain) {
        var selectedHotelChain = "";
		//if there is a hotel chain selected
		if(doUpdateSelectedHotelChain) {
			var selectedHC = $( "#" + prefix + "SelectedHotelChainCode" ).attr( "value" );
			if(selectedHC) {
				selectedHotelChain = this.chainPrefix + selectedHC;
			}
		} else {
			var selectedH = $("select[id='" + prefix + "HotelName'] :selected").attr("value");
			if(selectedH && selectedH.indexOf(this.chainPrefix) > -1) {
				selectedHotelChain = selectedH;
			}
		}
		return selectedHotelChain;
	},

     /**
     * Create the initial list of destinations.
	 */
    createDestination : function (idDestination) {
       var dest = $("#" + idDestination)[0];
       if ( dest != null ) {
           var values = $.map(dest.options, function(n) {
               return [[n.value,n.text]];
           });
           return values;
       }
    },

    /**
     * Check the selected element in the departure list and remove it from destinations.
     */
    removeDestination : function (idOrigin, idDestination) {
        selectedOrigin = $("select[id='" + idOrigin + "'] :selected").attr("value");
	    newDestinations = $.grep(this.destinations, function(n, i){
 		    return (n[0].indexOf(selectedOrigin) < 0);
    	});
        selectedDestination = $("select[id='" + idDestination + "'] :selected").attr("value");
        this.createSelect($("#" + idDestination)[0], newDestinations);
        $("select[id='" + idDestination + "']").val(selectedDestination).attr("selected", "selected");
    },

    /**
     * Recreate the list object from an array.
     */
    createSelect : function (el, items) {
        el.options.length = 0;
        $.each(items, function () {
            el.options[el.options.length] = new Option(this[1], this[0]);
        });
    },

    synchronizeDropDown : function ( firstId, secondId ) {
        first = "#" + firstId ;
        second = "#"+ secondId ;
        $(second).val($(first).val());
    }

}

radioButtons = {
	toggle : function(which,value){
		if(value){
			$(which).slideDown();
		}else{
			$(which).slideUp();
		}
	}
}

locationChooser = {
	open : function(caller, choiceULname){
		largestA = 0;
        ULName = 'locationChoices';
        if ( choiceULname )
            ULName = choiceULname;

		if(!$(caller).hasClass('selected')){
			$(caller).addClass('selected')
			$('#' + ULName ).show();
			$('#' + ULName +' li a').each(function(){ if($(this).width() >largestA){ largestA = $(this).width() } });

			if(!jQuery.browser.msie || (jQuery.browser.msie && jQuery.browser.version == "7.0")){
				/*$(caller).css('width', largestA); */
				/*$('#locationChoices').css('width', largestA - 2);*/
			}else{
				/*$(caller).css('width', $('#locationChoices').width());  */
				$(caller).addClass('selected')
			}
		}else{
			$(caller).removeClass('selected')
			$('#' + ULName ).hide();
		}
	}
}

tabs = {
	init : function(){

		$('body,html').css({'height':'100%'});

		tabs.delay = 500; // in milliseconds
		tabs.timerRunning = false;
		tabs.previousSet = false;
		tabs.previousTab = "";
		tabs.toClose = "";

		tabs.containerHeight = parseFloat($("#homeContainer").height());
		$('#homeContainer').css('overflow','hidden');

		// Set the divs height in CSS, else the slider won't be able to recuperate it.
		$("#content").css({
			'top' : tabs.containerHeight,
			'height' : $("#content").height()
		});

		$("#goingTo").css({
			'top' : tabs.containerHeight,
			'height' : $("#goingTo").height()
		});

		$("#interrestedIn").css({
			'top' : tabs.containerHeight,
			'height' : $("#interrestedIn").height()
		});

        var manualSuggest = $("#suggest").height() - 34; // adjusted so that the promotion-boxes can be below the 'tabs'

        $("#suggest").css({
			'top' : tabs.containerHeight,
			'height' : manualSuggest
		});
	},
	animate : function(which,caller){
		if(tabs.timerRunning){
			clearTimeout(myTimer);
		}
	 	myTimer = setTimeout('tabs.slideThem("'+which+'","'+$(caller).attr('id')+'");',tabs.delay);
		tabs.timerRunning = true;

		tabs.toBringDown = $(caller).parent();

		$(caller).parent().parent().bind('mouseout',function(){
			if(tabs.timerRunning){ clearTimeout(myTimer); }

			tabs.over = false;
			myTimer = setTimeout("tabs.checkOver()",150);
			tabs.timerRunning = true;
		});

		$(caller).parent().parent().bind('mouseover',function(){
			tabs.over = true;
		});
	},
	slideThem : function(which,caller){
		// Hide the hover that
		$('#'+ caller).parent().css({'visibility':'hidden'});

		if(tabs.toClose != "" && (tabs.toClose.attr('id') != $('#'+which).attr('id'))){
			$('#homeContainer').css('overflow','hidden');
			$('div#passengerContainer').hide();
			tabs.toClose.animate({top:tabs.containerHeight},function(){
				$(this).hide();
				overlay.close('passengerContainer'); /* Need to make sure the passenger container is closed */
				tabs.toShow.css({'visibility':'visible'});
			});
		}

		// Get the distance the tab needs to move
		var move = tabs.containerHeight - parseFloat($('#'+which).css('height'));

		tabs.toClose = $('#'+which);
		$('#'+which).show();
		$('#'+which).animate({top: move},function(){
			tabs.toShow = $("#"+ caller).parent();
		});
		$('#'+which).bind('mouseover',function(){
			if(tabs.timerRunning){
				clearTimeout(myTimer);
			}
			tabs.over = true;
			myTimer = setTimeout("tabs.checkOver()",150);
			tabs.timerRunning = true;
		});

		$('#'+which).bind('mouseout',function(){
			tabs.over = false;
		});
	},
	checkOver: function(){
		if(!tabs.over){
			$('#homeContainer').css('overflow','hidden');
			if(tabs.toClose != ""){
				$('div#passengerContainer').hide();
				tabs.toClose.animate({top:tabs.containerHeight},function(){
					$(this).hide();
					overlay.close('passengerContainer'); /* Need to make sure the passenger container is closed */
					tabs.toShow.css({'visibility':'visible'});
				});
			}
		}
	}
}
bookingsSearch = {
	toggleSearch : function(val) {
		radioButtons.toggle('#advancedSearch',val);
		if (val) {
			$('#advancedSearchToggle').hide();
			$('#basicSearchToggle').show();
		} else {
			$('#basicSearchToggle').hide();
			$('#advancedSearchToggle').show();
		}
		$('#advSrch').val(val ? 'true':'false');
		return false;
	},

	spreadBookingType : function(fromFormId, toFormId) {
		var from = document.getElementById(fromFormId);
		var to = document.getElementById(toFormId);
		if (to) {
			for (var i=0 ; i < from.pastBookingType.length ; i++) {
				to.pastBookingType[i].checked = from.pastBookingType[i].checked;
				to.pastBookingType[i].label.className = from.pastBookingType[i].label.className;
			}
		}
		return false;
	}
}

////////////////////////////////////////////////////////
// BASIC COOKIES SCRIPT
////////////////////////////////////////////////////////

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

////////////////////////////////////////////////////////

function closeBannerMessage() {
	createCookie('bannerMessage', 'closed')
    $("#bannerBox").animate({'opacity': 0}, 1800);
}

////////////////////////////////////////////////////////
// BEGIN POPUP UTILS
////////////////////////////////////////////////////////

function getWindowPosition() {
    var scrolledX, scrolledY;
    if (self.pageYOffset) {
        scrolledX = self.pageXOffset;
        scrolledY = self.pageYOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {
        scrolledX = document.documentElement.scrollLeft;
        scrolledY = document.documentElement.scrollTop;
    } else if (document.body) {
        scrolledX = document.body.scrollLeft;
        scrolledY = document.body.scrollTop;
    }

    var windowPosition = new Object();
    windowPosition.xOffset = scrolledX;
    windowPosition.yOffset = scrolledY;
    return windowPosition;
}

function getWindowSize() {
    var windowSize = new Object();
    var myWidth = 0, myHeight = 0;
    if (typeof( window.innerWidth ) == 'number') {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if (document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight )) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if (document.body && ( document.body.clientWidth || document.body.clientHeight )) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }


    windowSize.width = myWidth;
    windowSize.height = myHeight;

    return windowSize;
}

function centerDiv(divToCenter) {
    var windowSize = getWindowSize();
    var windowPosition = getWindowPosition();

    divToCenter.css({
        'top' : (windowSize.height / 2 + windowPosition.yOffset - divToCenter.height() / 2) + 'px',
        'left' : (windowSize.width / 2 + windowPosition.xOffset - divToCenter.width() / 2) + 'px'
    });
}

function dimStage(showThisAfter) {
    backgroundDiv = document.createElement('div');

    $('body').append($('#' + showThisAfter));

    centerDiv($("#" + showThisAfter));

    $(backgroundDiv).addClass('overlay');
    $(backgroundDiv).css({'height':$(document).height()});
    $('body').append(backgroundDiv);
    $('div.overlay').css('opacity', 0);
    $('div.overlay').show();

    $('div.overlay').animate({opacity: 0.35}, 300, "", function() {
        $('#' + showThisAfter).css('display', 'block').animate({opacity: 1}, 300, "");
    });
}

function relightStage(removeThisFirst) {
    $('#' + removeThisFirst).append($('#safeSpot'));

    $('#' + removeThisFirst).animate({opacity: 0}, 300, "", function() {
        $(this).css('display', 'none');
        $('div.overlay').animate({opacity: 0}, 300, "", function() {
            $(this).remove();
        });
    });
}

////////////////////////////////////////////////////////
// END POPUP UTILS
////////////////////////////////////////////////////////

function getY( oElement ) {
    var iReturnValue = 0;
    while( oElement != null ) {
        iReturnValue += oElement.offsetTop;
        oElement = oElement.offsetParent;
    }
    return iReturnValue;
}

function distanceFromTopOfWindow(what) {
    return getY( $('#' + what).get(0) );
}



/**Cath**/

  function showFlightInfo( identifier ){

      $('#flight_info_details' + identifier).show();
      //alert("flightInfo");

      return false
  }

function backtoTop(){
    $(window).scrollTop(0);
    $(window).scrollLeft(0);
}


function submitOnce(){
    //alert('submitOnce function');
    $(".submit").click(function () {
      //alert('click');
      var parentID=$(this).parents('form').attr('id');
        if(this.disabled){
            //alert('is disabled');
            return false;
        }
        else{
            //alert('not disabled');
            if((parentID!='packageForm')&&(parentID!='packageForm-custom')){
                $(this).attr('disabled', 'disabled');
                 //alert('disabled');
                $(this).parents('form').submit();
                return true;
            }
        }
    });
}

function generateCopyrightYear(section){
    var today = new Date()
    var year = today.getYear()
    if (year < 1900){
     year = year + 1900;
    }
    $(section).html(year);
}

/*was hardcoded in destination page*/
function lien(mySel) {
    parent.location.href = mySel.options[mySel.selectedIndex].value;
}

/*hover effect on topmenu*/
$(function(){

    $("ul#topNavMenu li").hover(function(){
				if(!($(this).hasClass('header_menu_divider'))){
        	$(this).addClass("hover");
        	$('ul:first',this).css('visibility', 'visible');
				}

    }, function(){

        $(this).removeClass("hover");
        $('ul:first',this).css('visibility', 'hidden');

    });
});

function setRange(optionsArr, testLink) {
	var tempArray=new Array();
	tempArray=optionsArr;
	//alert(tempArray[0]);
	//alert($(testLink).text());
	$(testLink).text($(testLink).text() == tempArray[3] ? tempArray[4] : tempArray[3]);
	var start=tempArray[0];
	var end=start+tempArray[5];

	if(end>tempArray[2]){
		end=tempArray[2];
	}
	var prefix=tempArray[1];
	for(x=start; x<=end; x++){
		$("#"+prefix+x).toggle();
	}
}

/*fake popup*/

$(function() {
        $(".helpPopUp").live('click', function(event) {
            $(this).addClass("selected").parent().append('<div class="messagepop pop"><a class="close" href="/">Close</a></p></form></div>');
            $(".pop").slideFadeToggle() ;
            $("#email").focus();
            return false;
        });

        $(".close").live('click', function() {
            $(".pop").slideFadeToggle();
            $(".helpPopUp").removeClass("selected");
            return false;
        });
    });

    $.fn.slideFadeToggle = function(easing, callback) {
        return this.animate({ opacity: 'toggle', height: 'toggle' }, "fast", easing, callback);
    };

/* December 2010 Cars section -new- */
	
	function showHide(Tlink, tagId) {
       
	//shows hides html block:
		if( $(tagId).is(':visible') )  {
			$(tagId).slideUp();
		} else {
			$(tagId).slideDown();
		}
	}

    function showHideElement(Tlink, tagId, messageHtmlView, messageHtmlhide) {
    //expand collapse and change the message to display:
    //Customizable:
        if( $(tagId).is(':visible') )  {
            $(tagId).slideUp();
            $(Tlink).html(messageHtmlView);
        } else {
            $(tagId).slideDown();
            $(Tlink).html(messageHtmlhide);
        }
    }

    /* May 2011 */
    function closeOverlay() {
        //Close the overlay popup:
         /*$('#overlayContainer').css("display","none");
         $('.overlay').css("display","none");
         $('.overlayContainer').css("display","none");
         */
        overlay.close('overlayContainer');
		return false;
    }


