var a_p = "";
var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();	
	
if (curr_hour < 12)
	a_p = "AM";
else
	a_p = "PM";
	
if (curr_hour == 0)
	curr_hour = 12;
	
if (curr_hour > 12)
	curr_hour = curr_hour - 12;

curr_min = curr_min + "";
if (curr_min.length == 1)
	curr_min = "0" + curr_min;
				
// =================
// Calendar position
// =================
function positionInfo(object) 
{
	var p_elm = object;
	
	// --
	// Get Object Left position
	// --
	this.getElementLeft = getElementLeft;  
	function getElementLeft() 
	{
		var x = 0;
		var elm;
		
		if(typeof(p_elm) == "object")
			elm = p_elm;
		else 
			elm = document.getElementById(p_elm);
		
		while (elm != null) 
		{
			x+= elm.offsetLeft;
			elm = elm.offsetParent;
		}
		
		return parseInt(x);
	}

	// --
	// Get Object Width
	// --
	this.getElementWidth = getElementWidth;
	function getElementWidth()
	{
		var elm;
		if(typeof(p_elm) == "object")
			elm = p_elm;
		else 
			elm = document.getElementById(p_elm);
		
		return parseInt(elm.offsetWidth);
	}

	
	// --
	// Get Object Right position
	// --
	this.getElementRight = getElementRight;
	function getElementRight()
	{
		return getElementLeft(p_elm) + getElementWidth(p_elm);
	}

	
	// --
	// Get Object Top position
	// --
	this.getElementTop = getElementTop;
	function getElementTop() 
	{
		var y = 0;
		var elm;
		if(typeof(p_elm) == "object")
			elm = p_elm;
		else 
			elm = document.getElementById(p_elm);
		
		while (elm != null) 
		{
			y+= elm.offsetTop;
			elm = elm.offsetParent;
		}
		
		return parseInt(y);
	}

	// --
	// Get Object Height
	// --
	this.getElementHeight = getElementHeight;
	function getElementHeight()
	{
		var elm;
		if(typeof(p_elm) == "object")
			elm = p_elm;
		else 
			elm = document.getElementById(p_elm);
		
		return parseInt(elm.offsetHeight);
	}

	// --
	// Get Object Bottom position
	this.getElementBottom = getElementBottom;
	function getElementBottom()
	{
		return getElementTop(p_elm) + getElementHeight(p_elm);
	}
}


// =================
// Calendar control
// =================
function CalendarControl() {
	var calendarId = 'CalendarControl';
	var currentMonth = 0;
	var currentDay = 0;
	var currentYear = 0;	
	var selectedYear = 0;
	var selectedMonth = 0;
	var selectedDay = 0;
	
	var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
	var dateField = null;

	// --
	// Get Property
	// --
	function getProperty(p_property)
	{
		var p_elm = calendarId;
		var elm = null;
		
		if(typeof(p_elm) == "object")
			elm = p_elm;
		else 
			elm = document.getElementById(p_elm);
		
		if (elm != null)
		{
			if(elm.style)
			{
				elm = elm.style;
				if(elm[p_property])
					return elm[p_property];
				else 
					return null;
			} 
			else 
				return null;
		}
	}

	// --
	// Set Element Property
	// --
	function setElementProperty(p_property, p_value, p_elmId)
	{
		var p_elm = p_elmId;
		var elm = null;
		
		if(typeof(p_elm) == "object")
		{
			elm = p_elm;
		} 
		else 
		{
			elm = document.getElementById(p_elm);
		}
		
		if((elm != null) && (elm.style != null))
		{
			elm = elm.style;
			elm[ p_property ] = p_value;
		}
	}

	// --
	// Set Property
	// --
	function setProperty(p_property, p_value) 
	{
		setElementProperty(p_property, p_value, calendarId);
	}

	// --
	// Get Days in the Month
	// --
	function getDaysInMonth(year, month) 
	{
		return [31,((!(year % 4 ) && ( (year % 100 ) || !( year % 400 ) ))?29:28),31,30,31,30,31,31,30,31,30,31][month-1];
	}
	
	// --
	// Get Day of the week
	// --
	function getDayOfWeek(year, month, day) 
	{
		var date = new Date(year,month-1,day)
		return date.getDay();
	}
	
	// --
	// Clear date
	// --
	this.clearDate = clearDate;
	function clearDate() 
	{
		dateField.value = '';
		hide();
	}
	
	// --
	// Set date
	// --
	this.setDate = setDate;
	function setDate(year, month, day) 
	{
		if (dateField) 
		{
			if (month < 10) 
				month = "0" + month;
			if (day < 10)
				day = "0" + day;
	
			var dateString = month+"/"+day+"/"+year;
			dateField.value = dateString;
			hide();
		}
		
		return;
	}
	
	// --
	// set year
	// --
	this.setYear = setYear;
	function setYear(year) 
	{
		currentYear = year;
		currentDay = 0;
	
		calendar = document.getElementById(calendarId);
		calendar.innerHTML = calendarDrawTable();
	}
	
    // --
	// set month
	// --
	this.setMonth = setMonth;
	function setMonth(selectedIndex) 
	{
		currentMonth = selectedIndex + 1;
		currentDay = 0;
	
		calendar = document.getElementById(calendarId);
		calendar.innerHTML = calendarDrawTable();
	}
	
	// --
	// Change month
	// --
	this.changeMonth = changeMonth;
	function changeMonth(change) 
	{
		currentMonth += change;
		currentDay = 0;
		if(currentMonth > 12) 
		{
			currentMonth = 1;
			currentYear++;
		} 
		else if(currentMonth < 1) 
		{
			currentMonth = 12;
			currentYear--;
		}
	
		calendar = document.getElementById(calendarId);
		calendar.innerHTML = calendarDrawTable();
	}
	
	// --
	// Change year
	// --
	this.changeYear = changeYear;
	function changeYear(change) 
	{
		currentYear += change;
		currentDay = 0;
		calendar = document.getElementById(calendarId);
		calendar.innerHTML = calendarDrawTable();
	}
	
	// --
	// Get the current year
	// --
	function getCurrentYear() 
	{
		var year = new Date().getYear();
		if(year < 1900) 
		    year += 1900;
			
		return year;
	}
	
	// --
	// Get the current month
	// --
	function getCurrentMonth() 
	{
		return new Date().getMonth() + 1;
	} 
	
	// --
	// Get the current day
	// --
	function getCurrentDay() 
	{
		return new Date().getDate();
	}

	// --
	// Draw the calendar table
	// --
	function calendarDrawTable() 
	{
		var minyr = new Date().getYear()-100;
		var maxyr = new Date().getYear()+5;
		var ddlMonth = "";
		var ddlYear = "";
		var dayOfMonth = 1;
		var validDay = 0;
		var startDayOfWeek = getDayOfWeek(currentYear, currentMonth, dayOfMonth);
		var daysInMonth = getDaysInMonth(currentYear, currentMonth);
		var css_class = null;
		var dd = getCurrentDay();
		var mm = getCurrentMonth();
		var yyyy = getCurrentYear();
		
		var htmlTable = "<table cellspacing='0' cellpadding='0' border='0'>";			
	    htmlTable += "<tr class='top'><td colspan='7'>";
	    
	    htmlTable += "<select class='dropdown' id='Month' onchange='javascript:setCalendarControlMonth(this.selectedIndex);'>"
		for(var monthOfYear=1; monthOfYear<=12; monthOfYear++)
		{
		    if (currentMonth == monthOfYear)
		        ddlMonth += "<option  selected='selected'>" + months[monthOfYear-1] + "</option>";
		    else
		        ddlMonth += "<option>" + months[monthOfYear-1] + "</option>";
		}
		htmlTable += ddlMonth + "</select>&nbsp;&nbsp;";
		
		htmlTable += "<select id='Year' class='dropdown' onchange='javascript:setCalendarControlYear(this.options[this.selectedIndex].text);'>";			
		for(var y=minyr; y<=maxyr; y++)
		{
		    if (y == currentYear)
		        ddlYear += "<option  selected='selected'>" + y + "</option>";
		    else
		        ddlYear += "<option>" + y + "</option>";
		}		
		htmlTable += ddlYear + "</select></td></tr>";
		
		htmlTable += "<tr class='calheader'>";
		htmlTable += "  <td class='previous'><a href='javascript:changeCalendarControlMonth(-1);'>&laquo;</a></td>";
		htmlTable += "  <td colspan='5' class='title'>" + months[currentMonth-1] + "&nbsp;&nbsp;" + currentYear + "</td>";
		htmlTable += "  <td class='next'><a href='javascript:changeCalendarControlMonth(1);'>&raquo;</a></td></tr>";
		htmlTable += "<tr><th>S</th><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th></tr>";
		
		for(var week=0; week < 6; week++) 
		{
			htmlTable += "<tr>";
			for(var dayOfWeek=0; dayOfWeek < 7; dayOfWeek++) 
			{
				if(week == 0 && startDayOfWeek == dayOfWeek) 
					validDay = 1;
				else if (validDay == 1 && dayOfMonth > daysInMonth) 
					validDay = 0;
		
				if(validDay) 
				{
					if (dayOfMonth == selectedDay && currentYear == selectedYear && currentMonth == selectedMonth) 
					 	css_class = 'current';
					else if (dayOfWeek == 0 || dayOfWeek == 6) 
					 	css_class = 'weekend';
					else 
						css_class = 'weekday';
		
					htmlTable += "<td><a class='"+css_class+"' href=\"javascript:setCalendarControlDate("+currentYear+","+currentMonth+","+dayOfMonth+")\">"+dayOfMonth+"</a></td>";
					dayOfMonth++;
				} 
				else 
					htmlTable += "<td class='empty'>&nbsp;</td>";
			}
			
			htmlTable += "</tr>";
		}
		
		htmlTable += "<tr class='calheader'><th colspan='7' style='padding: 3px;'><a href='javascript:setCalendarControlDate("+yyyy+","+mm+","+dd+");'>Today</a> | <a href='javascript:hideCalendarControl();'>Close</a></td></tr>";	
		htmlTable += "</table>";
		
		return htmlTable;
	}
	
	
	// --
	// show
	// --
	this.show = show;
	function show(field) 
	{
		can_hide = 0;
	
		// If the calendar is visible and associated with this field do not do anything.
		if (dateField == field) 
			return;
		else 
			dateField = field;
	
		if(dateField) 
		{
			try 
			{
				var dateString = new String(dateField.value);
				var dateParts = dateString.split("/");
				
				selectedMonth = parseInt(dateParts[0],10);
				selectedDay = parseInt(dateParts[1],10);
				selectedYear = parseInt(dateParts[2],10);
			} 
			catch(e) {}
		}
	
		if (!(selectedYear && selectedMonth && selectedDay)) 
		{
			selectedMonth = getCurrentMonth();
			selectedDay = getCurrentDay();
			selectedYear = getCurrentYear();
		}
	
		currentMonth = selectedMonth;
		currentDay = selectedDay;
		currentYear = selectedYear;
	
		if(document.getElementById)
		{	
			calendar = document.getElementById(calendarId);
			calendar.innerHTML = calendarDrawTable(currentYear, currentMonth);
			
			setProperty('display', 'block');
			
			var fieldPos = new positionInfo(dateField);
			var calendarPos = new positionInfo(calendarId);
			
			var x = fieldPos.getElementLeft();
			var y = fieldPos.getElementBottom();
			
			setProperty('left', x + "px");
			setProperty('top', y + "px");
	
			if (document.all) 
			{
				setElementProperty('display', 'block', 'CalendarControlIFrame');
				setElementProperty('left', x + "px", 'CalendarControlIFrame');
				setElementProperty('top', y + "px", 'CalendarControlIFrame');
				setElementProperty('width', calendarPos.getElementWidth() + "px", 'CalendarControlIFrame');
				setElementProperty('height', calendarPos.getElementHeight() + "px", 'CalendarControlIFrame');
			}
		}
	}
	
	// --
	// Hide
	// --
	this.hide = hide;
	function hide() 
	{
		if(dateField) 
		{
			setProperty('display', 'none');
			setElementProperty('display', 'none', 'CalendarControlIFrame');
			dateField = null;
		}
	}
	
	// --
	// visible
	// --
	this.visible = visible;
	function visible() 
	{
		return dateField
	}
		
	this.can_hide = can_hide;
	var can_hide = 0;
}
	
// ++++++++++++++++++++++++++++++++++++++
// CONTROL ENTRY POINT
// Show calendar control
// ++++++++++++++++++++++++++++++++++++++
var calendarControl = new CalendarControl();	
function showCalendarControl(textField) 
{
	//textField.onblur = hideCalendarControl;
	calendarControl.show(textField);
}
	
// --
// Clear Calendar control
// --
function clearCalendarControl() 
{
	calendarControl.clearDate();
}
	
// --
// Hide Calendar control
// --
function hideCalendarControl() 
{
	if (calendarControl.visible()) 
		calendarControl.hide();
}
	
// --
// Set Calendar control date
// --
function setCalendarControlDate(year, month, day) 
{
	calendarControl.setDate(year, month, day);
}
	
// --
// Change Calendar control year
// --
function changeCalendarControlYear(change) 
{
	calendarControl.changeYear(change);
}
	
// --
// change Calendar control month
// --
function changeCalendarControlMonth(change) 
{
	calendarControl.changeMonth(change);
}
	
// --
// Set Calendar control date (today button)
// --
function setCalendarControlTodayDate() 
{
    year = calendarControl.getCurrentYear();
    month = calendarControl.getCurrentMonth();
	day = calendarControl.getCurrentDay();
	
	calendarControl.setDate(year, month, day);
}

// --
// set Calendar control month (Month dropdown list)
// --
function setCalendarControlMonth(selectedIndex) 
{
	calendarControl.setMonth(selectedIndex);
}

// --
// set Calendar control year (Year dropdown list)
// --
function setCalendarControlYear(year) 
{
	calendarControl.setYear(year);
}

document.write("<iframe id='CalendarControlIFrame' src='javascript:false;' frameBorder='0' scrolling='no'></iframe>");
document.write("<div id='CalendarControl'></div>");