(function($){
  $.extend({
    dateCalculator: function(date, duration){
      if(duration > 31){
        alert("Anzahl der Übernachtungen ist zu groß");
      }
      var datepart = date.match(/(\d{2}).(\d{2}).(\d{4})/);//german date format (dd.mm.yyyy)
      var day =   parseInt(datepart[1],10);
      var month = parseInt(datepart[2],10);
      var year =  parseInt(datepart[3],10);
      
      var sDay = (day<10) ? "0"+String(day) : String(day);
      var sMonth = (month<10) ? "0"+String(month) : String(month);
      var sYear = String(year);

      var startDate = {
        day:sDay,
        month:sMonth,
        year:sYear
      };
      var monthlength = 31;
      var shortmonths = {'4':'','6':'','9':'','11':''};
      if(parseInt(month,10) in shortmonths){
        monthlength = 30;
      } else if (parseInt(month,10) == 2){
        var leap = -1;
        if(parseInt(year%4,10)==0)   leap=1;
        if(parseInt(year%100,10)==0) leap=-1;
        if(parseInt(year%400,10)==0) leap=1;
        monthlength = (leap == 1) ? 29 : 28;
      }
      if(parseInt(day,10)+parseInt(duration,10) > parseInt(monthlength,10)){
        day = parseInt(duration,10) + parseInt(day,10) - parseInt(monthlength,10);
        month++;
        if(month>12){
          month=1; year++;
        }
      }else{
        day = parseInt(day,10) + parseInt(duration,10);
      }
      month = (parseInt(month,10)<10) ? "0"+String(month) : String(month);
      day = (parseInt(day,10)<10) ? "0"+String(day) : String(day);
      year = String(year);
      var endDate = {
          day:day,
          month:month,
          year:year
        };
      return {
        startDate:startDate,
        endDate:endDate
      }
    },

    calculateRooms: function(adults){
      var singlerooms = 1;
      var doublerooms = (adults -1)/2;
      if(adults%2 == 0) {
        singlerooms = 0;
        doublerooms = adults/2;
      }
      return {
        "singlerooms":String(singlerooms),
        "doublerooms":String(doublerooms)
      }
    }
  });
})(jQuery);
