(function($){
  $(function(){
    function twoDigit(int) {
      return (int < 10 ? "0" + int : "" + int);
    };
    $("label ").each(function(){
      var $label = $(this);
      $(this).find("img").click(function(){
        $label.click();
      })
    })
    
    function resetDate(area, d){
      area.each(function(){
        var isForm2 = ($(this).attr("id") == "form2" || $(this).attr("id") == "form2_2");
        if (!d) d = new Date();
        var ciDate = new Date(d.getFullYear(), d.getMonth(), d.getDate()+(isForm2?1:1))
          , coDate = new Date(d.getFullYear(), d.getMonth(), d.getDate()+(isForm2?2:2))
          , cical = $(this).find(".checkin .cal")
          , cocal = $(this).find(".checkout .cal")
          ;
        $(this)
          .find(".checkin")
            .find(".year").val(ciDate.getFullYear()).end()
            .find(".month").val(isForm2?ciDate.getMonth()+1:twoDigit(ciDate.getMonth()+1)).end()
            .find(".day").val(isForm2?ciDate.getDate():twoDigit(ciDate.getDate())).end()
          .end()
          .find(".checkout")
            .find(".year").val(coDate.getFullYear()).end()
            .find(".month").val(isForm2?coDate.getMonth()+1:twoDigit(coDate.getMonth()+1)).end()
            .find(".day").val(isForm2?coDate.getDate():twoDigit(coDate.getDate())).end()
          .end()
        ;
        cical.datepicker("setDate", ciDate);
        cocal.datepicker("setDate", coDate);
      })
    }
    function initDate(area, d){
      area.each(function(){
        var isForm2 = ($(this).attr("id") == "form2" || $(this).attr("id") == "form2_2");
        if (!d) d = new Date();
        var ciDate = new Date(d.getFullYear(), d.getMonth(), d.getDate()+(isForm2?3:0))
          , coDate = new Date(d.getFullYear(), d.getMonth(), d.getDate()+(isForm2?4:1))
          , cical = $(this).find(".checkin .cal")
          , cocal = $(this).find(".checkout .cal")
          ;
        $(this)
          .find(".checkin")
            .find(".year").val(ciDate.getFullYear()).end()
            .find(".month").val(isForm2?ciDate.getMonth()+1:twoDigit(ciDate.getMonth()+1)).end()
            .find(".day").val(isForm2?ciDate.getDate():twoDigit(ciDate.getDate())).end()
          .end()
          .find(".checkout")
            .find(".year").val(coDate.getFullYear()).end()
            .find(".month").val(isForm2?coDate.getMonth()+1:twoDigit(coDate.getMonth()+1)).end()
            .find(".day").val(isForm2?coDate.getDate():twoDigit(coDate.getDate())).end()
          .end()
        ;
        cical.datepicker("setDate", ciDate);
        cocal.datepicker("setDate", coDate);
      })
    }
    initDate($("#Aside .reserve form"));
    initDate($("#bottom-search-box form"));

    (function(){
      var today = new Date();
      var year = today.getFullYear();
      var month = today.getMonth();
      $(".checkin, .checkout").each(function(){
        var $year = $(this).find(".year");
        var $month = $(this).find(".month");
        $(this).find("select").change(function(){
          var _year = parseInt($year.val(), 10);
          var _month = parseInt($month.val(), 10) -1;
          if(_month < month) {
            $year.val(year + 1);
          }else{
            $year.val(year);
          }
        })
      });
    })();

    $("#Aside .reserve form, #bottom-search-box form").each(function(){
      var $this = $(this)
        , $checkin  = $(this).find(".checkin")
        , $checkout = $(this).find(".checkout")
        , $selects  = $(this).find(".checkin select, .checkout select")
      ;
      $selects.change(function(){
        var ciy = $checkin.find(".year").val()
          , cim = $checkin.find(".month").val() -1
          , cid = $checkin.find(".day").val()
          , coy = $checkout.find(".year").val()
          , com = $checkout.find(".month").val() -1
          , cod = $checkout.find(".day").val()
          , cidate = new Date(ciy,cim,cid)
          , codate = new Date(coy,com,cod)
          ;
        if(codate.getTime() <= cidate.getTime()){
          resetDate($this, new Date(ciy,cim, cid-1));
        }
      })            
    });

    $.datepicker.regional["ja"];

    $("#form2, #form2_2").each(function(){
      $(this).find(".row").each(function(){
        var $this = $(this);
        var $btCalendar = $this.find(".cal");
        var $year = $this.find(".year");
        var $month = $this.find(".month");
        var $day = $this.find(".day");
        $btCalendar
          .datepicker({
            showOn : 'button',
            buttonImage: '/common/imgs/aside-reserve-cal.gif',
            buttonText: 'カレンダーから探す',
            numberOfMonths: 3,
            //minDate: 1,
            onClose: function(date){
              $year.val(parseInt(date.split('/')[0], 10));
              $month.val(parseInt(date.split('/')[1], 10));
              $day.val(parseInt(date.split('/')[2], 10));
              $day.change();
            },
            beforeShowDay: function(date){
              if(date.getDay() == 0) {
    			    	return [true,"ui-datepicker-sunday"];
    		    	} else if(date.getDay() == 6){
    			    	return [true,"ui-datepicker-saturday"];
              } else {
                return [true, "ui-datepicker-normal"];
              }
            }
          })
          .datepicker("setDate", new Date($year.val(), $month.val() -1, $day.val()))
      })
    });
    $("#form1, #form1_2").each(function(){
      $(this).find(".row").each(function(){
        var $this = $(this);
        var $btCalendar = $this.find(".cal");
        var $year = $this.find(".year");
        var $month = $this.find(".month");
        var $day = $this.find(".day");
        $btCalendar
          .datepicker({
            showOn : 'button',
            buttonImage: '/common/imgs/aside-reserve-cal.gif',
            buttonText: 'カレンダーから探す',
            numberOfMonths: 3,
            //minDate: 1,
            onClose: function(date){
              $year.val(date.split('/')[0]);
              $month.val(date.split('/')[1]);
              $day.val(date.split('/')[2]);
              $day.change();
            },
            beforeShowDay: function(date){
              if(date.getDay() == 0) {
    			    	return [true,"ui-datepicker-sunday"];
    		    	} else if(date.getDay() == 6){
    			    	return [true,"ui-datepicker-saturday"];
              } else {
                return [true, "ui-datepicker-normal"];
              }
            }
          })
          .datepicker("setDate", new Date($year.val(), $month.val() -1, $day.val()))
      })
    });

    function reverse(){
      $('input[name="arr_boardAirport"]').val($('select[name="dep_arrivalAirport"]').val());
      $('input[name="arr_arrivalAirport"]').val($('select[name="dep_boardAirport"]').val());
    }
    reverse();
    $('select[name="dep_arrivalAirport"], select[name="dep_boardAirport"]').change(reverse);

  });

  $(function(){
    $("#Aside .select-type input, #Aside .select-type label img").click(function(){
      if($("#radio01").attr("checked")){
        $("#form1").show();
        $("#form2").hide();
      } else {
        $("#form1").hide();
        $("#form2").show();
      }
    })
    $("#form2").submit(function(){
      var ciMon = $(this).find(".checkin .month").val() - 1
        , ciDay = $(this).find(".checkin .day").val()
        , coMon = $(this).find(".checkout .month").val() -1
        , coDay = $(this).find(".checkout .day").val()
        , thisYear = new Date().getFullYear()
        , ciDate = new Date(thisYear, ciMon, ciDay)
        , coDate = new Date(thisYear, coMon, coDay)
        , diff = (coDate.getTime()-ciDate.getTime())/(1000*60*60*24)
        ;
      $(this).find("input[name='period']").val(diff);
    });
    $("#bottom-search-box .select-type input, #bottom-search-box .select-type label img").click(function(){
      if($("#radio01_2").attr("checked")){
        $("#form1_2").show();
        $("#form2_2").hide();
      } else {
        $("#form1_2").hide();
        $("#form2_2").show();
      }
    })
    $("#form2_2").submit(function(){
      var ciMon = $(this).find(".checkin .month").val() - 1
        , ciDay = $(this).find(".checkin .day").val()
        , coMon = $(this).find(".checkout .month").val() -1
        , coDay = $(this).find(".checkout .day").val()
        , thisYear = new Date().getFullYear()
        , ciDate = new Date(thisYear, ciMon, ciDay)
        , coDate = new Date(thisYear, coMon, coDay)
        , diff = (coDate.getTime()-ciDate.getTime())/(1000*60*60*24)
        ;
      $(this).find("input[name='period']").val(diff);
    });
  });
})(jQuery);

