
//*****
//FUNCIONES PARA CONSTRUCCION DE UN CALENDARIO
//*****
//<INPUT type="button" value="Button" onclick="fn_InicializaCalendario(fn_vtnObtenerAnoFecha(document.Form1.TextBox1.value), fn_vtnObtenerMesFecha(document.Form1.TextBox1.value), document.Form1.TextBox1, 0, 0,'cal');">&nbsp;<script language="JavaScript">if (ie) var cal = new Calendar('cal');</script>


if (document.all)    {n=0;ie=1;fShow="visible";fHide="hidden";}
if (document.layers) {n=1;ie=0;fShow="show";   fHide="hide";}

var dast=0;
var firstday=0;
var HTMLstr = "";
var ColorTitle="#008800";
var ColorWeek="#008811"
var ColorDays="#0088AA"

var MonthNames = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
var nCurrentYear = 0;
var nCurrentMonth = 0;
var vstat=fHide;
var nWidth  = 25;
var nHeight = 20;
var leftX;
var rightX
var topY;
var bottomY;
var camp;
function hidn(p,s,txtVarCalendario)
{
if (vstat==fShow) {vstat=fHide}
else {/*if (s==0)*/ vstat=fShow}
document.all(txtVarCalendario).style.visibility=vstat;
if (p>0) {document.all(txtVarCalendario).style.top=p}
	if (s>0) {document.all(txtVarCalendario).style.left=s}

if(vstat==fHide){
    if (document.getElementById("BotonActualizar"))
    {setTimeout('document.Form1.BotonActualizar.click()',500);}
    }
}

function hid(txtVarCalendario)
{hidn(0,0,txtVarCalendario);}


function setcamp(c)
{camp=c;}

function leapYear(year) {
if (year % 4 == 0) // basic rule
return 29 // is leap year
/* else */ // else not needed when statement is "return"
return 28 // is not leap year
}

function getDays(year,month) {
// create array to hold number of days in each month
var ar = new Array(12)
ar[0] = 31 // January
ar[1] = (leapYear(year)) 
ar[2] = 31 // March
ar[3] = 30 // April
ar[4] = 31 // May
ar[5] = 30 // June
ar[6] = 31 // July
ar[7] = 31 // August
ar[8] = 30 // September
ar[9] = 31 // October
ar[10] = 30 // November
ar[11] = 31 // December

// return number of days in the specified month (parameter)
return ar[month]
}

function genhtm(ny,nm,txtVarCalendario,p,s)
{
var firstDayInstance = new Date(nCurrentYear, nCurrentMonth-1, 1);
firstday = firstDayInstance.getDay();
firstDayInstance = null;
dast = getDays(nCurrentYear, nCurrentMonth-1);
d=dast*1
if (firstday==0) firstday=7;

//Colores del calendario
var colorFondoCalendario = 'white'
var colorAnioMes = 'white'
var colorFondoEncabezado = '#5eacd0'
var colorFlechas = 'white'
var colorFondoDiasSemana = '#5eacd0'
var colorBorderDiasSemana = '#5eacd0'
var colorDiasSemana = 'white'
var colorFondoNumeros = 'white'
var colorNumeroDiaSeleccionado = 'white'
var colorFondoNumeroDiaSeleccionado = '#5eacd0'
var colorBorderNumeroDiaSeleccionado = '#5eacd0'
var colorNumeroDia = 'black'


HTMLstr="";
HTMLstr += "<table cellpadding=1 cellspacing=0 style='border-right: black 1px solid;  Z-INDEX: 1000; padding-right: 0px;border-top: black 1px solid;padding-left: 0px;font-weight: normal;font-size: 6pt;padding-bottom: 1px;border-left: black 1px solid;color: white;padding-top: 0px;border-bottom: black 1px solid;font-family: tahoma;background-color: " +  colorFondoCalendario + ";'>\n";
HTMLstr += "<tr><td>\n";
HTMLstr += "<table border='0' style='font-weight: bold;  Z-INDEX: 1000; font-size: 8pt;color: " + colorAnioMes + ";font-family: tahoma;background-color: " + colorFondoEncabezado + ";' width='100%'>\n";
HTMLstr += "<tr>\n";
HTMLstr += "<td>A&ntilde;o:</td>\n";
HTMLstr += "<td align='right' width='1%'>\n";
HTMLstr += "<a href=\"javascript:prevYear('"+txtVarCalendario+"',"+p+","+s+");\" style='color: " + colorFlechas + ";text-decoration:none'><</a>\n";
HTMLstr += "</td>\n";
HTMLstr += "<td align='center'>";
HTMLstr += "<div id='main' style='position: relative'>\n";
HTMLstr += ny+"\n";
HTMLstr += "</div>\n";
HTMLstr += "</td><td align='left'><a href=\"javascript:nextYear('"+txtVarCalendario+"',"+p+","+s+");\" style='color:" + colorFlechas + ";text-decoration:none'>></a>\n";
HTMLstr += "</td>\n";
HTMLstr += "</tr>\n";
HTMLstr += "<tr>\n";
HTMLstr += "<td>Mes:</td>\n";
HTMLstr += "\n";
HTMLstr += "<td align='right'>\n";
HTMLstr += "<a href=\"javascript:prevMonth('"+txtVarCalendario+"',"+p+","+s+");\" style='color:" + colorFlechas +  ";text-decoration:none'><</a>\n";
HTMLstr += "</td>\n";
HTMLstr += "\n";
HTMLstr += "<td align='center'>\n";
HTMLstr += "<div id='mai2' style='position=relative;'>";
HTMLstr += MonthNames[nm-1]+"\n";
HTMLstr += "<div>\n";
HTMLstr += "</td><td align='left'><a href=\"javascript:nextMonth('"+txtVarCalendario+"',"+p+","+s+");\" style='color:" + colorFlechas + ";text-decoration:none'>></a>\n";
HTMLstr += "</td>\n";
HTMLstr += "\n";
HTMLstr += "</tr>\n";
HTMLstr += "</table>\n";
HTMLstr += "\n";
HTMLstr += "</td></tr>\n";
HTMLstr += "\n";
HTMLstr += "<tr ><td valign=\"top\">\n";
HTMLstr += "<table width='100%' style='font-weight: bold;font-size: 8pt;color: Black;font-family: tahoma;background-color: " + colorFondoDiasSemana + ";'>\n";
HTMLstr += "<tr style='color:" + colorDiasSemana + ";background-color:" + colorBorderDiasSemana + ";'>\n";
HTMLstr += "<td>Lun</td>\n";
HTMLstr += "<td>Mar</td>\n";
HTMLstr += "<td>Mie</td>\n";
HTMLstr += "<td>Jue</td>\n";
HTMLstr += "<td>Vie</td>\n";
HTMLstr += "<td>Sab</td>\n";
HTMLstr += "<td>Dom</td>\n";
HTMLstr += "</tr>\n";
HTMLstr += "</table>\n";
HTMLstr += "<table width='100%' style='font-weight: bold;font-size: 8pt;color: blue;font-family: tahoma;background-color: " + colorFondoNumeros + ";'>\n";
var f=7;
var g=0;
var nd=false;
var dFechaActual = new Date();

for (var wk=1; wk <= 6; wk++)
{
 HTMLstr += "<tr>"
for (var dy=1; dy <= f; dy++)
 {
	if (dy==firstday) if (wk==1) nd=true

	if (g==dast) nd=false



if (nd) {
	g++
	if ((dFechaActual.getDate()==g) && (dFechaActual.getMonth()+1==nm) && (dFechaActual.getYear()==ny)) 
		{HTMLstr+="<td align='center' style='color: black;background-color:" + colorFondoNumeroDiaSeleccionado + "; border-right: " + colorBorderNumeroDiaSeleccionado + " thin solid;border-top: " + colorBorderNumeroDiaSeleccionado + " thin solid;border-left: " + colorBorderNumeroDiaSeleccionado + " thin solid;border-bottom: " + colorBorderNumeroDiaSeleccionado + " thin solid;'>";
		HTMLstr+="<a style='color:" + colorNumeroDiaSeleccionado + ";text-decoration:none' href=\"javascript:setdate("+g+");hidn("+p+","+s+",'"+txtVarCalendario+"');\">"+g+"</a>"}
	else
		{HTMLstr+="<td align='center'>";
		HTMLstr+="<a style='color:" + colorNumeroDia + ";text-decoration:none' href=\"javascript:setdate("+g+");hidn("+p+","+s+",'"+txtVarCalendario+"');\">"+g+"</a>"}
}
if (nd==false) {	
		HTMLstr+="<td align='center'>";
		HTMLstr+="<img src='' width='10' height='1' border='0'>"}

HTMLstr+="</td>\n"
}
HTMLstr += "</tr>"
}

HTMLstr += "</table>\n";
HTMLstr += "\n";
HTMLstr += "</td></tr>\n";
HTMLstr += "</table>";

}
function Calendar(txtVarCalendario)
{
var HTMLst = "";
var HTMLstd = "";

HTMLst += "<div id='"+txtVarCalendario+"' style='position: absolute;  Z-INDEX: 1000; visibility:hidden;'>";
HTMLstd += "</div>\n"
//genhtm(2001,1);

document.writeln(HTMLst+HTMLstr+HTMLstd);
}


function setCurrentMonth(txtVarCalendario,p,s)
{
  date = new Date();
  dy=date.getYear();
  if (dy<1900) setYearMonth(1900+date.getYear(), date.getMonth()+1,txtVarCalendario,p,s);
  if (dy>1900) setYearMonth(date.getYear(), date.getMonth()+1,txtVarCalendario,p,s);
}

function setMonth(nMonth,txtVarCalendario,p,s)
{
   setYearMonth(nCurrentYear, nMonth);
}

function setYearMonth(nYear, nMonth, txtVarCalendario,p,s)
{
  

  nCurrentYear = nYear;
  nCurrentMonth = nMonth;
genhtm(nYear, nMonth,txtVarCalendario);
document.all[txtVarCalendario].innerHTML=HTMLstr;

}

function nextMonth(txtVarCalendario,p,s)
{
  nCurrentMonth++;
  if (nCurrentMonth > 12)
  {
	nCurrentMonth -= 12;
	nextYear(txtVarCalendario,p,s);
  }
  setYearMonth(nCurrentYear, nCurrentMonth,txtVarCalendario,p,s);
}


function setdate(d)
{
if (d<10) {v="0"+d } else {v=d}
if (parseFloat(nCurrentMonth)<10) {v=v+"/0"+ parseFloat(nCurrentMonth)} else {v=v+"/"+nCurrentMonth}
if (nCurrentYear<1900) {v=v+"/19"+ nCurrentYear } else {v=v+"/"+nCurrentYear}
camp.value=v;
}

function sett(d)
{
camp = d;
}

function prevMonth(txtVarCalendario,p,s)
{
  nCurrentMonth--;
  if (nCurrentMonth < 1)
  {
	nCurrentMonth += 12;
	prevYear(txtVarCalendario,p,s);
  }
  setYearMonth(nCurrentYear, nCurrentMonth,txtVarCalendario,p,s);
}

function prevYear(txtVarCalendario,p,s)
{
  nCurrentYear--;
  setYearMonth(nCurrentYear, nCurrentMonth,txtVarCalendario,p,s);
}

function nextYear(txtVarCalendario,p,s)
{
  //alert(nCurrentYear)
  nCurrentYear++;
  setYearMonth(nCurrentYear, nCurrentMonth,txtVarCalendario,p,s);
}

////////////////////////////////////////////////////

function updateIt(e)
{
//  var x = e.pageX;
//  var y = e.pageY;

//  if (x > rightX || x < leftX) hideMonthMenu();
//  else if (y > bottomY || y < topY) hideMonthMenu();
}

function hideMonthMenu()
{
  document.layers["idMonthMenu"].visibility="hide";
}

function showMonthMenu()
{
if (!n) return;
  topY    = document.layers["mai2"].pageY-50;
  bottomY = document.layers["mai2"].pageY + document.layers["idMonthMenu"].clip.height+50;
  leftX   = document.layers["mai2"].pageX-50;
  rightX  = document.layers["mai2"].pageX + document.layers["idMonthMenu"].clip.width+50;

  document.layers["idMonthMenu"].top = document.layers["mai2"].pageY+document.layers["mai2"].clip.height;
  document.layers["idMonthMenu"].left = document.layers["mai2"].pageX;
  document.layers["idMonthMenu"].visibility="show";
}

function buildMonthMenu(txtVarCalendario,p,s)
{
if (!n) return;
  var HTML = "";
  HTML += "<layer id=\"idMonthMenu\" visibility=\"hide\" width=\"120\" bgcolor=\"darkblue\">\n";
  HTML += "<table border=\"1\" cellspacing=\"0\" cellpading=\"0\">\n";
  for (var month=0; month<12;)
  {
	HTML += "<tr>\n";
	for (var i = 0; i < 3; i++)
	{
		var nMonth = month+1;
		HTML += "<td><a href=\"javascript:hideMonthMenu();setMonth("+nMonth+"'"+txtVarCalendario+"',"+p+","+s+");\"><font color=\"white\" size=-1><b>"+MonthNames[month]+"</b></font></a></td>\n";
		month++;
	}
	HTML += "</tr>\n";
  }
  HTML += "</table>";
  HTML += "</layer>";
  document.writeln(HTML);
}

function fn_InicializaCalendario(intAno, intMes, txtNombreCampoFecha, intCoordenadaX, intCoordenadaY, txtVarCalendario)
{
	if (txtNombreCampoFecha.value=='')
	{
		hidn(intCoordenadaY,intCoordenadaX,txtVarCalendario);
		setcamp(txtNombreCampoFecha);
		setYearMonth(intAno, intMes,txtVarCalendario,intCoordenadaY,intCoordenadaX);
		
	}
	else
	{
		if (fn_blnValidaFecha(txtNombreCampoFecha.value))
		{
			hidn(intCoordenadaY,intCoordenadaX,txtVarCalendario);
			setcamp(txtNombreCampoFecha);
			setYearMonth(intAno, intMes,txtVarCalendario,intCoordenadaY,intCoordenadaX);
		}
		else
			alert('Fecha incorrecta. El formato debe ser: dd/mm/aaaa');
	}
}

//Función para validar la captura de la fecha
function fn_ValidaNumericaFecha()
{
	if (event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 47)
		event.returnValue = true;	 
	else
	{
		alert("Caracter no válido")
		event.returnValue = false;
	}
}

