
(function() {
	YAHOO.namespace('filt');
	
    var Event = YAHOO.util.Event;
    var Dom   = YAHOO.util.Dom;
    var lang  = YAHOO.lang;
    var slider;
    var bg="price-slider-bg";
	var min_thumb="price-slider-thumb-min";
	var max_thumb="price-slider-thumb-max";
	var valuearea="price-slider-value";
	var	textfield="price-slider-converted-value";
	var power_slider;
	var power_bg="power-slider-bg";
	var power_min_thumb="power-slider-thumb-min";
	var power_max_thumb="power-slider-thumb-max";
	var power_valuearea="power-slider-value";
	var	power_textfield="power-slider-converted-value";
	
    var range = 192;
    var keyIncrement = 24;	
	var tickSize = 24;
	var initValues = [0,192]; 
	
	var minThumbDistance = 10;
	
	var power_minThumbDistance = 20;
	var power_range = 155;
	var power_keyIncrement = 31;	
	var power_tickSize = 31;
	var power_initValues = [0,155]; 
	
	var color = "multicolor";
	
	var white = new Array('white', 'weiß', 'warmweiß', 'warmwhite', 'neutralweiß', 'neutralwhite');
	
	var tablearr = null;
	var cacheflag = false;

	
	var convert = function (val) {
		if(val < 10) {
				return "0";
			} else if (val < 25) {
				return "0,10";
			} else if(val < 50) {
				return "0,50";
			} else if(val < 75) {
				return "1";
			} else if(val < 100) {
				return "2";
			} else if(val < 125) {
				return "5";
			} else if(val < 150) {
				return "10";
			} else if(val < 175) {
				return "20";
			} else if(val < 200) {
				return "&#8734;";
			}
			
			return "0";
	}; 
	
	var power_convert = function (val) {
		if(val < 10) {
				return "0";
			} else if (val < 35) {
				return "0,5";
			} else if(val < 65) {
				return "1";
			} else if(val < 100) {
				return "3";
			} else if(val < 125) {
				return "5";
			} else if(val < 160) {
				return "&#8734;";
			}
			
			return "0";
	}; 
	
	var in_array = function(item,arr) {
		for(p=0;p<arr.length;p++) if (item == arr[p]) return true;
		return false;
	};
	
	var change = function(min, max, pmin, pmax) {
		var table = document.getElementById("list-table");
		var trs = table.getElementsByTagName("tr");
		var classn = "odd";
		var showncolumns = 0;
		
		if(isNaN(pmax)) {
			pmax = 100;
		}
		if(isNaN(max)) {
			max = 5000;
		}
		
		if(tablearr == null) {
			tablearr = new Array(trs.length);
		}
		
		for(var i = 1; i < trs.length; i++) {
			var columns = trs[i].childNodes;
			var column, pcolumn;
			var cont = 0;
			if(!cacheflag) {
				tablearr[i-1] = new Array(3);
				for(var j = 0; j < columns.length; j++) {
					if(columns[j].id == "powerValue") {
						pcolumn = columns[j];
						if(cont == 2) {
							j = columns.length;
						} else {
							cont++;
						}
					}
					if(columns[j].id == "colorValue") {
						ccolumn = columns[j];
						if(cont == 2) {
							j = columns.length;
						} else {
							cont++;
						}
					}
					if(columns[j].id == "price-td") {
						column = columns[j];
						if(cont == 2) {
							j = columns.length;
						} else {
							cont++;
						}					
					}
				}
				
				var cns = column.childNodes;
				for(var k = 0; k < cns.length; k++) {
					if(cns[k].id == "price") {
						var pricevalue = cns[k].title;
						k = cns.length;
					}
				}
				var realvalue = parseFloat(pricevalue.replace(/,/, "."));
				if(isNaN(realvalue)) {
					var tmpval = pricevalue.split(" ");
					realvalue = parseFloat(tmpval[1].replace(/,/, "."));
				}
				tablearr[i-1][0] = realvalue
				
				var watts = pcolumn.innerHTML.split(" ");
				var wattvalue = parseFloat(watts[0].replace(/,/, "."));
				tablearr[i-1][1] = wattvalue;
				
				var colorcell = ccolumn.innerHTML;
				tablearr[i-1][2] = colorcell;
			} else {
				var colorcell = tablearr[i-1][2];
				var wattvalue = tablearr[i-1][1];
				var realvalue = tablearr[i-1][0];
			}
			
			
			
			if(color == "color") {			
				if(((pmin < wattvalue && wattvalue < pmax) || (isNaN(wattvalue) && ((pmax - pmin) == pmax))) && min < realvalue && realvalue < max && colorcell > 25) {
					trs[i].style.display = "";
				} else {
					trs[i].style.display = "none";
				}
			} else if(color == "white") {
				if(((pmin < wattvalue && wattvalue < pmax) || (isNaN(wattvalue) && ((pmax - pmin) == pmax))) && min < realvalue && realvalue < max && colorcell <= 25) {
					trs[i].style.display = "";
				} else {
					trs[i].style.display = "none";
				}
			} else {
				if(((pmin < wattvalue && wattvalue < pmax) || (isNaN(wattvalue) && ((pmax - pmin) == pmax))) && min < realvalue && realvalue < max) {
					trs[i].style.display = "";
				} else {
					trs[i].style.display = "none";
				}
			}

			if(trs[i].style.display == "none") {
			} else {
				showncolumns++;
				if(classn == "odd") {
					trs[i].className = "list-product odd";
					classn = "even";
				} else {
					trs[i].className = "list-product even";
					classn = "odd";
				}
			}			
		}
		
		cacheflag = true;		
		
		var shown = document.getElementsByTagName("STRONG");
		if(showncolumns == 0) {
			for(var l = 0; l < shown.length; l++) {
				if(shown[l].id == "firstcolumncount") {
					shown[l].innerHTML = "0";
				}
			}
		} else {
			for(var l = 0; l < shown.length; l++) {
				if(shown[l].id == "firstcolumncount") {
					shown[l].innerHTML = "1";
				}
			}
		}
		
		for(var l = 0; l < shown.length; l++) {
		    if(shown[l].id == "columncount") {
				shown[l].innerHTML = showncolumns;
			}
		}
		
	}

    Event.onDOMReady(function() {

        slider = YAHOO.widget.Slider.getHorizDualSlider(bg, min_thumb, max_thumb, range, tickSize, initValues);
		power_slider = YAHOO.widget.Slider.getHorizDualSlider(power_bg, power_min_thumb, power_max_thumb, power_range, power_tickSize, power_initValues);
						 
		//power_slider = YAHOO.widget.Slider.getHorizSlider(power_bg, power_thumb, power_topConstraint, power_bottomConstraint, power_tickSize);

        slider.minRange = minThumbDistance;
        power_slider.minRange = power_minThumbDistance;
        

        var updateUI = function () {

            var min = convert(slider.minVal),
                max = convert(slider.maxVal);

			var valnode = Dom.get(valuearea);

            valnode.innerHTML = min + " - " + max + " Euro";
        };
		
		var updateUI_filter = function () {

            var min = convert(slider.minVal),
                max = convert(slider.maxVal);
				
			var pmin = power_convert(power_slider.minVal),
                pmax = power_convert(power_slider.maxVal);

			var valnode = Dom.get(valuearea);

            valnode.innerHTML = min + " - " + max + " Euro";
			
			change(parseFloat(min.replace(/,/, ".")), parseFloat(max.replace(/,/, ".")), parseFloat(pmin.replace(/,/, ".")), parseFloat(pmax.replace(/,/, ".")));
        };
		
		var power_updateUI = function () {

            var min = power_convert(power_slider.minVal),
                max = power_convert(power_slider.maxVal);

			var valnode = Dom.get(power_valuearea);

            valnode.innerHTML = min + " - " + max + " Watt";
			
        };
		
		var changeColor = function() {

			color = this.value;
		
			var min = convert(slider.minVal),
				max = convert(slider.maxVal);
				
			var pmin = power_convert(power_slider.minVal),
				pmax = power_convert(power_slider.maxVal);

			
			change(parseFloat(min.replace(/,/, ".")), parseFloat(max.replace(/,/, ".")), parseFloat(pmin.replace(/,/, ".")), parseFloat(pmax.replace(/,/, ".")));
		
		};
		
		var power_updateUI_filter = function () {

            var min = convert(slider.minVal),
                max = convert(slider.maxVal);		
		
            var pmin = power_convert(power_slider.minVal),
                pmax = power_convert(power_slider.maxVal);

			var valnode = Dom.get(power_valuearea);

            valnode.innerHTML = pmin + " - " + pmax + " Watt";
			
			change(parseFloat(min.replace(/,/, ".")), parseFloat(max.replace(/,/, ".")), parseFloat(pmin.replace(/,/, ".")), parseFloat(pmax.replace(/,/, ".")));
        };

        // Subscribe to the dual thumb slider's change and ready events to
        // report the state.
        slider.subscribe('ready', updateUI);
        slider.subscribe('change', updateUI_filter);
		
		power_slider.subscribe('ready', power_updateUI);
        power_slider.subscribe('change', power_updateUI_filter);
		
		YAHOO.util.Event.on('radio-white','click', changeColor);
		
		YAHOO.util.Event.on('radio-color','click', changeColor);
		
		YAHOO.util.Event.on('radio-multi','click', changeColor);
		
    });
})();
