//Pop Calendar
today = new Date;
thisDay = today.getDay();
thisDate = today.getDate();
thisMonth = today.getMonth();
thisYear = today.getYear();

setD = thisDate;
setM = thisMonth;
setY = thisYear;
todayID = setD+"_"+setM+"_"+setY;

mnthLbl1 = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
normMnth = new Array('31','28','31','30','31','30','31','31','30','31','30','31');
dayLbl1 = new Array('S','M','T','W','T','F','S');
dayLbl2 = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');


todayWords = dayLbl2[thisDay] + ", " + thisDate + " " + mnthLbl1[thisMonth] + ", " + thisYear;

function leapYear(){
	if(parseInt(setY)%4 == 0){
		if(parseInt(setY)%100 == 0 && parseInt(setY)%400 != 0){
			return false;
		}else{
			return true;
		}
	}
	return false;
}

//CALENDAR GENERATION
function calHeader(mNo){
	calHead = calButton('','scrollMonth(\'prev\')','monthscroll','prevmonth')+calButton('','scrollMonth(\'next\')','monthscroll','nextmonth');
	calHead += "<p class=calHead>";
	calHead += mnthLbl1[mNo]+", "+setY;
	calHead += "</p>";
	calHead += calButton('X','ctrlPop(\'dynPopup\',\'none\')','hidepop','hidecal');
	calHead += "<br>";

	for(dy=0; dy<dayLbl1.length; dy++){
		calHead += "<span class=dayhdr>"+dayLbl1[dy]+"<\/span>";
	}
	calHead += "<br>";
	return calHead;
}

function calButton(lbl,func,sclass,id){
	return "<a id=\""+id+"\" class=\""+sclass+"\" href=\"javascript:"+func+"\">"+lbl+"<\/a>";
}

function scrollMonth(dir){
	if(dir == "prev"){
		mNo = setM - 1;
	}else{
		mNo = setM + 1;
	}

	if(mNo == 12){
		setY = parseInt(setY) + 1;
		mNo = 0;
	}

	if(mNo < 0){
		setY = parseInt(setY) - 1;
		mNo = 11;
	}
	setM = mNo;
	buildCalendar(setD,setM,setY);
}

function initDay(im,iy){	//Finds the starting day for a month and year
	startDate = new Date;
	initDate = startDate.setDate(1);
	startMonth = startDate.setMonth(im);
	startYear = startDate.setYear(iy);
	return startDate.getDay();
}

function buildCalendar(d,m,y){
	genCal = calHeader(m);
	initBlanks = 0 + initDay(m,y);
	for(ib=0;ib<initBlanks;ib++){ 			//Start blanks
		genCal += calButton('','doNothing()','blankdate','');
	}
	daysArray = eval(normMnth);
	if(leapYear()){	daysArray[1] = "29"; }

	noDays = parseInt(daysArray[m])+1;
	for(db=1;db<noDays;db++){	//Write date buttons
		dateParams = "'"+db+"','"+m+"','"+y+"'";
		dateID = db+"_"+m+"_"+y;
		genCal += calButton(db,'selectDate('+dateParams+')','date',dateID);
		if(db+1%7 == 0){
			genCal += "<br>";
		}
	}
	setHTML('dynPopup',genCal);
	highlightToday();
}

function highlightToday(){
	try {
		today = captureObj(todayID);
		today.className = "dateactive";
	}catch(exception){}
}

function selectDate(d,m,y){
	setD = d; setM = m; setY = y;
	fldObj = captureObj(dateField);

	dayFld = captureObj(dateField+'day');
	dayFld.value = d;
	mnthFld = captureObj(dateField+'month');
	mnthFld.value = parseInt(m)+1;
	yearFld = captureObj(dateField+'year');
	yearFld.value = y;

	fldObj.value = d+"/"+(parseInt(m)+1)+"/"+y;
	ctrlPop('dynPopup','none');
}

var dateField;
function popCalendar(){
	buildCalendar(setD,setM,setY);
	ctrlPop('dynPopup','block');

	calPop = captureObj('dynPopup');
	calPop.style.top = "-120px";
	calPop.style.left = "2px";
	calPop.style.backgroundColor="#eee";
	calPop.style.borderWidth="1px";
}

var offsetDimH = 0; var offsetDimW = 0;

function calcOffset(aObj){
	offsetDimH = 0;		prevOffH = 0;
	offsetDimW = 0;	prevOffW = 0;
	while(aObj.tagName != "BODY"){
		if(prevOffH != aObj.offsetTop){
			offsetDimH += aObj.offsetTop;
		}
		if(prevOffW != aObj.offsetLeft){
			offsetDimW += aObj.offsetLeft;
		}
		aObj = aObj.parentNode;
		prevOffH = offsetDimH;
		prevOffW = offsetDimW;
	}
}

function ctrlPop(popID,dMode){
	popToCtrl = captureObj(popID);
	popToCtrl.style.display = dMode;
}
