$(document).ready(function() {
	
	//'more details' link
	detailsLink();

	//custom select boxes
	$("select").selectbox();
	
	//sidebar datepicker
	if ($('#StartDate').length){
		if ( $('html').attr('lang')=="es"){
			create_datepicker ($('#StartDate'), 'Seleccione la fecha de llegada');
			$.datepicker.setDefaults($.datepicker.regional['es']);
		} else {
			create_datepicker ($('#StartDate'));
		}
		linkCalendar_dropdowns ( $('#StartDate'), $('#selectah-checkin_day'), $('#selectah-checkin_month') );
	}
	
	//slider homepage
	if($('#home_slider').length) {
		slider_timer = setInterval( "slideSwitch('#home_slider', '#slider_navi')", 6000 );
		$('#slider_navi .nav').click(function (){
			clearInterval(slider_timer);
			$('#home_slider .slide').stop(true, false);
			var target = $('#slider_navi .nav').index($(this));
			slideSwitch('#home_slider', '#slider_navi', target );
			return false;
		});
	}
	
	//slider inner page
	if($('#inner_slider').length) {
		if($('#inner_slider .slide').length > 1) {
			slider_timer = setInterval( "slideSwitch('#inner_slider')", 6000 );
		}
	}
	
	//hide focus (ie6, ie7)
	$("a").each(function() {
		$(this).attr("hideFocus", "true");
	})
	
	if($('.lightbox a').lightBox){
		$('.lightbox a').lightBox({
			imageLoading: Orange.Util.url('public/home/img/lightbox-btn-loading.gif'),
			imageBtnClose: Orange.Util.url('public/home/img/lightbox-btn-close.gif'),
			imageBtnPrev: Orange.Util.url('public/home/img/lightbox-btn-prev'+(Orange.currentLang=='es'? '_es':'')+'.png'),
			imageBtnNext: Orange.Util.url('public/home/img/lightbox-btn-next'+(Orange.currentLang=='es'? '_es':'')+'.png')
		});
	}	
	
});


/*
* detailsLink(): activates "more details" link
* spanish text will be shown if the 'lang' attribute of the html document is set to 'es' or if the link has the class 'es'.
*/
function detailsLink(){
	$('a.details_link').click(function() {
		if ($(this).hasClass("open")){
			if (!$(this).next().queue().length) {
				//close
				$(this).next().slideToggle(800);
				$(this).removeClass("open");
				if ( $('html').attr('lang')=="es" || $(this).hasClass("es") ){
					$(this).html("M&aacute;s detalles");
				} else {
					$(this).html("More details");
				}
			}
		} else {
			if (!$(this).next().queue().length) {
				//open
				$(this).next().slideToggle(800);
				$(this).addClass("open");
				if ( $('html').attr('lang')=="es" || $(this).hasClass("es") ){
					$(this).html("Ocultar detalles");
				} else {
					$(this).html("Hide details");
				}
			}
		}
		return false;
	});
}


/*
* create_datepicker(): creates a datepicker calendar using jquery ui plugin
*/
function create_datepicker (elm, txt, min_date) {
	if (!txt)
		txt = 'Choose check-in date';
	if (!min_date)
		min_date = 0;
	$(elm).datepicker({
			dateFormat: 'dd-mm-yy',
			minDate: min_date,
			maxDate: '+1y',
			changeMonth: false,
			changeYear: false,
			showOn: 'button',
			buttonImage: Orange.Util.url('public/home/img/date_picker.png'),
			buttonImageOnly: true,
			buttonText: txt
		});
}


/*
* linkCalendar_inputs(): links a datepicker calendar with 3 input fields (day, month and year)
* @param jQuery calendar 
* @param jQuery input_day
* @param jQuery input_month
* @param jQuery input_year
*/
function linkCalendar_inputs (calendar, input_day, input_month, input_year) {

	//when calendar changes, update input fields			
	$(calendar).datepicker(
		"option" , 
		"onSelect" , 
		function(dateText, inst){
			updateInputs (dateText, input_day, input_month, input_year);
			$(this).trigger('datePicked');
		});

	//when input fields change, update calendar
	$(input_day).add($(input_month)).add($(input_year)).change( function(){
		var day = input_day.val();
		var month = input_month.val();
		var year = input_year.val();
		var date = day + '-' + month + '-' + year;
		updateCalendar (calendar, date);
	});
}


/*
* linkCalendar_dropdowns(): links a datepicker calendar with the dropdowns for day and month
* (the dropdowns are indeed custom select boxes created by jquery.selectbox plugin)
* @param jQuery calendar 
* @param jQuery dropdown_day: container of the day dropdown 
* @param jQuery dropdown_month: container of the month dropdown 
*/
function linkCalendar_dropdowns (calendar, dropdown_day, dropdown_month) {

	//when calendar changes, update dropdowns				
	$(calendar).datepicker(
		"option" , 
		"onSelect" , 
		function(dateText, inst){
			updateSelects (dateText, dropdown_day, dropdown_month);
			$(this).trigger('datePicked');
		});

	//when the dropdowns change, update calendar
	var className = 'jquery-selectbox';
	var items = $(dropdown_day).add($(dropdown_month)).find('.' +className+ '-item');
	items.click( function(){
		var day = dropdown_day.find('.' +className+ '-currentItem').data('value'); //dd
		var v = dropdown_month.find('.' +className+ '-currentItem').data('value'); //yyyy-mm
		var year = v.substr(0,4);
		var month = v.substr(5,2);
		var date = day + '-' + month + '-' + year;
		updateCalendar (calendar, date);
	});
}

function updateInputs (dateText, input_day, input_month, input_year) {
	//dateText format: dd-mm-yyyy
	input_day.focus().val(dateText.substr(0,2)).blur();
	input_month.focus().val(dateText.substr(3,2)).blur();
	input_year.focus().val(dateText.substr(6,4)).blur();
}
function updateSelects (dateText, dropdown_day, dropdown_month) {
	//dateText format: dd-mm-yyyy
	var day = dateText.substr(0,2);
	var month = dateText.substr(3,2);
	var year = dateText.substr(6,4);
	$(dropdown_day).selectbox.update( $(dropdown_day).find('.value-' + day), true ); //dd
	$(dropdown_month).selectbox.update( $(dropdown_month).find('.value-' + year + '-' + month), true ); //yyyy-mm
}
function updateCalendar (calendar, date) {
	calendar.datepicker( "setDate" , date);
}


/*
* slideSwitch(): switches to the next slide of a slideshow
* @param string (css selector) slider_navi: if a reference to the slider navigation is provided, it will be updated
* @param int target: allows to specify the next slide to be shown
*/
function slideSwitch(slider, slider_navi, target) {
	var $slides = $(slider + ' .slide');
	var $active = $(slider + ' .slide.active');
	if ( $active.length == 0 )
		$active = $(slider + ' .slide:first');
	if (target != undefined) {
		$next = $slides.eq(target);
		target=undefined;
	} else {
		$next =  $active.next().length ? $active.next() : $(slider + ' .slide:first');
	}
	if (slider_navi) {
		var index = $(slider+ ' .slide').index($next);
		$(slider_navi + ' .nav').removeClass("active_tab").eq(index).addClass("active_tab");
	}
	$slides.not($active).css({opacity: 0.0});
	$slides.removeClass('last-active');
	$active.addClass('last-active').animate({opacity: 0.0}, 2000);
	$slides.removeClass('active');
	$next.addClass('active')
		.animate({opacity: 1.0}, 2000, function() {
			$active.removeClass('active last-active');
		});
}


$(document).ready(function(){
	$('.lpChatTextLinkText span').css('font-size', '11px');
});


