function positionInfo(object){
	var p_elm = object;
	var p_move_in=false;

	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);
	}

	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);
	}

	this.getElementRight = getElementRight;
	function getElementRight(){
		return getElementLeft(p_elm) + getElementWidth(p_elm);
	}

	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);
	}

	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);
	}

	this.getElementBottom = getElementBottom;
	function getElementBottom(){
		return getElementTop(p_elm) + getElementHeight(p_elm);
	}
}

function CCon(){
	var calendarId = 'CCon';
	var currentYear = 0;
	var currentMonth = 0;
	var currentDay = 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;

	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;
			}
		}
	}

	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;
		}
	}

	function setProperty(p_property, p_value){
		setElementProperty(p_property, p_value, calendarId);
	}

	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];
	}

	function getDayOfWeek(year, month, day){
		var date = new Date(year,month-1,day)
		return date.getDay();
	}

	this.clearDate = clearDate;
	function clearDate(){
		dateField.value = '';
		hide();
	}

	this.setDate = setDate;
	function setDate(year, month, day){
		if(dateField){
			if(month < 10) month = "0" + month;
			if(day < 10) day = "0" + day;
			var dateString = day+"-"+month+"-"+year;
			dateField.value = dateString;
			hide();
		}
		return;
	}

	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();
	}

	this.changeYear = changeYear;
	function changeYear(change){
		currentYear += change;
		currentDay = 0;
		calendar = document.getElementById(calendarId);
		calendar.innerHTML = calendarDrawTable();
	}

	function getCurrentYear(){
		var year = new Date().getYear();
		if(year < 1900) year += 1900;
		return year;
	}

	function getCurrentMonth(){
		return new Date().getMonth() + 1;
	} 

	function getCurrentDay(){
		return new Date().getDate();
	}

	function calendarDrawTable(){
		var dayOfMonth = 1;
		var validDay = 0;
		var startDayOfWeek = getDayOfWeek(currentYear, currentMonth, dayOfMonth);
		var daysInMonth = getDaysInMonth(currentYear, currentMonth);
		var css_class = null;

		var table = "<table  onmouseout=canHideCal(true) onmouseover=canHideCal(false)  cellspacing='0' cellpadding='0' border='0'>";
		table = table + "<tr class='header'>";
		table = table + "  <td class='previous' align='left'><a href='javascript:changeCConYear(-1);'>&laquo;</a></td><td class='previous' align='right'><a href='javascript:changeCConMonth(-1);'>&lt;</a></td>";
		table = table + "  <td colspan='3' class='title'>" + months[currentMonth-1] + "<br>" + currentYear + "</td>";
		table = table + "  <td class='next' align='left'><a href='javascript:changeCConMonth(1);'>&gt;</a></td><td class='previous' align='right'><a href='javascript:changeCConYear(1);'>&raquo;</a></td>";
		table = table + "</tr>";
		table = table + "<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++){
			table = table + "<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) css_class = 'weekend';
					else if(dayOfWeek == 6) css_class = 'satday';
					else css_class = 'weekday';

					table = table + "<td><a class='"+css_class+"' href=\"javascript:setCConDate("+currentYear+","+currentMonth+","+dayOfMonth+")\">"+dayOfMonth+"</a></td>";
					dayOfMonth++;
				}else{
					table = table + "<td class='empty'>&nbsp;</td>";
				}
			}
			table = table + "</tr>";
		}
		table = table + "<tr class='header'><th colspan='3' style='padding: 3px;' align='right'><a href='javascript:clearCCon();'><b>Clear</b></a></th style='padding: 3px;'><th></th><th colspan='3' style='padding: 3px;' align='left'><a href='javascript:hideCCon();'><b>Close</b></a></th></tr>";
		table = table + "</table>";
		return table;
	}

	this.show = show;
	function show(field){
		can_hide = 0;
		if(dateField == field){
			return;
		}else{
			dateField = field;
		}

		if(dateField){
			try{
				var dateString = new String(dateField.value);
				var dateParts = dateString.split("-");
			
				selectedYear = parseInt(dateParts[2],10);
				selectedMonth = parseInt(dateParts[1],10);
				selectedDay = parseInt(dateParts[0],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', 'CConIFrame');
			setElementProperty('left', x + "px", 'CConIFrame');
			setElementProperty('top', y + "px", 'CConIFrame');
			setElementProperty('width', calendarPos.getElementWidth() + "px", 'CConIFrame');
			setElementProperty('height', calendarPos.getElementHeight() + "px", 'CConIFrame');
			}
		}
	}

	this.hide = hide;
	function hide(){
		if(dateField){
			setProperty('display', 'none');
			setElementProperty('display', 'none', 'CConIFrame');
			dateField = null;
		}
	}

	this.visible = visible;
	function visible(){
		return dateField
	}

	this.can_hide = can_hide;
	var can_hide = 0;
}

var CCon = new CCon();

function showCCon(textField){
	CCon.show(textField);
	CCon.textField=textField;
}

function canHideCal(canHide){
	CCon.can_hide = canHide;
}

function clearCCon(){
	CCon.clearDate();
}

function obblur_hideCCon(){
	if(CCon.can_hide) hideCCon();
	else CCon.textField.focus();
}

function hideCCon(){
	if(CCon.visible()) CCon.hide();
}

function setCConDate(year, month, day){
	CCon.setDate(year, month, day);
	if(document.getElementById("req")){
		if(document.getElementById("req").value != "amend"){
			if(CCon.textField.id=='mre_Date') IsFeb(month, year);
			if(CCon.textField.id=='mrp_Date') IsFeb(month, year);
		}
	}
}

function IsFeb(month, year){
	if(document.getElementById("divmrp_IDlbl")){
		if((month<=2 && year=="2009") || (year<="2008")){
			document.getElementById("divmrp_IDlbl").style.display = "";
			document.getElementById("divmrp_ID").style.display = "";
			//if(document.getElementById("mrp_ID").value!="")
				//document.getElementById("divmrp_ID").innerHTML = document.getElementById("mrp_ID").value;
		}else{
			document.getElementById("divmrp_IDlbl").style.display = "none";
			document.getElementById("divmrp_ID").style.display = "none";
		}
	}else{
		if((month<=2 && year=="2009") || (year<="2008")){
			document.getElementById("divmre_IDlbl").style.display = "";
			document.getElementById("divmre_ID").style.display = "";
			//if(document.getElementById("mre_ID").value!="")
				//document.getElementById("divmre_ID").innerHTML = document.getElementById("mre_ID").value;
		}else{
			document.getElementById("divmre_IDlbl").style.display = "none";
			document.getElementById("divmre_ID").style.display = "none";
		}
	}
}

function changeCConYear(change) {
	CCon.changeYear(change);
}

function changeCConMonth(change){
	CCon.changeMonth(change);
}

document.write("<iframe id='CConIFrame' src='javascript:false;' frameBorder='0' scrolling='no'></iframe>");
document.write("<div id='CCon'></div>");
