/**
 * ¹ÎÁÖ´ç ÀÏÁ¤ Á¤º¸¸¦ °¡Á®¿À´Â javascript class
 * 
 * - Author : Jinsu,Ha <hajinsu@geonji.co.kr>
 * - Date   : 2009-09-07
 * - Required Library : prototype 1.6.0.2, obj_util.js
 */

function Calendar(contextPath, callback) {
	this.contextPath = contextPath;	// ÇöÀç ½ÇÇàµÇ´Â ÄÁÅØ½ºÆ®ÀÇ ±âº» °æ·Î¸¦ ÀÔ·Â¹Þ´Â´Ù.
	this.startDayOfWeek = 0;
	this.startDayOfPrevMonth = 0;
	this.lastDayOfMonth = 0;
	this.prevMonth = '';
	this.nextMonth = '';
	this.currentMonth;
	this.success = false;
	this.scheduleArray = new Array();
	this.callback = callback;
}

Calendar.prototype.getCalendar = function(requestDate) {
	this.currentMonth = requestDate;
	var calendarObj = this;
	
	if (this.callback != null && typeof(this.callback.onPrepare) == 'function')
		this.callback.onPrepare(this);
	
	new Ajax.Request(this.contextPath + '/servlet/RetrieveCalendar', {
		'method': 'POST',
		'parameters': 'rd=' + requestDate,
		onSuccess: function(transport) {
			Calendar.updateCalendarInfo(calendarObj, transport.responseXML);
		}
	});
};

Calendar.updateCalendarInfo = function(calendarObj, xmlDoc) {
	// ¿¡·¯¸¦ °Ë»çÇÑ´Ù.
	var schedule = xml2json(xmlDoc.documentElement, "").evalJSON();
	if (schedule.calendar["@error"] == 'true') {
		calendarObj.success = false;
		alert(schedule.calendar.message);
		return;
	}
	
	// ´Þ·Â Á¤º¸¸¦ ¼³Á¤ÇÑ´Ù.
	calendarObj.startDayOfWeek = parseInt(schedule.calendar["@startDayOfWeek"]);
	calendarObj.startDayOfPrevMonth = parseInt(schedule.calendar["@startDayOfPrevMonth"]);
	calendarObj.lastDayOfMonth = parseInt(schedule.calendar["@lastDayOfMonth"]);
	calendarObj.prevMonth = schedule.calendar["@prevMonth"];
	calendarObj.nextMonth = schedule.calendar["@nextMonth"];
	
	// ÀÏÁ¤ Á¤º¸¸¦ ¼³Á¤ÇÑ´Ù.
	calendarObj.scheduleArray.clear();
	var scheduleItemCount = schedule.calendar.schedule["@count"];
	if (scheduleItemCount == 1) {
		calendarObj.scheduleArray.push(schedule.calendar.schedule.item);
	} else {
		for (var i = 0; i < scheduleItemCount; i++) {
			var item = schedule.calendar.schedule.item[i];
			calendarObj.scheduleArray.push(item);
		}
	}
	calendarObj.scheduleArray.push({'@date': "-1"});

	if (calendarObj.callback != null && typeof(calendarObj.callback.onSuccess) == 'function')
		calendarObj.callback.onSuccess(calendarObj);
};

Calendar.prototype.isSuccess = function() {
	return this.success;
};
