var _name;
function julianDay( Y, M, D ){	
	var y,m,d;	
	y=parseInt(Y);
	m=parseInt(M);
	d=parseInt(D);	
	var jy,ja,jm;	
	if( y==0 ){
		return "invalid";
	}	
	if( y==1582 && m==10 && d>4 && d<15 ){
		return "invalid";
	}	
	if(y<0) y++;
	if(m>2){
		jy=y;
		jm=m+1;
	}else{
		jy=y-1;
		jm=m+13;
	}	
	var julian = Math.floor( Math.floor(365.25*jy) + Math.floor(30.6001*jm) + d + 1720995 );
	var gregorianStart = 15 + 31*( 10 + 12*1582 );	
	if( d + 31*(m + 12*y) >= gregorianStart ){
		ja = Math.floor(0.01*jy);
		julian += 2 - ja + Math.floor(0.25*ja);
	}	
	return julian;	
}
function julianGregorianDate( julian ){	
		
}
function dayOfWeek( julian ){	
	return (julian+1)%7;	
}
function padWithZeros(number,length) {
	 var str = "" + number;
	 while( str.length < length ) str = '0' + str;
	 return str;
}
function formatISODate( year, month, day ){	
	var delimiter=".";
	if(year<0){
		year= -year; year = "-" + padWithZeros(year,4);
	}else{
		year = padWithZeros(year,4);
	}
	return year + delimiter + padWithZeros(month,2) + delimiter + padWithZeros(day,2);
}       
function setToday( objectId ){	 
		
}
function callCalendar( objectId ,name){	
	_name = name;
	var dateString=document.getElementById( objectId ).value;
	var re = new RegExp( '[/\.\ ]', 'gi' );
	dateString=dateString.replace( re, "-" );
	dateComponents=dateString.split("-");
	var year,month,day;
	year=dateComponents[0];
	month=dateComponents[1];
	day=dateComponents[2];
	generateCalendar( year, month, day, objectId,name);	
}
function setDate(day){
	year =document.getElementById("currentYear").value;
	month=document.getElementById("currentMonth").value;
	var today = new Date();
         var currentYear = today.getFullYear();
         var currentMonth = today.getMonth()+1;
         var currentDate = today.getDate();	
	isoDateString=formatISODate(year,month,day);
	var lanmu_name=encodeURIComponent(_name);
	/*if(currentYear==year&&currentMonth==month&&currentDate==day){
		_url = "/news/todaynews.shtml";
	}else{
		//_url = "/news/"+ year +"/" + year +"-"+ month +"-"+ day +".shtml";
		_url="/gb/xwbk/mrjd/";
	}*/
	month = (month<10)?("0"+month):month;
	day = (day<10)?("0"+day):day;


	window.open("xwrl.php?year="+year+"&month="+month+"&day="+day,"_blank","");
}
function previousYear(){	
	year =parseInt(document.getElementById("currentYear").value);
	month=parseInt(document.getElementById("currentMonth").value);
	day  =parseInt(document.getElementById("currentDay").value);
	destination = document.getElementById("destinationId").value;
	year -= 1;	
	if( year==0 ) year = -1;	
	window.generateCalendar(year,month,day,destination);
}
function previousMonth(){	
         year =parseInt(document.getElementById("currentYear").value);
	month=parseInt(document.getElementById("currentMonth").value);
	day  =parseInt(document.getElementById("currentDay").value);
	destination = document.getElementById("destinationId").value;
	month -= 1;
	if(month<1){ 
		month = 12;
		year -= 1;
		if( year==0 ) year = -1;
	}
	window.generateCalendar(year,month,day,destination);
}
function nextMonth(){	
         year =parseInt(document.getElementById("currentYear").value);
	month=parseInt(document.getElementById("currentMonth").value);
	day  =parseInt(document.getElementById("currentDay").value);
	destination = document.getElementById("destinationId").value;
	month += 1;
	if(month>12){
		month = 1;
		year += 1;
		if( year==0 ) year = 1;
	}
	window.generateCalendar(year,month,day,destination);
}
function nextYear(){
         year =parseInt(document.getElementById("currentYear").value);
	month=parseInt(document.getElementById("currentMonth").value);
	day  =parseInt(document.getElementById("currentDay").value);
	destination = document.getElementById("destinationId").value;
	year += 1;
	// Remember that there was no year zero:
	if( year==0 ) year = 1;
	window.generateCalendar(year,month,day,destination);
}
function generateCalendar( Y, M, D, targetId){
    var Month = new Array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");		
	var Day = new Array("日","一","二","三","四","五","六");
	var daysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var daysInAWeek=7;
	var OutputString;
	var currentYear;
    var currentMonth;
    var currentDate;	
	var today = new Date();
        currentYear = today.getFullYear();
        currentMonth = today.getMonth()+1;
        currentDate = today.getDate();
	if( Y=="" || isNaN(Y) ){
		thisYear=today.getFullYear();
	}else{
		thisYear=parseInt(Y);
	}
	if( M=="" || isNaN(M) ){
		thisMonth=today.getMonth()+1;
	}else{
		thisMonth=parseInt(M);
		if(thisMonth<1) thisMonth=1;
		if(thisMonth>12) thisMonth=12;
	}
	if( D=="" || isNaN(D) ){
		thisDay=today.getDate();
	}else{
		thisDay=parseInt(D);
		if(thisDay<0) thisDay=1;
		if(thisDay>31) thisDay=31;
	}	
	if ((thisYear % 4) == 0){
		daysInMonth[ 1 ] = 29;
		if((thisYear % 100) == 0 && (thisYear % 400) != 0){
			daysInMonth[ 1 ] = 28;
		}
	}	
	OutputString = "";
		OutputString += "<table bgcolor=#ffffff width=147 border=0 cellspacing=0 cellpadding=0><tr><td><table width=147 height=20 border=0 cellpadding=0 cellspacing=0>";
		OutputString += "<tr class=song12b align=center><td width=25><div onclick=\"previousYear()\" style=\"cursor:hand\"><font color=#990000>&lt;&lt;</font></div></td>";
		OutputString += "<td width=15><div onclick=\"previousMonth()\" style=\"cursor:hand\"><font color=#FF660000>&lt;</font></div></td>";
		if (thisYear < 0 ) yearString = -thisYear + " BCE";
		else if (thisYear < 1000) yearString = thisYear + " CE";
		else yearString = thisYear;
		OutputString += "<td><div align=center><font color=#996600>" + yearString + "年" + Month[thisMonth-1] + "</font></div></td>";
                  if((currentYear==thisYear&&currentMonth>thisMonth)||(currentYear>thisYear)){
		OutputString += "<td width=15><div style=\"cursor:hand\" onclick=\"nextMonth()\"><font color=#FF6600>&gt;</font></div></td>";
                  }else{
                  OutputString += "<td width=15><div><font color=#FF6600>&gt;</font></div></td>";
                  }
                  if(currentYear>thisYear){
		OutputString += "<td width=25><div style=\"cursor:hand\" onclick=\"nextYear()\"><font color=#990000>&gt;&gt;</font></div></td>";
                  }else{
                  OutputString += "<td width=25><div><font color=#990000>&gt;&gt;</font></div></td>";
                  }
		OutputString += "</tr></table></td></tr>";
		OutputString += "<tr><td><table width=147 height=20 border=0 cellpadding=0 cellspacing=0 class=song12b style='border-right:#cccccc 1px solid'><tr align=center>";
		for (i=0;i<daysInAWeek;i++){
			OutputString += "<td width=21 style='border-top:#cccccc 1px solid; border-left:#cccccc 1px solid'><font color=#996600>" + Day[i] + "</font></td>";
		}
		OutputString += "</tr></table></td></tr>";
		OutputString += "<tr><td><table width=147 height=20 border=0 cellpadding=0 cellspacing=0 class=song12b style='border-bottom:#cccccc 1px solid;border-right:#cccccc 1px solid'><tr>";
		var firstDay = dayOfWeek(julianDay(thisYear,thisMonth,1));
		for (i=0;i<firstDay;i++){
			OutputString += "<td width=21 style='border-top:#cccccc 1px solid;border-left:#cccccc 1px solid'>&nbsp;</td>"
		}
                  for (d=1;i<daysInAWeek;i++,d++){
                           if(d==5 && thisMonth==10 && thisYear==1582) d+=10;
                           OutputString += "<td width=21 style='border-top:#cccccc 1px solid;border-left:#cccccc 1px solid'";
                           if(d==thisDay) OutputString += " bgcolor=#ffcc00";
                           if((currentYear>thisYear)||(currentMonth>thisMonth)||(currentMonth=thisMonth&&d<=currentDate)){
                           OutputString += "><div align=center style='cursor:hand' onclick=\"setDate(" + d + ")\"><font color=#996600>" + d + "</font></div></td>";
                           }else{
                           OutputString += "><div align=center><font color=#996600>" + d + "</font></div></td>";
                           }
		}
                  var lastDayOfMonth=daysInMonth[thisMonth-1];
		for (j=1;j<6 && d<=lastDayOfMonth;j++){
			OutputString += "</tr><tr>";
			for (i=0;i<daysInAWeek && d<=lastDayOfMonth;i++,d++){
				OutputString += "<td width=21 style='border-top:#cccccc 1px solid;border-left:#cccccc 1px solid'";
                           if(d==thisDay) OutputString += " bgcolor=#ffcc00";
                           if((currentYear>thisYear)||(currentMonth>thisMonth)||(currentMonth=thisMonth&&d<=currentDate)){
                           OutputString += "><div align=center style='cursor:hand' onclick=\"setDate(" + d + ")\"><font color=#996600>" + d + "</font></div></td>";
                           }else{
                           OutputString += "><div align=center><font color=#996600>" + d + "</font></div></td>";
                           }
			}
			for (;i<daysInAWeek;i++){
				OutputString += "<td width=21 style='border-top:#cccccc 1px solid;border-left:#cccccc 1px solid'>&nbsp;</td>"
			}
		}
		OutputString += "</tr></table></td></tr></table>";
		OutputString += "<input type=\"hidden\" id=\"currentYear\" value=\"" + thisYear + "\">";
		OutputString += "<input type=\"hidden\" id=\"currentMonth\" value=\"" + thisMonth + "\">";
		OutputString += "<input type=\"hidden\" id=\"currentDay\" value=\"" + thisDay + "\">";
		OutputString += "<input type=\"hidden\" id=\"destinationId\" value=\"" + targetId + "\">";
		OutputString += " ";
		document.all.rl.innerHTML = OutputString;
}
