(function($) {
  $(document).ready(function() {
    init();
    setupCarousel();
  });

  function init() {
    var $holder = $('#product');

    // URLパラメータがなければ先頭の製品を表示する
    if(!location.search) {
      var url = $('#carousel nav li:first-child').children('img').attr('data-posturl');
      fetchPage(url , $holder);
      return false;
    }

    // トップから直接製品を選択してきた場合は、該当の製品を表示する
    var reqPage = location.search.split('=')[1];

    fetchPage(reqPage, $holder);

    return false;
  }

  function setupCarousel() {
    var $carousel = $('#carousel nav ul'),
        $holder = $('#product'),
        $prev = $('.prev'),
        $next = $('.next'),
        itemCnt = $('#carousel nav li').length,
        pageWidth = $('#wrapper').css('width');

    $('#carousel nav ul').css({
      width: 250 * itemCnt  // img:230px + margin(10) + padding(10)
    });

    $('#carousel nav img').click(function(ev) {
      var $this = $(this),
          fetchUrl = $this.attr('data-posturl');

      if($this.hasClass('current')) {
        return false;
      }

      $('#carousel nav img').removeClass('current');
      $this.addClass('current');

      fetchPage(fetchUrl, $holder);

      return false;
    });

    $next.click(function(ev) {
      var left = _stripPx($carousel.css('left')) - 1000;

      $carousel.animate({
        left: left
      }, 800, 'easeOutQuart', _chkNavBtn(left));

      return false;
    });

    $prev.click(function(ev) {
      var xpos = _stripPx($carousel.css('left')),
          left = 0;

      left = (xpos === 0 ? 0 : xpos + 1000);

      $carousel.animate({
        left: left
      }, 800, 'easeOutQuart', _chkNavBtn(left));

      return false;
    });

    function _chkNavBtn(xpos) {
      var w = itemCnt * 230; // 表示するアイテム数分の幅

      if(xpos < 0) {
        $prev.addClass('show');
      } else if(xpos === 0) {
        $prev.removeClass('show');
      }

      if(xpos < 0) { xpos = -xpos; }

      if(-1000 > xpos - w && xpos - w < 0) {
        if(Math.round(xpos / 1000) >= 1 || xpos === 0) {
          $next.addClass('show');
        }
        //$next.removeClass('show');
      } else {
        $next.removeClass('show');
      }
    }

    function _stripPx(str) {
      return parseInt(str.replace('px', ''));
    }
  }

  function fetchPage(url, holder) {
    $preloader = $('#preLoader');

    $preloader.fadeIn('first', function() {
      $.ajax({
        type: 'GET',
        url: url,
        success: function(content) {
          var $content = $(content).find('#overview');

          holder.children()
                .remove()
                .end()
                .append($content);

          if($('#share_buttons').length) {
            insertShares($('#share_buttons'));
          }
        },
        error: function(xhr, textStatus, e) {
          return false;
        },
        complete: function() {
          $preloader.fadeOut('slow');
        }
      });
    });
  }

  function insertShares($target) {
    var js,
        fjs = document.getElementsByTagName('script')[0],
        $fb_container = $('#fb_scripts'),
        fb_html = $('<div class="fb-like" data-href="http://synapsesoft.co.jp/products/tachyon/" data-send="true" data-layout="button_count" data-width="140" data-show-faces="true"></div>'),
        tw_html;

    var product = $('#overview').attr('class');

    if(product == 'tachyon') {
      tw_html = $('<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://synapsesoft.co.jp/products/tachyon/" data-text="iOSに最適化された全文検索ライブラリ TACHYON for iOS" data-count="none" data-lang="ja">ツイート</a><script type="text/javascript" src="//platform.twitter.com/widgets.js"></script>');
    }

    $target.append(tw_html);
    //$target.append(fb_html);

    /*
    if (document.getElementById('facebook-jssdk')) { return; }
    js = document.createElement('script');
    js.id = 'facebook-jssdk';
    js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1";
    fjs.parentNode.insertBefore(js, fjs);
    */
  }
}(jQuery));

