var CATALOG = {
	catalog: function(){
		
		if(SERVICE.cookie('productQuery')){
			var productQueryCookied = JSON.parse(SERVICE.cookie('productQuery'));			
		}else{
			var productQueryCookied = {};
		}
		
		console.log('productQueryCookied',productQueryCookied);
		
		var $sortSelect = $('select[name="sort_by"]').change(function(){
			CATALOG.reload();
		});
		
		$('.sort-bar .direction').click(function(){
			if($(this).hasClass('asc')){
				$(this).removeClass('asc');
				$(this).addClass('desc');
			}else{
				$(this).removeClass('desc');
				$(this).addClass('asc');				
			}
			CATALOG.reload();
		});
		
		$('input[name^=filter]').change(function(){
			CATALOG.reload();
		});
	},
	reload: function(){
		
		$('.product-list-loader').fadeIn(150);
		
		var page = 1;
		
		var filters = {
			thc: [],
			cbd: [],
			yield: [],
			height: [],
			flavor: [],
			positive_effect: [],
			medical_effect: []
			
		};
		
		
		$('input[name^=filter]:checked').each(function(){				
			var dataName = $(this).data('name');
			var dataValue = $(this).data('value');	
			if(filters.hasOwnProperty(dataName)){
				filters[dataName].push(dataValue);					
			}							
		});
		
		if($('.sort-bar .direction').hasClass('asc')){
			var direction = 'asc';
		}else{
			var direction = 'desc';		
		}
		
		var productQuery = {
			sort_by: $('select[name="sort_by"] option:selected').val(),
			sort_dir: direction,
			filter: filters,
			page: page
		};
		
		$('input[name^=filter]').attr('disabled', true);
		$('input[name^=filter]').parent('label').attr('disabled', true);
		
		SERVICE.cookie('productQuery', JSON.stringify(productQuery));
		
		SERVICE.ajaxCall('/api/product-filter', productQuery, function(res){
			
			console.log(res);
			
			$('.product-list-loader').fadeOut(150);
			$('input[name^=filter]').removeAttr('disabled');
			$('input[name^=filter]').parent('label').removeAttr('disabled');
		
			if(res.success == 1){
				
				var totalRecords = res.data.num_rows;
				var pageRecords = res.data.rows.length;
				var pageStart = (res.data.limit*page)-res.data.limit+1;
				var pageStop = pageStart+pageRecords-1;
									
				$('.sort-bar').find('.viewing-from').html(pageStart);
				$('.sort-bar').find('.viewing-to').html(pageStop);
				$('.sort-bar').find('.viewing-total').html(totalRecords);
				
				CATALOG.paging(page, res.data.limit, res.data.num_rows);
				
				$('.product-list').html('');
				if(res.data.rows.length>0){
					for(var i=0;i<res.data.rows.length;i++){
						
						var item = res.data.rows[i];
						
						var url = '/'+item.slug+'-seeds';
						
						var $listItem = $('<li class="product"><div class="inner"><div class="item">'
												+'<a class="image" href="'+url+'">'
													+'<img src="'+item.image+'"/>'
													+'<div class="labels"></div>'
												+'</a>'
												+'<a class="title" href="'+url+'">'+item.title+'</a>'
												+'<p class="offers"></p>'
												+'<div class="action"><span class="price-line"><span class="line"></span></span></div>'
											+'</div></div></li>');
						
						if(item.hybrid){
							$listItem.find('.labels').append('<span class="label label-hybrid">hybrid</span>');
						}
						if(item.indica){
							$listItem.find('.labels').append('<span class="label label-indica">indica</span>');
						}
						if(item.sativa){
							$listItem.find('.labels').append('<span class="label label-sativa">sativa</span>');
						}
						if(item.thc && item.thc == 'high'){
							$listItem.find('.labels').append('<span class="label label-thc">high thc</span>');
						}
						if(item.cbd && item.cbd == 'high'){
							$listItem.find('.labels').append('<span class="label label-cbd">high cbd</span>');
						}
						if(item.yield && item.yield == 'high'){
							$listItem.find('.labels').append('<span class="label label-yield">high yield</span>');
						}
						
						if(item.offers>0){
							$listItem.find('.offers').html(item.offers+' offers');
						}else{
							$listItem.find('.offers').html('unknown offers');
						}
						
						if(item.price_from>0){
							
							var priceTxt = CATALOG.productPrice(item.price_from);
							
							$listItem.find('.price-line .line').html('starting at '+priceTxt);
						}else{
							$listItem.find('.price-line .line').html('price not available');
						}
						
						$('.product-list').append($listItem);
						
					}
				}
			
			}
			
		});
		
	},
	productPrice: function(euroCents){
		
		var currentCurrency = 'eur';
		
		if(SERVICE.cookie('currency')){
			currentCurrency = SERVICE.cookie('currency');
		}
		
		var currencyData = window.currencies[currentCurrency];
		
		var price = euroCents/currencyData.rate;
		
		return currencyData.symbol+(price/100).toFixed(2);
	},
	paging: function(pageCurrent, limit, total){
		
		var urlSplit = window.location.pathname.split( '/' );
		var url = '/'+urlSplit[1];
		
		var start = limit*pageCurrent-limit;		
		var pageTotal = Math.ceil(total/limit);
		
		if (typeof history.pushState !== 'undefined') {
			var title = event.target.innerHTML;
			var data = [];
			data[title] = {};
	 		data[title].url = url+'/'+pageCurrent;
			history.pushState(data[title], title, data[title].url);
		}
				
		
		var $htmlList = $('<ul class="pagination"></ul>');
		
		if(pageTotal > 1){
			if(pageCurrent == 1){
				$htmlList.append('<li class="page-item mob"><span class="page-link"><i class="fa fa-angle-double-left"></i></span></li>');
				$htmlList.append('<li class="page-item mob"><span class="page-link"><i class="fa fa-angle-left"></i></span></li>');
			}else{
				$htmlList.append('<li class="page-item mob"><a class="page-link" href="'+url+'/1"><i class="fa fa-angle-double-left"></i></a></li>');
				$htmlList.append('<li class="page-item mob"><a class="page-link" href="'+url+'/'+(pageCurrent-1)+'"><i class="fa fa-angle-left"></i></a></li>');				
			}
		}
		
		if(pageTotal < 10){
			
			for(var i=1;i<=pageTotal;i++){
				if(pageCurrent == i){
					$htmlList.append('<li class="page-item  mob active"><span class="page-link">'+i+'</span></li>');					
				}else{
					$htmlList.append('<li class="page-item"><a class="page-link" href="'+url+'/'+i+'">'+i+'</a></li>');								
				}
			}
			
		}else{
			
			var beforeRange = 5;
			var afterRange = 5;
			
			var beforeNegative = 0;
			
			if(pageCurrent < beforeRange){
				beforeRange = beforeRange-pageCurrent;
				afterRange = afterRange+beforeNegative;				
			}
			
			if( (pageCurrent+afterRange) > pageTotal ){
				afterNegative = (pageTotal-(pageCurrent+afterRange)) * -1;
				beforeRange = beforeRange+afterNegative;
			}
			
			if(pageCurrent < beforeRange){
				
				for(var i=1;i<pageCurrent;i++){
					$htmlList.append('<li class="page-item"><a class="page-link" href="'+url+'/'+i+'">'+i+'</a></li>');					
				}
				
			}else{
				
				for(var i=pageCurrent-beforeRange;i<pageCurrent;i++){
					$htmlList.append('<li class="page-item"><a class="page-link" href="'+url+'/'+i+'">'+i+'</a></li>');					
				}
					
			}
			
			$htmlList.append('<li class="page-item active mob"><span class="page-link">'+i+'</a></li>');	
			
			if((pageCurrent+afterRange) > pageTotal){
				
				for(var i=(pageCurrent+1);i<pageTotal;i++){
					$htmlList.append('<li class="page-item"><a class="page-link" href="'+url+'/'+i+'">'+i+'</a></li>');					
				}
				
			}else{
				
				for(var i=(pageCurrent+1);i<(pageCurrent+afterRange);i++){
					$htmlList.append('<li class="page-item"><a class="page-link" href="'+url+'/'+i+'">'+i+'</a></li>');					
				}
				
			}
		}
		
		
		if(pageTotal > 1){
			if(pageCurrent == pageTotal){
				$htmlList.append('<li class="page-item mob"><span class="page-link"><i class="fa fa-angle-roight"></i></span></li>');	
				$htmlList.append('<li class="page-item mob"><span class="page-link"><i class="fa fa-angle-double-right"></i></span></li>');			
			}else{
				$htmlList.append('<li class="page-item mob"><a class="page-link" href="'+url+'/'+(pageCurrent+1)+'"><i class="fa fa-angle-right"></i></a></li>');	
				$htmlList.append('<li class="page-item mob"><a class="page-link" href="'+url+'/'+pageTotal+'"><i class="fa fa-angle-double-right"></i></a></li>');					
			}
		}
		
		$('.pagination-wrapper').html($htmlList);
		
	}
};
