var objPrevElement = new Array();

function fToggleColor(myElement,iMonth, iYear) {
	var toggleColor = "fecha_activa_hover_calendar";
	if (myElement.id=="calDateText") {
		if (myElement.className == toggleColor) {
			var dCurDate = new Date();
			var iYear_act=dCurDate.getFullYear();
			var iMonth_act=dCurDate.getMonth()+1;
			var iDay_act=dCurDate.getDate();
			
			var dia=myElement.innerHTML;
			if(iDay_act==dia && iMonth_act==iMonth && iYear_act==iYear){
				myElement.className = "fecha_actual_calendar";
			}else{
				myElement.className = "fecha_activa_calendar";
			}
		} else {
			myElement.className = toggleColor;
		}
	} else if (myElement.id="calCell") {
		for (var i in myElement.children) {						
			if (myElement.children[i].id=="calDateText") {
				if (myElement.children[i].className == toggleColor) {
					var dCurDate = new Date();
					var iYear_act=dCurDate.getFullYear();
					var iMonth_act=dCurDate.getMonth()+1;
					var iDay_act=dCurDate.getDate();
					
					var dia=myElement.children[i].innerHTML;
					if(iDay_act==dia && iMonth_act==iMonth && iYear_act==iYear){
						myElement.children[i].className = "fecha_actual_calendar";
					}else{
						myElement.children[i].className = "fecha_activa_calendar";
					}
					
				} else {
					myElement.children[i].className = toggleColor;
	            }
	         }
	    }
	}
}

function fSetSelectedDay(myElement, campo_valor, dia, mes, anio,numero_calandarios){
	if (myElement.id == "calCell") {
		if(!isNaN(parseInt(dia))){
			if(parseInt(dia)<10)
				var dia_p="0"+parseInt(dia);
			else
				var dia_p=""+parseInt(dia);
			if(mes<10)
				var mes_p="0"+mes;
			else
				var mes_p=""+mes;
			//if (!isNaN(parseInt(myElement.children["calDateText"].innerText))) {
				if(myElement.className != "fecha_seleccionada_calendar"){
					myElement.className = "fecha_seleccionada_calendar";
					objPrevElement[numero_calandarios].className = "";
				}
				document.getElementById(campo_valor).value = dia_p+"/"+mes_p+"/"+anio;
				objPrevElement[numero_calandarios] = myElement;
		    //}
		}
	}
}

function fGetDaysInMonth(iMonth, iYear) {
	var dPrevDate = new Date(iYear, iMonth, 0);
	return dPrevDate.getDate();
}

function fBuildCal(iYear, iMonth, iDayStyle) {
	var aMonth = new Array();
	aMonth[0] = new Array(7);
	aMonth[1] = new Array(7);
	aMonth[2] = new Array(7);
	aMonth[3] = new Array(7);
	aMonth[4] = new Array(7);
	aMonth[5] = new Array(7);
	aMonth[6] = new Array(7);
	var dCalDate = new Date(iYear, iMonth-1, 1);
	var iDayOfFirst = dCalDate.getDay()-1;
	if(iDayOfFirst==-1)
		iDayOfFirst=6;
	var iDaysInMonth = fGetDaysInMonth(iMonth, iYear);
	var iVarDate = 1;
	var i, d, w;
	if (iDayStyle == 2) {
		aMonth[0][0] = "Lunes";
		aMonth[0][1] = "Martes";
		aMonth[0][2] = "Miércoles";
		aMonth[0][3] = "Jueves";
		aMonth[0][4] = "Viernes";
		aMonth[0][5] = "Sábado";
		aMonth[0][6] = "Domingo";
	} else if (iDayStyle == 1) {
		aMonth[0][0] = "Lun";
		aMonth[0][1] = "Mar";
		aMonth[0][2] = "Mié";
		aMonth[0][3] = "Jue";
		aMonth[0][4] = "Vie";
		aMonth[0][5] = "Sáb";
		aMonth[0][6] = "Dom";
	} else {
		aMonth[0][0] = "Lu";
		aMonth[0][1] = "Ma";
		aMonth[0][2] = "Mi";
		aMonth[0][3] = "Ju";
		aMonth[0][4] = "Vi";
		aMonth[0][5] = "Sá";
		aMonth[0][6] = "Do";
	}
	//alert(iDayOfFirst);
	for (d = iDayOfFirst; d < 7; d++) {
		aMonth[1][d] = iVarDate;
		iVarDate++;
	}
	for (w = 2; w < 7; w++) {
		for (d = 0; d < 7; d++) {
			if (iVarDate <= iDaysInMonth) {
				aMonth[w][d] = iVarDate;
				iVarDate++;
			}
		}
	}
	return aMonth;
}

function fDrawCal(capa_print, campo_valor, titulo_calendario, iDayStyle) {
	var numero_calandarios=objPrevElement.length;	
	objPrevElement[numero_calandarios] = new Object();
	
	
	var dCurDate = new Date();
	var iYear=dCurDate.getFullYear();
	var iMonth=dCurDate.getMonth()+1;
	var iDay=dCurDate.getDate();
	var sDateTextSize="12px";
	var  sDateTextWeight="bold";
	var myMonth;
	myMonth = fBuildCal(iYear, iMonth, iDayStyle);
	//alert(iDay);
	var calendario_print="";
	calendario_print+='<div class="div_calendar">';
	calendario_print+='<div class="titulo_calendar" align="left">'+titulo_calendario+'</div>';
	calendario_print+='<div style="clear:both"></div>';
	calendario_print+='<div>';
	calendario_print+='<table class="table_calendar"  cellspacing=0 cellpadding=2 >';
	calendario_print+='<tr>';
	calendario_print+='<td align="center" class="td_mes_anio_calendar">';
	calendario_print+='<select id="tbSelMonth_'+campo_valor+'" name="tbSelMonth" class="select_calendar" onchange=\'fUpdateCal(document.getElementById("tbSelYear_'+campo_valor+'").value, this.value,"'+campo_valor+'",'+numero_calandarios+')\'>';
	calendario_print+='<option value="1"';
		if(iMonth==1)
			calendario_print+=' selected="selected"';
	calendario_print+='>Enero</option>';
	calendario_print+='<option value="2"';
		if(iMonth==2)
			calendario_print+=' selected="selected"';
	calendario_print+='>Febrero</option>';
	calendario_print+='<option value="3"';
		if(iMonth==3)
			calendario_print+=' selected="selected"';
	calendario_print+='>Marzo</option>';
	calendario_print+='<option value="4"';
		if(iMonth==4)
			calendario_print+=' selected="selected"';
	calendario_print+='>Abril</option>';
	calendario_print+='<option value="5"';
		if(iMonth==5)
			calendario_print+=' selected="selected"';
	calendario_print+='>Mayo</option>';
	calendario_print+='<option value="6"';
		if(iMonth==6)
			calendario_print+=' selected="selected"';
	calendario_print+='>Junio</option>';
	calendario_print+='<option value="7"';
		if(iMonth==7)
			calendario_print+=' selected="selected"';
	calendario_print+='>Julio</option>';
	calendario_print+='<option value="8"';
		if(iMonth==8)
			calendario_print+=' selected="selected"';
	calendario_print+='>Agosto</option>';
	calendario_print+='<option value="9"';
		if(iMonth==9)
			calendario_print+=' selected="selected"';
	calendario_print+='>Septiembre</option>';
	calendario_print+='<option value="10"';
		if(iMonth==10)
			calendario_print+=' selected="selected"';
	calendario_print+='>Octubre</option>';
	calendario_print+='<option value="11"';
		if(iMonth==11)
			calendario_print+=' selected="selected"';
	calendario_print+='>Noviembre</option>';
	calendario_print+='<option value="12"';
		if(iMonth==12)
			calendario_print+=' selected="selected"';
	calendario_print+='>Diciembre</option>';
	calendario_print+='</select>&nbsp;&nbsp;';
	  
	calendario_print+='<select id="tbSelYear_'+campo_valor+'" name="tbSelYear" class="select_calendar" onchange=\'fUpdateCal(this.value, document.getElementById("tbSelMonth_'+campo_valor+'").value,"'+campo_valor+'",'+numero_calandarios+')\'>';
	for(var y=iYear; y<(iYear+5); y++){
		calendario_print+='<option value="'+y+'"';
		if(y==iYear)
			calendario_print+=' selected="selected"';
		calendario_print+='>'+y+'</option>';
	}	
	calendario_print+='</select>';
	calendario_print+='</td>';
	calendario_print+='</tr>';
	calendario_print+='<tr>';
	calendario_print+='<td id="calendario_mes_'+campo_valor+'" align="center">';
	
	
	calendario_print+="<table border='0' cellpadding=0 cellspacing=0>";
	calendario_print+="<tr>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][0] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][1] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][2] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][3] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][4] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][5] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][6] + "</td>";
	calendario_print+="</tr>";
	for (w = 1; w < 7; w++) {
		calendario_print+="<tr>";
		for (d = 0; d < 7; d++) {
			calendario_print+="<td align='center' valign='middle' id=calCell onclick=fSetSelectedDay(this,'"+campo_valor+"','"+myMonth[w][d]+"',"+iMonth+","+iYear+","+numero_calandarios+")>";
			if (!isNaN(myMonth[w][d])) {
				if(iDay>myMonth[w][d]){
					calendario_print+="<font id=calDateText class='fecha_inactiva_calendar'>" + myMonth[w][d] + "</font>";
				}else{	
					if(iDay==myMonth[w][d]){
						calendario_print+="<font id=calDateText onMouseOver='fToggleColor(this,"+iMonth+","+iYear+")' class='fecha_actual_calendar' onMouseOut='fToggleColor(this,"+iMonth+","+iYear+")' onclick=fSetSelectedDay(this,'"+campo_valor+"','"+myMonth[w][d]+"',"+iMonth+","+iYear+","+numero_calandarios+")>" + myMonth[w][d] + "</font>";
					}else{
						calendario_print+="<font id=calDateText onMouseOver='fToggleColor(this,"+iMonth+","+iYear+")' class='fecha_activa_calendar' onMouseOut='fToggleColor(this,"+iMonth+","+iYear+")' onclick=fSetSelectedDay(this,'"+campo_valor+"','"+myMonth[w][d]+"',"+iMonth+","+iYear+","+numero_calandarios+")>" + myMonth[w][d] + "</font>";
					}
				}
			} else {
				calendario_print+="<font id=calDateText onMouseOver='fToggleColor(this,"+iMonth+","+iYear+")' style='fecha_activa_calendar' onMouseOut='fToggleColor(this,"+iMonth+","+iYear+")' onclick=fSetSelectedDay(this,'"+campo_valor+"','"+myMonth[w][d]+"',"+iMonth+","+iYear+","+numero_calandarios+")> </font>";
			}
			calendario_print+="</td>";
		}
		calendario_print+="</tr>";
	}
	calendario_print+="</table>";
	
	calendario_print+='</td>';
	calendario_print+='</tr>';
	calendario_print+='</table>';
	calendario_print+='</div>';
	calendario_print+='</div>';
	document.getElementById(capa_print).innerHTML=calendario_print;
}

function fUpdateCal(iYear, iMonth,calSelectedDate,numero_calandarios) {
	var dCurDate_act = new Date();
	var iYear_act=dCurDate_act.getFullYear();
	var iMonth_act=dCurDate_act.getMonth()+1;
	var iDay_act=dCurDate_act.getDate();
	
	myMonth = fBuildCal(iYear, iMonth);
	objPrevElement[numero_calandarios].bgColor = "";
	document.getElementById(calSelectedDate).value = "";

	var calendario_print="";
	
	calendario_print+="<table border='0' cellpadding=0 cellspacing=0>";
	calendario_print+="<tr>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][0] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][1] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][2] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][3] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][4] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][5] + "</td>";
	calendario_print+="<td align='center' class='cabecera_calendar'>" + myMonth[0][6] + "</td>";
	calendario_print+="</tr>";
	for (w = 1; w < 7; w++) {
		calendario_print+="<tr>";
		for (d = 0; d < 7; d++) {
			calendario_print+="<td align='center' valign='top' id=calCell onclick=fSetSelectedDay(this,'"+calSelectedDate+"','"+myMonth[w][d]+"',"+iMonth+","+iYear+","+numero_calandarios+")>";
			if (!isNaN(myMonth[w][d])) {
				if((iDay_act>myMonth[w][d] && iMonth_act==iMonth && iYear_act==iYear) || (iMonth_act>iMonth && iYear_act==iYear) || iYear_act>iYear){
					calendario_print+="<font id=calDateText class='fecha_inactiva_calendar'>" + myMonth[w][d] + "</font>";
				}else{
					if(iDay_act==myMonth[w][d] && iMonth_act==iMonth && iYear_act==iYear){
						calendario_print+="<font id=calDateText onMouseOver='fToggleColor(this,"+iMonth+","+iYear+")' class='fecha_actual_calendar' onMouseOut='fToggleColor(this,"+iMonth+","+iYear+")' onclick=fSetSelectedDay(this,'"+calSelectedDate+"','"+myMonth[w][d]+"',"+iMonth+","+iYear+","+numero_calandarios+")>" + myMonth[w][d] + "</font>";
					}else{
						calendario_print+="<font id=calDateText onMouseOver='fToggleColor(this,"+iMonth+","+iYear+")' class='fecha_activa_calendar' onMouseOut='fToggleColor(this,"+iMonth+","+iYear+")' onclick=fSetSelectedDay(this,'"+calSelectedDate+"','"+myMonth[w][d]+"',"+iMonth+","+iYear+","+numero_calandarios+")>" + myMonth[w][d] + "</font>";
					}
				}
			} else {
				calendario_print+="<font id=calDateText onMouseOver='fToggleColor(this,"+iMonth+","+iYear+")' class='fecha_activa_calendar' onMouseOut='fToggleColor(this,"+iMonth+","+iYear+")' onclick=fSetSelectedDay(this,'"+calSelectedDate+"','"+myMonth[w][d]+"',"+iMonth+","+iYear+","+numero_calandarios+")> </font>";
			}
			calendario_print+="</td>";
		}
		calendario_print+="</tr>";
	}
	calendario_print+="</table>";
	document.getElementById('calendario_mes_'+calSelectedDate).innerHTML=calendario_print;
}

