/*
 * Script utilizado na página de listagem das reviews 
 * */

function showRatingLoading( reviewid ){
  $('#review-rating-'+reviewid+' > .ratingBar').addClass('min-loading').html('').width( '20px' );
}

function hideRatingLoading( reviewid ){
  $('#review-rating-'+reviewid+' > .ratingBar').removeClass('min-loading');
}


function showFilterLoading( ){
  $('#loading-mala').css('display', 'block');
}

function hideFilterLoading( ){
  $('#loading-mala').css('display','none');
}

function page( n ){
  $('#reviews_filter_page').val( n );
  searchReviews();
}

function searchReviews(){
  
  showFilterLoading();
  
  try{
    $.ajax({
      type: 'get',
      url: '/review/list',
      data: $('#form_reviews_filter').serialize(),
      async: true,
      success: function(data) {
        document.getElementById('avalia_result_list').innerHTML = data;
        $('.mp-tabs').tabs();
        applyLinkDetails();
        applyButtonRating();
        hideFilterLoading();
      },
      error: function(){
        $('#avalia_result_list').html( 'ERRO' );
        hideFilterLoading();
      },
      dataType: 'html'
    });
    
  }catch( e ){
    hideFilterLoading();
  }

}

function applyLinkDetails(){

  $('#avalia_result_list a.link-details').click( function(){
    var triangle = $( this ).prev();
    if( triangle.hasClass('ui-icon-triangle-1-s') )
      triangle.removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e');
    else
      triangle.removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s');
      
    var reviewid = /([0-9]+)/.exec( $( this ).attr('class') )[1];
    $('#review-details-'+reviewid).toggle();
  });
  
}

function applyButtonRating(){
  
  $('.ratingBar > :button').click( function(){
    var reviewid = /([0-9]+)/.exec($( this ).attr('id'))[1];
    var vote = ( $( this ).attr('name') == 'sim' )?1:0;
    showRatingLoading( reviewid );
    try{
      $.ajax({
        type: 'get',
        url: '/review/vote',
        data: {vote: vote, id: reviewid },
        success: function(data) {
          $('#review-rating-'+reviewid).html(data);
          hideRatingLoading( reviewid );
        },
        error: function(){
          $('#review-rating-'+reviewid).val("Ocorreu um erro ao tentar salvar sua resposta.");
          hideRatingLoading( reviewid );
        },
        dataType: 'html'
      });
    }catch( e ){
      hideRatingLoading( reviewid );
    }
  });
    
}


$(function() {

  $('#filters > div.title a').click( function(){
    $('#filters > .ui-widget').toggle();
    
    if( $( this ).prev().hasClass('ui-icon-circle-triangle-s') )
      $( this ).prev().removeClass('ui-icon-circle-triangle-s').addClass('ui-icon-circle-triangle-e');
    else
      $( this ).prev().removeClass('ui-icon-circle-triangle-e').addClass('ui-icon-circle-triangle-s');
      
  });
  
  $('#reviews_filter_audience_all').click( function(){
    
    if( $( this ).attr('checked') )
      $( '#form_reviews_filter ul.checkbox_list input:checkbox' ).attr('checked', false );
    else
      $( '#form_reviews_filter ul.checkbox_list input:checkbox' ).attr('checked', true);
    
    searchReviews();
  });
  
  applyLinkDetails();
  applyButtonRating();
  
  $('#reviews_filter_order_by').change(function(){
    $('#reviews_filter_page').val( 0 );
    searchReviews();
  });
  
  $('#form_reviews_filter ul.checkbox_list input:checkbox').click(function(){
    
    // marca todos quando estiver desmarcando o último checkbox
    if( $( this ).attr('checked') == false ){
      var qtde =0;
      $('#form_reviews_filter ul.checkbox_list input:checkbox').each( function(){
        if( $( this ).attr('checked') == true )
        qtde = qtde + 1;
      });
      
      if( qtde == 0 )
        $('#reviews_filter_audience_all').attr('checked', true );

    }else{
      $('#reviews_filter_audience_all').attr('checked', false );
    }
    
    $('#reviews_filter_page').val( 0 );
    searchReviews();
  });
  
  $("a.show-main-rating-dispersao").click(function () { 
    $('#main-rating-items').toggle(); 
    $('#main-rating-dispersao').toggle(); 
    $('a.show-main-rating-items').toggle();
    $('a.show-main-rating-dispersao').toggle();
  });
  
  $('a.show-main-rating-items').click(function(){
    $('#main-rating-dispersao').toggle(); 
    $('#main-rating-items').toggle();
    $('a.show-main-rating-items').toggle();
    $('a.show-main-rating-dispersao').toggle();
  });
  
  $('.checkbox_list input.audience_item').attr('disabled', true);
  $('ul.checkbox_list li.audience_item label').addClass('disabled');
  
  $.getJSON( '/review/getNumbersByCategory', {supplier_id: $('#reviews_filter_supplier_id').val() }, function(json){
    $.each(json, function(i, obj){
      $('#reviews_filter_audience_' + obj.audience_id ).attr('disabled', false);
      $('#reviews_filter_audience_' + obj.audience_id ).next().append(' ( '+obj.count+' )').removeClass('disabled');
    });
  });
 
  $('#mostvoted-review').click( function(){
    var reviewid = /review-([0-9]+)/.exec($( this ).attr('class'))[1];
    $.get( '/review/mostVoted', {id:reviewid}, function(html){
        $('#mostvoted-review').before("<div id='review"+reviewid+"'></div>");
        $('#review'+reviewid).html(html);
        
        $('.mp-tabs').tabs();
        applyButtonRating();
        
         $('#mainMostVoted a.link-details').click( function(){
          var triangle = $( this ).prev();
          if( triangle.hasClass('ui-icon-triangle-1-s') )
            triangle.removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e');
          else
            triangle.removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s');
            
          var reviewid = /([0-9]+)/.exec( $( this ).attr('class') )[1];
          $('#mostvoted-review-details-'+reviewid).toggle();
        });
        
        
        $('#review'+reviewid).dialog({
          title: 'Opinião mais votada',
          dialogClass: 'detailsPlan',
          closeOnEscape: true,
          width: 770,
          resizable: false,
          modal : true,
          overlay: { backgroundColor: '#000', opacity: 0.5 },
          buttons: {
            'Ok': function() { $(this).dialog('destroy'); $(this).remove() }
          },
          close: function(ev, ui) {
            $(this).dialog('destroy'); $(this).remove() }
        });
      }
    );
    return false;
  });

});

$(function() { $("button, .ui-button").button(); $('.mp-tabs').tabs(); });


