var my_search;
window.addEvent ("domready", function () {
	my_search = new Serach();	
})




var Serach = new Class ({
	overallOpacity: 0.7,	
	unselected_color: '#666666', //kolor nie zaznaczonego selecta
	selected_color: '#017F00', //kolor zaznaczonego selecta
	selected_categories: 0, //ilosc zaznaczonych kategorii
	selected_colors: 0, //ilosc zaznaczonych kolorow
	selected_materials: 0, //ilosc zaznaczonych materialow
	key_tips: '',
	
	initialize: function () {
		this.search_normal = $('search_normal')

		this.normal_search_field = $('search_word_normal');
		
		this.normal_search_field.addEvent('keyup', function () {
			this.getNormalTips();
		}.bind(this))
		
		
		this.normal_search_field.addEvent ('blur', function () {		
			this.hide_input.delay(200);	
		}.bind(this))
		
	 
		
		$('advanced_search_start').addEvent('click', function () {
			this.open_and_clear_advanced_search();
		}.bind(this))
		
		this.overlay = new Overlay ({ /* from overlay.js */
			height: 590, 
			cover_h: 1200
		})				
		
	},
	
	hide_input: function () {
		$('search_normal_autofill').setStyle('visibility', 'hidden');	
		try {
			$('search_adv_autofill').setStyle('visibility', 'hidden');
		} catch(e)  {} 
	},
	
	hide_input2: function () {
		$('search_normal_autofill').setStyle('visibility', 'hidden');	
		try {
			$('search_adv_autofill2').setStyle('visibility', 'hidden');
		} catch(e)  {} 
	},	
	
	init_advanced_search: function (search_param) {
		this.selected_categories = 0;
		this.selected_colors = 0;
		this.selected_materials = 0;
		
		//autopodpowiedzi
		this.adv_search_field = $('search_word_adv');
		this.adv_search_field.addEvent('keyup', function () {
			this.getAdvTips();
		}.bind(this))
		
		
		this.adv_search_field.addEvent ('blur', function () {		
			this.hide_input.delay(200);	
		}.bind(this))		
		
		//autopodpowiedzi2
		this.adv_search_field2 = $('search_word_adv2');
		this.adv_search_field2.addEvent('keyup', function () {
			this.getAdvTips2();
		}.bind(this))
		
		
		this.adv_search_field2.addEvent ('blur', function () {		
			this.hide_input2.delay(200);	
		}.bind(this))			
				
		
		//przycisk szukaj 
		$('adv_search_form').addEvent('submit', function () {
			this.advanced_search(null, null, null, null, true)
		}.bind(this))
		
		/* Kategorie */
		this.category = $('multiselect_category_content');
		this.multiselect_category = $('multiselect_category');
		
		//ukryj warstwe z kategoriami
		this.category.fade('hide');
		
		//po klikniciu na selecta pokaz warstwe z kategoriami
		$('multiselect_category').addEvent('click', function () {
			this.hideAllMultiselect();
			this.category.set('tween', {
				duration: 300
			}).fade ('toggle');	
		}.bind(this))
		
		
		/* Kolory */
		this.color = $('multiselect_color_content');
		this.multiselect_color = $('multiselect_color');
		
		//ukryj warstwe z kolorami
		this.color.fade('hide');
		
		//po klikniciu na selecta pokaz warstwe z kolorami
		this.multiselect_color.addEvent('click', function () {
			this.hideAllMultiselect();
			this.color.set('tween', {
				duration: 300
			}).fade ('toggle');	
		}.bind(this))
		

		/* Materialy */
		this.material = $('multiselect_material_content');
		this.multiselect_material = $('multiselect_material');
		
		//ukryj warstwe z materialami
		this.material.fade('hide');
		
		//po klikniciu na selecta pokaz warstwe z materialami
		this.multiselect_material.addEvent('click', function () {
			this.hideAllMultiselect();
			this.material.set('tween', {
				duration: 300
			}).fade ('toggle');	
		}.bind(this))		
		
		
		if (search_param) {
			this.init_default_values(search_param);
		}		
		
		
		this.category.getElements('.search_cat').each (function (item, i) {
			var checkbox = item.getPrevious();		
			item.addEvent('click', function () {
				if (checkbox.checked) {
					checkbox.checked = false;
					this.setColor(checkbox, 'category');
				} else {
					checkbox.checked = true;		
					this.setColor(checkbox, 'category');					
				}
			}.bind(this))
		}.bind(this))
		
		
		
		this.color.getElements('.search_color').each (function (item, i) {
			var checkbox = item.getPrevious();		
			item.addEvent('click', function () {
				if (checkbox.checked) {
					checkbox.checked = false;
					this.setColor(checkbox, 'color');
				} else {
					checkbox.checked = true;		
					this.setColor(checkbox, 'color');					
				}
			}.bind(this))
		}.bind(this))		
		
		
		this.material.getElements('.search_material').each (function (item, i) {
			var checkbox = item.getPrevious();		
			item.addEvent('click', function () {
				if (checkbox.checked) {
					checkbox.checked = false;
					this.setColor(checkbox, 'material');
				} else {
					checkbox.checked = true;		
					this.setColor(checkbox, 'material');					
				}
			}.bind(this))
		}.bind(this))		
		
		
		//zamknij wszystkie multi selecty
		$('close_all_multiselect').addEvent('click', function (event) {
			this.hideAllMultiselect(event);
		}.bind(this));
		
		$('close_all_multiselect').setStyle('height', 608);
	},		
	
	init_lang: function (lang) {
		this.lang = lang;
	},
	
	
	init_default_values: function (search_param) {
		//set categories
		var categories = '';
		var categories_param = search_param.categories.split(',');
		this.category.getElements('input[name=categories]').each (function (item){	
			for (var k = 0, i = categories_param.length; k < i; k++) {
				if (categories_param[k] == item.value) {
					item.checked = true;
					this.setColor(item, 'category');
				}
			}
		}.bind(this))	
		
		
		//set colors
		var colors = '';
		var colors_param = search_param.colors.split(',');
		this.color.getElements('input[name=colors]').each (function (item){	
			for (var k = 0, i = colors_param.length; k < i; k++) {
				if (colors_param[k] == item.value) {
					item.checked = true;
					this.setColor(item, 'color');
				}
			}
		}.bind(this))		
		
		
		//set materials
		var materials = '';
		var materials_param = search_param.materials.split(',');
		this.material.getElements('input[name=materials]').each (function (item){	
			for (var k = 0, i = materials_param.length; k < i; k++) {
				if (materials_param[k] == item.value) {
					item.checked = true;
					this.setColor(item, 'material');
				}
			}
		}.bind(this))					
	},
	
	/* ustawia kolor zaznaczonych lub odznaczonych itemow */
	setColor: function (checkbox, type) {
		if (checkbox.checked) {
			checkbox.getNext().setStyle ('color', this.selected_color);
		} else {
			checkbox.getNext().setStyle ('color', this.unselected_color)
		}
		
		switch (type) {
			case "category":
				this.setCategoryChoosen(checkbox.checked);					
				break;
			case "color":
				this.setColorChoosen(checkbox.checked);
				break;
			case "material":
				this.setMaterialChoosen(checkbox.checked);
				break;				
				
		}

	},
	
	
	/* w glownym selecie pokazuje ile itemow jest zaznaczonych */
	setCategoryChoosen: function (checked) {
		if (checked) {
			this.selected_categories++;
		} else {
			this.selected_categories--;
		}

		if (this.selected_categories > 0) {
			this.multiselect_category.set('html', this.lang.wybrano + ' - ' + this.selected_categories);

		} else {
			this.multiselect_category.set('html', this.lang.wybierz);			
		}
	},
	
	
	/* w glownym selecie pokazuje ile itemow jest zaznaczonych */
	setColorChoosen: function (checked) {
		if (checked) {
			this.selected_colors++;
		} else {
			this.selected_colors--;
		}
		
		if (this.selected_colors > 0) {
			this.multiselect_color.set('html', this.lang.wybrano + ' - ' + this.selected_colors);
		} else {
			this.multiselect_color.set('html', this.lang.wybierz);			
		}
	},	
	
	
	/* w glownym selecie pokazuje ile itemow jest zaznaczonych */
	setMaterialChoosen: function (checked) {
		if (checked) {
			this.selected_materials++;
		} else {
			this.selected_materials--;
		}
		
		if (this.selected_materials > 0) {
			this.multiselect_material.set('html', this.lang.wybrano + ' - ' + this.selected_materials);
		} else {
			this.multiselect_material.set('html', this.lang.wybierz);			
		}
	},		
	
	/* uruchamia normalne wyszukiwanie produktow */
	normal_search: function () {
		var word = $('search_word_normal').value
		request_normal_search (word);
		//my_bookmarks.createBookmark(controller, action, id, page, this.lang.wyszukiwarka_zaawansowana, false);
		my_bookmarks.createNew('search', 'normal', 1, encodeURIComponent($('search_word_normal').value)+'/1/true', 'Wyszukiwarka')
	},
	
	advanced_search: function (controller, action, id, page, cc) {
		if (!controller) {
			controller = 'search'
		}
		if (!action) {
			action = 'advanced';
		}
		if (!id) {
			id =1;
		}
		if (!page) {
			page = 1;
		}
		

		/* Kod produktu */
		var prodcode = $$('input[name=prod_code]')[0].value;
		
		/* Slowo kluczowe */
		var keyword = $$('input[name=name]')[0].value;	
		
		/* Cena od */
		var price_from = $$('input[name=price_from]')[0].value;

		/* Cena do	*/
		var price_to = $$('input[name=price_to]')[0].value;
		
		/* Pobierz kategorie */
		var categories = '';
		this.category.getElements('input[name=categories]').each (function (item){
			if (item.checked) {;
				categories += item.value + ',';
			}
		})			
		categories = categories.substr(0, categories.length - 1)

		/* Pobierz kolory */
		var colors = '';
		this.color.getElements('input[name=colors]').each (function (item){
			if (item.checked) {
				colors += item.value + ',';
			}
		})	
		colors = colors.substr(0, colors.length - 1)

		/* Pobierz materialy */
		var materials = '';
		this.material.getElements('input[name=materials]').each (function (item){
			if (item.checked) {
				materials += item.value + ',';
			}
		})	
		materials = materials.substr(0, materials.length - 1)
		
		var promotion = $$('input[name=promotion]')[0].checked;	
		var sale = $$('input[name=sale]')[0].checked;	
		var eko = $$('input[name=eko]')[0].checked;					
		
		var order_by = $$('select[name=sort_by]')[0].value;					
		
		this.search = new Hash ({
			prodcode: prodcode,
			keyword: keyword,
			categories: categories,
			price_from: price_from,
			price_to: price_to,
			colors: colors,
			materials: materials,
			promotion: promotion,
			sale: sale,
			eko: eko,
			order_by: order_by
		
		})
		
		this.filter = new Hash ({
			
		})
		
		
		if ($$('#' + controller + '_' + action + '_' + id).length < 1) {
			my_bookmarks.createBookmark(controller, action, id, page, this.lang.wyszukiwarka_zaawansowana, false);
		}
	
		request_advanced_search (controller, action, id, page, this.search, cc);
		this.closeSearch();
	},
	
	clearSearch: function () {
		this.selected_categories = 0;
		this.selected_colors = 0;
		this.selected_materials = 0;
		this.search = null;
	},
	
	resetSearch: function () {
		this.clearSearch();	
		
		/* Kod produktu */
		$$('input[name=prod_code]')[0].value = '';
		
		/* Slowo kluczowe */
		$$('input[name=name]')[0].value = '';	
		
		/* Cena od */
		$$('input[name=price_from]')[0].value = '';

		/* Cena do	*/
		$$('input[name=price_to]')[0].value = '';		
		
		$$('input[name=categories]').each (function (item){	

			if (item.checked) {
				item.checked = false;
				this.setColor(item, 'category');				
			}

		}.bind(this))	
		
		
		//set colors
		$$('input[name=colors]').each (function (item){	

			if (item.checked) {
				item.checked = false;	
				this.setColor(item, 'color');			
			}

		}.bind(this))		
		
		
		//set materials
		$$('input[name=materials]').each (function (item){	
			if (item.checked) {
				item.checked = false;					
				this.setColor(item, 'material');			
			}
		}.bind(this))	

	},
	
	open_and_clear_advanced_search: function () {
		this.clearSearch();
		this.open_advanced_search();
	},
	
	open_advanced_search: function () {
		this.overlay.show();
		this.overlay.showContent =  function () {
			request_showAdvancedSearch (this.overlay, this.search);
		}.bind(this);		
	},
	
	/* ukryj wszystkie multiselecty */
	hideAllMultiselect: function (event) {
		
		//zamknij diva z kategoriami
		this.category.set('tween', {
			duration: 300
		}).fade('out');


		//zamknij diva z kolorami		
		this.color.set('tween', {
			duration: 300
		}).fade('out');		
		
		
		//zamknij diva z materialami	
		this.material.set('tween', {
			duration: 300
		}).fade('out');	
		
	},
	
	getNormalTips: function () {
		var keyword = this.normal_search_field.value;
		get_search_normal_tips (keyword)
	},
	
	showNormalTips: function (response) {
		if (response.trim() != '') {
			$('search_normal_autofill').setStyle('visibility', 'visible');
		} else {
			$('search_normal_autofill').setStyle('visibility', 'hidden');
		}
	},
	
	getAdvTips: function () {
		var keyword = this.adv_search_field.value;
		get_search_adv_tips (keyword)	//request.js	
	},
	
	getAdvTips2: function () { //pole prodcode
		var keyword = this.adv_search_field2.value;
		get_search_adv_tips2 (keyword)	//request.js	
	},	
	
	showAdvTips: function (response) {
		if (response.trim() != '') {
			$('search_adv_autofill').setStyle('visibility', 'visible');
		} else {
			$('search_adv_autofill').setStyle('visibility', 'hidden');
		}
	},
	
	showAdvTips2: function (response) {
		if (response.trim() != '') {
			$('search_adv_autofill2').setStyle('visibility', 'visible');
		} else {
			$('search_adv_autofill2').setStyle('visibility', 'hidden');
		}
	},	
	
	getSelectedTips: function (elem) {
		var tips = this.getInnerText(elem.childNodes[0]);
		return tips;
	},
	
	getInnerText: function (elt) {
		var _innerText = elt.innerText;
		if (_innerText == undefined) {
	  		_innerText = elt.innerHTML.replace(/<[^>]+>/g,"");
		}
		return _innerText;
	},

	
	closeSearch: function () {
		this.overlay.hide();
	}
	
})



