isIE = (document.all ? true : false);
isDOM = (document.getElementById ? true : false);

// get the true offset of anything on NS4, IE4/5 & NS6, even if it's in a table!
function getAbsX(elt){
	return (elt.x) ? elt.x : getAbsPos(elt,"Left");
}

function getAbsY(elt){
	return (elt.y) ? elt.y : getAbsPos(elt,"Top");
}

function getAbsPos(elt,which){
	iPos = 0;
	while (elt != null){
		iPos += elt["offset" + which];
		elt = elt.offsetParent;
	}
	return iPos;
}

function getDivStyle(divname){
var style;
if (isDOM){
	style = document.getElementById(divname).style;
}else{
	style = isIE ? document.all[divname].style : document.layers[divname]; } // NS4
	return style;
}

function hideElement(divname){
	getDivStyle(divname).visibility = 'hidden';
}

// annoying detail: IE and NS6 store elt.top and elt.left as strings.
function moveBy(elt,deltaX,deltaY) {
	elt.left = parseInt(elt.left) + deltaX;
	elt.top = parseInt(elt.top) + deltaY;
}

function toggleVisible(divname){
	divstyle = getDivStyle(divname);
	if (divstyle.visibility == 'visible' || divstyle.visibility == 'show'){
		divstyle.visibility = 'hidden';
	}else{
		fixPosition(divname);
		divstyle.visibility = 'visible';
	}
}

function setPosition(elt,positionername,isPlacedUnder){
	var positioner;
	if (isIE){
		positioner = document.all[positionername];
	}else{
		if (isDOM){
			positioner = document.getElementById(positionername);
		}else{
			// not IE, not DOM (probably NS4)
			// if the positioner is inside a netscape4 layer this will *not* find it.
			// I should write a finder function which will recurse through all layers
			// until it finds the named image...
			positioner = document.images[positionername];
		}
	}
	elt.left = getAbsX(positioner);
	elt.top = getAbsY(positioner) + (isPlacedUnder ? positioner.height : 0);
}



// Initialize arrays.
var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul","Aug", "Sep", "Oct", "Nov", "Dec");
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var displayMonth = new Date().getMonth();
var displayYear = new Date().getFullYear();
var displayDivName;
var displayElement;

function getDays(month, year) {
	// Test for leap year when February is selected.
	if (1 == month)	return ((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400) ? 29 : 28;	else return daysInMonth[month];
}

function getToday() {
	// Generate today's date.
	this.now = new Date();
	this.year = this.now.getFullYear();
	this.month = this.now.getMonth();
	this.day = this.now.getDate();
}

// Start with a calendar for today.
today = new getToday();

function newCalendar(eltName,attachedElement) {
	if (attachedElement) {
		if (displayDivName && displayDivName != eltName)
			hideElement(displayDivName);
			displayElement = attachedElement;
	}
	displayDivName = eltName;
	today = new getToday();
	var parseYear = parseInt(displayYear + '');
	var newCal = new Date(parseYear,displayMonth,1);
	var day = -1;
	var startDayOfWeek = newCal.getDay();
	if ((today.year == newCal.getFullYear()) && (today.month == newCal.getMonth())){
		day = today.day;
	}
	var intDaysInMonth = getDays(newCal.getMonth(), newCal.getFullYear());
	var daysGrid = makeDaysGrid(startDayOfWeek,day,intDaysInMonth,newCal,eltName)
	if (isIE){
		var elt = document.all[eltName];
		elt.innerHTML = daysGrid;
	}else if (isDOM){
		var elt = document.getElementById(eltName);
		elt.innerHTML = daysGrid;
	}else{
		var elt = document.layers[eltName].document;
		elt.open();
		elt.write(daysGrid);
		elt.close();
	}
}

function incMonth(delta,eltName){
	displayMonth += delta;
	if (displayMonth >= 12){
		displayMonth = 0;
		incYear(1,eltName);
	}else if (displayMonth <= -1){
		displayMonth = 11;
		incYear(-1,eltName);
	}else{
		newCalendar(eltName);
	}
}

function incYear(delta,eltName) {
	displayYear = parseInt(displayYear + '') + delta;
	newCalendar(eltName);
}

function makeDaysGrid(startDay,day,intDaysInMonth,newCal,eltName) {
	var daysGrid;
	var month = newCal.getMonth();
	var year = newCal.getFullYear();
	var isThisYear = (year == new Date().getFullYear());
	var isThisMonth = (day > -1)
	daysGrid = '<table border=1 cellspacing=0 cellpadding=2><tr><td bgcolor=#ffffff nowrap>';
	daysGrid += '<font face="courier new, courier" size=2>';
	daysGrid += '<a href="javascript:delDay(\'' + eltName + '\')"><img src="images/trash.gif" height="11" width="11" border="0" alt="Delete Date" align="absmiddle"></a>';
	daysGrid += '&nbsp;';
	daysGrid += '<a href="javascript:incMonth(-1,\'' + eltName + '\')"><img src="images/left.gif" height="11" width="11" border="0" alt="Previous Month" align="absmiddle"></a>&nbsp;';

	daysGrid += '<b>';
	daysGrid += '<span class="cal_heading">' + months[month] + '</span>';
	daysGrid += '</b>';

	daysGrid += '&nbsp;<a href="javascript:incMonth(1,\'' + eltName + '\')"><img src="images/right.gif" height="11" width="11" border="0" alt="Next Month" align="absmiddle"></a>';
	daysGrid += '&nbsp;';
	daysGrid += '<a href="javascript:incYear(-1,\'' + eltName + '\')"><img src="images/left.gif" height="11" width="11" border="0" alt="Previous Year" align="absmiddle"></a>&nbsp;';

	daysGrid += '<span class="cal_heading">' + year + '</span>';

	daysGrid += '&nbsp;<a href="javascript:incYear(1,\'' + eltName + '\')"><img src="images/right.gif" height="11" width="11" border="0" alt="Next Year" align="absmiddle"></a>';
	daysGrid += '&nbsp;';
	daysGrid += '<a href="javascript:hideElement(\'' + eltName + '\')"><img src="images/close.gif" height="11" width="11" border="0" alt="Close" align="absmiddle"></a><br>';
	daysGrid += '<span class="cal_dayheading">&nbsp;Su Mo Tu We Th Fr Sa&nbsp;</span><br>&nbsp;';
	var dayOfMonthOfFirstSunday = (7 - startDay + 1);
	for (var intWeek = 0; intWeek < 6; intWeek++) {
		var dayOfMonth;
		for (var intDay = 0; intDay < 7; intDay++) {
			dayOfMonth = (intWeek * 7) + intDay + dayOfMonthOfFirstSunday - 7;
			if (dayOfMonth <= 0){
				daysGrid += "&nbsp;&nbsp; ";
			}else if (dayOfMonth <= intDaysInMonth){
				var text_class = "cal_day";
				if (day > 0 && day == dayOfMonth) text_class = "cal_curday";
				daysGrid += '<a href="javascript:setDay(';
				daysGrid += dayOfMonth + ',\'' + eltName + '\')" '
				daysGrid += 'class="' + text_class + '">';
				var dayString = dayOfMonth + "</a> ";
				if (dayString.length == 6) dayString = '0' + dayString;
				daysGrid += dayString;
			}
		}
		if (dayOfMonth < intDaysInMonth) daysGrid += "<br>&nbsp;";
	}
	return daysGrid + "</font></td></tr></table>";
}

function setDay(day,eltName) {
	displayElement.value = day + "-" + months[displayMonth] + "-" + displayYear;
	hideElement(eltName);
}

function delDay(eltName) {
	displayElement.value = "";
	hideElement(eltName);
}

function toggleDatePicker(eltName,formElt){
	var x = formElt.indexOf('.');
	var formName = formElt.substring(0,x);
	var formEltName = formElt.substring(x+1);
	newCalendar(eltName,document.forms[formName].elements[formEltName]);
	toggleVisible(eltName);
}

function fixPosition(divname){
	divstyle = getDivStyle(divname);
	positionerImgName = divname + 'Pos';
	isPlacedUnder = false;
	if (isPlacedUnder){
		setPosition(divstyle,positionerImgName,true);
	}else{
		setPosition(divstyle,positionerImgName)
	}
}

function isPast(pdate){ //pdate dd-MMM-yyyy
	var myArray = pdate.split('-');
	var day = myArray[0];
	var month = getmonth(myArray[1]);
	var year = myArray[2];
	var myDate=new Date()
	myDate.setFullYear((year*1),((month*1)-1),(day*1))
	var today = new Date()
	if (myDate<=today){
		return true;
	}else{
		return false;
	}
}

function isFuture(pdate){ //pdate dd-MMM-yyyy
	var myArray = pdate.split('-');
	var day = myArray[0];
	var month = getmonth(myArray[1]);
	var year = myArray[2];
	var myDate=new Date()
	myDate.setFullYear((year*1),((month*1)-1),(day*1))
	var today = new Date()
	if (myDate>=today){
		return true;
	}else{
		return false;
	}
}

function isLTDate(pdate,comDate){ //pdate dd-MMM-yyyy  comDate yyyy-mm-dd
	var myArray = pdate.split('-');
	var day = myArray[0];
	var month = getmonth(myArray[1]);
	var year = myArray[2];
	var myDate=new Date()
	myDate.setFullYear((year*1),((month*1)-1),(day*1))
	
	myArray = comDate.split('-');
	day = myArray[2];
	month = myArray[1];
	year = myArray[0];
	var myDate2=new Date()
	myDate2.setFullYear((year*1),((month*1)-1),(day*1))
	if (myDate<=myDate2){
		return true;
	}else{
		return false;
	}
}

function isGTDate(pdate,comDate){ //pdate dd-MMM-yyyy  comDate yyyy-mm-dd
	var myArray = pdate.split('-');
	var day = myArray[0];
	var month = getmonth(myArray[1]);
	var year = myArray[2];
	var myDate=new Date()
	myDate.setFullYear((year*1),((month*1)-1),(day*1))
	
	myArray = comDate.split('-');
	day = myArray[2];
	month = myArray[1];
	year = myArray[0];
	var myDate2=new Date()
	myDate2.setFullYear((year*1),((month*1)-1),(day*1))
	if (myDate>=myDate2){
		return true;
	}else{
		return false;
	}
}

function getmonth(mymnth){
	var months = 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec';
	var mthArr = months.split(',');
	for (i=0;i<mthArr.length&&mymnth!=mthArr[i];i++){
	}
	return (i+1);
}


