function HtmlDate(dateName,year,month,day) {

    today = new Date();

    if(day){
        this.Day    = day;
    }else{
     this.Day =  today.getDate();

    }

    if(month){
        this.Month  = month;
    }else{
        this.Month = today.getMonth() +1;
    }

    if(year){
        this.Year   = year;
    }else{
        this.Year = today.getYear();
    }

    this.dateName   = dateName;
    this.days       = new Array ('',31,28,31,30,31,30,31,31,30,31,30,31);
    this.months     = new Array ('','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');



}
function isYearLeap(year){

    if (year == 2000){
        return true;
    }else if( (year % 400) == 0){
        return true;
    }else if( (year % 100) == 0){
        return false;
    }else if( (year % 4) == 0){
       return true;
    }
    return false;
}
function createDaySelectBox(){

    var outPut = "<select name=\"" +this.dateName+ "Day\" >\n ";

    if ( isYearLeap(this.Year) ){

        this.days[2]=29;
    }

    for(var i=1;i<=this.days[this.Month]; i++){

        selected = (i == this.Day)? "selected" : "";

        outPut += "<option value=\" "+i+"\" " + selected + ">"+ i+" \n";
    }
    outPut += "</select>";

    return outPut;


}

function createMonthSelectBox(){
    var outPut = "<select name=\"" +this.dateName+ "Month\" onChange=\"adjusteDaySelectBox('"+this.dateName+"',this.form)\" >\n "



    for(var i=1;i<this.months.length; i++){

        selected = (i == this.Month)? "selected" : "";

        outPut += "<option value=\" "+ i +"\" " + selected + ">"+ this.months[i]+" \n";
    }
    outPut += "</select>";

    return outPut;

}

function createYearSelectBox(){

    var outPut = "<select name=\"" +this.dateName+ "Year\" onChange=\"adjusteDaySelectBox('"+this.dateName+"',this.form)\" >\n ";


    for(var i=this.YearFrom;i<=this.YearTo; i++){

        selected = (i == this.Year)? "selected" : "";

        outPut += "<option value=\" "+i+"\" " + selected + ">"+ i+" \n";
    }
    outPut += "</select>";

    return outPut;


}
function setYearRange(from, to){
    this.YearFrom   = from;
    this.YearTo     = to;
}
function setFirstYear(from){
    today = new Date();
    this.setYearRange(from,today.getYear());
}
function setLastYear(to){
    today = new Date();
    this.setYearRange(today.getYear(),to);
}
function addMonths(number){
    var correntMonth =this.Month;
    var modifiedMonth = this.Month + number;

    if(modifiedMonth > 12){
        this.Month  = number - 12;
        this.Year++;
        return;
    }
    if(modifiedMonth <1){
        this.Month = 12-modifiedMonth;
        this.Year--;
        return;
    }
    this.Month = modifiedMonth;

}
function HtmlDateToString(){
    return this.createDaySelectBox() + "&nbsp;" + this.createMonthSelectBox() + "&nbsp;" + this.createYearSelectBox();


}
function write(){
    document.write(this.toString());
}

HtmlDate.prototype.setFirstYear = setFirstYear;
HtmlDate.prototype.setLastYear = setLastYear;
HtmlDate.prototype.addMonths = addMonths;
HtmlDate.prototype.setYearRange = setYearRange;
HtmlDate.prototype.createDaySelectBox = createDaySelectBox;
HtmlDate.prototype.createMonthSelectBox = createMonthSelectBox;
HtmlDate.prototype.createYearSelectBox = createYearSelectBox;
HtmlDate.prototype.toString = HtmlDateToString;
HtmlDate.prototype.write = write;

function adjusteDaySelectBox(name,Form){

    var monthBox    = Form[name+"Month"];
    var yearBox     = Form[name+"Year"];
    var dayBox      = Form[name+"Day"];

    var year    = yearBox.options[yearBox.selectedIndex].value;
    var month   = monthBox.selectedIndex + 1
    var day     = dayBox.options[dayBox.selectedIndex].value;




    var dateInfo = new HtmlDate('tmp');

    if( isYearLeap(year)){
        dateInfo.days[2] = 29;

    }

    dayBox.options.length = dateInfo.days[month];

    for(var i=0; i<dayBox.options.length; i++){
        dayBox.options[i] = new Option(i+1,i+1);
        if(day == i+1){
          dayBox.options[i].selected=true;
        }
    }

}

