var getCalendario = null;

//var xmlCalendario = null;
//var rutaXml = "";
//var selector = "";
var MesSeleccionado = 0;
var CualMes=0;
var NombreMes = new Array(12);
var diasSemana = new Array(7);
//var dia_inicio = 0;
var xmlComp;
//var combo;
//var urlAction;
var opciones_setup;

(function($){
	$.fn.setup = function(opciones) {

   	 	var parametrosPorDefecto = {
   				Meses:['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
   				Dias:['Lunes','Martes','Miércoles','Jueves','Viernes','Sábado','Domingo'],
   				DiasCorto:['Lun','Mar','Mie','Jue','Vie','Sab','Dom'],
   				PrimerDia:0,
   				ArchivoXml:'archivo.xml',
   				Selector:'',
   				Combo:'',
   				urlAction:'',
   				NombreDivFormulario:'',
   				NombreDivFechas:'',
   				IdCombos:[''],
   				NumeroExtraCombos:0,
   				EnviarRango: 0,
   				RecargaImagenOriginal: 0,
   				OcultarInformacion: 0,
				seleccionable: 1,
				timeout:1000,
				cli:0,
				clipage:''};                       

	    var opciones = $.extend(parametrosPorDefecto, opciones);
		return this.each(function() {
  			objeto = $(this);
  			
  			for(i=0; i<12; i++){
  				NombreMes[i+1] = opciones.Meses[i];
  			}
  			for(s=0; s<7; s++){
  				diasSemana[s] = "<label class='encabezadodiassemana'>"+opciones.DiasCorto[s]+"</label>";
  			}
  			
  			opciones_setup = opciones;
  			//dia_inicio = opciones.PrimerDia;
  			//rutaXml = opciones.ArchivoXml;
  			//selector = opciones.Selector;
  			//combo = opciones.Combo;
  			//urlAction = opciones.urlAction;
  			
  			CrearCalendario(0);
  			
		});};
	
		$.fn.reset = function() {
			$("#"+opciones_setup.NombreDivFechas).html("");
			getCalendario = null;
			//xmlCalendario = null;
			MesSeleccionado = 0;
			CualMes=0;
			CrearCalendario(0);
			cargar_formulario();
		};
		

		
	
})(jQuery);
  			
  			
  			
/*jQuery.fn.setup = function(Opciones){
	for(i=0; i<12; i++){
		NombreMes[i+1] = Opciones.Meses[i];
	}
	for(s=0; s<7; s++){
		diasSemana[s] = "<acronym title=\""+Opciones.Dias[s]+"\">"+Opciones.DiasCorto[s]+"</acronym>";
	}
};

jQuery.fn.CrearCalendario = function(QueMes){
	CrearCalendario(QueMes);
};*/

function CrearCalendario(KeMes){
/*	if (window.XMLHttpRequest){
		getCalendario=new XMLHttpRequest();
	}else if (window.ActiveXObject){
		getCalendario=new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (getCalendario){
		var url="calendario.xml";
		getCalendario.onreadystatechange=CambioDeEstado;
		getCalendario.open("GET",url,true);
		getCalendario.send(null);
		CualMes=KeMes;
	}else{
		alert ("Tu explorador no soporta XMLHttpRequest");
	}
}
function CambioDeEstado(){
	if (getCalendario.readyState == 4){
		xmlCalendario = getCalendario.responseXML;
		xmlCalendario = xmlCalendario.getElementsByTagName('cita');
		setCal(CualMes);
	}*/
	var cadenaselector = '';
	var cadenaExtras = "";
	if(opciones_setup.Selector!=''){
		cadenaselector = "&"+opciones_setup.Selector+"="+($("#"+opciones_setup.Selector).val());
		//alert(cadenaselector);
	}
	
	if (opciones_setup.NumeroExtraCombos!=0){
		for(i=0; i < opciones_setup.NumeroExtraCombos; i++){
			cadenaExtras = cadenaExtras + "&" + opciones_setup.IdCombos[i] + "=" + $("#"+opciones_setup.IdCombos[i]).val();
		}
	}
	
	var now = new Date();
	mes = mesReal(KeMes, now)+1;
	anio = anioReal (KeMes, now);
	$.ajax({
        type: "POST",
		//url: rutaXml,
		url: opciones_setup.ArchivoXml,
        dataType: "xml",
		data:"mes="+mes+"&anio="+anio+cadenaselector+cadenaExtras,
		success: function(xml) {
			//CualMes=KeMes;
			xmlComp = xml.getElementsByTagName('cita');
			setCal(KeMes, xmlComp);
			//setCal(KeMes, xml.getElementsByTagName('cita'));	

		},
		error:function(a, b, c){/*alert("Error xml, si el problema persiste, pongase en contacto con su proveedor->"+a+"->"+b+"->"+c);*/}
	});
	//return ("hola");
}

function bisiesto(Anio) {
	if (Anio % 4 == 0){
		return true;
	}
	return false;
}

function diasPorMes(mes, Anio) {
	var meses = new Array(12);
	meses[1] = 31; // Enero
	meses[2] = (((Anio % 4 == 0) && (Anio % 100 != 0)) || (Anio % 400 == 0)) ? 29 : 28;
	meses[3] = 31; // Marzo
	meses[4] = 30; // Abril
	meses[5] = 31; // Mayo
	meses[6] = 30; // Junio
	meses[7] = 31; // Julio
	meses[8] = 31; // Agosto
	meses[9] = 30; // Septiembre
	meses[10] = 31; // Octubre
	meses[11] = 30; // Noviembre
	meses[12] = 31; // Diciembre
	return meses[mes];
}

function getNombreDelMes(mes) {
	
	
	/*var meses = new Array(12);
	meses[1] = "Enero";
	meses[2] = "Febrero";
	meses[3] = "Marzo";
	meses[4] = "Abril";
	meses[5] = "Mayo";
	meses[6] = "Junio";
	meses[7] = "Julio";
	meses[8] = "Agosto";
	meses[9] = "Septiembre";
	meses[10] = "Octubre";
	meses[11] = "Noviembre";
	meses[12] = "Diciembre";
	return meses[mes];*/
}

function mesReal(QueMes, now){
	var mes = now.getMonth()+QueMes;

	if(mes>11){
		resto = mes%12;
		mes = resto;
	}
	if(mes<0){
		resto = mes%12;
		if (resto == 0){
			resto = -12;
		}
		mes = resto + 12;
	}
	return mes;
}

function anioReal(QueMes, now){
	var anio = now.getYear();
	if (anio < 1000) {
		anio+=1900;
	}
	if((now.getMonth()+QueMes)<0){
		if(((now.getMonth()+QueMes)%12)==0){
			anio = anio + parseInt((now.getMonth()+QueMes)/12);
		}else{
			anio = anio + parseInt((now.getMonth()+QueMes)/12) - 1;
		}
	}else{
		anio = anio + parseInt((now.getMonth()+QueMes)/12);
	}
	
	return anio;
}

function setCal(QueMes, xml) {
	var now = new Date();
	
	mes = mesReal(QueMes, now);
	/*var mes = now.getMonth()+QueMes;

	if(mes>11){
		resto = mes%12;
		mes = resto;
	}
	if(mes<0){
		resto = mes%12;
		if (resto == 0){
			resto = -12;
		}
		mes = resto + 12;
	}*/
	/*if((now.getMonth()+QueMes)<0){
		if(((now.getMonth()+QueMes)%12)==0){
			anio = anio + parseInt((now.getMonth()+QueMes)/12);
		}else{
			anio = anio + parseInt((now.getMonth()+QueMes)/12) - 1;
		}
	}else{
		anio = anio + parseInt((now.getMonth()+QueMes)/12);
	}*/
	anio = anioReal(QueMes, now);
	
	var fecha = now.getDate();
	//Semana empieza en domingo
	//var primerDia = new Date(anio, mes, 1);
	//Semana empieza en Lunes
	var primerDia = new Date(anio, mes, opciones_setup.PrimerDia);
	var primerDia2 = primerDia.getDay();
	primerDia = null;
	var dias = diasPorMes(mes+1, anio);
	drawCal(primerDia2 + 1, dias, fecha, mes+1, anio, xml);
	//drawCal(primerDia2, dias, fecha, mes+1, anio);
}

function drawCal(firstDay, lastDate, date, Mes, Anio, Xml) {
	var now = new Date();
	var codigo = "";
	codigo += '<div id="boxcal">';
	codigo += '<table class="tabla">';
	codigo += '<tr class="encabezadosup"><td id=calen_anterior class="encabezado" ><img src="../images/prev_calendario.png" width="22px"></td><td class="encabezado" colspan="5">';
	//codigo += getNombreDelMes(Mes) + ' ' + Anio;
	codigo += NombreMes[Mes] + ' ' + Anio;
	codigo += '</td><td id=calen_siguiente align=right class="encabezado"><img src="../images/next_calendario.png" width="22px"></td></tr>';
	
	/*var diasSemana = new Array(7);
	diasSemana[0] = "<acronym title=\"Lunes\">L</acronym>";
	diasSemana[1] = "<acronym title=\"Martes\">M</acronym>";
	diasSemana[2] = "<acronym title=\"Miercoles\">M</acronym>";
	diasSemana[3] = "<acronym title=\"Jueves\">J</acronym>";
	diasSemana[4] = "<acronym title=\"Viernes\">V</acronym>";
	diasSemana[5] = "<acronym title=\"Sabado\">S</acronym>";
	diasSemana[6] = "<acronym title=\"Domingo\">D</acronym>";*/
	
	codigo += '<tr>';
	for (var dayNum = 0; dayNum < 7; ++dayNum) {
		codigo += '<td class="celdaDiaSemana">' + diasSemana[dayNum] + '</td>';
	}
	codigo += '</tr>';
	
	var cDia = 1;
	var curCell = 1;
	
	for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
		codigo += '<tr>';
		for (var col = 1; col <= 7; ++col) {
			if (cDia > lastDate){
				if (col==7){
				break;
				}
			}
			if (curCell < firstDay || cDia>lastDate) {
				codigo += '<td class="celda">&nbsp;</td>';
				curCell++;
			} else {
				var textoCelda = cDia;
				var infoCelda = "";
				var textoTd = '<td class="celda">';
				for (i=0;i<Xml.length;i++){
					//var fecha = xmlCalendario[i].getAttribute('fecha');
					var fecha = Xml[i].getElementsByTagName('fecha').item(0).firstChild.data;
					if (fecha == cDia+ "-" + Mes + "-" + Anio){
						/*var titulo = Xml[i].getElementsByTagName('titulo').item(0).firstChild.data;
						var descripcion = Xml[i].getElementsByTagName('descripcion').item(0).firstChild.data;
						textoCelda = '<a href="#" class="diacita" onclick="alert(\''+descripcion+'\');return false" title="'+titulo+'">' + cDia + '</a>';*/
						/*infoCelda="Fundacion Autor";*/
						infoCelda = Xml[i].getElementsByTagName('texto').item(0).firstChild.data;						
						textoTd = '<td class="celdacita" alt="'+ infoCelda +'"  title="'+ infoCelda +'">';

					}
				}
				if(opciones_setup.seleccionable == 1){
					$('#'+opciones_setup.NombreDivFechas+' .selec').each(function(){
						if($(this).html()== cDia + "/" + Mes + "/" + Anio){
							if (textoTd == '<td class="celdacita">'){
								textoTd = '<td class="selected celdacita">';
							}else{
								textoTd = '<td class="selected">';
							}
						}
					});
				}
				/*if (cDia == date && Mes == now.getMonth()+1) {
					textoTd = '<td class="hoy">';
				}*/
		
				codigo += textoTd + '<div class="textocelda">' + textoCelda + '</div>' + '<div class="infocelda"> </div></td>';
				cDia++;
			}
		}
		codigo += '</tr>';
	}
	
	codigo += '</table>';
	codigo += '</div>';
	
	objeto.html(codigo);

	//document.getElementById("boxcalendario").innerHTML=codigo;
	var f =new Date();
	var mesX;
	var anioX;
	var LinkSiguiente = $('#calen_siguiente', objeto);
	var LinkAnterior = $('#calen_anterior', objeto);
	var CeldaCalendario = $('.celda, .celdacita, .hoy, .selected', objeto); 

	LinkSiguiente.click(function() {
		//CrearCalendario(++MesSeleccionado);
		//f=Date();
		setCal(++MesSeleccionado, xmlComp);
		anioX=f.getFullYear();
		mesX=((f.getMonth()+1)+(MesSeleccionado));
		if (mesX>12){
			anioX=(anioX+1);
		}
		/*alert(MesSeleccionado);
		alert(f.getMonth());
		alert("m"+mes+"/a"+anio);*/
		//eventos("m"+mesX+"/a"+anioX);
		
	});
	
	LinkAnterior.click(function(){
		//CrearCalendario(--MesSeleccionado);
		setCal(--MesSeleccionado, xmlComp);		
		//f=Date();
		anioX=f.getFullYear();
		mesX=((f.getMonth()+1)+(MesSeleccionado));
		if (mesX>12){
			anioX=(anioX+1);
		}
		/*alert(MesSeleccionado);
		alert(f.getMonth());
		alert("m"+mes+"/a"+anio);*/
		//eventos("m"+mesX+"/a"+anioX);
	});
	var id;
	CeldaCalendario.click(function(){
		//$(this).removeClass('celda');
		//$(this).addClass('selected');
		if(opciones_setup.seleccionable==1){
			if($(this).attr('class')=='selected' || $(this).attr('class')=='selected celdacita'){
				if($(this).attr('class')=='selected'){
					$(this).attr('class','celda');
				}else{
					$(this).attr('class','celdacita');
				}
				$(this).css('background-color','#FFFFFF');
				quitarFecha(this);
			}else{
				if($(this).attr('class')=='celdacita'){
					$(this).attr('class','selected celdacita');
				}else{
					$(this).attr('class','selected');
				}
				var Selected = $('.selected', objeto);
				Selected.css('background-color','#CCCCCC');
				agregarFecha(this);
				//$("#fechasSelected").append($(this).html()+'/'+(mes+1)+'/'+Anio+';<br />');
			}
		}else{
			if($(this).attr('class')=='selected' || $(this).attr('class')=='selected celdacita'){
				//quitarFecha(this);
			}else{
				agregarFechaSeleccionable(this);
				//$("#fechasSelected").append($(this).html()+'/'+(mes+1)+'/'+Anio+';<br />');
			}
		}
		
		clearTimeout(id);
		id = setTimeout("cargar_formulario();",opciones_setup.timeout);
		if(opciones_setup.OcultarInformacion ==1){
			$("#habitaciones").css("display", "block");
			$("#habitaciones2").css("display", "none");
		}
		
		
	});	

	CeldaCalendario.mouseover(function(){
		if($(this).attr('class')=='selected' || $(this).attr('class')=='selected celdacita' || $(this).attr('class')=='celdacita'){
			$(this).css('background-color','#1A5DB8');
			$(this).css('color','#ffffff');
			$(this).css('cursor','pointer');
		}
		
		
	});
	CeldaCalendario.mouseout(function(){
		//if(opciones_setup.seleccionable==1){
			if($(this).attr('class')=='selected' || $(this).attr('class')=='selected celdacita' || $(this).attr('class')=='celdacita'){
				$(this).css('background-color','#FFFFFF');
				$(this).css('color','#1A5DB8');
			}
		//}
	});
	
	/*$('#sel').click(function(){fechasSeleccionadas();});
	
	function fechasSeleccionadas(){
		//$("#texto").html("");
		var celdasSelected = $('.selected', objeto);
		celdasSelected.each(function(){
			$("#texto").append($(this).html()+'-'+MesSeleccionado);
		});
	}*/

	//function cargar formulario
	
	$.fn.cargarformulario = function() {
		cargar_formulario();
	};	
	
	function agregarFechaSeleccionable (this_fecha){
		fecha = generarFecha(this_fecha);
		
		//alert($(this_fecha).find('.textocelda').html());
		diaSelec = ($(this_fecha).children('.textocelda').html());

		//alert(('.textocelda').html());
		$("#"+opciones_setup.NombreDivFechas).html("<ul></ul>");
		
		
		fechaid = diaSelec+''+(mes+1)+''+Anio;
		elementoLi = '<li class="selec" id="'+fechaid+'">'+fecha+'</li>';
		
		ultima_fecha = fecha;
		$("#"+opciones_setup.NombreDivFechas+" ul").append(elementoLi);
	}	
	
	function agregarFecha (this_fecha){
		fecha = generarFecha(this_fecha);
		
		//alert($(this_fecha).find('.textocelda').html());
		diaSelec = ($(this_fecha).children('.textocelda').html());

		//alert(('.textocelda').html());
		if($("#"+opciones_setup.NombreDivFechas+" ul").html()==null){
			$("#"+opciones_setup.NombreDivFechas).append("<ul></ul>");
		}
		
		fechaid = diaSelec+''+(mes+1)+''+Anio;
		elementoLi = '<li class="selec" id="'+fechaid+'">'+fecha+'</li>';
		
		ultima_fecha = fecha;
		$("#"+opciones_setup.NombreDivFechas+" ul").append(elementoLi);
	}
	function generarFecha(this_fecha){
		
		diaSelec = ($(this_fecha).children('.textocelda').html());
		
		
		if (diaSelec==null){
			fecha="0";
		}else{
			if(diaSelec<10)
				{
				diaSelec="0"+diaSelec;
				}
			mesSelec=mes+1;
			if(mesSelec<10)
				{
				mesSelec="0"+mesSelec;
				}
			fecha = diaSelec+'/'+mesSelec+'/'+Anio;
		}
		
		return fecha;
	}
	
	function quitarFecha (this_fecha){
		diaSelec = ($(this_fecha).children('.textocelda').html());
		fechaid = diaSelec+''+(mes+1)+''+Anio;
		//$("#fechasSelected ul #"+fechaid).attr('class','unselec');
		$("#"+opciones_setup.NombreDivFechas+" ul #"+fechaid).after($(this).html()).remove();
	}
}

function cargar_formulario(){
	var ultima_fecha="";

	$('#'+opciones_setup.NombreDivFechas+' .selec').each(function(){
		ultima_fecha = $(this).html();
	});
		
	if(opciones_setup.RecargaImagenOriginal==1){	//reseteo de imagenes frontend cuando no hay fechas marcadas en el calendario
		if(ultima_fecha ==""){
			eventoRadio('0', '0');
		}
	}
	
	var cadenacombo = "";
	var cadenaExtras = "";
	var cadenaRangoDias = "";
	
	if (opciones_setup.Combo!=""){
		cadenacombo = "&combo="+$("#"+opciones_setup.Combo).val();		
	}
	
	if (opciones_setup.NumeroExtraCombos!=0){
		for(i=0; i < opciones_setup.NumeroExtraCombos; i++){
			cadenaExtras = cadenaExtras + "&" + opciones_setup.IdCombos[i] + "=" + $("#"+opciones_setup.IdCombos[i]).val();
		}
	}
	
	if (opciones_setup.EnviarRango == 1){
		cadenaRangoDias = "&fechas_selected=";
		$(".selec").each(function(){
			cadenaRangoDias += $(this).html()+"|";
		});
		cadenaRangoDias = cadenaRangoDias.substr(0, cadenaRangoDias.length-1);
	}
	
	cadena = "ultima_fecha=" + ultima_fecha + cadenacombo + cadenaExtras + cadenaRangoDias;
	

	if(opciones_setup.cli==1 && ultima_fecha!="0"){

		$.ajax({  
	   		type: "POST",
	  	 	url: "resultados_listadoeventos.php",  
	  	 	data: "pagina=1&fechabuscador="+ultima_fecha, 
	   		success: function(data){
			var cadenas = data.split('///'); 
			$("#resultados_listadocursos1").html(cadenas[0]);
			$("#resultados_listadocursos2").html(cadenas[1]);
			$("#totalespie").html(cadenas[2]);
			$("#totalescabecera").html(cadenas[3]);
			$("#busquedaporfecha").html(cadenas[4]);
			//$("#volvertodoseventos").html(cadenas[5]);

	   	}});
	}
}

