/***********************************************************
*
*  datepicker.js
*
************************************************************
*
*  Date: January 18, 2002
*
*  Author: Thomas J. Winter
*
*  Platforms: IE5 or later, NN6 or later
*
***********************************************************/

var g_bDatePickerInitialized = false;

var g_iCurrDatePickerYear;
var g_iCurrDatePickerMonth;

var g_oDatePickerImage;
var g_oDatePickerTextBox;

var g_iDatePickerInputYear;
var g_iDatePickerInputMonth;
var g_iDatePickerInputDay;

var g_sDatePickerMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

function InitDatePicker()
{
	var oTableElement;
	
	var oCellNodeList, iCellElement, oCellElement;
	
	oTableElement = document.getElementById("tblDatePickerWeek");
	
	oCellNodeList = oTableElement.getElementsByTagName("TD");
	
	for(iCellElement = 0; iCellElement < oCellNodeList.length; iCellElement++)
	{
		oCellElement = oCellNodeList[iCellElement];
		
		oCellElement.className = 'datepickerweek';
	}
	
	oTableElement = document.getElementById("tblDatePickerDays");
	
	oCellNodeList = oTableElement.getElementsByTagName("TD");
	
	for(iCellElement = 0; iCellElement < oCellNodeList.length; iCellElement++)
	{
		oCellElement = oCellNodeList[iCellElement];
		
		oCellElement.className = 'datepickerdays';
		oCellElement.onclick = datepickerday_onclick;
		oCellElement.onmouseover = datepickerday_onmouseover;
		oCellElement.onmouseout = datepickerday_onmouseout;
	}
	
	g_bDatePickerInitialized = true;
}

function ShowDatePicker(sImageID, sTextBoxID)
{
	var oDatePickerDiv, oDatePickerImage;
	
	var iInputDate, dateInput;
	
	var oImageRect;
	
	if(!g_bDatePickerInitialized)
	{
		InitDatePicker();
	}
	
	oDatePickerDiv = document.getElementById("divDatePicker");
	
	oDatePickerImage = document.getElementById(sImageID);
	
	if((oDatePickerImage == g_oDatePickerImage) && (oDatePickerDiv.style.display == 'block'))
	{
		HideDatePicker();
	}
	else
	{
		g_oDatePickerImage = oDatePickerImage;
		
		g_oDatePickerTextBox = document.getElementById(sTextBoxID);
		
		g_iDatePickerInputYear = -1;
		g_iDatePickerInputMonth = -1;
		g_iDatePickerInputDay = -1;
		
		if(g_oDatePickerTextBox != null)
		{
			//iInputDate = Date.parse(g_oDatePickerTextBox.value);
			
            var tableau, date, time;

		    tableau = g_oDatePickerTextBox.value.split("T");
		    if(tableau.length == 2)
		    {
		        date = tableau[0].split("-");
                time = tableau[1].split(":");
                
                if(date.length == 3 && time.length == 3)
                {
                    time[2] = time[2].substr(0,2);			

			        if(!isNaN(date[0]) && !isNaN(date[1]) && !isNaN(date[2]) && !isNaN(time[0]) && !isNaN(time[1]) && !isNaN(time[2]))
			        {
				        //dateInput = new Date(iInputDate);
				        dateInput = new Date(date[0], date[1]-1, date[2], time[0], time[1], time[2]);
        				
				        g_iDatePickerInputYear = dateInput.getFullYear();
				        g_iDatePickerInputMonth = dateInput.getMonth();
				        g_iDatePickerInputDay = dateInput.getDate();
			        }
			    }
            }
		}
		
		UpdateDatePicker(g_iDatePickerInputMonth, g_iDatePickerInputYear);
		
		oImageRect = CalcElementRect(g_oDatePickerImage);
		
		//oDatePickerDiv.style.left = oImageRect.Left;
		//oDatePickerDiv.style.top = oImageRect.Top + g_oDatePickerImage.offsetHeight;		
		oDatePickerDiv.style.left = oImageRect.Right - 100;
		oDatePickerDiv.style.top = oImageRect.Top;		
		
		oDatePickerDiv.style.display = "block";
	}
	
	function CalcElementRect(oStartElement)
	{
		var lOffsetTop, lOffsetLeft;
		
		var oCurrElement;
		
		lOffsetTop = 0;
		lOffsetLeft = 0;
		
		for(oCurrElement = oStartElement; (oCurrElement != null) && (oCurrElement.tagName != 'BODY'); oCurrElement = oCurrElement.offsetParent)
		{
			lOffsetTop  += oCurrElement.offsetTop;
			lOffsetLeft += oCurrElement.offsetLeft;
		}
		
		return { Top: lOffsetTop, Left: lOffsetLeft, Bottom: lOffsetTop + oStartElement.offsetHeight - 1, Right: lOffsetLeft + oStartElement.offsetWidth - 1 };
	}
}

function HideDatePicker()
{
	var oDatePickerDiv;
	
	oDatePickerDiv = document.getElementById("divDatePicker");
	
	oDatePickerDiv.style.display = "none"
	
	g_oDatePickerImage = null;
	
	g_oDatePickerTextBox = null;
}

function UpdateDatePicker(iMonth, iYear)
{
	var dateToday, iTodayYear, iTodayMonth, iTodayYear;
	
	var iDaysInMonth, dateFirstDate, iCurrDayOfMonth;
	
	var oTableElement;
	
	var oCellNodeList, iCellElement, oCellElement;
	
	/* Calculate the dates and counters we'll need. */
	
	dateToday = new Date();
	
	iTodayYear  = dateToday.getFullYear();
	iTodayMonth = dateToday.getMonth();
	iTodayDay   = dateToday.getDate();
	
	if((iMonth == -1) || (iYear == -1))
	{
		g_iCurrDatePickerYear = iTodayYear;
		
		g_iCurrDatePickerMonth = iTodayMonth;
	}
	else
	{
		if(iYear < 1980)
		{
			iYear = 1980;
			iMonth = 0;
		}
		
		if(iYear > 2079)
		{
			iYear = 2079;
			iMonth = 11;
		}
		
		if(iMonth < 0)
		{
			iMonth = 0;
		}
		
		if(iMonth > 11)
		{
			iMonth = 11;
		}
		
		g_iCurrDatePickerYear = iYear;
		
		g_iCurrDatePickerMonth = iMonth;
	}
	
	iDaysInMonth = DaysInMonth(g_iCurrDatePickerYear, g_iCurrDatePickerMonth);
	
	dateFirstDate = new Date(g_iCurrDatePickerYear, g_iCurrDatePickerMonth, 1);
	
	iCurrDayOfMonth = (-dateFirstDate.getDay()) + 1;
	
	/* Set up the month and year display. */
	
	oCellElement = document.getElementById("tdDatePickerMonth");
	
	ReplaceElementText(oCellElement, g_sDatePickerMonths[g_iCurrDatePickerMonth] + ' ' + g_iCurrDatePickerYear);
	
	/* Set up the days in the calendar. */
	
	oTableElement = document.getElementById("tblDatePickerDays");
	
	oCellNodeList = oTableElement.getElementsByTagName("TD");
	
	for(iCellElement = 0; iCellElement < oCellNodeList.length; iCellElement++)
	{
		oCellElement = oCellNodeList[iCellElement];
		
		ReplaceElementText(oCellElement, ((1 <= iCurrDayOfMonth) && (iCurrDayOfMonth <= iDaysInMonth)) ? iCurrDayOfMonth : null);
		
		if((g_iDatePickerInputYear == g_iCurrDatePickerYear) && (g_iDatePickerInputMonth == g_iCurrDatePickerMonth) && (g_iDatePickerInputDay == iCurrDayOfMonth))
		{
			oCellElement.style.backgroundImage = 'url(js_img/datepicker/selected.gif)';
			oCellElement.style.backgroundRepeat = 'no-repeat';
		}
		else
		{
			if((iTodayYear == g_iCurrDatePickerYear) && (iTodayMonth == g_iCurrDatePickerMonth) && (iTodayDay == iCurrDayOfMonth))
			{
				oCellElement.style.backgroundImage = 'url(js_img/datepicker/today.gif)';
				oCellElement.style.backgroundRepeat = 'no-repeat';
			}
			else
			{
				oCellElement.style.backgroundImage = '';
			}
		}
		
		iCurrDayOfMonth++;
	}
	
	function ReplaceElementText(oElement, sText)
	{
		var oTextNode;
		
		if(oElement.hasChildNodes())
		{
			oTextNode = oElement.childNodes[0];
			
			oElement.removeChild(oTextNode);
		}
		
		if(sText != null)
		{
			oTextNode = document.createTextNode(sText);
			
			oElement.appendChild(oTextNode);
		}
	}
	
	function DaysInMonth(iYear, iMonth)
	{
		if(iMonth == 1)
		{
			if((((iYear % 4) == 0) && ((iYear % 100) != 0)) || ((iYear % 400) == 0))
			{
				return 29;
			}
			else
			{
				return 28;
			}
		}
		else
		{
			if((iMonth == 3) || (iMonth == 5) || (iMonth == 8) || (iMonth == 10))
			{
				return 30;
			}
			else
			{
				return 31;
			}
		}
	}
}

function NextDatePickerMonth()
{
	if(g_iCurrDatePickerMonth == 11)
	{
		UpdateDatePicker(0, g_iCurrDatePickerYear + 1);
	}
	else
	{
		UpdateDatePicker(g_iCurrDatePickerMonth + 1, g_iCurrDatePickerYear);
	}
}

function PrevDatePickerMonth()
{
	if(g_iCurrDatePickerMonth == 0)
	{
		UpdateDatePicker(11, g_iCurrDatePickerYear - 1);
	}
	else
	{
		UpdateDatePicker(g_iCurrDatePickerMonth - 1, g_iCurrDatePickerYear);
	}
}

function datepickerday_onclick()
{
	var oCellElement, oCellText;
	
	oCellElement = this;
	
	if(oCellElement.hasChildNodes())
	{
		if(g_oDatePickerTextBox != null)
		{
			oCellText = oCellElement.childNodes[0];
			if(oCellText.nodeValue < 10) oCellText.nodeValue = "0" + oCellText.nodeValue;
			var mois = g_iCurrDatePickerMonth+1;
			if(mois < 10) mois = "0" + mois;
			
			g_oDatePickerTextBox.value = g_iCurrDatePickerYear + '-' + mois + '-' + oCellText.nodeValue + 'T00:00:00Z';
		}
		
		oCellElement.className = 'datepickerdays';
		
		HideDatePicker();
	}
}

function datepickerday_onmouseover()
{
	var oCellElement;
	
	oCellElement = this;
	
	if(oCellElement.hasChildNodes())
	{
		oCellElement.className = 'datepickerhover';
	}
}

function datepickerday_onmouseout()
{
	var oCellElement;
	
	oCellElement = this;
	
	if(oCellElement.hasChildNodes())
	{
		oCellElement.className = 'datepickerdays';
	}
}
