/*
*** BEGIN OF LEGAL INFORMATION - DO NOT MODIFY ****************************************

TLS Calendar.JS Library 1.0
Copyright (c) 2004 TILISOFT. All rights reserved.
http://www.tilisoft.com - info@tilisoft.com

The TLS Calendar.JS Library 1.0 ("Library") is copyrighted by TILISOFT ("Vendor"), 
all rights reserved.  The Library or any part of it may not be used, modified, sold, 
published or distributed without express permission from the Vendor.


[ License ] 

This Library is free with registration.  The free license grants you the right to 
use the Library on the registered site only.  It does not include the right to 
modify, sell, publish, distribute, or create derivative work out of the Library.

TLS Calendar.JS Library's free license requires users to register at 
	http://www.tilisoft.com/register.  
After registration, login to your account to generate a TILISOFT Registratrion 
Key (TRK) for this Library.  Download and insert the Base64-TRK Data block to 
'REGISTERED BASED64-TRK DATA' section below.

The Base64-TRK Data format should be similar to the sample below.  You can validate 
and display detailed information of any Base64-TRK Data at 
	http://www.tilisoft.com/validate.  
When visiting this page, copy a Base64-TRK Data block, including the BEGIN/END 
lines, and paste it into the validation data field on the site.

Sample Base64-TRK Data:

--- BEGIN A09837099427A1735D585A69E2284159 ---
Base64-TRK (TILISOFT Registratrion Key) Data
Created Date/Time: 3/22/2004 11:50:25 AM

kN2ICqNyTMc36sPxNsfW649Fd5Fz5A0eawvRC7emTmeh1kvBCqgdEibSu5ucm4cRF0ioJc5c
riouPESnyDPOruZCs1XwPDLRsxxHxofL/zLZNa4PHOSR5IVp5NZVSzEdvj2yvGMtGzM0Gd7M
tf5jTDztYxr/HysySr/clsIGeVSqHVWR2tCvJoO3Oc0j46cCuADjoF+d9EkoqNF9xrmvCCUn
ATENEcSw8+zbv0YggkelszTIFqHi8O71z+Q6riYXhaMf8q3YB/wmA5ebN+ioogUOY4o2CBwd
/KEuQuTtsycMxl2mQztEX9XIZ+lW4pKIXqMLitrR+Uxoh/PQkl76j9h8p9DHjAO+
--- END   A09837099427A1735D585A69E2284159 ---

- For more infomation, visit http://www.tilisoft.com/products.
- For registration, visit http://www.tilisoft.com/register.


[ Usage ]

See sample.htm.

*** END OF LEGAL INFORMATION - DO NOT MODIFY ******************************************

*** REGISTERED BASED64-TRK DATA - TO BE MODIFIED BY REGISTERED USER ONLY **************



***************************************************************************************
*/


// BEGIN: customizable settings (for authorized users only)
var _tlsDayNameSingle = "D|L|M|M|J|V|S"
var _tlsDayNameShort = "Dom|Lun|Mar|Mier|Jue|Vie|Sab"
var _tlsDayNameLong = "Domindo|Lunes|Martes|Miércoles|Jueves|Viernes|Sábado"
var _tlsMonNameShort = "Ene|Feb|Mar|Abr|May|Jun|Jul|Ago|Sep|Oct|Nov|Dic"
var _tlsMonNameLong = "Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Noviembre|Diciembre"

var _tlsShowMonthNavigation = true
var _tlsNavigationLeft = "&#9668;" // « or < or &#9668;
var _tlsNavigationRight = "&#9658;" // » or > or &#9658;
var _tlsShowMonthYearDropDowns = true
var _tlsNumOfYearInDropDown = 10

var _tlsCal_CCS_Frame = 'tlsCalFrame'

var _tlsCal_CCS_HeaderBg = 'tlsCalHeaderBg'

var _tlsCal_CCS_HeaderDateBg = 'tlsCalHeaderDateBg'
var _tlsCal_CCS_HeaderDateText = 'tlsCalHeaderDateText'

var _tlsCal_CCS_FooterBg = 'tlsCalFooterBg'
var _tlsCal_CCS_FooterText = 'tlsCalFooterText'

var _tlsCal_CCS_DayHeader_Sun = 'tlsCalDayHeader_Sun'
var _tlsCal_CCS_DayHeader_Sat = 'tlsCalDayHeader_Sat'
var _tlsCal_CCS_DayHeader_Gen = 'tlsCalDayHeader_Gen'

var _tlsCal_CCS_DayBg_Sun = 'tlsCalDayBg_Sun'
var _tlsCal_CCS_DayBg_Sun_Oth = 'tlsCalDayBg_Sun_Oth'
var _tlsCal_CCS_DayText_Sun = 'tlsCalDayText_Sun'
var _tlsCal_CCS_DayText_Sun_Oth = 'tlsCalDayText_Sun_Oth'

var _tlsCal_CCS_DayBg_Sat = 'tlsCalDayBg_Sat'
var _tlsCal_CCS_DayBg_Sat_Oth = 'tlsCalDayBg_Sat_Oth'
var _tlsCal_CCS_DayText_Sat = 'tlsCalDayText_Sat'
var _tlsCal_CCS_DayText_Sat_Oth = 'tlsCalDayText_Sat_Oth'

var _tlsCal_CCS_DayBg_Gen = 'tlsCalDayBg_Gen'
var _tlsCal_CCS_DayBg_Gen_Oth = 'tlsCalDayBg_Gen_Oth'
var _tlsCal_CCS_DayText_Gen = 'tlsCalDayText_Gen'
var _tlsCal_CCS_DayText_Gen_Oth = 'tlsCalDayText_Gen_Oth'

var _tlsCal_CCS_DayBg_Today = 'tlsCalDayBg_Today'
var _tlsCal_CCS_DayBg_Selected = 'tlsCalDayBg_Selected'


var _tlsCal_CCS_MonBg_Gen = 'tlsCalMonBg_Gen'
var _tlsCal_CCS_MonText_Gen = 'tlsCalMonText_Gen'

var _tlsCal_CCS_MonBg_Today = 'tlsCalMonBg_Today'
var _tlsCal_CCS_MonBg_Selected = 'tlsCalMonBg_Selected'
// END: customizable settings (for authorized users only)



// BEGIN: Main TLS Calendar.JS Library 1.0 Code
var _tlsCSSFile = ""

var _tlsCalObjName = 'tlsCal'
var _tlsCalObj = null

var _tlsCalObjPopUp = null
var _tlsCalObjPopUp_Y = 0
var _tlsCalObjPopUp_W = 0
var _tlsCalObjPopUp_H = 0
var _tlsCalObjPopUp_srcElement = null

var _tlsCalDropDownDoc = null
var _tlsCalMonthDropDownHtml = ""
var _tlsCalYearDropDownHtml = ""

var _tlsCalIsShown = false
var _tlsCalIsShownByTriggerID = null
var _tlsCalTriggerCount = 0

var _tlsCalTodayDate = new Date()
var _tlsCalCurMonthNum = _tlsCalTodayDate.getMonth()
var _tlsCalCurDayNum = _tlsCalTodayDate.getDate()
var _tlsCalCurYearNum = _tlsCalTodayDate.getFullYear()

var _TLSCAL_PICKTYPE_DATE = 0
var _TLSCAL_PICKTYPE_WEEK = 1
var _TLSCAL_PICKTYPE_MONTH = 2
var _tlsCalPickType = 0

var _tlsCalSelectedDate = null
var _tlsCalSelectedWeekStartDate = null

var _tlsCalSelectToField = null // field in "" or '' that has value property (text, hidden), e.g., 'document.frmEntry.txtDateOfBirth'
var _tlsCalSelectJSFunction = null // function to overwrite the default tlsCalDoSelectDate() function


function tlsCalCreate() {
	var strHtml = ""
	
	_tlsCSSFile = ( tlsCalCreate.arguments.length == 1 ) ? tlsCalCreate.arguments[0] : ""
		
	strHtml += "<div id=tlsCal style=\"position:absolute;visibility:hidden;left:0px;top:0px;\">&nbsp;</div>"
	strHtml += "<div id=tlsCalMYDropDowns style=\"position:absolute;visibility:hidden;left:0px;top:0px;\">&nbsp;</div>"
	
	document.write(strHtml)
}

function tlsCalInit() {
	if ( _tlsNumOfYearInDropDown % 2 == 1 ) _tlsNumOfYearInDropDown++
	
	_tlsCalTodayDate = new Date()
	_tlsCalCurMonthNum = _tlsCalTodayDate.getMonth()
	_tlsCalCurDayNum = _tlsCalTodayDate.getDate()
	_tlsCalCurYearNum = _tlsCalTodayDate.getFullYear()
	
	_tlsCalObj = _tlsCmnObj.Get(_tlsCalObjName)

	
	if ( _tlsCmnBrw.IsIE ) {		
		_tlsCalObjPopUp = window.createPopup()
		var strHtml = "<html><head>"
			+ "<link rel='stylesheet' type='text/css' href='" + _tlsCSSFile + "'>"
			+ "</head><body topmargin=0 leftmargin=0 style='overflow: hidden;'>" 
			+ "</body></html>"
		
		var oPopupBody = _tlsCalObjPopUp.document
		oPopupBody.write(strHtml)
		
		_tlsCalDropDownDoc = _tlsCalObjPopUp.document
	}
	else
		_tlsCalDropDownDoc = document
} //tlsCalInit


// selectDateFunction is optional
function tlsCalPickInit(trigger, initialDate, selectToField, selectDateFunction) {
	if (trigger.id == "") {
		_tlsCalTriggerCount++
		trigger.id = "_tlsCalTriggerID" + _tlsCalTriggerCount
	}
	_tlsCalIsShownByTriggerID = trigger.id
	
	tlsCalInit()
	
	_tlsCalSelectToField = selectToField
	if ( tlsCalPickInit.arguments.length == 4 ) _tlsCalSelectJSFunction = selectDateFunction
	
	if ( _tlsCmnDT.IsDate(initialDate) ) {
		_tlsCalSelectedDate = new Date(initialDate)
		tlsCalDraw(initialDate)
	}
	else {
		//alert(_tlsCalCurYearNum)
		tlsCalDraw((_tlsCalCurMonthNum+1) + "/" + _tlsCalCurDayNum + "/" + _tlsCalCurYearNum)
	}
	
	var tlsCalObj = _tlsCalObj
	if (tlsCalObj) {
		var maxW, maxH
		
		if (_tlsCmnBrw.IsNS) {
			maxW = window.scrollX + window.innerWidth
			maxH = window.scrollY + window.innerHeight
		}
		else if (_tlsCmnBrw.IsIE) {
			maxW = (document.documentElement.scrollLeft   != 0 ? document.documentElement.scrollLeft    : document.body.scrollLeft)
				+ (document.documentElement.clientWidth  != 0 ? document.documentElement.clientWidth   : document.body.clientWidth)
			maxH = (document.documentElement.scrollTop    != 0 ? document.documentElement.scrollTop    : document.body.scrollTop)
				+ (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight)
		}
		
		var calW = tlsCalObj.offsetWidth
		var calH = tlsCalObj.offsetHeight
		
		var x = _tlsCmnObj.GetAbsoluteLeft(_tlsCalIsShownByTriggerID)
		var y = _tlsCmnObj.GetAbsoluteTop(_tlsCalIsShownByTriggerID) + _tlsCmnObj.GetHeight(_tlsCalIsShownByTriggerID) + 2

		if ( x + calW > maxW ) x = maxW - calW
		if ( y + calH > maxH ) y = maxH - calH
		
		if ( _tlsCmnBrw.IsIE ) {
			_tlsCalObjPopUp_Y = _tlsCmnObj.GetHeight(_tlsCalIsShownByTriggerID)
			_tlsCalObjPopUp_W = calW
			_tlsCalObjPopUp_H = calH
			_tlsCalObjPopUp_srcElement = event.srcElement
			
			var oPopupBody = _tlsCalObjPopUp.document.body;
			oPopupBody.style.border = "solid blue 0px";
			_tlsCalObjPopUp.show(0, _tlsCalObjPopUp_Y, _tlsCalObjPopUp_W, _tlsCalObjPopUp_H, _tlsCalObjPopUp_srcElement);	
		}
		else {
			tlsCalObj.style.left = x + "px"
			tlsCalObj.style.top = y + "px"
			tlsCalObj.style.visibility = "visible"
		}

		_tlsCalIsShown = true
	}

	return false
}

// selectDateFunction is optional
function tlsCalPickDate(trigger, initialDate, selectToField, selectDateFunction) {
	_tlsCalPickType = _TLSCAL_PICKTYPE_DATE
	return tlsCalPickInit(trigger, initialDate, selectToField, selectDateFunction)
	//return false
} //tlsCalPickDate

// selectDateFunction is optional
function tlsCalPickWeek(trigger, initialDate, selectToField, selectDateFunction) {
	_tlsCalPickType = _TLSCAL_PICKTYPE_WEEK
	return tlsCalPickInit(trigger, initialDate, selectToField, selectDateFunction)
} //tlsCalPickMonth

// selectDateFunction is optional
function tlsCalPickMonth(trigger, initialDate, selectToField, selectDateFunction) {
	_tlsCalPickType = _TLSCAL_PICKTYPE_MONTH
	return tlsCalPickInit(trigger, initialDate, selectToField, selectDateFunction)
} //tlsCalPickMonth

function tlsCalHide() {
	tlsCalDropDownHideAll()
	
	if ( _tlsCmnBrw.IsIE ) {
		if ( _tlsCalObjPopUp ) _tlsCalObjPopUp.hide()
	}
	else {
		var tlsCalObj = _tlsCalObj //_tlsCmnObj.Get(_tlsCalObjName)
		if (tlsCalObj) {
			_tlsCalIsShownByTriggerID = null
			_tlsCalSelectToField = null
			_tlsCalSelectJSFunction = null
			
			tlsCalObj.style.visibility = "hidden"
		}
	}
			
	_tlsCalIsShown = false		
}

function tlsCalDrawMonthYearDropDown(strDate) {
	var dtThis = _tlsCmnDT.IsDate(strDate) ? new Date(strDate) : new Date()

	var intMonNum = dtThis.getMonth()
	var intYearNum = dtThis.getFullYear()
	
	var strHtmlMon = "", strHtmlYear = ""
	var intIdx
	var intCnt
	
	
	if ( _tlsCalPickType != _TLSCAL_PICKTYPE_MONTH ) {
		var arrMonNames = _tlsMonNameLong.split("|")
		
		strHtmlMon += "<div id=tlsCalMonthDropDown class=tlsCalDropDownContainterMonth OnMouseOver=\"parent.tlsCalDropDownOn2('tlsCalMonth', 'tlsCalMonthDropDown')\" OnMouseOut=\"parent.tlsCalDropDownOff('tlsCalMonthDropDown')\">"
		//strHtmlMon += "<div id=tlsCalMonthDropDown class=tlsCalDropDownContainterMonth OnMouseOver=\"parent.tlsCalDropDownOn2('tlsCalMonth', 'tlsCalMonthDropDown')\" >"
		for (intIdx=0; intIdx<12; intIdx++) {
			strHtmlMon += "<a href=\"javascript:void(0)\" onClick=\"parent.tlsCalDraw('" + (intIdx+1) + "/" + _tlsCalCurDayNum + "/" + _tlsCalCurYearNum + "')\" class="
			if ( intIdx == _tlsCalCurMonthNum )
				strHtmlMon += "tlsCalDropDownItemCur"
			else
				strHtmlMon += "tlsCalDropDownItem"	
			strHtmlMon += addAttribute("onMouseOver", "window.status='Click para Seleccionar'; return true;")
				+ addAttribute("onMouseOut", "window.status=''; return true;")
				+ ">" + arrMonNames[intIdx] + "</a>"
		}
		strHtmlMon += "</div>"
	}
	
	strHtmlYear += "<div id=tlsCalYearDropDown class=tlsCalDropDownContainterYear OnMouseOver=\"parent.tlsCalDropDownOn2('tlsCalYear', 'tlsCalYearDropDown')\" OnMouseOut=\"parent.tlsCalDropDownOff('tlsCalYearDropDown')\">"
	strHtmlYear += "<a href=\"javascript:void(0)\" onClick=\"parent.tlsCalDrawMonthYearDropDown('" 
		+ (_tlsCalCurMonthNum+1) + "/" + _tlsCalCurDayNum + "/" + (intYearNum-_tlsNumOfYearInDropDown) + "', true)\" class=tlsCalDropDownItem"
		+ addAttribute("onMouseOver", "window.status='Click to display previous years block'; return true;")
		+ addAttribute("onMouseOut", "window.status=''; return true;")
		+ ">&nbsp;&nbsp;"+_tlsNavigationLeft+"</a>"
	for (intIdx=intYearNum-(_tlsNumOfYearInDropDown/2); intIdx<intYearNum+(_tlsNumOfYearInDropDown/2); intIdx++) {
		strHtmlYear += "<a href=\"javascript:void(0)\" onClick=\"parent.tlsCalDraw('" + (_tlsCalCurMonthNum+1) + "/" + _tlsCalCurDayNum + "/" + intIdx + "')\" class="
		if ( intIdx == _tlsCalCurYearNum )
			strHtmlYear += "tlsCalDropDownItemCur"
		else
			strHtmlYear += "tlsCalDropDownItem"
		strHtmlYear += addAttribute("onMouseOver", "window.status='Click para Seleccionar'; return true;")
			+ addAttribute("onMouseOut", "window.status=''; return true;")
			+ ">" + intIdx + "</a>"
	}
	strHtmlYear += "<a href=\"javascript:void(0)\" onClick=\"parent.tlsCalDrawMonthYearDropDown('" 
		+ (_tlsCalCurMonthNum+1) + "/" + _tlsCalCurDayNum + "/" + (intYearNum+_tlsNumOfYearInDropDown) + "', true)\" class=tlsCalDropDownItem"
		+ addAttribute("onMouseOver", "window.status='Click to display next years block'; return true;")
		+ addAttribute("onMouseOut", "window.status=''; return true;")
		+ ">&nbsp;&nbsp;"+_tlsNavigationRight+"</a>"
	/*strHtmlYear += "<div class=tlsCalDropDownItemSep></div>"
	strHtmlYear += "<a href=\"javascript:void(0)\" onClick=\"parent.tlsCalDropDownHideAll(); return parent.tlsCalGetYearInput()\" id=tlsCalYearInput class=tlsCalDropDownItem"
		+ addAttribute("onMouseOver", "window.status='Click to enter a year'; return true;")
		+ addAttribute("onMouseOut", "window.status=''; return true;")
		+ ">...</a>"*/
	strHtmlYear += "</div>"
	
	
	if ( _tlsCmnBrw.IsIE ) {
		_tlsCalMonthDropDownHtml = strHtmlMon
		_tlsCalYearDropDownHtml = strHtmlYear
		
		if ( _tlsCalIsShown ) {
			var tlsCalMYDropDowns = _tlsCmnObj.Get('tlsCalMYDropDowns', _tlsCalObjPopUp.document)
			if ( tlsCalMYDropDowns ) tlsCalMYDropDowns.innerHTML = _tlsCalMonthDropDownHtml + _tlsCalYearDropDownHtml
		}	
	}
	else {
		var tlsCalMYDropDowns = _tlsCmnObj.Get('tlsCalMYDropDowns')
		if ( tlsCalMYDropDowns ) tlsCalMYDropDowns.innerHTML = strHtmlMon + strHtmlYear
	}
		
	if ( tlsCalDrawMonthYearDropDown.arguments.length == 2 )
		tlsCalDropDownOn('tlsCalYear', 'tlsCalYearDropDown')
} //tlsCalDrawMonthYearDropDown

function tlsCalDrawHeader(currentDate) {
	var intMonNum = currentDate.getMonth()
	var intYearNum = currentDate.getFullYear()
	
	var dtTemp	
	var arrMonNames
	
	var strHtml = ""
	var strNavTitle
	var strNavDatePrev, strNavDateNext
	
	
	if ( _tlsCalPickType == _TLSCAL_PICKTYPE_MONTH ) {
		strNavTitle = "year"
		
		dtTemp = _tlsCmnDT.AddYears(currentDate, -1)
		strNavDatePrev = (dtTemp.getMonth()+1) + "/" + _tlsCalCurDayNum + "/" + dtTemp.getFullYear()
		
		dtTemp = _tlsCmnDT.AddYears(currentDate, 1)
		var intDaysInMonth = _tlsCmnDT.DaysInMonth(dtTemp)
		if ( _tlsCalCurDayNum > intDaysInMonth ) _tlsCalCurDayNum = intDaysInMonth
		strNavDateNext = (dtTemp.getMonth()+1) + "/" + _tlsCalCurDayNum + "/" + dtTemp.getFullYear()
	}
	else  {
		arrMonNames = _tlsMonNameLong.split("|")
		strNavTitle = "month"
		
		dtTemp = _tlsCmnDT.AddMonths(currentDate, -1)
		strNavDatePrev = (dtTemp.getMonth()+1) + "/" + _tlsCalCurDayNum + "/" + dtTemp.getFullYear()
		
		dtTemp = _tlsCmnDT.AddMonths(currentDate, 1)
		var intDaysInMonth = _tlsCmnDT.DaysInMonth(dtTemp)
		if ( _tlsCalCurDayNum > intDaysInMonth ) _tlsCalCurDayNum = intDaysInMonth
		strNavDateNext = (dtTemp.getMonth()+1) + "/" + _tlsCalCurDayNum + "/" + dtTemp.getFullYear()
	}
	
	
	strHtml += "<table border=0 cellpadding=0 cellspacing=0 width=100%><tr>"
	/*
	strHtml += "<td width=20 class=tlsCalHeaderBgCtl>"
		+ "<a href=\"javascript:void(0)\" onClick=\"alert('TLS Calendar.JS Library 1.0\\n\\nCopyright &#169; 2004 TILISOFT. All rights reserved.\\nhttp://www.tilisoft.com - info@tilisoft.com"
		+ "\\n\\nThe TLS Calendar.JS Library 1.0 (&quot;Library&quot;) is copyrighted by TILISOFT (&quot;Vendor&quot;), all rights reserved.\\n"
		+ "The Library or any part of it may not be used, modified, sold, published or distributed without\\n"
		+ "express permission from the Vendor.')\""
		+ " onMouseOver=\"window.status='TLS Calendar.JS Library 1.0 - Copyright &#169; 2004 TILISOFT. All rights reserved. - http://www.tilisoft.com'; return true;\""
		+ " onMouseOut=\"window.status=''; return true;\""
		+ " class=tlsCalHeaderDateText>&#169;</a></td>"
	*/
	strHtml += "<td width=20 class='tlsCalHeaderBgCtl tlsCalHeaderDateText'>&#169;</td>"
	strHtml += "<td" + addAttribute("class", _tlsCal_CCS_HeaderDateBg) + ">"
		+ "<table border=0 cellpadding=0 cellspacing=0 width=100%><tr>"
	if ( _tlsShowMonthNavigation ) {
		strHtml += "<td width=20 class=tlsCalHeaderDateText>"
		strHtml += "&nbsp;<a href=\"javascript:void(0)\" onClick=\"parent.tlsCalDraw('" + strNavDatePrev + "')\""
			+ addAttribute("class", _tlsCal_CCS_HeaderDateText) 
			+ addAttribute("onMouseOver", "window.status='Click to go to previous " + strNavTitle + "'; return true;")
			+ addAttribute("onMouseOut", "window.status=''; return true;")
			+ ">" + _tlsNavigationLeft + "</a></td>"
		strHtml += "<td width=10 class=tlsCalHeaderDateText></td>"
	}
	
	strHtml += "<td align=center>"
	if ( _tlsShowMonthYearDropDowns ) {
		if ( _tlsCalPickType != _TLSCAL_PICKTYPE_MONTH ) {
			strHtml += "<a id=tlsCalMonth href=\"javascript:void(0)\" onMouseOver=\"parent.tlsCalDropDownOn(this.id, 'tlsCalMonthDropDown', this); window.status=''; return true;\" OnMouseOut=\"parent.tlsCalDropDownOff('tlsCalMonthDropDown'); window.status=''; return true;\""
				+ addAttribute("class", _tlsCal_CCS_HeaderDateText) 
				+ ">" + arrMonNames[intMonNum] + "</a>"
			strHtml += "&nbsp&nbsp;"
		}
		
		strHtml += "<a id=tlsCalYear href=\"javascript:void(0)\" onMouseOver=\"parent.tlsCalDropDownOn(this.id, 'tlsCalYearDropDown', this); window.status=''; return true;\" OnMouseOut=\"parent.tlsCalDropDownOff('tlsCalYearDropDown'); window.status=''; return true;\""
			+ addAttribute("class", _tlsCal_CCS_HeaderDateText) 
			+ ">" + intYearNum + "</a>"
	}
	else {
		strHtml += "<span" + addAttribute("class", _tlsCal_CCS_HeaderDateText) + ">"
		if ( _tlsCalPickType != _TLSCAL_PICKTYPE_MONTH ) 
			strHtml += arrMonNames[intMonNum] + "&nbsp&nbsp;"
		strHtml += intYearNum + "</span>"
	}
	strHtml += "</td>"
		
	if ( _tlsShowMonthNavigation ) {
		strHtml += "<td width=10 class=tlsCalHeaderDateText></td>"
		strHtml += "<td width=20 align=right class=tlsCalHeaderDateText>"
		strHtml += "<a href=\"javascript:void(0)\" onClick=\"parent.tlsCalDraw('" + strNavDateNext + "')\""
			+ addAttribute("class", _tlsCal_CCS_HeaderDateText) 
			+ addAttribute("onMouseOver", "window.status='Click to go to next " + strNavTitle + "'; return true;")
			+ addAttribute("onMouseOut", "window.status=''; return true;")
			+ ">" + _tlsNavigationRight + "</a>&nbsp;</td>"
	}
	
	strHtml += "</td></tr></table>"
	
	strHtml += "<td width=20 class=tlsCalHeaderBgCtl>"
		+ "<a href=\"javascript:void(0)\" onClick=\"parent.tlsCalHide()\""
		+ " onMouseOver=\"window.status='Close this calendar'; return true;\""
		+ " onMouseOut=\"window.status=''; return true;\""		
		+ " class=tlsCalHeaderDateText><font size=1>X</font></a></td>"
	strHtml += "</tr></table>"
	
	return strHtml
} // tlsCalDrawHeader

function tlsCalDrawFooter() {
	var arrDayNames = _tlsDayNameLong.split("|")
	
	var strHtml = ""
	
	var strMM = _tlsCmnStr.Pad(_tlsCalTodayDate.getMonth()+1, 2, "0", true)
	var strDD = _tlsCmnStr.Pad(_tlsCalTodayDate.getDate(), 2, "0", true)
	var strYYYY = _tlsCmnStr.Pad(_tlsCalTodayDate.getFullYear(), 4, "0", true) 
		
		
	strHtml += "<table>"
	strHtml += "<tr><td" + addAttribute("class", _tlsCal_CCS_FooterText) 
		+ " align=center><a href=\"javascript:void(0)\" OnClick=\"{"
	if ( _tlsCalSelectJSFunction ) {
		var str = "parent." + _tlsCalSelectJSFunction.replace("{M}", strMM).replace("{D}", strDD).replace("{Y}", strYYYY)
		strHtml += " parent.tlsCalHide(); " + str
	}
	else
		strHtml += " parent.tlsCalDoSelectDate('" + strMM + "/" + strDD + "/" + strYYYY + "');"
	strHtml += " }\"" 
		+ addAttribute("class", _tlsCal_CCS_FooterText)
		+ addAttribute("onMouseOver", "window.status='Click para Seleccionar'; return true;")
		+ addAttribute("onMouseOut", "window.status=''; return true;")
		+ ">Hoy es " + arrDayNames[_tlsCalTodayDate.getDay()] + ", " 
		+ strDD + "/" + strMM + "/" + strYYYY + "</a></td></tr>"
	strHtml += "</table>"
	
	return strHtml
} // tlsCalDrawFooter

function tlsCalDrawDayCell(dtDate, intCol, isOtherMonDate) {
	var strHtml = ""
	
	var strMM = _tlsCmnStr.Pad(dtDate.getMonth()+1, 2, "0", true)
	var strDD = _tlsCmnStr.Pad(dtDate.getDate(), 2, "0", true)
	var strYYYY = _tlsCmnStr.Pad(dtDate.getFullYear(), 4, "0", true)
		
	var cssClassBg, cssClassText
	
	
	if ( _tlsCalPickType == _TLSCAL_PICKTYPE_DATE ) {
		strMM = _tlsCmnStr.Pad(dtDate.getMonth()+1, 2, "0", true)
		strDD = _tlsCmnStr.Pad(dtDate.getDate(), 2, "0", true)
		strYYYY = _tlsCmnStr.Pad(dtDate.getFullYear(), 4, "0", true)
	}
	else { // _tlsCalPickType == _TLSCAL_PICKTYPE_WEEK
		var intFirstDay = dtDate.getDay() // 0 = sun			
		var dtWeekStartDate = _tlsCmnDT.AddDays(dtDate, -intFirstDay)
			
		strMM = _tlsCmnStr.Pad(dtWeekStartDate.getMonth()+1, 2, "0", true)
		strDD = _tlsCmnStr.Pad(dtWeekStartDate.getDate(), 2, "0", true)
		strYYYY = _tlsCmnStr.Pad(dtWeekStartDate.getFullYear(), 4, "0", true)
	}
		
	
	if ( isOtherMonDate ) {
		if ( intCol % 7 == 1 ) { cssClassBg = _tlsCal_CCS_DayBg_Sun_Oth; cssClassText = _tlsCal_CCS_DayText_Sun_Oth; }
		else if ( intCol % 7 == 0 ) { cssClassBg = _tlsCal_CCS_DayBg_Sat_Oth; cssClassText = _tlsCal_CCS_DayText_Sat_Oth; }
		else { cssClassBg = _tlsCal_CCS_DayBg_Gen_Oth; cssClassText = _tlsCal_CCS_DayText_Gen_Oth; }
	}
	else {
		if ( intCol % 7 == 1 ) { strHtml += "<tr>"; cssClassBg = _tlsCal_CCS_DayBg_Sun; cssClassText = _tlsCal_CCS_DayText_Sun; }
		else if ( intCol % 7 == 0 ) { cssClassBg = _tlsCal_CCS_DayBg_Sat; cssClassText = _tlsCal_CCS_DayText_Sat; }
		else { cssClassBg = _tlsCal_CCS_DayBg_Gen; cssClassText = _tlsCal_CCS_DayText_Gen; }
	}
	
	if ( _tlsCalTodayDate.toString() == dtDate.toString() ) { cssClassBg = _tlsCal_CCS_DayBg_Today; }
	
	if ( _tlsCalSelectedDate ) {
		if ( _tlsCalPickType == _TLSCAL_PICKTYPE_DATE ) {
			if ( _tlsCalSelectedDate.toString() == dtDate.toString() ) { cssClassBg = _tlsCal_CCS_DayBg_Selected; }
		}
		else { // _tlsCalPickType == _TLSCAL_PICKTYPE_WEEK
			var intDiff = _tlsCmnDT.DiffDays(dtDate, _tlsCalSelectedWeekStartDate) 
			if ( intDiff >= -6 && intDiff <= 0 ) { cssClassBg = _tlsCal_CCS_DayBg_Selected; }
		}
	}
	
	strHtml += "<td" + addAttribute("class", cssClassBg) + ">" 
		+ "<a href=\"javascript:void(0)\" OnClick=\"{"
	if ( _tlsCalSelectJSFunction ) {
		var str = "parent." + _tlsCalSelectJSFunction.replace("{M}", strMM).replace("{D}", strDD).replace("{Y}", strYYYY)
		strHtml += " parent.tlsCalHide(); " + str
	}
	else
		strHtml += " parent.tlsCalDoSelectDate('" + strMM + "/" + strDD + "/" + strYYYY + "');"
	strHtml += " }\"" 
		+ addAttribute("class", cssClassText) 
		+ addAttribute("onMouseOver", "window.status='Click para Seleccionar'; return true;")
		+ addAttribute("onMouseOut", "window.status=''; return true;")
		+ ">" + dtDate.getDate() + "</a></td>"
	
	return strHtml
} //tlsCalDrawDayCell

function tlsCalDrawDays(dtDate) {
	var arrDayNames = _tlsDayNameSingle.split("|")
	
	var intFirstDay = dtDate.getDay() // 0 = sun
	
	var strHtml = ""
	var intIdx
	var intCnt
	
	var intRow = 0
	var intCol = 1
	
	var cssClassBg = "", cssClassText = ""
	var dtDrawing
	
	
	// draw day names
	strHtml += "<tr>"
	for (intIdx=0; intIdx<7; intIdx++) {
		if ( intCol % 7 == 1 ) { cssClassBg = _tlsCal_CCS_DayHeader_Sun; }
		else if ( intCol % 7 == 0 ) { cssClassBg = _tlsCal_CCS_DayHeader_Sat; }
		else { cssClassBg = _tlsCal_CCS_DayHeader_Gen; }
		strHtml += "<td" + addAttribute("class", cssClassBg) + ">" + arrDayNames[intIdx] + "</td>"
	}
	strHtml += "</tr>"
	
	// draw prev month
	intCnt = (intFirstDay == 0) ? 7 : intFirstDay
	for (intIdx=intCnt-1; intIdx>=0; intIdx--, intCol++) {
		dtDrawing = _tlsCmnDT.AddDays(dtDate, -intIdx-1)
		
		if ( intCol % 7 == 1 ) { strHtml += "<tr>" }
		strHtml += tlsCalDrawDayCell(dtDrawing, intCol, true)
		if ( intCol % 7 == 0 ) { strHtml += "</tr>"; intRow++ }
	}
	
	// draw this month
	intCnt = _tlsCmnDT.DaysInMonth(dtDate)
	for (intIdx=0; intIdx<intCnt; intIdx++, intCol++) {
		dtDrawing = _tlsCmnDT.AddDays(dtDate, intIdx)
	
		if ( intCol % 7 == 1 ) { strHtml += "<tr>" }
		strHtml += tlsCalDrawDayCell(dtDrawing, intCol, false)
		if ( intCol % 7 == 0 ) { strHtml += "</tr>"; intRow++ }
	}
	
	// draw next month
	dtDate = _tlsCmnDT.AddMonths(dtDate, 1)
	intCnt = 14
	for (intIdx=0; intIdx<intCnt; intIdx++, intCol++) {
		dtDrawing = _tlsCmnDT.AddDays(dtDate, intIdx)
	
		if ( intCol % 7 == 1 ) { strHtml += "<tr>" }
		strHtml += tlsCalDrawDayCell(dtDrawing, intCol, true)
		if ( intCol % 7 == 0 ) { strHtml += "</tr>"; intRow++ }
		if ( intRow == 6 ) intIdx = 100
	}
	
	return strHtml
} //tlsCalDrawDays

function tlsCalDrawMonths(dtDate) {
	var arrMonNames = _tlsMonNameLong.split("|")
	
	var intYYYY = dtDate.getFullYear()
	
	var strMM
	var strDD = _tlsCmnStr.Pad(_tlsCalCurDayNum, 2, "0", true)
	var strYYYY = _tlsCmnStr.Pad(intYYYY, 4, "0", true)
	
	
	var strHtml = ""
	var intIdx, intIdx2
	var intCnt = 6
	
	var intRow = 0
	var intCol = 1
	
	var cssClassBg = "", cssClassText = _tlsCal_CCS_MonText_Gen
	var dtDrawing
	
	
	for (intIdx=0; intIdx<intCnt; intIdx++) {
		strHtml += "<tr>"
			
		for (intIdx2=0; intIdx2<2; intIdx2++) {
			strMM = _tlsCmnStr.Pad(intIdx+1 + (intIdx2 * 6), 2, "0", true)
			
			if ( _tlsCalSelectedDate && _tlsCalSelectedDate.getFullYear() == intYYYY 
				&& _tlsCalSelectedDate.getMonth() == intIdx + (intIdx2 * 6) ) { cssClassBg = _tlsCal_CCS_MonBg_Selected; }
			else if ( _tlsCalTodayDate.getFullYear() == intYYYY 
				&& _tlsCalTodayDate.getMonth() == intIdx + (intIdx2 * 6) ) { cssClassBg = _tlsCal_CCS_MonBg_Today; }
			else
				{ cssClassBg = _tlsCal_CCS_MonBg_Gen; }
			
			strHtml += "<td" + addAttribute("class", cssClassBg) + ">" 
				+ "<a href=\"javascript:void(0)\" OnClick=\"{"
			if ( _tlsCalSelectJSFunction ) {
				var str = "parent." + _tlsCalSelectJSFunction.replace("{M}", strMM).replace("{D}", strDD).replace("{Y}", strYYYY)
				strHtml += " parent.tlsCalHide(); " + str
			}
			else
				strHtml += " parent.tlsCalDoSelectDate('" + strMM + "/" + strDD + "/" + strYYYY + "');"
			strHtml += " }\"" 
				+ addAttribute("class", cssClassText) 
				//+ addAttribute("onMouseOver", "window.status='Click para Seleccionar'; return true;")
				+ addAttribute("onMouseOut", "window.status=''; return true;")
				+ ">" + arrMonNames[intIdx + (intIdx2 * 6)] + "</a></td>"
		}
		
		strHtml += "</tr>"
	}
	
	return strHtml
} //tlsCalDrawMonths

function tlsCalDraw(strDate) {
	var dtThis = _tlsCmnDT.IsDate(strDate) ? new Date(strDate) : new Date()
	var intColSpan = ( _tlsCalPickType == _TLSCAL_PICKTYPE_MONTH ) ? 2 : 7
	var strHtml = ""
	
	
	_tlsCalCurMonthNum = dtThis.getMonth()
	_tlsCalCurDayNum = dtThis.getDate()
	_tlsCalCurYearNum = dtThis.getFullYear()

	dtThis.setDate(1)
	dtThis.setHours(0)
	dtThis.setMinutes(0)
	dtThis.setSeconds(0)
	dtThis.setMilliseconds(0)	
	
	tlsCalDrawMonthYearDropDown((_tlsCalCurMonthNum+1) + "/" + _tlsCalCurDayNum + "/" + _tlsCalCurYearNum)
	
	strHtml += "<table" + addAttribute("class", _tlsCal_CCS_Frame) + " cellspacing=0>"
	
	// draw current month & year
	strHtml += "<tr><td colspan=" + intColSpan + addAttribute("class", _tlsCal_CCS_HeaderBg) + ">" 
		+ tlsCalDrawHeader(dtThis) + "</td></tr>"
	
	
	_tlsCalTodayDate = new Date()
	_tlsCalTodayDate.setHours(0)
	_tlsCalTodayDate.setMinutes(0)
	_tlsCalTodayDate.setSeconds(0)
	_tlsCalTodayDate.setMilliseconds(0)	
	
	if ( _tlsCalSelectedDate ) {
		_tlsCalSelectedDate.setHours(0)
		_tlsCalSelectedDate.setMinutes(0)
		_tlsCalSelectedDate.setSeconds(0)
		_tlsCalSelectedDate.setMilliseconds(0)
		
		if ( _tlsCalPickType == _TLSCAL_PICKTYPE_WEEK ) {
			var intFirstDay = _tlsCalSelectedDate.getDay() // 0 = sun			
			_tlsCalSelectedWeekStartDate = _tlsCmnDT.AddDays(_tlsCalSelectedDate, -intFirstDay)
			//alert(_tlsCmnDT.DiffDays(new Date("01/10/2004"), new Date("01/4/2004")))
			//alert(_tlsCmnDT.DiffDays(_tlsCalSelectedDate, _tlsCalSelectedWeekStartDate))
		}
	}
	
	if ( _tlsCalPickType == _TLSCAL_PICKTYPE_MONTH )
		strHtml += tlsCalDrawMonths(dtThis)
	else
		strHtml += tlsCalDrawDays(dtThis)
	
	strHtml += "<tr><td colspan=" + intColSpan + addAttribute("class", _tlsCal_CCS_FooterBg) + ">" 
		+ tlsCalDrawFooter() + "</td></tr>"
	
	strHtml += "</table>"
	
	var tlsCalObj = _tlsCalObj//_tlsCmnObj.Get(_tlsCalObjName)
	tlsCalObj.innerHTML = strHtml
	
	if ( _tlsCmnBrw.IsIE ) {
		var oPopupBody = _tlsCalObjPopUp.document.body
		oPopupBody.innerHTML = 
			"<div id=tlsCalMYDropDowns style='position:absolute;visibility:hidden;left:0px;top:0px;'>&nbsp;</div>"
			+ strHtml
	}
	
} //tlsCalDraw

function tlsCalGetYearInput() {
	tlsCalDropDownHideAll()
	
	var year = prompt('Año:', _tlsCalCurYearNum )

	if ( (year == "") || (year == null) )
		return false
	
	var newYear = parseInt(year)
	if ( isNaN(newYear) || newYear < 0 || newYear > 9999 ) {
		alert("Invalid year input: " + year)
		return false
	}
	
	tlsCalDraw((_tlsCalCurMonthNum+1) + "/" + _tlsCalCurDayNum + "/" + newYear)
	
	if ( _tlsCmnBrw.IsIE )
		_tlsCalObjPopUp.show(0, _tlsCalObjPopUp_Y, _tlsCalObjPopUp_W, _tlsCalObjPopUp_H, _tlsCalObjPopUp_srcElement);	
	
	return true
} //tlsCalGetYearInput

function tlsCalDoSelectDate(strDate) {
	if ( _tlsCalSelectToField ) {
		field = eval(_tlsCalSelectToField)
		if ( field ) field.value = strDate
	}
	tlsCalHide()
} //tlsCalDoSelectDate

function addAttribute(name, value) {
	if ( value.length > 0 ) 
		return " " + name + "=\"" + value + "\""
	else
		return ""
} //addAttribute


// BEGIN: Month & Year drop-downs
var _tlsCalHideDropDown = null
var _tlsCalLastShownDropDown = ""

function tlsCalDropDownHide(div){
	if ( _tlsCalDropDownDoc ) {
		var Cal = _tlsCmnObj.Get(div, _tlsCalDropDownDoc)
		if ( Cal ) Cal.style.visibility = "hidden"
	}
}

function tlsCalDropDownShow(triggerID, div){
	if ( _tlsCalDropDownDoc ) {
		var x = _tlsCmnObj.GetAbsoluteLeft(triggerID, _tlsCalDropDownDoc)
		var y = _tlsCmnObj.GetAbsoluteTop(triggerID, _tlsCalDropDownDoc) + _tlsCmnObj.GetHeight(triggerID, _tlsCalDropDownDoc)
		
		var Cal = _tlsCmnObj.Get(div, _tlsCalDropDownDoc)
		if ( Cal ) {
			Cal.style.left = x + "px"
			Cal.style.top = y + "px"
			Cal.style.visibility = "visible"
			_tlsCalLastShownDropDown = div
		}
	}
}

function tlsCalDropDownHideAll(){
	_tlsCalLastShownDropDown = ""
	tlsCalDropDownHide('tlsCalMonthDropDown')
	tlsCalDropDownHide('tlsCalYearDropDown')
}

function tlsCalDropDownOn(triggerID, div) {
	if ( _tlsCmnBrw.IsIE ) {
		var tlsCalMYDropDowns = _tlsCmnObj.Get('tlsCalMYDropDowns', _tlsCalObjPopUp.document)
		tlsCalMYDropDowns.innerHTML = _tlsCalMonthDropDownHtml + _tlsCalYearDropDownHtml
	}
	tlsCalDropDownOn2(triggerID, div)	
}

function tlsCalDropDownOn2(triggerID, div) {
	clearTimeout(_tlsCalHideDropDown)
	if ( _tlsCalLastShownDropDown.length > 0 && _tlsCalLastShownDropDown != div ) 
		tlsCalDropDownHide(_tlsCalLastShownDropDown)
	tlsCalDropDownShow(triggerID, div)
}
		
function tlsCalDropDownOff(div) {
	_tlsCalHideDropDown = setTimeout('tlsCalDropDownHideAll()', 200)
}
// END: Month & Year drop-downs



if (_tlsCmnBrw.IsIE)
	document.onmousedown = pageMousedown
else
	document.addEventListener("mousedown", pageMousedown, true)

function pageMousedown(event) {
	if (_tlsCalIsShown == null)	return

	var el = (_tlsCmnBrw.IsIE) ? el = window.event.srcElement :
		(event.target.tagName ? event.target : event.target.parentNode)
	if (!el) return
	
	var className = el.className
	if (className.indexOf('tlsCal') < 0) tlsCalHide()
}

// END: Main TLS Calendar.JS Library 1.0 Code
