var calen;
var todosSinImporte = true;

var compruebaCalendarioPulsacionExterna = function(event) {
	var target = $(event.target);
	if (target.parents('#areaCalendario').length == 0) {
		$('#areaCalendario').hide();
		$('#iconosDerecha').show();
		//$( "#mesAnyo" ).val('');
		return true;
	}
	return false;
}

function cerrarCalendarioInicio()
{
	//$('#areaCalendario').hide();
	$( '#areaCalendario' ).css( "background-color", "#F0F0F0" );
	$( '#areaCalendario' ).css( "height", "135px" );
	$( '#areaCalendario' ).css( "width", "333px" );
	$('#areaCalendario').html('<img border="0" width="216px" height="73px" src="/www/img/banner_express.gif">');
	$('#iconosDerecha').show();
	//$( "#mesAnyo" ).val('');
	$( ".formCuerpo" ).css( "height", "230px" );
	$( '#divHabitacionesEdades' ).css( "height", "135px" );

}

function mostrarCalendario(sesion) {

	$('#iconosDerecha').hide();
	$('#areaCalendario').show();
	calen = new calendario('areaCalendario', 'es', 'mesAnyo', 'destino', 'origen', sesion, 'zona');

	$( '#areaCalendario' ).css( "height", "202px" );
	$( '#areaCalendario' ).css( "width", "343px" );
	calen.mostrar();

}

function calendario( capa, idioma, fecha, destino, origen, sesion, zona ) {
	this.dias = ['Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa', 'Do'];
	this.meses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo',
				 'Junio', 'Julio', 'Agosto', 'Septiembre',
				 'Octubre', 'Noviembre', 'Diciembre'];
	this.capa = '#' + capa;
	this.componenteFecha = '#' + fecha;
	this.fecha = $(this.componenteFecha).val();
	this.numMeses = 3;

	this.anyo = Number(this.fecha.substring(6));
	this.mes = Number(this.fecha.substring(3, 5)) - 1; // Los meses empiezan por 0 = Enero.

	this.destino = $('#' + destino).val();
	this.sesion = sesion;
	this.origen = $( '#' + origen ).val();
	this.zona = $( '#' + zona ).val();

	this.mostrar = fCalenMostrar;
	this.cargaValores = fCalenCargaValores;
	this.devuelveValores = fCalenDevuelveValores;
	this.muestraValores = fCalenMuestraValores;
	this.ocultaCapa = 'ocultaCapa';
	this.seleccionaFecha = 'seleccionaFecha';
	this.cambiaMes = 'cambiaMes';
	this.cierraCalendario = 'cerrarCalendarioInicio';

}

function fCalenCargaValores() {

	PreciosCalendario.recuperarPreciosCalendario(this.fecha, this.destino, this.sesion, '', this.origen, $( '#usuario' ).val(), this.zona,
		{callback : this.devuelveValores
	});
}

function fCalenDevuelveValores(valoresJSON) {
	if( valoresJSON == 'KO' )
	{
		calen.muestraValores( [] );
	}
	else
	{
		calen.muestraValores(eval('(' + valoresJSON + ')'));
	}
}

function fCalenMostrar() {
	$( ".formCuerpo" ).css( "height", "303px" );
	$( "#areaCalendario" ).css( "width", "335px" );
	var html = 	'<div id="calPreciosEspera"><p>' + pecc + '</p>' +
				'<embed width="225" height="15" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" quality="high" src="/www/swf/preloader.swf"/>';

	$(this.capa).html('');
	$(this.capa).append(html);

	this.cargaValores();
}

function fCalenMuestraValores( valores ) {
	todosSinImporte = true;
	if( valores.length < 1 )
	{
		var html = nppis;//'<h2>En estos momentos no existen productos <br>para la información seleccionada.<h2>'
		
		$(this.capa).html('');
		$(this.capa).append(html);

		$( this.capa ).css( "height", "100px" );
		$( this.capa ).css( "width", "100%" );
		$('#iconosDerecha').show();
		$( ".formCuerpo" ).css( "height", "230px" );
		return;
	}
	try
	{
		$( this.capa ).css( "background-color", "#FFFFFF" );

		var mesHoy = '0' + String(new Date().getMonth() + 1);

		var anyoMesHoy = String( new Date().getFullYear() ) + mesHoy.substring(mesHoy.length, mesHoy.length - 2);
		var anyoMes = Number(this.anyo + this.fecha.substring(3, 5));

		var anyoActual = this.anyo;
		var mesActual;
		if (anyoMes > anyoMesHoy) {
			if (this.mes == 0) {
				mesActual = 11;
				anyoActual--;
			} else {
				mesActual = this.mes - 1;
			}
		} else {
			mesActual = this.mes;
		}

		var html = '';
		var claseMesSelec;
		var htmlMes;
/*
		for (var i = 0; i < this.numMeses; i++) {
			if (mesActual == this.mes) {
				claseMesSelec = ' calendarioMesSeleccionado';
				htmlMes = this.meses[mesActual] + ' ' + anyoActual;
			} else {
				claseMesSelec = '';
				htmlMes = '<a href="javascript:' + this.cambiaMes + '(' +
						mesActual + ', ' + anyoActual + ');">' +
						this.meses[mesActual] + ' ' + anyoActual + '</a>';
			}
	
			html += '<div id="mes' + i + '" class="calendarioMeses' + claseMesSelec + '">' 
					+ htmlMes + '</div>';
			if (mesActual == 11) {
				mesActual = 0;
				anyoActual++;
			} else {
				mesActual++;
			}
	
		}
*/
		html += '<div id="calendarioCierre"><a href="javascript:' + this.cierraCalendario + '(\'' + 
				this.capa + '\')"><img src="/www/img/paquetes/cerrar.png" /></a></div>';

		var diaActual = 1;
		var ultimoDiaMes = 32 - new Date(this.anyo, this.mes, 32).getDate();

		var diaSemanaPrimerDiaMes = (new Date(this.anyo, this.mes, 1)).getDay();
		diaSemanaPrimerDiaMes = diaSemanaPrimerDiaMes != 0 ? diaSemanaPrimerDiaMes : 7;
		var diaSemanaUltimoDiaMes = (new Date(this.anyo, this.mes, ultimoDiaMes)).getDay();
		diaSemanaUltimoDiaMes = diaSemanaUltimoDiaMes != 0 ? diaSemanaUltimoDiaMes : 7;

		var semanasMes;

		// Calculamos el número de semanas que tiene el mes.
		if (diaSemanaPrimerDiaMes == 1 && this.mes == 1 && ultimoDiaMes != 29) {
			semanasMes = 4;
		} else if (diaSemanaPrimerDiaMes < diaSemanaUltimoDiaMes || this.mes == 1) {
			semanasMes = 5;
		} else {
			semanasMes = 6;
		}

		var	diaSemana = diaSemanaPrimerDiaMes;

		var aValores = new Array( 32 );
		var aNoches = new Array( 32 );
		var aCias = new Array( 32 );

		$.each(valores, function(i, item) {
			var dia = Number(item.dia.substring(0, 2));
			var valorAFormatear = null;
			if( item.importe != null )
			{
				valorAFormatear = parseInt( item.importe ) + parseInt( item.importe_cia ) + parseInt( item.tasa );
			}
			var valorFormateado = formatearValor( valorAFormatear );
			aValores[dia] = valorFormateado;
			aNoches[dia] = item.noches;
			aCias[dia] = item.ciaaerea;
		});
		if( todosSinImporte == true )
		{

			var codigo = '';
			codigo = nppis;//'<h2>En estos momentos no existen productos <br>para la información seleccionada.<h2>'
			$(this.capa).html('');
			$(this.capa).append( codigo );

			$( this.capa ).css( "height", "100px" );
			$( this.capa ).css( "width", "100%" );
			$( this.capa ).css( "background-color", "#F0F0F0" );
			$('#iconosDerecha').show();
			$( ".formCuerpo" ).css( "height", "230px" );
			return;
		}
		$( this.capa ).css( "background-color", "#FFFFFF" );
		html += '<div id="calendarioTabla"><table id="mes" class="calendarioValores"><thead><tr>';

		for (var i = 0; i < this.dias.length; i++) {
			html += '<th>' + this.dias[i] + '</th>';
		}
		html += '</tr></thead><tbody>';
	
		var fechaHoy = new Date();
		fechaHoy.setHours(0);
		fechaHoy.setMinutes(0);
		fechaHoy.setSeconds(0);
		fechaHoy.setMilliseconds(0);

		for (var i = 1; i <= semanasMes; i++) {
			html += '<tr>';

			// Si es la primera semana puede ser que el primer día no comience en lunes	
			if (i == 1) {
				for (var j = 1; j < diaSemana; j++) {
					html += '<td>&nbsp;</td>';
				}
			} else {
				diaSemana = 1;
			}

			var fechaActual;
			var dia;
			var celda;
			var fechaComparable;
			var resultadoCompara;

			for (var j = diaSemana; j <= this.dias.length; j++) {

				dia = '0' + diaActual;
				fechaActual = dia.substring(dia.length, dia.length - 2) + this.fecha.substring(2);
				fechaComparable = new Date(this.anyo, this.mes, diaActual);

				resultadoCompara = comparaFechas(fechaComparable, fechaHoy);
				if (resultadoCompara == 1 || resultadoCompara == 0) {
					celda = '<a class=\"tip\" href="javascript:' + "buscar" + '(\'' + fechaActual + '\', \'' + aNoches[diaActual] + '\');' +
							/*this.ocultaCapa + '(\'' + this.capa + '\');*/'">' + diaActual;
					//alert(aValores[diaActual]);
					if ( aValores[diaActual] != undefined && aValores[diaActual] != '0' && aValores[diaActual] != 0 ) {
						if( aCias[diaActual]== null || aCias[diaActual]== "" ){
							celda += '<span>Sujeto a disponibilidad aérea</span>';
							celda += '<br><div class="valor">' + 
									aValores[diaActual] + '<div class="euro">&euro;</div></div>';
						}else{
							celda += '<span>Precio final con ' + aCias[diaActual] + '</span>';
							celda += '<br><div class="valorCia">' + 
							aValores[diaActual] + '<div class="euro">&euro;</div></div>';
						}
					}

					celda += '</a>';
				} else {
					celda = diaActual;
				}

				html += '<td>' + celda + '</td>';
				diaActual++;
				if (diaActual > ultimoDiaMes) {
					break;
				}
			}

			if (j <= this.dias.length) {
				for (var k = j + 1; k <= this.dias.length; k++) {
					html += '<td>&nbsp;</td>';
				}
			}

			html += '</tr>';
		}
		html += '</tbody></table>';// +
		//'<span style="font-size: 10px"></span></div>';
		$(this.capa).html('');
		$(this.capa).append(html);
	}
	catch( e )
	{

		var html = '';
		html = nppis;//'<h2>En estos momentos no existen productos <br>para la información seleccionada.<h2>'
		$(this.capa).html('');
		$(this.capa).append(html);

		//$( ".formCuerpo" ).css( "height", "230px" );
		$( this.capa ).css( "height", "100px" );
		$( this.capa ).css( "width", "100%" );
		$( this.capa ).css( "background-color", "#F0F0F0" );
		$('#iconosDerecha').show();
		$( ".formCuerpo" ).css( "height", "230px" );
		return;
	}
}

function comparaFechas(fecha1, fecha2) {
	if (fecha1 > fecha2) {
		return 1;
	} else if (fecha1 < fecha2) {
		return -1;
	} else {
		return 0;
	}
}

function formatearValor(valor) {
	/*try
	{*/

	if( valor == null )
	{
		return "0";
	}
	valor = valor.toString();
	valor = Math.round(valor.replace(',', '.')).toLocaleString();
	var coma = valor.indexOf(',');

	if (coma < 0) {
		todosSinImporte = false;
		return valor;
	}
	todosSinImporte = false;
	return valor.substring(0, coma);
	/*}
	catch( e )
	{
		return "error";
	}*/
}

function ocultaCapa(capa) {
	$(capa).hide();
}

function seleccionaFecha(componenteFecha, fecha) {
	$(componenteFecha).val(fecha);
}

function cambiaMes(mes, anyo) {
	calen.mes = mes;
	calen.anyo = anyo;	
	var mesFecha = '0' + (mes + 1);
	calen.fecha = '01/' + mesFecha.substring(mesFecha.length, mesFecha.length - 2) + '/' + anyo;
	calen.mostrar();
}
