Event.observe(window,'load',function(){
	
	if(!$$('#corcatbox .content ul *').length) try{if($('corcatbox')) $('corcatbox').hide();}catch(e){}
	try{if(!$$('#lastsearchbox .content *').length) $('lastsearchbox').hide();}catch(e){}
	try{if(!$$('#freqsearchbox .content *').length) $('freqsearchbox').hide();}catch(e){}
	
	if($('cname')){
		var products=new ProductsManager($('cname').value);
		
		products.ebay_request();

		$$('h3 .opener').each(function(el){
			var box=el.up('h3').next('.content');
			try{if(box.getStyle('display')=='none') el.addClassName('closed');}catch(e){}
			el.observe('click',function(e){
				var el=Event.element(e);
				var box=el.up('h3').next('.content');
				el.toggleClassName('closed');
				Effect.toggle(box,'blind',{duration:.5});
			});
		});

		/* PRICE SLIDER */
		try{
			var tmin=parseFloat($('tmin').value);
			var tmax=parseFloat($('tmax').value);
			var initial_values = [($F('min')-tmin)/tmax, ($F('max'))/tmax];
			if(initial_values[0]>1)initial_values[0]=1;
			if(initial_values[1]>1)initial_values[1]=1;
			
			var slider = new Control.Slider(['hmin','hmax'], 'priceslider', {
				sliderValue: initial_values,
				restricted: true,
				onSlide: function(values){
					i=0;
					['min','max'].each(function(el){values[i]=[values[i],el];i++;});
					values.each(function(value){
						_value=(value[0]*tmax)+tmin;
						if(_value>tmax) _value=tmax;
						if(_value>0) $(value[1]).value=_value.toFixed(0);
					});
				}
			});

			$('min').observe('keyup',function(e){
				value=(Event.element(e).value)/tmax;
				if(value>1) value=1;
				slider.setValue(value,0);
			});
			$('max').observe('keyup',function(e){
				value=(Event.element(e).value)/tmax;
				if(value>1) value=1;
				slider.setValue(value,1);
			});
			$('restore_price').observe('click',function(){
				var min=$('min');
				min.value=tmin;
				slider.setValue(0,0);
				var max=$('max');
				max.value=tmax;
				slider.setValue(1,1);
			});
			$('send_price').observe('click',function(){
				products.set_min($F('min')).set_max($F('max')).request();
			});

			$$('#min, #max').each(function(el){el.value=parseInt(el.value)});
		}catch(e){}

		/* COLLECTIONS*/
		var filterize=function(el){
			if(el.readAttribute('type')!='hidden'){
				var sel=el.up();
				sel.up('li').observe('click',function(e){
					var el=Event.element(e);
					if(el.tagName!='A'){
						if(!el.hasClassName('select')) el=el.down('.select');
						el.toggleClassName('deselect');
						el.up().down('.seldescr').toggleClassName('deselect');
						el=el.down();
						var col=el.className;
						el.checked=!el.checked;
						el=el.up('li');
						products.set_collection([col]).timed_request();
					}
				});
			}
		};

		$$('.tps, .mrs, .brs').each(filterize);

		/* SEARCH */
		try{
			$('send_search').observe('click',function(){products.set_search_key().request();});
			$('insearch').observe('keyup',function(e){
				if(e.keyCode == Event.KEY_RETURN){products.set_search_key().request();}
			});
		}catch(e){}

		/* ORDER */
		try{products._setup_order()._setup_texts()._setup_images();}catch(e){}
	
		try{if(!$$('#similbox .content *').length) $('similbox').hide();}catch(e){}
		try{if($$('#productbox .content ul li').length<2) $('productbox').hide();}catch(e){}
		try{if($$('#brandbox .content ul li').length<2) $('brandbox').hide();}catch(e){}
		try{if($$('#merchantbox .content ul li').length<2) $('merchantbox').hide();}catch(e){}

		try{ 
			if($('searchbox') && $('tosearch')) 
				$('searchbox').down('.q').value=$('tosearch').value;
		}catch(e){}

		try{
			$('showbrands').observe('click',function(e){
			new Ajax.Updater(e.element().up('ul'),'http://www.mrwallet.it/offerte/show-all-brands.html',{
				method:'post',
				postBody:'category='+$('cname').value,
				onComplete:function(){
					$$('.brs').each(filterize);
				}
			});
		});}catch(e){}

		try{
			if($('showmerchants'))
				$('showmerchants').observe('click',function(e){
				new Ajax.Updater(e.element().up('ul'),'http://www.mrwallet.it/offerte/show-all-merchants.html',{
					method:'post',
					postBody:'category='+$('cname').value,
					onComplete:function(){
						$$('.mrs').each(filterize);
					}
				});
		});}catch(e){}
	}else Bigger._setup_images();
});

var ProductsManager=Class.create({
	values:{
		search:'',
		min:0,
		max:0,
		'stps[]':[],
		'smrs[]':[],
		'sbrs[]':[],
		order:''
	},
	initialize:function(cat){
		this.values.category=cat;
		try{this.set_min($('min').value).set_max($('max').value);}catch(e){}
		try{this.set_collection(['tps','mrs','brs']);}catch(e){}
		try{this.set_search_key().set_order();}catch(e){}
	},
	set_min:function(min){
		this.values.min=min;
		return this;
	},
	set_max:function(max){
		this.values.max=max;
		return this;
	},
	set_collection:function(cols){
		$A(cols).each(function(col){
			this.values['s'+col+'[]']=[null];
			$$('.'+col).each(function(el){
				if(el.checked==false) this.values['s'+col+'[]'].push(el.value);
			}.bind(this));
			//console.log(col+': '+this.values['s'+col+'[]']);
		}.bind(this));
		return this;
	},
	set_search_key:function(){
		var l=this.values.search;
		this.values.search=$('insearch').value;
		var b=$$('#bc b').last();
		var el=$('bc');
		if(this.values.search){
			if(!b.hasClassName('searched')){
				el.insert({bottom:new Element('a',{href:el.down('input').value+'?reset-search=1','className':'searched'}).update(b.innerHTML.stripTags())});
				el.insert({bottom:new Element('span').update(' &gt; ')});
				el.insert({bottom:new Element('b',{'className':'searched'}).update('"'+this.values.search+'"')});				
				b.remove();
			}else b.update('"'+this.values.search+'"');
		}else{
			if(l){
				b.remove();
				var a=$$('#bc a').last();
				a.next('span').remove();
				el.insert({bottom:new Element('b').update(a.innerHTML+'<input type="hidden" value="'+el.down('input').value+'" />')});
				a.remove();
			}
		}
		return this;
	},
	set_order:function(){
		try{this.values.order=$('order').value;}catch(e){this.values.order='price_down';}
		return this;
	},
	_setup_order:function(){
		var order=$$('select.order');
		if(order.length>0){
			order.last().hide().id='';
			order.first().observe('change',function(){
				this.set_order().timed_request();
			}.bindAsEventListener(this));
		}
		return this;
	},
	_setup_images:function(){
		Bigger._setup_images();
	},
	_setup_texts:function(){
		$$('.expandtext').invoke('observe','click',function(e){
			var el=Event.element(e);
			new Ajax.Updater(el.up('span'),'http://www.mrwallet.it/offerte/get-product-description.html',{method:'post',postBody:'id='+el.down('input').value});
		});
		return this;
	},
	request:function(){
		var products=$('products');
		var h=products.getHeight();
		$('waiter').appear({from:0,to:1,duration:.5});
		new Effect.Appear($('productslist'),{from:1,to:0,duration:.4,afterFinish:function(){
			products.setStyle({height:h+'px'});
			new Ajax.Updater(products,'http://www.mrwallet.it/offerte/update-products.html',{method:'post',postBody:$H(this.values).toQueryString(),onComplete:function(t){
				var data=t.headerJSON;
				$('pn').update(data.products_number);
				$('tmin').value=data.tmin;
				$('tmax').value=data.tmax;
				$('min').value=data.min;
				$('max').value=data.max;
				$('waiter').fade({from:1,to:0,duration:.3,afterFinish:function(){
					this._setup_order()._setup_texts();
					setTimeout(this._setup_images,2000);
					$('productslist').appear({from:0,to:1,duration:.4});
					products.setStyle({height:'auto'});
					this.ebay_request();
				}.bind(this)});
			}.bind(this)});
		}.bind(this)});
	},
	timed_request:function(){
		if(this.timed) clearInterval(this.timed);
		this.timed=setTimeout(function(){this.request()}.bind(this),700);
	},
	ebay_request:function(){
		if($('auctionbox')) new Ajax.Updater($('auctions'),'http://www.mrwallet.it/offerte/get-ebay-products.html',{method:'post',postBody:'category='+$('cname').value});
	}
});

