/********************************************共用的方法(start)********************************************/
var gsAgent = navigator.userAgent.toLowerCase();
var gIsOpera = gsAgent.indexOf("opera") > -1;

var gIsIE = ( gsAgent.indexOf("compatible") > -1 && !gIsOpera ) || gsAgent.indexOf("msie") > -1;


//global base function
var gd = document;
function Gel(id, ob) {
	return ( ob || gd ).getElementById(id);
}

function GelTags(tag, ob) {
	return ( ob || gd ).getElementsByTagName(tag);
}

function StrReplace(s, o, d, mode) {
	return s.replace(new RegExp( RegFilter(o), mode ), d);
}
function RegFilter( str ) {
	return str.replace( /([\^\.\[\$\(\)\|\*\+\?\{\\])/ig, "\\$1" ) ;
}

function SetClass( o, v ) {
	if ( o && o.className != v )
		o.className = v;
}


function SetListCheck( input, checked, mouseon ) {
	if ( input.type != "checkbox" )
		return;

	if ( checked == null ) {
		checked = input.checked;
	}
	else {
		input.checked = checked;
	}

	var obj = input.parentNode.parentNode;
	//for table
	if ( obj.tagName == "TR" )
		obj = obj.parentNode.parentNode;

	var tmpClassName = obj.className;
	if ( tmpClassName == "B" ) {
		tmpClassName = checked ? "B" : "";
	}
	else {
		tmpClassName = StrReplace( tmpClassName, " B", "" ) + ( checked ? " B" : "" );
	}

	SetClass( obj, tmpClassName );

	if ( checked )
		ListMouseOut.call( obj );
}


function DoCheck(e, t, isSelectMore) {
	e = e ? e : event;
	var obj = t ? t : ( e.srcElement || e.target );
	var w = GetMainWin();
	if ( !obj || !w )
		return ;

	if( obj.className == "one" || obj.className == "all" )
		CA( obj );

	SetListCheck( obj, null, true );

	//shift键 多选
	if ((e && e.shiftKey || isSelectMore) && w.gCurSelObj && w.gCurSelObj != obj && obj.checked == w.gCurSelObj.checked) {
		var s = w.GelTags("input");
		var c = 0;
		var l = s.length;
		for (var i = 0; i < l; i++) {
			if (s[i].type != "checkbox")
				continue;

			if ((s[i] == w.gCurSelObj || s[i] == obj) && c++ == 1)
				break;

			if (c == 1)
				SetListCheck(s[i], obj.checked);
		}
	}
	w.gCurSelObj = obj;
}
/********************************************共用的方法(end)********************************************/
/********************************************日历的方法(start)********************************************/
var lunarArr;
function NotepadListInit()
{
        var d = GelTags("table");
        var fs = [function() {this.className=StrReplace(this.className," noroll"," rollbg");}, function() {this.className=StrReplace(this.className," rollbg"," noroll");}];
        for (var i = d.length - 1; i >= 0; i--) {
                var o = d[i];
                if (o.className == "i M pointer" || o.className == "i F pointer") {
						o.className += " noroll";
						if (gIsIE) {
                                o.onmouseenter = fs[0];
                                o.onmouseleave = fs[1];
                        }
                        else {
                                o.onmousemove = fs[0];
                                o.onmouseout = fs[1];
                        }
                        GelTags("input", o)[0].onclick = DoCheck;
                        o = GelTags("p", o);
						if ( o.length > 0 )
	                        o = o[o.length - 1];
                }
        }
}
function ShowBorder(y,m)
{
  var i;
  lunarArr = new initMonth(y,m);
  for (i=1;i<=CalcDays(y,m);i++)
  {
	if ( bBorderDay(y,m,i) )
	  document.getElementById ("day_"+i).innerHTML="<a style='COLOR: #ff0000; TEXT-DECORATION: underline;'>"+i+"</a>";
/*	if (lunarArr[i-1].hl==1){
		var oa = document.getElementById ("day_"+i).getElementsByTagName("a");
		if(oa.length>0)
			oa[0].className="";
		else
			document.getElementById ("day_"+i).className="";
	}*/
  }
}
function isLeapYear(p_year)
{
 return ((p_year%400==0) || ((p_year%4==0) && (p_year%100!=0)));
}
var np_mapHasData = null;
function parseDataStr2Arr()
{
  if(np_mapHasData) return np_mapHasData;

  var arrStr1,arrStr2,i,j,k=0;
  var base_y=begin_y;
  var base_m=begin_m;
  var str,y=begin_y,m=begin_m;
  var arrInt={};
  arrStr1=BorderDays.split("|"); 
  for ( i=0,len=arrStr1.length; i<len; i++ ) //月循环
  {
			if (arrStr1[i]!="")
			{
			  if(m<10&&m>0) m="0"+m;
			  arrStr2=arrStr1[i].split(",");
			  for (j=0,len2=arrStr2.length;j<len2;j++)
			  {
					str=y+""+m;
					str+=arrStr2[j];
					arrInt[str] = 1;
			  }
			}
			if(++m > 12) 	{
  			  m=1;
  			  ++y;
  		    }
  }
  np_mapHasData = arrInt;
  return arrInt;
}
function np_FillZero(m)
{
	return ((m<10)?("0" + m):(m+""));
}
function bBorderDay( y,m,d )
{
	
  var str= y + np_FillZero(m) + np_FillZero(d);
  var arr=parseDataStr2Arr();
  return (null != arr[str]);
}
var month_array = [null,31,null,31,30,31,30,31,31,30,31,30,31];
function CalcDays(year,month)
{
	if(month==2) return isLeapYear(year)?29:28;
	return month_array[month];
}
function GetWeekday(p_year,p_month)
{
 var Allday;
 Allday = 0;
 if (p_year>2000)
 { 
  for (i=2000 ;i<p_year; i++) 
    Allday += (isLeapYear(i)?366:365);
  for (i=1; i<p_month; i++)  {
  	Allday += CalcDays(p_year,i);
  }
 }
 return (Allday+6)%7;
}
function chooseday(p_year,p_month,p_day)
{
 var Firstday;
 var completely_date;
 Firstday = GetWeekday(p_year,p_month);
 drawCalender(p_year,p_month,p_day,Firstday);
 ShowBorder(p_year,p_month);
}
function nextmonth(p_year,p_month)
{
 if (p_month==12)
  chooseday(p_year+1,1,0);
 else
  chooseday(p_year,p_month+1,0);
}
function prevmonth(p_year,p_month)
{
 if (p_year==2001&&p_month==1)
	return;
 if (p_month==1)
  chooseday(p_year-1,12,0);
 else
  chooseday(p_year,p_month-1,0);
} 
function GetDayHtml(s){
	return "<td style='padding:2px 0 2px 0;border:none;'><font color=#acacac >" + s + "</font></td>";
}
function drawCalender(p_year,p_month,p_day,Firstday)
{
 var Month_Day;
 Month_Day= CalcDays(p_year,p_month);
 /*
 if (p_year==2001&&p_month==1)
  left="&nbsp;&nbsp;";
 else
  left="&lt;&lt;";
 */
 var str = "";
 str = "<Table cellpadding=2 cellspacing=3 border=0 width=80% align=center valign=top style='margin:2px 0 0 0;'>"; 
 str += "<tr><td width=20 align=center style='font-size:12px;padding:2px 0 2px 0;border:none;' class='f_family pointer' onclick=prevmonth("+p_year+"," + p_month + ")><img src='/images/nextfd.gif'/></td>";
 str += "<td width=120 align=center style='padding:2px 0 2px 0;border:none;'>" +p_year+"年"+p_month + "月</td>";
 str += "<td width=20 style='font-size:12px;padding:2px 0 2px 0;border:none;' class='f_family pointer' onclick=nextmonth("+p_year+","+p_month+")><img src='/images/prefd.gif'/></td></tr>";
 str +=  "<tr><td align=center width=100% colspan=3 style='padding:2px 0 2px 0;border:none;'>";
 str +=  "<table cellpadding=0 cellspacing=0 border=0 width=100%>";
 str += "<Tr align=center style='color:#ccc' > ";
 var chineseDays = "日一二三四五六";
 for(var i=0,len=chineseDays.length;i<len;++i)
    str += GetDayHtml(chineseDays.charAt(i));
 str += "</tr><tr>";
 
 for (i=1; i<=Firstday; i++)
  str += "<Td align=center style='padding:2px 0 2px 0;border:none;'>&nbsp;</Td>";
 
 for (i=1; i<=Month_Day; i++)
 {
  if ((p_year==today_y) && (p_month==today_m) && (i==today_d))
  	bgColor = "bg_cand";
  else{
   if ((p_year==select_y) && (p_month==select_m) && (i==select_d))
     bgColor = "bg_cand1";	// 选中日期
   else
     bgColor = "";
  }
  //if (p_day==i) bgColor = "#f1f1f1";
  str += "<td style='font-size:11px;padding:2px 0 2px 0;border:none;' align=center class='" + bgColor + "' id='day_"+i+"'";
  str += " onmouseover=showLunar(" + p_year + "," + p_month + "," + i + ") onmouseout=hideLunar("+i+") onclick=listdate(" + p_year + "," + p_month + "," + i + ")>" + i + "</td>";
  Firstday = (Firstday + 1)%7;
  if ((Firstday==0) && (i!=Month_Day)) str += "</tr><tr>";
 }
 if (Firstday!=0) 
 {
  for (i=Firstday; i<7; i++) 
   str += "<td align=center style='font-size:11px;padding:2px 0 2px 0;border:none;'>&nbsp;</td>";
   str += "</tr>";
 }
 str += "</tr></table></td></tr></table>";
 document.getElementById("cc").innerHTML = str; 
}
function listdate(p_year,p_month,p_day)
{
  var str;
  chooseday(p_year,p_month,p_day);
  
  if ( bBorderDay(p_year,p_month,p_day) )
  {
    str = ""+p_year;
    str += "-"+np_FillZero(p_month);
    str += "-"+np_FillZero(p_day);
    window.location = '/blog.do?method=archive&dt=' + str;
  }
}
function Calender()
{
 var Firstday;
 var y=parseInt(datestr.substr(0,4),10);
 var m=parseInt(datestr.substr(4,2),10);
 var d=parseInt(datestr.substr(6,2),10);
 var dat = [[y,m,d],[today_y,today_m,today_d]];
 var dd = dat[(datestr.length==8&&y>2000&&m>0&&m<13&&d>0&&d<32) ? 0 :1];
 select_y = dd[0];
 select_m = dd[1];
 select_d = dd[2];
 Firstday = GetWeekday(select_y,select_m);
 drawCalender(select_y,select_m,0,Firstday);
}
/********************************************日历的方法(end)********************************************/
/********************************************农历的方法(start)********************************************/
var lunarInfo=new Array(
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0)
var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
var Animals=new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至")
var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758)
var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十','十一','十二')
var nStr2 = new Array('初','十','廿','卅','　')
var lFtv = new Array(
"0101*春节",
"0115 元宵节",
"0505 端午节",
"0707 七夕节",
"0815 中秋节",
"0909 重阳节",
"1208 腊八节",
"1224 小年",
"0100*除夕")
var wFtv = new Array(
"0520 母亲节",
"0630 父亲节",
"1144 感恩节")
var sFtv = new Array(
"0101*元旦",
"0214 情人节",
"0308 妇女节",
"0312 植树节",
"0401 愚人节",
"0501 劳动节",
"0504 青年节",
"0601 儿童节",
"0701 建党节",
"0801 建军节",
"0910 教师节",
"1001*国庆节",
"1225 圣诞节")
function lYearDays(y){
	var i, sum = 348 
	for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0 
	return(sum+leapDays(y)) 
} 
function leapDays(y) { 
	if(leapMonth(y))  return((lunarInfo[y-1900] & 0x10000)? 30: 29) 
	else return(0) 
} 
function leapMonth(y) { 
	return(lunarInfo[y-1900] & 0xf) 
} 
function monthDays(y,m) { 
	return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 ) 
} 
function Lunar(objDate) { 
	var i, leap=0, temp=0 
	var baseDate = new Date(1900,0,31) 
	var offset   = (objDate - baseDate)/86400000 
	this.dayCyl = offset + 40 
	this.monCyl = 14 
	for(i=1900; i<2050 && offset>0; i++) { 
		temp = lYearDays(i) 
		offset -= temp 
		this.monCyl += 12 
	} 
	if(offset<0) { 
		offset += temp; 
		i--; 
		this.monCyl -= 12 
	} 
	this.year = i 
	this.yearCyl = i-1864 
	leap = leapMonth(i) //闰哪个月 
	this.isLeap = false 
	for(i=1; i<13 && offset>0; i++) { 
	if(leap>0 && i==(leap+1) && this.isLeap==false) 
		{ --i; this.isLeap = true; temp = leapDays(this.year); } 
	else 
		{ temp = monthDays(this.year, i); } 
	if(this.isLeap==true && i==(leap+1)) this.isLeap = false 

		offset -= temp 
		if(this.isLeap == false) this.monCyl ++ 
	} 
	if(offset==0 && leap>0 && i==leap+1) 
		if(this.isLeap) 
			{ this.isLeap = false; } 
		else 
			{ this.isLeap = true; --i; --this.monCyl;} 

	if(offset<0){ offset += temp; --i; --this.monCyl; } 
	this.month = i 
	this.day = offset + 1 
}
function cyclical(num) { 
	return(Gan[num%10]+Zhi[num%12]) 
} 
function sTerm(y,n) { 
	var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000  ) + Date.UTC(1900,0,6,2,5) ) 
	return(offDate.getUTCDate()) 
} 
function cDay(d){ 
	var s; 
	switch (d) { 
		case 10: 
			 s = '初十'; break; 
		case 20: 
			 s = '二十'; break; 
		break; 
		case 30: 
			 s = '三十'; break; 
		break; 
		default : 
		 s = nStr2[Math.floor(d/10)]; 
		 s += nStr1[d%10]; 
	}
	return(s); 
}
var timer = null;
function showLunar(y,m,d)
{
	var o = lunarArr[d-1];
	var str = "<div class='toolbg bd' style='height:auto;width:100px;padding:4px 6px 2px 6px;line-height:18px'>农历："+o.sShow+"<br><b>"+o.term;
	
	for(var i = 0; i < o.lf.length; i++ ) {
		str += " "+o.lf[i]
	}
	for(var j = 0; j < o.sf.length; j++ ) {
		str += " "+o.sf[j]
	}
	str += "</b></div>";
	var s = Gel("lunarshow");
	s.style.visibility = "hidden";
	var s2 = Gel("day_"+d);
	
	var ol = 0, ot = 0, oh = s2.offsetHeight;
	for (; s2;s2 = s2.offsetParent) {
		ol += s2.offsetLeft;
		ot += s2.offsetTop;
	}
	if (gIsIE) {
		s.style.left = ol-45;
		s.style.top = ot + oh;
	} else {
		s.style.left = ol-45 + "px";
		s.style.top = ot + oh + "px";
	}
	
	s.style.background = "#EAEFCB";
	s.innerHTML=str;
	Gel("day_"+d).bgColor='#EAEFCB';
	timer = window.setTimeout('Gel("lunarshow").style.visibility = "visible";timer=null',300);
}
function hideLunar(d)
{
	if(timer)
	{
		clearTimeout(timer);
		timer = null;
	}
	Gel("lunarshow").style.visibility = "hidden";
	Gel("day_"+d).bgColor='';
}
function initMonth(y,m)
{
	m--;
   var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2 
   var lDPOS = new Array(3) 
   var n = 0 
   var firstLM = 0 
   sDObj = new Date(y,m,1)            //当月一日日期 
   this.length    = CalcDays(y,m+1)    //国历当月天数 
   var firstWeek = sDObj.getDay()    //国历当月1日星期几 
   for(var i=0;i<this.length;i++) { 
      if(lD>lX) { 
         sDObj = new Date(y,m,i+1)    //当月一日日期 
         lDObj = new Lunar(sDObj)     //农历 
         lY    = lDObj.year           //农历年 
         lM    = lDObj.month          //农历月 
         lD    = lDObj.day            //农历日 
         lL    = lDObj.isLeap         //农历是否闰月 
         lX    = lL? leapDays(lY): monthDays(lY,lM) //农历当月最後一天 

         if(n==0) firstLM = lM 
         lDPOS[n++] = i-lD+1 
      }
	var o={};
	o.lY = lY           //农历年 
	o.AY = Animals[(lY-4)%12]	//生肖
	o.lM = lM          //农历月 
	o.sM = nStr1[lM]			
	o.lD = lD++;		//农历日
	o.sD = cDay(o.lD)  
	if(o.lD==1) //显示农历月 
		o.sShow = (lDObj.isLeap?'闰':'')+o.sM+'月'+(monthDays(o.lY,o.lM)==29?'小':'大'); 
	else //显示农历日 
		o.sShow = o.sM+"月"+o.sD; 
	o.gY = cyclical(lDObj.yearCyl);
	o.gM = cyclical(lDObj.monCyl);
	o.gD = cyclical(lDObj.dayCyl++);
	o.sf = []; o.lf=[]; o.term=""; o.hl=0;
	this[i]=o;
	} 
	//节气 
	tmp1=sTerm(y,m*2  )-1 
	tmp2=sTerm(y,m*2+1)-1 
	this[tmp1].term = solarTerm[m*2] 
	this[tmp2].term = solarTerm[m*2+1] 
	if(m==3) this[tmp1].hl = 1 //清明颜色 
	//国历节日 
	for(var i = 0; i < sFtv.length; i++)  {
		if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/)) 
			if(Number(RegExp.$1)==(m+1)) { 
				var o = this[Number(RegExp.$2)-1];
				o.sf[o.sf.length] = RegExp.$4 + ' ';
				o.hl = 1
			} 
	}
	//月周节日 
	for(var j = 0; j < wFtv.length; j++)  {
		if(wFtv[j].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/)) 
			if(Number(RegExp.$1)==(m+1)) { 
				tmp1=Number(RegExp.$2) 
				tmp2=Number(RegExp.$3) 
				var o = this[((firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - firstWeek];
				o.sf[o.sf.length] = RegExp.$5 + ' ';
				o.hl = 1;
			}
	}
	//农历节日 
	for(var k = 0; k < lFtv.length; k++)  {
		if(lFtv[k].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) { 
			tmp1=Number(RegExp.$1)-firstLM 
			if(tmp1==-11) tmp1=1 
			if(tmp1 >=0 && tmp1<n) { 
				tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1 
				if( tmp2 >= 0 && tmp2<this.length) { 
					var o = this[tmp2];
					if ( !o.lf )
						o.lf = [];
					o.lf[o.lf.length] = RegExp.$4 + ' ' 
					o.hl = 1 
				} 
			} 
		} 
	}
}
/********************************************农历的方法(end)********************************************/


