(function(i) {var u =navigator.userAgent;var e=/*@cc_on!@*/false; var st =
setTimeout;if(/webkit/i.test(u)){st(function(){var dr=document.readyState;
if(dr=="loaded"||dr=="complete"){i()}else{st(arguments.callee,10);}},10);}
else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){
document.addEventListener("DOMContentLoaded",i,false); } else if(e){     (
function(){var t=document.createElement('doc:rdy');try{t.doScroll('left');
i();t=null;}catch(e){st(arguments.callee,0);}})();}})(sortinit);

var prodlines = new Array();		// for Products
var spanids = new Array();
var lastsorttype = 'default';
var bReadyToSort = false;

var searchlines = new Array();		// for Search Results
var searchspanids = new Array();
var searchlastsorttype = 'default';
var bSearchReadyToSort = false;

var productInfo = new Array();		// for Sections
var productInfoSpans = new Array();
var sectlastsorttype = 'default';
var bSectReadyToSort = false;

var bSortInitalised = false;

//Filtering and Paging variables
var numAllListProducts = -1;
var numProductsPerPage = 9;
var numProductPages = -1;
var nowShownPage = 1;
var productInfo_unfiltered = new Array();
var productInfo_filtered = new Array();
var isFiltered = false;
//--

//  Search Results Related
function searchreseq(seqtype){			// resequence search results
	if ( ! (bSearchReadyToSort || bPageIsLoaded) )
		{
		alert('Please wait until the page has fully loaded. (SRC)');
		return false;
		}
	searchlines.length = 0;
	searchspanids.length = 0;
	var spans = document.getElementsByTagName('span');
	for ( var i=0; i<spans.length; i++ )
		{
		if ( spans[i].id.indexOf('searchsortline_') == 0 )
			{
			searchspanids.push(spans[i]);
			searchlines.push({
				id: spans[i].id, 
				price: spans[i].getAttribute('price').replace(/[^\d\.]/g,''), 
				seq: spans[i].getAttribute('seq'), 
				pname: spans[i].getAttribute('pname'),
				phtml: spans[i].innerHTML
				});
			}
		}
	
		
	if ( seqtype == 'lowhigh' ) searchlines.sort(function(a,b){return a.price - b.price});
	if ( seqtype == 'highlow' ) searchlines.sort(function(a,b){return b.price - a.price});
	if ( seqtype == 'default' ) searchlines.sort(function(a,b){return a.seq - b.seq});
	if ( seqtype == 'alpha' )   searchlines.sort(function(a,b){return (a.pname <= b.pname) ? -1 : 1;});
	if ( seqtype == 'reverse' ) searchlines.sort(function(a,b){return (b.pname <= a.pname) ? -1 : 1;});
	searchlastsorttype = seqtype;
	setCookie('SEARCHSORTTYPE', searchlastsorttype);
	searchshowsorttype();
	for ( var i=0; i<searchlines.length; i++ )
		{
		searchspanids[i].innerHTML = searchlines[i].phtml;
		searchspanids[i].id = searchlines[i].id; 
		searchspanids[i].setAttribute('price', searchlines[i].price); 
		searchspanids[i].setAttribute('seq', searchlines[i].seq); 
		searchspanids[i].setAttribute('pname', searchlines[i].pname); 
		}
	return false;
}

function searchshowsorttype(){		// highlight the type of sort that's currently in use
	if ( document.getElementById('searchsortdropdown') )	// see if we're using drop-downs
		{
		var dropdowns = document.getElementsByTagName('select');	// all drop-downs		
		for ( var i=0; i<dropdowns.length; i++ )
			{
			if ( dropdowns[i].name == 'searchsortdropdown' )		// relevant one
				{
				var sdd = dropdowns[i];
				for ( var j=0; j<sdd.options.length; j++ )
					{
					if ( sdd.options[j].value == searchlastsorttype ) sdd.selectedIndex = j;
					}
				}
			}	
		}	
	else								
		{
		var buttonlinks = document.getElementsByTagName('input');	// looking for buttons
		for ( var i=0; i<buttonlinks.length; i++ )
			{
			if ( buttonlinks[i].name == 'searchsortlink' )
				{
				buttonlinks[i].className = ( buttonlinks[i].id == searchlastsorttype ) ? 'searchsortactive' : 'searchsortinactive';
				}	
			}
		var buttonlinks = document.getElementsByTagName('a');		// looking for A tags
		for ( var i=0; i<buttonlinks.length; i++ )
			{
			if ( buttonlinks[i].name == 'searchsortlink' )
				{
				buttonlinks[i].className = ( buttonlinks[i].id == searchlastsorttype ) ? 'searchsortactive' : 'searchsortinactive';
				}	
			}
		}
}


// Section Related
function sectionseq(seqtype){			// resequence Sections
	if ( ! (bSectReadyToSort || bPageIsLoaded) )
		{
		alert('Please wait until the page has fully loaded. (SECT)');
		return false;
		}
	productInfo.length = 0; 
	productInfoSpans.length = 0;					
	var spans = document.getElementsByTagName('span');
	for ( var i=0; i<spans.length; i++ )
		{
		if ( spans[i].id.indexOf('sectionline_') == 0)
			{
			productInfoSpans.push(spans[i]);
			productInfo.push({	
				id: spans[i].id, 
				price: spans[i].getAttribute('price'), 
				seq: spans[i].getAttribute('seq'), 
				pname: spans[i].getAttribute('pname'),
				phtml: spans[i].innerHTML
				});
			}
		}
	
	if ( seqtype == 'lowhigh' ) productInfo.sort(function(a,b){return a.price - b.price});
	if ( seqtype == 'highlow' ) productInfo.sort(function(a,b){return b.price - a.price});
	if ( seqtype == 'default' ) productInfo.sort(function(a,b){return a.seq - b.seq});
	if ( seqtype == 'alpha' )   productInfo.sort(function(a,b){return (a.pname <= b.pname) ? -1 : 1;});
	if ( seqtype == 'reverse' ) productInfo.sort(function(a,b){return (b.pname <= a.pname) ? -1 : 1;});
	sectlastsorttype = seqtype;
	setCookie('SECTSORTTYPE', sectlastsorttype);
	sectshowsorttype();
	for ( var i=0; i<productInfo.length; i++ )
		{
		productInfoSpans[i].innerHTML = productInfo[i].phtml;
		productInfoSpans[i].id = productInfo[i].id; 
		productInfoSpans[i].setAttribute('price', productInfo[i].price); 
		productInfoSpans[i].setAttribute('seq', productInfo[i].seq); 
		productInfoSpans[i].setAttribute('pname', productInfo[i].pname); 
		}
	return false;
}

function isInArray(item, arr){
	for(i=0;i<arr.length;i++) if(arr[i]==item) return true;
	return false;
}

function allInArray(item, arr){
	var count = 0;
	for(i=0;i<arr.length;i++) if(item.indexOf(arr[i]) > 0) count++;
	if(count == arr.length) return true; else return false;
}

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function refreshPagingVariables(showPage){
	oldNumAllListProducts = numAllListProducts;
	numAllListProducts = productInfo_unfiltered.length;
	oldNumProductPages = numProductPages;
	numProductPages = Math.ceil(numAllListProducts/numProductsPerPage);
	if(oldNumAllListProducts != numAllListProducts) nowShownPage = 1; // When filtering changed the number of shown products jump to 1
	if(oldNumProductPages != numProductPages) nowShownPage = 1; // When filtering changed the number of pages jump to 1
	if(nowShownPage != showPage && getScrollXY()[1] > 500) window.scroll(0,450); //When using bottom pagination - scroll to the top one
	if(showPage != null && showPage<=numProductPages && nowShownPage != showPage) nowShownPage = showPage;
	if(nowShownPage>numProductPages) nowShownPage = 1; // Jump to the first page when shownPage is too high.
	
	//REFRESH PAGING DIV
	var pagingHtmlContent = '';
	pagingHtmlContent+='<ul class=\'pagingList cinlinebmid\'>';
	
	if(nowShownPage != 1) pagingHtmlContent+='<li class=\'pagingButtonSmallImage pagingEnabledLink showmeinlineblock iewibl\' name=\'pagingLinkFirst\' onclick=\'pagingFirstPage();\' style=\'background-position: 2px -22px; background-repeat: no-repeat; \'></li>';
	else pagingHtmlContent+='<li class=\'pagingButtonSmallImageDisabled pagingDisabledLink showmeinlineblock iewibl\' name=\'pagingLinkFirst\' style=\'background-position: 2px -22px; background-repeat: no-repeat; background-attachment: center; \'></li>';
	
	if(nowShownPage != 1) pagingHtmlContent+='<li class=\'pagingButtonSmallImage pagingEnabledLink showmeinlineblock iewibl\' name=\'pagingLinkPrevious\' onclick=\'pagingPreviousPage();\' style=\'background-position: 2px 2px; background-repeat: no-repeat; \'></li>';
	else pagingHtmlContent+='<li class=\'pagingButtonSmallImageDisabled pagingDisabledLink showmeinlineblock iewibl\' name=\'pagingLinkPrevious\' style=\'background-position: 2px 2px; background-repeat: no-repeat; \'></li>';
	
	for(var i=0; i<numProductPages; i++) {
		if(nowShownPage != i+1) pagingHtmlContent+='<li class=\'pagingEnabledLink showmeinlineblock iewibl\' name=\'pagingPageNumberSpan\' onclick=\'pagingGoToPage('+(i+1)+');\'>'+(i+1)+'</li>';
		else pagingHtmlContent+='<li class=\'pagingDisabledLink showmeinlineblock iewibl\' id=\'pagingCurrentPageNo\' name=\'pagingPageNumberSpan\'>'+(i+1)+'</li>';
	}
	
	if(nowShownPage != numProductPages) pagingHtmlContent+='<li class=\'pagingButtonSmallImage pagingEnabledLink showmeinlineblock iewibl\' name=\'pagingLinkNext\' onclick=\'pagingNextPage();\' style=\'background-position: 2px -10px; background-repeat: no-repeat; \'></li>';
	else pagingHtmlContent+='<li class=\'pagingButtonSmallImageDisabled pagingDisabledLink showmeinlineblock iewibl\' name=\'pagingLinkNext\' style=\'background-position: 2px -10px; background-repeat: no-repeat; \'></li>';
	
	if(nowShownPage != numProductPages) pagingHtmlContent+='<li class=\'pagingButtonSmallImage pagingEnabledLink showmeinlineblock iewibl\' name=\'pagingLinkLast\' onclick=\'pagingLastPage();\' style=\'background-position: 2px -34px; background-repeat: no-repeat; \'></li>';
	else  pagingHtmlContent+='<li class=\'pagingButtonSmallImageDisabled pagingDisabledLink showmeinlineblock iewibl\' name=\'pagingLinkLast\' style=\'background-position: 2px -34px; background-repeat: no-repeat; \'></li>';
	
	pagingHtmlContent+='<li class=\'showmeinlineblock iewibl pagingViewTypeLink\' style=\'margin-left: 10px; text-align: center;\' name=\'pagingViewTypeLink\' onclick=\'pagingChangeViewType();\'>View All</li>';
	pagingHtmlContent += '</ul>';
	$('div[name="productPagingDiv"]').html(pagingHtmlContent);
}

function pagingNextPage(){
if(nowShownPage<numProductPages){
	refreshPagingVariables(nowShownPage+1);
	returnFilteredSequence();
}
}

function pagingPreviousPage(){
if(nowShownPage>=2) {
	refreshPagingVariables(nowShownPage-1);
	returnFilteredSequence();
}
}

function pagingGoToPage(pageNo){
	refreshPagingVariables(pageNo);
	returnFilteredSequence();
}

function pagingLastPage(){
	refreshPagingVariables(numProductPages);
	returnFilteredSequence();
}

function pagingFirstPage(){
	refreshPagingVariables(1);
	returnFilteredSequence();
}

function pagingChangeViewType(){
	if(numProductsPerPage == 9) {
		numProductsPerPage = 1000;
	} else {
		numProductsPerPage = 9;
	}
	returnFilteredSequence();
	if(numProductsPerPage == 9) $('li[name="pagingViewTypeLink"]').html('View All'); else $('li[name="pagingViewTypeLink"]').html('View 9');
}

// -- -------------------------------------------------------------------------------------------------
// -- --------------------------------------------------------------------------------------
// -- Section Filtered Sequence - Piotr
// -- --------------------------------------------------------------------------------------
// -- -------------------------------------------------------------------------------------------------


// INITIALIZATION

//VARS

// --------- FILTER CHECKBOX HANDLER
var memoryFilters = new Array(); //-- MEMORY FILTERS CHECK HANDLER
var memoryFiltersSize = memoryFilters.length;
var speedFilter = 10; //-- SPEED FILTER CHECK HANDLER
var faxspeedFilter = 9; //-- FAX SPEED FILTER CHECK HANDLER
var faxMemoryFilter = 'Any'; //-- FAX MEMORY FILTER CHECK HANDLER
var duplexFilter = ''; //-- DUPLEX FILTER CHECK HANDLER
var faxFilter = ''; //-- DUPLEX FILTER CHECK HANDLER
var adfFilter = ''; //-- ADF FILTER CHECK HANDLER
var usbFilter = ''; //-- USB FILTER CHECK HANDLER
var interfaceFilter = new Array(); //-- INTERFACE FILTERS CHECK HANDLER
var interfaceFilterSize = interfaceFilter.length;
var priceMaxFilter = 0;

// -- JQUERY UI FOR FILTERING
$(document).ready(function() {
	$(function() {
		$( "#printSpeedRadioButtons" ).buttonset();
	});
	$(function() {
		$( "#faxSpeedRadioButtons" ).buttonset();
	});
	$(function() {
		$( "#faxMemoryRadioButtons" ).buttonset();
	});
	$(function() {
		$( "#duplexCheckbox" ).button();
	});
	$(function() {
		$( "#usbCheckbox" ).button();
	});
	$(function() {
		$( "#faxCheckbox" ).button();
	});
	$(function() {
		$( "#adfCheckbox" ).button();
	});
	$(function() {
		$( "#interfaceCheckboxes" ).buttonset();
	});
	$(function() {
		$( "#priceRangeSlider" ).slider({
			range: "min",
			value: 0,
			min: 0,
			max: 1500,
			step: 50,
			slide: function( event, ui ) {
				$( "#amount" ).val( "£" + ui.value );
				if(ui.value == 0) $( "#amount" ).val("None");
			},
			change: function(event, ui) {
				refreshPriceMaxFilter();
				filteringWaitAndReturnSequence();
			}
		});
		if($( "#priceRangeSlider" ).val() == 0) $( "#amount" ).val("None"); else
		$( "#amount" ).val( "£" + $( "#priceRangeSlider" ).slider( "value" ) );
	});
	$(function() {
		$("a[name='filteringResetButton']").button();
	});
	
	// SHOW JAVASCRIPT DIVS IF JAVASCRIPT ENABLED
$('div[name="filteringDiv"]').css('display','block');
$('div[name="sortingDiv"]').css('display','block');
		//refreshMemoryFilters();
		refreshSpeedFilter();
		refreshFaxSpeedFilter();
		refreshFaxMemoryFilter();
		refreshDuplexFilter();
		refreshFaxFilter();
		refreshAdfFilter();
		refreshUSBFilter();
		refreshInterfaceFilter();
		refreshPriceMaxFilter();
		returnFilteredSequence_noLoading();
		
	//-- FAX MEMORY FILTER CHECK HANDLER
		$('input[name*="faxMemory_filter"]').click(function(){
			refreshFaxMemoryFilter();
			returnFilteredSequence();
		});
	//-- END
	
	//-- SPEED FILTER CHECK HANDLER
		$('input[name*="speed_filter"]').click(function(){
			refreshSpeedFilter();
			returnFilteredSequence();
		});
	//-- END
	
		//-- FAX SPEED FILTER CHECK HANDLER
		$('input[name*="faxs_filter"]').click(function(){
			refreshFaxSpeedFilter();
			returnFilteredSequence();
		});
	//-- END
	
	//-- DUPLEX FILTERS CHECK HANDLER
		$('input[name*="duplex_filter"]').click(function(){
			refreshDuplexFilter();
			returnFilteredSequence();
		});
	//-- END
	
	//-- USB FILTERS CHECK HANDLER
		$('input[name*="usb_filter"]').click(function(){
			refreshUSBFilter();
			returnFilteredSequence();
		});
	//-- END
	
	//-- FAX FILTERS CHECK HANDLER
		$('input[name*="fax_filter"]').click(function(){
			refreshFaxFilter();
			returnFilteredSequence();
		});
	//-- END
	
	//-- FAX FILTERS CHECK HANDLER
		$('input[name*="adf_filter"]').click(function(){
			refreshAdfFilter();
			returnFilteredSequence();
		});
	//-- END
	
	//-- INTERFACE FILTERS CHECK HANDLER
		$('input[name*="interface_filter"]').click(function(){
			refreshInterfaceFilter();
			returnFilteredSequence();
		});
	//-- END
	
	//-- PRICE MAX FILTER SELECTION HANDLER
		$('div[name*="price_max_filter"]').change(function(){
			refreshPriceMaxFilter();
			returnFilteredSequence_noLoading();
		});
	//-- END
	
		$('a[name="filteringResetButton"]').click(function(){
			resetFilteringPanel();
		});
	
	//--   pagingMaxPriceMinusButton and pagingMaxPricePlusButton
	
		var sliderMinVal = $('#priceRangeSlider').slider('option','min');
		var sliderMaxVal = $('#priceRangeSlider').slider('option','max');
		var sliderStep = $('#priceRangeSlider').slider('option','step');
		var sliderValue = $('#priceRangeSlider').slider('value');
		
		$('div[name="pagingMaxPriceMinusButton"]').click(function(){
			if($('#priceRangeSlider').slider('value') - sliderStep*2 >= sliderMinVal)
				$('#priceRangeSlider').slider('value', $('#priceRangeSlider').slider('value')-sliderStep*2);
			else
				$('#priceRangeSlider').slider('value', sliderMinVal);
				
			if($('#priceRangeSlider').slider('value') == 0) $( "#amount" ).val("None"); else
			$( "#amount" ).val( "£" + $( "#priceRangeSlider" ).slider( "value" ) );
			refreshPriceMaxFilter();
		});

		$('div[name="pagingMaxPricePlusButton"]').click(function(){
			if($('#priceRangeSlider').slider('value') + sliderStep*2 <= sliderMaxVal)
				$('#priceRangeSlider').slider('value', $('#priceRangeSlider').slider('value')+sliderStep*2);
			else
				$('#priceRangeSlider').slider('value', sliderMaxVal);
				
			if($('#priceRangeSlider').slider('value') == 0) $( "#amount" ).val("None"); else
			$( "#amount" ).val( "£" + $( "#priceRangeSlider" ).slider( "value" ) );
			refreshPriceMaxFilter();
		});
	//-- (END)  PRICE RANGE SLIDER EVENTS
});

// FUNCTIONS

	function filteringWaitAndReturnSequence() {
		$("#priceRangeSlider").stopTime("refreshSequence");
		$("#priceRangeSlider").oneTime(1000,"refreshSequence",function() {
			returnFilteredSequence();
		});
	}
	
	function refreshFaxSpeedFilter(){
	$('input[name*="faxMemory_filter"]').each(function(){
		if($(this).is(':checked')) faxMemoryFilter = $(this).attr('value');
	});
}

function refreshUSBFilter(){
	usbFilter = new Array();
	$('input[name*="usb_filter"]').each(function(){
	if($(this).is(':checked')) usbFilter = 'USB';
	});
}

function refreshDuplexFilter(){
	duplexFilter = new Array();
	$('input[name*="duplex_filter"]').each(function(){
	if($(this).is(':checked')) duplexFilter = 'Automatic';
	});
}

function refreshFaxFilter(){
	faxFilter = new Array();
	$('input[name*="fax_filter"]').each(function(){
	if($(this).is(':checked')) faxFilter = 'Fax';
	});
}

function refreshAdfFilter(){
	adfFilter = new Array();
	$('input[name*="adf_filter"]').each(function(){
	if($(this).is(':checked')) adfFilter = 'Adf';
	});
}

function refreshInterfaceFilter(){
	interfaceFilter = new Array();
	$('input[name*="interface_filter"]').each(function(){
	if($(this).is(':checked')) interfaceFilter.push($(this).attr('value'));
	});
	 interfaceFilterSize = interfaceFilter.length;
}

function refreshSpeedFilter(){
	$('input[name*="speed_filter"]').each(function(){
		if($(this).is(':checked')) speedFilter = $(this).attr('value');
	});
}

function refreshFaxSpeedFilter(){
	$('input[name*="faxs_filter"]').each(function(){
		if($(this).is(':checked')) faxspeedFilter = $(this).attr('value');
	});
}

function refreshFaxMemoryFilter(){
	$('input[name*="faxMemory_filter"]').each(function(){
		if($(this).is(':checked')) faxMemoryFilter = $(this).attr('value');
	});
}

function refreshPriceMaxFilter(){
	$('div[name*="price_max_filter"]').each(function(){
		priceMaxFilter = parseInt($(this).slider('value'))*100;
	});
}

function filteringLoadingOn(){
	$(".productPagingDivBottom").fadeOut(400);
	$('div[name="overlay"]').fadeIn(400).fadeTo(0,0.5);
	$('div[name="overlay2"]').fadeIn(1).fadeTo(0,0.5).delay(300);
}

function filteringLoadingOff(){
	$('div[name="overlay2"]').fadeOut(1);
	$('div[name="overlay"]').delay(200).fadeOut(100);
	$(".productPagingDivBottom").fadeIn(100);
}

function returnFilteredSequence(){
	filteringLoadingOn();
	filteredSeq(document.sortForm.sectsortlink.options[document.sortForm.sectsortlink.selectedIndex].value, speedFilter, duplexFilter, interfaceFilter, priceMaxFilter, faxFilter, adfFilter, usbFilter, faxspeedFilter, faxMemoryFilter);
	filteringLoadingOff();
}

function returnFilteredSequence_noLoading(){
	filteredSeq(document.sortForm.sectsortlink.options[document.sortForm.sectsortlink.selectedIndex].value, speedFilter, duplexFilter, interfaceFilter, priceMaxFilter, faxFilter, adfFilter, usbFilter, faxspeedFilter, faxMemoryFilter);
}

function resetFilteringPanel(){
$('input[name*="speed_filter"]').first().attr('checked','checked');
$('input[name*="faxs_filter"]').first().attr('checked','checked');
$('input[name*="faxMemory_filter"]').first().attr('checked','checked');
			$('input[name*="interface_filter"]').each(function(){
				$(this).removeAttr('checked');
			});
			$('input[name*="duplex_filter"]').each(function(){
				$(this).removeAttr('checked');
			});
			$('input[name*="fax_filter"]').each(function(){
				$(this).removeAttr('checked');
			});
			$('input[name*="usb_filter"]').each(function(){
				$(this).removeAttr('checked');
			});
			$('input[name*="adf_filter"]').each(function(){
				$(this).removeAttr('checked');
			});
			
			$( "#printSpeedRadioButtons" ).buttonset('refresh');
			$( "#faxSpeedRadioButtons" ).buttonset('refresh');
			$( "#faxMemoryRadioButtons" ).buttonset('refresh');
			$( "#interfaceCheckboxes" ).buttonset('refresh');
			$( "#duplexCheckbox" ).button('refresh');
			$( "#faxCheckbox" ).button('refresh');
			$( "#adfCheckbox" ).button('refresh');
			$( "#usbCheckbox" ).button('refresh');
			$('#priceRangeSlider').slider('value', 0);
			$( "#amount" ).val("None");
			
			refreshPriceMaxFilter();
			refreshSpeedFilter();
			refreshFaxSpeedFilter();
			refreshFaxMemoryFilter();
			refreshDuplexFilter();
			refreshFaxFilter();
			refreshUSBFilter();
			refreshAdfFilter();
			refreshInterfaceFilter();
			returnFilteredSequence_noLoading();
}
	
// DISPLAY
function filteredSeq(seqtype, speedFilter, duplexFilter, interfaceFilter, priceMaxFilter, faxFilter, adfFilter, usbFilter, faxspeedFilter, faxMemoryFilter, showPage){			// resequence Sections
	/*if ( ! (bSectReadyToSort || bPageIsLoaded) )
		{
		alert('Please wait until the page has fully loaded. (SECT)');
		return false;
		}*/
	productInfo.length = 0; 
	productInfoSpans.length = 0;					
	var spans = document.getElementsByTagName('span');
	for ( var i=0; i<spans.length; i++ )
		{
		if ( spans[i].id.indexOf('sectionline_') == 0)
			{
			productInfoSpans.push(spans[i]);
			productInfo.push({	
				id: spans[i].id, 
				price: spans[i].getAttribute('price'), 
				seq: spans[i].getAttribute('seq'), 
				pname: spans[i].getAttribute('pname'),
				mem: spans[i].getAttribute('mem'),
				speed: spans[i].getAttribute('speed'),
				faxspeed: spans[i].getAttribute('faxspeed'),
				duplex: spans[i].getAttribute('duplex'),
				fax: spans[i].getAttribute('fax'),
				adf: spans[i].getAttribute('adf'),
				usb: spans[i].getAttribute('usb'),
				inter: spans[i].getAttribute('inter'),
				visibility: spans[i].style.visibility,
				display: 'none',
				phtml: spans[i].innerHTML
				});
			}
		}
		
		
	if ( seqtype == 'lowhigh' ) productInfo.sort(function(a,b){return a.price - b.price});
	if ( seqtype == 'highlow' ) productInfo.sort(function(a,b){return b.price - a.price});
	if ( seqtype == 'default' ) productInfo.sort(function(a,b){return a.seq - b.seq});
	if ( seqtype == 'alpha' )   productInfo.sort(function(a,b){return (a.pname <= b.pname) ? -1 : 1;});
	if ( seqtype == 'reverse' ) productInfo.sort(function(a,b){return (b.pname <= a.pname) ? -1 : 1;});
	if ( seqtype == 'speedLowHigh' ) productInfo.sort(function(a,b){return parseInt(a.speed.replace('ppm','')) - parseInt(b.speed.replace('ppm',''))});
	if ( seqtype == 'speedHighLow' ) productInfo.sort(function(a,b){return parseInt(b.speed.replace('ppm','')) - parseInt(a.speed.replace('ppm',''))});
	
	productInfo_unfiltered = new Array();
	productInfo_filtered = new Array();
	
	for ( var i=0; i<productInfo.length; i++ ) {
		isFiltered = false;
		if(faxMemoryFilter != 'Any') if(productInfo[i].mem.indexOf('MB') == -1 || parseInt(productInfo[i].mem.substr(0,2)) < parseInt(faxMemoryFilter)) isFiltered = true;
		//if(!isInArray(productInfo[i].mem.replace(' MB',''), memoryFilters)) isFiltered = true;
		if(productInfo[i].usb.indexOf('USB') == -1 && usbFilter!='') isFiltered = true;
		if(productInfo[i].adf != 'Automatic Document Feeder (ADF)' && adfFilter!='') isFiltered = true;
		if(productInfo[i].fax == '.' && faxFilter!='') isFiltered = true;
		if(productInfo[i].duplex != 'Automatic' && duplexFilter != '') isFiltered = true;
		if(!allInArray(productInfo[i].inter, interfaceFilter)) isFiltered = true;
		if(parseInt(productInfo[i].speed.replace('ppm','')) < parseInt(speedFilter) && speedFilter != 0) isFiltered = true;
		//alert(faxspeedFilter+' '+productInfo[i].faxspeed.replace(' Kbps',''));
		if(parseInt(productInfo[i].faxspeed.replace(' Kbps','')) < parseInt(faxspeedFilter) && faxspeedFilter != 0) isFiltered = true;
		if(parseInt(productInfo[i].price) > priceMaxFilter && priceMaxFilter != 0) isFiltered = true;
		if(!isFiltered) {
			productInfo[i].display='inline'; 
			productInfo_unfiltered.push(productInfo[i]);
		} else {
			productInfo[i].display='none'; 
			productInfo_filtered.push(productInfo[i]);
		}
	}
	
	//MOVING SOME PRODUCTS TO THE END OF THE QUEUE
	if (seqtype == 'lowhigh' || seqtype == 'highlow') { // Moving products with price 0 to the end while sorting by price
		var unfiltered_priceNonZero = new Array();
		var unfiltered_priceZero = new Array();
		for ( var i=0; i<productInfo_unfiltered.length; i++ ) { // Separate
			if (parseInt(productInfo_unfiltered[i].price) == 0)  // Price != 0 goes to the beginning
				unfiltered_priceZero.push(productInfo_unfiltered[i]);
			else
				unfiltered_priceNonZero.push(productInfo_unfiltered[i]);
		}
		productInfo_unfiltered = new Array();
		for(var i=0; i<unfiltered_priceNonZero.length; i++) productInfo_unfiltered.push(unfiltered_priceNonZero[i]); //Push != 0 products
		for(var i=0; i<unfiltered_priceZero.length; i++) productInfo_unfiltered.push(unfiltered_priceZero[i]); //Push == 0 products
	}
		
	
	// SETTING PAGING VARIABLES
	refreshPagingVariables(showPage);
	
	// PAGES TO BE SHOWN CALCULATIONS
	var shownProductFrom = (nowShownPage - 1) * numProductsPerPage; //ex (1-1)*10 = from 0, 10, 20 etc
	var showProductTo = shownProductFrom + (numProductsPerPage - 1); //ex 0+(9) = to 9, 19, 29 etc
	
	
	// RESEQUENCING
	var productInfoAll = new Array();
	var productInfoAll_notShown = new Array();
	var productInfoAll_zeroPrice = new Array(); // To put products with price 0 at the end of the queue
	
		
	// PAGING - HIDE PRODUCTS THAT ARE NOT ON CURRENT PAGE
	for ( var i=0; i<productInfo_unfiltered.length; i++ ) {
		if(i>=shownProductFrom && i<=showProductTo) {
			productInfo_unfiltered[i].display='inline';
			productInfoAll.push(productInfo_unfiltered[i]);
		} else {
			productInfo_unfiltered[i].display='none';
			productInfoAll_notShown.push(productInfo_unfiltered[i]);			
		} 
	}
	
	//MOVE EVERYTHING TO productInfoALL IN CORRECT SEQUENCE
	for ( var i=0; i<productInfo_filtered.length; i++ ) productInfoAll_notShown.push(productInfo_filtered[i]);
	for (var i=0; i<productInfoAll_notShown.length; i++) productInfoAll.push(productInfoAll_notShown[i]);
	
	if (sectlastsorttype != seqtype) {nowShownPage = 1; refreshPagingVariables();} // When sorting jump to page 1
	sectlastsorttype = seqtype;
	setCookie('SECTSORTTYPE', sectlastsorttype);
	sectshowsorttype();
	
	for ( var i=0; i<productInfoAll.length; i++ ) {
		productInfoSpans[i].innerHTML = productInfoAll[i].phtml;
		productInfoSpans[i].id = productInfoAll[i].id; 
		productInfoSpans[i].setAttribute('price', productInfoAll[i].price); 
		productInfoSpans[i].setAttribute('seq', productInfoAll[i].seq); 
		productInfoSpans[i].setAttribute('pname', productInfoAll[i].pname); 
		productInfoSpans[i].setAttribute('mem', productInfoAll[i].mem); 
		productInfoSpans[i].setAttribute('speed', productInfoAll[i].speed); 
		productInfoSpans[i].setAttribute('duplex', productInfoAll[i].duplex); 
		productInfoSpans[i].setAttribute('fax', productInfoAll[i].fax); 
		productInfoSpans[i].setAttribute('inter', productInfoAll[i].inter); 
		productInfoSpans[i].style.display = productInfoAll[i].display;
	}
	
	// When no products are shown - NO RESULTS
	if(productInfoAll_notShown.length == productInfo.length) {
		$('span[name="pagingNoResults"]').remove();
		$('div[name="productsRow"]').first().after('<span class=\'pagingNoResultsMessage\' name=\'pagingNoResults\'>No products found.<br/><a name=\'filteringResetButton\' onclick=\'resetFilteringPanel();\' class=\'noResultsResetLink\'>Reset</a></span>');
		$('.pagingList').css('display','none');
	} else {
		$('span[name="pagingNoResults"]').remove();
		$('.pagingList').css('display','inline');
	}
	
	// Removing empty row DIVs
	$('div[name="productsRow"]').each(function(){
		if($(this).children().first().children().first().css('display') == 'none') $(this).css('display', 'none'); else $(this).css('display', 'inline');
	});
	
	//$('div[name="overlay"]').delay(5000).css('display','none');
	return false;
}


// -- END  Section Filtered Sequence - Piotr
// -- --------------------------------------------------------------------------------------
// -- -------------------------------------------------------------------------------------------------




function sectshowsorttype(){		// highlight the type of sort that's currently in use
	if ( document.getElementById('sectionsortdropdown') )	// see if we're using drop-downs
		{
		var dropdowns = document.getElementsByTagName('select');	// all drop-downs		
		for ( var i=0; i<dropdowns.length; i++ )
			{
			if ( dropdowns[i].name == 'sectionsortdropdown' )		// relevant one
				{
				var sdd = dropdowns[i];
				for ( var j=0; j<sdd.options.length; j++ )
					{
					if ( sdd.options[j].value == sectlastsorttype ) sdd.selectedIndex = j;
					}
				}
			}	
		}	
	else								
		{
		var buttonlinks = document.getElementsByTagName('input');	// looking for buttons
		for ( var i=0; i<buttonlinks.length; i++ )
			{
			if ( buttonlinks[i].name == 'sectsortlink' )
				{
				buttonlinks[i].className = ( buttonlinks[i].id == sectlastsorttype ) ? 'sectsortactive' : 'sectsortinactive';
				}	
			}
		var buttonlinks = document.getElementsByTagName('a');		// looking for A tags
		for ( var i=0; i<buttonlinks.length; i++ )
			{
			if ( buttonlinks[i].name == 'sectsortlink' )
				{
				buttonlinks[i].className = ( buttonlinks[i].id == sectlastsorttype ) ? 'sectsortactive' : 'sectsortinactive';
				}	
			}
		}
}

// Product Related
function reseq(seqtype, gotoanchor){			// resequence products
	if ( ! (bReadyToSort || bPageIsLoaded) )
		{
		alert('Please wait until the page has fully loaded. (PROD)');
		return false;
		}
	prodlines.length = 0;
	spanids.length = 0;
	var spans = document.getElementsByTagName('span');
	for ( var i=0; i<spans.length; i++ )
		{
		if ( spans[i].id.indexOf('sortline_') == 0 )
			{
			spanids.push(spans[i]);
			prodlines.push({
				id: spans[i].id, 
				price: spans[i].getAttribute('price'), 
				seq: spans[i].getAttribute('seq'), 
				pname: spans[i].getAttribute('pname'),
				phtml: spans[i].innerHTML
				});
			}
		}
		
	if ( seqtype == 'lowhigh' ) prodlines.sort(function(a,b){return a.price - b.price});
	if ( seqtype == 'highlow' ) prodlines.sort(function(a,b){return b.price - a.price});
	if ( seqtype == 'default' ) prodlines.sort(function(a,b){return a.seq - b.seq});
	if ( seqtype == 'alpha' )   prodlines.sort(function(a,b){return (a.pname <= b.pname) ? -1 : 1;});
	if ( seqtype == 'reverse' ) prodlines.sort(function(a,b){return (b.pname <= a.pname) ? -1 : 1;});
	lastsorttype = seqtype;
	setCookie('SORTTYPE', lastsorttype);
	showsorttype();
	for ( var i=0; i<prodlines.length; i++ )
		{
		spanids[i].innerHTML = prodlines[i].phtml;
		spanids[i].id = prodlines[i].id; 
		spanids[i].setAttribute('price', prodlines[i].price); 
		spanids[i].setAttribute('seq', prodlines[i].seq); 
		spanids[i].setAttribute('pname', prodlines[i].pname); 
		}
	if ( gotoanchor && location.hash ) scrolltoanchor(location.hash);	// Product Page just loaded and Anchor so we need to reposition

	//
	//  
	//
	
	// Tabber (needs V210 onwards) - reset Tabber
	if( window.resetallpanes ) resetallpanes();

	// Lightbox / Slimbox
	if ( window.Slimbox && window.Slimbox.scanPage ) Slimbox.scanPage();
	
	return false;
}
	
function showsorttype(){		// highlight the type of sort that's currently in use
	if ( document.getElementById('sortdropdown') )	// see if we're using drop-downs
		{
		var dropdowns = document.getElementsByTagName('select');	// all drop-downs		
		for ( var i=0; i<dropdowns.length; i++ )
			{
			if ( dropdowns[i].name == 'sortdropdown' )		// relevant one
				{
				var sdd = dropdowns[i];
				for ( var j=0; j<sdd.options.length; j++ )
					{
					if ( sdd.options[j].value == lastsorttype ) sdd.selectedIndex = j;
					}
				}
			}	
		}	
	else								
		{
		var buttonlinks = document.getElementsByTagName('input');	// looking for buttons
		for ( var i=0; i<buttonlinks.length; i++ )
			{
			if ( buttonlinks[i].name == 'sortlink' )
				{
				buttonlinks[i].className = ( buttonlinks[i].id == lastsorttype ) ? 'sortactive' : 'sortinactive';
				}	
			}
		var buttonlinks = document.getElementsByTagName('a');		// looking for A tags
		for ( var i=0; i<buttonlinks.length; i++ )
			{
			if ( buttonlinks[i].name == 'sortlink' )
				{
				buttonlinks[i].className = ( buttonlinks[i].id == lastsorttype ) ? 'sortactive' : 'sortinactive';
				}	
			}
		}
}

// General code
function scrolltoanchor(anc){	// reposition to display anchor
	var ancs = document.getElementsByTagName('a');
	anc = anc.replace(/.*\#/,'');		// Search highlight passes duplicate anchors - lose one
	if ( ancs[anc] ) ancs[anc].scrollIntoView(true);
}

function sortinit(){				// called when DOM is loaded
	if (arguments.callee.done) return;
	arguments.callee.done = true;
	bSortInitialised = true;
	// Products
	if ( document.getElementById('sortwidget') ) 
		{
		bReadyToSort = true;
		lastsorttype = getCookie('SORTTYPE');
		if ( lastsorttype == null ) lastsorttype = 'default';
		setCookie('SORTTYPE', lastsorttype);
		showsorttype();		
		if ( lastsorttype != 'default' ) 
			{
			reseq(lastsorttype, true);
			}
		}	

	// Search Results
	if ( document.getElementById('searchsortwidget') ) 
		{
		bSearchReadyToSort = true;
		searchlastsorttype = getCookie('SEARCHSORTTYPE');
		if ( searchlastsorttype == null ) searchlastsorttype = 'default';
		setCookie('SEARCHSORTTYPE', searchlastsorttype);
		searchshowsorttype();		
		if ( searchlastsorttype != 'default' ) 
			{
			searchreseq(searchlastsorttype);
			}
		}	

	// Sections
	if ( document.getElementById('sectsortwidget') ) 
		{
		// check for no prices available and hide buttons if so	
		var spans = document.getElementsByTagName('span');
		var rtot = 0;	
		for ( var i=0; i<spans.length; i++ )
			{
			if ( spans[i].id.indexOf('sectionline_') == 0 )
				{
				var price = spans[i].getAttribute('price');
				rtot += (price != null) ? price : 0;
				}
			}
		if ( rtot == 0 )
			{
			if ( SectionSortLinksFinalOnly )					// do we only show links on final Sections
				{
				var swidget = document.getElementById('sectsortwidget');        // the section sort control
				swidget.style.display = 'none'; 				// hide entire control
				swidget.style.visibility = 'hidden';				// hide entire control
				}
			else
				{	
				if ( document.getElementById('sectpricelinks') )		// button or text links
					{
					var pricebuttons = document.getElementById('sectpricelinks');
					pricebuttons.style.display = 'none';
					pricebuttons.style.visibility = 'hidden';
					}
				if ( document.getElementById('sectionsortdropdown') )		// drop-down list
					{
					var opts = document.getElementById('sectionsortdropdown').options;
					for ( var j=opts.length; j>0; j-- )			// scan backwards as we're deleting items
						{
						if ( (opts[j - 1].value == "lowhigh") || (opts[j - 1].value == "highlow") )
							{
							opts[j - 1] = null;
							}
						}
					}
				}	
			}			

		bSectReadyToSort = true;
		sectlastsorttype = getCookie('SECTSORTTYPE');
		if ( sectlastsorttype == null ) sectlastsorttype = 'default';
		setCookie('SECTSORTTYPE', sectlastsorttype);
		sectshowsorttype();
		// only resequence if button showing and we've a non default sequence		
		if ( (((sectlastsorttype == 'lowhigh') || (sectlastsorttype == 'lowhigh')) && (rtot != 0)) && (sectlastsorttype != 'default') ) 
			{
			sectionseq(sectlastsorttype);
			}
			
		}
}

function onloadsortinit(){			// optionally called on onload
	if ( ! bSortInitalised ) sortinit();				// only init if it's not already run
}

// in case we cannot activate on DOM loaded
if (window.attachEvent) 						// IE 
	{ 
	window.attachEvent("onload", onloadsortinit); 
	} 
else 									// DOM
	{  
	window.addEventListener("load", onloadsortinit, false); 
	}


