			/*
			DHTML DatePicker v1.0
			was created by Alex Corzo
			Last Update 25/08/2004

			This script is free to use, but this message has to remain.
			*/

			var instance = null;
			var defaultMsg = null;

			var daysInitial = new Array("S", "M", "T", "W", "T", "F", "S");

			var monthNames = new Array("January", "February", "March", "April",
				"May", "June", "July", "August", "September", "October",
				"November", "December");
/*
			var daysInitial = new Array("D", "L", "M", "M", "J", "V", "S");

			var monthNames = new Array("Enero", "Febrero", "Marzo", "Abril",
				"Mayo", "Junio", "Julio", "Agosto", "Setiembre", "Octubre",
				"Noviembre", "Diciembre");
*/
			var monthNamesStandard = new Array("January", "February", "March", "April",
				"May", "June", "July", "August", "September", "October",
				"November", "December");

			function datePicker(container, xLoc, yLoc, pickerWidth, yearStart,
				displayedYears, resetCalendar, output, output2)
			{
				//defaultMsg = "DHTML DatePicker v1.0 - created by Alex Corzo";
				//window.status = defaultMsg;

			//start methods
				this.setupPicker = setupPicker;
				this.setupCalendar = setupCalendar;
				this.setFormat = setFormat;
				this.openPicker = openPicker;
				this.closePicker = closePicker;
				this.movePickerTo = movePickerTo;
				this.setOutput = setOutput;
			//end methods

				this.container = (document.getElementById(container) != null) ?
					document.getElementById(container):document.body;
				this.container.style.position = "relative";
				this.output = document.getElementById(output);
				this.output2 = document.getElementById(output2);
				this.resetCalendar = resetCalendar;
				this.outputFormat = "yyyy(-)mm(-)dd";

			/**/var mainTable = document.createElement("table");

				if (!pickerWidth)
				{
					pickerWidth = "162px";
				}
				mainTable.oncontextmenu = restrict;
				mainTable.ondragstart = restrict;
				mainTable.onselectstart = restrict;

				mainTable.style.width = pickerWidth;
//				mainTable.style.height = "180px";

				mainTable.style.backgroundColor = "#FFFFFF";
				mainTable.style.position = "absolute";
				mainTable.style.zIndex = 5;
				mainTable.style.top = yLoc;
				mainTable.style.left = xLoc;

				mainTable.style.borderSpacing = "0px";

				mainTable.cellPadding = "0px";
				mainTable.cellSpacing = "0px";
				mainTable.border = "1"

				mainTable.insertRow(0);
				mainTable.rows[0].insertCell(0);
				mainTable.insertRow(1);
				mainTable.rows[1].insertCell(0);

			/**/var yearData = mainTable.rows[0].cells[0];
				yearData.style.zIndex = 5;
				yearData.style.border = "1px solid #999999";
				yearData.style.height = "25px";
				yearData.style.textAlign = "center";
				yearData.style.verticalAlign = "middle";

				var thisYear = new Date();

				this.yearStart = (isNaN(yearStart) || !yearStart) ? thisYear.getFullYear():yearStart;
				this.displayedYears = (isNaN(displayedYears) || !displayedYears || parseInt(displayedYears) == 0) ? 100:displayedYears;

				yearSelect = document.createElement("select")
//				yearSelect.style.cursor = "pointer";
				yearSelect.onchange = setupPicker;
				yearSelect.className = "year";

				this.yearStart = this.yearStart-1;
				var i=this.yearStart;

				while(i>eval(parseInt(this.yearStart)+parseInt(this.displayedYears)) ||
					i<eval(parseInt(this.yearStart)+parseInt(this.displayedYears)))
				{
					var tmpOption = document.createElement("option");
					tmpOption.value = i;
					tmpOption.text = i;
					if (this.displayedYears<0)
					{
						yearSelect.add(tmpOption,yearSelect.length);
						--i
					}
					else
					{
						yearSelect.add(tmpOption,i);
						++i
					}
					if (i == eval(parseInt(this.yearStart)+parseInt(this.displayedYears)))
					{
						break;
					}
				}
				yearSelect.selectedIndex = 1;

				this.yearSelect = yearSelect;

				yearData.className = "year";
				yearData.appendChild(yearSelect);


			/**/var bodyTable = document.createElement("table");
				bodyTable.style.zIndex = 5;
				bodyTable.cellPadding = "0px";
				bodyTable.cellSpacing = "0px";
				bodyTable.border = 0;
				bodyTable.style.width="100%";
				bodyTable.insertRow(0);
				bodyTable.rows[0].insertCell(0);
				bodyTable.insertRow(1);
				bodyTable.rows[1].insertCell(0);
				bodyTable.insertRow(2);
				bodyTable.rows[2].insertCell(0);
				bodyTable.insertRow(3);
				bodyTable.rows[3].insertCell(0);

			/**/var monthCell = bodyTable.rows[0].cells[0];
				var monthSelect = document.createElement("select");
				monthSelect.onchange = setupCalendar;
				monthSelect.className = "month";

				for (var i=0; i<monthNames.length; i++)
				{
					var tmpOption = document.createElement("option");
					tmpOption.value = monthNames[i];
					tmpOption.text = monthNames[i];

					monthSelect.add(tmpOption,i);
				}
				monthSelect.selectedIndex = 1;
				monthSelect.selectedIndex = thisYear.getMonth();

				this.monthSelect = monthSelect;
				monthCell.className = "month";
				monthCell.appendChild(monthSelect);

			/**/var daysCell = bodyTable.rows[1].cells[0];
				daysCell.style.cursor = "default";
				daysCell.style.borderTop = "1px solid #999999";
				daysCell.className = "days";
				var daysTable = document.createElement("table");
				daysTable.className = "days";
				daysTable.border = 0;
				daysTable.style.width="100%";
				daysTable.insertRow(0);
				for (var i=0; i<daysInitial.length; i++)
				{
					daysTable.rows[0].insertCell(i);
					daysTable.rows[0].cells[i].innerText = daysInitial[i];
					daysTable.rows[0].cells[i].style.width = parseInt(100/daysInitial.length) + "%";
					daysTable.rows[0].cells[i].style.textAlign = "center";
				}
				daysCell.appendChild(daysTable);

			/**/var calendarCell = bodyTable.rows[2].cells[0];
				var calendarTable = document.createElement("table");
//				calendarTable.style.cursor = "pointer";
//				calendarTable.style.cursor = "hand";
				calendarTable.border = 0;
				calendarTable.style.width = "100%";
				for (var i=0; i<5; i++)
				{
					calendarTable.insertRow(i);
					for (var j=0; j<daysTable.rows[0].cells.length; j++)
					{
						calendarTable.rows[i].insertCell(j);
						calendarTable.rows[i].cells[j].onmouseover = selectDate
						calendarTable.rows[i].cells[j].onmouseout = restoreDate
						calendarTable.rows[i].cells[j].onclick = pickDate
						calendarTable.rows[i].cells[j].className = (j==0) ? "sunday":"normal";
					}
				}

				this.calendarTable = calendarTable;
				calendarCell.appendChild(calendarTable);

			/**/var footCell = bodyTable.rows[3].cells[0];
				footCell.className = "foot";
				footCell.innerHTML = '<a href="javascript:closePicker()" onmouseover="showMessage(\'Close Date Picker\'); return true;" onmouseout=showMessage()>close</a>';

			/**/var bodyData = mainTable.rows[1].cells[0];
				bodyData.appendChild(bodyTable);

				bodyData.style.border = "1px solid #999999";
				bodyData.style.borderTop = "0px";
				bodyData.style.verticalAlign = "top";
				bodyData.style.zIndex = 5;
//				bodyData.innerText = "body";

				mainTable.style.visibility = "hidden";
				this.mainTable = mainTable;
				this.mainTable.style.zIndex = 5;
				this.container.appendChild(mainTable);
				this.container.style.zIndex = 5;
				setupPicker(this);
			}

			function setupPicker(obj)
			{
				instance = (obj) ? obj:instance;
				if (instance.resetCalendar == true)
				{
//					instance.monthSelect.selectedIndex = 0;
				}
				setupCalendar(instance);
			}

			function setupCalendar(obj)
			{
				instance = (obj) ? obj:instance;
				var year = instance.yearSelect.options[instance.yearSelect.selectedIndex].value;
				var monthIndex = instance.monthSelect.selectedIndex;
				var calendar = instance.calendarTable;

				var clientCalendar = new Date(monthNamesStandard[monthIndex] + " 01, " + year);

				var startingDay = clientCalendar.getDay()

				var counter = 0;

				for (var i=0; i<calendar.rows.length; i++)
				{
					for (var j=0; j<calendar.rows[0].cells.length; j++)
					{
						if (j >= startingDay || i > 0)
						{
							counter++
							clientCalendar.setDate(counter);
							if (clientCalendar.getMonth() == monthIndex)
							{
								calendar.rows[i].cells[j].innerText = counter;
							}
							else
							{
								calendar.rows[i].cells[j].innerText = "";
							}
						}
						else
						{
							calendar.rows[i].cells[j].innerText = "";
						}
					}
				}

				for (var i=0; i<calendar.rows.length; i++)
				{
					for (var j=0; j<calendar.rows[0].cells.length; j++)
					{
						counter++
						clientCalendar.setDate(counter);
						if (clientCalendar.getMonth() == monthIndex)
						{
							calendar.rows[i].cells[j].innerText = counter;
						}
						else
						{
							break;
						}
					}
				}
			}

//			var tmpClassName = null;

			function selectDate()
			{
				//this = TD object
				if (this.innerText != "")
				{
					this.className = this.className + "Selected";
					showMessage("Click to pick this date");
				}
			}

			function restoreDate()
			{
				if (this.innerText != "")
				{
					this.className = this.className.substring(0,this.className.length-8);
					showMessage();
				}
			}

			function pickDate(obj)
			{
				instance = (obj) ? obj:instance;
				outputYear = instance.yearSelect.options[instance.yearSelect.selectedIndex].value;
				outputMonth = instance.monthSelect.selectedIndex;

				instance.output.value = formatOutput(instance, outputYear, ++outputMonth, this.innerText);
				instance.output2.value = instance.output.value;
				closePicker();
			}

			function formatOutput(instance, year, month, day)
			{
				var search = new Array("Y", "M", "D");
				var digits = new Array();

				var separator = new Array();
				var output = instance.outputFormat;

				for (var i=0; i<3; i++)
				{
					var tmpDigits = 0;
					for (var j=0; j<instance.outputFormat.length; j++)
					{
						if(instance.outputFormat.charAt(j).toUpperCase() == search[i])
						{
							digits[i] = ++tmpDigits;
						}
					}
				}
				for (var i=0; i<2; i++)
				{
					separator[i] = output.substring(output.indexOf("(")+1,output.indexOf(")"));
					output = output.substring(output.indexOf(")")+1);
				}

				digits[0] = (digits[0]>4) ? 4:digits[0];
				digits[2] = (digits[2]>2) ? 2:digits[2];

				year = year.substring(4-digits[0]);
				if (parseInt(month)<10)
				{
					month = "0"+month;
				}
				if (digits[1] > 2)
				{
					month = monthNames[(month-1)];
				}
				else
				{
					month = (month+"").substring(2-digits[1]);
				}
				if (parseInt(day)<10)
				{
					day = "0"+day;
				}

				day = (day+"").substring(2-digits[2]);

				var outputArray = new Array(year, month, day);

				var Y = instance.outputFormat.toUpperCase().indexOf("Y");
				var M = instance.outputFormat.toUpperCase().indexOf("M");
				var D = instance.outputFormat.toUpperCase().indexOf("D");

				var arr = new Array (Y, M, D);

				var tmpArray = new Array();
				tmpArray[parseInt(Y)] = year;
				tmpArray[parseInt(M)] = month;
				tmpArray[parseInt(D)] = day;

				var myArray = new Array();

				for (var i=0; i<tmpArray.length; i++)
				{
					if (tmpArray[i] != null)
					{
						myArray[myArray.length] = tmpArray[i];
					}
				}

				var calendarOutput = "";

				for (var i=0; i<myArray.length; i++)
				{
					calendarOutput += myArray[i]
					if (i<separator.length)
					{
						calendarOutput += separator[i]
					}
				}

				return calendarOutput;
			}

			function setFormat(format)
			{
				this.outputFormat = format;
			}

			function closePicker()
			{
				if (instance)
				{
					instance.mainTable.style.visibility = "hidden";
                    instance.mainTable.style.display = "none";
					getIFrameReference(false)
                }
			}

			function openPicker()
			{
				if (instance)
				{
					instance.mainTable.style.visibility = "visible";
                    instance.mainTable.style.display = "block";
                    setupIframe(instance.mainTable, getIFrameReference(true, instance))
                }
			}

			function restrict()
			{
				return false;
			}

			function showMessage(msg)
			{
				window.status = (msg) ? msg:defaultMsg;
			}
			
			function movePickerTo(x, y)
			{
				this.mainTable.style.top = y;
				this.mainTable.style.left = x;
			}
			
			function setOutput(o1, o2)
			{
				this.output = document.getElementById(o1);
				this.output2 = document.getElementById(o2);
			}
			
			function getIFrameReference(initialState, calendarObject)
            {
                var iFrame = document.getElementById("iFrameContainer");
                var display = (initialState) ? "block":"none";

                if (iFrame)
                {
                    iFrame.style.display = display;
                    return iFrame;
                }
                else
                {
                    var objIFrame = document.createElement("iframe");
                        objIFrame.id = "iFrameContainer";

                    if(calendarObject)
                    {
                        calendarObject.container.appendChild(objIFrame);
                    }
                    else
                    {
                        document.body.appendChild(objIFrame);
                    }

                    objIFrame.style.display = display;
                    return objIFrame;
                }
            }

            function setupIframe(container, iFrameObj)
            {
                if(container && iFrameObj)
                {
                    iFrameObj.style.position = container.style.position;
                    iFrameObj.style.top = container.style.top;
                    iFrameObj.style.left =  container.style.left;
                    iFrameObj.style.zIndex = container.style.zIndex-1;
                    iFrameObj.style.display = container.style.display;
                    iFrameObj.style.width = container.offsetWidth;
                    iFrameObj.style.height = container.offsetHeight;
                }
            }

