/*
Class: Slider
        Creates a slider with two elements: a knob and a container. Returns the values.
Note:
        The Slider requires an XHTML doctype.
Arguments:
        element - the knob container
        knob - the handle
        options - see Options below
        maxknob - an optional maximum slider handle
Options:
		start - the minimum value for your slider.
		end - the maximum value for your slider.
        mode - either 'horizontal' or 'vertical'. defaults to horizontal.
        offset - relative offset for knob position. default to 0.
        knobheight - positions the max slider knob
		snap - whether the slider will slide in steps 
		numsteps - number of slide steps 
Events:
        onChange - a function to fire when the value changes.
        onComplete - a function to fire when you're done dragging.
        onTick - optionally, you can alter the onTick behavior, for example displaying an effect of the knob moving to the desired position.
                Passes as parameter the new position.
*/
var SliderSS = new Class({
	options: {
		onChange: Class.empty,
		onComplete: Class.empty,
		onTick: function(pos){
			this.moveKnob.setStyle(this.p, pos);			
		},
		start: 0,
		end: 100,
		offset: 0,
		knobheight: 20,
		knobwidth: 14,
		mode: 'horizontal',
		clip_w:0, 
		clip_l:0,
		isinit:true,
		snap: false,
		range: false,
		numsteps:null
	},
    initialize: function(id, options) {
		this.setOptions(options);
		this.element = $(id);
		new Element('div', {'class': 'slider_gutter', 'id':id+'_minmax_slider'}).adopt(
			new Element('div', {'class': 'slider_gutter_item gutter iconsprite_controls', 'id':id+'_slider_minmax_gutter_m'}).adopt(					
				new Element('div', {'class': 'slider_gutter_bkg', 'id':id+'_slider_gutter_bkg_minmax'}),
				new Element('div', {'class': 'knob', 'id':id+'_slider_minmax_minKnobA'}).adopt(			
					new Element('div', {'class': 'fontwhite', 'id':id+'_slider_minmax_min'})									   
				),
				new Element('div', {'class': 'knob', 'id':id+'_slider_minmax_maxKnobA'}).adopt(			
					new Element('div', {'class': 'fontwhite', 'id':id+'_slider_minmax_max'})									   
				)
			)
		).inject(this.element);
		html = this.element.get('html');
		this.minelement = $(id+'_slider_minmax_min');
		this.maxelement = $(id+'_slider_minmax_max');
		this.knob = $(id+'_slider_minmax_minKnobA');
		this.previousChange = this.previousEnd = this.step = -1;
		this.bkg = $(id+'_slider_gutter_bkg_minmax');
		if(this.options.steps==null){
			this.options.steps = this.options.end - this.options.start;
		}
		this.maxknob = $(id+'_slider_minmax_maxKnobA');
		//else
		//	this.element.addEvent('mousedown', this.clickedElement.bindWithEvent(this));
		var mod, offset;
		switch(this.options.mode){
			case 'horizontal':
				this.z = 'x';
				this.p = 'left';
				mod = {'x': 'left', 'y': false};
				offset = 'offsetWidth';
				break;
			case 'vertical':
				this.z = 'y';
				this.p = 'top';
				mod = {'x': false, 'y': 'top'};
				offset = 'offsetHeight';
		}
		this.max = this.element[offset] - this.knob[offset] + (this.options.offset * 2);
		this.half = this.knob[offset]/2;
		this.full = this.element[offset] - this.knob[offset] + (this.options.offset * 2);
		this.min = $chk(this.options.range[0]) ? this.options.range[0] : 0;
		this.getPos = this.element['get' + this.p.capitalize()].bind(this.element);
		this.knob.setStyle('position', 'relative').setStyle(this.p, - this.options.offset);

		this.range = this.max - this.min;
		this.steps = this.options.steps || this.full;
		this.stepSize = Math.abs(this.range) / this.steps;
		this.stepWidth = this.stepSize * this.full / Math.abs(this.range) ;
		


		this.maxPreviousChange = -1;
		this.maxPreviousEnd = -1;
		this.maxstep = this.options.end;
		this.maxknob.setStyle('position', 'relative').setStyle(this.p, + this.max - this.options.offset).setStyle('bottom', this.options.knobheight);

		var lim = {};
		//status = this.z
		lim[this.z] = [- this.options.offset, this.max - this.options.offset];
		//lim[this.z] = [100, this.max - this.options.offset];

		this.drag = new Drag(this.knob, {
			limit: lim,
			modifiers: mod,
			snap: 0,
			onStart: function(){
					this.draggedKnob();
			}.bind(this),
			onDrag: function(){
					this.draggedKnob();
			}.bind(this),
			onComplete: function(){
					this.draggedKnob();
					this.end();
			}.bind(this)
		});

		this.maxdrag = new Drag(this.maxknob, {
			limit: lim,
			modifiers: mod,
			snap: 0, 
			onStart: function(){
				this.draggedKnob(1);
			}.bind(this),
			onDrag: function(){
				this.draggedKnob(1);
			}.bind(this),
			onComplete: function(){
				this.draggedKnob(1);
				this.end();
			}.bind(this)
		});		


		if (this.options.snap) {
			//this.drag.options.grid = Math.ceil(this.stepWidth);
			this.drag.options.grid = (this.full)/this.options.numsteps ;
			this.drag.options.limit[this.z][1] = this.full;
			//this.drag.options.grid = this.drag.options.grid - (this.knob[offset]/this.options.numsteps);
			//status = "GRID - " + this.drag.options.grid  + "  , full = " + this.full// DEBUG

		}
		if (this.options.initialize){
			this.options.initialize.call(this);
		} else {
			this.options.isinit = true;
			this.setMin(this.options.start);
			this.setMax(this.options.end);
		}
    },
	setMin: function(stepMin){
		this.step = stepMin.limit(this.options.start, this.options.end);
		this.checkStep();
		this.end();
		this.moveKnob = this.knob;
		this.bkg.style.clip = "rect(0px "+  (parseInt(this.toPosition(this.step)) +3) + "px 10px 0px)";
		status =this.bkg.style.clip + "  vl= " + parseInt(this.toPosition(this.step)) ; //Debug
		//$('status').value += "\nsetMin:"+status;
		this.fireEvent('onTick', this.toPosition(this.step));
		return this;
	},
	setMax: function(stepMax){
		this.maxstep = stepMax.limit(this.options.start, this.options.end);
		this.checkStep(1);
		this.end();
		this.moveKnob = this.maxknob;
		var w= Math.abs(this.toPosition(this.step)- this.toPosition(this.maxstep)) +1 ;
		var r = parseInt(this.clip_l + w); 
		this.bkg.style.clip = "rect(0px "+  r + "px 10px "+ this.clip_l + "px)";
		status =this.bkg.style.clip + "  vl= " + parseInt(this.toPosition(this.maxstep)) ; //Debug
		//$('status').value += "\nsetMax:"+status;
		this.fireEvent('onTick', this.toPosition(this.maxstep));
		// For Init Only 
		if(this.options.isinit){ 
			var lim = {}; var mi,mx;
			mi = - this.options.offset; 
			mx= parseInt(this.maxknob.getStyle('left')) - this.options.offset-4 ;
			lim[this.z] = [mi, mx];
			this.drag.options.limit = lim;
			this.options.isinit = false;
		}
		return this; 
	},
	clickedElement: function(event){
		var position = event.page[this.z] - this.getPos() - this.half;
		position = position.limit(-this.options.offset, this.max -this.options.offset);

		this.step = this.toStep(position);

		//this.moveKnob = this.knob;
		this.bkg.style.clip = "rect(0px "+  (parseInt(this.toPosition(this.step)) +3) + "px 10px 0px)"  
		//status =this.bkg.style.clip; //Debug
		this.checkStep();
		this.end();
		this.fireEvent('onTick', position);
	},

	draggedKnob: function(mx){
		var lim = {}; var mi,mx;
		if(mx==null) {
			this.step = this.toStep(this.drag.value.now[this.z]);	 
			this.checkStep();
		}else {
			this.maxstep = this.toStep(this.maxdrag.value.now[this.z]); 
			this.checkStep(1);
		}
	},
	checkStep: function(mx){
		var lim = {}; var mi,mx;
		var limm = {};
		if(mx==null) {if (this.previousChange != this.step){this.previousChange = this.step;}}
		else {if (this.maxPreviousChange != this.maxstep){this.maxPreviousChange = this.maxstep;}}
		if(this.maxknob!=null) {

			mi = - this.options.offset; 
			mx= parseInt(this.maxknob.getStyle('left')) - this.options.offset-4 ;
			//mx= parseInt(this.maxknob.getStyle('left')) - this.options.offset ;
			lim[this.z] = [mi, mx];
			this.drag.options.limit = lim;
		

			mi = parseInt(this.knob.getStyle('left'))-this.options.offset+22; 
			//mi = parseInt(this.knob.getStyle('left'))-this.options.offset; 
			
			mx= this.max - this.options.offset;
			limm[this.z] = [mi, mx];
			this.maxdrag.options.limit = limm; 

			if(this.step < this.maxstep){
				this.fireEvent('onChange', { minpos: this.step, maxpos: this.maxstep });
				//this.clip_l = parseInt(this.knob.getStyle('left'));
			}
			else{
				this.fireEvent('onChange', { minpos: this.maxstep, maxpos: this.step });
				//this.clip_l = (parseInt(this.maxknob.getStyle('left')) + 10) ;
			}	
			this.clip_l = parseInt(this.knob.getStyle('left')) + 10;
			//var w = Math.abs(parseInt(this.knob.getStyle('left')) - parseInt(this.maxknob.getStyle('left'))) + 3;	
			var w = Math.abs(parseInt(this.knob.getStyle('left')) - parseInt(this.maxknob.getStyle('left')));
			//if(w > 3) w = w+3;
			
			var r = parseInt(this.clip_l + w); 
			this.bkg.style.clip = "rect(0px "+  r + "px 10px "+ this.clip_l + "px)"  
			//status =this.bkg.style.clip  + " w= " + w //Debug
		}else {  
			this.fireEvent('onChange', this.step);
			this.bkg.style.clip = "rect(0px "+  (parseInt(this.drag.value.now[this.z]) +3)  + "px 10px 0px)"  

		}
	},
	end: function(){
		if (this.previousEnd !== this.step || (this.maxknob != null && this.maxPreviousEnd != this.maxstep)) {
			this.previousEnd = this.step;
			if(this.maxknob != null) {
				this.maxPreviousEnd = this.maxstep;
				if(this.step < this.maxstep)
					this.fireEvent('onComplete', { minpos: this.step + '', maxpos: this.maxstep + '' });
				else    
					this.fireEvent('onComplete', { minpos: this.maxstep + '', maxpos: this.step + '' });
			}else{  
				this.fireEvent('onComplete', this.step + '');
			}
		}
	},
	
	toStep: function(position){
		return Math.round((position + this.options.offset) / this.max * this.options.steps) + this.options.start;
	},

	toPosition: function(step){
		return (this.max * step / this.options.steps) - (this.max * this.options.start / this.options.steps) - this.options.offset;
	}

});

SliderSS.implement(new Events);
SliderSS.implement(new Options);
var waitforboth= false;
window.addEvent('domready', function() {
	/*
	// save button	
	if($type($('btn_save_filter'))){
		new Element('div').inject($('btn_save_filter'), 'top');
		//$('save_filter').get('value')
		v = $('save_filter').get('value') == 'Y' ? true : false; 
		if(v){
			$('btn_save_filter').addClass('btn_save_selected');
			settings['fcl'] = 60000;
		} 
		$('btn_save_filter').addEvent('click', function(){ 
			v = $('save_filter').get('value') == 'Y' ? true : false; 
			if(v){
				//alert('click N');
				$('btn_save_filter').removeClass('btn_save_selected');
				$('save_filter').set('value', 'N');	
				delete_filters();
			} else {
				//alert('click Y');
				$('save_filter').set('value', 'Y');	
				$('btn_save_filter').addClass('btn_save_selected');
				settings = {fcl: 60000};
				save_filters();
			}
		});
	}*/
	if($type($('filterform')) == 'element'){
	/*
	// controle op cookie
	_c = new Hash.Cookie(_cn);
	if(typeof(CC) == 'boolean' && CC && _c.get('fcl') && _c.get('use') == 'Y'){ //alert('usecookie');
		
		str = '';
		_c.each(function(a,b){
			if(!a){
				if($type($(b)) == 'element'){
					$(b).set('checked', false);	
				}
			}
			str+= "\n "+b+" :" +a;	 
		});
		$('filterform').getElements('input').each(function(el){
			if(el.get('name') && _c.get(el.get('name'))){
				switch(el.get('type')){
					case 'hidden':
					case 'text':
						el.set('value', _c.get(el.get('name')));	
						break;
					case 'checkbox':
						el.set('checked', _c.get(el.get('name')));	
						break;
					case 'radio':
						el.set('checked', _c.get(el.get('name')) == el.get('value') ? true : false);	
						break;
				}
			} 
		});
		$('filterform').getElements('select').each(function(el){
			if(el.get('name') && _c.get(el.get('name'))){
				el.set('value', _c.get(el.get('name')));	
			}
		});
		//alert("COOKIE FOUND:\n\n"+str);
		if($('save_filter').get('value') != 'Y'){
			$('btn_save_filter').fireEvent('click');	
		}
	}
	*/
	// controle of type geset is
	if($$('.type').length){
		che = false;
		$$('.type').each(function(el){
			if(el.get('checked'))che=true;		  
		});
		if(!che)$$('.type')[0].set('checked', true).fireEvent('change');
	}
		
	// fancy select + radio
	$('filterform').getElements('label.fancylabel').addEvent('click', function(event){ 
		event.stopPropagation();
		event.stop();
		if($(this.get('for')).get('disabled') == false){
			$(this.get('for')).fireEvent('change');
		}
	});
	$('filterform').getElements('input.fancy').each(function(el){
		new Element('div', {'class':'fancycheckbox '+(el.get('checked') ? 'fancychecked' : ''),'id':'fancy_'+el.get('id'),'rel':el.get('id'),'events':{
			'click': function(event){ 
				event.stopPropagation();
				if($(this.get('rel')).get('disabled') == false){
					$(this.get('rel')).fireEvent('change');
				}
			}
		}}).adopt(
			new Element('span')
		).inject(el, 'before');
		el.addEvent('change', function(){ 
				this.set('checked', (!this.get('checked') ? true: false));
				switch(this.get('type')){
					case 'checkbox':
						
						if(!this.get('checked')){
							$('fancy_'+this.get('id')).removeClass('fancychecked');
						} else {
							$('fancy_'+this.get('id')).addClass('fancychecked');
						}		
						break;
					case 'radio':
//					alert(this.get('name'));
						$$('input.'+this.get('name')).each(function(obj){
							$('fancy_'+obj.get('id')).removeClass('fancychecked');	
						});
						//if($('fancy_'+this.get('id')).get('disabled')){ } else {
						$('fancy_'+this.get('id')).addClass('fancychecked');	
						if(this.hasClass('type')){
							$('filterform').set('action', this.get('value'));
							$('changeduri').set('value', 'Y');
						}
						//}
					//	alert($('filterform').get('action'));
						break;
				}
		});
		el.setStyles({'margin': '0 0 0 -200px', 'display' : 'none'});
	});
	
	// sliders aanmaken
	if($type($('slider_sizes'))){
		start = parseInt($('size_start').get('title'));
		end   = parseInt($('size_end').get('title'));
		userstart = parseInt($('size_start').get('value'));
		userend   = parseInt($('size_end').get('value'));
		mySlideSS = new SliderSS( 'slider_sizes', {
							start: start,
							end: end,
							onChange: function(pos){
								can_submit = false;
								this.minelement.set('html', pos.minpos);
								this.maxelement.set('html', pos.maxpos);
								$('size_start').set('value', pos.minpos);
								$('size_end').set('value', pos.maxpos);
							},
							onComplete: function(){
								if(!waitforboth){
									can_submit = true;
									filtersubmit();
								}
							}
		 });
		//alert(start+' != '+userstart+' || '+end+' != '+userend);
		if(start != userstart || end != userend )mySlideSS.setMin(userstart).setMax(userend);																																																														 		}
	if($type($('slider_prices'))){
		start = parseInt($('price_start').get('title'));
		end   = parseInt($('price_end').get('title'));
		userstart = parseInt($('price_start').get('value'));
		userend   = parseInt($('price_end').get('value'));
		mySlidePC = new SliderSS( 'slider_prices', {
							start: start,
							end: end,
							onChange: function(pos){
								can_submit = false;
								this.minelement.set('html', pos.minpos);
								this.maxelement.set('html', pos.maxpos);
								$('price_start').set('value', pos.minpos);
								$('price_end').set('value', pos.maxpos);
							},
							onComplete: function(){
								if(!waitforboth){
									can_submit = true;
									filtersubmit();
								}
							}
		 });
		if(start != userstart || end != userend )mySlidePC.setMin(userstart).setMax(userend);	
	}
	if($type($('morebrands')) == 'element'){
		s= $('brand_inner_height').getSize(); 
		
		if(!$('morebrands').get('startheight')){
			st= $('brand_max_height').getSize();	
			$('morebrands').set('startheight', st.y);
			if((s.y-15) < st.y){
				$('brand_max_height').setStyle('height', (s.y-15)+'px');//.setStyle('background', 'red');
				$('morebrands').setStyle('display', 'none');
			}
		}
		// meer merker activeren
		$('morebrands').addEvent('click', function(event){ 
			event.preventDefault();
			s= $('brand_inner_height').getSize(); 
			
			this.set('state', this.get('state') == 'out' ? 'in' : 'out');
			//this.set('tween', {duration: 'long'});
			if(this.get('state') == 'out'){
				$('brand_max_height').tween('height', s.y);
				this.set('html', 'minder merken').addClass('lessbrands');
				//$('brand_max_height').setStyle('height',  (s.y)+'px');
			} else {
				$('brand_max_height').tween('height', this.get('startheight'));
				this.set('html', 'meer merken').removeClass('lessbrands');
	//			$('brand_max_height').setStyle('height',  '280px');
			}
		});
	}
	
	if($type($('more_toppers')) == 'element'){
		// meer merker activeren
		$('more_toppers').addEvent('click', function(event){ 
			event.preventDefault();
			this.set('state', this.get('state') == 'out' ? 'in' : 'out');
			if(this.get('state') == 'out'){
				this.removeClass('h_orange_arrowdown').addClass('h_orange_arrowup');
				$('top7_body').setStyle('display','block');
				$('top7_spacer').addClass('bottom_border');
				
				//$('top7_body').fade('in');
			} else {
				this.removeClass('h_orange_arrowup').addClass('h_orange_arrowdown');
				$('top7_body').setStyle('display','none');
				$('top7_spacer').removeClass('bottom_border');
				//$('top7_body').fade('out');
			}
			//$('top7_body').fade('toggle');
		});
	}
	
	$$('.fancysubmit').addEvent('change', function(el){
		filtersubmit(true);
	});
	

	// filter zichtbaar
	$('filterform').setStyle('visibility', 'visible');
	_filtersinited = true;
	}
});
var _cn = 'SSC2010';
var settings = {};
var _filtersinited = can_submit = mySlideSS = mySlidePC = false;
var debug = '';
validate_values = function(){
	if(save_filters()){
		return true;	
	}
};
filtersubmit = function(force){
	if(!force)force = false;
	if(_filtersinited){ 
		if(force || can_submit){
			if(validate_values()){ (function(){ 
											// alert(  document.forms['filterform'].action+"\n"+$('changeduri').get('value'));
											 document.forms['filterform'].submit(); }).delay(50); }
		}
	}
};
delete_filters = function(){
	settings = {};
	settings['use'] = 'N';
	_c = new Hash.Cookie(_cn, {duration: 0});
	_c.erase();
	_c.extend(settings);
}
save_filters = function(){
	if(settings['fcl']){
		settings['use'] = 'Y';
		_c = new Hash.Cookie(_cn, {duration: settings['fcl']});
		_c.empty();
		debug = '';
		$$('.savedata').each(function(el){
			switch(el.get('tag')){
				case 'input':
					switch(el.get('type')){
						case 'hidden':
						case 'text':
							settings[el.get('name')] = el.get('value');
							debug+="\n "+el.get('name')+" :" +settings[el.get('name')];
							break;
						case 'checkbox':
							settings[el.get('name')] = el.get('checked');
							debug+="\n "+el.get('name')+" :" +settings[el.get('name')];
							break;
						case 'radio':
							if(el.get('checked')){
								settings[el.get('name')] = el.get('value');
								debug+="\n "+el.get('name')+" :" +settings[el.get('name')];
							}
							break;
					}
					break;
				case 'select':
					settings[el.get('name')] = el.get('value');
					break;
			}
		});
		//alert(debug);
		_c.extend(settings);
		return true;
	} else {
		return true;
	}
}

empty_filter = function(k){
	try {
		switch(k){
			case 'COLLECTION':
				$('newcollection').set('checked', true);//.fireEvent('change');
				$('salecollection').set('checked', true);//.fireEvent('change');
				filtersubmit(true);
				break;
			case 'COLORS':
				$('filtercolor').set('value', 'all').fireEvent('change');
				break;
			case 'BRAND':
				$('filterbra_all').set('checked', true).fireEvent('change');
				break;
			case 'PRICE':
				if(mySlidePC){
					waitforboth = true;
					mySlidePC.setMin(parseInt($('price_start').get('title'))).setMax(parseInt($('price_end').get('title')));
					(function(){ filtersubmit(true); }).delay(200);
				}
				break;
			case 'SIZES':
				if(mySlideSS){
					waitforboth = true;
					mySlideSS.setMin(parseInt($('size_start').get('title'))).setMax(parseInt($('size_end').get('title')));
					(function(){ filtersubmit(true); }).delay(200);
				}
				break;
		}
	} catch(e){};
		
}
set_npp = function(num, refeshpage){
	try {
		if(!refeshpage)refeshpage=false;
		$('filternpp').set('value', num); 
		if(!refeshpage){
			filtersubmit(true);
		} else {
			$('filterform').getElements('select').set('disabled', true);
			$('filterform').getElements('input').set('disabled', true);
			$('changeduri').set('value', 'R').set('disabled', false);
			$('filternpp').set('disabled', false);
			$('faction').set('disabled', false);
			(function(){ document.forms['filterform'].submit(); }).delay(50);
		}
	} catch(e){};
		
}
set_sort = function(val, refeshpage){
	try {
		if(!refeshpage)refeshpage=false;
		$('filtersort').set('value', val); 
		if(!refeshpage){
			filtersubmit(true);
		} else {
			$('filterform').getElements('select').set('disabled', true);
			$('filterform').getElements('input').set('disabled', true);
			$('changeduri').set('value', 'R').set('disabled', false);
			$('filtersort').set('disabled', false);
			$('faction').set('disabled', false);
			(function(){ document.forms['filterform'].submit(); }).delay(50);
			
		}
	} catch(e){};
		
}
//$$('body').addEvents({'mousedown': function(){ can_submit = true; }, 'mouseup': function(){ can_submit = true; } });
	
/*
	var fcl;
	var saving = false;
	var _cn = 'SS2010';
	var _c = new Hash.Cookie(_cn);
	var settings = {
						fcl: 60,
						selected: 1
					}

	function save_filters(){
		if(!saving){
			saving = true;
			debug = '';
			(function(){ 
				_c = new Hash.Cookie(_cn, {duration: settings['fcl']});
				_c.empty();
				settings['selected'] = settings['selected']+1;
				debug+="\n selected :" +settings['selected'];
				$('filterform').getElements('input').each(function(el){
					switch(el.get('type')){
						case 'hidden':
						case 'text':
							settings[el.get('name')] = el.get('value');
							debug+="\n "+el.get('name')+" :" +settings[el.get('name')];
							break;
						case 'checkbox':
							settings[el.get('name')] = el.get('checked');
							debug+="\n "+el.get('name')+" :" +settings[el.get('name')];
							break;
						case 'radio':
							//alert(el.get('name') +'->'+ el.get('checked'));	
							if(el.get('checked')){
								settings[el.get('name')] = el.get('value');
								debug+="\n "+el.get('name')+" :" +settings[el.get('name')];
							}
							break;
					}
				});
				$('filterform').getElements('select').each(function(el){
					settings[el.get('name')] = el.get('value');
					debug+="\n "+el.get('name')+" :" +settings[el.get('name')];
				})
				//if(_filtersinited)alert(debug);
				_c.extend(settings);
				saving = false;
			}).delay(500);	
		}
	}
	_filtersinited=can_submit=false;
	dosubmit = true;
    window.addEvent('domready', function() {
		$('morebrands').addEvent('click', function(event){ 
			event.preventDefault();
			s= $('brand_inner_height').getSize(); 
			$('brand_max_height').setStyle('height',  (s.y+10)+'px');
		});		 
		if (_c.get('selected')) {
			str = '';
			_c.each(function(a,b){
				if(!a){
					if($type($(b)) == 'element'){
						$(b).set('checked', false);	
					}
				}
				str+= "\n "+b+" :" +a;	 
			});
			//alert(str);
			settings['fcl'] = _c.get('fcl');
			settings['selected'] = _c.get('selected');
			$('filterform').getElements('input').each(function(el){
				if(el.get('name') && _c.get(el.get('name'))){
					switch(el.get('type')){
						case 'hidden':
						case 'text':
							el.set('value', _c.get(el.get('name')));	
							break;
						case 'checkbox':
							el.set('checked', _c.get(el.get('name')));	
							break;
						case 'radio':
//							el.set('checked', _c.get(el.get('name')) == el.get('value') ? true : false);	
							break;
					}
				} 
			});
			$('filterform').getElements('select').each(function(el){
				if(el.get('name') && _c.get(el.get('name'))){
					el.set('value', _c.get(el.get('name')));	
				}
			});
		}
		$$('.savefilter').addEvent('change', function(){ 
			save_filters();
			// submit form filterform
			filtersubmit(true);									  
		});
		$('filterform').getElements('input.fancy').each(function(el){
			new Element('div', {'class':'fancycheckbox '+(el.get('checked') ? 'fancychecked' : ''),'id':'fancy_'+el.get('id'),'rel':el.get('id'),'events':{
				'click': function(){ 
					c = $(this.get('rel')).get('checked');
					switch($(this.get('rel')).get('type')){
						case 'checkbox':
							$(this.get('rel')).set('checked', (!c ? true : false));	
							break;
						case 'radio':
							$(this.get('rel')).set('checked', true);	
							break;
					}
					$(this.get('rel')).fireEvent('change');
				}
			}}).adopt(
				new Element('span')
			).inject(el, 'before');
			el.addEvent('change', function(){ 
					c = this.checked; 
					switch(this.get('type')){
						case 'checkbox':
							
							if(this.hasClass('all')){
								$$('input.'+this.get('id')).set('checked', c).fireEvent('change');
								dosubmit = false;
								(function(){ dosubmit = true; }).delay(5000);
							} else if(this.hasClass('bra_all') && !c){
								//$('bra_all').set('checked', false);
								//$('fancybra_all').removeClass('fancychecked');
								//.fireEvent('change');
							}
							if(!c){
								$('fancy_'+this.get('id')).removeClass('fancychecked');
							} else {
								$('fancy_'+this.get('id')).addClass('fancychecked');
							}		
							if(dosubmit)filtersubmit(true);		
							break;
						case 'radio':
							$$('input.'+this.get('name')).each(function(obj){
								$('fancy_'+obj.get('id')).removeClass('fancychecked');	
							});
							$('fancy_'+this.get('id')).addClass('fancychecked');	
							$('filterform').set('action', this.get('value'));
							if(dosubmit)filtersubmit(true);		
							break;
					}
			});
			el.setStyles({'position': 'absolute', 'left': '-1000px'});// 'top': '0px'});
		});
		if($type($('btn_save_filter'))){
			//$('save_filter').get('value')
			v = $('save_filter').get('value') == 'Y' ? true : false; 
			if(v){
				$('btn_save_filter').addClass('btn_save_selected');
				settings['fcl'] = 60000;
			} else {
				$('btn_save_filter').removeClass('btn_save_selected');
				settings['fcl'] = 60;
			}
			$('btn_save_filter').addEvent('click', function(){ 
				v = $('save_filter').get('value') == 'Y' ? true : false; 
				if(v){
					$('btn_save_filter').removeClass('btn_save_selected');
					$('save_filter').set('value', 'N');	
					settings['fcl'] = 60;
				} else {
					$('save_filter').set('value', 'Y');	
					$('btn_save_filter').addClass('btn_save_selected');
					settings['fcl'] = 60000;
				}
				save_filters();
			});
		}
		if($type($('slider_sizes'))){
			start = parseInt($('size_start').get('title'));
			end   = parseInt($('size_end').get('title'));
			userstart = parseInt($('size_start').get('value'));
			userend   = parseInt($('size_end').get('value'));
			var mySlideSS = new SliderSS( 'slider_sizes', {
								start: start,
								end: end,
								onChange: function(pos){
									this.minelement.set('html', pos.minpos);
									this.maxelement.set('html', pos.maxpos);
									$('size_start').set('value', pos.minpos);
									$('size_end').set('value', pos.maxpos);
									save_filters();
									// submit form filterform
									filtersubmit();
								}
			 });
			if(start != userstart || end != userend )mySlideSS.setMin(userstart).setMax(userend);																																																														 		}
		if($type($('slider_prices'))){
			start = parseInt($('price_start').get('title'));
			end   = parseInt($('price_end').get('title'));
			userstart = parseInt($('price_start').get('value'));
			userend   = parseInt($('price_end').get('value'));
			var mySlidePC = new SliderSS( 'slider_prices', {
								start: start,
								end: end,
								onChange: function(pos){
									this.minelement.set('html', pos.minpos);
									this.maxelement.set('html', pos.maxpos);
									$('price_start').set('value', pos.minpos);
									$('price_end').set('value', pos.maxpos);
									save_filters();
									// submit form filterform
									filtersubmit();
								}
			 });
			if(start != userstart || end != userend )mySlidePC.setMin(userstart).setMax(userend);	
		}
		(function(){ _filtersinited = true; }).delay(500);
    });
	$$('body').addEvents({'mousedown': function(){
							can_submit = false;				
						 },
						  'mouseup': function(){
						  	can_submit = true;
						  }
						 });
	var bc;
	validate_values = function(){
		bc = false;
		if($('bra_all').get('checked')){
			bc = true;
		} else {
			$$('.bra_all').each(function(el){ if(el.get('checked'))bc=true; });
		}
		
		if(!bc){
			//alert('Geen merk geselecteerd');	
			return false;
		} 
		return true;
	};
	
	filtersubmit = function(force){
		if(!force)force = false;
		if(_filtersinited){ 
			if(force){
				save_filters();
				(function(){
					if(validate_values()){document.forms['filterform'].submit(); }}).delay(600);
			} else if(can_submit){
				if(validate_values()){document.forms['filterform'].submit();}
			}
		}
	};
*/