+function(){
  amaclo._timer = 1000;
  var d = document;
  var category = amaclo.category != 'top' ? '/'+amaclo.category : '';
  $(function(){

    // review result

    var url = category + '/reviews/view/'+amaclo.asin, url2, _url = url;
      if (location.hash) {
        _url += location.hash.replace(/#/, '');
        $('#abstructReviews').val(location.hash.split('/').slice(1).join('_'));
      }


    // add reviews
    var timer = function(i){
      url2  = [category + '/reviews/add', amaclo.asin, i].join('/') + '?'+ new Date().getTime();
      $.get(url2, null, function(data){
              var val=$('#abstructReviews').val().split('_');
              var url3 = url + ['', val[0]/100, val[1]].join('/') + '?'+ new Date().getTime();


              $('#review').load(url3, null, function(){
                                  amaclo.ReviewLoaded.call();
                                  amaclo.Loading('.loading', ['集計中 <br />', i+1, '/', amaclo.reviewPages].join(''));

                                  // next page?
                                  if (!data.isNext || i >= amaclo.reviewPages) {
                                    amaclo.StopLoading('.loading');
                                    amaclo.ReviewComplete.call('', true);
                                    return;
                                  }
                                  setTimeout(function(){timer(i+1);}, amaclo._timer);

                                });

       }, 'json');
    };
    $('#review').load(_url, null, function(){
                        amaclo.ReviewLoaded.call();
                        amaclo.Loading('.loading', '集計中');
                        setTimeout(function(){timer(1);}, amaclo._timer);
                      });

      $('#formReview').submit(function(){
                                return false;
                              });

    // changing filter
      $('#abstructReviews').change(function(){
                                     var val=$(this).val().split('_');
                                     location.hash = ['', val[0], val[1]].join('/');
                                     var url3 = url + ['', val[0]/100, val[1]].join('/');
                                     $('#review').load(url3, null, function(){
                                                         amaclo.ReviewLoaded.call();
                                                       });

                                     amaclo.ReviewComplete.call('', false);

                                   });
      amaclo.setGoal.call();

      // items page
      $('.gotoAmazon').click(function(){
                             var asin = $(this).attr('id').split('_').pop();
                             amaclo.setGoal.call(asin);
                           });

      // blogpart
      $('#amazreIframe').load(function() {
        var height = amazreIframe.document.getElementById('blogparts').offsetHeight+10;

      $('#amazreIframe').height(height);
      $('#blogpartsSource').val("<iframe src='http://amazre.com" + category + "/blogparts/view/asin/"+ amaclo.asin +"' style='border:none; padding:5px; width:195px; height: "+ height +"px; overflow:hidden;'></iframe>");
                                });


  });
  amaclo.setGoal = function(asin) {
      // going to amazon
      asin = asin || amaclo.asin;
      $('.amazon').unbind('click').click(function(){
                           pageTracker._trackPageview('/_tracking/goal/detail/'+asin);
                         });
  };


  amaclo.ReviewLoaded = function(){
    $('.showReview').click(function(){
                                     var url = $(this).attr('href')+'#/'+$('#abstructReviews').val().split('_').join('/');
//                                     console.log(url)
                                     location.href = url;
                                     return false;
    });
  };

  amaclo.ReviewComplete = function(registerTotal) {
    // get reviews
    var val=$('#abstructReviews').val().split('_');
    var url2 = category + '/reviews/index/'+amaclo.asin + ['', 'all', 'all', val[0]/100, val[1]].join('/');

    // register total
    if (registerTotal) {
      $.get(category + '/reviews/complete/'+amaclo.asin);
    }

//    var url2 = '/reviews/index/'+amaclo.asin + ['','all', 'all', $('#helpfulRating').val()/100, $('#operator').val()].join('/');
    $('#reviewsOuter').load(url2+' #reviews', null, function(){amaclo.setGoal.call();});
  };

  amaclo.Loading = function(target, str) {
    var html = '<div class="loadingIcon">' + str + '</div>';
    $(target).html(html);
  };

  amaclo.StopLoading = function(target) {
//    console.log(target, 'stop')
    $(target).remove();
  };

}();
