//INICIALIZACIÓN DE ELEMENTOS PARA EL CALENDARIO
var meses=new Array();
meses[1]="Jan";
meses[2]="Feb";
meses[3]="Mar";
meses[4]="Apr";
meses[5]="May";
meses[6]="Jun";
meses[7]="Jul";
meses[8]="Aug";
meses[9]="Sep";
meses[10]="Oct";
meses[11]="Nov";
meses[12]="Dec";
var dias=new Array();
dias[0]="Mon";
dias[1]="Tue";
dias[2]="Wed";
dias[3]="Thu";
dias[4]="Fri";
dias[5]="Sat";
dias[6]="Sun";

fecha = new Date();
var year;
if(fecha.getFullYear){
year = fecha.getFullYear();
}else{
year = fecha.getYear()+1900;}
var month= fecha.getMonth()+1;
var fname='';
//CONVERSION DEL CALENDARIO ARREGLOS MULTIDIMENSIONALES
var tabla_i=new Array();
var tabla_ishift=new Array();
//VALORES MATICES EN AÑOS DE CENTURIAS
//COLUMNA 1 FILA 0 VAL 6
tabla_i[00]=5;
tabla_i[06]=5;
tabla_i[17]=5;
tabla_i[23]=5;
tabla_i[28]=5;
tabla_i[34]=5;
tabla_i[45]=5;
tabla_i[51]=5;
tabla_i[56]=5;
tabla_i[62]=5;
tabla_i[73]=5;
tabla_i[79]=5;
tabla_i[84]=5;
tabla_i[90]=5;
//COLUMNA 2 FILA 0 VAL 0
tabla_i[01]=6;
tabla_i[07]=6;
tabla_i[12]=6;
tabla_i[18]=6;
tabla_i[29]=6;
tabla_i[35]=6;
tabla_i[40]=6;
tabla_i[46]=6;
tabla_i[57]=6;
tabla_i[63]=6;
tabla_i[68]=6;
tabla_i[74]=6;
tabla_i[85]=6;
tabla_i[91]=6;
tabla_i[96]=6;
//COLUMNA 3 FILA 0 VAL 1
tabla_i[02]=0;
tabla_i[13]=0;
tabla_i[19]=0;
tabla_i[24]=0;
tabla_i[30]=0;
tabla_i[41]=0;
tabla_i[47]=0;
tabla_i[52]=0;
tabla_i[58]=0;
tabla_i[69]=0;
tabla_i[75]=0;
tabla_i[80]=0;
tabla_i[86]=0;
tabla_i[97]=0;
//COLUMNA 4 FILA 0 VAL 2
tabla_i[03]=1;
tabla_i[08]=1;
tabla_i[14]=1;
tabla_i[25]=1;
tabla_i[31]=1;
tabla_i[36]=1;
tabla_i[42]=1;
tabla_i[53]=1;
tabla_i[59]=1;
tabla_i[64]=1;
tabla_i[70]=1;
tabla_i[81]=1;
tabla_i[87]=1;
tabla_i[92]=1;
tabla_i[98]=1;
//COLUMNA 5 FILA 0 VAL 3
tabla_i[09]=2;
tabla_i[15]=2;
tabla_i[20]=2;
tabla_i[26]=2;
tabla_i[37]=2;
tabla_i[43]=2;
tabla_i[48]=2;
tabla_i[54]=2;
tabla_i[65]=2;
tabla_i[71]=2;
tabla_i[76]=2;
tabla_i[82]=2;
tabla_i[93]=2;
tabla_i[99]=2;
//COLUMNA 6 FILA 0 VAL 4
tabla_i[04]=3;
tabla_i[10]=3;
tabla_i[21]=3;
tabla_i[27]=3;
tabla_i[32]=3;
tabla_i[38]=3;
tabla_i[49]=3;
tabla_i[55]=3;
tabla_i[60]=3;
tabla_i[66]=3;
tabla_i[77]=3;
tabla_i[83]=3;
tabla_i[88]=3;
tabla_i[94]=3;
//COLUMNA 7 FILA 0 VAL 5
tabla_i[05]=4;
tabla_i[11]=4;
tabla_i[16]=4;
tabla_i[22]=4;
tabla_i[33]=4;
tabla_i[39]=4;
tabla_i[44]=4;
tabla_i[50]=4;
tabla_i[61]=4;
tabla_i[67]=4;
tabla_i[72]=4;
tabla_i[78]=4;
tabla_i[89]=4;
tabla_i[95]=4;

//DESPLAZAMIENTOS DE LA TABLA 1 PARA LOS RESULTADOS (EN CENTURIAS)
//0 es que no hay desplazamiento ej: si corresponde un 5 para que de 6 hay que:
//(5+D) Mod 7 = 6, D=6
//hasta la centuria 21 está bien, más habría que calcularlas. Años mayores al 2199 no están contemplados.
tabla_ishift[00]=0;
tabla_ishift[01]=6;
tabla_ishift[02]=5;
tabla_ishift[03]=4;
tabla_ishift[04]=3;
tabla_ishift[05]=2;
tabla_ishift[06]=1;
tabla_ishift[07]=0;
tabla_ishift[08]=6;
tabla_ishift[09]=5;
tabla_ishift[10]=4;
tabla_ishift[11]=3;
tabla_ishift[12]=2;
tabla_ishift[13]=1;
tabla_ishift[14]=0;
tabla_ishift[15]=4;
tabla_ishift[16]=2;
tabla_ishift[17]=0;
tabla_ishift[18]=5;
tabla_ishift[19]=3; //Realmente solo deberíamos poner desde aquí (1900)
tabla_ishift[20]=2;
tabla_ishift[21]=6;

var theStatus = new Object();
//FUNCIONES DE CALENDARIO
//STEP I (paso uno)
function step_i(Year){
	var Century=Math.floor(Year/100);
	var Decade=Year-(Century*100);
	var TABLA_I=tabla_i[Decade];
	return ((TABLA_I+tabla_ishift[Century]) % 7);
}
//STEP II (paso dos)
function step_ii(Year,Month){
	var step1=step_i(Year);
	var CATEGORIA;
	var b=bisiesto(Year);

	switch (Month){
		case 1: //ENERO
			if(b){CATEGORIA=6;}
			else{CATEGORIA=0;}
		break;
		case 2: //FEBRERO
			if(b){CATEGORIA=2;}
			else{CATEGORIA=3;}
		break;
//		case 3: //MARZO
//			CATEGORIA=3;
//		break;
		case 4: //ABRIL
		case 7: //JULIO		
			CATEGORIA=6;
		break;
		case 5: //MAYO
			CATEGORIA=1;
		break;
		case 6: //JUNIO
			CATEGORIA=4;
		break;
		case 8: //AGOSTO
			CATEGORIA=2;
		break;
		case 10: //OCTUBRE
			CATEGORIA=0;
		break;
//		case 11: //NOVIEMBRE
//			CATEGORIA=3;
//		break;
		case 12: //DICIEMBRE
		case 9: //SEPTIEMBRE
			CATEGORIA=5;
		break;
		default: //OPTIMIZACION, LAS QUE SON MAS MAR. NOV.
			CATEGORIA=3;
		
	}
return ((CATEGORIA+step1) % 7);
}
//STEP III (paso 3)
function step_iii(Year,Month,Day){
	var step2=step_ii(Year,Month);
	Day=(Day % 7);
	return step3=((Day+5+step2) % 7);
}

function bisiesto(Year){
	var b=false;
	if((Year % 4)==0){b=true;}
	if((Year % 100)==0){b=false;}
	if((Year % 400)==0){b=true;}
	return b;
}

function daysOfMonth(Month,Year){
	switch (Month){
		case 4:
		case 6:
		case 9:
		case 11:
			return 30;
			break;
		case 2:
			if (bisiesto(Year)){
				return 29;
			}else{
				return 28;
			}
			break;
		default:
			return 31;
	}
}

//FUNCIONES PARA DIBUJAR Y LIMPIAR EL CALENDARIO
//LIMPIA CALENDARIO
function doHide(id,formname){
	layer = document.getElementById(id);
	layer.className='calendari_hide';
	layer.innerHTML='';
}

//DIBUJAR CALENDARIO
function doShow(id, formname){
	if (year>2100){year=2100;}	
	if (year<1900){year=1900;}
	if (month<1){month=12;year-=1;}
	if (month>12){month=1;year+=1;}
	layer = document.getElementById(id);
	layer.innerHTML='';
	var innerTMP='';
	var MonthNum;
	var DayNum;
	var DayOfWeek=step_iii(year,month,1);
	innerTMP+="<table width=\"100%\">";
	innerTMP+="<tr><td><table width=\"100%\">";
	innerTMP+="<tr><TD class='TD_header'><A href='#' onClick=\"month-=1;doShow('"+id+"','"+formname+"')\">&#060;</A></TD><TD class='TD_header'>" + year + " - " + meses[month] + "</TD><TD class='TD_header'><A href='#' onClick=\"month+=1;doShow('"+id+"','"+formname+"')\">&#062;</A></TD></tr>";
	innerTMP+="</table></td></tr>";
	innerTMP+="<tr><td><table width=\"100%\">";
	innerTMP+="<tr>";
	var MaxDays=daysOfMonth(month,year);
	for(var dow=0;dow<7;dow++){
		innerTMP+="<td class='TD_dia_str'>"+dias[dow]+"</td>";
	}
	innerTMP+="</tr>";
	var SDraw=false;
	if(month>9){MonthNum=''+month;}else{MonthNum='0'+month;}
	for(var day_c=1;day_c<=36;){
		innerTMP+="<tr>\n";
		for(var dow=0;dow<7;dow++){
			if(dow==DayOfWeek){SDraw=true;}
			if(day_c>9){DayNum=''+day_c;}else{DayNum='0'+day_c;}
			innerTMP+="<td  class='TD_dia_num'>";
			if((day_c<=MaxDays) && SDraw){
				//innerTMP+="<A href='#' onClick=\"document.forms['"+formname+"'].elements['"+fieldname+"'].value='"+DayNum+"-'+'"+MonthNum+"-'+'"+year+"';doHide('"+id+"','"+formname+"','"+fieldname+"');\">"+(day_c++)+"</A>";
				innerTMP+="<A href='#' onClick=\"setData("+DayNum+","+MonthNum+","+year+",'"+formname+"');\">"+(day_c++)+"</A>";
			}else if(SDraw){
				day_c++;innerTMP+="&nbsp;";
			}
			innerTMP+="</td>\n";
		}
		innerTMP+="</tr>\n";
	}
	innerTMP+="</table></tr></td>";
	innerTMP+="</table>";
	//if (fname!=fieldname){alert(innerTMP);}
	layer.innerHTML=innerTMP;
	layer.className='calendari_view';
	
}

function compareDates(formname,field1,field2){
	f1=1*document.forms[formname].elements[field1].value;
	f2=1*document.forms[formname].elements[field2].value;
	alert(f1 + "-" + f2);
	if (f1==0 || f2==0){
		alert("Ambas fechas deben estar establecidas!");
		return false;
	}
	if (f1>f2){
		alert("La segunda fecha debe ser más grande que la primera!");
		return false;
	}else{
		return true;
	}
}

function setData(dia, mes, any, formname){
	//document.getElementById('calendari').innerHTML = formatDia(dia) + "/" + formatDia(mes) + "/" + any;
	formulari = document.getElementById(formname);
	formulari.fecha.value = formatDia(dia) + "/" + formatDia(mes) + "/" + any;
	
	doHide('calendari', formname);
}

function formatDia(dia){
	pre = "";
	if(dia < 10){
		pre = "0";
	}
	return "" + pre + dia;
}

function imgClick(idcapa, formname){	
	capa = document.getElementById(idcapa);
	if(capa.className == 'calendari_view'){
		doHide(idcapa,formname);
	}else{
		doShow(idcapa,formname);
	}
	
}