function maxDays(mm, yyyy) {
	var mDay;
	if ((mm == 3) || (mm == 5) || (mm == 8) || (mm == 10)) {
		mDay = 30;
  	}
  	else {
  		mDay = 31
  		if (mm == 1) {
   			if (yyyy/4 - parseInt(yyyy/4) != 0) {
   				mDay = 28
   			}
		   	else{
   				mDay = 29
  			}
		}
	}
	return mDay;
}

function writeCalendar() {
	var now = new Date;
	this.dd = now.getDate(); 
	this.mm = now.getMonth(); 
	this.dow = now.getDay(); // 0 - Sunday 1-Monday 2-Tuesday 3-Wednesday 4-Thursday 5-Friday 6-Saturday
	this.yyyy = now.getFullYear(); 
	
	this.arrM = new Array("1","2","3","4","5","6","7","8","9","10","11","12");
	this.arrY = new Array();
		for (ii=0;ii<=4;ii++){
			this.arrY[ii] = this.yyyy - 2 + ii;
		}
	this.arrD = new Array("W","S","M","T","W","T","F","S");
}

writeCalendar.prototype.selMonth = function() {
	var text = "";
	text += "<select name=selMonth onChange='monthChange()' class='box'>"
		for (ii=0;ii<=11;ii++){
			if (ii==this.mm){
				text += "<option value= " + ii + " Selected>" + this.arrM[ii] + "</option>"
			}
			else{
				text += "<option value= " + ii + ">" + this.arrM[ii] + "</option>"
			}
		}
	text += "</select>"
	document.write(text);
}

writeCalendar.prototype.selYear = function() {
	var text = "";
	text += "<select name=selYear onChange='changeCal()' class='box'>"
		for (ii=0;ii<=4;ii++){
			if (ii==2){
				text += "<option value= " + this.arrY[ii] + " Selected>" + this.arrY[ii] + "</option>"
			}
			else{
				text += "<option value= " + this.arrY[ii] + ">" + this.arrY[ii] + "</option>"
			}
		}
	text += "</select>"
	document.write(text);
}

writeCalendar.prototype.selDay = function() {
	if (document.calForm.selMonth == undefined) {
		var currM = parseInt(this.mm);
	} else {
		var currM = parseInt(document.calForm.selMonth.value);
	}
	if (document.calForm.selYear == undefined) {
		var currY = parseInt(this.yyyy);
	} else {
		var currY = parseInt(document.calForm.selYear.value);
	}

	var days = maxDays(currM, currY); 
	var text = "";
	text += "<select name=selDay onChange='changeCal()' class='box'>"
		for (ii=1;ii<=days;ii++){
			if (ii==this.dd){
				text += "<option value= " + ii + " Selected>" + ii + "</option>"
			}
			else{
				text += "<option value= " + ii + ">" + ii + "</option>"
			}
		}
	text += "</select>"
	document.write(text);
}

writeCalendar.prototype.Calendar = function() {
	var text="";
	text += "<tr bgcolor='#7a96df'>";
	for (ii=0;ii<=7;ii++){
		text += "<td align='center' width='13%'><span class=label>" + this.arrD[ii] + "</span></td>";
	}
	text += "</tr>";
	var aa = 0;
	var dd = 1;
	for (var kk=0;kk<=5;kk++) {
		text += "<tr bgcolor='#ffffff'>"
		for (var ii=0;ii<=7;ii++) {
			if (ii == 0) {
				text += "<td align=center><span id=week" + kk + ">1</span></td>";
			} else {
				text += "<td align=center><span id=sp" + aa + ">1</span></td>";
				aa += 1
			}
		}
		text += "</tr>";
	}
	document.write(text);
	changeCal();
}

function monthChange() {
	var form = document.calForm;
    var day = form.selDay;
    var len = day.options.length;

    for (var i=0; i < len; i++) {
         day.options[0] = null;
    }

    var now = new Date;
    var mm = now.getMonth();
    var yyyy = now.getFullYear();

    var currM = parseInt(form.selMonth.value);
    var currY = parseInt(form.selYear.value);

    if (currY > yyyy) {
        currY = yyyy;
    }
    if (currY == yyyy && currM > mm) {
        currM = mm;
    }
    var days = maxDays(currM, currY);

    for (var i=1; i <= days; i++) {
        var no = new Option();
        no.text = i;
        no.value = i;
        day.options[day.options.length] = no;
    }
    changeCal();
}
    
function changeCal()
{
	var form = document.calForm;
	var now = new Date;
	var dd = now.getDate();
	var mm = now.getMonth();
	var dow = now.getDay();
	var yyyy = now.getFullYear();
	
	var page = new PageQuery(location.search);
	var selDay = page.getValue("selDay"); 
	var selMonth = page.getValue("selMonth"); 
	var selYear = page.getValue("selYear"); 
	var currM, currY, currD;

	if (selYear != -1 && selMonth != -1 && selDay != -1) {
			currM = parseInt(selMonth);
			currY = parseInt(selYear);
			currD = parseInt(selDay);
	} else {
			currM = parseInt(form.selMonth.value);
			currY = parseInt(form.selYear.value);
			currD = parseInt(form.selDay.value);
	}
	
	if (currY > yyyy) {
		form.selYear.value = yyyy;
		return;
	}
	if (currY == yyyy && currM > mm) {
		form.selMonth.selectedIndex = mm;
		return;
	}

	if (currY == yyyy && currM == mm && currD >  dd) {
		form.selDay.selectedIndex = dd-1;
		return;
	}	

	var prevM;
	if (currM!=0){
		prevM = currM - 1;
	}
	else{
		prevM = 11;
	}
	var mmyyyy = new Date();
	mmyyyy.setFullYear(currY);
	mmyyyy.setMonth(currM);
	mmyyyy.setDate(1);
	var day1 = mmyyyy.getDay();
	var maxday = maxDays(currM,currY);
	if (day1 == 0) {
		//day1 = 7;
	}

	var arrN = new Array(41);
	var aa;

	for (ii=0;ii<day1;ii++) {
		arrN[ii] = maxDays((prevM),currY) - day1 + ii + 1;
	}

	aa = 1
	for (ii=day1;ii<=day1+maxday-1;ii++) {
		arrN[ii] = aa;
		aa += 1;
	}

	aa = 1
	for (ii=day1+maxday;ii<=41;ii++) {
		arrN[ii] = aa;
		aa += 1;
	}
/*
	for (ii=0;ii<=41;ii++) {
		eval("sp"+ii).style.backgroundColor = "#FFFFFF";
	} */

	var mm_tmp =  (mm < 9  ? "0" : '') + (mm+1).toString();
	var dd_tmp = (dd < 10  ?  "0" :'')  + dd.toString();
	var curdate = parseInt(yyyy.toString() + mm_tmp + dd_tmp);
   var currM_tmp = (currM < 9 ? "0" :'') + (currM+1).toString();
	
	var dCount = 0;
	var week = 0;
	var start = new Array(6);
	var end = new Array(6);

	for (var ii=0;ii<=41;ii++) {
		if (((ii<7)&&(arrN[ii]>20))||((ii>27)&&(arrN[ii]<20))) {
			document.getElementById("sp"+ii).innerHTML = arrN[ii];
			document.getElementById("sp"+ii).className = "c4";
		}
		else{
			var arr_tmp = (arrN[ii] < 10 ? "0" : "") + arrN[ii].toString();
			var arr_date = parseInt(currY.toString() + currM_tmp + arr_tmp);
			var is_now = false;
			var str = "";
			if (curdate >=  arr_date) {
			    str = "<a id=link"+ii + " href='magic.php?date=" + arr_date + "' target='contents'";
			    str += " onMouseOver=\"printLink(this.id,'over');window.status='HB Web Analyzer'; return true;\" onMouseOut=\"printLink(this.id,'out'); window.status=''; return true;\">";
			    is_now = true;
			}

			if (dCount==0) {
				document.getElementById("sp"+ii).className = "c2";
				str += "<font color=red><u>" + arrN[ii] + "</u></font>";
				
			} else if (dCount==6) { 
				str += "<font color=blue><u>" + arrN[ii] + "</u></font>";
				document.getElementById("sp"+ii).className = "c3";
			} else {
				str += "<font color=black><u>" + arrN[ii] + "</u></font>";
				document.getElementById("sp"+ii).className = "c1";
			}
			
			if (is_now) str += "</a>";
			document.getElementById("sp"+ii).innerHTML =  str;

			if (arr_date > curdate) {
				document.getElementById("sp"+ii).innerHTML = arrN[ii];
			}

			document.getElementById("sp"+ii).style.fontWeight = "";
			if ((arrN[ii]==dd)&&(mm==currM)&&(yyyy==currY)) {
				document.getElementById("sp"+ii).style.fontWeight = "bold";
			}
			
			if (arrN[ii] != 1 && dCount == 6) {
				end[week] = arrN[ii];
			}
			else if (arrN[ii] == 1 || dCount == 0) {
				start[week] = arrN[ii];
			}
		}
		dCount += 1;
		if (dCount>6) {
			dCount=0;
			week += 1;
		}

	}
	
	for (var i=0 ; i < start.length; i++) {
		if (typeof start[i] == "undefined") {
			document.getElementById("week"+i).innerHTML =  (i + 1);
			document.getElementById("week"+i).className = "c5";
			continue;
		}
		if (typeof end[i] == "undefined") {
			end[i] = "32";
		}
		st_tmp = (start[i] < 10)  ?  "0" + start[i].toString() : start[i].toString();
		ed_tmp =  (end[i] < 10)  ?  "0" + end[i].toString() : end[i].toString();

		var st = parseInt(currY.toString() + currM_tmp + st_tmp);
		var ed = parseInt(currY.toString() + currM_tmp + ed_tmp);

		if ((st <= curdate && curdate <= ed) || st <= curdate  ) {
			var str = "<a href='magic.php?date="+st+";"+ed+"' target='contents'>";
		        str += "<img src='_template/default/images/but/button_calendar.gif' border='0' align='absmiddle'></a>";
			document.getElementById("week"+i).innerHTML = str;
		} else {
			document.getElementById("week"+i).innerHTML =  (i + 1);
			document.getElementById("week"+i).className = "c5";
		}
	}
}

function ChangeDateNext() {
	var currY = parseInt(document.calForm.selYear.value);
	document.calForm.selYear.value = currY + 1;
	monthChange();
}

function ChangeDatePrev() {
	var currY = parseInt(document.calForm.selYear.value);
	document.calForm.selYear.value = currY - 1;
	monthChange();
}

function printLink(id, overout) 
{
	var el = document.getElementById(id);
	if (overout == "over") {
		el.parentNode.className = "link1";
	}
	else{
		el.parentNode.className = "link2";
	}
}


