$(document).ready(function(){
    $('#password').showPassword("#show-password");
	externalLinks();
    
    $(".close-bad-browser").click(function(){
        $(".bad-browser").hide();
        var expire = new Date();
        expire.setTime(expire.getTime() + 3600000*24*360);
        document.cookie = 'hide-bad-browser=true; expires='+expire.toGMTString();

    });

    // my account drop-down menu
    $("#myaccount").hover(function(){
        $(this).addClass("hover");
        $('ul:first',this).css('visibility', 'visible');
    }, function(){
        $(this).removeClass("hover");
        $('ul:first',this).css('visibility', 'hidden');
    });
	
	$("#navigation #more").hover(function(){
        $(this).addClass("hover");
        $('ul:first',this).css('visibility', 'visible');
    }, function(){
        $(this).removeClass("hover");
        $('ul:first',this).css('visibility', 'hidden');
    });

    // tabs for "Book your trip online" forms
    $('#tabs').tabs();

    // show-hide return date for round-trip/one-way in flight search form
    $('.search-round-trip').click(function(){ $('.extra.half').attr('class', 'extra half show');});
    $('.search-one-way').click(function(){ $('.extra.half').attr('class', 'extra half hide');});

    // show-hide advanced options for flight search form
    $("#actions-adv-show").click(function(){$("#FlightsAdvancedOptions").show(); $("#actions-adv-hide").attr('class', 'advancedOpen show'); $(this).attr('class', 'advanced hide'); return false;})
    $("#actions-adv-hide").click(function(){$("#FlightsAdvancedOptions").hide(); $("#actions-adv-show").attr('class', 'advanced show'); $(this).attr('class', 'advancedOpen hide'); return false;})

    // show-hide advanced options for cars search form
    $("#car-actions-adv-show").click(function(){$("#CarsAdvancedOptions").show(); $("#car-actions-adv-hide").attr('class', 'advancedOpen show'); $(this).attr('class', 'advanced hide'); return false;})
    $("#car-actions-adv-hide").click(function(){$("#CarsAdvancedOptions").hide(); $("#car-actions-adv-show").attr('class', 'advanced show'); $(this).attr('class', 'advancedOpen hide'); return false;})

	// show-hide advanced options for hotels - abroad search form
    $("#hotel-actions-adv-show").click(function(){$("#HotelsAdvancedOptions").show(); $("#hotel-actions-adv-hide").attr('class', 'advancedOpen show'); $(this).attr('class', 'advanced hide'); return false;})
    $("#hotel-actions-adv-hide").click(function(){$("#HotelsAdvancedOptions").hide(); $("#hotel-actions-adv-show").attr('class', 'advanced show'); $(this).attr('class', 'advancedOpen hide'); return false;})
    
	// show-hide advanced options for packages - abroad search form
	$("#packages-extern-actions-adv-show").click(function(){$("#PackagesExternAdvancedOptions").show(); $("#packages-extern-actions-adv-hide").attr('class', 'advancedOpen show'); $(this).attr('class', 'advanced hide'); return false;})
    $("#packages-extern-actions-adv-hide").click(function(){$("#PackagesExternAdvancedOptions").hide(); $("#packages-extern-actions-adv-show").attr('class', 'advanced show'); $(this).attr('class', 'advancedOpen hide'); return false;})

	// show-hide advanced options for packages - domestic search form
	$("#packages-domestic-actions-adv-show").click(function(){$("#PackagesDomesticAdvancedOptions").show(); $("#packages-domestic-actions-adv-hide").attr('class', 'advancedOpen show'); $(this).attr('class', 'advanced hide'); return false;})
    $("#packages-domestic-actions-adv-hide").click(function(){$("#PackagesDomesticAdvancedOptions").hide(); $("#packages-domestic-actions-adv-show").attr('class', 'advanced show'); $(this).attr('class', 'advancedOpen hide'); return false;})
    
	
    // modify the number of infants and childs if the number of adults is changed
    $('#External_FlightFareSearch_NumberOfAdults').change(function(){
        var n = $('#External_FlightFareSearch_NumberOfAdults option:selected').attr('value');
        var strChilds = '<option value="0">0</option>'; 
        var strInfants = '<option value="0">0</option>'; 
        for (var i = 1; i <= 6-n; i++) {
            strChilds += '<option value="'+i+'">'+i+'</option>';
        }
        for (var i = 1; i <= n; i++) {
            strInfants += '<option value="'+i+'">'+i+'</option>';
        }

        $("#External_FlightFareSearch_NumberOfInfants").html(strInfants);
        $("#External_FlightFareSearch_NumberOfChilds").html(strChilds);
    });

    // autocomplete for airports in flight search form
    function format(item) {
        if (item.airport_code === '' && item.airport_name === '') {
            return item.city_name + ", " + item.country_name + " - (" + item.city_code + ") ";
        } 
        return item.city_name + ", " + item.country_name + " - " + item.airport_name + " (" + item.airport_code + ") ";
    }
    $(".airport-search").autocomplete(base_url+"/flights/search-airport/", {
        multiple: false,
        dataType: "json",
        minChars: 2,
        max: 5,
        parse: function(data) {
            return $.map(data, function(row) {
                if (row.airport_code === '' && row.airport_name === '') {
                    var inputValue = row.city_code;
                } else {
                    var inputValue = row.airport_code;
                }
                return {data: row, value: inputValue, result: inputValue}
            });
        },
        formatItem: function(item) { return format(item); }
    });

    // autocomplete for airlines in flight search form
    $(".airline-search").autocomplete(base_url+"/flights/search-airline/", {
        multiple: true,
        multipleSeparator: ',',
        dataType: "json",
        minChars: 2,
        max: 5,
        parse: function(data) {
            return $.map(data, function(row) {
                return {
                    data: row,
                    value: row.airline_code,
                    result: row.airline_code
                }
            });
        },
        formatItem: function(item) {
            return item.airline_name + ' (' + item.airline_code + ')';
        }
    });

    // autocomplete for cities in hotel search form
    $(".hotel-city-search").autocomplete(base_url+"/hotels/search-city/", {
        multiple: false,
        dataType: "json",
        minChars: 2,
        max: 20,
        parse: function(data) {
            return $.map(data, function(row) {
                return {
                    data: row,
                    value: row.city + ', ' + row.country,
                    result: row.city + ', ' + row.country
                }
            });
        },
        formatItem: function(item) {
            return item.city + ', ' + item.country;
        }
    });    

    // autocomplete for airports in car search form
    $(".car-search").autocomplete(base_url+"/flights/search-airport/", {
        multiple: false,
        dataType: "json",
        minChars: 2,
        max: 5,
        parse: function(data) {
            return $.map(data, function(row) {
                if (row.airport_code === '' && row.airport_name === '') {
                    var inputValue = row.city_code;
                } else {
                    var inputValue = row.airport_code;
                }
                return {data: row, value: inputValue, result: inputValue}
            });
        },
        formatItem: function(item) { return format(item); }
    });
    
    // date picker for flight search form
    Date.firstDayOfWeek = 1;
    Date.format = 'dd.mm.yyyy';
    var d = new Date();
    $('.date-pick-flights').datePickerMultiMonth({
        showYearNavigation: false,
        startDate: d.addDays(3).asString(),
        clickInput: true     
    });

    /*
    $('.departure-date').bind(
        'dpClosed',
        function(e, selectedDates) {
            var d = selectedDates[0];
            if (d) {
                d = new Date(d);
                
                console.log(d.addDays(1).asString());
                $('.return-date').dpSetStartDate(d.addDays(1).asString());
            }
        }
    );
    $('.return-date').bind(
        'dpClosed',
        function(e, selectedDates) {
            var d = selectedDates[0];
            if (d) {
                d = new Date(d);
                console.log(d);
                $('.departure-date').dpSetEndDate(d.addDays(-1).asString());
            }
        }
    );
    */

    // date picker for hotel search form
    $('.date-pick-hotels').datePickerMultiMonth({
        showYearNavigation: false,
        clickInput: true
    });
    
	$('#Internal_HotelSearch_CheckinDate').bind(
			'dpClosed',
			function(e, selectedDates)
			{
				var d = selectedDates[0];
				if (d) {
					d = new Date(d);
					var newDate = d.addDays(1).asString();
					//$('#Internal_HotelSearch_CheckoutDate').dpmmSetStartDate(newDate);
					$('#Internal_HotelSearch_CheckoutDate').dpSetSelected(newDate);
				}
			}
	);

    $("#Internal_HotelSearch_CheckoutDate").change(function(){
    	var date1 = $("#Internal_HotelSearch_CheckinDate").val().replace('/\//g','-');
    	var date2 = $("#Internal_HotelSearch_CheckoutDate").val().replace('/\//g','-');
    	 $.ajax({
    		   type: "get",
    		   url: base_url+"/hotels/get-number-of-nights-between/",
    		   data: "date1="+date1+"&date2="+date2,
    		   success: function(html){
    		     $("#hotel_nights").html(html);
    		   }
   		 });
    });
    
	$('#External_FlightFareSearch_DepartureDate').bind(
			'dpClosed',
			function(e, selectedDates)
			{
				var d = selectedDates[0];
				if (d) {
					d = new Date(d);
					var newDate = d.addDays(1).asString();
					$('#External_FlightFareSearch_ReturnDate').dpSetSelected(newDate);
				}
			}
	);    
    
	$('#External_CarSearch_PickupDate').bind(
			'dpClosed',
			function(e, selectedDates)
			{
				var d = selectedDates[0];
				if (d) {
					d = new Date(d);
					var newDate = d.addDays(1).asString();
					$('#External_CarSearch_DropOffDate').dpSetSelected(newDate);
				}
			}
	); 
		
    $('.date-pick-merlin-packages').datePickerMultiMonth({
        showYearNavigation: false,
        clickInput: true
    });
    
	$('.date-pick-merlin-packages').bind(
			'dpClosed',
			function(e, selectedDates)
			{
				var d = selectedDates[0];
				if (d) {
					d = new Date(d);
                                        /*
					var day = d.getDate();
					if( day < 10 ){	day = '0' + day; }
					var month = d.getMonth() + 1;
					if( month < 10 ){ month = '0' + month; }					
					var year = d.getFullYear();
					
					$(this).val(day+'.'+month+'.'+year);
                                        */
					
					if($(this).attr('id') == 'calInput1')
					{
						d = new Date(d);
						var newDate = d.addDays(7).asString();
						
                                                /*
						var day = d.getDate();
						if( day < 10 ){	day = '0' + day; }
						var month = d.getMonth() + 1;
						if( month < 10 ){ month = '0' + month; }					
						var year = d.getFullYear();
                                                */
						
						$('#calInput2').dpSetSelected(newDate);	
						//$('#calInput2').val(day+'.'+month+'.'+year);						
					}
					
				}
			}
	);     
		
	
	$('#InsuranceStart').bind(
			'dpClosed',
			function(e, selectedDates)
			{
				var d = selectedDates[0];
				if (d) {
					d = new Date(d);
					var newDate = d.addDays(1).asString();
					$('#InsuranceEnd').dpSetSelected(newDate);
				}
			}
	); 	
	
    // hide/show filters in hotels search
    $("a.change-filter-visibility").click(function(){
        var c = $(this).attr('class');
        var i = $(this).attr('id').split('-');
        if (c === 'change-filter-visibility expand') {
            $("#extender-"+i[1]).attr('class', 'expander hide');
            $("#filter-"+i[1]).attr('class', 'change-filter-visibility collapse');
            document.cookie = 'filter['+i[1]+']=hide';
        } else if (c === 'change-filter-visibility collapse') {
            $("#extender-"+i[1]).attr('class', 'expander show');
            $("#filter-"+i[1]).attr('class', 'change-filter-visibility expand');
            document.cookie = "filter["+i[1]+"]=show";
        }
        return false;
    });

	// show-hide company info - profile
    $('#companyAccount').click(function(){ $('#companyInfo').attr('class', 'show'); $('#personal').attr('class', 'hide'); });
    $('#personalAccount').click(function(){ $('#companyInfo').attr('class', 'hide'); $('#personal').attr('class', 'show'); });
	
   
	
	function externalLinks() 
	{  
		if (!document.getElementsByTagName) return;  
		var anchors = document.getElementsByTagName("a");  
		for (var i=0; i<anchors.length; i++) {  
			var anchor = anchors[i];  
			if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
			{
				anchor.target = "_blank";
			}
		}  
	}
	
	
	$('a[rel*=facebox]').facebox();
	
	$("div#hero").carousel( { direction: "vertical", autoSlide: true, loop: true, autoSlideInterval: 6000 } );
	//$("div#hero-full").carousel( { direction: "vertical", pagination: true, autoSlide: true, loop: true, autoSlideInterval: 6000 } );
	$("div#featured-full").carousel( { direction: "horizontal", pagination: true, autoSlide: true, loop: true, autoSlideInterval: 6000 } );
	$("div#deals-hero").carousel( { direction: "horizontal", pagination: true, autoSlide: true, loop: true, autoSlideInterval: 6000 } );
	$("div#deals-hero2").carousel( { direction: "horizontal", pagination: true, autoSlide: true, loop: true, autoSlideInterval: 6000 } );


	$(".carousel-container").jCarouselLite({
    btnNext: ".controls .next",
    btnPrev: ".controls .prev",
	auto: 6000,
    speed: 800
	});
	
	$(".search-package").click(function(){
		if( $(this).val() == 'Abroad' )
		{
			$("#packageInternational").toggleClass('hide',false);
			$("#packageDomestic").toggleClass('hide',true);
		}
		else
		{
			$("#packageInternational").toggleClass('hide',true);
			$("#packageDomestic").toggleClass('hide',false);
		}
	});
	
	$(".search-hotel").click(function(){
		if( $(this).val() == 'Abroad' )
		{
			$("#HotelInternational").toggleClass('hide',false);
			$("#HotelDomestic").toggleClass('hide',true);
		}
		else
		{
			$("#HotelInternational").toggleClass('hide',true);
			$("#HotelDomestic").toggleClass('hide',false);
		}
	});
	

});

