/**
 * searchbox.js
 */
(function($){
  /* 部屋数 */
  var _roomCount = 1;

  /**
   * EVENTS
   */
  $(function(){
    /* 部屋検索エリア */
    var _roomSelectArea = $(".roomSelectArea");

    // 注意！！！応急処置なのでCSSに反映してください。 //////////////////////
    _roomSelectArea.css("position", "relative");
    ///////////////////////////////////////////////////////////////


    _roomSelectArea
      .each(function (){
      var
        /* 部屋検索エリア自身 */
        _thisArea = $(this),

        /* ポップアップウィンドウ */
        _win = _thisArea.find(".roomSelectWindow"),

        /* 部屋セレクト */
        _roomNumSelect = _thisArea.find("select.roomNumSelect"),

        /* 親リンク */
        _parentLink = _thisArea.find("a.roomSelectParentLink"),

        /* 親セレクトエリア */
        _parentSelectArea = _thisArea.find("span.roomSelectParentSelectArea"),

        /* 親セレクト */
        _parentSelect = _parentSelectArea.find("select"),

        /* 子リンク */
        _childLink = _thisArea.find("a.roomSelectChildLink"),

        /* ポップアップウィンドウ内 親セレクト集 */
        _winParentSelects = _win.find("select.parent"),

        /* ポップアップウィンドウ内 子セレクト集 */
        _winChildSelects = _win.find("select.child"),

        /* ポップアップウィンドウ内グループ */
        _rooms = _win.find(".room")
      ;

      _thisArea.extend({
        /**
         * windowShow
         * 部屋検索エリアを開く
         */
        windowShow: function () {
          var
            sHeight   = $(this).height(),
            sOffset   = $(this).offset(),
            sPosition = $(this).position(),
            aPosiY = sHeight + sPosition.top + 7,
            aPosiX = sPosition.left - 220
          ;
          $('.toolTipWrapper').hide();
          _win
            .show()
            .css({ 'top' : aPosiY, 'left': aPosiX })
            // iframeを足す
            .appendIframe()
            // iframeのサイズを変更
            .find('.addIframe')
              .width(_win.width())
              .height(_win.height())
            .end()
          .end()
        },

        /**
         * 表示部屋数
         */
        countRoom: function () {
          var _count = parseInt(_roomNumSelect.val(), 10);
          // _roomCountをセット
          _roomCount = _count;

          _rooms
            // 全て隠す
            .hide()
            .each(function(index){
              var _index = index + 1;
              if(_index <= _count) {
                $(this).show();
                if( _roomCount < _index ) {
                  $(this).find('.parent').val('2');
                  $(this).find('.child').val('0');
                }
              } else {
                $(this).find('select').val("")
              };
            })
          ;
        },

        /**
         * 大人人数
         */
        countParent: function () {
          var cnt = 0;
          var flag = false;
          // カウント
          _winParentSelects.each(function(index){
            if(index < _roomCount) {
              var v = $(this).val();
              if (v && v != "") {
                if( v == "90") {
                  cnt += parseInt(9, 10);
                  flag = true
                } else {
                  cnt += parseInt(v, 10);
                }
              }
            }
          });
          // テキスト反映
          if(flag) {
            _parentLink.html(cnt + "0名");
          } else {
            _parentLink.html(cnt + "名");
          }
          _parentSelect.val($(_rooms[0]).find(".parent").val());
          // 部屋数によるセレクトとリンクの表示/非表示切り替え
          if(_roomCount == 1 ) {
            _parentLink.hide(); _parentSelectArea.show();
          } else {
            _parentLink.show(); _parentSelectArea.hide();
          }
        },

        /**
         * 子供人数
         */
        countChild: function () {
          var cnt = 0;
          _winChildSelects.each(function(index){
            if(index < _roomCount * 3) {
              var v = $(this).val();
              if (v) cnt += parseInt(v, 10);
            }
          })
          _childLink.html(cnt + "名");
        },

        // cookie取得
        getCookie: function () {
          var _cookieVal = $.cookie("roomSearch");
          if(_cookieVal){
            var cookieVals = _cookieVal.split(",");
            _roomCount = cookieVals[0];
            _roomNumSelect.val(_roomCount);

            _win.find("select").each(function(index){
              $(this).val(cookieVals[index+1]);
            });

            //_thisArea.countParent();
            //_thisArea.countChild();
          } else {
            _parentLink.hide();
          }
        }
      });

      _thisArea.bind("getCookie", function(){
        _thisArea.getCookie();
      });

      _thisArea.extend({
        sync: function () {
          setCookie(_win);
          $(".roomSelectArea").trigger("getCookie");
        }
      })


      /**
       * イベント付与
       */
      _roomNumSelect.change(_thisArea.countRoom);
      _roomNumSelect.change(_thisArea.windowShow);
      _roomNumSelect.change(_thisArea.countChild);
      _roomNumSelect.change(_thisArea.countParent);
      _roomNumSelect.change(_thisArea.sync);

      // 親のセレクトタグを変更した際にPOP内の親の人数も変わる
      _parentSelect.change(function(){
        $(_rooms[0]).find(".parent").val($(this).val());
      });
      _parentSelect.change(_thisArea.countRoom);
      _parentSelect.change(_thisArea.windowShow);
      _parentSelect.change(_thisArea.countParent);
      _parentSelect.change(_thisArea.sync);

      _parentLink.click(_thisArea.countRoom)
      _parentLink.click(_thisArea.windowShow);

      _childLink.click(_thisArea.countRoom);
      _childLink.click(_thisArea.windowShow);

      _winParentSelects.change(_thisArea.countParent);
      _winParentSelects.change(_thisArea.sync);

      _winChildSelects.change(_thisArea.countChild);
      _winChildSelects.change(_thisArea.sync);

      _thisArea.countRoom();
      _thisArea.countParent();
      _thisArea.countChild();


      //_thisArea.getCookie();
    });

    function setCookie (_target){
      var cookiedataArray = [];
      cookiedataArray.push(_roomCount);

      $(_target).find("select").each(function(){
        var val = $(this).val() ? $(this).val() : "";
        cookiedataArray.push(val);
      });

      var cookiedata = cookiedataArray.join(",");
      $.cookie("roomSearch", cookiedata, { expires: 7 });
    };
    $(window).unload(function(){setCookie($(".roomSelectWindow")[0])});
  });
})(jQuery)

