var $cat_filters = [], $rating_filters = {benefit:0,evidence:0,safety:0};
var $search_order = "",$current_order = "";
var $search_sort = "asc",$current_sort = "";
var $search_keyword = "";
var $paginate = 1, $page_count = 20;
var $storageType = localStorage; // sessionStorage

var $has_storage = (typeof(Storage) !== "undefined");
var $pathname = window.location.pathname;

$(document).ready(function(){
	$page_count = $('#recs-per-page').val();
    
    
    if ( $('.more-view').length == 0){$('.ratings-more').hide();}

	$(".ratings-filter-block .block-item").each(function () {
        var $this = $(this);
        $(".ratings-slider", $this).slider({
            min: 0,
            max: 100,
            step: 25,
            slide: function (event, ui) {
                $(this).find(".ratings-marker").remove();
                var scale = ui.value, label = $(this).attr('data-rating');
                for (x = 1; x <= scale / 25; x++) {
                    $(this).append("<span class='ratings-marker'></span>");
                }
 				$rating_filters[label] = scale/25;
                $run_filters();
            }
        });
    });
    
	var $referrer_arr = document.referrer.split('/');
    var $r_seg = "";
    if ($referrer_arr.length >= 5){
    	$r_seg = $referrer_arr[4];
    }
    
    if ( $('.ratings-filter').get(0) && $r_seg == 'ratings' ){$pop_filters();}
    else{$clear_filters();}
    	
});

$(document).on('submit', '#blog-low-search-form,#blog-low-search-form-mobile', function(e){
	e.preventDefault();
	var $keyword = $(this).find('input[name="keywords"]').val();
    $('#blog-filter-category input[type="checkbox"]').prop('checked',false);
    
    if ($keyword){
    	$.ajax({
			type: "get",
            url: $(this).attr('action'),
            data: $(this).serialize(),
            dataType: 'HTML',
            success: function($htm){
            	$( '#blog-list-view' ).html( $htm );
			}
		});
    }
	else {
    	$.get( "/cognitive-vitality/blog-landing-page-1", function( data ) {
        	$( '#blog-list-view' ).html( data );
        	matts_scroll_to('#blog-list-top');
      	});
    }
    return false;
});

$(document).on('submit', '#blog-search-form,#blog-search-form-mobile', function(e){
	e.preventDefault();
	var $keyword = $(this).find('input[name="keywords"]').val();
    $('#blog-filter-category input[type="checkbox"]').prop('checked',false);
    
    if ($keyword){
    	$.ajax({
			type: "POST",
            url: $(this).attr('action'),
            data: $(this).serialize(),
            dataType: 'HTML',
            success: function($htm){
            	$( '#blog-list-view' ).html( $htm );
			}
		});
    }
	else {
    	$.get( "/cognitive-vitality/blog-landing-page-1", function( data ) {
        	$( '#blog-list-view' ).html( data );
        	matts_scroll_to('#blog-list-top');
      	});
    }
    return false;
});

$(document).on('click', '.blog-topic', function(e){
	e.preventDefault();
    var $this = $(this), $val = $(this).attr('data-value');
    console.log($val);
    if ($('#blog-list-top').get(0)){
      $('#blog-filter-category input[type="checkbox"]').prop('checked',false);
      $('#blog-filter-category input[value="'+$val+'"]').prop('checked',true).trigger('change');
      matts_scroll_to('#blog-list-top');
    }
    else{
    
    }
    return false;
});

$(document).on('click', '.blog-more', function(e){
	e.preventDefault();
    var $this = $(this), $next_page = $('.blog-list-item:last').attr('data-count');
    var $total = $('.blog-list-item:last').attr('data-total');
    if (parseInt($next_page) < parseInt($total)){
      $.get( "/cognitive-vitality/blog-paging/P"+$next_page, function( data ) {
        $this.hide();
        $( '#blog-list-view' ).append( data );
        /*matts_scroll_to('#blog-list-top');
        window.history.pushState({},$('title').text(),$pathname+'/P'+$next_page);*/});
    }
    return false;
});

$(document).on('click', '.blog-less', function(e){
	e.preventDefault();
    var $prev_page = parseInt($('.blog-list-item:first').attr('data-count')) - 11;
    if ($prev_page > 1){
      $.get( "/cognitive-vitality/blog-paging/P"+$prev_page, function( data ) {
        	$( '#blog-list-view' ).html( data );
        	matts_scroll_to('#blog-list-top');
        	window.history.pushState({},$('title').text(),$pathname+'/P'+$prev_page);});
    }
    else{
      $resetBlog();
      window.history.pushState({},$('title').text(),$pathname);
      matts_scroll_to('#blog-list-top');
    }
    return false;
});

$(document).on('click', '.blog-more-search,.blog-less-search,.blog-more-topic,.blog-less-topic,.blog-more-author,.blog-less-author', function(e){
	e.preventDefault();
	var $this = $(this), $url = $(this).attr('href');
    $.get( $url, function( data ) {
    	$this.hide();
    	$( '#blog-list-view' ).append( data );
        /*matts_scroll_to('#blog-list-top');*/
     });
    return false;
});

$(document).on('change', '#blog-filter-category input[type="checkbox"]', function(e){
    $('#blog-search-form input[name="keywords"]').val('');
    var $vals = $('#blog-filter-category input[type="checkbox"]:checked').map(function(){
      return encodeURIComponent($(this).val());
    }).get();
    if ($vals.length){
      var $url = '/cognitive-vitality/blog-by-topic/' + $vals.join('|');
      $.get( $url, function( data ) {
      	$( '#blog-list-view' ).html( data );
      });
    }
    else{$resetBlog();}
	$('#blog-filter-category input[type="checkbox"]').each(function(i,itm){
    	$('#blog-filter-category-mobile input[value="' + $(this).attr('value') +'"]').prop('checked', $(this).is(':checked'));
    });
});
$(document).on('change', '#blog-filter-category-mobile input[type="checkbox"]', function(e){
    var $vals = $('#blog-filter-category-mobile input[type="checkbox"]:checked').map(function(){
      return encodeURIComponent($(this).val());
    }).get();
    if ($vals.length){
      var $url = '/cognitive-vitality/blog-by-topic/' + $vals.join('|');
      $.get( $url, function( data ) {
      	$( '#blog-list-view' ).html( data );
      });
    }
    else{$resetBlog();}
	$('#blog-filter-category-mobile input[type="checkbox"]').each(function(i,itm){
    	$('#blog-filter-category input[value="' + $(this).attr('value') +'"]').prop('checked', $(this).is(':checked'));
    });
});


$(document).on('click', '#blog-clear,#blog-clear-mobile', function(e){
	e.preventDefault();
	$('#blog-filter-category input[type="checkbox"]').prop('checked',false);
    $('#blog-filter-category-mobile input[type="checkbox"]').prop('checked',false);
    $('input[name="keywords"]').val('');
    $resetBlog();
    return false;
});

var $resetBlog = function(){
	$.get( "/cognitive-vitality/blog-landing-page-1", function( data ) {
        $( '#blog-list-view' ).html( data );
      });
};

$(document).on('click', '.ratings-more', function(e){
	e.preventDefault();
    $('.more-view').slice(0,$page_count).show().removeClass('more-view');
    if ( $('.more-view').length == 0){$(this).hide();}
    $paginate = $paginate + 1;
    $store_filters();
    return false;
});

$( "#search-sort" ).on( "selectmenuchange", function( event, ui ) {
	$search_order = ui.item.value;
    $search_sort = "asc";
	$run_filters();
});

$(document).on('click', '.ratings-sort', function(e){
	e.preventDefault();
    $this_search_order = $(this).attr('data-sort');
    if ($this_search_order == $search_order){
    	if ( $search_sort == 'desc'){
        	$search_sort = 'asc';
        }
        else{
        	$search_sort = 'desc';
        }
    }
    else{
    	$search_sort = 'asc';
    }
    $search_order = $this_search_order;
    $( "#search-sort" ).val($search_order).selectmenu('refresh');
	$run_filters();
    return false;
});

$(document).on('change', '#filter-category input[type="checkbox"]', function(e){
	$cat_filters = [];
	$('#filter-category input[type="checkbox"]:checked').each(function(i,itm){$cat_filters.push($(this).attr('value'));});
	$run_filters();
});

$(document).on('submit', '#filter-search-form', function(e){
	e.preventDefault();
    $cat_filters = [];
    $rating_filters = {benefit:0,evidence:0,safety:0};
    $search_order = "";
    $search_sort = "date";
    $paginate = 1;
    
    $('#filter-category input[type="checkbox"]').prop('checked',false);
    
    $( "#ratings-slider-benefit" ).slider( "value", 0 );
    $("#ratings-slider-benefit").find(".ratings-marker").remove();
    
    $( "#ratings-slider-evidence" ).slider( "value", 0 );
    $("#ratings-slider-evidence").find(".ratings-marker").remove();
    
    $( "#ratings-slider-safety" ).slider( "value", 0 );
    $("#ratings-slider-safety").find(".ratings-marker").remove();
    
    $( "#search-sort" ).val('date').selectmenu('refresh');
    

	$search_keyword = $('#search-keyword').val();
	$run_filters();
    return false;
});

var $run_filters = function(){
	
    $search_keyword = $('#search-keyword').val();
    
    if ($search_keyword.length){
    
    	console.log($search_keyword);

      $.ajax({
             type: "POST",
             url: $("#filter-search-form").attr('action'),
             data: $("#filter-search-form").serialize(),
             dataType: 'html',
             success: function(xml)
             {
             	console.log('ajax complete');
             	var $ids = [];
                $(xml).find('item').each(function(){
                    $ids.push( $(this).text() );
                });
                $filter_it($ids);
                console.log($ids);
             },
             error: function(jqXHR, textStatus, errorThrown){
             	console.log('ajax error:' + textStatus);
                console.log( errorThrown );
             }
           });

    }
    else
    {$filter_it();}
    
    $store_filters();
};

var $filter_it = function($ids){


	if($search_order !== $current_order || $search_sort !== $current_sort){
        $run_sort();
        $current_order = $search_order;
        $current_sort = $search_sort;
    }
    
    var $r_count = 0;
	$('.rating-item').each(function(i,itm){
    	var $this = $(this), $show = true;
        
        $(this).removeClass('more-view');
        
        // apply keyword search filters
        if (typeof $ids !== "undefined" && $ids.length > 0){
        	var $this_id = $this.attr('id');
            if ( $ids.indexOf( $this_id ) === -1) {
            	$show = false;
            }
        }
        
        // apply category filters
        if ($cat_filters.length > 0){
        	var $this_cat = $this.attr('data-category');
            if ( $cat_filters.indexOf( $this_cat ) === -1) {
            	$show = false;
            }
        }
        
        // apply ratings filters
        if ($rating_filters.benefit > 0){
        	var $this_benefit = $this.attr('data-benefit');
            if ( $this_benefit < $rating_filters.benefit){
            	$show = false;
            }
        }
        if ($rating_filters.evidence > 0){
        	var $this_evidence = $this.attr('data-evidence');
            if ( $this_evidence < $rating_filters.evidence){
            	$show = false;
            }
        }
        if ($rating_filters.safety > 0){
        	var $this_safety = $this.attr('data-safety');
            if ( $this_safety < $rating_filters.safety){
            	$show = false;
            }
        }
        
        if ($show){
        	
            $r_count++;
            if ($r_count <= ($paginate * $page_count)){$this.show();}
            else{
            	$this.hide();
                $this.addClass('more-view');
            }
        }
        else
        	$this.hide();
            
        if ($('.rating-item:visible').length == 0){$('#no-results').show();}
        else{$('#no-results').hide();}
            
        if ( $('.more-view').length == 0){$('.ratings-more').hide();} 
    });
};

var $run_sort = function(){
	var $container = $('#ratings-list-view').get(0) ? '#ratings-list-view' : '#ratings-grid-view';
    
	var $wrapper = $($container);
    var $attr = 'id';

    switch ($search_order){
    	case 'evidence':
        	$attr = 'data-evidence';
            break;
        case 'benefit':
        	$attr = 'data-benefit';
            break;
        case 'evidence':
        	$attr = 'data-evidence';
            break;
        case 'safety':
        	$attr = 'data-safety';
            break;
        case 'date':
        	$attr = 'data-date';
            break;
        case 'alpha':
        	var $attr = 'id';
            break;
    }
 
    if($('#ratings-grid-view').get(0) || $search_sort == "asc"){
      if ( $attr == 'id'){
        $wrapper.find('.rating-item').sort(function(a, b) {
        var compA = a.getAttribute($attr).toLowerCase();
        var compB = b.getAttribute($attr).toLowerCase();
        return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
        }).appendTo($wrapper);
      }
      else if ( $attr == 'data-date'){
          $wrapper.find('.rating-item').sort(function(a, b) {
              return +b.getAttribute($attr) - +a.getAttribute($attr);
          }).appendTo($wrapper);
      }
      else{
        $wrapper.find('.rating-item').sort(function(a, b) {
            return +b.getAttribute($attr) - +a.getAttribute($attr);
        }).appendTo($wrapper);
      }
   }
   else {
   	 if ( $attr == 'id'){
          $wrapper.find('.rating-item').sort(function(a, b) {
            var compA = a.getAttribute($attr).toLowerCase();
            var compB = b.getAttribute($attr).toLowerCase();
            return (compB < compA) ? -1 : (compB > compA) ? 1 : 0;
        }).appendTo($wrapper);
      }
      else{
        $wrapper.find('.rating-item').sort(function(a, b) {
            return +a.getAttribute($attr) - +b.getAttribute($attr);
        }).appendTo($wrapper);
      }
   }
}

var $store_filters = function(){
	if ($has_storage){
    	var $all_filters = {cat_filters: $cat_filters, rating_filters: $rating_filters, search_order: $search_order, search_sort: $search_sort, search_keyword: $search_keyword, paginate: $paginate};
        $storageType.all_filters = JSON.stringify($all_filters);
    }
}

var $clear_filters = function(){
	$cat_filters = [];
    $rating_filters = {benefit:0,evidence:0,safety:0};
    $search_order = "";
    $search_sort = "date";
    $search_keyword = "";
    $paginate = 1;
    $store_filters();
};

var $pop_filters = function(){
	if ($has_storage && $storageType.all_filters){
    
    	var $temp = JSON.parse($storageType.all_filters), $has_filters = false;
        
    	$cat_filters = $temp['cat_filters'];
        $rating_filters = $temp['rating_filters'];
        $search_order = $temp['search_order'];
        $search_sort = $temp['search_sort'];
        $search_keyword = $temp['search_keyword'];
        $paginate = $temp['paginate'];
        
        // set categories
        if (typeof $cat_filters !== "undefined"){
          $.each($cat_filters, function(i,itm){
              $('#filter-category input[value="' + itm + '"]').prop("checked",true);
              $has_filters = true;
          });
        }
        else{
        	$cat_filters = [];
        }
        
        // set ratings
        if (typeof $rating_filters !== "undefined"){
          if ( $rating_filters.benefit > 0){
              $( "#ratings-slider-benefit" ).slider( "value", $rating_filters.benefit * 25 );
              for (x = 1; x <= $rating_filters.benefit; x++) {
                  $("#ratings-slider-benefit").append("<span class='ratings-marker'></span>");
              }
              $has_filters = true;
          }
          if ( $rating_filters.evidence > 0){
              $( "#ratings-slider-evidence" ).slider( "value", $rating_filters.evidence * 25 );
              for (x = 1; x <= $rating_filters.evidence; x++) {
                  $("#ratings-slider-evidence").append("<span class='ratings-marker'></span>");
              }
              $has_filters = true;
          }
          if ( $rating_filters.safety > 0){
              $( "#ratings-slider-safety" ).slider( "value", $rating_filters.safety * 25 );
              for (x = 1; x <= $rating_filters.safety; x++) {
                  $("#ratings-slider-safety").append("<span class='ratings-marker'></span>");
              }
              $has_filters = true;
          }
        }
        else{
        	$rating_filters = {benefit:0,evidence:0,safety:0};
        }
        
        // set order
        if (typeof $search_order !== "undefined" && $search_order.length){
        	$( "#search-sort" ).val($search_order).selectmenu('refresh');
            $has_filters = true;
        }
        else{
        	$( "#search-sort" ).val('date').selectmenu('refresh');
        	$search_sort = "";
        }
        
        // set sort
        if (typeof $search_sort !== "undefined" && $search_sort.length){
            if ($search_sort == 'desc'){
            	$has_filters = true;
            }
        }
        else{
        	$search_sort = "";
        }
        
        // set keyword
        if (typeof $search_keyword !== "undefined" && $search_keyword.length){
        	$( "#search-keyword" ).val($search_keyword);
            $has_filters = true;
        }
        else{
        	$search_keyword = "";
        }
        
        // set paginate
        if (typeof $paginate == "undefined" || $paginate == 0){
        	$paginate = 1;
        }
        if ($paginate > 1) {
        	$has_filters = true;
        }

        if( $has_filters ){
        	//console.log('has stored filters');
        	$run_filters();
        }
        else{
         	//console.log('no stored filters');
            var yyz = 0;
        }
    }
}

$(document).on('click', '#search-clear', function(e){
	e.preventDefault();
	$cat_filters = [];
    $rating_filters = {benefit:0,evidence:0,safety:0};
    $search_order = "";
    $search_sort = "date";
    $search_keyword = "";
    $paginate = 1;
    
    $('#filter-category input[type="checkbox"]').prop('checked',false);
    
    $( "#ratings-slider-benefit" ).slider( "value", 0 );
    $("#ratings-slider-benefit").find(".ratings-marker").remove();
    
    $( "#ratings-slider-evidence" ).slider( "value", 0 );
    $("#ratings-slider-evidence").find(".ratings-marker").remove();
    
    $( "#ratings-slider-safety" ).slider( "value", 0 );
    $("#ratings-slider-safety").find(".ratings-marker").remove();
    
    $( "#search-sort" ).val('date').selectmenu('refresh');
    
    $( "#search-keyword" ).val('');
    
    $('.rating-item').each(function(i,itm){
    	$(this).show();
        $(this).removeClass('more-view');
    });
    
    $('.rating-item').slice($page_count).hide().addClass('more-view');
    if ( $('.more-view').length == 0){$('.ratings-more').hide();}
    else{$('.ratings-more').show();}

	$store_filters();
    return false;
});

function matts_scroll_to ( anch, $speed )
{
	if( ! $speed )
		$speed = 'slow';
		
	var $header_height = ( ($('#header').css("position") === "fixed") ) ? $('#header').height() : 0;	
	var $top = $(anch).offset().top - $header_height;
	$('html, body').animate({
        scrollTop: $top
    }, $speed);
	 return false;
}