(function($, undefined){
	$(function(){
		
		$('#priceminmax').addClass('hidden');
		$('#submitdiv').addClass('hidden');
		
		$form = $('form.productFilter');
		$products = $('.product-row');
		
		$form.each(function(){
			var $allColours = $form.find('[name=all-colours]'),
				$colourOptions = $form.find('[name*=colours]').not($allColours),
				$allSizes = $form.find('[name=all-sizes]'),
				$sizeOptions = $form.find('[name*=sizes]').not($allSizes),
				$inputs = $form.find(':input'),
				$filterOptions = $form.find('.refine'),
				$filterInfo = $form.find('.filterInfo'),
				$numResults = $form.find('.numResults'),
				$onSale = $form.find('#on-sale'),
				$exclusive = $form.find('#exclusive'),
				$permalink = $form.find('.permalink');

			var ajaxForm = new $.ajaxForm({
				$ : $form,
				getBy :  ':input',
				success : function(x){
					$products.html(x);
	
					var num = $products.find('.smallItemBrowse').length;
					$numResults.html(num);
	
					updatePermalink();
				},
				url : '/get/browsePage/fetchProducts.php'
			});


			function updatePermalink(){
				// get data
				ajaxForm.data = {};
				ajaxForm.getData();
				var params = window.location.protocol+'//'+window.location.host+window.location.pathname+'?';
				
				for(var i in ajaxForm.data){
					if(i!="ajaxForm"){
						params += i+'='+ajaxForm.data[i]+'&';
					}
				}

				params = params.substr(0, (params.length-1));
				$permalink.attr('href', params);
			};

			updatePermalink();

			$form.bind('submit', function(e){
				e.preventDefault();

				$products.find('.loading').remove();
				$('<div class="loading">&nbsp;</div>').fadeTo(0,0.5).appendTo($products);

				clearTimeout($form.data('submitTimeout'));
				$form.data('submitTimeout', setTimeout(function(){
					ajaxForm.get();
				},300));
			});
		
			$form.find('.priceSlider').slider({
			range : true,
			min : parseFloat($form.find('.priceMin').text()),
			max : parseFloat($form.find('.priceMax').text()),
			values : [$('[name="price:gte"]').val(), $('[name="price:lte"]').val()],
			slide :function(event, ui){
				ui.values[0] = parseFloat(ui.values[0]);
		
				$form.find('[name="price:gte"]').val(ui.values[0]);
				$form.find('[name="price:lte"]').val(ui.values[1]).trigger('change');
		
				$form.find('.priceMin').html(ui.values[0]);
				$form.find('.priceMax').html(ui.values[1]);
		
				$('#priceMin').attr('value',ui.values[0]);
				$('#priceMax').attr('value',ui.values[1]);
				
				console.log(ui.values);
		
				}
			});
			
			$allColours.bind('click', function(){
				var value = ($(this).attr('checked'))?false:true;
				if(!value){
					$colourOptions.attr('checked', value);
				}

			});

			$colourOptions.bind('click', function(){
				if($colourOptions.not('[checked=false]').length>0){
					$allColours.attr('checked', false);
				} else {
					$allColours.attr('checked', true);
				}
			});

			$allSizes.bind('click', function(){
				var value = ($(this).attr('checked'))?false:true;
				if(!value){
					$sizeOptions.attr('checked', value);
				}
			});
			
			$sizeOptions.bind('click', function(){
				if($sizeOptions.not('[checked=false]').length>0){
					$allSizes.attr('checked', false);
				} else {
					$allSizes.attr('checked', true);
				}
			});
			
			$onSale.bind('click', function(){
				var value = ($(this).attr('checked'))?false:true;
			});
			
			$exclusive.bind('click', function(){
				var value = ($(this).attr('checked'))?false:true;
			});
			
			$filterOptions.each(function(){
				var $el = $(this),
					$title = $el.find('.title'),
					$details = $el.find('div.details');

				$title.append('<span class="modified"></span>');

				$title.bind('click', function(e){
					e.preventDefault();
					$details.slideToggle();
				});

				$form.find(':input.submit').hide();
				$form.find('div.submit').css({
					padding : 0,
					'font-size' : 0,
					'line-height' : 0,
					margin : 0
				})


				$el.find(':input').each(function(){
					var $e = $(this);
					$e.bind('change keyup', function(){
						$form.trigger('submit');

						var modified = "";

						$el.find(':input').each(function(){
							var $e = $(this);
							if($e.val()+'|'+$e.attr('checked')!==$e.data('originalHash')){
								modified = " *";
							}
						});

						$title.find('.modified').html(modified);


						if(modified==""){
							modified = false;
							$filterOptions.find(':input').each(function(){
								var $e = $(this);
								if($e.val()+'|'+$e.attr('checked')!==$e.data('originalHash')){
									modified = true;
								}
							});
						}


					});
					$e.data('originalHash', $e.val()+'|'+$e.attr('checked'));
				});

			});
			
			$form.find('#sort-by').bind('change', function(){
				$form.trigger('submit');
			});
			
			$form.find('[type=checkbox]').bind('click', function(){
				$(this).trigger('change');
			});
			
		});
	});
})(jQuery);
