(function() {

var filter = {};

function filter_sort(e){

	var t = YAHOO.util.Event.getTarget(e);

	if(t.nodeName.toLowerCase() === 'a'){

		YAHOO.util.Event.preventDefault(e);

		if(YAHOO.util.Dom.hasClass(t, 'filter-off')){

			var old = YAHOO.util.Dom.getElementsByClassName('filter-on', 'a', $('filter_sort'))[0];
			YAHOO.util.Dom.addClass(old, 'filter-off');
			YAHOO.util.Dom.removeClass(old, 'filter-on');

			YAHOO.util.Dom.addClass(t, 'filter-on');
			YAHOO.util.Dom.removeClass(t, 'filter-off');

			var data = t.href.substring(t.href.indexOf('#')+1);

			filter.sort = data;

			refresh_results();
		}
	}
}

function filter_price(e){

	var t = YAHOO.util.Event.getTarget(e);

	if(t.nodeName.toLowerCase() === 'a'){

		YAHOO.util.Event.preventDefault(e);

		if(YAHOO.util.Dom.hasClass(t, 'filter-off')){

			var old = YAHOO.util.Dom.getElementsByClassName('filter-on', 'a', $('filter_price'))[0];
			YAHOO.util.Dom.addClass(old, 'filter-off');
			YAHOO.util.Dom.removeClass(old, 'filter-on');

			YAHOO.util.Dom.addClass(t, 'filter-on');
			YAHOO.util.Dom.removeClass(t, 'filter-off');

			var data = t.href.substring(t.href.indexOf('#')+1);

			filter.price = data;

			refresh_results();
		}
	}
}

function filter_brand(e){

	var t = YAHOO.util.Event.getTarget(e);

	if(t.nodeName.toLowerCase() === 'a'){

		YAHOO.util.Event.preventDefault(e);

		if(YAHOO.util.Dom.hasClass(t, 'filter-off')){

			var old = YAHOO.util.Dom.getElementsByClassName('filter-on', 'a', $('filter_brand'))[0];
			YAHOO.util.Dom.addClass(old, 'filter-off');
			YAHOO.util.Dom.removeClass(old, 'filter-on');

			YAHOO.util.Dom.addClass(t, 'filter-on');
			YAHOO.util.Dom.removeClass(t, 'filter-off');

			var data = t.href.substring(t.href.indexOf('#')+1);

			filter.brand = data;

			refresh_results();
		}
	}
}

function filter_custom(e){

	var t = YAHOO.util.Event.getTarget(e);

	if(t.nodeName.toLowerCase() === 'a'){

		YAHOO.util.Event.preventDefault(e);

		if(YAHOO.util.Dom.hasClass(t, 'filter-off')){

			var data = t.href.substring(t.href.indexOf('#')+1);
			data = data.split(':');

			var old = YAHOO.util.Dom.getElementsByClassName('filter-on', 'a', $('filter_'+data[0]))[0];
			YAHOO.util.Dom.addClass(old, 'filter-off');
			YAHOO.util.Dom.removeClass(old, 'filter-on');

			YAHOO.util.Dom.addClass(t, 'filter-on');
			YAHOO.util.Dom.removeClass(t, 'filter-off');

			filter.custom[data[0]] = data[1];

			refresh_results();
		}
	}
}

function refresh_results(){

	$('products').innerHTML = '<img src="images/ajax-loading.gif" />';

	var params = '?category_id='+$('category_id').innerHTML
	+ '&sort=' + filter.sort;

	var filtered = false;
	if(filter.price){
		filtered = true;
		params += '&price=' + filter.price;
	}
	if(filter.brand){
		filtered = true;
		params += '&brand=' + filter.brand;
	}
	for(var key in filter.custom) {
		if(filter.custom[key]){
			filtered = true;
			params += '&custom[]=' + key + ':' + filter.custom[key];
		}
	}

	// only show featured items if results have not been filtered
	if(filtered){
		params += '&filtered=1';
	}

	var callback = {success:refresh_results_callback};
	YAHOO.util.Connect.asyncRequest('GET', 'product_category_ajax.php'+params, callback);
}
function refresh_results_callback(o){

	$('products').innerHTML = o.responseText;
}

function products_bubble(e){

	var t = YAHOO.util.Event.getTarget(e);

	if(t.nodeName.toLowerCase() === 'input'){

		if(YAHOO.util.Dom.hasClass(t, 'saved-toggle')){

			//$('saved_products_loader').style.display = '';
			$('saved_products_loader').removeClassName('hide');
			$('saved_products_loader').show();
			var product_id = t.value;
			var action = t.checked?'add':'remove';

			var params = 'action='+action+'&product_id='+product_id;
			var callback = {success:saved_products_bubble_callback};
			YAHOO.util.Connect.asyncRequest('POST', 'saved_products_ajax.php', callback, params);
		}
	}
	else if(t.nodeName.toLowerCase() === 'img'){

		t = t.parentNode;

		if(YAHOO.util.Dom.hasClass(t, 'cart-add')){

			YAHOO.util.Event.preventDefault(e);
			$('cart_loader').style.display = '';		
			Element.removeClassName('cart_loader','hide');
			Element.show('cart_loader');
		
			var product_id = t.href.substring(t.href.indexOf('#')+1);

			var params = 'action=add&product_id='+product_id;
			var callback = {success:cart_update_callback};
			YAHOO.util.Connect.asyncRequest('POST', 'cart_update.php', callback, params);			
		}
	}
	else if(t.nodeName.toLowerCase() === 'a'){

		if(YAHOO.util.Dom.hasClass(t, 'help-save')){
			
			YAHOO.util.Event.preventDefault(e);
			help('template.help_save.html');
		}
	}

}

function sort_menu(){

	var catID = $('category_id').innerHTML;

	var params = 'catID='+catID;
	var callback = {success:sort_menu_callback};
	YAHOO.util.Connect.asyncRequest('GET', 'category_sort.php?'+params, callback);			
}
function sort_menu_callback(o){

	$('sort-menu').innerHTML = o.responseText;

	YAHOO.util.Event.on('filter_sort','click',filter_sort);
}

YAHOO.util.Event.on(window,'load',function(){
	
	
	if($('sort-menu'))
		sort_menu();
		
	// filters
	if($('filter_price'))
		YAHOO.util.Event.on('filter_price','click',filter_price);
	if($('filter_brand'))
		YAHOO.util.Event.on('filter_brand','click',filter_brand);
	if($('filter_custom'))
		YAHOO.util.Event.on('filter_custom','click',filter_custom);

	filter.sort = 'price_low';
	filter.custom = {};

	YAHOO.util.Event.on('products','click',products_bubble);
	
});

})();