	dias = function(){
		var date = new Date() ;
		this.hoy = date.getDate() ;
		this.actual = date.getDate() ;
		this.nombresCortos = new Array('Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab') ;
		this.nombresLargos = new Array('Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado') ;
	}
	
	meses = function(){
		var date = new Date() ;
		this.actual = date.getMonth() ;
		this.hoy = date.getMonth() ;
		this.nombresCortos = new Array('Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic') ;
		this.nombresLargos = new Array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre') ;
		this.ultimosDias = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) ;
		this.semanas = 6 ;
		this.dias = new dias() ;
	}
	
	anos = function(){
		var date = new Date() ;
		this.actual = date.getFullYear() ;
		this.hoy = date.getFullYear() ;
		this.anos = new Array(2006, 2007, 2008) ;
		this.meses = new meses() ;
		this.eventos = null ;
		this.paraFormulario = false ;
		this.bisiesto(this.actual) ;
		this.setPrimerDia() ;
		this.contenedor = null ;
	}
	
	anos.prototype.agregarEvento = function(evento, elemento, funcion) {
		if(elemento.addEventListener){
			elemento.addEventListener(evento, funcion, false);
		}
		else if(elemento.attachEvent){
			var retorno = elemento.attachEvent('on' + evento, funcion) ;
			return retorno ;
		}
		else throw 'No se puede agregar el evento' ;
	}
	
	function emergerCalendario(input){
			
		// en esta funcion, el this es el input que tiene el evento y no anos, asaber porque pero me conviene :) 
		var contenedor = input.parentNode ;
		inputDeUsoActual = input ; // indico cual es el input que se esta usando para luego poder retornarle el valor

		var calendarioEmergente = new anos() ;
		
		if(document.getElementById('calendarioEmergente')){ // si ya hay un div con id 'calendario' ...
			var div = document.getElementById('calendarioEmergente') ;
		}
		else{ // si no se crea uno
			var div = document.createElement('div') ;
			div.id = 'calendarioEmergente' ;
			div.style.position = 'absolute' ;
			//div.style.zIndex = '1000' ;
		}
		contenedor.appendChild(div) ;
		calendarioEmergente.imprimir() ;
	}

	anos.prototype.setearValorInput = function(fecha){
		inputDeUsoActual.value = fecha ;
		/*Esto es solo para el sitio de Scotiaseguros (Quitarlo si no es este sitio)*/
		if(document.getElementById('edad')){
			var edad = document.getElementById('edad'); var fecha = inputDeUsoActual.value; fecha = fecha.split('/'); edad.value= fecha[2]+'/'+fecha[1]+'/'+fecha[0];
		}
		if(document.getElementById('edad1') && inputDeUsoActual.id == 'Birth'){
			var edad = document.getElementById('edad1'); var fecha = inputDeUsoActual.value; fecha = fecha.split('/'); edad.value= fecha[2]+'/'+fecha[1]+'/'+fecha[0];
		}
		if(document.getElementById('edad2') && inputDeUsoActual.id == 'Birth_2'){
			var edad = document.getElementById('edad2'); var fecha = inputDeUsoActual.value; fecha = fecha.split('/'); edad.value= fecha[2]+'/'+fecha[1]+'/'+fecha[0];
		}
		/*-----------------------*/
		this.removerCalendario() ;
	}
	
	anos.prototype.removerCalendario = function(){
		
		if(document.getElementById('calendarioEmergente')){
			contenedor = document.getElementById('calendarioEmergente') ;
			contenedor.parentNode.removeChild(contenedor) ;
		}
		else{
			alert('No existe el contenedor del calendario') ;
		}
	}
	
	anos.prototype.esParaFormulario = function(boleano){
		this.paraFormulario = boleano ;
		this.buscarInputsFecha() ;
	}
		
	anos.prototype.buscarInputsFecha = function(){
	
		var inputs = document.getElementsByTagName('input') ;
		for(i = 0 ; i < inputs.length ; i++){
			if(inputs[i].getAttribute('fecha') == 'true'){
			
				inputs[i].onclick = function(){ emergerCalendario(this) }
				inputs[i].style.cursor = 'pointer' ;
			}
		}
	}
		
	anos.prototype.setPrimerDia = function(){
		var miFecha = new Date(this.actual, this.meses.actual, 1, 0, 0, 0) ;
		this.primerDia = miFecha.getDay() ;
	}
	
	anos.prototype.bisiesto = function(ano){
		if((ano % 4 == 0 && ano % 100 != 0) || ano % 400 == 0){
			this.meses.ultimosDias[1] = 29 ;
		}
		else{
			this.meses.ultimosDias[1] = 28 ;
		}
	}
	
	anos.prototype.cambiarMes = function(mes){
		if(mes == 12){ // si el mes va a ser 12 (despues de diciembre)...
			this.cambiarAno((this.actual + 1), 0) ; // ... se setea el primer mes del año siguiete (enero)
		}else if(mes == -1){ // si el mes va a ser -1 (antes de enero)... 
			this.cambiarAno((this.actual - 1), 11) ; // ... se setea al ultimo mes (diciembre) del año anterior
		}else{ // sino, se cambia el mes, se busca cual es el primer dia y se imprime
			this.meses.actual = mes ;
			this.setPrimerDia() ;
			this.imprimir() ;
		}
	}
	
	anos.prototype.cambiarAno = function(ano, mes){
		this.bisiesto(ano) ;
		this.actual = ano ;
		this.meses.actual = mes ;
		this.setPrimerDia() ;
		this.imprimir() ;
	}
	
	anos.prototype.setFechaEventos = function(stringArrayFechas){
		this.eventos = stringArrayFechas.split(',') ;
	}
	
	anos.prototype.imprimir = function(){
				
		htmlCalendario =	'<table cellpadding="0" cellspacing="0" style="font-family: arial; font-size: 12px">' ;
		
		// se imprime el selector de años
		htmlCalendario +=	'<tr>' ;
		htmlCalendario +=		'<td class="nombre-ano">' ;
		htmlCalendario +=			'<a class="nombre-ano" href="javascript:calendario.cambiarAno(' + (this.actual - 1) + ', 0)"><<</a>' ;
		htmlCalendario +=		'</td>' ;
		htmlCalendario +=		'<td  class="nombre-ano" colspan =" ' + (this.meses.dias.nombresCortos.length - 2) + ' ">' ;
		htmlCalendario +=			this.actual ;
		htmlCalendario +=		'</td>' ;
		htmlCalendario +=		'<td class="nombre-ano">' ;
		htmlCalendario +=			'<a class="nombre-ano" href="javascript:calendario.cambiarAno(' + (this.actual + 1) + ', 0)">>></a>' ;
		htmlCalendario +=		'</td>' ;
		htmlCalendario +=	'</tr>' ;
		// hasta aqui se imprime el selector de años
		
		// se imprime el selector de meses
		htmlCalendario +=	'<tr>' ;
		htmlCalendario +=		'<td class="nombre-mes">' ;
		htmlCalendario +=			'<a href="javascript:calendario.cambiarMes(' + (this.meses.actual - 1) + ')"><<</a>' ;
		htmlCalendario +=		'</td>' ;
		htmlCalendario +=		'<td class="nombre-mes" colspan =" ' + (this.meses.dias.nombresCortos.length - 2) + ' ">' ;
		htmlCalendario +=			this.meses.nombresLargos[this.meses.actual] ;
		htmlCalendario +=		'</td>' ;
		htmlCalendario +=		'<td class="nombre-mes">' ;
		htmlCalendario +=			'<a href="javascript:calendario.cambiarMes(' + (this.meses.actual + 1) + ')">>></a>' ;
		htmlCalendario +=		'</td>' ;
		htmlCalendario +=	'</tr>' ;
		// hasta aqui se imprime el selector de meses
		
		htmlCalendario +=	'<tr>' ;
		for(nombreDia in this.meses.dias.nombresCortos){
			htmlCalendario += '<td class="cabeceras">' + this.meses.dias.nombresCortos[nombreDia] + '</td>' ;
		}
		htmlCalendario +=	'</tr>' ;
		var contador = 1 ;
		var dia = 1 ;
		for(var semana = 0 ; semana < this.meses.semanas ; semana++){
			htmlCalendario +=	'<tr>' ;
			
			for(nombreDia in this.meses.dias.nombresCortos){
				if(this.eventos != null){ // si se setearon los eventos
					// este for (del arreglo de eventos (dia - mes)) cambia el estilo y agrega eventos al td donde hay eventos
					for(var evento in this.eventos){
						if((dia == this.eventos[evento].split('-')[0] && this.meses.actual == this.eventos[evento].split('-')[1]) || (dia == this.meses.dias.hoy && this.meses.actual == this.meses.hoy && this.actual == this.hoy)){
							tdTemporal = '<td class="evento">' ;
							break ;
						}else{
							tdTemporal = '<td class="dias">' ;
							continue ;
						}
					} // fin del for que cambia el td de eventos
				}else{
					tdTemporal = '<td class="' + (dia == this.meses.dias.hoy && this.meses.actual == this.meses.hoy && this.actual == this.hoy ? 'evento' : 'dias') + '">' ;
				} // fin de la comprobacion si los eventos fueron seteados
				htmlCalendario += tdTemporal ; // agrego al html el td que puede o no contener eventos
				
				if(contador > this.primerDia && dia <= this.meses.ultimosDias[this.meses.actual]){
					htmlCalendario += '<a ' + (dia == this.meses.dias.hoy && this.meses.actual == this.meses.hoy && this.actual == this.hoy ? 'class="evento"' : '') + ' href="javascript:calendario.setearValorInput(\'' + dia + '/' + (this.meses.actual + 1) + '/' +this.actual+ '\')">' + dia + '</a>' ;
					dia++ ;
				}else{
					htmlCalendario += '&nbsp;' ;
				}
				contador++ ;
				htmlCalendario += '</td>' ;
			}
			htmlCalendario += '</tr>' ;
		}
		
		htmlCalendario +=	'<tr>' ;
		htmlCalendario +=		'<td align="right" colspan =" ' + (this.meses.dias.nombresCortos.length) + ' ">' ;
		htmlCalendario +=			'<a href="javascript:calendario.removerCalendario()" style="color: #f00000">Cerrar X</span>' ;
		htmlCalendario +=		'</td>' ;
		htmlCalendario +=	'</tr>' ;
		
		htmlCalendario +=	'<tr>' ;
		htmlCalendario +=		'<td class="hoy-es" colspan =" ' + (this.meses.dias.nombresCortos.length) + ' ">' ;
		htmlCalendario +=			'Hoy es ' + this.meses.dias.hoy + ' de ' + this.meses.nombresLargos[this.meses.hoy] + ' del ' + this.hoy ;
		htmlCalendario +=		'</td>' ;
		htmlCalendario +=	'</tr>' ;
		htmlCalendario +=	'</table>' ;
		
		if(document.getElementById('calendario')){
			document.getElementById('calendario').innerHTML = htmlCalendario ;
		}
		else	if(document.getElementById('calendarioEmergente')){
			// el calendario emergente se mete en otro div con id 'calendarioEmergente'
			document.getElementById('calendarioEmergente').innerHTML = htmlCalendario ;
		}
		else{
			alert('Si llamás la función imprimir(), debés poner un div con id \'calendario\' para mostrarlo ahí...') ;
		}

	}
