void function(){
	var ca = new Calendar('ca',{cls:'calendar',data:''});
	ca.print('ca');
	ca.bindEvent('monthchange', assignMonth);
	ca.bindEvent('dateclick', assignDate);

	var $ = function(id){
		return typeof(id) == 'string' ? document.getElementById(id) : id;
	}

	var cache_month = [];
	function assignMonth(p_date){
		var tmp = p_date.split('-');
		var tmp_date = tmp[0] + '-' + tmp[1];

/*
		for(var i=cache_month.length-1; i>=0; i--){
			if(cache_month[i].date == tmp_date){
				ca.data = cache_month[i].data;
				ca.print();
				return true;
			}
		}

		* */
		var url = './find_calendar.php?date=' + p_date;
		ajax(url, function(){
			if(this.readyState == 4 && this.status == 200){
				if(this.responseText){
					eval("ca.data = '"+ this.responseText+"'");
					cache_month.push({date:tmp_date, data:ca.data});
					ca.print();

					var dobj = new Date();
					assignDate(tmp_date + '-' + dobj.getUTCDate());
				}
			}
		});
	}

	var cache_date = [];
	function assignDate(p_date){

		/*
		for(var i=cache_date.length-1; i>=0; i--){
			if(cache_date[i].date == p_date){
				$('ev_lst').innerHTML = cache_date[i].data;
				return true;
			}
		}
		* */

		var url = './find_calendar.php?date=' + p_date;
		ajax(url, function(){
			if(this.readyState == 4 && this.status == 200){
				$('ev_lst').innerHTML = this.responseText;
				cache_date.push({date:p_date, data:this.responseText});
			}
		});
	}

	//��ʼ��
	var dobj = new Date()
	var today = dobj.getUTCFullYear() + '-' + (dobj.getUTCMonth()+1) + '-' + dobj.getUTCDate();
	assignMonth(today);
//	assignDate(today);

	document.getElementById('prevyear_btn').onclick = function(){ca.gotoPrevYear()};
	document.getElementById('prevmonth_btn').onclick = function(){ca.gotoPrevMonth()};
	document.getElementById('nextyear_btn').onclick = function(){ca.gotoNextYear()};
	document.getElementById('nextmonth_btn').onclick = function(){ca.gotoNextMonth()};
}();