// JavaScript Document
/*
 * ---------------------------------------------------
 * working well in IE6.0 & Mozilla FireFox 0.93
 * all rights reserved today & tomorrow 
 * ShiRongjiu(TryDoFor)[trydofor.com]
 * Sep. 2004 
 * ----------------------------------------------------
 */

function DateBox(){
var blank="   ";
var startYear = 1930;
var dateObjecArray = new Array();

this.isLeapYear = function(year){
    return year >= 1582 ?
        ((year%4 == 0) && ((year%100 != 0) || (year%400 == 0))) : // Gregorian
        (year%4 == 0); // Julian
}

this.getMonthSize = function (year,month){
    if(year==null||month==null)return 31;
    if(month<8){
        if(month%2==1) return 31;
		else if(month=="") return 31;
        else if(month!=2) return 30;
        else return this.isLeapYear(year)?29:28;
    }else{
        return (month%2==0)?31:30;
    }
}

/*
 
*/
this.init = function (y,m,d,s,e,i,b){
    var err="";
    var yObj = document.getElementById(y);
    var mObj = document.getElementById(m);
    var dObj = document.getElementById(d);
    if(yObj==null && mObj==null&&dObj==null){yObj=y;mObj=m;dObj=d;}
    if(!yObj||!yObj.options)err+="[yearobject] is not a <select>\n";
    if(!mObj||!mObj.options)err+="[monthobject] is not a <select>\n";
    if(!dObj||!dObj.options)err+="[dateobjcet] is not a <select>\n";
    if(err!=""){alert(err+"\nfix it first, please:)");return;};
    
    dateObjecArray.push(yObj);
    dateObjecArray.push(mObj);
    dateObjecArray.push(dObj);
    if(b)blank = b;
    
    if(s==null||s<=0)s=startYear;
    myDate=new Date();
    cy=(e==null||e=="" ||isNaN(e))?myDate.getFullYear():e;
    //alert("cy: "+cy);
    dy="";dm="";dd="";
    if((i+="").length==8){
        dy=i.substring(0,4);
        dm=i.substring(4,6);
        dd=i.substring(6,8);
    }
    
    removeOptions(yObj);
    removeOptions(mObj);
    removeOptions(dObj);
    
    newElem=document.createElement("OPTION");
    newElem.text=blank;
    newElem.value="";
    yObj.options.add(newElem);
    
    newElem=document.createElement("OPTION");
    newElem.text=blank;
    newElem.value="";
    mObj.options.add(newElem);
    
    newElem=document.createElement("OPTION");
    newElem.text=blank;
    newElem.value="";
    dObj.options.add(newElem);
    
    for(i=cy;i>=s;i--){
        newElem=document.createElement("OPTION");
        newElem.text=i;
        newElem.value=i;
        yObj.options.add(newElem);
    }
    
    for(i=1;i<=12;i++){
        newElem=document.createElement("OPTION");
        newElem.text=(i<10?("0"+i):i);
        newElem.value=(i<10?("0"+i):i);
        mObj.options.add(newElem);
    }    
    
    for(i=1;i<=this.getMonthSize(dy,dm);i++){
        newElem=document.createElement("OPTION");
        newElem.text=(i<10?("0"+i):i);
        newElem.value=(i<10?("0"+i):i);
        dObj.options.add(newElem);
    }
    yObj.value=dy;
    mObj.value=dm;
    dObj.value=dd;
}

this.update = function(xObj){
    var yObj;
    var mObj;
    var dObj;
    for(i=0;i<dateObjecArray.length;i++){
        if(dateObjecArray[i]==xObj){
           os = i%3;
           yObj =  dateObjecArray[i-os];
           mObj =  dateObjecArray[i+1-os];
           dObj =  dateObjecArray[i+2-os];
           break;    
        }
    }
    
    year=yObj.value;
    month=mObj.value;
    cl=dObj.options.length;
    rl=this.getMonthSize(year,month)+1;
    for(i=rl;i<cl;i++){
        dObj.options[rl]=null;
    }
    for(i=cl;i<rl;i++){
        newElem=document.createElement("OPTION");
        newElem.text=i;
        newElem.value=i;
        dObj.options.add(newElem);
    }
}

function removeOptions(selectId){
    cl=selectId.options.length;
    for(i=0;i<cl;i++){
        selectId.options[0]=null;
    }  
}
}
