var $ = function (id) {
return "string" == typeof id ? document.getElementById(id) : id;
};
var dd0;
var dd1;
var dd2,dd3;
var d1Arr= new Array(); 
var d2Arr= new Array(); 
var v1,v2
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
var Extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
}
var Calendar = Class.create();
Calendar.prototype = {
initialize: function(container, options) {
this.Container = $(container);//容器(table结构)
this.Days = [];//日期对象列表
this.SetOptions(options);
this.Year = this.options.Year || new Date().getFullYear();
this.Month = this.options.Month || new Date().getMonth() + 1;
this.SelectDay = this.options.SelectDay ? new Date(this.options.SelectDay) : null;
this.onSelectDay = this.options.onSelectDay;
this.onToday = this.options.onToday;
this.onFinish = this.options.onFinish;
this.Draw(container);
},
//设置默认属性
SetOptions: function(options) {
this.options = {//默认值
Year:			0,//显示年
Month:			0,//显示月
SelectDay:		null,//选择日期
onSelectDay:	function(){},//在选择日期触发
onToday:		function(){},//在当天日期触发
onFinish:		function(){}//日历画完后触发
};
Extend(this.options, options || {});
},
//当前月
NowMonth: function() {
this.PreDraw(new Date());
},
//上一月
PreMonth: function(container2) {
this.PreDraw(new Date(this.Year, this.Month - 2, 1),container2);
},
//下一月
NextMonth: function(container2) {
this.PreDraw(new Date(this.Year, this.Month, 1),container2);
},
//上一年
PreYear: function() {
this.PreDraw(new Date(this.Year - 1, this.Month - 1, 1));
},
//下一年
NextYear: function() {
this.PreDraw(new Date(this.Year + 1, this.Month - 1, 1));
},
//根据日期画日历
PreDraw: function(date,container2) {
//再设置属性
this.Year = date.getFullYear(); this.Month = date.getMonth() + 1;
//重新画日历
this.Draw(container2);
},
//画日历
Draw: function(container1) {
//用来保存日期列表
var arr = [];
//用当月第一天在一周中的日期值作为当月离第一天的天数
for(var i = 1, firstDay = new Date(this.Year, this.Month - 1, 1).getDay(); i <= firstDay; i++){ arr.push(0); }
//用当月最后一天在一个月中的日期值作为当月的天数
for(var i = 1, monthDay = new Date(this.Year, this.Month, 0).getDate(); i <= monthDay; i++){ arr.push(i); }
//清空原来的日期对象列表
this.Days = [];
//插入日期
var frag = document.createDocumentFragment();
while(arr.length){
//每个星期插入一个tr
var row = document.createElement("tr");
//每个星期有7天
for(var i = 1; i <= 7; i++){
var cell = document.createElement("td"); cell.innerHTML = "&nbsp;";
if(arr.length){
var d = arr.shift();
if(d){

//
this.Days[d] = cell;
var on = new Date(this.Year, this.Month - 1, d);
	dd0=new Date();
	dd1=dd0.getYear()+'-'+(dd0.getMonth()+1)+'-'+dd0.getDate();
	dd2=on.getYear()+'-'+(on.getMonth()+1)+'-'+on.getDate();
	dd3=on.getYear()+'-'+(on.getMonth()+1)+'-'+on.getDate();
	d1Arr=dd1.split('-');
	d2Arr=dd2.split('-');
	v1=new Date(d1Arr[0],parseInt(d1Arr[1]-1),d1Arr[2]);
	v2=new Date(d2Arr[0],parseInt(d2Arr[1]-1),d2Arr[2]);
	if ((v1<=v2)==true){
		if (container1=="idCalendar"){
			cell.innerHTML = '<a href=javascript: onclick=price_1("'+dd3+'");price1();price3();>'+d+'</a>';
		}else if (container1=="idCalendar2"){
			cell.innerHTML = '<a href=javascript: onclick=price_2("'+dd3+'");price1();price3();>'+d+'</a>';
		}
	}else{
		cell.innerHTML = d;
	}
//	

//判断是否今日
this.IsSame(on, new Date()) && this.onToday(cell);
//判断是否选择日期
this.SelectDay && this.IsSame(on, this.SelectDay) && this.onSelectDay(cell);
}
}
row.appendChild(cell);
}
frag.appendChild(row);
}
//先清空内容再插入(ie的table不能用innerHTML)
while(this.Container.hasChildNodes()){ this.Container.removeChild(this.Container.firstChild); }
this.Container.appendChild(frag);
//附加程序
this.onFinish();
},
//判断是否同一日
IsSame: function(d1, d2) {
return (d1.getFullYear() == d2.getFullYear() && d1.getMonth() == d2.getMonth() && d1.getDate() == d2.getDate());
}
}
