var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var days = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var classTemp;
var daily = 0;
var firstday;
var row1, col1;

var events = new Array();
var dialog = null;
var dialogdiv = null;
var dialogdate = null;
var dialogcontent = null;

function getDays(mn, yr) {
	//計算二月28日或29日
	if (1 == mn) return ((0 == yr % 4) && (0 != (yr % 100))) ||(0 == yr % 400) ? 29 : 28;
	else return daysInMonth[mn];
}

function Calendar() {
	firstday = new Date(myyear,mymonth-1,1); /* 建立本月一號的日期 */
	var day = -1;
	var startDay = firstday.getDay();
	var endDay=getDays(firstday.getMonth(), firstday.getFullYear()); /* 取得結束日期 */
	if ( myyear == (new Date()).getFullYear() && mymonth == ((new Date()).getMonth()+1) ) {
		day = (new Date()).getDate(); /* 如果顯示月年相同, 設定day為今天 */ }
	var caltable = document.getElementById("cal_table");

	for (var intWeek=1; intWeek<caltable.rows.length; intWeek++)
	for (var intDay=0; intDay<caltable.rows[intWeek].cells.length; intDay++) {
		var cell = caltable.rows[intWeek].cells[intDay];
		if ((intDay == startDay) && (0 == daily)){ daily = 1; row1 = intWeek; col1 = intDay; }
		if(day==daily) cell.className=addclass(cell.className,"now");

		if ((daily > 0) && (daily <= endDay)) {
			cell.innerHTML = daily;

			//cell.attachEvent("onclick", function() {	//單擊檢視
			//	if(event.srcElement.tagName=="LI") {
			//		window.frames["gettitle"].location = 'momo_search.asp?key='+event.srcElement.parentElement.key+'&date='+myyear+'/'+mymonth+'/'+event.srcElement.parentElement.parentElement.firstChild.innerText; }
			//});

			daily++;
			} else { cell.className="blank"; cell.innerText = ""; }
	}
	createDialog();
	addEvent();
}

function getCell(data){
	var caltable = document.getElementById("cal_table");
	var temp = col1 + parseInt(data,10) - 1;
	var newcol = temp % 7;
	var newrol = Math.floor(temp/7) + row1;
	return caltable.rows[newrol].cells[newcol];
}

function addEvent(){
	/* 插入事件 */
	//1:key, 2:lessondate, 3:catname, 4:lessonname
	for(var i=0; i < eventarray.length; i++) {
		eventtemp = eventarray[i].split("&&");
		eventday = eventtemp[1] ? eventtemp[1].charAt(8)+eventtemp[1].charAt(9) : "-1";
		if(eventday!="-1" && !events[eventday]) {
			events[eventday] = new Array();
			var obj = getCell(eventday);
			obj.date = eventtemp[1];
			obj.eventday = eventday;
			/* set cell */
			obj.className = addclass(obj.className,"active");
			/* set event */
			obj.attachEvent("onmouseover", dialog.show);
			obj.attachEvent("onmouseover", showcontenthover);
			obj.attachEvent("onmousemove", dialog.move);
			obj.attachEvent("onmouseout", dialog.hide);
			obj.attachEvent("onmouseout", hidecontenthover);
		}
		if(eventday != "-1"){
			var temp = events[eventday].length;
			events[eventday][temp] = new Object();
			events[eventday][temp].ukey = eventtemp[0];
			events[eventday][temp].catname = eventtemp[2];
			events[eventday][temp].lessonname = eventtemp[3];
		}
	}
}

function createDialog(){
	dialog = document.createElement("div");
	dialog.className = "dialog";
	document.body.appendChild(dialog);
		/* div free */
		var temp = document.createElement("iframe");
		temp.className = "divfree";
		temp.tabIndex = -1;
		dialog.appendChild(temp);
	var table = document.createElement("table");
	table.cellPadding = 0;
	table.cellSpacing = 0;
	dialog.appendChild(table);
	var temprow = table.insertRow();
	var temp = temprow.insertCell();
	temp.className = "dialogtop";
	var temprow = table.insertRow();
	var temp = temprow.insertCell();
	temp.className = "dialogcontent";
	dialogdiv = document.createElement("div");
	dialogdiv.className = "dcontent";
	temp.appendChild(dialogdiv);
	dialogdate = document.createElement("div");
	dialogdate.className = "ddate";
	dialogdiv.appendChild(dialogdate);
	dialogcontent = document.createElement("div");
	dialogdiv.appendChild(dialogcontent);
	var temprow = table.insertRow();
	var temp = temprow.insertCell();
	temp.className = "dialogbottom";
	
	dialog.setdate = function(data) { dialogdate.innerText = data }
	
	dialog.clearfield = function() { dialogcontent.innerText = "" }
	
	dialog.addfield = function(cat, title) {
		var temp = document.createElement("div");
		temp.className = "dialogfield";
		dialogcontent.appendChild(temp);
		var temp2 = document.createElement("span");
		temp2.className = "dialogcat";
		temp2.innerText = cat;
		temp.appendChild(temp2);
		var temp2 = document.createElement("span");
		temp2.className = "dialogtitle";
		temp2.innerText = title;
		temp.appendChild(temp2);
		}
		
	dialog.move = function() {
		dialog.style.top = event.clientY-dialog.clientHeight-2+document.body.scrollTop;
		dialog.style.left = event.clientX+document.body.scrollLeft;
	}
		
	dialog.show = function() {
		dialog.setdate(event.srcElement.date);
		dialog.clearfield();
		var temp = events[event.srcElement.eventday];
		if(temp){
			for(var i in temp){
				dialog.addfield(temp[i].catname,temp[i].lessonname);
			}
		}
		dialog.style.display = "block";
	}
	
	dialog.hide = function() {dialog.style.display = "none"; }
}

function showcontenthover(){
	eventday = event.srcElement.eventday;
	/* show pop on <div class=coursediv> */
	var temp = getElementsByClassName(document, "div", "coursediv");
	for(var i in temp){
		var tempstr = temp[i].date;
		if(tempstr!=undefined)
		if(hasarrayattr(tempstr.split(","),eventday))
			if(!hasattr(temp[i].className,"onHover"))
				temp[i].className = addclass(temp[i].className,"onHover");
	}
}

function hidecontenthover(){
	eventday = event.srcElement.eventday;
	var temp = getElementsByClassName(document, "div", "coursediv");
	for(var i in temp){
		var tempstr = temp[i].date;
		if(tempstr!=undefined)
		if(hasarrayattr(tempstr.split(","),eventday))
			if(hasattr(temp[i].className,"onHover"))
				temp[i].className = removeclass(temp[i].className,"onHover");
	}
}

function rcontent_mouseover(data){
	try{
	var obj = getCell(data);
	/* set cell */
	if(hasattr(obj.className, "rhover")) return;
	obj.className = addclass(obj.className,"rhover");
	}catch(e){}
}

function rcontent_mouseout(data){
	try{
	var obj = getCell(data);
	/* set cell */
	if(!hasattr(obj.className, "rhover")) return;
	obj.className = removeclass(obj.className,"rhover");
	}catch(e){}
}

function SSL(data) {
	/*set special letter*/
	var strline = data;
	if(strline==undefined) return;
	strline = strline.replace(/&lt;/g, "<");
	strline = strline.replace(/&gt;/g, ">");
	strline = strline.replace(/&amp;/g, "&");
	strline = strline.replace(/&apos;/g, "'");
	strline = strline.replace(/&quot;/g, "\"");
	return strline;
}

try{Calendar()}catch(e){}