// Prevent selection of invalid dates through the select controls 
function checkLinkedDays() { 
	var daysInMonth = $.datepick.daysInMonth($('#selectedYear').val(), $('#selectedMonth').val());
	$('#selectedDay option:gt(27)').attr('disabled', false);
	$('#selectedDay option:gt(' + (daysInMonth - 1) +')').attr('disabled', true);
	if ($('#selectedDay').val() > daysInMonth) {
		$('#selectedDay').val(daysInMonth);
	}
}

// Update three select controls to match a datepicker selection 
function updateSelected(dates) { 
	$('#selectedMonth').val(dates.length ? dates[0].getMonth() + 1 : ''); 
	$('#selectedDay').val(dates.length ? dates[0].getDate() : ''); 
	$('#selectedYear').val(dates.length ? dates[0].getFullYear() : ''); 
	checkLinkedDays(); // Disable invalid days 
}

function CHcheckLinkedDays() { 
	var daysInMonth = $.datepick.daysInMonth($('#CHselectedYear').val(), $('#CHselectedMonth').val());
	$('#CHselectedDay option:gt(27)').attr('disabled', false);
	$('#CHselectedDay option:gt(' + (daysInMonth - 1) +')').attr('disabled', true);
	if ($('#CHselectedDay').val() > daysInMonth) {
		$('#CHselectedDay').val(daysInMonth);
	}
}

// Update three select controls to match a datepicker selection 
function CHupdateSelected(dates) { 
	$('#CHselectedMonth').val(dates.length ? dates[0].getMonth() + 1 : ''); 
	$('#CHselectedDay').val(dates ? dates[0].getDate() : ''); 
	$('#CHselectedYear').val(dates.length ? dates[0].getFullYear() : ''); 
	CHcheckLinkedDays(); // Disable invalid days 
} 

$(document).ready(function() {
	
	// Hide featured city menu items
    $(window).unload(function(){
		$('ul#city-menu').hideSuperfishUl();
	});

	// Show featured city menu items
	$('ul#city-menu').superfish({
		delay:       0,
		animation:   {opacity:'show',height:'show'},
		speed:       'fast',
		autoArrows:  false,
		dropShadows: false 	
	});

	// Home Banner Cycle
	if ($('#home-banner').length>0) {
	    $('#home-banner').cycle({ 
    	    fx:     'fade',
        	speed:	1200,
	        pager:	'#banner-pager'
    	});
    }
    
   // Home Featured Cities Carousel
	if ($('#featured-cities').length>0) {
    	$('#featured-cities').jcarousel({
        	vertical: true,
	        scroll: 	1,
    	    auto: 		4,
        	animation: 	"slow",
	        wrap:		"circular"
	    });
	}
	
	// Hotel Photos Carousel
	if ($('.photo-carousel').length>0) {
		// Hotel Photos Carousel Next 
		$('.carousel-next-image').click(function(){
			var carousel = $(this).parents('.photo-carousel').find('ul');
			var scroll = carousel.scrollLeft();
			var x = 0;
			carousel.find('li').each(function(){
				if (x==0 && $(this).position().left>1) x = $(this).position().left;
			});
			carousel.animate({ scrollLeft: scroll+x }, 'fast');
			return false;
		});
		// Hotel Photos Carousel Previous
		$('.carousel-prev-image').click(function(){
			var carousel = $(this).parents('.photo-carousel').find('ul');
			var scroll = carousel.scrollLeft();
			var x = 0;
			carousel.find('li').each(function(){
				if ($(this).position().left<0) x = $(this).position().left;
			});
			carousel.animate({ scrollLeft: scroll+x }, 'fast');
			return false;
		});
		// Hotel Photos Fancybox
		$("a.hotel-photos").fancybox({
			'transitionIn'	:	'elastic',
			'transitionOut'	:	'elastic',
			'speedIn'		:	600, 
			'speedOut'		:	200, 
			'overlayShow'	:	true,
			'overlayOpacity': 	0.5,
			'overlayColor'	:	'#2f2f2f'
		});		
	}
	
	// If Hotel Search
	if ($('#hotel-search').length>0) {
		// Country / City drop down
		$('#country').change(function () {
			if (this.value == '') {
				return false;
			}
			// Remove city options as we want to add new ones
        	$('#city option').remove();
			$('#city').append('<option>Loading...</option>');
			$.getJSON('/city/getCities', {regionId: this.value}, function (data) {
				$('#city option').remove();
				var option = $('<option></option>').val('').html('Please select');
				$('#city').append(option);
				jQuery.each(data, function (index, value) {
					option = $('<option></option>').val(index).html(value);
					$('#city').append(option);
				});
			});
		});
		
		
      // Datepicker
		$('#selectedDay,#selectedMonth,#selectedYear').change(checkLinkedDays);
		
		$('#arrival_date').datepick({
			onSelect: updateSelected,
			showOnFocus: false,
			dateFormat: 'dd/mm/yyyy',
			defaultDate: new Date(),
			selectDefaultDate: true,
			showTrigger: '#calImg'		
		});
		
		// Update datepicker from three select controls
		$('#selectedMonth,#selectedDay,#selectedYear').change(function() {
			$('#arrival_date').datepick('setDate', new Date($('#selectedYear').val(), $('#selectedMonth').val() - 1, $('#selectedDay').val()));
		});
		
		$('tr.room2').hide();
		$('tr.room3').hide();
		$('tr.room4').hide();
		$('tr.room5').hide();			
		
		$('tr#room1_child_ages').hide();
		$('tr#room1_child1').hide();
		$('tr#room1_child2').hide();
		$('tr#room1_child3').hide();			
		$('tr#room2_child_ages').hide();
		$('tr#room2_child1').hide();
		$('tr#room2_child2').hide();
		$('tr#room2_child3').hide();
		$('tr#room3_child_ages').hide();
		$('tr#room3_child1').hide();
		$('tr#room3_child2').hide();
		$('tr#room3_child3').hide();
		$('tr#room4_child_ages').hide();
		$('tr#room4_child1').hide();
		$('tr#room4_child2').hide();
		$('tr#room4_child3').hide();
		$('tr#room5_child_ages').hide();
		$('tr#room5_child1').hide();
		$('tr#room5_child2').hide();
		$('tr#room5_child3').hide();			
	
		$("#rooms").change( function() {
			$('tr.room2').hide();	
			$('tr#room2_child_ages').hide();
			$('#room2_children').val('0');
			$('tr.room3').hide();	
			$('tr#room3_child_ages').hide();
			$('#room3_children').val('0');
			$('tr.room4').hide();	
			$('tr#room4_child_ages').hide();
			$('#room4_children').val('0');
			$('tr.room5').hide();	
			$('tr#room5_child_ages').hide();
			$('#room5_children').val('0');
			
			if ($(this).val() == 2) {
				$('tr.room2').show();
			}													
			if ($(this).val() == 3) {
				$('tr.room2').show();
				$('tr.room3').show();					
			}
			if ($(this).val() == 4) {
				$('tr.room2').show();	
				$('tr.room3').show();	
				$('tr.room4').show();									
			}
			if ($(this).val() == 5) {
				$('tr.room2').show();	
				$('tr.room3').show();	
				$('tr.room4').show();	
				$('tr.room5').show();													
			}	
			//$(".room" + $(this).val()).show(); 
		});
		$("#room1_children").change( function() {
			$('#room1_child_ages').show();
			if ($(this).val() == 0) {
				$("#room1_child1").hide();
				$("#room1_child2").hide();
				$("#room1_child3").hide();
				$('#room1_child_ages').hide();		
			}		
			if ($(this).val() == 1) {
				$("#room1_child1").show();
				$("#room1_child2").hide();
				$("#room1_child3").hide();			
			}
			if ($(this).val() == 2) {
				$("#room1_child1").show();
				$("#room1_child2").show();
				$("#room1_child3").hide();
			}		
			if ($(this).val() == 3) {
				$("#room1_child1").show();
				$("#room1_child2").show();
				$("#room1_child3").show();
			}	
		});
		$("#room2_children").change( function() {
			$('#room2_child_ages').show();
			if ($(this).val() == 0) {
				$("#room2_child1").hide();
				$("#room2_child2").hide();
				$("#room2_child3").hide();			
				$('#room2_child_ages').hide();
			}		
			if ($(this).val() == 1) {
				$("#room2_child1").show();
				$("#room2_child2").hide();
				$("#room2_child3").hide();			
			}
			if ($(this).val() == 2) {
				$("#room2_child1").show();
				$("#room2_child2").show();
				$("#room2_child3").hide();
			}		
			if ($(this).val() == 3) {
				$("#room2_child1").show();
				$("#room2_child2").show();
				$("#room2_child3").show();
			}
		});
		
		$("#room3_children").change( function() {
			$('#room3_child_ages').show();
			if ($(this).val() == 0) {
				$("#room3_child1").hide();
				$("#room3_child2").hide();
				$("#room3_child3").hide();
				$('#room3_child_ages').hide();		
			}		
			if ($(this).val() == 1) {
				$("#room3_child1").show();
				$("#room3_child2").hide();
				$("#room3_child3").hide();			
			}
			if ($(this).val() == 2) {
				$("#room3_child1").show();
				$("#room3_child2").show();
				$("#room3_child3").hide();
			}		
			if ($(this).val() == 3) {
				$("#room3_child1").show();
				$("#room3_child2").show();
				$("#room3_child3").show();
			}	
		});
		$("#room4_children").change( function() {
			$('#room4_child_ages').show();
			if ($(this).val() == 0) {
				$("#room4_child1").hide();
				$("#room4_child2").hide();
				$("#room4_child3").hide();
				$('#room4_child_ages').hide();		
			}		
			if ($(this).val() == 1) {
				$("#room4_child1").show();
				$("#room4_child2").hide();
				$("#room4_child3").hide();			
			}
			if ($(this).val() == 2) {
				$("#room4_child1").show();
				$("#room4_child2").show();
				$("#room4_child3").hide();
			}		
			if ($(this).val() == 3) {
				$("#room4_child1").show();
				$("#room4_child2").show();
				$("#room4_child3").show();
			}	
		});
		$("#room5_children").change( function() {
			$('#room5_child_ages').show();
			if ($(this).val() == 0) {
				$("#room5_child1").hide();
				$("#room5_child2").hide();
				$("#room5_child3").hide();
				$('#room5_child_ages').hide();		
			}		
			if ($(this).val() == 1) {
				$("#room5_child1").show();
				$("#room5_child2").hide();
				$("#room5_child3").hide();			
			}
			if ($(this).val() == 2) {
				$("#room5_child1").show();
				$("#room5_child2").show();
				$("#room5_child3").hide();
			}		
			if ($(this).val() == 3) {
				$("#room5_child1").show();
				$("#room5_child2").show();
				$("#room5_child3").show();
			}	
		});
	}
	
	// If City Hotel Availability Search
	if ($('.city-hotel-search').length>0) {
		
		// Datepicker
		$('#CHselectedDay,#CHselectedMonth,#CHselectedYear').change(CHcheckLinkedDays);
		
		$('#CH-arrival_date').datepick({
			onSelect: CHupdateSelected,
			showOnFocus: false,
			dateFormat: 'dd/mm/yyyy',
			defaultDate: new Date(),
			selectDefaultDate: true,
			showTrigger: '#CH-calImg'		
		});
		
		// Update datepicker from three select controls
		$('#CHselectedMonth,#CHselectedDay,#CHselectedYear').change(function() {
			$('#CH-arrival_date').datepick('setDate', new Date($('#CHselectedYear').val(), $('#CHselectedMonth').val() - 1, $('#CHselectedDay').val()));
		});		
    
		// Show/Hide room/aduts/children
		$('tr.CH-room2').hide();
		$('tr.CH-room3').hide();
		$('tr.CH-room4').hide();
		$('tr.CH-room5').hide();
		
		$('#CH-room1_child_ages').hide();
		$('#CH-room1_child1').hide();
		$('#CH-room1_child2').hide();
		$('#CH-room1_child3').hide();
		$('#CH-room2_child_ages').hide();
		$('#CH-room2_child1').hide();
		$('#CH-room2_child2').hide();
		$('#CH-room2_child3').hide();
		$('#CH-room3_child_ages').hide();
		$('#CH-room3_child1').hide();
		$('#CH-room3_child2').hide();
		$('#CH-room3_child3').hide();
		$('#CH-room4_child_ages').hide();
		$('#CH-room4_child1').hide();
		$('#CH-room4_child2').hide();
		$('#CH-room4_child3').hide();
		$('#CH-room5_child_ages').hide();
		$('#CH-room5_child1').hide();
		$('#CH-room5_child2').hide();
		$('#CH-room5_child3').hide();						
		
		$("#CH-rooms").change( function() {
			$('tr.CH-room2').hide();	
			$('tr#CH-room2_child_ages').hide();
			$('#CH-room2_children').val('0');
			$('tr.CH-room3').hide();	
			$('tr#CH-room3_child_ages').hide();
			$('#CH-room3_children').val('0');
			$('tr.CH-room4').hide();	
			$('tr#CH-room4_child_ages').hide();
			$('#CH-room4_children').val('0');
			$('tr.CH-room5').hide();	
			$('tr#CH-room5_child_ages').hide();
			$('#CH-room5_children').val('0');
			
			if ($(this).val() == 2) {
				$('tr.CH-room2').show();
			}													
			if ($(this).val() == 3) {
				$('tr.CH-room2').show();
				$('tr.CH-room3').show();					
			}
			if ($(this).val() == 4) {
				$('tr.CH-room2').show();	
				$('tr.CH-room3').show();	
				$('tr.CH-room4').show();									
			}
			if ($(this).val() == 5) {
				$('tr.CH-room2').show();	
				$('tr.CH-room3').show();	
				$('tr.CH-room4').show();	
				$('tr.CH-room5').show();													
			}									
			//$(".CH-room" + $(this).val()).show(); 
		});
		$("#CH-room1_children").change( function() {
			$('#CH-room1_child_ages').show();
			if ($(this).val() == 0) {
				$("#CH-room1_child1").hide();
				$("#CH-room1_child2").hide();
				$("#CH-room1_child3").hide();
				$('#CH-room1_child_ages').hide();		
			}		
			if ($(this).val() == 1) {
				$("#CH-room1_child1").show();
				$("#CH-room1_child2").hide();
				$("#CH-room1_child3").hide();			
			}
			if ($(this).val() == 2) {
				$("#CH-room1_child1").show();
				$("#CH-room1_child2").show();
				$("#CH-room1_child3").hide();
			}		
			if ($(this).val() == 3) {
				$("#CH-room1_child1").show();
				$("#CH-room1_child2").show();
				$("#CH-room1_child3").show();
			}	
		});
		$("#CH-room2_children").change( function() {
			$('#CH-room2_child_ages').show();
			if ($(this).val() == 0) {
				$("#CH-room2_child1").hide();
				$("#CH-room2_child2").hide();
				$("#CH-room2_child3").hide();			
				$('#CH-room2_child_ages').hide();
			}		
			if ($(this).val() == 1) {
				$("#CH-room2_child1").show();
				$("#CH-room2_child2").hide();
				$("#CH-room2_child3").hide();			
			}
			if ($(this).val() == 2) {
				$("#CH-room2_child1").show();
				$("#CH-room2_child2").show();
				$("#CH-room2_child3").hide();
			}		
			if ($(this).val() == 3) {
				$("#CH-room2_child1").show();
				$("#CH-room2_child2").show();
				$("#CH-room2_child3").show();
			}
		});
		$("#CH-room3_children").change( function() {
			$('#CH-room3_child_ages').show();
			if ($(this).val() == 0) {
				$("#CH-room3_child1").hide();
				$("#CH-room3_child2").hide();
				$("#CH-room3_child3").hide();			
				$('#CH-room3_child_ages').hide();
			}		
			if ($(this).val() == 1) {
				$("#CH-room3_child1").show();
				$("#CH-room3_child2").hide();
				$("#CH-room3_child3").hide();			
			}
			if ($(this).val() == 2) {
				$("#CH-room3_child1").show();
				$("#CH-room3_child2").show();
				$("#CH-room3_child3").hide();
			}		
			if ($(this).val() == 3) {
				$("#CH-room3_child1").show();
				$("#CH-room3_child2").show();
				$("#CH-room3_child3").show();
			}
		});
		$("#CH-room4_children").change( function() {
			$('#CH-room4_child_ages').show();
			if ($(this).val() == 0) {
				$("#CH-room4_child1").hide();
				$("#CH-room4_child2").hide();
				$("#CH-room4_child3").hide();			
				$('#CH-room4_child_ages').hide();
			}		
			if ($(this).val() == 1) {
				$("#CH-room4_child1").show();
				$("#CH-room4_child2").hide();
				$("#CH-room4_child3").hide();			
			}
			if ($(this).val() == 2) {
				$("#CH-room4_child1").show();
				$("#CH-room4_child2").show();
				$("#CH-room4_child3").hide();
			}		
			if ($(this).val() == 3) {
				$("#CH-room4_child1").show();
				$("#CH-room4_child2").show();
				$("#CH-room4_child3").show();
			}
		});
		$("#CH-room5_children").change( function() {
			$('#CH-room5_child_ages').show();
			if ($(this).val() == 0) {
				$("#CH-room5_child1").hide();
				$("#CH-room5_child2").hide();
				$("#CH-room5_child3").hide();			
				$('#CH-room5_child_ages').hide();
			}		
			if ($(this).val() == 1) {
				$("#CH-room5_child1").show();
				$("#CH-room5_child2").hide();
				$("#CH-room5_child3").hide();			
			}
			if ($(this).val() == 2) {
				$("#CH-room5_child1").show();
				$("#CH-room5_child2").show();
				$("#CH-room5_child3").hide();
			}		
			if ($(this).val() == 3) {
				$("#CH-room5_child1").show();
				$("#CH-room5_child2").show();
				$("#CH-room5_child3").show();
			}
		});						   
	}	

});

// Validate Hotel Search form
function validateSearch()
{
    var errors = [];
    if ($('#country').val() == '') {
        errors.push(' - Please choose a country');
    }
    if ($('#city').val() == '') {
        errors.push(' - Please choose a city');
    }
        
    if ($('#arrival_date').val() == '') {
        errors.push(' - Please enter a arrival date');
    }
    else {
        var today = new Date();
        today.setDate(today.getDate()-1);
    }
        
    if (errors.length > 0) {
        errorStr = "Please fix the following error" + (errors.length > 1 ? 's' : '') + ":\n";
        errorStr += errors.join("\n");
        alert(errorStr);
        return false;
    }

    $('#hotel-search .hotel-search-inner').hide();
    $('#hotel-search .hotel-search-loading').show();
        
    return true;
}

function searchHotels(form) 
{
    if (!validateHotelSearch()) {
        return false;
    }
    jQuery.post('/frontend_dev.php/hotels/hotelSearch', $(form).serialize(), function (data) {
       $('#city-hotel-search-results').html(data);
       $('#city-hotel-search-loading').hide();
       $('#city-hotel-search-results').show();
    });
    
    return false;
}

 // Validate Hotel Search form
function validateHotelSearch()
{
    var errors = [];
    if ($('#CH-arrival_date').val() == '') {
        errors.push(' - Please enter a arrival date');
    }
    else {
        var today = new Date();
        today.setDate(today.getDate()-1);
    }
        
    if (errors.length > 0) {
        errorStr = "Please fix the following error" + (errors.length > 1 ? 's' : '') + ":\n";
        errorStr += errors.join("\n");
        alert(errorStr);
        return false;
    }
    
    $('#city-hotel-search').hide();
    $('#city-hotel-search-loading').show();
        
    return true;
}
