﻿
function calendar(objName,name,date,width,height){
	this.objName=objName;
	this.calendarName=name!=null?name.toString():'calendar';
	this.width=width!=null?width:'246';
	this.height=height!=null?height:'100%';
	this.dayName=["S",'M','T','W','T','F',"S"];
	this.nowDate=new Date();
	this.dateTime=date!=null?date:new Date();
	this.str='';
	this.dateTable='';
	this.days=31;
	this.pastDays=0;
	this.generated=false;
	
	this.channel='news';

	this.generate=generate;
	this.getTable=getTable;
	this.focusDate=focusDate;
	this.attachLink=attachLink;
	this.refresh=refresh;
	this.previewMonth=previewMonth;
	this.nextMonth=nextMonth;
	this.setDate=setDate;
	this.afterRefresh=function(){};

	function generate(date){
		this.str='<table id="'+this.calendarName+'" class="cal" cellspacing="0"   bgcolor="#FADAD4" border="0" width="'
			+this.width+'" ><tr bgcolor="#FAE8E4" class="a1"><td onselectstart="return(false)" height="25"><font style="font-size:12px">'
			+this.dayName.join('</td><td onselectstart="return(false)"><font style="font-size:12px">')+'</font></td></tr>';
		this.dateTime=date!=null?new Date(date):this.dateTime;
		this.days=new Date(this.dateTime.getYear(),this.dateTime.getMonth()+1,0).getDate();
		this.pastDays=new Date(this.dateTime.getFullYear()+'/'+(this.dateTime.getMonth()+1)+'/1').getDay();
		this.str+='<tr><td colspan="7" id="'+this.calendarName+'Td" style="filter:blendtrans(duration=0.1)">';
		this.getTable();
		this.str+=this.dateTable+'</td></tr></table>';
		this.generated=true;
		return this.str;
	}
	
	
	function getTable(){
		this.dateTable='<table width="246" height="50" cellpadding="0"   cellspacing="0" bgcolor="#FADAD4"><tr bgcolor="#FFFFFF">'
			+new Array(this.pastDays+1).join('<td></td>');
		for(var i=1;i<=this.days;i++){
		var monthValue = (this.dateTime.getMonth()+1);
		if(monthValue <10) monthValue="0"+monthValue;
		var dayValue = i;
		if(i<10) dayValue ="0"+dayValue;
		
		var openurl = '<td  width="34" id="'+this.calendarName+i+'">'+'<a href="http://www.chinadaily.com.cn/mobile_new'+'/'+this.dateTime.getFullYear()+'-'+monthValue+'/'+dayValue+'/zao.html" target="cal_content"  class="l-a1">'+i+'</a></td>';
		var ropenurl = '<td  width="34" id="'+this.calendarName+i+'">'+'<a href="http://www.chinadaily.com.cn/mobile_new'+'/'+this.dateTime.getFullYear()+'-'+monthValue+'/'+dayValue+'/zao.html" target="cal_content"  class="l-a1"><font color="red">'+i+'</font></a></td>';
		var closeurl='<td id="'+this.calendarName+i+'">'+i+'</td>';
		
		if(this.dateTime.getFullYear() > this.nowDate.getFullYear())
		{
			this.dateTable+=closeurl;
		}
		else
		if(this.dateTime.getFullYear()== this.nowDate.getFullYear())
		{
			if(this.dateTime.getMonth() > this.nowDate.getMonth())
			{
				this.dateTable+=closeurl;
			}
			else
			if(this.dateTime.getMonth() == this.nowDate.getMonth())
			{
				if(i<=this.nowDate.getDate())
				{
					if(i == this.nowDate.getDate())
					{
						this.dateTable+=ropenurl;
					}
					else
					this.dateTable+=openurl;
				}
				else
				{
					this.dateTable+=closeurl;
				}
			}
			else
			{
				this.dateTable+=openurl;
			}
		}
		else
			this.dateTable+=openurl;
				if((i+this.pastDays)%7==0)this.dateTable+='</tr><tr bgcolor="#FFFFFF">';
		}
		for(var i=1;i<=37-this.days-this.pastDays;i++){
			this.dateTable+='<td></td>';
			if((i+this.pastDays+this.days)%7==0)this.dateTable+='</tr><tr bgcolor="#FFFFFF">';
		}
		if((this.dateTime.getFullYear()<=2008) && (this.dateTime.getMonth()<6))
		{
					this.dateTable+='<td >'+'&nbsp;'+'</td>'
			+'<td><button hidefocus="true"><span>3</span></button></td>'
			+'<td >'+this.dateTime.getFullYear().toString().bold()+'</td>'
			+'<td>'+'/'+'&nbsp;'+(this.dateTime.getMonth()+1).toString().bold()+'</td>'
			+'<td ><button onmouseup="void('+this.objName+'.nextMonth())" hidefocus="true"><span>4</span></button></td>'
			+'</tr></table>';
		}
		else
		{
		this.dateTable+='<td >'+'&nbsp;'+'</td>'
		    +'<td><button onmouseup="void('+this.objName+'.previewMonth())" hidefocus="true"><span>3</span></button></td>'
			+'<td >'+this.dateTime.getFullYear().toString().bold()+'</td>'
			+'<td>'+'/'+'&nbsp;'+(this.dateTime.getMonth()+1).toString().bold()+'</td>'
			+'<td><button onmouseup="void('+this.objName+'.nextMonth())" hidefocus="true"><span>4</span></button></td>'
			+'</tr></table>';
		}
		return this.dateTable;
	}
	function focusDate(date){
		try{
			eval(this.calendarName+(date!=null?date|0:new Date().getDate())+'.className="focus"');
			return(true);
		} catch(e) { return(false); }
	}
	function attachLink(date,link,target,title){
		try{
			eval(this.calendarName+(date!=null?date|0:new Date().getDate())
				+'.innerHTML="<a href=\\"'+link+'\\"'
				+' target=\\"'+(target!=null?target:'_self')+'\\"'
				+' title=\\"'+(title!=null?title:'')+'\\">'+date.toString()+'</a>"');
			return(true);
		} catch(e) { alert(e.message);return(false); }
	}
	function refresh(){
		try{
			eval(this.calendarName+'Td.filters[0].apply()');
			eval(this.calendarName+'Td.innerHTML=\''+this.getTable()+'\'');
			eval(this.calendarName+'Td.filters[0].play()');
			this.afterRefresh();
			return(true);
		} catch(e) { return(false); }
	}
	function previewMonth(){
		try{
			this.dateTime.setMonth(this.dateTime.getMonth()-1)
			this.generate();
			this.refresh();
			return(true);
		} catch(e) { return(false); }
	}
	function nextMonth(){
		try{
			this.dateTime.setMonth(this.dateTime.getMonth()+1)
			this.generate();
			this.refresh();
			return(true);
		} catch(e) { return(false); }
	}
	function setDate(dateStr){
		try{
			this.dateTime=new Date(dateStr);
			return(true);
		} catch(e) { return(false); }
	}
}