Date.daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];

Date.prototype.isLeapYear = function() {
    var year = this.getFullYear();
    return ((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));
}

Date.prototype.getDaysInMonth = function() {
    Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
    return Date.daysInMonth[this.getMonth()];
}
function parseDate(s){
  var d = (s.substring(0,s.indexOf(".")));
  var m = (s.substring((s.indexOf(".")+1),s.lastIndexOf(".")));
  var y = (s.substring((s.lastIndexOf(".")+1),s.length));
  d *= 1; m *= 1; y *= 1;
  y+=2000;
  return new Date(y, m, d);
}
function syncToHidden(form) {
   var day = eval("document."+form+".input_day0.value;");
   var year = eval("document."+form+".input_year0.value;");

   var temp = year;
   temp = temp.split("_");
   var month = temp[0];
   month *= 1;
   month++;
   var year = temp[1];
   temp = "document."+form+".dato0.value = '"+day+"."+month+"."+year+"';";
   eval(temp);
}
function syncDays(field,value,periodS,periodE) {

  periodS = new Date();
  periodS.setDate(1);
  periodE = new Date();
  periodE.setMonth(periodS.getMonth()+2)
  periodE.setDate(periodE.getDaysInMonth());

  value = value.split("_");
  var td = new Date(value[1],value[0],1);

  var input = document.getElementById(field);
  var saveit = input.value;


  if((periodS) && (periodE)) {
     //var start = parseDate(periodS);
     //var end = parseDate(periodE);

     //periodS = start;
     //periodE = end;

     var monthS = periodS.getMonth();
     var yearS = periodS.getFullYear();

     var monthE = periodE.getMonth();
     var yearE = periodE.getFullYear();

     var thismonth = td.getMonth();
     var thisyear = td.getFullYear();
     var dayS = 1;
     var dayE = td.getDaysInMonth();

     var td = new Date(td);
     td.setDate(1);

        if ( ( (thismonth == monthS) && (thisyear == yearS) )) {
          if (periodS.getDate() > td.getDate()) {
             dayS = periodS.getDate();
          } else {
             dayS = 1;
          }
          if ( (periodS.getDate() < td.getDate() ) ) {
             dayE = periodS.getDate();
          } else {
             dayE = td.getDaysInMonth();
          }
        }

        if ( (thismonth == monthE) && (thisyear == yearE) ) {
           dayS = 1;
           if ( (periodE.getDate() < td.getDaysInMonth() ) ) {
              dayE = periodE.getDate();
              saveit = (periodE.getDate() < saveit) ? periodS.getDate() : saveit;
           } else {
              dayE = td.getDaysInMonth();
           }
        }
  }
  var d = -1;
  var o = input.options;
  var anz = o.length;
  for (var i = 0; i < anz;i++) {
     o[0] = null;
  }

  for (var i = 1; i <= td.getDaysInMonth(); i++) {
    if( (i >= dayS) && (i <= dayE) ) {
      d++;
      o[d] = new Option(i,i);
      if (i == saveit) {
         o[d].selected = true;    }
      }
  }
}

function printDays(path, field, periodS, preselection) {

  periodS = new Date();
  periodS.setDate(1);

  var o = eval("document."+path+"."+field+".options");
  var anz = o.length;
  for (var i = 0; i < anz;i++) {
     o[0] = null;
  }

  for (var i = 1; i <= periodS.getDaysInMonth(); i++) {
    if (i == preselection.getDate()) {
       o[o.length] = new Option(i,i,true,true);
	     o[o.length-1].selected = true;
    } else {
       o[o.length] = new Option(i,i);
    }
  }
}

function printMonths(path, field, periodS, periodE, preselection) {

  var o = eval("document."+path+"."+field+".options");
  var anz = o.length;
  for (var i = 0; i < anz;i++) {
     o[0] = null;
  }

  //var dateS = new Date(periodS);
  //var dateE = new Date(periodE);
  var dateS = new Date();
  dateS.setDate(1);
  var dateE = new Date();
  dateE.setMonth(dateS.getMonth()+2)
  dateE.setDate(dateE.getDaysInMonth());

  while (dateS.getTime() <= dateE.getTime()) {
    if ( (dateS.getMonth() == preselection.getMonth()) && (dateS.getFullYear() == preselection.getFullYear()) ) {
       o[o.length] = new Option(monthsTextsShort[dateS.getMonth()]+' '+dateS.getFullYear(),dateS.getMonth()+"_"+dateS.getFullYear(),true,true);
		 o[o.length-1].selected = true;
    } else {
       o[o.length] = new Option(monthsTextsShort[dateS.getMonth()]+' '+dateS.getFullYear(),dateS.getMonth()+"_"+dateS.getFullYear());
    }
    dateS.setDate(1);
    dateS.setMonth(dateS.getMonth()+1);
  }
}


