//	written	by Tan Ling	Wee	on 2 Dec 2001
//	last updated 26 Jul 2003
//	email :	fuushikaden@yahoo.com
//  website : www.pengz.com
//
//      modified by PinoToy 25 July 2003 - new logic for multiple languages (English, Spanish and ready for more).
//                                       - changes in popUpMonth & popDownMonth methods for hidding popup.
//                                       - changes in popDownYear & popDownYear methods for hidding popup.
//                                       - new logic for disabling dates in the past.
//                                       - new method showCalendar, dynamic configuration of language, enabling past & position.
//                                       - changes in the styles.
//      email  : pinotoy@yahoo.com

        var language = 1;               // 0 - english ; 1 - spanish; 2 - germany
        var enablePast = 0;             // 0 - disabled ; 1 - enabled
      var lControl = 0; // 0 - fecha entrega ; 1 - mes devolucion
	var fixedX = -1;		// x position (-1 if to appear below control)
	var fixedY = -1;		// y position (-1 if to appear below control)
	var startAt = 1;		// 0 - sunday ; 1 - monday
	var showWeekNumber = 1;	        // 0 - don't show; 1 - show
	var showToday = 1;		// 0 - don't show; 1 - show
	var imgDir = "Calendario/images/";		// directory for images ... e.g. var imgDir="/img/"

	var gotoString = new Array("Go To Current Month", "Ir al Mes Actual", "Gehen Sie zu Aktuellem Monat");
	var todayString = new Array("Today is", "Hoy es", "Heute ist");
	var weekString = new Array("Wk", "Sem", "Wo");
	var scrollLeftMessage = new Array("Click to scroll to previous month. Hold mouse button to scroll automatically.", "Presione para pasar al mes anterior. Deje presionado para pasar varios meses.","Klicken, um zu vorherigem Monat zu rollen. Griffmausknopf, um automatisch zu rollen.");
	var scrollRightMessage = new Array("Click to scroll to next month. Hold mouse button to scroll automatically.", "Presione para pasar al siguiente mes. Deje presionado para pasar varios meses.","Klicken, um zu nächstem Monat zu rollen. Griffmausknopf, um automatisch zu rollen.");
	var selectMonthMessage = new Array("Click to select a month.", "Presione para seleccionar un mes", "Klicken, um einen Monat auszuwählen.");
	var selectYearMessage = new Array("Click to select a year.", "Presione para seleccionar un año", "Klicken, um ein Jahr auszuwählen.");
	var selectDateMessage = new Array("Select [date] as date.", "Seleccione [date] como fecha", "Wählen Sie aus [Date] als Datum.");  // do not replace [date], it will be replaced by date.
	
        var	crossobj, crossMonthObj, crossYearObj, monthSelected, yearSelected, dateSelected, omonthSelected, oyearSelected, odateSelected, monthConstructed, yearConstructed, intervalID1, intervalID2, timeoutID1, timeoutID2, ctlToPlaceValue, ctlNow, dateFormat, nStartingYear, selDayAction, isPast;
        var     visYear = 0;
        var     visMonth = 0;
	var	bPageLoaded=false
	var	ie=document.all
	var	dom=document.getElementById
	var	ns4=document.layers
	var	today =	new Date()
	var	dateNow	 = today.getDate()
	var	monthNow = today.getMonth()
	var	yearNow	 = today.getYear()
	var	imgsrc = new Array("drop1.gif","drop2.gif","left1.gif","left2.gif","right1.gif","right2.gif")
	var	img	= new Array()
	var bShow = false;

    /* hides <select> and <applet> objects (for IE only) */
    function hideElement( elmID, overDiv )
    {
      if( ie )
      {
        for( i = 0; i < document.all.tags( elmID ).length; i++ )
        {
          obj = document.all.tags( elmID )[i];
          if( !obj || !obj.offsetParent )
          {
            continue;
          }
      
          // Find the element's offsetTop and offsetLeft relative to the BODY tag.
          objLeft   = obj.offsetLeft;
          objTop    = obj.offsetTop;
          objParent = obj.offsetParent;
          
          while( objParent.tagName.toUpperCase() != "BODY" )
          {
            objLeft  += objParent.offsetLeft;
            objTop   += objParent.offsetTop;
            objParent = objParent.offsetParent;
          }
      
          objHeight = obj.offsetHeight;
          objWidth = obj.offsetWidth;
      
          if(( overDiv.offsetLeft + overDiv.offsetWidth ) <= objLeft );
          else if(( overDiv.offsetTop + overDiv.offsetHeight ) <= objTop );
/* CHANGE by Charlie Roche for nested TDs*/
          else if( overDiv.offsetTop >= ( objTop + objHeight + obj.height ));
/* END CHANGE */
          else if( overDiv.offsetLeft >= ( objLeft + objWidth ));
          else
          {
            obj.style.visibility = "hidden";
          }        }
      }
    }
     
    /*
    * unhides <select> and <applet> objects (for IE only)
    */
    function showElement( elmID )
    {
      if( ie )
      {
        for( i = 0; i < document.all.tags( elmID ).length; i++ )
        {
          obj = document.all.tags( elmID )[i];
          
          if( !obj || !obj.offsetParent )
          {
            continue;
          }
        
          obj.style.visibility = "";
        }
      }
    }

	function HolidayRec (d, m, y, desc)
	{
		this.d = d
		this.m = m
		this.y = y
		this.desc = desc
	}

	var HolidaysCounter = 0
	var Holidays = new Array()

	function addHoliday (d, m, y, desc)
	{
		Holidays[HolidaysCounter++] = new HolidayRec ( d, m, y, desc )
	}

	if (dom)
	{
		for	(i=0;i<imgsrc.length;i++)
		{
			img[i] = new Image
			img[i].src = imgDir + imgsrc[i]
		}                                                                                                                                                 /* bgcolor='#000066'*/
		document.write ("<div onclick='bShow=true' id='calendar' class='div-style'><table width="+((showWeekNumber==1)?250:220)+" class='table-style'><tr class='title-background-style'><td><table width='"+((showWeekNumber==1)?248:218)+"'><tr><td style='padding:2px;font-family:arial; font-size:11px;'><font color='#FFFFFF" + "" /*C9D3E9*/ +"'><B><span id='caption'></span></B></font></td><td align=right><a href='javascript:hideCalendar()'><IMG SRC='"+imgDir+"close.gif' WIDTH='15' HEIGHT='13' BORDER='0' ></a></td></tr></table></td></tr><tr><td style='padding:5px' bgcolor=#ffffff><span id='content'></span></td></tr>")  ///ALT='Close the Calendar'
			
		if (showToday==1)
		{
			document.write ("<tr class='today-style'><td><span id='lblToday'></span></td></tr>")
		}
			
		document.write ("</table></div><div id='selectMonth' class='div-style'></div><div id='selectYear' class='div-style'></div>");
	}

	var	monthName  = new Array(["January","February","March","April","May","June","July","August","September","October","November","December"], ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"], ["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]);
	var	monthName2 = new Array(["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"], ["ENE","FEB","MAR","ABR","MAY","JUN","JUL","AGO","SEP","OCT","NOV","DIC"], ["JAN","FEB","MÄR","APR","MAI","JUN","JUL","AUG","SEPT","OKT","NOV","DEZ"]);
	if (startAt==0)
	{
		dayName = new Array (["Sun","Mon","Tue","Wed","Thu","Fri","Sat"], ["Dom","Lun","Mar","Mie","Jue","Vie","Sab"], ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"]);
	}
	else
	{
		dayName = new Array (["Mon","Tue","Wed","Thu","Fri","Sat","Sun"], ["Lun","Mar","Mie","Jue","Vie","Sab","Dom"], ["Sam", "Mon", "Die", "Mit", "Don", "Fre", "Son"]);
	}
	var	styleAnchor="text-decoration:none;color:black;"
	var	styleLightBorder="border-style:solid;border-width:1px;border-color:#a0a0a0;"

	function swapImage(srcImg, destImg){
		if (ie)	{ document.getElementById(srcImg).setAttribute("src",imgDir + destImg) }
	}

	function init()	{
		if (!ns4)
		{
			if (!ie) { yearNow += 1900	}

			crossobj=(dom)?document.getElementById("calendar").style : ie? document.all.calendar : document.calendar
			hideCalendar()

			crossMonthObj=(dom)?document.getElementById("selectMonth").style : ie? document.all.selectMonth	: document.selectMonth

			crossYearObj=(dom)?document.getElementById("selectYear").style : ie? document.all.selectYear : document.selectYear

			monthConstructed=false;
			yearConstructed=false;

			if (showToday==1)
			{
				document.getElementById("lblToday").innerHTML =	"<font class='today-style'>" + todayString[language] + " <a onmousemove='window.status=\""+gotoString[language]+"\"' onmouseout='window.status=\"\"' title='"+gotoString[language]+"' class='current-day-style' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'>"+dayName[language][(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[language][monthNow].substring(0,3)	+ "	" +	yearNow	+ "</a></font>"
			}

			sHTML1="<span id='spanLeft'	class='title-control-normal-style' onmouseover='swapImage(\"changeLeft\",\"left2.gif\");this.className=\"title-control-select-style\";window.status=\""+scrollLeftMessage[language]+"\"' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"left1.gif\");this.className=\"title-control-normal-style\";window.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)'	onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeLeft' SRC='"+imgDir+"left1.gif' width=10 height=11 BORDER=0>&nbsp</span>&nbsp;"
			sHTML1+="<span id='spanRight' class='title-control-normal-style'	onmouseover='swapImage(\"changeRight\",\"right2.gif\");this.className=\"title-control-select-style\";window.status=\""+scrollRightMessage[language]+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"right1.gif\");this.className=\"title-control-normal-style\";window.status=\"\"' onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500)'	onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeRight' SRC='"+imgDir+"right1.gif'	width=10 height=11 BORDER=0>&nbsp</span>&nbsp"
			sHTML1+="<span id='spanMonth' class='title-control-normal-style'	onmouseover='swapImage(\"changeMonth\",\"drop2.gif\");this.className=\"title-control-select-style\";window.status=\""+selectMonthMessage[language]+"\"' onmouseout='swapImage(\"changeMonth\",\"drop1.gif\");this.className=\"title-control-normal-style\";window.status=\"\"' onclick='popUpMonth()'></span>&nbsp;"
			sHTML1+="<span id='spanYear' class='title-control-normal-style' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.className=\"title-control-select-style\";window.status=\""+selectYearMessage[language]+"\"'	onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.className=\"title-control-normal-style\";window.status=\"\"'	onclick='popUpYear()'></span>&nbsp;"
			
                        document.getElementById("caption").innerHTML  =	sHTML1

			bPageLoaded=true
		}
	}

	function hideCalendar()	{
		crossobj.visibility="hidden"
		if (crossMonthObj != null){crossMonthObj.visibility="hidden"}
		if (crossYearObj !=	null){crossYearObj.visibility="hidden"}

	    showElement( 'SELECT' );
		showElement( 'APPLET' );
	}

	function padZero(num) {
		return (num	< 10)? '0' + num : num ;
	}

	function constructDate(d,m,y)
	{
		sTmp = dateFormat
		sTmp = sTmp.replace	("dd","<e>")
		sTmp = sTmp.replace	("d","<d>")
		sTmp = sTmp.replace	("<e>",padZero(d))
		sTmp = sTmp.replace	("<d>",d)
		sTmp = sTmp.replace	("mmmm","<p>")
		sTmp = sTmp.replace	("mmm","<o>")
		sTmp = sTmp.replace	("mm","<n>")
		sTmp = sTmp.replace	("m","<m>")
		sTmp = sTmp.replace	("<m>",m+1)
		sTmp = sTmp.replace	("<n>",padZero(m+1))
		sTmp = sTmp.replace	("<o>",monthName[language][m])
		sTmp = sTmp.replace	("<p>",monthName2[language][m])
		sTmp = sTmp.replace	("yyyy",y)
		return sTmp.replace ("yy",padZero(y%100))
	}

	function closeCalendar() {
		var	sTmp

		hideCalendar();
		ctlToPlaceValue.value =	constructDate(dateSelected,monthSelected,yearSelected);
		AsignarValoresFecha(lControl)
	}

	/*** Month Pulldown	***/

	function StartDecMonth()
	{
		intervalID1=setInterval("decMonth()",80)
	}

	function StartIncMonth()
	{
		intervalID1=setInterval("incMonth()",80)
	}

	function incMonth () {
		monthSelected++
		if (monthSelected>11) {
			monthSelected=0
			yearSelected++
		}
		constructCalendar()
	}

	function decMonth () {
		monthSelected--
		if (monthSelected<0) {
			monthSelected=11
			yearSelected--
		}
		constructCalendar()
	}

	function constructMonth() {
		popDownYear()
		if (!monthConstructed) {
			sHTML =	""
			for	(i=0; i<12;	i++) {
				sName =	monthName[language][i];
				if (i==monthSelected){
					sName =	"<B>" +	sName +	"</B>"
				}
				sHTML += "<tr><td id='m" + i + "' onmouseover='this.className=\"dropdown-select-style\"' onmouseout='this.className=\"dropdown-normal-style\"' onclick='monthConstructed=false;monthSelected=" + i + ";constructCalendar();popDownMonth();event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
			}

			document.getElementById("selectMonth").innerHTML = "<table width=70	class='dropdown-style' cellspacing=0 onmouseover='clearTimeout(timeoutID1)'	onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownMonth()\",100);event.cancelBubble=true'>" +	sHTML +	"</table>"

			monthConstructed=true
		}
	}

	function popUpMonth() {
                if (visMonth==1) {
                    popDownMonth();
                    visMonth--;
                    }
                else {
                    constructMonth()
                    crossMonthObj.visibility = (dom||ie)? "visible"	: "show"
                    crossMonthObj.left = parseInt(crossobj.left) + 50
                    crossMonthObj.top =	parseInt(crossobj.top) + 26

                    hideElement( 'SELECT', document.getElementById("selectMonth") );
                    hideElement( 'APPLET', document.getElementById("selectMonth") );			
                    visMonth++;
                }
	}

	function popDownMonth()	{
		crossMonthObj.visibility= "hidden";
                visMonth = 0;
	}

	/*** Year Pulldown ***/

	function incYear() {
		for	(i=0; i<7; i++){
			newYear	= (i+nStartingYear)+1
			if (newYear==yearSelected)
			{ txtYear =	"&nbsp;<B>"	+ newYear +	"</B>&nbsp;" }
			else
			{ txtYear =	"&nbsp;" + newYear + "&nbsp;" }
			document.getElementById("y"+i).innerHTML = txtYear
		}
		nStartingYear ++;
		bShow=true
	}

	function decYear() {
		for	(i=0; i<7; i++){
			newYear	= (i+nStartingYear)-1
			if (newYear==yearSelected)
			{ txtYear =	"&nbsp;<B>"	+ newYear +	"</B>&nbsp;" }
			else
			{ txtYear =	"&nbsp;" + newYear + "&nbsp;" }
			document.getElementById("y"+i).innerHTML = txtYear
		}
		nStartingYear --;
		bShow=true
	}

	function selectYear(nYear) {
		yearSelected=parseInt(nYear+nStartingYear);
		yearConstructed=false;
		constructCalendar();
		popDownYear();
	}

	function constructYear() {
		popDownMonth()
		sHTML =	""
		if (!yearConstructed) {

			sHTML =	"<tr><td align='center'	onmouseover='this.className=\"dropdown-select-style\"' onmouseout='this.className=\"dropdown-normal-style\"' onmousedown='clearInterval(intervalID1);intervalID1=setInterval(\"decYear()\",30)' onmouseup='clearInterval(intervalID1)'>-</td></tr>"

			j =	0
			nStartingYear =	yearSelected-3
			for	(i=(yearSelected-3); i<=(yearSelected+3); i++) {
				sName =	i;
				if (i==yearSelected){
					sName =	"<B>" +	sName +	"</B>"
				}

				sHTML += "<tr><td id='y" + j + "' onmouseover='this.className=\"dropdown-select-style\"' onmouseout='this.className=\"dropdown-normal-style\"' onclick='selectYear("+j+");event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
				j ++;
			}

			sHTML += "<tr><td align='center' onmouseover='this.className=\"dropdown-select-style\"' onmouseout='this.className=\"dropdown-normal-style\"' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\"incYear()\",30)' onmouseup='clearInterval(intervalID2)'>+</td></tr>"

			document.getElementById("selectYear").innerHTML	= "<table width=44 class='dropdown-style' onmouseover='clearTimeout(timeoutID2)' onmouseout='clearTimeout(timeoutID2);timeoutID2=setTimeout(\"popDownYear()\",100)' cellspacing=0>"	+ sHTML	+ "</table>"

			yearConstructed	= true
		}
	}

	function popDownYear() {
		clearInterval(intervalID1);
		clearTimeout(timeoutID1);
		clearInterval(intervalID2);
		clearTimeout(timeoutID2);
		crossYearObj.visibility= "hidden";
                visYear = 0;

	}

	function popUpYear() {
		var	leftOffset
                if (visYear==1) {
                    popDownYear();
                    visYear--;
                }
                else {
                    constructYear()
                    crossYearObj.visibility	= (dom||ie)? "visible" : "show"
                    leftOffset = parseInt(crossobj.left) + document.getElementById("spanYear").offsetLeft
                    if (ie)
                    {
                            leftOffset += 6
                    }
                    crossYearObj.left =	leftOffset
                    crossYearObj.top = parseInt(crossobj.top) +	26
                    visYear++;
                }
	}

	/*** calendar ***/
   function WeekNbr(n) {
      // Algorithm used:
      // From Klaus Tondering's Calendar document (The Authority/Guru)
      // hhtp://www.tondering.dk/claus/calendar.html
      // a = (14-month) / 12
      // y = year + 4800 - a
      // m = month + 12a - 3
      // J = day + (153m + 2) / 5 + 365y + y / 4 - y / 100 + y / 400 - 32045
      // d4 = (J + 31741 - (J mod 7)) mod 146097 mod 36524 mod 1461
      // L = d4 / 1460
      // d1 = ((d4 - L) mod 365) + L
      // WeekNumber = d1 / 7 + 1
 
      year = n.getFullYear();
      month = n.getMonth() + 1;
      if (startAt == 0) {
         day = n.getDate() + 1;
      }
      else {
         day = n.getDate();
      }
 
      a = Math.floor((14-month) / 12);
      y = year + 4800 - a;
      m = month + 12 * a - 3;
      b = Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400);
      J = day + Math.floor((153 * m + 2) / 5) + 365 * y + b - 32045;
      d4 = (((J + 31741 - (J % 7)) % 146097) % 36524) % 1461;
      L = Math.floor(d4 / 1460);
      d1 = ((d4 - L) % 365) + L;
      week = Math.floor(d1/7) + 1;
 
      return week;
   }

	function constructCalendar () {
		var aNumDays = Array (31,0,31,30,31,30,31,31,30,31,30,31)

		var dateMessage
		var	startDate =	new	Date (yearSelected,monthSelected,1)
		var endDate

		if (monthSelected==1)
		{
			endDate	= new Date (yearSelected,monthSelected+1,1);
			endDate	= new Date (endDate	- (24*60*60*1000));
			numDaysInMonth = endDate.getDate()
		}
		else
		{
			numDaysInMonth = aNumDays[monthSelected];
		}

		datePointer	= 0
		dayPointer = startDate.getDay() - startAt
		
		if (dayPointer<0)
		{
			dayPointer = 6
		}

		sHTML =	"<table	 border=0 class='body-style'><tr>"

		if (showWeekNumber==1)
		{
			sHTML += "<td width=27><b>" + weekString[language] + "</b></td><td width=1 rowspan=7 class='weeknumber-div-style'><img src='"+imgDir+"divider.gif' width=1></td>"
		}

		for	(i=0; i<7; i++)	{
			sHTML += "<td width='27' align='right'><B>"+ dayName[language][i]+"</B></td>"
		}
		sHTML +="</tr><tr>"
		
		if (showWeekNumber==1)
		{
			sHTML += "<td align=right>" + WeekNbr(startDate) + "&nbsp;</td>"
		}

		for	( var i=1; i<=dayPointer;i++ )
		{
			sHTML += "<td>&nbsp;</td>"
		}
	
		for	( datePointer=1; datePointer<=numDaysInMonth; datePointer++ )
		{
			dayPointer++;
			sHTML += "<td align=right>"
			sStyle=styleAnchor
			if ((datePointer==odateSelected) &&	(monthSelected==omonthSelected)	&& (yearSelected==oyearSelected))
			{ sStyle+=styleLightBorder }

			sHint = ""
			for (k=0;k<HolidaysCounter;k++)
			{
				if ((parseInt(Holidays[k].d)==datePointer)&&(parseInt(Holidays[k].m)==(monthSelected+1)))
				{
					if ((parseInt(Holidays[k].y)==0)||((parseInt(Holidays[k].y)==yearSelected)&&(parseInt(Holidays[k].y)!=0)))
					{
						sStyle+="background-color:#FFDDDD;"
						sHint+=sHint==""?Holidays[k].desc:"\n"+Holidays[k].desc
					}
				}
			}

			var regexp= /\"/g
			sHint=sHint.replace(regexp,"&quot;")

			dateMessage = "onmousemove='window.status=\""+selectDateMessage[language].replace("[date]",constructDate(datePointer,monthSelected,yearSelected))+"\"' onmouseout='window.status=\"\"' "


                        //////////////////////////////////////////////
                        //////////  Modificaciones PinoToy  //////////
                        //////////////////////////////////////////////
                        if (enablePast==0 && ((yearSelected<yearNow) || (monthSelected<monthNow) && (yearSelected==yearNow) || (datePointer<(dateNow+2)) && (monthSelected==monthNow) && (yearSelected==yearNow))) {
                            selDayAction = "";
                            isPast = 1;
                        }
                        else {
                            selDayAction = "href='javascript:dateSelected="+datePointer + ";closeCalendar();'";
                            isPast = 0;
                        }

                        if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow)) {   ///// SI ES EL DIA ACTUAL
                            sHTML += "<b><a "+dateMessage+" title=\"" + sHint + "\" "+selDayAction+" style='"+sStyle+"'><font class='current-day-style'>&nbsp;" + datePointer + "&nbsp;</font></a></b>";
                        }
			else if	(dayPointer % 7 == (startAt * -1)+1) {   ///// SI ES DOMINGO
                            if (isPast==1)
                                sHTML += "<a "+dateMessage+" title=\"" + sHint + "\"  "+selDayAction+" style='"+sStyle+"'><font class='isPast-day-style'>&nbsp;" + datePointer + "&nbsp;</font></a>";
                            else
                                sHTML += "<a "+dateMessage+" title=\"" + sHint + "\"  "+selDayAction+" style='"+sStyle+"'><font class='end-of-weekday-style'>&nbsp;" + datePointer + "&nbsp;</font></a>";
                        }
			else if	((dayPointer % 7 == (startAt * -1)+7 && startAt==1) || (dayPointer % 7 == startAt && startAt==0)) {   ///// SI ES SABADO
                            if (isPast==1)
                                sHTML += "<a "+dateMessage+" title=\"" + sHint + "\"  "+selDayAction+" style='"+sStyle+"'><font class='isPast-day-style'>&nbsp;" + datePointer + "&nbsp;</font></a>";
                            else
                                sHTML += "<a "+dateMessage+" title=\"" + sHint + "\"  "+selDayAction+" style='"+sStyle+"'><font class='end-of-weekday-style'>&nbsp;" + datePointer + "</font>&nbsp;</a>";
                        }
			else {    ///// CUALQUIER OTRO DIA
                            if (isPast==1)
                                sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" "+selDayAction+" style='"+sStyle+"'><font class='isPast-day-style'>&nbsp;" + datePointer + "&nbsp;</font></a>";
                            else
                                sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" "+selDayAction+" style='"+sStyle+"'><font class='normal-day-style'>&nbsp;" + datePointer + "&nbsp;</font></a>";
                        }

			sHTML += ""
			if ((dayPointer+startAt) % 7 == startAt) { //alert("dp%7==sa " + dayPointer);
				sHTML += "</tr><tr>" 
				if ((showWeekNumber==1)&&(datePointer<numDaysInMonth))
				{
					sHTML += "<td align=right>" + (WeekNbr(new Date(yearSelected,monthSelected,datePointer+1))) + "&nbsp;</td>"
				}
			}
		}

		document.getElementById("content").innerHTML   = sHTML
		document.getElementById("spanMonth").innerHTML = "&nbsp;" +	monthName[language][monthSelected] + "&nbsp;<IMG id='changeMonth' SRC='"+imgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
		document.getElementById("spanYear").innerHTML =	"&nbsp;" + yearSelected	+ "&nbsp;<IMG id='changeYear' SRC='"+imgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
	}

        function showCalendar(ctl, ctl2, format, lCtl, lang, past, fx, fy) {
	            if (lang != null)  language = lang;
                else    language = 0;
                if (past != null)  enablePast = past;
                else    enablePast = 0;
                if (fx != null)  fixedX = fx;
                else    fixedX = -1;
                if (fy != null)  fixedY = fy;
                else    fixedY = -1;
                if (lCtl != null)  lControl = lCtl;
                else    lControl = 0;
                if (showToday==1) {
                    document.getElementById("lblToday").innerHTML = "<font class='today-style'>" + todayString[language] + " <a onmousemove='window.status=\""+gotoString[language]+"\"' onmouseout='window.status=\"\"' title='"+gotoString[language]+"' class='current-day-style' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'>"+dayName[language][(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[language][monthNow].substring(0,3)	+ "	" +	yearNow	+ "</a></font>"
                }
                popUpCalendar(ctl, ctl2, format);
        }

	function popUpCalendar(ctl, ctl2, format) {
		var	leftpos=0
		var	toppos=0

		if (bPageLoaded)
		{
			if ( crossobj.visibility ==	"hidden" ) {
				ctlToPlaceValue	= ctl2
				dateFormat=format;

				formatChar = " "
				aFormat	= dateFormat.split(formatChar)
				if (aFormat.length<3)
				{
					formatChar = "/"
					aFormat	= dateFormat.split(formatChar)
					if (aFormat.length<3)
					{
						formatChar = "."
						aFormat	= dateFormat.split(formatChar)
						if (aFormat.length<3)
						{
							formatChar = "-"
							aFormat	= dateFormat.split(formatChar)
							if (aFormat.length<3)
							{
								// invalid date	format
								formatChar=""
							}
						}
					}
				}

				tokensChanged =	0
				if ( formatChar	!= "" )
				{
					// use user's date
					aData =	ctl2.value.split(formatChar)

					for	(i=0;i<3;i++)
					{
						if ((aFormat[i]=="d") || (aFormat[i]=="dd"))
						{
							dateSelected = parseInt(aData[i], 10)
							tokensChanged ++
						}
						else if	((aFormat[i]=="m") || (aFormat[i]=="mm"))
						{
							monthSelected =	parseInt(aData[i], 10) - 1
							tokensChanged ++
						}
						else if	(aFormat[i]=="yyyy")
						{
							yearSelected = parseInt(aData[i], 10)
							tokensChanged ++
						}
						else if	(aFormat[i]=="mmm")
						{
							for	(j=0; j<12;	j++)
							{
								if (aData[i]==monthName[language][j])
								{
									monthSelected=j
									tokensChanged ++
								}
							}
						}
						else if	(aFormat[i]=="mmmm")
						{
							for	(j=0; j<12;	j++)
							{
								if (aData[i]==monthName2[language][j])
								{
									monthSelected=j
									tokensChanged ++
								}
							}
						}
					}
				}

				if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))
				{
					dateSelected = dateNow
					monthSelected =	monthNow
					yearSelected = yearNow
				}

				odateSelected=dateSelected
				omonthSelected=monthSelected
				oyearSelected=yearSelected

				aTag = ctl
				do {
					aTag = aTag.offsetParent;
					leftpos	+= aTag.offsetLeft;
					toppos += aTag.offsetTop;
				} while(aTag.tagName!="BODY");

				crossobj.left =	fixedX==-1 ? ctl.offsetLeft	+ leftpos :	fixedX
				crossobj.top = fixedY==-1 ?	ctl.offsetTop +	toppos + ctl.offsetHeight +	2 :	fixedY
				constructCalendar (1, monthSelected, yearSelected);
				crossobj.visibility=(dom||ie)? "visible" : "show"

				hideElement( 'SELECT', document.getElementById("calendar") );
				hideElement( 'APPLET', document.getElementById("calendar") );			

				bShow = true;
			}
			else
			{
				hideCalendar()
				if (ctlNow!=ctl) {popUpCalendar(ctl, ctl2, format)}
			}
			ctlNow = ctl
		}
	}

	document.onkeypress = function hidecal1 () { 
		if (event.keyCode==27) 
		{
			hideCalendar()
		}
	}
	document.onclick = function hidecal2 () { 		
		if (!bShow)
		{
			hideCalendar()
		}
		bShow = false
	}

	if(ie)
	{
		init()
	}
	else
	{
		window.onload=init
	}