var today = new Date();
var currMonth = today.getMonth();
var currYear = today.getFullYear();
var shownCalendarId = '';
var shownCalendarBtn = null;
var currField = null;
var currHiddenField = null;
var currDate = new Date();
var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var monthNamesR = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
var weekdayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var weekdayInits = ['S' , 'M', 'T', 'W', 'T', 'F', 'S'];
var calendar_previmage_path = "images/arr-prev.gif";
var calendar_nextimage_path = "images/arr-next.gif";
var calendar_nextyearimage_path = "images/arr-doublenext.gif";
var calendar_prevyearimage_path = "images/arr-doubleprev.gif";
var calendar_years_buttons_visible = true;

function setDate(dateSet, monthSet, yearSet) {
        if (yearSet < 1900) yearSet +=1900; //Netscape BUG.
        var dateToSet = new Date(yearSet, monthSet, dateSet);
        if (currField) currField.value = dateSet + ' ' + monthNamesR[monthSet] + ' ' + yearSet;
        //dateToSet = dateToSet.setMinutes(-dateToSet.getTimezoneOffset());
        if (currHiddenField) {
                currHiddenField.value = (dateToSet.getMonth()+1)+'/'+dateToSet.getDate()+'/'+dateToSet.getFullYear();//Date.parse(dateToSet.toString());
                if (currHiddenField.onchange){
                        currHiddenField.onchange();
                }
        } 
//		alert(currHiddenField.value);
//      if (currHiddenField) currHiddenField.value = Date.parse(dateToSet.toString());
        hideCurrCalendar();
}

function showCalendar(btnElem, leerId, ancName, fieldName) {
        var currCalBtn = shownCalendarBtn;
        if (shownCalendarId != '') hideCurrCalendar();
        if (currCalBtn != btnElem) {
        currField = btnElem.form.elements[fieldName];
        currHiddenField = btnElem.form.elements[fieldName.replace(/Fld/g, '')];
        if (currHiddenField && (currHiddenField.value != '' && currHiddenField.value != '0')) currDate = new Date(currHiddenField.value);
        else currDate = new Date();
        shownCalendarBtn = btnElem;
        shownCalendarId = leerId;
        drawCalendar(leerId, ancName);
}
}
function hideCurrCalendar() {
        if (shownCalendarId != '') hideLeer(shownCalendarId);
        if (shownCalendarBtn != null && shownCalendarBtn.style) shownCalendarBtn.style.borderStyle = 'outset';
        shownCalendarId = '';
        shownCalendarBtn = null;
        currField = null;
        currHiddenField = null;
}

function drawCalendar(leerId, ancName, showYear, showMonth) {
        // insetting the button
        if (shownCalendarBtn != null) {
        if (shownCalendarBtn.style) shownCalendarBtn.style.borderStyle = 'inset';
        }
        var month = new Date();
        if (showMonth != null) month.setMonth(showMonth, 1);
        else month.setMonth(currDate.getMonth());
        if (showYear != null) month.setYear(showYear);
        else month.setYear(currDate.getFullYear());
        var thisMonth = month.getMonth();
        var nextMonth = (thisMonth == 11)? 0 : thisMonth + 1;
        var prevMonth = (thisMonth == 0)? 11 : thisMonth - 1;
        var thisYear = month.getFullYear();
        var nextYear = (thisMonth == 11)? thisYear + 1 : thisYear;
        var prevYear = (thisMonth == 0)? thisYear - 1 : thisYear;

		var real_nextYear = thisYear + 1;
		var real_prevYear = thisYear - 1;

        var isThisMonth = (month.getFullYear() == currDate.getFullYear() && month.getMonth() == currDate.getMonth())? true : false;
        // table starts
        var calendarHTML = '<table cellpadding="0" cellspacing="0" border="0" class="calMainTable" width="130"><tr><td style="padding: 0px; margin: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tr bgcolor="#e9ebf1">';
        // link back
        calendarHTML += '<td class="calFont w13" bgcolor="#e9ebf1">';

		if (calendar_years_buttons_visible) {
			calendarHTML += '<a href=""' + 
			'onClick="drawCalendar(\'' + leerId + '\', \'' + ancName + '\', ' + real_prevYear + ', ' + thisMonth +
			'); return false;"><img src="'+calendar_prevyearimage_path+'" width="13" height="13" valign="center" border="0" /><\/a><\/td>';
		} 
		
		calendarHTML += '<td class="calFont w13" bgcolor="#e9ebf1"><a href="" onClick="drawCalendar(\'' + leerId + '\', \'' + ancName + '\', ' + prevYear + ', ' + prevMonth +
        '); return false;"><img src="'+calendar_previmage_path+'" width="13" height="13" border="0" /><\/a><\/td>';
        // month, year row
        calendarHTML += '<td align="center" class="calFont MonthYearArea" nowrap="nowrap">' + monthNames[month.getMonth()] + ', ' + month.getFullYear() + '<\/td>';
        // link fwd
        calendarHTML += '<td class="calFont w13"><a href="" onClick="drawCalendar(\'' +
        leerId + '\', \'' + ancName + '\', ' + nextYear + ', ' +
        nextMonth + '); return false;"><img src="'+calendar_nextimage_path+'" width="13" height="13" border="0" /><\/a><\/td>';
		
		if (calendar_years_buttons_visible) {
			calendarHTML += '<td class="calFont w13" style="padding-right: 5px;"><a href="" onClick="drawCalendar(\'' +
			leerId + '\', \'' + ancName + '\', ' + real_nextYear + ', ' +
			thisMonth + '); return false;"><img src="'+calendar_nextyearimage_path+'" width="13" height="13" border="0" /><\/a>';
		}

		calendarHTML += '<\/td><\/tr>' +
        '<tr><td colspan="5" align="center" bgcolor="#ffffff" style="padding: 0px 10px 0px 7px; border-top: 1px solid #808080;">';
        // starting the calendar table...
        calendarHTML += '<table cellpadding="0" cellspacing="0" border="0" style="border-bottom: 1px solid #fff;"><tr align="right">'
        // appending day initials
        for (var i = 0; i < weekdayInits.length; i++) calendarHTML += '<td class="calFont" style="border-bottom: 1px solid #808080;"><small><small>' + weekdayInits[i] + '</small></small><\/td>'
        calendarHTML += '<tr align="right">'
        // getting the first day of the month
        month.setDate(1);
        var daysToStart = (month.getDay() == 0)? 0 : month.getDay();
        // drawing empty cells
        for (var i = 0; i < daysToStart; i++) calendarHTML += '<td class="calFont"><br /><\/td>';
        // drawing the calendar itself
        for (var i = 1; i < 33; i++) {
        month.setDate(i);
        if (month.getMonth() == thisMonth) {
        if (isThisMonth && currDate.getDate() == i) calendarHTML += '<td class="calFont ActiveDayColor"><small><a href="" onClick="setDate(' + i + ', ' + thisMonth + ', ' + thisYear + '); return false;">' + i + '<\/a></small><\/td>';
        else calendarHTML += '<td class="calFont"><small><a href="" onClick="setDate(' + i + ', ' + thisMonth + ', ' + thisYear + '); return false;">' + i + '<\/a></small><\/td>';
        //WAS: calendarHTML += '<td class="calFont" style="color: #ffffff;" bgcolor="#ff7f00"><small>' + i + '</small><\/td>';
        } else break;
        if (month.getDay() == 6) calendarHTML += '<\/tr><tr align="right">';
        }
        // drawing empty cells if any
        if (month.getDay() != 1) {
        var finalDay = (month.getDay() == 0)? 0 : month.getDay();
        var daysToEnd = 7 - finalDay;
        for (var i = 0; i < daysToEnd; i++) calendarHTML += '<td class="calFont"><\/td>';
        }
        // tables ends
        calendarHTML += '<\/tr><\/table><\/td><\/tr><\/table><\/td><\/tr><\/table>';
        var leerPos = new getCalendarPosition(ancName);
	

        if (document.getElementById) {
        	var leerElem = document.getElementById(leerId);
	        leerElem.innerHTML = calendarHTML;
        	leerElem.style.left = leerPos.x;
	        leerElem.style.top = leerPos.y;

		leerElem.innerHTML += '<iframe style="left:0px;top:0px; width:'+leerElem.offsetWidth+'px; height:'+leerElem.offsetHeight+'px; position:absolute; z-index: -1;"></iframe>';	
        	
		leerElem.style.visibility = 'visible';
        } else if (document.all) {
	        var leerElem = document.all[leerId];
        	leerElem.innerHTML = calendarHTML;
	        leerElem.style.left = leerPos.x;
	        leerElem.style.top = leerPos.y;

		leerElem.innerHTML += '<iframe style="left:0px;top:0px; width:'+leerElem.offsetWidth+'px; height:'+leerElem.offsetHeight+'px; position:absolute; z-index: -1;"></iframe>';	

	        leerElem.style.visibility = 'visible';
        } else if (document.layers) {
	        document.layers[leerId].left = leerPos.x;
	        document.layers[leerId].top = leerPos.y;
        	document.layers[leerId].document.open();
	        document.layers[leerId].document.write(calendarHTML);
	        document.layers[leerId].document.close();
        	document.layers[leerId].visibility = 'show';
        }
}

function hideLeer(leerId) {
        if (document.layers) {
        document.layers[leerId].visibility = 'hide';
        } else if (document.getElementById) {
        document.getElementById(leerId).style.visibility = 'hidden';
        } else if (document.all) {
        document.all[leerId].style.visibility = 'hidden';
        }
}

function ancPosX(anchorPtr) {
        if (document.layers) {
                return anchorPtr.x;
        } else if (document.getElementById || document.all) {
                var pos = anchorPtr.offsetLeft;
                while (anchorPtr.offsetParent != null) {
                anchorPtr = anchorPtr.offsetParent;
                pos += anchorPtr.offsetLeft;
                } return pos;
        }
}

function ancPosY(anchorPtr) {
        if (document.layers) {
        return anchorPtr.y;
        } else if (document.getElementById || document.all) {
        var pos = anchorPtr.offsetTop;
        while (anchorPtr.offsetParent != null) {
        anchorPtr = anchorPtr.offsetParent;
        pos += anchorPtr.offsetTop;
        } return pos;
        }
}

function getCalendarPosition(ancName) {
        for (var i = 0; i < document.anchors.length; i++) {
        if (document.anchors[i].name == ancName) {
        this.x = ancPosX(document.anchors[i]);
        this.y = ancPosY(document.anchors[i]);
        return this;
        }
        }
}

function isParent(elemPtr, parentId) {
        if (document.getElementById) {
        //      while (elemPtr.parentNode != null) {
        //      if //   }
        }
        return false;
        }


function resizing() {
        if (document.layers) {
        if (window.innerWidth != origWidth || window.innerHeight != origHeight) location.reload();
        } else hideCurrCalendar();
}

window.onresize = resizing;
if (document.layers) {
        origWidth = window.innerWidth;
        origHeight = window.innerHeight;
}

function GetForm() {
 for (i=0;i<document.forms.length;i++) {
  frm = document.forms[i];
  if (frm.elements['__VIEWSTATE'] != null) break;
 }
 return frm.name;
}


function SetInitialDate (dtValue, name, formName) {
		if (formName.length == 0) formName = GetForm();

                //dtValue = parseInt(dtValue);
                //if (!dtValue) return;
				//dtValue = dtValue * 1000;
                var dt = new Date(dtValue);
                currField = document.forms[formName].elements[name];
                currHiddenField = document.forms[formName].elements[name.replace(/Fld/g, '')];
                setDate(dt.getDate(), dt.getMonth(), dt.getYear());
}

function RemoveCalendar(name, formName) {
		if (formName.length == 0) formName = GetForm();
                currField = document.forms[formName].elements[name];
                currHiddenField = document.forms[formName].elements[name.replace(/Fld/g, '')];
                currField.value = '';
                currHiddenField.value = '0';
}