/*
 * Title  -> JavaScript Date COMBO Chooser
 * Author -> Bogyo & Joe
 * URL    -> http://mi.com
 * Email  -> mi@com.pot
 */

function JavaScriptDateChooser(){
    var today;
    var day_today;
    var month_today;
    var year_today;

    var months;
    var days;
    var years;

    var day_selected;
    var month_selected;
    var year_selected;
    var hidden_field;

    var classname;
    var dateinterval;
    
    this.JavaScriptDateChooser = function(sname,currentdate,interval){
        today = new Date();
        dt=currentdate.split('-');
        day_today = 1*dt[2];
        month_today = 1*dt[1]-1;
        year_today = 1*dt[0];
        classname = sname;
        dateinterval = interval;

        days = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
        months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
        
        document.write("<input id='"+classname+"' type='hidden' name='"+classname+"' value=''>");
        document.write("<select id=\""+classname+"_year\"></select>");
        document.write("<select id=\""+classname+"_month\"></select>");
        document.write("<select id=\""+classname+"_day\"></select>");
        
        day_selected = document.getElementById(classname+"_day");
        month_selected = document.getElementById(classname+"_month");
        year_selected = document.getElementById(classname+"_year");

        hidden_field = document.getElementById(classname);

        month_selected.onchange = this.update;
        year_selected.onchange = this.update;
        day_selected.onchange = this.update;

        this.setYears();
        this.setMonths();
        this.setDays();
        this.update();
    }

    this.setYears = function(){
      dateinterval=dateinterval.split('-');
      var fromYear=1*dateinterval[0];
      var toYear=1*dateinterval[1];
      var SetIndex=-1;
      var hol=0;
      for(var i=fromYear;i<toYear;i++) {
        year_selected.options[year_selected.options.length] = new Option(i,i);
        if (SetIndex==-1 && i==year_today) SetIndex=hol;
        hol=hol+1;
      }
      if (SetIndex==-1) SetIndex=0;
      year_selected.selectedIndex=SetIndex;
    }

    this.setMonths = function(){
      var i;
      for(i=0;i<months.length;i++) month_selected.options[month_selected.options.length] = new Option(months[i], i);
      month_selected.options[month_today].selected = true;
    }

    this.setDays = function(){
      for(i = 1; i <= days[month_today]; i++){
        day_selected.options[day_selected.options.length] = new Option(i, i);
      }
      if (day_today==0) day_today=1;
      day_selected.options[day_today-1].selected = true;
    }

    this.update = function(){
        var year = year_selected.options[year_selected.selectedIndex].value;
        var prev = day_selected.selectedIndex;
        if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){
          days[1] = 29;
        }
        else{
          days[1] = 28;
        }

        for(i = day_selected.options.length; i > days[1]; i--){
          day_selected.options[i-1] = null;
        }

        for(i = day_selected.options.length; i < days[month_selected.selectedIndex]; i++){
          day_selected.options[day_selected.options.length] = new Option(i+1, i+1);
        }

        if(day_selected.options.length > prev){
          day_selected.options[prev].selected = true;
        }
        
        var honap;
        var nap;

        honap=month_selected.value;
        nap=day_selected.value;
        honap=1*honap+1;
        if (honap<10) honap='0'+honap;
        if (nap<10) nap='0'+nap;
        hidden_field.value=year+'-'+honap+'-'+nap;
    }
}