/*
this function assigns alternating row colors to table with id=tableId

Usage:
1. include this *.js file in the report page.
2. If dojo is used on the report page, make a call to paintRows() after </table>. E.g.:
	<script type="text/javascript">paintRows('table1');</script>

3. If dojo is not used, window.onload call to paintRows() can be used. E.g.:
	window.onload = function(){
		paintRows('table1');
	}

4. Default class names are 'even' and 'odd'.
*/
function paintRows(tableId){
	switch (arguments.length){
		case 1:
			var classEven = 'even';
			var classOdd = 'odd';
		break;
		case 2:
			var classEven = arguments[1];
			var classOdd = 'odd';
		break;
		case 3:
			var classEven = arguments[1];
			var classOdd = arguments[2];
	}
	var r = document.getElementById(tableId).tBodies[0].rows; //get reference to an array of table rows. Assign class names to even / odd rows.
	for(var i=0; i < r.length; i++){
		var tmp = r[i].className;
		if(tmp.length > 0)
			r[i].className = (i % 2 == 0) ? tmp+' '+classEven : tmp+' '+classOdd; 
		else	
			r[i].className = (i % 2 == 0) ? classEven : classOdd; 
	}
}

function doHighlightRows(TableId){
	NumArgs = arguments.length;
	ClsHighLight = (NumArgs >=2)? arguments[1]: "highLight"; //assuming arg. 2 contain tr highlight class name
	SkipFirstRow = (NumArgs >=3)?arguments[2]: false; //assuming arg 3 contain true/false, default false
	SkipLastRow = (NumArgs >=4)?arguments[3]: false; //assuming arg 4 contain true/false, default false	
	t = document.getElementById(TableId).tBodies[0];
	if(!t) t = document.getElementById(TableId).rows;
	if(t){
		r = t.rows		
		for(i=0; i < r.length; i++){
			if(SkipFirstRow && i==0){continue;} //skip first row
			if((i+1) == r.length && SkipLastRow){break;}	//skip last row			
			r[i].onmouseover = function(){
				this.setAttribute("OldClass", this.className);
				this.className = ClsHighLight;
			};
			r[i].onmouseout = function(){
				this.className = this.getAttribute("OldClass");
			};
		}
	}
}

function isValidDate(strDate) {
	var pattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var mDate = strDate.match(pattern);
	
	if (mDate == null) {
		//alert("here");	
		return false;
	}
	
	
	var validDay = [1, 2 ,3 ,4 ,5 ,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
	var validMon = [1,2,3,4,5,6,7,8,9,10,11,12];
	var monHasNo31Day = [4, 6, 9,11];
	var zeroPattern = /^0*/gi;
	var m = mDate[1];
		m = m.replace(zeroPattern, "");
		m = parseInt(m);
	var d = mDate[3];
		d = d.replace(zeroPattern, "");
		d = parseInt(d);
	var y = mDate[5];
		y = y.replace(zeroPattern, "");
		y = parseInt(y);
	var isLeapYear = (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0));	
	if(jQuery.inArray(d, validDay) == -1 ||
		jQuery.inArray(m, validMon) == -1 ||
		(jQuery.inArray(m, monHasNo31Day) != -1 && d == 31) ||
		(m == 2 && (d > 29 || (d == 29 && !isLeapYear)))
	){
		return false;
	}

	return true; 
}