﻿//daley:2010.01.20
//构建年、月、日的下拉列表框填充值
//需先载入js1.js
//var calendar2={
function calendar2(){
	this.ySltId="yearSlt";//年下拉框ID
	this.mSltId="monthSlt";//月下拉框ID
	this.dSltId="dateSlt";//日下拉框ID
	this.setStartV=0;//设置初始值否（0：不设置；1：设置）
	this.yStart=1990;//起始年份
	this.yEnd=new Date().getFullYear()+1;	
	this.ySltV=new Date().getFullYear();//年初始值
	this.mSltV=new Date().getMonth()+1;//月初始值
	this.dSltV=new Date().getDate();//日初始值
	this.MonHead=[31,28,31,30,31,30,31,31,30,31,30,31];
	//初始化
	this.init=function(param){
		try{
			if(typeof(param[0])!='undefined') this.ySltId=param[0];
			if(typeof(param[1])!='undefined') this.mSltId=param[1];
			if(typeof(param[2])!='undefined') this.dSltId=param[2];
			if(typeof(param[3])!='undefined') this.setStartV=param[3];
			if(typeof(param[4])!='undefined') this.yStart=param[4];
			if(typeof(param[5])!='undefined') this.yEnd=param[5];			
			if(typeof(param[6])!='undefined') this.ySltV=param[6];
			if(typeof(param[7])!='undefined') this.mSltV=param[7];
			if(typeof(param[8])!='undefined') this.dSltV=param[8];
		}catch(e){}
		this.create();
	};
	//创建
	this.create=function(){//alert(this.yStart);alert(this.yEnd);
		//alert(this.dSltId);
		//年下拉框
		this.fillNumToSlt(gd(this.ySltId),this.yStart,this.yEnd);
		//月下拉框
		this.fillNumToSlt(gd(this.mSltId),1,12);
		//daley:continue:绑定年、月下拉框的onchange事件，当一个页面多次调用此类时，这里会有问题
		/*if(window.addEventListener){//FF
			gd(this.ySltId).addEventListener("change",function(){calendar2.yMChg();},true);
			gd(this.mSltId).addEventListener("change",function(){calendar2.yMChg()},true);
		}
		else{//IE chrome
			gd(this.ySltId).attachEvent("onchange",function(){calendar2.yMChg()});//用this.yMChg()会错
			gd(this.mSltId).attachEvent("onchange",function(){calendar2.yMChg()});
		}*/
		if(this.setStartV==1)
			this.setStartValue(1);
		//S:日下拉框
		var ySltV=gd(this.ySltId).value;
		if(!(/^[1-9]\d+$/.test(ySltV)))
			return;
		var date=this.MonHead[new Date().getMonth()];
		//润年的二月
		if(new Date().getMonth()==1 && this.IsPinYear(ySltV))
			date++;
		this.fillNumToSlt(gd(this.dSltId),1,date);
		if(this.setStartV==1)
			this.setStartValue(2);
		//End
	};
	//判断是否闰平年
	this.IsPinYear=function(year){
		return(0==year%4 && (year%100!=0 || year%400==0))
	};
	//赋初始值
	this.setStartValue=function(n){
		if(n==1){
			gd(this.ySltId).value=this.ySltV;
			gd(this.mSltId).value=this.mSltV;
		}
		else if(n==2)
			gd(this.dSltId).value=this.dSltV;
	};
	//填充数字到下拉菜单中
	this.fillNumToSlt=function(obj,iS,iEnd){
		//gd(this.ySltId).options[gd(this.ySltId).options.length]=new Option(i,i);
		for(var i=iS;i<=iEnd;i++){
			with(obj){
				options[options.length]=new Option(i,i);
			}
		}		
	};
	//年、月发生变化时日期发生变化(主要是判断闰平年)//yearMonthChange
	//当一个页面多次调用此类时，这里会有问题，this.ySltId等会取到最后一次的
	this.yMChg=function(ySltId,mSltId,dSltId){
		//alert(ySltId);alert(mSltId);alert(dSltId);return;
		/*alert(this.ySltId);alert(this.mSltId);alert(this.dSltId);
		var Yv=gd(this.ySltId).value;
		var Mv=gd(this.mSltId).value;*/
		var Yv=gd(ySltId).value;
		var Mv=gd(mSltId).value;//alert(Yv);alert(Mv);
		gd(dSltId).length=1;
		if(parseInt(Yv)==0 || parseInt(Mv)==0){
			//gd(this.dSltId).length=1;//daley
			return;
		}
		var date=this.MonHead[Mv-1];
		if(Mv==2 && this.IsPinYear(Yv))
			date++;
		//this.fillNumToSlt(gd(this.dSltId),1,date);
		this.fillNumToSlt(gd(dSltId),1,date);
	}
}
/*function yMChg(){
	var Yv=gd(this.ySltId).value;
	var Mv=gd(this.mSltId).value;alert(Yv);alert(Mv);
	if(parseInt(Yv)==0 || parseInt(Mv)==0){
		gd(this.dSltId).length=1;//daley
		return;
	}
	var date=this.MonHead[Mv-1];
	if(Mv==2 && IsPinYear(Yv))
		date++;
	this.fillNumToSlt(gd(this.dSltId),1,date);
}*/
//calendar2.create();
/*calendar2.yEnd='haha';
alert(calendar2.yEnd);*/