/***********************************************************
  CALENDARIOS
  ----------------------------------------------------------
  Dibuja un mes del calendario
  
  Eduard Diaz: Julio 2006
************************************************************/
var Calendario = Class.create();
Calendario.prototype ={
	initialize:function(mostrarcontroles,fecha,target,dias_activados,idFieldDate, numMeses, accionGenericaTodos, accionGenericaEnAdelante, fechaInicioConsulta, fechaFinConsulta){
	  var calendario = this;
	  var partesFecha;
	  this.recargado=false;
	  this.field = idFieldDate || false;
 	  this.dia = 1;
	  this.mes = 1;
	  this.anno = 2000;
	  this.numdias = 30;
	  this.accionGenericaTodos = accionGenericaTodos;
	  this.accionGenericaEnAdelante = accionGenericaEnAdelante;
	  this.numMeses= numMeses || 1;
	  this.diainiciomes = 0;
	  this.bisiesto = false;
	  this.diasfestivos = new Array();
	  //this.registrosEDC = regEDC || {};
	  //this.registrosEDC = {};
	  this.dias_activados = dias_activados || new Array();
	  this.dias_con_datos = new Array();
	  this.aToolTips = new Array();
	  this.nomsemanal = strNomSemanal;
	  this.meses = strMeses;
	  this.numdiasmeses = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	  this.mostrarcontroles= mostrarcontroles || false;
		this.idtarget = target || 'calendario'; 
		this.fechaInicioConsulta = fechaInicioConsulta || '';
		this.fechaFinConsulta = fechaFinConsulta || '';
		
		if (this.mostrarcontroles){
		  //addEventListener
      this.eventMesAnterior = this.event_mes_anterior.bindAsEventListener(this);
      this.eventMesSiguiente = this.event_mes_siguiente.bindAsEventListener(this);
    }

		this.ini(fecha,this.idtarget,this.dias_activados);

	},
	ini:function(fecha,target,dias_activados){
		this.idtarget=target;
		if (dias_activados){
			//this._tratarRegistrosEDC(fecha);
		}
		if (fecha==''){ 
			this._get_hoy();
			this._render_calendario();
		}
		else{
			var d = fecha.split('/');
			if (d.length==3){
				this._ini_calendario(d[0],d[1],d[2]);
				this._render_calendario();
   		}else {
   					alert(strErrorFecha);
   					return false;
   		}
   	}
	},	
	event_mes_anterior:function(event){
		if(this.mes==1){
			this.anno--;
			this.mes=12;
			this.dia=1;
		}else{
			this.mes--;
			this.dia=1;
		}
		var fecha= this.dia+'/'+this.mes+'/'+this.anno;
		this.ini(fecha,this.idtarget);
		Event.stop(event);
	},
	event_mes_siguiente:function(event){
		if(this.mes==12){
			this.anno++;
			this.mes=1;
			this.dia=1;
		}else{
			this.mes++;
			this.dia=1;
		}
		var fecha= this.dia+'/'+this.mes+'/'+this.anno;
		this.ini(fecha,this.idtarget);
		Event.stop(event);			
	},
  updateInputDate:function(strDate){
    
    this.field.value=strDate;
  },				
	_get_hoy: function(dia,mes,anno){
    var d = new Date();
    this.anno = d.getFullYear(); //devuelve el año como número de cuatro digitos
    this.mes = d.getMonth() + 1; //getMonth() devuelve el numero de mes de 0 a 11
    this.dia = d.getDate(); //el dia del mes de 1 a 31 segun el mes.
    d.setDate(1); //dia del mes del 1 al 31
    this._bisiesto();
    this.numdias=this.numdiasmeses[this.mes-1];
    this.diainiciomes=d.getDay();
	},			
	_ini_calendario: function(dia,mes,anno){

    var tmp=mes-1;
		var d = new Date(anno,tmp, dia);
		this.anno = d.getFullYear(); //devuelve el año como número de cuatro digitos
		this.mes = d.getMonth() + 1; //getMonth() devuelve el numero de mes de 0 a 11
		this.dia = d.getDate(); //el dia del mes de 1 a 31 segun el mes.
		d.setDate(1); //dia del mes del 1 al 31
		this._bisiesto();
		this.numdias=this.numdiasmeses[this.mes-1];
		this.diainiciomes=d.getDay();
	},
	_bisiesto:function() {
    this.bisiesto=(!(this.anno % 4) && (this.anno < 1582 || this.anno % 100 || !(this.anno % 400))) ? true : false;
    if (this.bisiesto) this.numdiasmeses[1]=29;
 	},
  _get_diainiciomes:function() {
    var mes=this.mes - 1;
    var d = new Date(this.anno,this.mes,1);
//		d.setDate(1); //dia del mes del 1 al 31	
//		d.setMonth(this.mes); //el mes del año desde 0 (enero) hasta 11 (diciembre)
//		d.setFullYear(); //el año como número de cuatro digitos
		this.diainiciomes=d.getDay();
  },
  _get_datos_calendario:function(url, parametros){
    var tmpURL=url;
    var pars=parametros;
    new Ajax.Request(tmpURL, {parameters:pars, 
    							  onSuccess:function(t){alert(t.responseText);}, 
    							  onFailure:function(t){alert('Error ' + t.status + ' -- ' + t.statusText);}
    							  }
    					 );
  },
  _difDias:function(CadenaFecha1, CadenaFecha2) {
     var fecha1,fecha2
     //Obtiene dia, mes y año
     var fecha1 = CadenaFecha1.split('/');
     var fecha2 = CadenaFecha2.split('/');
     
     //Obtiene objetos Date
     var miFecha1 = new Date( fecha1[2], fecha1[1]-1, fecha1[0] );
     var miFecha2 = new Date( fecha2[2], fecha2[1]-1, fecha2[0] );
  
     //Resta fechas y redondea
     var diferencia = miFecha2.getTime() - miFecha1.getTime();
     var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
     //var segundos = Math.floor(diferencia / 1000)
     //alert ('La diferencia es de ' + dias + ' dias,\no ' + segundos + ' segundos.')
     //alert ('La diferencia es de ' + dias);
     return dias;
  },
  _entreFechas:function(fechaAComparar, fechaIni, fechaFin) {
     if(this._difDias(fechaIni,fechaAComparar) >= 0 && this._difDias(fechaAComparar,fechaFin) >= 0){
      return true;   
     }else{
      return false;
     }
  },
  _posicionDiaConDatos:function(dia){
    var tmpFecha,sFechaIni,sFechaFin,i;
    tmpFecha=''+ dia +'/'+ this.mes + '/'+this.anno
    for(i=1; i < this.dias_activados.length; i++){
      sFechaIni=this.dias_activados[i].fechaInicio;
      sFechaFin=this.dias_activados[i].fechaFinal;
      if(this._entreFechas(tmpFecha, sFechaIni, sFechaFin)){
        return i;
      }
    }  
    return false;
  },
  _tratarRegistrosEDC:function(dia) {
    this.dias_con_datos.push(dia);
  },
  _render_calendario:function() {
	var calendario=this;
	var tmp=0;
	var chkinicio=false;
	var d = new Date();
	var hoy_anno = d.getFullYear(); //devuelve el año como número de cuatro digitos
	var hoy_mes = d.getMonth() + 1; //getMonth() devuelve el numero de mes de 0 a 11
	var hoy_dia = d.getDate(); //el dia del mes de 1 a 31 segun el mes.    
  	var html_calendario='<table class="cal_mes">\n\t<tbody>\n';
  	var aToolTips = new Array();

  	if (this.mostrarcontroles){
	    html_calendario+='<tr><th id="'+this.idtarget+'_mes_anterior" class="cal_mes_anterior">&nbsp;<&nbsp; </th><th class="cal_titulo_mes" colspan="5"><b> '+this.meses[this.mes-1]+' '+this.anno+' </b></th><th id="'+this.idtarget+'_mes_siguiente" class="cal_mes_siguiente">&nbsp;>&nbsp;</th></tr>';
	}else{
	    html_calendario+='<tr><th class="cal_titulo_mes" colspan="7"><b> '+this.meses[this.mes-1]+' '+this.anno+' </b></th></tr>';
	}
	html_calendario+='<tr>';
	for(i=0;i<7;i++)
	{
		html_calendario+='<th>'+ this.nomsemanal[i] +'</th>';
	}
	html_calendario+='</tr>';
	//html_calendario+='<tr><th> Lu </th><th> Ma </th><th> Mi </th><th> Ju </th><th> Vi </th><th> Sa </th><th> Do </th></tr>';
	var inicio=this.diainiciomes - 1;
	if (inicio < 0 ) inicio=6; //para los meses que empiezan en domingo
	for (var i=0; i<6; i++)
	{
		html_calendario+='\t\t<tr>\n';
		for (var j=0; j<7; j++)
		{
			/****************************************************
			Diferenciamos entre las posiciones de la tabla 
			anteriores al dia 1 del mes, los dias del mes y
			las posiciones de la tabla posteriores al último dia
			del mes.
			*****************************************************/
			
			if(i==0 && j==inicio)chkinicio=true;
			else if(tmp > this.numdias)	chkinicio=false;
			if(chkinicio && tmp < this.numdias)
			{	//estamos dentro de esos dias del mes
				tmp++;
				//if((this.dias_activados.length >= 1) && !(this._entreFechas(tmp+'/'+this.mes+'/'+this.anno, this.fechaInicioConsulta, this.fechaFinConsulta))){
				//  html_calendario+='<td class="cal_dias_desactivado">'+tmp+'</td>';
				//}
			  if(this.field !=''){
					if (hoy_anno==this.anno && hoy_mes==this.mes && hoy_dia==tmp)
					{
  					    html_calendario+='<td class="cal_dias_hoy">';
  					}  					
					else if(j>4)
					{
  						html_calendario+='<td class="cal_dias_finde">';
  				}
  				else
  				{
  						html_calendario+='<td class="cal_dias">';
  				}
  				html_calendario+='<span onclick="updateInputDate(\'' + tmp + '/'+ this.mes + '/'+this.anno+'\', \'' + this.field + '\');return false;">'+tmp+'</span>';
					//pintamos las acciones genericas
					if(this.accionGenericaTodos != '' && this.dias_activados.length >= 1){
						html_calendario+=this.accionGenericaTodos;
					} 
					if(this.accionGenericaEnAdelante != '' && this.dias_activados.length >= 1){
						html_calendario+=this.accionGenericaEnAdelante;
					}
						html_calendario +='</td>';
				}else{
          //if(this.dias_activados.length >= 1 )
					//{
						if(this._posicionDiaConDatos(tmp))
						{
							if(j>4)
							{
								html_calendario+='<td class="cal_dias_finde">';
							}
							else if (hoy_anno==this.anno && hoy_mes==this.mes && hoy_dia==tmp)
							{
								html_calendario+='<td class="cal_dias_hoy"> ';
							}
							else
							{
								html_calendario+='<td class="cal_dias">'; 
							}
							html_calendario+=tmp
							//metemos el tooltip
							//this.aToolTips.push(tmp+'_'+this.mes+'_'+this.anno);
							//tmpNumToolTip=this.aToolTips.length-1;
							var sFechaAux=''+tmp+'/'+this.mes+'/'+this.anno;
							var tmpColor='1';
							var html_reg='';
							var contReg=0;  						
							//html_calendario+='<div class="EDC_Datos" id="div_tooltip_'+this.aToolTips[tmpNumToolTip]+'">';
							if(this.numMeses > 1){
								//metemos el tooltip
								this.aToolTips.push(tmp+'_'+this.mes+'_'+this.anno);
								tmpNumToolTip=this.aToolTips.length-1;  						  
								html_calendario+='<div class="EDC_Datos" id="div_tooltip_'+this.aToolTips[tmpNumToolTip]+'">';
								//obtenemos los registros
								for (tmpReg=1; tmpReg < this.dias_activados.length; tmpReg++){
									// Si el dia esta entre fechas lo pintamos
									if(this._entreFechas(sFechaAux, this.dias_activados[tmpReg].fechaInicio, this.dias_activados[tmpReg].fechaFinal))
									{
										html_reg+='<div style="clear:both;text-align:left;padding-top:5px;padding-bottom:5px; border-bottom:1px dotted #888;border-top:1px dotted #888;">'
										html_reg+=$(this.dias_activados[tmpReg].resultadoHTML).innerHTML;
										html_reg+='</div>';
										contReg++; 
									}
								}  						  
								html_calendario+='&nbsp;&nbsp;'+contReg+'&nbsp;&nbsp;';
								html_calendario+='</div>';
								html_calendario+='<div class="tooltip" style="display:none;" id="tooltip_'+this.aToolTips[tmpNumToolTip]+'">';
								//metemos los registros en la celda
								html_calendario+=html_reg;
								//cerramos el tooltip y la celda 
								html_calendario+='</div></td>';  						  
							}else{
								//obtenemos los registros
								for (tmpReg=1; tmpReg < this.dias_activados.length; tmpReg++){
									html_reg='';
									// Si el dia esta entre fechas lo pintamos
									if(this._entreFechas(sFechaAux, this.dias_activados[tmpReg].fechaInicio, this.dias_activados[tmpReg].fechaFinal)){
										//metemos el tooltip
										tmpNumToolTip=this.aToolTips.length
										this.aToolTips.push(tmp+'_'+this.mes+'_'+this.anno +'-'+tmpNumToolTip);
										tmpNumToolTip=this.aToolTips.length-1;  						  
										tmpColor=tmpReg % 8 + 1
										html_calendario+='<div class="EDC_Datos'+ tmpColor +'" id="div_tooltip_'+this.aToolTips[tmpNumToolTip]+'">';
										html_reg+='<div style="clear:both;text-align:left;padding-top:5px;padding-bottom:5px; border-bottom:1px dotted #888;border-top:1px dotted #888;">'
										html_reg+=$(this.dias_activados[tmpReg].resultadoHTML).innerHTML;
										html_reg+='</div>';
										contReg++; 
										html_calendario+='<span href="#">'+this.dias_activados[tmpReg].descripcion+'</span>';
										html_calendario+='</div>';
										html_calendario+='<div class="tooltip" style="display:none;" id="tooltip_'+this.aToolTips[tmpNumToolTip]+'">';
										//metemos los registros en la celda
										html_calendario+=html_reg;
										//cerramos el tooltip
										html_calendario+='</div>';
									}
								}
								//cerramos la celda 
								html_calendario+='</td>'; 					  						
							}
							this.dias_con_datos.push(tmp);
						}else if(j>4){
							  html_calendario+='<td class="cal_dias_finde"> '+tmp+' </td>';
						}else {
							  html_calendario+='<td class="cal_dias"> '+tmp+' </td>';
						}
					//}
				}
			}
			else
			{
				//rellenamos las celdas con espacios en blanco
				html_calendario+='<td class="cal_vacio"> &nbsp; </td>';
			}
		}
		html_calendario+='\t\t</tr>\n';
	}
	html_calendario+='\t</tbody>\n</table>\n';
	Element.update(this.idtarget, html_calendario);
	if(typeof cargado !='undefined' && this.dias_activados.length >= 1){
		var activator,tooltip;
		for (aux=0;aux < this.aToolTips.length; aux++){
			activator=''; 
			tooltip='';
			activator = document.getElementById('div_tooltip_'+this.aToolTips[aux]);
			tooltip = document.getElementById('tooltip_'+this.aToolTips[aux]);         
			if(activator !='' && tooltip !=''){
				if(!activator.getAttribute('activado')){
					Tooltip.add(activator, tooltip);
				}else{
					activator.setAttribute('activado','activado');
				}
			}
		}
	}
	//activamos el drag and drop
	if(this.dias_activados.length >= 1){
		for (aux=0;aux < this.aToolTips.length; aux++){ 
			//alert('div_tooltip_'+this.aToolTips[aux]);
			new Draggable('tooltip_'+this.aToolTips[aux],{revert:false});
		}
	}
	if (this.mostrarcontroles){
		Event.observe(this.idtarget+'_mes_anterior', 'click', calendario.eventMesAnterior);
		Event.observe(this.idtarget+'_mes_siguiente', 'click', calendario.eventMesSiguiente); 
	}
}
}

/***********************************************************
  CALENDARIOS
  ----------------------------------------------------------
  Dibuja un calendario de uno a varios meses
  
  Parámetros:
    - fecha:          date, fecha a partir de la cual se pintará el calendario
    - target:         string, id del div donde se dibujará el calendario  
    - dias_activados:  array, lista de dias activos (enlace a datos)
    - nummeses:       int, número de meses a pintar
    - strTitulo:      Título del calendario 
    - idfield:        Id del campo, utilizado para casos donde el calendario 
                      está asociado a un campo fecha
    -parametrosEDC:   Objeto con los datos de fecha inicio, fecha final y un booleano 
                      para distinguir el uso del calendario
                      {fechaInicio:'',fechaFinal:'',activado:true}
  
  Uso:
  var cal_1=new Calendarios(fecha,target,dias_activados,nummeses, strTitulo, idfield)
  A partir de una fecha determinada
	  var cal_1=new Calendarios('1/12/2005','calendario1',dias_activados, 3, 'trimestre', '');
	A partir del dia de hoy.
	  var cal_2=new Calendarios('','calendario2',dias_activados,6, 'semestre', '');
  
  Eduard Diaz: Julio 2006
************************************************************/
var Calendarios = Class.create();
Calendarios.prototype ={
	initialize:function(fecha,target,dias_activados,nummeses, strTitulo, idfield, parametrosEDC){
	  var calendarios= this;
	  this.field = idfield || false;
	  this.titulo = strTitulo || '';
	  this.dias_activados = dias_activados || {};
	  this.accionGenericaTodos='';
	  this.accionGenericaEnAdelante='';
	if (nummeses == -1) 
	{ 
		this.mostrarcontroles=true; 
		nummeses = 1;
	}
	else
		this.mostrarcontroles = false;


	  this.num_meses_render = nummeses || 1;
	  this.annos  = new Array();
	  this.meses  = new Array();
	  this.recarga = false;
	  this.nommeses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio','Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'];
	  this.calendarios  = new Array();
	  this.idtarget=target || 'calendario';
	  //this.EDC= parametrosEDC.activado || false;
	  this.fechaFinal = parametrosEDC.fechaFinal || fecha;
	  this.fechaInicio = parametrosEDC.fechaInicio || fecha;
		
		//alert(this.dias_activados.datos[0].fechaInicio);
		
		//addEventListener
    this.eventPeriodoAnterior = this.event_periodo_anterior.bindAsEventListener(this);
    this.eventPeriodoSiguiente = this.event_periodo_siguiente.bindAsEventListener(this);
    
    this.event_1Mes = this.event_pintar_1Mes.bindAsEventListener(this);
    this.event_2Meses = this.event_pintar_2Meses.bindAsEventListener(this);
    this.event_12Meses = this.event_pintar_12Meses.bindAsEventListener(this);
    
    
    
	  this.cals_target=new Array();
    this.draw_container();

	  if(fecha==''){
      var d = new Date();
      var anno = d.getFullYear();
      var mes=d.getMonth(); //el numero de mes de 0 a 11
      this.draw_calendar(mes, anno);
    }else{
      var f = fecha.split('/');
			if (f.length==3){
			  //f[0],f[1],f[2] dia, mes , anno
			  var tmp=f[1]-1;
		    var d = new Date(f[2],tmp,f[0]);
//		    d.setFullYear(f[2]); //el año como número de cuatro digitos
//		    d.setMonth(tmp); // setMonth(mes) el numero de mes de 0 a 11
        var anno = d.getFullYear();
        var mes=d.getMonth(); //el numero de mes de 0 a 11		    
        this.draw_calendar(mes, anno);		
      }else {
        alert('Error, el formato de fecha es incorrecto\ndd/mm/aaaa');
        return false;
   		} 
    }
	},
	draw_container: function(){
	  var html_calendario='<div id="EDC_Container_Calendario_'+ this.num_meses_render % 3 +'"><div id="'+this.idtarget+'_crtl" class="cal_controles"></div><table class="tbl_container_calendario">';
	  
	  for (i=0; i<this.num_meses_render; i++){
	    if(i % 3 == 0){html_calendario +='<tr>'}
	    this.cals_target[i]=this.idtarget+'_numcal_'+i;
	    html_calendario +='<td class="celda_calendario"><div id="'+this.cals_target[i]+'" class="calendario"></div></td>';
	    if(i % 3 == 2){html_calendario +='</tr>'}
	  }
	  html_calendario +='</table><div style="clear:both;">&nbsp;</div></div>';
	  Element.update(this.idtarget, html_calendario);	  
  },
  draw_controls: function (){
    var calendarios = this;
    if (this.meses.length > 1){
      if (this.annos.length = 1){
        this.titulo=this.nommeses[this.meses[0]-1] + '(' + this.annos[0] + ') - ' + this.nommeses[this.meses[this.meses.length -1]-1] + '(' + this.annos[this.annos.length -1] + ')';
      }else{
        this.titulo=this.nommeses[this.meses[0]-1] + ' - ' + this.nommeses[this.meses[this.meses.length -1]-1] + '(' + this.annos[0] + ')';
      }        
    }    
  	var html_calendario='<table class="cal_controles">\n\t<tbody>\n';
	  html_calendario+='<tr><th id="'+this.idtarget+'_mes_anterior" class="cal_mes_anterior" style="width:24px"><img src="../../css/img/ico_calendario_retroceder.gif"/></th>';
	  html_calendario+='<th class="cal_titulo_mes" >';
	  if (this.num_meses_render != 1){
	    html_calendario+='<span id="'+this.idtarget+'_1_mes"><img src="../../css/img/ico_calendario_1mes.gif"/> 1 mes</span>&nbsp;';
	  }else{
	    html_calendario+='<span id="'+this.idtarget+'_1_mes" class="desactivado"><img src="../../css/img/ico_calendario_desactivado.gif"/> 1 mes</span>&nbsp;';
	  }
	  if (this.num_meses_render != 2){
	    html_calendario+='<span id="'+this.idtarget+'_2_meses"><img src="../../css/img/ico_calendario_2meses.gif"/> 2 meses</span>&nbsp;';
	  }else{
	    html_calendario+='<span id="'+this.idtarget+'_2_meses" class="desactivado"><img src="../../css/img/ico_calendario_desactivado.gif"/> 2 meses</span>&nbsp;';
	  }
	  if (this.num_meses_render != 12){
	    html_calendario+='<span id="'+this.idtarget+'_12_meses"><img src="../../css/img/ico_calendario_12meses.gif"/> 12 meses</span>&nbsp;';
	  }else{
	    html_calendario+='<span id="'+this.idtarget+'_12_meses" class="desactivado"><img src="../../css/img/ico_calendario_desactivado.gif"/> 12 meses</span>&nbsp;';
	  }
	  html_calendario+='</th>';
	  //html_calendario+='<th class="cal_titulo_mes" ><b> '+this.titulo+' </b></th>';
	  html_calendario+='<th id="'+this.idtarget+'_mes_siguiente" class="cal_mes_siguiente" style="width:24px"><img src="../../css/img/ico_calendario_avanzar.gif"/></th></tr>';
	  html_calendario+='\t</tbody>\n</table>\n'; 
	  Element.update(this.idtarget+'_crtl', html_calendario);
	  
    Event.observe(this.idtarget+'_mes_anterior', 'click', calendarios.eventPeriodoAnterior);
    Event.observe(this.idtarget+'_mes_siguiente', 'click', calendarios.eventPeriodoSiguiente);
    Event.observe(this.idtarget+'_1_mes', 'click', calendarios.event_1Mes);
    Event.observe(this.idtarget+'_2_meses', 'click', calendarios.event_2Meses);
    Event.observe(this.idtarget+'_12_meses', 'click', calendarios.event_12Meses);    	  
  },
	draw_calendar:function(mes,anno){
	  //this.meses=new Array();
	  //this.annos=new Array();
    for (i=0; i < this.num_meses_render; i++){
      mes++;
      this.meses[i]=mes;
      if(this.meses[i]>12){
        anno ++;
        this.annos[i]=anno;
        this.meses[i] = mes = 1;
      }else{
        this.annos[i]=anno;
      }
      //Obtenemos los registros de los dias activados
      if(typeof this.dias_activados.datos == 'object'){
        tmpDiasActivados=this.dias_activados.datos;
      } else {
        tmpDiasActivados={};
      }
      //obtenemos las acciones genericas
      if(this.dias_activados.accionGenericaTodos != ''){
        this.accionGenericaTodos=this.dias_activados.accionGenericaTodos;
      } else {
        this.accionGenericaTodos='';
      }
      if(this.dias_activados.accionGenericaEnadelante != ''){
        this.accionGenericaEnAdelante=this.dias_activados.accionGenericaEnadelante;
      } else {
        this.accionGenericaEnAdelante='';
      }
           
      this.calendarios[i]=new Calendario(this.mostrarcontroles,'1/'+this.meses[i]+'/'+this.annos[i],this.cals_target[i], tmpDiasActivados, this.field, this.num_meses_render, this.accionGenericaTodos, this.accionGenericaEnAdelante,this.fechaInicio, this.fechaFinal);
    }    
    if(!this.mostrarcontroles) this.draw_controls();
  },
	draw_calendar_ctrl_meses:function(){
	  /* Esta funcion se utiliza en las consultas y es llamada por los iconos de seleccion de meses (1 mes, 2 meses, 12 meses)*/
	  var tmpDiasActivados='';
	  mes=this.meses[0]-1;
	  anno=this.annos[0];
	  this.meses=new Array();
	  this.annos=new Array();
	  //Element.update(this.idtarget, '');
    for (i=0; i < this.num_meses_render; i++){
      mes++;
      this.meses[i]=mes;
      if(this.meses[i]>12){
        anno ++;
        this.annos[i]=anno;
        this.meses[i] = mes = 1;
      }else{
        this.annos[i]=anno;
      }
      if(typeof this.dias_activados.datos == 'object'){
        tmpDiasActivados=this.dias_activados.datos;
      } else {
        tmpDiasActivados={};
      }
      //obtenemos las acciones genericas
      if(this.dias_activados.accionGenericaTodos != 'object'){
        this.accionGenericaTodos=this.dias_activados.accionGenericaTodos;
      } else {
        this.accionGenericaTodos='';
      }
      if(this.dias_activados.accionGenericaEnadelante != 'object'){
        this.accionGenericaEnAdelante=this.dias_activados.accionGenericaEnadelante;
      } else {
        this.accionGenericaEnAdelante='';
      }             
      this.calendarios[i]=new Calendario(this.mostrarcontroles,'1/'+this.meses[i]+'/'+this.annos[i],this.cals_target[i], tmpDiasActivados, this.field, this.num_meses_render, this.accionGenericaTodos, this.accionGenericaEnAdelante, this.fechaInicio, this.fechaFinal);
    }
    if(!this.mostrarcontroles) this.draw_controls();
  },  
	event_periodo_anterior:function(event){
	  //ToolTip._removeEvent(window, load);
	  //Tooltip._attachEvent(window, 'load');
	  this.recarga=true;
		var tmpmes = this.meses[0]-this.meses.length-1;
		var tmpanno = this.annos[0];
		if (tmpmes < 1){
		  tmpmes += 12;
		  tmpanno = this.annos[0] - 1;
		  this.draw_calendar(tmpmes, tmpanno);
		}else{
		  this.draw_calendar(tmpmes, tmpanno);
	  }
		Event.stop(event);
	},
	event_periodo_siguiente:function(event){
	  //ToolTip._removeEvent(window, load);
	  //Tooltip._attachEvent(window, 'load');
	  this.recarga=true;
		var tmpmes = this.meses.length-1;
		var tmpanno = this.annos.length-1;
		//alert('tmpmes='+tmpmes+', this.meses['+tmpmes+']='+this.meses[tmpmes]);
		if (this.meses[tmpmes]>=12){
		  tmpmes=0;
		  tmpanno = this.annos[tmpanno] + 1;
		  this.annos[tmpanno]= tmpanno
		  this.draw_calendar(tmpmes, tmpanno);
		}else if (this.num_meses_render==12){
      tmpmes = this.meses[tmpmes];
		  tmpanno = this.annos[tmpanno] + 1;
		  this.draw_calendar(tmpmes, tmpanno);		  
	  }else if(this.meses[tmpmes]==1 && this.num_meses_render==2){
	    //alert('año='+this.annos[tmpanno]);
      tmpmes = this.meses[tmpmes];
		  tmpanno = this.annos[tmpanno] + 1;
		  this.draw_calendar(tmpmes, tmpanno)
	  }else{
		  tmpmes = this.meses[tmpmes];
		  tmpanno = this.annos[tmpanno];
		  this.draw_calendar(tmpmes, tmpanno);
	  }
		Event.stop(event);			
	},
	event_pintar_1Mes:function(event){
	   this.num_meses_render=1;
	   this.draw_container();
	   this.draw_calendar_ctrl_meses();
	},
	event_pintar_2Meses:function(event){
	  this.num_meses_render=2;
	  this.draw_container();
	  this.draw_calendar_ctrl_meses();
	},
	event_pintar_12Meses:function(event){
	  this.num_meses_render=12;
	  this.draw_container();
	  this.draw_calendar_ctrl_meses();
	}		
}