/*
* G_plugin_calender_minYear = 2008;
* G_plugin_calender_maxYear = 2009
* G_plugin_calender_ajax = '/path/ajaxCalender.asp';
* G_plugin_calender_url = './xxxxx.asp?d={date}&v={value}&doID={#num}&title={#tit}&xx={#xxx}';
*/
var G_plugin_calender_c,G_plugin_calender_minYear,G_plugin_calender_maxYear,G_plugin_calender_ajax,G_plugin_calender_url,data_;
G_plugin_calender_c = '#e-calender';

var Now_ = new Date();

function fix(n) {return (n < 10) ? "0" + n : n;}
function Cai_DateAdd(interval,number,date){
	number = parseInt(number);
	if (typeof(date)=="string"){var date = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2])}
	if (typeof(date)=="object"){var date = date}
	switch(interval){
	case "y":return new Date(date.getFullYear()+number,date.getMonth(),date.getDate()); break;
	case "m":return new Date(date.getFullYear(),date.getMonth()+number,checkDate(date.getFullYear(),date.getMonth()+number,date.getDate())); break;
	case "d":return new Date(date.getFullYear(),date.getMonth(),date.getDate()+number); break;
	case "w":return new Date(date.getFullYear(),date.getMonth(),7*number+date.getDate()); break;
	}
}
function checkDate(year,month,date){
	var enddate = ["31","28","31","30","31","30","31","31","30","31","30","31"];
	var returnDate = "";
	if (year%4==0){enddate[1]="29"}
	if (date>enddate[month]){returnDate = enddate[month]}else{returnDate = date}
	return returnDate;
}
function WeekDay(date){
	var theDate;
	if (typeof(date)=="string"){theDate = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2]);}
	if (typeof(date)=="object"){theDate = date}
	return theDate.getDay();
}
function Cai_calender(date){
	var lis = "";
	var now;
	var current = date;
	
	if (typeof(date)=="string"){
		selectDate = date.split("-");
		var year = selectDate[0];
		var month = parseInt(selectDate[1])-1+"";
		var date = selectDate[2];
		now = new Date(year,month,date);
	}else if (typeof(date)=="object"){
		now = date;
	}
	var lastMonthEndDate = Cai_DateAdd("d","-1",now.getFullYear()+"-"+now.getMonth()+"-01").getDate();
	var lastMonthDate = WeekDay(now.getFullYear()+"-"+now.getMonth()+"-01");
	var thisMonthLastDate = Cai_DateAdd("d","-1",now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-01");
	var thisMonthEndDate = thisMonthLastDate.getDate();
	var thisMonthEndDay = thisMonthLastDate.getDay();
	var todayObj = new Date();
	today = todayObj.getFullYear()+"-"+todayObj.getMonth()+"-"+todayObj.getDate();
	var hotYear = now.getFullYear();
	var hotMonth = fix(now.getMonth()+1);
	var hotMonth1 = now.getMonth()+1;
	
	//ajax get hotday events
	$.get(G_plugin_calender_ajax, { "y": hotYear, "m": hotMonth }, function(data){
		if(data){
			$(G_plugin_calender_c).html("Loading...");
			data = eval("(" + data + ")");
			showDate(data);
			data_ = data;
		}
		else {
			showDate();
		}
	});
	
	function showDate(data){
		for (i=0; i<lastMonthDate; i++){  // Last Month's Date
			lis = '<li class="lastMonthDate">'+lastMonthEndDate+'</li>' + lis;
			lastMonthEndDate--;
		}
		var x,title_,title_1;
		var title_1=now.getFullYear()+"-"+hotMonth1;
		
		for (i=1; i<=thisMonthEndDate; i++){ // Current Month's Date
			x=1;
			title_ = title_1+'-'+i;
			
			if(today == now.getFullYear()+"-"+ now.getMonth() +"-"+i){ x=2;}//today
			if(data[i]) x=3;//date in data
			//if(current == now.getFullYear()+"-"+ hotMonth1 +"-"+i){ x=4;}//current day
			
			lis += '<li pdg="'+x+'"><span title="'+title_+'">'+i+'</span></li>';
		}
		var j=1;
		for (i=thisMonthEndDay; i<6; i++){  // Next Month's Date
			lis += '<li class="nextMonthDate">'+j+'</li>';
			j++;
		}
		showDateList(lis);
	}
	//ajax get hotday events
	
	var CalenderTitle = "<a href='javascript:void(0)' class='NextMonth' onclick=Cai_calender(Cai_DateAdd('m',1,'"+now.getFullYear()+"-"+now.getMonth()+"-"+now.getDate()+"'),this) title='下个月'>&raquo;</a>";
	CalenderTitle += "<a href='javascript:void(0)' class='LastMonth' onclick=Cai_calender(Cai_DateAdd('m',-1,'"+now.getFullYear()+"-"+now.getMonth()+"-"+now.getDate()+"')) title='上个月'>&laquo;</a>";
	CalenderTitle += "<span class='selectThisYear'><a href='javascript:void(0)' onclick='CalenderselectYear(this)' title='点击选择年份' >"+now.getFullYear()+"</a></span>年<span class='selectThisMonth'><a href='javascript:void(0)' onclick='CalenderselectMonth(this)' title='点击选择月份'>"+(parseInt(now.getMonth())+1).toString()+"</a></span>月";

	function showDateList(lis){
		$(G_plugin_calender_c).hide();
		$(G_plugin_calender_c).html('<div class="calender"><div class="calenderTitle">'+ CalenderTitle +'</div><div class="calenderBody"><ul class="day"><li>日</li><li>一</li><li>二</li><li>三</li><li>四</li><li>五</li><li>六</li></ul><ul id="thisMonthDate" class="date">'+lis+'</ul></div><div class="calenderBottom"><span id="indexArticle">TOGSUN</span><a href="javascript:Cai_calender(new Date());">本月</a></div></div>').fadeIn("normal");
		
		$('#thisMonthDate li[pdg=2] span').addClass('today'); 
		$('#thisMonthDate li[pdg=3] span').addClass('hot');
		$('#thisMonthDate li[pdg=3] span').attr("onclick",'click_url($(this).html(),$(this).attr("title"))'); 
		$('#thisMonthDate li[pdg=4] span').addClass('current');
	}
}
function CalenderselectYear(obj){
	var maxY,opt = "";
	var thisYear = obj.innerHTML;
	if(G_plugin_calender_maxYear){
		maxY = G_plugin_calender_maxYear
	} else{
		maxY = Now_.getFullYear();
	}
	if(!G_plugin_calender_minYear){
		G_plugin_calender_minYear = maxY -1;
	}
	for (i=G_plugin_calender_minYear; i<=maxY; i++){
		if (i==thisYear){
			opt += '<option value="'+i+'" selected="selected">'+i+'</option>';
		}else{
			opt += '<option value="'+i+'">'+i+'</option>';
		}
	}
	opt = '<select onblur="selectThisYear(this)" onchange="selectThisYear(this)" style="font-size:11px">'+opt+'</select>';
	$('span.selectThisYear').html(opt);
}
function selectThisYear(obj){
	Cai_calender(obj.value+"-"+$('span.selectThisMonth a').html()+"-1");
}
function CalenderselectMonth(obj){
	var opt = "";
	var thisMonth = obj.innerHTML;
	for (i=1; i<=12; i++){
		if (i==thisMonth){
			opt += '<option value="'+i+'" selected="selected">'+i+'</option>';
		}else{
			opt += '<option value="'+i+'">'+i+'</option>';
		}
	}
	opt = '<select onblur="selectThisMonth(this)" onchange="selectThisMonth(this)" style="font-size:11px">'+opt+'</select>';
	$('span.selectThisMonth').html(opt);
}
function selectThisMonth(obj){
	Cai_calender($('span.selectThisYear a').html()+"-"+obj.value+"-1");
}
function click_url(day,date){
	var url_,re,re_,arr,r_;
	url_ = G_plugin_calender_url;
	if(/{#/.test(url_)) {
		r_ = [];
		re = /{#(\w+)}/g;
		while ((arr = re.exec(url_)) != null)
			r_.push(arr);
		for (var i_ = 0; i_ < r_.length; i_++) {
			url_ = url_.replace(r_[i_][0], data_[day][r_[i_][1]]);
		}
	} else{
		url_ = url_.replace('{value}', data_[day]);
	}
	url_ = url_.replace('{date}', date);
	location.href = url_;
}