function getXMLHTTPRequest()
{
	try
	{
		req=new XMLHttpRequest();
	}
	catch(err1)
	{
		try
		{
			req=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(err2)
		{
			try
			{
				req=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(err3)
			{
				req=false;
			}
		}
	}
	return req;
}

var http=getXMLHTTPRequest();

var products;
var display_products;
var response=0;
var current_rating=0;
var current_min_price=minprice;
var current_max_price=maxprice;

function is_array(input){
	return typeof(input)=='object'&&(input instanceof Array);
}


function useHTTPResponsepro()
{
	//alert("http.readyState= " + http.readyState + " http.status=" +http.status);
	if(http.readyState==4)
	{
		if(http.status==200)	
		{
			//alert(http.responseText);
			var string1 = http.responseText;
			var myRegExp = /mysql1.php|categoryajax.php/;
			var matchPos1 = string1.search(myRegExp);

			if(matchPos1 != -1)
			{
				document.getElementById('content-inner').innerHTML="Im afraid no products were found matching your criteria";
			}else{
				products=eval(http.responseText);
			}
			//document.getElementById('script').innerHTML=http.responseText;
			//alert("products.length = " + products.length);
			if(is_array(products))
			{
				display(products);
			}
			else
			{
				document.getElementById('content-inner').innerHTML="not array" +http.responseText ;
			}
		}
		else
		{
			document.getElementById('content-inner').innerHTML="Error";
		}
	}
	else
	{
		
		document.getElementById('content-inner').innerHTML="<p align='center'><img src='catalog/template/default/image/loading.gif'></p>";// +http.readyState;
	}
}

function update(path,active,parameter)
{
	if(!is_array(products))
	{
		var url1="testb/categoryajax.php?path=" + path;
		http.open("GET",url1 ,true);
		http.onreadystatechange=useHTTPResponsepro;
		http.send(null);
	}
	
	if(active=="brand")
	{
		brand(parameter);
	}
	
	if(active=="sortby")
	{
		sort(parameter);
	}
	if(active=="byrating")
	{
		rating(parameter);
	}
	
}

function display(products1,page)
{
	var INNERhtml="";
	display_products=products1;
	//alert("display 113 : " + products1.length);
	if(products1.length==0)
	{
		document.getElementById('content-inner').innerHTML="Im afraid no products1 were found matching your criteria";
	}else
	{
		var start=0;
		var end;
		if(arguments.length==2) start=(page-1)*40;
		if(products1.length>start+40)
		{
			end=start+40;
		}
		else
		{
			end=products1.length;
		}
		var text_results="<h2> Results " + (start+1) + " - " + end + " of " + products1.length + "</h2>";
		document.getElementById("text_results").innerHTML=text_results;
		var count1=0;
		for(i=start;i< products1.length;i=i+1)
		{
			
			var price=products1[i]['price'];
			var pricei=parseFloat(price.substr(7));
			//alert("iteration no. " + i + " price = " + price + " & pricei = " + pricei);
			//if(pricei >= document.getElementById('min').value && pricei <= document.getElementById('max').value)
			//{
				count1=count1+1;
				//alert(count1);
				if(count1>40) break;
				var quantity=parseInt(products1[i]['quantity']);
				var percentage=parseInt(products1[i]['percentage']);
				var subpath=parseInt(products1[i]['subpath']);
				INNERhtml+="<div class=\"panel\" id=\"product" + products1[i]['id'] + "\">";
				INNERhtml+="<div class=\"panel-header\"><b>" + products1[i]['name'] + "</b></div><br>";
				INNERhtml+="  <a href=\"" + products1[i]['href'] + "\"><img src=\"" + products1[i]['thumb'] + "\" title=\"" + products1[i]['name'] + "\" alt=\"" + products1[i]['name'] + "\" /></a><br>";
				if (quantity >0)
				{
					INNERhtml+="<span style=\"color:green;height:0.5em\">" + quantity + " in stock</span>";
				}
				else
				{
					INNERhtml+="<span style=\"color:red;height:0.5em\">Out of stock</span>";
				}
				INNERhtml+="	<br>";
				if (percentage >0)
				{ 
					if (products1[i]['rrp'].length>13 || products1[i]['saveAmount'].length>13)
					{
						INNERhtml+="	<span class='price_old' style='font-size:8px'>Was: " + products1[i]['rrp'] + " Save: " + products1[i]['saveAmount'] + "</span>";
					}
					else
					{
						INNERhtml+="	<span class=price_old>Was: " + products1[i]['rrp'] + " Save: " + products1[i]['saveAmount'] + "</span>";
					}
				}
				INNERhtml+=" <br>";

				if (subpath == 91)
				{
					INNERhtml+="  <span class=price_new><a href=\"" + products1[i]['href'] + "\">Sim Free: " + products1[i]['price'] + "</span><br>";
					INNERhtml+="  <div class=\"panel-footer\">";
					INNERhtml+="	<a href=\"" + products1[i]['href'] + "\">Contract: from FREE</a>";
					INNERhtml+="  </div>";
				}
				else
				{
					if (subpath == 99)
					{
						INNERhtml+="  <span class=price_new><a href=\"" + products1[i]['href'] + "\">CHOOSE FREE HANDSET";
						if (percentage >0)
						{
							INNERhtml+="	&nbsp;&nbsp;" + percentage + "% off </a>";
						}
						INNERhtml+="  </span><br>";
						INNERhtml+="  <div class=\"panel-footer\">";
						INNERhtml+="	<a href=\"" + products1[i]['href'] + "\">view details</a>";
						INNERhtml+="  </div>";
					}
					else
					{
						INNERhtml+="  <span class=price_new>";
						INNERhtml+="	<a href=\"" + products1[i]['href'] +"\">Now: " + products1[i]['price'];
						if (percentage >0)
						{
							INNERhtml+="	&nbsp;&nbsp;" + percentage + "% off </a>";
						}
						INNERhtml+="  </span><br>";
						INNERhtml+="  <div class=\"panel-footer\">";
						INNERhtml+="	<a href=\"" + products1[i]['href'] + "\">view details</a>";
						INNERhtml+="  </div>";
					}
				}
				INNERhtml+="</div>";
		}
		document.getElementById('content-inner').innerHTML=INNERhtml;
		document.getElementById('paging').innerHTML=paging(products1.length,1,page);
		document.getElementById('paging2').innerHTML=paging(products1.length,2,page);
		//alert(INNERhtml);
	}
}


function priceasc(a, b)
{
	var x = parseFloat(a.price.substr(7));
	var y = parseFloat(b.price.substr(7));
	return (x - y);
}

function pricedesc(a, b)
{
	var x = parseFloat(a.price.substr(7));
	var y = parseFloat(b.price.substr(7));
	return (y - x);
}

function vieweddesc(a, b)
{
	var x = a.selling;
	var y = b.selling;
	return (y - x);
}

function datedesc(a, b)
{
	var x = a.date;
	var y = b.date;
	return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}

function dateasc(a, b)
{
	var x = a.date;
	var y = b.date;
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function nameasc(a, b)
{
	var x = a.name;
	var y = b.name;
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function namedesc(a, b)
{
	var x = a.name;
	var y = b.name;
	return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}

function page1(num)
{
	display(display_products,num);
}

function sort(by)
{
	var temp_array=display_products;
	if(by=="IF(pr.price IS NULL,p.price,pr.price) desc")
	{
		return_array=temp_array.sort(pricedesc);
	}
	else if(by=="IF(pr.price IS NULL,p.price,pr.price) asc")
	{
		return_array=temp_array.sort(priceasc);
	}
	else if(by=="p.viewed desc")
	{
		return_array=temp_array.sort(vieweddesc);
	}
	else if(by=="p.date_added desc")
	{
		return_array=temp_array.sort(datedesc);
	}
	else if(by=="p.date_added asc")
	{
		return_array=temp_array.sort(dateasc);
	}
	else if(by=="pd.name asc")
	{
		return_array=temp_array.sort(nameasc);
	}
	else if(by=="pd.name desc")
	{
		return_array=temp_array.sort(namedesc);
	}
	display(return_array);
}

function rating(min)
{	
	var source_array;
	if(min>current_rating)
	{
		//alert("min>current_rating");
		source_array=display_products;
	}
	else
	{
		//alert("min<current_rating");
		source_array=products;
		
	}
	current_rating=min;
	var result_array=new Array();
	var index=0;
	for(i=0;i< source_array.length;i=i+1)
	{
		curprice=parseFloat(source_array[i]['price'].substr(7));
		if(source_array[i]['rating']>=min && (curprice <= document.getElementById('max').value) && (curprice >= document.getElementById('min').value))
		{
			result_array[index]=source_array[i];
			index=index+1;
		}
	}
	//if(is_array(result_array)) alert(result_array.length);
	display(result_array);
}

function brand(manufacturer)
{
	var result_array=new Array();
	var index=0;
	for(i=0;i< products.length;i=i+1)
	{
		if(products[i]['manufacturer']==manufacturer || manufacturer.length==0)
		{
			if(products[i]['rating']>=document.getElementById('byrating').value)
			{
				if(parseFloat(products[i]['price'].substr(7))>=document.getElementById('min').value && parseFloat(products[i]['price'].substr(7))<=document.getElementById('max').value)
				{
					result_array[index]=products[i];
					index=index+1;
				}
			}
		}
	}
	//alert(result_array[0][name]);

	display(result_array);
}

function paging(number,top,pagenum)
{
	var pages=Math.ceil(number/40);
	if(top=="1")
	{
		var list="<h2>\n\nPage:\n<select id=\"page\" name=\"page\" onchange=\"page1(this.value);\">";
	}else{
		var list="<h2>\n\nPage:\n<select id=\"page\" name=\"page\" onchange=\"document.getElementById('page').value=this.value; page1(this.value);\">";
	}
	//list+="<option value=\"1\" SELECTED>1 of " + pages + "</option>"
	for(i=1;i<=pages;i=i+1)
	{
		if(i==pagenum)
		{
		list+="<option value=\"" + i + "\" SELECTED>" + i + " of " + pages + "</option>"
		}else
		{
		list+="<option value=\"" + i + "\">" + i + " of " + pages + "</option>"
		}
	}
	list+="</select>\n</h2>";
	return list;
}

$(function() {
	$("#slider-range").slider({
		range: true,
		min: minprice,
		max: maxprice,
		values: [minprice, maxprice],
		slide: function(event, ui) {
			$("#min").val(ui.values[0]);
			$("#max").val(ui.values[1]);
			$("#pricemin").html($("#slider-range").slider("values", 0) + "&pound;");
			$("#pricemax").html($("#slider-range").slider("values", 1) + "&pound;");
		},
		change: function(event, ui) {
			var result_array=new Array();
			var source_array;
			var index=0;
			var curprice;
			var isbrand;
			/*if(current_max_price>=ui.values[1] && current_min_price<=ui.values[0])
			{
			source_array=display_products;
			}
			else
			{

			//alert("Work for God's sake");
			source_array=products;
			//document.getElementById('byrating').value="0";
			//document.getElementById('brand').value="";

			}*/
			current_max_price=ui.values[1];
			current_min_price=ui.values[0];

			//alert ("max " + ui.values[1] + " min " + ui.values[0]);
			//alert (products[0]['price']);
			for(i=0;i< products.length;i=i+1)
			{
				isbrand=true;
				if(document.getElementById('brand').value!="")
				{

					if(products[i]['manufacturer']!=document.getElementById('brand').value)
					{
						isbrand=false;
					}
				}
				curprice=parseFloat(products[i]['price'].substr(7));
				//
				if((curprice <= ui.values[1]) && (curprice >= ui.values[0]) && (products[i]['rating']>=document.getElementById('byrating').value) && isbrand==true)
				{
					//alert("found one");
					result_array[index]=products[i];
					index=index+1;
				}
			}
			
			if(response==0) 
			{
				//display(result_array);
				var temp_array=result_array;
				var by1=document.getElementById('sortby').value;
				if(by1=="IF(pr.price IS NULL,p.price,pr.price) desc")
				{
					return_array=temp_array.sort(pricedesc);
				}
				else if(by1=="IF(pr.price IS NULL,p.price,pr.price) asc")
				{
					return_array=temp_array.sort(priceasc);
				}
				else if(by1=="p.viewed desc")
				{
					return_array=temp_array.sort(vieweddesc);
				}
				else if(by1=="p.date_added desc")
				{
					return_array=temp_array.sort(datedesc);
				}
				else if(by1=="p.date_added asc")
				{
					return_array=temp_array.sort(dateasc);
				}
				else if(by1=="pd.name asc")
				{
					return_array=temp_array.sort(nameasc);
				}
				else if(by1=="pd.name desc")
				{
					return_array=temp_array.sort(namedesc);
				}
				display(return_array);
			}
		}

	});

	$("#min").val($("#slider-range").slider("values", 0));
	$("#max").val($("#slider-range").slider("values", 1));
});

