//  ========================================================
//  	Calendar Drawing Functions with POW support
//  	Author: kumaraguru.g@hurix.com
//  ========================================================

weekDays = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
months = new Array(	'January', 'February', 'March', 'April',
				   	'May', 'June', 'July', 'August',
				   	'September', 'October', 'November', 'December');

powPath = '/sites/common_assets/mathematics/pow/';


Date.prototype.getWeek = function() {
    var dtObj = new Date();
    dtObj.setFullYear(this.getFullYear(), this.getMonth(), this.getDate());
    var dayNum = dtObj.getDay();
    //if(dayNum == 0) dayNum = 7;
    dtObj.setDate(dtObj.getDate() + (4 - dayNum));
    var dayOfYear = Math.floor((dtObj.getTime() - new Date(dtObj.getFullYear(), 0, 1, -6)) / 86400000);
    var weekNum = 1 + Math.floor(dayOfYear / 7);
    return weekNum;
}

now = new Date();
cYear = now.getFullYear();
cMonth = now.getMonth();
cWeek = now.getWeek();


function hndlEvent(row,eventID){
	dtp = row.id.split('_');
	dtp[0] = parseInt(dtp[0]);
	dtp[1] = parseInt(dtp[1]);
	dtp[2] = parseInt(dtp[2]);
	dt = new Date(dtp[0],dtp[1],1);
	weekNum = dt.getWeek() + dtp[2];
	
	if(weekNum <= cWeek) {
		switch(eventID){
			case 0: //mouse over
				row.className += ' hover'
				break;
			
			case 1: //mouse click
				openFile(weekNum,(weekNum == cWeek)?0:1);
				break;
				
			case 2: //mouse out
				row.className = row.className.replace('hover','');
				break;
		}
	}
}


function openFile(weekNum,ans)
{
	if(ans == 1)
		fileUrl = powPath + 'answer/week'+ weekNum + '_ans.rtf';	
	else
		fileUrl = powPath + 'problem/week'+ weekNum + '.rtf';			
		
	location.href = fileUrl;
}


function drawCalendar(year,month){
	dt = new Date(year,month);
	startDay = 1;
	endDay = new Date((new Date(year, month+1,1))-1).getDate();
	startWeekDay = dt.getDay();
	cdt = new Date();
	Y = cdt.getFullYear();
	M = cdt.getMonth();
	D = cdt.getDate();
	W = cdt.getWeek();
	isCurrent = ((year == Y) && (month == M));
	
	document.write('<table cellspacing="1" cellpadding="0" class="tblCalendar">');
	document.write('<caption align="top">' + months[month] + ' ' + year + '</caption><tr>');
	for(i=0;i<weekDays.length;i++){document.write('<th>' + weekDays[i] + '</th>');}
	document.write('</tr>');	
	
	offset = dt.getDay();
	
	for(i=1,j=0; i<=(endDay + offset); i++){
		if((i % 7) == 1) {
			rowid = year + '_' + month + '_' + j++;
			document.write('<tr id="' + rowid + '" ');
			wkPtr = dt.getWeek() + j - 1;
			
			if(year <= Y && wkPtr < W)
				document.write('class="hasPowAns" ');
			else if(year <= Y && wkPtr == W) 
				document.write('class="hasPow" ');
			else 
				document.write('class="hasNotPow" ');
				
			document.write(' onmouseover="hndlEvent(this,0);" onclick="hndlEvent(this,1)" onmouseout="hndlEvent(this,2);">');
		}
		
		if(i <= offset)
			document.write('<td>&nbsp;</td>');
		else {
			n = i-offset;
			if(n==D && isCurrent) {
				document.write('<td class="current">' + n + '</td>');
			} else { 
				document.write('<td>' + n + '</td>');
			}
		}
		
		if(i % 7 == 0) document.write('</tr>');
	}
	
	document.write('</table>');
	
}


//*********************************************************//

document.write('<a href="javascript:openFile(' + cWeek + ',0);">This Week\'s Problem</a><br/><br/>');
document.write('<b>Click on a week to see answers.</b><br/><br/>');

lastMonth = cMonth-1;

if(lastMonth < 0)
	drawCalendar(cYear-1, 11);
else
	drawCalendar(cYear, lastMonth);	

drawCalendar(cYear, cMonth);



