/*efectos Jquery para Hoteles Catalonia*/
function forzarAnchura(contexto) {
	if ($.browser.msie && $.browser.version<7) {
		var $c = contexto ? $(contexto) : document;
		var div = $('div',$c).filter('.imgRight,.imgLeft');
		div.width(div.find('img:first').width());
	}
}

function redondear(contexto){
	var $c = contexto ? $(contexto) : document;
	var div = $('div.round', $c);
	div.prepend('<span class="RNO"></span><span class="RNE"></span>');
	div.append('<span class="RSO"></span><span class="RSE"></span>');
	if($.browser.msie&&$.browser.version<7){
		// recorremos el array hacia atras para actuar de dentro hacia afuera
		for (var i = div.length; i>0; i--) {
			var $t=div.eq(i-1);
			if($t.height()%2==0){
				$t.children('span[class*=RS]').css('bottom','0');
			}
			if($t.width()%2==1){
				$t.children('span.RSE,span.RNE').css('marginRight','-1px');
			}
		}
	}
};

/* Hacer los sombreados de .textoBanner */
function sombrearTitulos(contexto) {
	var $c = contexto ? $(contexto) : document;
	$('.textoBanner', $c).each(function() {
		var $t = $(this);
		// solo lo ejecutamos si el .textoBanner esta posicionado en absoluto
		if ('absolute' != $t.css('position')) return;
		$t.clone().insertAfter($t).css({ zIndex: parseInt($t.css('z-index') || 0)-1 }).addClass('sombreado');
	});
}

// DESPLEGABLES MULTIFUNCION
function asignPanelEvents(container) {
	// when container is passed as a parameter, the function will only assign
	// events depending on container:
	// if container is a DOM element, inside that DOM element
	// if container is a string, inside the element(s) matching the jQuery
	// selector
	
	// genericos
	var $c = container ? $(container) : document;
	var $show = $('a,button', $c).filter('.showPanel'),
		$panel = $('.panel',$c);
	$show.each( function(index) {
		var $this = $(this);
		var $thisPanel = $panel.eq(index);
		var $hide = $this.siblings('.hidePanel').add(
				$thisPanel.find('a,button').filter('.hidePanel'));
		if ($thisPanel.hasClass('active')) {
			if ($hide.length) {
				$this.hide();
			} else {
				$this.addClass('panel-active');
			}
			$thisPanel.show();
			$hide.show();
		} else {
			$this.show();
			$thisPanel.hide();
			$hide.hide();
		}
		$this.click( function() {
			if ('div' == $panel.get(index).tagName.toLowerCase() || 'bloqueIdiomas' == $panel.get(index).id) {
				$this.toggleClass('panel-active');
				$thisPanel.slideToggle('fast');
			} else if ($thisPanel.is(':visible')) {
				$thisPanel.fadeOut('fast');
			} else {
				$thisPanel.fadeIn('fast');
			}
			if ($hide.length) {
				$this.toggle();
				$hide.toggle();
			}
			return false;
		}).mouseover(function() {
			$(this).addClass('js-hover')
		}).mouseout(function(){
			$(this).removeClass('js-hover')
		});
		$hide.click( function() {
			$this.click();
			return false;
		});
	});
	
	// por id
	$('a, button', $c).filter('.toggleId').click(function() {
		$('#'+this.rel).slideToggle('fast');
		$(this).hide();
		return false;
	});
}

// Pseudo pestanyas
$(function(){
	$('div.multiLayer').each(function(){
		var $multiLayer= $(this);
		var $links = $multiLayer.find('ul.selectLayer:first a');
		var $layers = $multiLayer.find('.layer:first').parent().children('.layer'); // layers can be anything in the DOM, this is a bit slower but pays off with flexibility
		// checking that only one link has class="actual"
		if ($links.filter('.actual').length!=1){
			$links.removeClass('actual').eq(0).addClass('actual');
		}
		$links.each(function(index){
			var $t=$(this);
			if ($t.hasClass('actual')){
				$layers.eq(index).show();
			} else {
				$layers.eq(index).hide();
			}
			$t.click(function(){
				if ($t.hasClass('actual')) return false;
				$links.removeClass('actual').eq(index).addClass('actual');
				$layers.slideUp('slow').eq(index).slideDown('slow');
				return false;
			});
		});
	});
});


// CALENDARIO DEL DATEPICKER
String.prototype.toDate = function(f, modDia, modMes) {
	var f     = f || 'dd/mm/yyyy';
    var modDia= modDia || 0;
    var modMes= modMes || 0;
    var anyo  = this.substring(f.indexOf('y'), f.lastIndexOf('y') + 1);
    var mes   = parseInt(this.substring(f.indexOf('m'), f.lastIndexOf('m') + 1), 10) + modMes;
    var dia   = parseInt(this.substring(f.indexOf('d'), f.lastIndexOf('d') + 1), 10) + modDia;
    var fecha = new Date(anyo, mes-1, dia);
    return fecha;
}
$.datepicker.setDefaults( {
	yearRange :'-1:+2',
	changeFirstDay :false,
	minDate :'+0',
	showOn :'button',
	buttonImage :'img/calendar_icon.gif'
});
$( function() {
	var $label = $('label').filter('.fechallegada, .fechasalida');
	$label.filter('.fechallegada').find('input').each( function() {
		$(this).datepicker({
			onClose:function(fecha){
				var $llegada = $(this);
				var $salida  = $llegada.parents('.fechas:first').find('label.fechasalida').find('input')
				$salida.datepicker('option','minDate',fecha.toDate('',1));
			}
		});
	});
	$label.filter('.fechasalida').find('input').each( function() {
		$(this).datepicker({
			onClose:function(fecha){
				var $salida  = $(this);
				var $llegada = $salida.parents('.fechas:first').find('label.fechallegada').find('input')
				$llegada.datepicker('option','maxDate',fecha.toDate('',-1));
			}
		});
	});
});

/* Clases para los elementos ultimo y primero de los listado  */
function clasesListados(c){
	var c = c || document;
	$('li:first-child',c).addClass('first');
	$('li:last-child',c).addClass('last');
}

/*
 * -------------------------------------------------------------- utilizacion de cookies
*/
function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
} // function

function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if (expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+'='+escape( value ) +
		(( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		(( path ) ? ';path=' + path : '' ) +
		(( domain ) ? ';domain=' + domain : '' ) +
		(( secure ) ? ';secure' : '' );
} // function

function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + '=' +
			(( path ) ? ';path=' + path : '') +
			(( domain ) ? ';domain=' + domain : '' ) +
			';expires=Thu, 01-Jan-1970 00:00:01 GMT';
} // function

/*
..........................................................................
:: Plugin de jQuery para cambiar PNG's para IE6 dentro de un elemento   ::
:: Ej. uso: $('div.fulanito img').pngIE6()                              ::
:: El parametro 'blank' debe ser la ruta de un GIF transparente de 1x1  ::
..........................................................................
*/
jQuery.fn.extend({
    pngIE6: function(blank) {
        if ($.support.opacity) return this;
        if (!blank) blank = 'img/blank.gif';
        return this.each( function() {
            this.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+ this.src +',sizingMethod=image)';
            this.src = blank;
        });
    }
});

// iniciamos todas las funciones de formateo de contenido y funcionalidad a través de la siguiente funcion:
function prepararEventos(contexto) {
	if ('function'==typeof contexto) {
		var contexto = document;
	}
	if ($.browser.msie && $.browser.version < 7) {
		$('img[src$=.png]',contexto).pngIE6();
		forzarAnchura(contexto);
	}
	redondear(contexto);
	asignPanelEvents(contexto);
	sombrearTitulos(contexto);
	clasesListados(contexto);
}

$(prepararEventos);

