//Este script fue hecho por Rene Lopez Caballero el 25 de septiembre de 2003 para http://tlaxcala.tlax.com
//puedes usar este script siempre y cuando mantengas este comentario
//Ultima modificacion 22 de mayo 2004 se vuelve calendario perpetuo
// 5 de marzo 2005 se cambian los estilos
// 16 de marzo 2006 se pasa de ser una funcion a un objeto
var Calendario = Class.create();
Calendario.prototype = {
	initialize: function( id, mes, anio ) {
		this.meses = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
		//dias : ['Domingo','Lunes','Martes','Miercoles','Jueves','Viernes','Sabado'],
		this.dias = ['D','L','M','M','J','V','S'],
		this.ligaDias = '',
		this.ligaMeses = '',
		this.id = id;
		var fechaHoy = new Date();
		this.mesSeleccionado = this.mesHoy = fechaHoy.getMonth();
		this.anioSeleccionado = this.anioHoy = fechaHoy.getFullYear();
		this.diaSeleccionado = this.diaHoy = fechaHoy.getDate();
		this.ponerMes(mes);
		this.ponerAnio( anio );
		this.diasSeleccionados = [];
	},
	actualizar: function( mes, anio ){
		this.ponerMes(mes);
		this.ponerAnio( anio );
		$( this.id ).innerHTML = this.crear();
	},
	ponerMes: function( mes ){
		this.mesCalendario = ( mes == undefined ) ? this.mesHoy : mes;;
	},
	ponerAnio: function( anio ){
		this.anioCalendario = ( anio == undefined ) ? this.anioHoy : anio;
	},
	ponerDiaSeleccionado: function( dia, mes, anio ) {
		this.diaSeleccionado = ( dia == undefined ) ? this.diaHoy : dia;
		this.mesSeleccionado = ( mes == undefined ) ? this.mesHoy : mes;
		this.anioSeleccionado = ( anio == undefined ) ? this.anioHoy : anio;
	},
	ponerLigaDias: function( url ){
		this.ligaDias = url;
	},
	ponerLigaMeses: function( url ){
		this.ligaMeses = url;
	},
	ponerDiasSeleccionados: function( arreglo ) {
		this.diasSeleccionados = arreglo;
	},
	parseLigaMeses: function( mes, anio ){
		return this.ligaMeses.replace( /{mes}/gi, mes ).replace( /{anio}/gi, anio );
	},
	parseLigaDias: function( dia, mes, anio ){
		return this.ligaDias.replace( /{dia}/gi, dia ).replace( /{mes}/gi, mes ).replace( /{anio}/gi, anio );
	},
	imprimir: function(){
		document.write(  "<div id='" + this.id + "'>" + this.crear() + "</div>" );
	},
	crear: function() {
		var i, htmlCal, mesAnterior, mesSiguiente, anioAnterior, anioSiguiente, htmlDia;
		var iterador = new Date( this.anioCalendario, this.mesCalendario, 1 );
		mesAnterior = ( this.mesCalendario == 0 ) ? 11 : this.mesCalendario - 1;
		anioAnterior = ( this.mesCalendario == 0 ) ? this.anioCalendario-1 : this.anioCalendario;
		mesSiguiente = ( this.mesCalendario == 11 ) ? 0 : this.mesCalendario + 1;
		anioSiguiente = ( this.mesCalendario == 11 ) ? this.anioCalendario + 1 : this.anioCalendario;

		var htmlCal = "<table>";
		htmlCal += "<caption>"
		if( !isEmpty( this.ligaMeses ) )
			htmlCal += "<a href=\"" + ( this.parseLigaMeses( mesAnterior, anioAnterior ) ) + "\">&lt;&lt;&nbsp;</a>";
		htmlCal += this.meses[this.mesCalendario] + " " + this.anioCalendario;
		if( !isEmpty( this.ligaMeses ) )
			htmlCal += "<a href=\"" + this.parseLigaMeses( mesSiguiente, anioSiguiente ) + "\">&nbsp;&gt;&gt;</a>";
		htmlCal += "</caption><thead><tr>";

		for( i=0;i<7;i++)
			htmlCal+="<th>"+this.dias[i]+"</th>";
		htmlCal+="</tr></thead>";

		htmlCal+="<tbody>";

		if( iterador.getDay() != 0 )
			htmlCal+="<tr>";
		for( i=0;i<iterador.getDay();i++)
			htmlCal+="<td>&nbsp;</td>";
		i=1;
		var diaSemana;
		do{
			diaSemana = iterador.getDay();
			if (iterador.getDay() == 0)
				htmlCal+="<tr>";

			if( !isEmpty( this.ligaDias ) && inArray( i ,this.diasSeleccionados ) )
				htmlDia = "<a href='"+ this.parseLigaDias( iterador.getDate(), iterador.getMonth()+1, iterador.getFullYear() ) +"'>" + i + "<a>";
			else
				htmlDia = i;

			if( ( iterador.getDate() == this.diaSeleccionado ) && ( this.mesCalendario == this.mesSeleccionado ) && ( this.anioCalendario == this.anioSeleccionado ) )
				htmlCal+="<td class='hoy'>"+htmlDia+"</td>";
			else
				htmlCal+="<td>"+htmlDia+"</td>"
;
			if( diaSemana == 6)
				htmlCal+="</tr>";
			i++;
			iterador.setDate(i);
		} while( ( i< 32 ) && (i == iterador.getDate() ) );

		if( i>0 ) {
			for( i=diaSemana; i<6; i++ )
				htmlCal+="<td>&nbsp;</td>";
			htmlCal+="</tr>";
		}
		htmlCal+="</tbody></table>";
		return htmlCal;
	}
}
