//var url = 'http://www.pedigree.pl';
var url = 'http://' + window.location.hostname;

Filter = new Class
	({
		
		application: null,
		fields: new Array(),
	
		initialize: function()
		{
			if(!$('product_filter'))
				return 0;
			
			this.application = $('product_filter');
			this.submit = $('filtr');
			this.list = $('product_list');
			this.load = $('load');
			
			if(!this.load)
			{
				this.load = new Element('div',{'id': 'load'});
				this.load.inject(document.body);
			}
			
			this.fields.push(new Filter.Button($('sucha'),{'type': 'checkbox','name': 'sucha'}));
			this.fields.push(new Filter.Button($('mokra'),{'type':'checkbox','name': 'mokra'}));
			this.fields.push(new Filter.Button($('przekaski'),{'type':'checkbox','name': 'przekaski'}));
			
			this.fields.push(new Filter.Button($('maly'),{'type':'img','name': 'maly'}));
			this.fields.push(new Filter.Button($('sredni'),{'type':'img','name': 'sredni'}));
			this.fields.push(new Filter.Button($('duzy'),{'type':'img','name': 'duzy'}));
		
			this.fields.push(new Filter.Button($('junior'),{'type':'checkbox','name': 'junior'}));
			this.fields.push(new Filter.Button($('dorosly'),{'type':'checkbox','name': 'dorosly'}));
			
			this.assignEvents();
		},
		
		
		assignEvents: function()
		{
			//this.application.addEvent('click', this.sendData.bind(this));
			this.submit.addEvent('click', this.updateList.bind(this));
		},
		
		getFieldsData: function()
		{
			var ret = {};
		
			for (var i in this.fields)
			{
				if(this.fields[i].getValue)
				{
					ret[this.fields[i].getName()] = (this.fields[i].getValue());
				}
			}
			return ret;
		},
		
		updateList: function()
		{
			var size = $('main').getSize();
			
			this.load.setStyle('height',size['y']);
			this.load.addClass('load');
			
			this.ds = new asd.DataSource('/getProductByPropies.php');
			this.ds.addRequestData
			({
				'mode': 'GET_PRODUCTS',
				'data': this.getFieldsData()
			});
			this.ds.addEvent('complete', this.refresh.bind(this));
			this.ds.request();
		},
		
		refresh: function()
		{
			this.load.removeClass('load');

			this.list.empty();

			for(var i = 0; i < this.ds.data.productsList.length; i++)
			{
				var product = this.ds.data.productsList[i]
                var productUrl = url + this.createUrl(product.id, product.menuName);                     
				
				//var link = new Element('a',{'href': url+'?d='+product.id, 'class': 'product_box'})
				var link = new Element('a',{'href': productUrl, 'class': 'product_box'})
				
				var product_img = new Element('span',{ 'class': 'product_img'})
				
				var img = new Element('img',{ 'alt':'', 'src': url+'/uploads/images/mini/'+product.mediaId+product.extension})
				
				var desc = new Element('span',{ 'class': 'product_desc', 'html': product.menuName})
				
				img.inject(product_img);
				product_img.inject(link);
				desc.inject(link);
				link.inject(this.list);
			}
			
			new Element('div',{'class':'clear'}).inject(this.list);
		},
		
		createUrl: function(id, name) 
		{
			var url = '';
			var searchM = [
	            'ą', 'Ą',
	            'ś', 'Ś',
	            'ń', 'Ń',
	            'ć', 'Ć',
	            'ę', 'Ę',
	            'ó', 'Ó',
	            'ż', 'Ż',
	            'ź', 'Ź',
	            'ł', 'Ł',
			];
	        var replaceM = [
	            'a', 'A',
	            's', 'S',
	            'n', 'N',
	            'c', 'C',
	            'e', 'E',
	            'o', 'O',
	            'z', 'Z',
	            'z', 'Z',
	            'l', 'L',   
	        ];
			        
			if (id && name)
				url += id + '-' + name;
						
			url = url.replace(/^[\s\n\r\t]*/, '');
			url = url.replace(/[\s\n\r\t]*$/, '');
			
			for (var i=0, j=searchM.length; i<j; i++)
				url = url.replace(searchM[i], replaceM[i]);
			
			url = url.replace(/[\s\n\r\t]+/g, '_');
			url = url.replace(/&nbsp;/gi, '_');
			url = url.replace(/(&[a-z]+;)/gi, '');
			url = url.replace(/[^a-z0-9_\-]+/gi, '');
			url = url.toLowerCase();
			
			return '/page/' + url;
		}
	})

Filter.Button = new Class
({
	Implements: [Options],
	
	options: null,
	
	application: null,
	__element: null,
	
	value: false,
	
	initialize: function(element, options)
	{
		this.setOptions(options);
		this.__element = element;
		this.assignEvents();
	},
	
	getValue: function()
	{
		return this.value ? 1 : 0;
	},
	
	getName: function()
	{
		return this.options.name;
	},
	
	toogleValue: function()
	{
		this.value = this.value ? false : true;
		
		this.toogleSelect();
	},
	
	assignEvents: function()
	{
		this.__element.addEvent('click',this.toogleValue.bind(this));	
	},
	
	toogleSelect: function()
	{
		if(this.options.type = 'img')
		{
			if(this.value)
			{
				this.__element.addClass('selected');
			}
			else
			{
				this.__element.removeClass('selected');
			}
		}
	}
})
		
