/* Common Functions (common.js) */
function none() {
	return undefined;
};

function hideDiv(d) {
	var obj = document.getElementById(d);
	if (obj) obj.className = 'dh';
};

function showDiv(d) {
	var obj = document.getElementById(d);
	if (obj) obj.className = 'dv';
};

function fixYear(f) {
	var g = parseInt(f.value, 10);
	if (g) {
		if (g > 0 && g < 1000) {
			f.value = g + 1900;
		}
	}
};

function sumAttr(cobj,attr) {
	var r = 0;
	while (cobj) {
		r += cobj[attr];
		cobj = cobj.offsetParent;
	}
	return r;
};

function objPosLeft(cobj) {
	return sumAttr(cobj,'offsetLeft');
};

function objPosTop(cobj) {
	return sumAttr(cobj,'offsetTop');
};

function trimString(s) {
	s = s.replace( /^\s+/g, '' );
	return s.replace( /\s+$/g, '' );
};

/* Calendar (calendar.js) */
var _calDiv;
var _calMonthNames = new Array("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var _calDays = new Array("S","M","T","W","T","F","S");

function hideAllSelect() {
	var sa = document.getElementsByTagName('SELECT');
	if (sa) {
		var i = 0;
		var maxi = sa.length;
		while (i < maxi) {
			if (sa[i].className != 'calshow') {
				sa[i].style.visibility = 'hidden';
			}
			i = i + 1;
		}
	}
};

function showAllSelect() {
	var sa = document.getElementsByTagName('SELECT');
	if (sa) {
		var i = 0;
		var maxi = sa.length;
		while (i < maxi) {
			if (sa[i].className != 'calshow') {
				sa[i].style.visibility = 'visible';
			}
			i = i + 1;
		}
	}
};

function daysinMonth(month,year) {
	if (month == 2) {
		if (((year/4, 10) - parseInt(year/4, 10)) == 0) {
			return 29;
		}
		return 28;
	}

	if (month == 4 || month == 6 || month == 9 || month == 11) {
		return 30;
	}

	return 31;
};

function setCalDate(fldID,month,day,year) {
	document.getElementById(fldID).value = month + '/' + day + '/' + year;
	cancelCal();
};

function cancelCal() {
	showAllSelect();
	_calDiv.style.display = 'none';
	_calDiv.style.visibility = 'hidden';
	_calDiv.style.left = '-500px';
	_calDiv.style.top = '-500px';
};

function drawCalendar(fldID,month,year) {
	var s, i, tempMonth, tempYear;

	month = parseInt(month, 10);
	year = parseInt(year, 10);

	tempMonth = month - 1;
	tempYear = year;

	if (tempMonth == 0) {
		tempMonth = 12;
		tempYear = tempYear - 1;
	}


	s = '<table border="0" cellpadding="2" cellspacing="1" width="100%"><tr> <td width="15%" align="center" bgcolor="#cccccc"><a href="#" onClick="drawCalendar(\'' + fldID + '\',' + tempMonth + ',' + tempYear + '); return false;">&lt;&lt;</a></td> ';

	s = s + '<td width="70%" colspan="5" align="center" bgcolor="#cccccc"><select name="calmon" id="calmon" onChange="drawCalendar(\'' + fldID + '\',this.options[this.selectedIndex].value,' + year + ');" class="calshow">';

	i = 1;
	while (i <= 12) {
		s = s + '<option value="' + i + '"';
		if (i == month) {
			s = s + ' selected';
		}
		s = s + '>' + _calMonthNames[i] + '</option>';
		i = i + 1;
	}

	s = s + '</select> <select name="calyear" id="calyear" onChange="drawCalendar(\'' + fldID + '\',' + month + ',this.options[this.selectedIndex].value);" class="calshow">';

	i = year - 8;
	while (i <= (year + 8)) {
		s = s + '<option value="' + i + '"';
		if (i == year) {
			s = s + ' selected';
		}
		s = s + '>' + i + '</option>';
		i = i + 1;
	}


	s = s + '</select></td> ';

	tempMonth = month + 1;
	tempYear = year;

	if (tempMonth == 13) {
		tempMonth = 1;
		tempYear = tempYear + 1;
	}

	s = s + '<td width="15%" align="center" bgcolor="#cccccc"><a href="#" onClick="drawCalendar(\'' + fldID + '\',' + tempMonth + ',' + tempYear + '); return false;">&gt;&gt;</a></td> </tr><tr> ';
	i = 0;
	while (i < 7) {
		s = s + '<td width="1';
		if (i == 0 || i == 6) {
			s = s + '5';
		}
		else {
			s = s + '4';
		}
		s = s + '%" bgcolor="#000099" align="center"><font color="#ffffff">' + _calDays[i] + '</font></td> ';
		i = i + 1;
	}
	s = s + '</tr>';

	var dt = new Date(year,month-1,1);

	var dow = dt.getDay();
	i = 0;
	while (i < dow) {
		if (i == 0) {
			s = s + '<tr> ';
		}
		s = s + '<td bgcolor="#ffffff">&nbsp;</td> ';
		i = i + 1;
	}

	var today = new Date();
	var todayMonth = today.getMonth() + 1;
	var todayYear = today.getYear() + 1900;
	var lt = -1;
	if (todayMonth == month && todayYear == year) {
		lt = today.getDate();
	}


	var days = daysinMonth(month,year);
	i = 1;
	while (i <= days) {
		if (dow == 0) {
			s = s + '<tr> ';
		}
		s = s + '<td bgcolor="#';
		if (i == lt) {
			s = s + 'ff9900';
		}
		else {
			s = s + 'ffff99';
		}
		s = s + '" align="center"><a href="#" onClick="setCalDate(\'' + fldID + '\',' + month + ',' + i + ',' + year + '); return false;">' + i + '</a></td> ';
		dow = dow + 1;
		if (dow == 7) {
			s = s + '</tr>';
			dow = 0;
		}
		i = i + 1;
	}
	if (dow > 0) {
		while (dow < 7) {
			s = s + '<td bgcolor="#ffffff">&nbsp;</td> ';
			dow = dow + 1;
		}
		s = s + '</tr>';
	}
	s = s + '</table><table cellspacing="1" cellpadding="2" width="100%"><tr> <td width="50%"><a href="#" onClick="drawCalendar(\'' + fldID + '\',' + todayMonth + ',' + todayYear + '); return false;"><img src="/images/calendar/today.gif" border="0" alt="Jump to today" /> Today</a></td> <td width="50%" align="right"><a href="#" onClick="cancelCal(); return false"><img src="/images/calendar/cancel.gif" border="0" /> Cancel</a></td> </tr></table>';



	_calDiv.innerHTML = s;
};

function showCalendar(fldID) {
	var fld;
	fld = document.getElementById(fldID);
	if (!fld) {
		return false;
	}

	if (!(_calDiv)) {
		_calDiv = document.createElement('DIV');
		_calDiv.id = 'cal';
		_calDiv.name = 'cal';
		_calDiv.style.position = 'absolute';
		_calDiv.style.overflow = 'hidden';
		_calDiv.style.border = '1px solid black';
		_calDiv.style.padding = '1px;';
		_calDiv.style.visibility = 'hidden';
		_calDiv.style.display = 'none';
		_calDiv.style.background = '#fff';

		document.body.appendChild(_calDiv);
	}

	_calDiv.style.top = (objPosTop(fld) + (1.2 * fld.offsetHeight)) + 'px';
	_calDiv.style.left = objPosLeft(fld) + 'px';

	if (fld.offsetWidth < 180) {
		_calDiv.style.width = '180px';
	}
	else {
		_calDiv.style.width = fld.offsetWidth + 'px';
	}

	var curdate = new Date();

	var curMonth = curdate.getMonth() + 1;
	var curYear = curdate.getYear();

	/* Parse the initial date */
	if (fld.value != '') {
		var val;
		val = fld.value;
		if (val.match(/^[01]?\d(\/|-)[0123]?\d(\/|-)(\d{2}|\d{4})$/)) {
			var prts = val.split(/\/|-/);
			curMonth = prts[0];
			curYear = prts[2];
		}
	}

	curMonth = parseInt(curMonth, 10);
	curYear = parseInt(curYear, 10);

	if (curYear < 100) {
		if (curYear < 50) {
			curYear = curYear + 2000;
		}
		else {
			curYear = curYear + 1900;
		}
	}
	if (curYear >= 100 && curYear < 200) {
		curYear = curYear + 1900;
	}

	drawCalendar(fldID,curMonth,curYear);

	hideAllSelect();

	_calDiv.style.display = '';
	_calDiv.style.visibility = 'visible';
};


// Add before
function addBefore( ord , txt ) {
	$('afattext').innerHTML = 'Before field: "' + txt + '"';
	$('afbefore').value = ord;
};