
// CONFIGURATION VARIABLES
var FSintFormatMode=1; // formato de fecha: 1=dd/mm/aaaa, 0=mm/dd/aaaa (se puede ignorar en la llamada HTML a FSfncShowDateSelector)
var FSarrDayNames=new Array("Lun","Mar","Mi&eacute;","Jue","Vie","S&aacute;b","Dom");
var FSarrMonthNames=new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
var FSstrTodayLable="Hoy";
var FSstrNoValue="Ninguna";
var FSstrNoNoneMsg="Esta fecha no puede ser 'Ninguna'";
var FSstrInvalidMsg="Esta fecha no es válida";


// PRIVATE VARIABLES - ˇNo cambie nada a partir de esta línea!
var FSstrImagePathvar;
var FSblnDisableNone;
var FSobjDateRef;
var FSobjSelectorRef;
var FSobjCalendarArea;
var FSobjDateTable;
var FSdtToday;
var FSintOneMinute=60 * 1000;
var FSintOneHour=FSintOneMinute * 60;
var FSintOneDay=FSintOneHour * 24;
var FSintSelectedDay=0;
var FSintSelectedMonth=0;
var FSintSelectedYear=0;
var FSintCurrentMonth=0;
var FSintCurrentYear=0;

if (navigator.userAgent.indexOf("Gecko")>0) {
	FSstrBrowser="Gecko";
	document.onclick=FSfncHideDateSelector;
	}
else {
	FSstrBrowser="IE";
	document.onclick=function() {FSfncHideDateSelector(event)};
	}

if ((typeof(HTMLElement)!="undefined") && (!HTMLElement.prototype.insertAdjacentHTML)) {
	HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr) {
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var parsedHTML = r.createContextualFragment(htmlStr);
		this.appendChild(parsedHTML);
		}
	}

function FSfncShowDateSelector(DateRef,EventRef,DisableNone) {
	if (document.getElementById) {
		FSblnDisableNone=DisableNone;
		if (!FSobjSelectorRef) {
			// first show tasks
			FSdtToday=new Date();
			FSdtToday.setHours(0,0,0,0);
			FSfncWriteSelectorHTML();
			FSobjSelectorRef=document.getElementById("FSdateSelector");
			FSobjCalendarArea=document.getElementById("FScalendarArea");
			}
		FSobjDateTable=document.getElementById(DateRef.name + "FStable");
		FSobjDateRef=DateRef;
		FSintSelectedDay=0;
		if (FSobjDateRef.value==FSstrNoValue) {
			var arrCurrentDate=FSfncDateToString(FSdtToday).split("/");
			FSintSelectedMonth=arrCurrentDate[0 + FSintFormatMode] - 1;
			}
		else {
			var arrCurrentDate=FSobjDateRef.value.split("/");
			FSintSelectedDay=arrCurrentDate[1 - FSintFormatMode];
			FSintSelectedMonth=arrCurrentDate[0 + FSintFormatMode] - 1;
			}
		FSintSelectedYear=arrCurrentDate[2];
		FSintCurrentMonth=parseInt(FSintSelectedMonth,10);
		FSintCurrentYear=parseInt(FSintSelectedYear,10);
		document.FSdateSelectorForm.FScurrentMonth.selectedIndex=FSintCurrentMonth;
		document.FSdateSelectorForm.FScurrentYear.value=FSintCurrentYear;
		FSfncCreateCalendarArea(FSintSelectedDay,FSintCurrentMonth,FSintCurrentYear);
		if (FSstrBrowser=="Gecko") {
			FSobjSelectorRef.style.left=EventRef.clientX - 90;
			FSobjSelectorRef.style.top=EventRef.clientY + 8;
			}
		else {
			FSobjSelectorRef.style.left=EventRef.clientX - EventRef.offsetX - 82 + document.body.scrollLeft;
			FSobjSelectorRef.style.top=EventRef.clientY - EventRef.offsetY + 16 + document.body.scrollTop;
			}
		FSobjSelectorRef.style.visibility="visible";
		}
	}

function FSfncHideDateSelector(TheEvent) {
	if (FSobjSelectorRef) {
		if (FSstrBrowser=="Gecko") {
			if (TheEvent) {
				var rel = TheEvent.target;
				while (rel) {if (rel.id=="FSdateSelector") {break} else {rel=rel.parentNode}}
				}
			if (!rel) {FSobjSelectorRef.style.visibility="hidden"}
			return;
			}
		else {
			if ((TheEvent)) {
				// check not clicked on calendar
				if ((TheEvent.clientX+document.body.scrollLeft>FSobjSelectorRef.style.posLeft+1) &&
					(TheEvent.clientX+document.body.scrollLeft<FSobjSelectorRef.style.posLeft+FSobjSelectorRef.style.posWidth+10) &&
					(TheEvent.clientY+document.body.scrollTop>FSobjSelectorRef.style.posTop+1) &&
					(TheEvent.clientY+document.body.scrollTop<FSobjSelectorRef.style.posTop+FSobjSelectorRef.style.posHeight+2)
					) {return}
				// check not clicked on icon
				if ((TheEvent.clientX+document.body.scrollLeft>FSobjSelectorRef.style.posLeft+81) &&
					(TheEvent.clientX+document.body.scrollLeft<FSobjSelectorRef.style.posLeft+99) &&
					(TheEvent.clientY+document.body.scrollTop>FSobjSelectorRef.style.posTop-17) &&
					(TheEvent.clientY+document.body.scrollTop<FSobjSelectorRef.style.posTop)
					) {return}
				}
			FSobjSelectorRef.style.visibility="hidden";
			}
		}
	else {FSobjSelectorRef=false}
	}

function FSfncCreateCalendarArea(TheDay,TheMonth,TheYear) {
	var dtFirstOfMonth=new Date(TheYear,TheMonth,1);
	switch (dtFirstOfMonth.getDay()) {
		case 0: var OffsetDays=6; break;
		case 1: var OffsetDays=7; break;
		default: var OffsetDays=dtFirstOfMonth.getDay() - 1;
		}
	var dtCalendarStart=new Date(dtFirstOfMonth.getTime() - (FSintOneDay * OffsetDays));
	var dtCalendarEnd=new Date(dtCalendarStart.getTime() + (FSintOneDay * 41));
	var strCalendar="<TABLE BORDER='0' CELLPADDING='2' CELLSPACING='0' CLASS='FScalendar'>";
	strCalendar+="<TR CLASS='FScalendarTitles' ALIGN='center'>";
	for (var i=0; i<=6; i++) {strCalendar+="<TD WIDTH='22'>"+FSarrDayNames[i]+"</TD>"}
	strCalendar+="</TR>";
	for (var i=0; i<=41; i++) {
		if (i % 7 == 0) {strCalendar+="<TR ALIGN='center'>"}
		var StyleString="";
		var dtTheDay=new Date(dtCalendarStart.getTime() + (FSintOneDay * i));
		if (dtTheDay.getTime()==FSdtToday.getTime()) {
			if ((dtTheDay.getMonth()==FSintSelectedMonth) && (dtTheDay.getDate()==FSintSelectedDay) && (dtTheDay.getFullYear()==FSintSelectedYear)) {StyleString+="background-image: url(" + FSstrImagePath + "today_selected.gif); background-repeat:no-repeat; "}
			else {StyleString+="background-image: url(" + FSstrImagePath + "today.gif); background-repeat:no-repeat; "}
			}
		else if ((dtTheDay.getMonth()==FSintSelectedMonth) && (dtTheDay.getDate()==FSintSelectedDay) && (dtTheDay.getFullYear()==FSintSelectedYear)) {StyleString+="background-image: url(" + FSstrImagePath + "selected.gif); background-repeat:no-repeat; "}
		if (dtTheDay.getMonth()!=TheMonth) {var LinkClass="FSnotInMonth"} else {var LinkClass="FSinMonth"}
		strCalendar+="<TD STYLE='" + StyleString + "'><A HREF='Javascript: void FSfncSetDate(\"" + FSfncDateToString(dtTheDay) + "\")' CLASS='" + LinkClass + "'>" + dtTheDay.getDate() + "</A></TD>";
		if (i%7==6) {strCalendar+="</TR>"}
		}
	strCalendar+="<TABLE>";
	FSobjCalendarArea.innerHTML=strCalendar;
	}

function FSfncSetDate(TheDate) {
	if ((TheDate==FSstrNoValue) && (FSblnDisableNone==true)) {alert(FSstrNoNoneMsg); return false}
	FSintSelectedDay=0;
	FSobjDateRef.value=TheDate;
	FSfncHideDateSelector();
	}

function FSfncAdvanceDate(Adjuster) {
	if ((Adjuster==12) || (Adjuster==-12)) {FSintCurrentYear=FSintCurrentYear + (Adjuster / 12)}
	else {
		FSintCurrentMonth=FSintCurrentMonth + Adjuster;
		if (FSintCurrentMonth==-1) {FSintCurrentMonth=11; FSintCurrentYear--}
		if (FSintCurrentMonth==12) {FSintCurrentMonth=0; FSintCurrentYear++}
		}
	document.FSdateSelectorForm.FScurrentMonth.selectedIndex=FSintCurrentMonth;
	document.FSdateSelectorForm.FScurrentYear.value=FSintCurrentYear;
	FSfncCreateCalendarArea(FSintSelectedDay,FSintCurrentMonth,FSintCurrentYear);
	}

function FSfncChangeMonth(Adjuster) {
	FSintCurrentMonth=Adjuster-1;
	FSfncCreateCalendarArea(FSintSelectedDay,FSintCurrentMonth,FSintCurrentYear);
	}

function FSfncDateToString(TheDate) {
	if (FSintFormatMode==1) {return (TheDate.getDate()<10 ? "0" + TheDate.getDate() : TheDate.getDate()) + "/" + (TheDate.getMonth()<9 ? "0" + (TheDate.getMonth() + 1) : (TheDate.getMonth() + 1)) + "/" + TheDate.getFullYear()}
	else {return (TheDate.getMonth()<10 ? "0" + TheDate.getMonth() : TheDate.getMonth()) + "/" + (TheDate.getDate()<9 ? "0" + (TheDate.getMonth() + 1) : (TheDate.getMonth() + 1)) + "/" + TheDate.getFullYear()}
	}

function FSfncCheckDate(thisDateField) {if (!FSfncCheckDateFormat(thisDateField.value)) {alert(FSstrInvalidMsg); thisDateField.value=thisDateField.defaultValue}}

function FSfncCheckDateFormat(thisDate) {
	if (thisDate.indexOf("/")==-1) {return false}
	var ArrayDate = thisDate.split("/");
	if (ArrayDate.length!=3) {return false}
	if ((isNaN(ArrayDate[0])) || (ArrayDate[0]=="")) {return false}
	if ((isNaN(ArrayDate[1])) || (ArrayDate[1]=="")) {return false}
	if ((isNaN(ArrayDate[2])) || (ArrayDate[2]=="")) {return false}
	var daysInMonth = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);
	if ((parseInt(ArrayDate[1 - FSintFormatMode],10)<1) || (parseInt(ArrayDate[1 - FSintFormatMode],10)>daysInMonth[parseInt(ArrayDate[0 + FSintFormatMode],10)])) {return false}
	if ((parseInt(ArrayDate[0 + FSintFormatMode],10)==2) && (parseInt(ArrayDate[1 - FSintFormatMode],10)>FSfncDaysInFebruary(parseInt(ArrayDate[2],10)))) {return false}
	if ((parseInt(ArrayDate[0 + FSintFormatMode],10)<1) || (parseInt(ArrayDate[0 + FSintFormatMode],10)>12)) {return false}
	return true;
	}

function FSfncDaysInFebruary(year) {return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 )}

function FSfncWriteSelectorHTML() {
	var selectorHTML='' +
		'<FORM ACTION="#" METHOD="GET" NAME="FSdateSelectorForm" onSubmit="return false">' +
		'<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" WIDTH="188" HEIGHT="178" ID="FSdateSelector" STYLE="width:190px; height:180px">' +
		'<TR HEIGHT="22" CLASS="FSbuttonsRow">' +
		'<TD WIDTH="30" ALIGN="left"><INPUT TYPE="image" SRC="' + FSstrImagePath + 'but_prev.gif" WIDTH="18" HEIGHT="18" HSPACE="1" onClick="FSfncAdvanceDate(-1)"></TD>' +
		'<TD>' +
		'<SELECT NAME="FScurrentMonth" CLASS="FSmonthRolldown" onChange="FSfncChangeMonth(this.selectedIndex + 1)">';
	for (var i=0; i<=11; i++) {selectorHTML+="<OPTION>"+FSarrMonthNames[i]+"</OPTION>"}
	selectorHTML+='</SELECT>' +
		'</TD>' +
		'<TD><INPUT TYPE="text" NAME="FScurrentYear" VALUE="2004" READONLY CLASS="FSyearInput"></TD>' +
		'<TD><INPUT TYPE="image" SRC="' + FSstrImagePath + 'but_yeard.gif" WIDTH="18" HEIGHT="9" onClick="FSfncAdvanceDate(12)"><BR><INPUT TYPE="image" SRC="' + FSstrImagePath + 'but_yearu.gif" WIDTH="18" HEIGHT="9" onClick="FSfncAdvanceDate(-12)"></TD>' +
		'<TD WIDTH="30" ALIGN="right"><INPUT TYPE="image" SRC="' + FSstrImagePath + 'but_next.gif" WIDTH="18" HEIGHT="18" HSPACE="1" onClick="FSfncAdvanceDate(1)"></TD>' +
		'</TR>' +
		'<TR HEIGHT="133" BGCOLOR="#FFFFFF"><TD COLSPAN="5" ALIGN="center" ID="FScalendarArea"></TD></TR>' +
		'<TR HEIGHT="22" CLASS="FSbuttonsRow">' +
		'<TD COLSPAN="5">' +
		'<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%">' +
		'<TR>' +
		'<TD ALIGN="left"><INPUT TYPE="image" SRC="' + FSstrImagePath + '/but_today.gif" WIDTH="38" HEIGHT="18" HSPACE="1" onClick="FSfncSetDate(FSfncDateToString(FSdtToday))"></TD>' +
		'<TD ALIGN="center" ID="FSdateToday">' + FSstrTodayLable + ': ' + FSfncDateToString(FSdtToday) + '</TD>' +
		'<TD ALIGN="right"><INPUT TYPE="image" SRC="' + FSstrImagePath + 'but_none.gif" WIDTH="38" HEIGHT="18" HSPACE="1" onClick="FSfncSetDate(\'' + FSstrNoValue + '\')"></TD>' +
		'</TR>' +
		'</TABLE>' +
		'</TD>' +
		'</TR>' +
		'</TABLE>' +
		'</FORM>';
	document.body.insertAdjacentHTML("BeforeEnd",selectorHTML)
	}

function FSfncWriteFieldHTML(FormName,FieldName,FieldValue,FieldWidth,ImagePath,DisableNone,UseOnClick) {
	FSstrImagePath=ImagePath;
	if (FSstrImagePath.charAt(FSstrImagePath.length)!="/") {FSstrImagePath=FSstrImagePath + "/"};
	if (document.getElementById) {
		if (UseOnClick==true) {var ActionEvent="onClick"} else {var ActionEvent="onMouseOver"}
		var formFieldHTML='' +
			'<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" BGCOLOR="#FFFFFF" CLASS="FSdateSelect" ID="' + FieldName + 'FStable" WIDTH="' + FieldWidth + '" HEIGHT="22" STYLE="width:' + FieldWidth + 'px">' +
			'<TR>' +
			'<TD><INPUT TYPE="text" NAME="' + FieldName + '" VALUE="' + FieldValue + '" CLASS="FSdateField" SIZE="9" MAXLENGTH="10" onChange="FSfncCheckDate(this)" READONLY></TD>' +
			'<TD ALIGN="right"><IMG SRC="' + FSstrImagePath + 'calendar.gif" HEIGHT="16" WIDTH="16" HSPACE="3" ' + ActionEvent + '="FSfncShowDateSelector(document.' + FormName + '.' + FieldName + ',event,' + DisableNone + ')" STYLE="cursor:hand"></TD>' +
			'</TR>' +
			'</TABLE>';
		document.write(formFieldHTML);
		}
	else {
		var formFieldHTML='<INPUT TYPE="text" NAME="' + FieldName + '" VALUE="' + FieldValue + '" SIZE="9" MAXLENGTH="10" onChange="FSfncCheckDate(this)" STYLE="width:' + FieldWidth + 'px; height:22px">'
		document.write(formFieldHTML);
		}
	}


<!-- Future Shock - Server 1 -->