// JavaScript Document
var currentpage = -1,
	currenttotal = 0,
	items_per_page = 9, // Default - overide in file
	aurl = "/p/call.php",
	cartid,
	sortby,
	blockme = "#content,li[id^=s_]",
	_pageData= {},
	_data = {};

function main() {
	if(currentpage < 0) {
		currentpage = 0;
	} 

	getInfo();	

}

$(function(){


	$('.matches').click(function () {
		$('#introtext').hide();
		$('#maincontent').show();
		// Set Hidden Form Value
		if($('#'+$(this).attr("text")).val() != "") {
			$('#'+$(this).attr("text")).val("");
			$(this).removeClass("highlight");	   
		} else {
			$('#'+$(this).attr("text")).val($(this).attr("rel"));			
			$(this).addClass("highlight");	   
		}

		loadpage(0);
	}).hover(
      function () {
        $(this).addClass("pointer");
      }, 
      function () {
        $(this).removeClass("pointer");
      }
    );

	$("#sortby").change(function() {
		sortby = this.value;
		currentpage = 0;
		//window.location.href = makeLocation(false,false);
		window.location.hash = makeLocation(false,false);
		getInfo();
	});
	
	main();
});

function getCurrentPage() {
	var data = {'currentpage':0,'vendors':[],'filters':[]}
	if(window.location.hash) {
		var hash = window.location.hash.substr(1).split('/');

		for(var i=0;i<hash.length;i+=2) {
			if(hash[i].startsWith('s_')) {
/*				switch(hash[i].substr(2).toLowerCase()) {
					case 'vendors':
						data.vendors = hash[i+1].split(',');
						break;
				}*/
				data.filters.push({'id':hash[i].substr(2).toLowerCase(),'values':hash[i+1].split(',')});
			} else {
				switch(hash[i].toLowerCase()) {
					case 'page':
						data.currentpage = parseInt(hash[i+1]);
						break;
					case 'sortby':
						data.sortby = hash[i+1];
						break;
				}
			}
		}
		
	}
	return data;
}

function getInfo() {
	var data = {};
	_pageData = getCurrentPage();
	currentpage = _pageData.currentpage;
	if(_pageData.sortby) {
		sortby = _pageData.sortby;
		$('#sortby').val(sortby);
	}

	data.cartid = cartid;
	data.p = currentpage;
	data.c = cat;
	data.sortby = sortby;
	
	for(var i in _pageData.filters) {
		data['s_'+_pageData.filters[i].id] = _pageData.filters[i].values.join(',');
	}

	$(blockme).block();

	$.ajax({
		type: "POST",
		url: aurl,
		dataType: 'json',
		data: data,
		success: function(data) {
			_data = data;
			currenttotal = data.total;
			callback(currenttotal,currentpage);
		}
   });
}

function callback(total,page) {

	$("#pagenav").pagination(total,{
		 num_edge_entries:1,
		items_per_page:items_per_page,
		num_display_entries:5,
		current_page:page,
		link_to:makeLocation(true,true),
		callback:loadpage
	});
}

function makeLocation(loading,id) {
	var link = '';

	if(id === true)
		link = '#page/__id__';
	else
		link = '#page/'+currentpage;

	if(loading === true) {
		var _pageData = getCurrentPage();
		for(var i in _pageData.filters) {
			link += '/s_' + _pageData.filters[i].id + '/' + _pageData.filters[i].values.join(',');
		}
//		link = link + '/s_vendors/' + _pageData.vendors.join(',');
	} else {
/*		if((ven = $('input[name=s_manufacturer]:checked')).length > 0) {
			link = link + '/s_vendors/' + $.makeArray(ven.map(function() {return this.value;})).join(',');
		}*/
		// todo:
		$('li[id^=s_]').each(function() {
			var id = this.id.substr(2),
				_arr = [];
			if((_arr = $('input:checked',this)).length > 0) {
				link = link + '/s_'+id+'/' + $.makeArray(_arr.map(function() {return this.value;})).join(',');
			}
		});
	}
	link = link + '/sortby/'+$('#sortby').val();
	return link;
}

function makeLI(i) {	
	var li = '<li class="productitem">',
		url = '/p/'+i.caturi+'/'+i.uriid+'.php';
		
	if(i.oldway)
		url = i.uriid;
		
	li += '<span class="imgheader"><a href="'+url+'"><img border="0" src="'+i.imgurl+'" alt="'+i.name+'"/></a></span>';
	if(i.badges.length) {
		li += '<ul id="badges">';
		for(var a in i.badges) {
			li += '<li class="text_badge">'+i.badges[a].display_text+'</li>';
		}
		li += '</ul>';
	}

	li += '<p class="screencellsdesc">';
	li += '<a href="'+url+'">'+i.name+'</a><br/>by '+i.brand_name+'</p>';
	li += '<div class="screenprices">';
	if(i.lprice) {
		li += 'List: <span class="listprice">'+i.lprice+'</span><br/>';
	}
	li += 'Price: <span class="yourprice">'+i.uprice+'</span><br/><span class="itemnumber">Item #'+i.sku+'</span></div>';
	li += '</li>';
	return li;
}

function makeItems(payload) {
	var startat = currentpage * items_per_page,
	stopat = startat + items_per_page > payload.length ? payload.length : startat + items_per_page,
	li = '';

	for(var i = startat;i < stopat;i++) {
		 li += makeLI(payload[i]);
	}
	$('#lookup').html(li);
}

function buildPage(){
	var data = _data;
	if( data.total > 0) {
		makeItems(data.payload);
		
		if(data.filters !== undefined && data.filters.length > 0) {
			var filters = data.filters,
				shown = []
				$.each($('.showlessaction:visible').closest('ul').parent(),(function(i,val) {
					shown.push('#' + $(val).attr('id'));
				}));
			$('#narrowresults').remove();			
			$('<li id="narrowresults" class="menubg6">NARROW RESULTS BY</li>').appendTo($filterid);
			$('li[id^=s_]').remove();
			_pageData = getCurrentPage();
			for(var f in filters) {
				var id = 's_'+filters[f].header.id.toLowerCase(),
					ul = $('<ul>'),
					filterCount = 0,
					hideClass='';
				if(filters[f].data.length < 2) continue;
				$('<li id="'+id+'">').text(filters[f].header.name.toUpperCase()).appendTo($filterid);
				$(ul).append('<li class="showmore showmoreaction searchli"><span style="font-weight:bold">+</span> Expand <span style="color:#666666;">('+(filters[f].data.length)+')</span></li>');
				$(ul).append('<li class="searchli showless showlessaction"><span style="font-weight:bold">-</span> Collapse</li>');				
				for(var i in filters[f].data) {		
					var html = '<label><input name="'+id+'" type="checkbox" value="'+filters[f].data[i].id+'" /> '+ filters[f].data[i].name;
					if(filters[f].data[i].total !== undefined)
						html += ' <span style="color:#666666;">('+filters[f].data[i].total+')</span>';
					html += '</label>';
					
					$('<li class="searchli showless">').html(html).appendTo(ul);
				}
				$('#'+id).append(ul);
				$('.showless').hide();
				if(filters[f].selected)
					$($filterid + ' input[name='+id+']').val(filters[f].selected.split(','));				
				$('input[name='+id+']').each(function() {
					var _arr = [];
					for(var i in _pageData.filters) {
						if(_pageData.filters[i].id == this.name.substr(2))
							_arr = _pageData.filters[i].values;
					}
					if($.inArray(this.value,_arr) > -1)
						this.checked = true;
				});
			}
		}
		$('input:checked',$filterid).closest('ul').children('li').not('.showmoreaction').show().end().filter('.showmoreaction').hide();
		if(shown.length)
	 		$('ul > li',shown.join(',')).not('.showmoreaction').show().end().filter('.showmoreaction').hide();
	} else {
		$("#lookup").empty().append('<br clear="all" />No Products Found.');
	}
	$(blockme).unblock();
}

$('.showmoreaction').live('click',function() {
	$(this).hide().closest('ul').find('.showless').show();
});

$('.showlessaction').live('click',function() {
	$(this).closest('ul').find('.showless').hide().end().find('.showmoreaction').show();
});

function loadpage(page, pagination_container) {
	var data = {};
	window.location.hash = makeLocation(true,false);
	$(blockme).block();
	$('#pagenavbottom').empty().append($('#pagenav').clone(true));
	currentpage = page;
	_pageData = getCurrentPage();
	// Only show blurb on first page
	if(page)
		$('#blurb').hide();
	else
		$('#blurb').show();

	data.cartid = cartid;
	data.p = page;
	data.c = cat;
	data.sortby = sortby;
	
	for(var i in _pageData.filters) {
		data['s_'+_pageData.filters[i].id] = _pageData.filters[i].values.join(',');
	}

	buildPage();
}

$($filterid + ' input[name^=s_]').live('click', function() {
	currentpage = 0;
	window.location.hash = makeLocation(false,false);
	getInfo();
});

function menucallback(data) {
	if(data.length >0) {
		$("#menu").html(data);
	} else {
		$("#menu").html("No Menu Found.");
	}
}


