(function($) {
	var products = $.products;
	
	$.history.bind('ready', function() {
		products.init('#products', page_id);
	});
	
	products.bind('ready', function() {
		var main = $('#products');
		
		$('th#position a', main).live('click', function() {
			products.sort('bestsellers');
			return false;
		});

		$('th#speed a', main).live('click', function() {
			products.sort('broadband_speed');
			//$.scrollTo('#products', 500);
			return false;
		});
		
		$('th#downloads a', main).live('click', function() {
			products.sort('download_limit');
			//$.scrollTo('#products', 500);
			return false;
		});
		
		$('th#contract a', main).live('click', function() {
			products.sort('contract_period');
			//$.scrollTo('#products', 500);
			return false;
		});
		
		$('th#monthly_cost a', main).live('click', function() {
			products.sort('monthly_cost');
			//$.scrollTo('#products', 500);
			//$('#sticky').show();
			return false;
		});
		
		$('a.more', main).live('click', function() {
			products.more(!products.more());
			if (!products.more()) {
				$.scrollTo('#products tbody tr:eq(7)', 0);
			}
			return false;
		});
	});

	products.bind('beforeSend', function() {
		$('a.more').addClass('loading_tag').html('Loading...');
		$('.loading_overlay').show();
		$('.loading_faded').show();
	});

	products.bind('complete', function() {
		var more = $('#more_results'), main = $('#products');
		
		if (more.length>0) {
			if (products.more()) {
				more.html('<a href="#" title="Show Top 10 Results" class="more">'+PTABLE_SHOW_TOP_ONLY+'</a>');
			} else {
				var total_products = $('.allproducts').html();
				more.html('<a href="#" title="Show More Results" class="more"><span>'+PTABLE_SHOW_ALL_LINK+'</span> <span class="moreproducts"> ('+total_products+' more)</span></a>')
			}
			more.show();
			$('a.more').removeClass('loading_tag');
		}

		/* LOADING
		 if ($('#more_results').length>0) {
					var total_products = $('.allproducts').html();
					$('#more_results').html('<a href="#" title="Show all packages" class="more"><span id="loading_tag">Loading...</span><span>Show all deals!</span><span class="moreproducts"> ('+total_products+' more)</span></a>');
					$('#more_results').show();
				}
		*/
		
		$('.loading_overlay').hide();
		$('.loading_faded').hide();
		$('#more_results > span').show();
		$('#loading_tag').hide();
		if ($('#products_controls').is(':visible')) {
			$('#filters_pointer').fadeIn();
			$('#products_extra li.filters').addClass('act');
		}
		Cufon.refresh();
		/*
		 * all code below should be outside this method and not need to be
		 * re-bound on every update...
		 */
		
		if (!$.browser.msie || $.browser.version < 7) {
			$('#products .downloads.selected').css('background-color','#DDEDFB');
			$('#products .monthly_cost.selected').css('background-color','#FFE5F5');
			$('#products .contract.selected').css('background-color','#ECFAE6');
			$('#products .speed.selected').css('background-color','#D9E1F0');
		}

		$('tbody tr:not(.divider)', main).mouseover(function(){
			$('#row_highlight .popup_width').remove();
			$('tbody tr.hover', main).removeClass('hover');
			$('tbody .new_button.hover', main).removeClass('hover');
			if (!$.browser.msie || $.browser.version > 6) {
				$(this).addClass('hover').find('.new_button').addClass('hover');
			}
			var row = $(this).position();
			$('#row_highlight').show().find('a').unbind('click').attr('href',$(this).find('.monthly_cost .new_button').attr('href'));
			$(this).find('.popup_width').eq(0).clone().prependTo($('#row_highlight'));
			$('#row_highlight').css('top',row.top).css('left',row.left).css('height',$(this).innerHeight()-3);
			Cufon.refresh('.top10font');
		});
		
		main.mouseleave(function(){
			$('tbody tr.hover', main).removeClass('hover');
			$('#products tbody td .new_button').removeClass('hover');
			$('#products #row_highlight').hide();
;
			Cufon.refresh('.top10font');
		});
		
		$('#products tbody tr.divider').mouseenter(function(){
			$('#products').mouseleave();
		});
		

		$('#products .monthly_cost .conditions_link').each(function() {
			var target = $(this).parent().find('.conditions');
			target.prepend($(this).prev('.cost').clone().append('a month'));
			$(this).hover(function(){
				target.fadeIn('fast');
			},function(){
				target.fadeOut('fast');
			});
		});
		
		
		
		$('<div id=\"sticky\"><table></table></div>').prependTo('#products').hide();
		
		$('#products table thead').clone().appendTo('#sticky table');
		$('#products table').stickyheader();

		/*
		$('.more_info').fancybox({
			'zoomSpeedIn': 200,
			'zoomSpeedOut': 300,
			'overlayShow': true,
			'hideOnContentClick': false,
			'overlayOpacity': 0.8,
			'padding':0,
			'frameWidth':735,
			'frameHeight':453,
			'callbackOnShow': function(){
				$('.product_info.product').show();
				$('#fancy_bg').addClass('info_box');
				$('#info_lightbox').css('position','static');
				$('#fancy_close').empty().append('Close');
				$('.product_thumbnail .provider_logo').eq(1).clone().removeClass('hidden').appendTo('#image_wrapper');
				$('#lightbox_nav img').click(function(){
					$('#info_holder').fadeOut();
					$('#image_wrapper').empty();
					$(this).next().clone().removeClass('hidden').appendTo('#image_wrapper');
					var slide = $(this).parent().attr('class').substring(1);
					$('.product_info').hide();
					$('#'+slide+'.product_info').fadeIn();
					$('#info_holder').fadeIn();
					return false;
				});
			},
			'callbackOnClose': function(){
				$('#products table').stickyheader();
			}
		});
		*/
		return false;
	});

	products.bind('ready', function() {
		$('#products').addClass('js_active');
		
		$('.loading_overlay').hide();
		
		products.trigger('complete');
		
	});
})(jQuery);
