var slider = "";
var filters = "";
var seed = 0;
var types = new Array();
var loading = "";

var categoryId = 0;
var active = "";
var sliderRange = new Array();
var calibers = new Array();
var isHttps = false;

function init_slider(x,https)
{
	var co = document.getElementById("slider");
	var txt = document.getElementById("txt");
	isHttps = https;
	if(x > 0)
	{
	categoryId = x;

	//var dataobj = {id:id, container:column,name:name,title:title,status:status,row:row,column:column, desktop:this};
	var dataobj = {pxmin:0,pxmax:430,valmin:0.01,valmax:3.0,container:co, txt:txt, callback:callbackSlider,calibers:calibers,https:https};

	slider = new Slider(dataobj);
	slider.start();
	active = new Hashtable();
	loading = document.getElementById("loading");

	var dataobj2 = {container:co,debug:document.getElementById("debug"),types:types,active:active,sliderrange:sliderRange,https:https};

	filters = new FilterCollection(dataobj2);
	filters.start();

	slider.forceFullRange();
	}
	else
	{
		//co.style.display = "none";
		co.innerHTML = "<b>Det finns inga produkter i denna kategori.</b>";
		txt.style.display = "none";
	}

}


function callbackSlider(val1,val2)
{
	//filters.updateFilters();
	sliderRange[0] = calibers[val1][0]; //val1;
	sliderRange[1] = calibers[val2][0]; //val2;
	updateWeapons();
}

function updateWeapons()
{
	seed = Math.random();
	var codeArgs = "";
	var argHash = new Array();
	var argIndex = 0;
	var firstArg = true;
	var ubase = "";

	if(isHttps == true)
		ubase = "https://";
	else
		ubase = "http://";

	for(var i in active.items)
	{
		codeArgs += "&";

		if(typeof(argHash[active.items[i].type]) != "undefined")
			codeArgs += 'type' + argHash[active.items[i].type] + '[]=' + active.items[i].id;
		else
		{
			argHash[active.items[i].type] = argIndex;
			argIndex++;
			codeArgs += 'type' + argHash[active.items[i].type] + '[]=' + active.items[i].id;
		}
	}

	loading.style.display = "block";

	Request.sendPOST(ubase + "www.jakt.se/weaponsearch.php","seed="+seed +"&val1="+sliderRange[0]+"&val2="+sliderRange[1]+codeArgs+"&catId="+categoryId,loadWeapons);

	function loadWeapons(response)
	{

		var data = eval('('+response.responseText +')');

		if(data.seed != seed)
			return 0;

		loading.style.display = "none";
		filters.updateFilters(data.codes);
		var weapons = data.weapons;

		var txt = document.getElementById("txt");

		if(txt)
		{

			var html = "Hittade <b>" + weapons.count + '</b> produkter.<br><table border="0" cellspacing="0" cellpadding="2px" style="font: 10px verdana;">';

			if(weapons.count > 0)
			{
				for(i=0;i<weapons.weapon.length;i++)
					{
						html += '<tr><td>';
						html += '<table cellspacing="1" cellpadding="2" class="search-table" style="cursor: pointer;" onClick="location.href=\'' + weapons.weapon[i].url + '\';">';
						html += '<tr><td width="72px" height="72px" rowspan="2" valign="middle" align="center" style="cursor: pointer;" onClick=""><a href="' + weapons.weapon[i].url + '">';
						html += ((weapons.weapon[i].img == 1) ? '<img src="/uploaded/' + weapons.weapon[i].id + '-1-S.jpg" border="0">' : '<img src="/images/noimage.gif" border="0">');
						html += '</a></td><td width="324px" bgcolor="#306731" height="30px" align="left" style="padding-left: 10px;"><a style="font: 12px verdana; color: #FFFFFF; font-weight: bold;" href="' + weapons.weapon[i].url + '">' + weapons.weapon[i].title + '</a></td>';
						html += '<td width="62px" valign="middle" align="right" class="arial12 bold" style="color: #dd3400;">' + weapons.weapon[i].price + '&nbsp;KR&nbsp;</td>';
						html += '</tr><tr><td colspan=2 width="386px" class="search-row  white" style="font: 11px verdana; padding-left: 10px;" align="left" valign="top">';

						var firstTag = true;
						for(j=0;j<weapons.weapon[i].tags.length;j++)
						{
							if(!firstTag)
								html += ", ";
							else
								firstTag = false;

							html += weapons.weapon[i].tags[j];
						}

						html += '</td></tr>';
						html += '</table>';
						html += '</td></tr>';
					}
				}
				else
					html += '<tr><td></td></tr>';

				html += '</table>';

				txt.innerHTML = html;

			}

	}
}

function toggleFilter(id,typ)
{
	if(active.hasItem(id))
		active.removeItem(id);
	else
		active.setItem(id,{id:types[id].id, type:types[id].type});
	//filters.updateFilters();
	updateWeapons();
}

function resetFilter()
{
	active.flushItems();
	updateWeapons();
}

var Slider = function(obj)
{
	var self = this;
	this.dataobj = obj;

	this.pxmin = obj.pxmin;
	this.pxmax = obj.pxmax;
	this.pxc1 = 0;
	this.pxc2 = 1;
	this.px1 = 0;
	this.px2 = 0;
	this.valmin = obj.valmin;
	this.valmax = obj.valmax;
	this.val1 = 0;
	this.val2 = 0;
	this.seed =  0;
	this.range = 0;
	this.callback = obj.callback;
	this.categoryId = obj.categoryid;
	this.calibers = obj.calibers;
	this.omax = 0;
	this.omin = 0;
	this.https = obj.https;

	this.start = function()
	{
		var divSlider = document.createElement("div");
		this.elm_slider = divSlider;
		divSlider.className = "slider";
		divSlider.dataobj = obj;
		divSlider.js = this;

		divSlider.style.display = "block";


		var divCursor1 = document.createElement("img");
		var divCursor2 = document.createElement("img");

		this.elm_cursor1 = divCursor1;
		this.elm_cursor2 = divCursor2;

		divCursor1.className = "slider-cursor";
		divCursor2.className = "slider-cursor";
		divCursor1.style.left = "10px";
		divCursor2.style.left = "100px";
		divCursor1.src = "/images/s_cursor3.gif";
		divCursor2.src = "/images/s_cursor3.gif";

		divSlider.innerHTML = "";
		divSlider.appendChild(divCursor1);
		divSlider.appendChild(divCursor2);

		var divRange = document.createElement("img");
		this.elm_range = divRange;
		divRange.className = "slider-range2";
		divRange.style.display = "block";
		divRange.src = "/images/s_bg2.gif";

		var divRangeBg = document.createElement("div");
		this.elm_rangeBg = divRangeBg;
		divRangeBg.className = "slider-range1";
		divRangeBg.style.display = "block";
		divRangeBg.style.width = (this.pxmax - this.pxmin) + "px";

		divSlider.appendChild(divRange);
		divSlider.appendChild(divRangeBg);

		var divLabel = document.createElement("div");
		this.elm_label = divLabel;

		divLabel.className = "slider-label";
		divLabel.style.width = (this.pxmax - this.pxmin) + "px";

		divLabel.innerHTML = '<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td></td><td align="center"></td><td align="right"></td></tr></table>';
		//this.elm_labelmin = window.status = divLabel.firstChild.firstChild.firstChild.childNodes[0];
		this.elm_labelcur =  divLabel.firstChild.firstChild.firstChild.childNodes[1];
		//this.elm_labelmax = window.status = divLabel.firstChild.firstChild.firstChild.childNodes[2];

		//this.elm_labelmin.innerHTML = this.valmin + "<br>" + this.roundVal(this.valmin*25.4,1);
		//this.elm_labelmax.innerHTML = this.valmax + "<br>" + this.roundVal(this.valmax*25.4,1);
		//this.elm_labelcur.innerHTML = this.valmin + " - " + this.valmax + "<br>" + this.roundVal(this.valmin*25.4,1) + " - " + this.roundVal(this.valmax*25.4,1);

		divSlider.appendChild(divLabel);

		//var divLabelUnits = document.createElement("div");
		//this.elm_labelunits = divLabelUnits;
		//divLabelUnits.className = "slider-label-units";
		//divLabelUnits.innerHTML = "tum<br>mm";
		//divLabelUnits.style.left = (this.pxmax - this.pxmin) + 8 + "px";

		//divSlider.appendChild(divLabelUnits);

		var divTitle = document.createElement("div");
		this.elm_title = divTitle;
		divTitle.className = "slider-title";
		divTitle.innerHTML = "Kaliber";
		divTitle.style.width = (this.pxmax - this.pxmin) + "px";
		divSlider.appendChild(divTitle);

		Drag.init(divCursor1, divCursor1,{min:self.pxmin,max:self.pxmax,fixH:true,fixV:false});
		Drag.init(divCursor2, divCursor2,{min:self.pxmin,max:self.pxmax,fixH:true,fixV:false});

		divCursor1.onDragStart = function(x,y,mousex, mousey)
		{
		}

		divCursor2.onDragStart = function(x,y,mousex,mousey)
		{
		}

		divCursor1.onDrag = function(x,y, mousex, mousey)
		{
			self.pxc1 = x;
			self.setRange();
		}

		divCursor2.onDrag = function(x,y, mousex, mousey)
		{

			self.pxc2 = x;
			self.setRange();
		}

		divCursor1.onDragEnd = function(x,y,el)
		{
			self.postRange();
		}

		divCursor2.onDragEnd = function(x,y,el)
		{
			self.postRange();
		}


		if (typeof this.dataobj.container == "object")
				{


					this.dataobj.container.appendChild(divSlider);
		}
	}

	this.setRange = function()
	{
		var old1 = self.val1;
		var old2 = self.val2;

		self.px1 = Math.min(self.pxc1,self.pxc2);
		self.px2 = Math.max(self.pxc1,self.pxc2);
		var pxrange = self.px2 - self.px1;

		self.elm_range.style.left = 5 + self.px1 + "px";
		self.elm_range.style.width = (pxrange) + "px";

		var valpx = (self.valmax - self.valmin)/(self.pxmax - self.pxmin);

		self.val1 = self.roundVal(self.valmin + self.px1*valpx,3);
		self.val2 = self.roundVal(self.valmin + self.px2*valpx,3);

		//self.elm_labelcur.innerHTML = self.val1 + " - " + self.val2 + "<br>" + self.roundVal(self.val1*25.4,1) + " - " + self.roundVal(self.val2*25.4,1);

		if(old1 != self.val1)
		{

			for(j=0;j<self.calibers.length;j++)
			{

				if(self.calibers[j][0] >= self.val1)
				{
					self.omin = j;
					break;
				}

			}

		}

		if(old2 != self.val2)
		{

			for(j=(self.calibers.length-1);j>=0;j--)
			{

				if(self.calibers[j][0] <= self.val2)
				{
					self.omax = Math.min(j+1,self.calibers.length-1);
					break;
				}
			}

		}

		self.elm_labelcur.innerHTML =  'Visar kaliber från <b>' + self.calibers[self.omin][1] + "</b> till <b>" + self.calibers[self.omax][1] + "</b>";

	}

	this.postRange = function()
	{

		self.callback(self.omin,self.omax);



	}


	this.forceFullRange = function()
	{

		self.elm_cursor1.style.left = self.pxmin + "px";
		self.pxc1 = self.pxmin;
		self.pxc2 = self.pxmax;

		self.elm_cursor2.style.left = self.pxmax + "px";
		self.omax = self.calibers[self.calibers.length-1][0];
		self.omin = self.calibers[0];
		self.setRange();
		self.postRange();



	}
	this.forceVal = function(val1, val2)
	{
		self.val1 = val1;
		self.val2 = val2;


	}
	this.roundVal = function(x,y)
			{

				return Math.round(x*Math.pow(10,y))/Math.pow(10,y);

		}


}