var Calendar = {
	yyyy : null,
	mm : null,
	term : 0,
	mode : "plain",
	status : 1,

	init : function() {
		if(Calendar.yyyy==null || Calendar.mm==null) {
			today = new Date();
			Calendar.yyyy = today.getFullYear()==null ? today.getYear() : today.getFullYear();
			Calendar.mm = today.getMonth()<9 ? "0"+(today.getMonth()+1) : ""+(today.getMonth()+1);
		}
	},

	load : function() {
		
		loadJavascript("/upload/resource/cal/inc/c"+Calendar.yyyy+Calendar.mm+".js", Calendar.paint, "euc-kr");
	},

	setText : function(target_id, text) {
		obj = document.getElementById(target_id);
		if(document.all)
			obj.innerText = text;
		else
			obj.textContent = text;
	},

	paint : function() {
		try{
		if(CalendarInfo != undefined) {
			Calendar.setText("curMonth",Calendar.mm);
			if(Calendar.mode!="print") {
				document.getElementById("btnPrev").style.display = (CalendarInfo.bPrev) ? "block" : "none";
				document.getElementById("btnNext").style.display = (CalendarInfo.bNext) ? "block" : "none";
			}

			cellIndex = CalendarInfo.startIndex;
			overDay = (CalendarInfo.overDay==null) ? 0 : CalendarInfo.overDay;
			
			for (i=1; i<=CalendarInfo.lastDay+overDay; i++)
			{
				if (i<=CalendarInfo.lastDay)
					Calendar.setText("c"+cellIndex++,(i<9) ? "0" + i : i);
				else
					Calendar.setText("c"+cellIndex++,((i-CalendarInfo.lastDay)<9) ? "0" + (i-CalendarInfo.lastDay) : (i-CalendarInfo.lastDay));
			}
			
			if(Calendar.yyyy+Calendar.mm == '201109'){
				Calendar.setText("c"+cellIndex++,((i-CalendarInfo.lastDay)<9) ? "0" + (i-CalendarInfo.lastDay) : (i-CalendarInfo.lastDay));
			}
			
			if(CalendarInfo.holiday!=null && CalendarInfo.holiday.length) {

				holiday = CalendarInfo.holiday;
				for(i=0; i<holiday.length; i++)
				{
					c = CalendarInfo.startIndex + parseInt(holiday[i],10) - 1;
					document.getElementById("c"+c).className = "sunday";
				}
			}
			
			Calendar.setTerm(Calendar.term==0 ? 3 : Calendar.term);
		}else
			Calendar.status = 0;
		}catch(e){

		}
	},

	unPaint : function() {
		cellIndex = CalendarInfo.startIndex;
		overDay = (CalendarInfo.overDay==null) ? 0 : CalendarInfo.overDay;
		
		for (i=1; i<=CalendarInfo.lastDay+overDay; i++)
		{
			c = cellIndex++;
			Calendar.setText("c"+c,"");
			if(c % 7 == 1)
				document.getElementById("c"+c).className = "sunday";
			else if(c % 7 == 0)
				document.getElementById("c"+c).className = "saturday";
			else
				document.getElementById("c"+c).className = "";
		}
		
		if(Calendar.yyyy+Calendar.mm == '201109'){
			c = cellIndex++;
			Calendar.setText("c"+c,"");
			if(c % 7 == 1)
				document.getElementById("c"+c).className = "sunday";
			else if(c % 7 == 0)
				document.getElementById("c"+c).className = "saturday";
			else
				document.getElementById("c"+c).className = "";
		}
		
	},

	setTerm : function(term) {
		if(Calendar.status) {
			
			if(Calendar.term>0 && Calendar.term!=term) {
				prevTerm = Calendar.term;
				Calendar.unDrawTerm(Calendar.term);
			} else {
				prevTerm = 0;
			}

			Calendar.drawTerm(term);

			if(Calendar.mode!="print") {
				Calendar.termOver(term);
				Calendar.term = term;
				if(prevTerm>0) Calendar.termOut(prevTerm);
			} else {
				Calendar.term = term;
			}

			if(Calendar.mode=="print")
				document.getElementById("monthImg").src = "/images/register/schedule_pop_calendar_stl0"+term+".gif";
		}
	},

	drawTerm : function(term) {
		obj = CalendarInfo["term"+term];
		//alert(obj);
		if(obj!=null && obj.length) {
			for(i=0; i<obj.length; i++)
			{
				c = CalendarInfo.startIndex + parseInt(obj[i],10) - 1;
				if(i==0) {
					if(obj[i] >= 28 && (term == '1' || term == '3')){
						idx = CalendarInfo.startIndex - 1;
						document.getElementById("c"+idx).className = "day05";
					}
					else
						document.getElementById("c"+c).className = "day05";
				} else {
					
					document.getElementById("c"+c).className = "day0"+term;
					
				}
			}
			
			if(Calendar.yyyy+Calendar.mm == '201109' && term =='4'){
				document.getElementById("c35").className = "day0"+term;
			}
		}
	},

	unDrawTerm : function(term) {
		obj = CalendarInfo["term"+term];
		if(obj!=null && obj.length) {
			
			for(i=0; i<obj.length; i++)
			{
				c = CalendarInfo.startIndex + parseInt(obj[i],10) - 1;
				if(i == 0 && obj[i] >= 28){
					idx = CalendarInfo.startIndex - 1;
					document.getElementById("c"+idx).className = "";
				}
				if(c % 7 == 1)
					document.getElementById("c"+c).className = "sunday";
				else if(c % 7 == 0)
					document.getElementById("c"+c).className = "saturday";
				else
					document.getElementById("c"+c).className = "";
			}
			
			if(Calendar.yyyy+Calendar.mm == '201109'){
				document.getElementById("c35").className = "saturday";
			}
			
		}
	},

	prev : function() {
		Calendar.unPaint();
		if(Calendar.mm=="01") {
			Calendar.yyyy = "" + (parseInt(Calendar.yyyy,10)-1);
			Calendar.mm = "12";
		} else {
			t = parseInt(Calendar.mm,10)-1;
			Calendar.mm = "" + ((t<10) ? "0" + t : "" + t);
		}
		Calendar.load();
	},

	next : function() {
		Calendar.unPaint();
		if(Calendar.mm=="12") {
			Calendar.yyyy = "" + (parseInt(Calendar.yyyy,10)+1);
			Calendar.mm = "01";
		} else {
			t = parseInt(Calendar.mm,10)+1;
			Calendar.mm = "" + ((t<10) ? "0" + t : "" + t);
		}
		Calendar.load();
	},

	termOver : function(term) {
		if(Calendar.term!=term) {
			img = eval("document.images.tab0" + term);
			img.src = "/images/common/left/day0" + term + "_on.gif";
		}
	},

	termOut : function(term) {
		if(term>0 && Calendar.term!=term) {
			img = eval("document.images.tab0" + term);
			img.src = "/images/common/left/day0" + term + "_off.gif";
		}
	}
};

function loadJavascript(url, callback, charset) {
    var head= document.getElementsByTagName('head')[0];
    var script= document.createElement('script');
    script.type= 'text/javascript';
    if (charset != null) {
        script.charset = "euc-kr";
    }
    var loaded = false;
    script.onreadystatechange= function () {
        if (this.readyState == 'loaded' || this.readyState == 'complete') {
            if (loaded) {
                return;
            }
            loaded = true;
            callback();
        }else{
        	return;
        }
    }
    script.onload = function () {
        callback();
    }

	script.src = url;
	head.appendChild(script);
}
