(function() {

function init(){
	initComboBox();
	initGetProductsBtn();
	initCheckboxHandlers();
	initBackLink();
	initContactForm();
	initAutoCompleter();
}

function initComboBox(){
	
	var cb = $("categories");
	
	if(cb){
		
		initCheckBoxes();

		checkIfDefaultInCB();
		
		cb.addEvent('change', function(e) {
			checkIfDefaultInCB();
		});
		
	}
}

function initCheckBoxes()
{
	var bFoundParams = false;
	var arrParams = [];
	
	var sGEt = $get("?");
	
	if(sGEt != ""){
		arrParams = splitParams(sGEt);
		bFoundParams = true;
	}
	
	$$('input.cb').set('checked', true);
	
	if(bFoundParams){
		
		var cb = $("categories");
		var s = cb.options[cb.selectedIndex].text;
		var contentID = "subCat-"+s.replace(/ /g,"-");
		var showDiv = $(contentID);
		
		if(showDiv){
			showDiv.getElements('input.cb').set('checked',false);
			arrParams.each(function(item, index){
				var t = $(item);
				if(t){
					t.set('checked',true);
				}
			});
		}
	}
	
}

function initGetProductsBtn()
{
	var b = $('showProductsLink');
	if(b){
		b.addEvent('click', function(e) {
		collectData();
		});
	}
}

function initContactForm()
{
	var form = $('contactForm');
	if(form){
		form.addEvent('submit',showFormSendAnim);
	}
}

function initAutoCompleter(){
	
	var indicator = $$('img.spinner');
	indicator.setStyle('display', 'none');
	
	/*
	var inputWord = $('searchBox');
	
	var indicator = $$('img.spinner');
	indicator.setStyle('display', 'none');
	
	new Autocompleter.Ajax.Json(inputWord, '/keywords', {
		'indicatorClass': indicator,
		'minLength': 2
	});
	*/
	/*
	var indicator = $('spinner');
	indicator.setStyle('display', 'none');
	
	new Autocompleter.Ajax.Json(inputWord, '/keywords', {
		'indicator':indicator,
		'minLength': 2
	});
	*/
	
}

window.addEvent('domready', function() 
{
		init();

});
 
}());



function collectData()
{	
	var arrParams = checkTheActiveCheckBoxes();	
		
	var params = "";
	var i = 0;
	
	arrParams.each(function(item, index){
		if(i == 0){
			params += "?";
		}else{
			params += "&";
		}
		params += "tyyppi[]="+item;
		i++;
	});

	var combo = $("categories");
	var cat = combo.options[combo.selectedIndex].value;
	
	var s = cat+"/"+params;
	
	window.location = s;

}

function checkTheActiveCheckBoxes()
{
	var checkBoxes = $$(".activeSubCat input");
	
	var arr = [];
	checkBoxes.each(function(item, index){
    	if(item.checked){
    		arr.push(item.value);
    	}
    }); 
 
    return arr;
}

function initCheckboxHandlers()
{
	var btnCheckAll = $('checkAll');
	if(btnCheckAll){
		btnCheckAll.addEvent('click', function(e) {
		checkAll(true);
		});
	}
	
	var btnUnCheckAll = $('uncheckAll');
	if(btnUnCheckAll){
		btnUnCheckAll.addEvent('click', function(e) {
		checkAll(false);
		});
	}
	
}

function checkAll(b)
{
	var checkBoxes = $$(".activeSubCat input").set('checked', b);
}

function initBackLink(){
	var btnBackLink = $('backLink');
	if(btnBackLink){
		var anchor = btnBackLink.getElements('a');
		var curBack = document.referrer;
		var ndx = curBack.search(/laboline/);
		if(ndx > -1){
			anchor.set("href",curBack);
		}
	}
}

function showFormSendAnim(e)
{
	e.stop();	
 	
 	var loaderGfx = $('loaderGfx');
 	if(loaderGfx){ 		
 		loaderGfx.setStyle('visibility', 'visible');
 		loaderGfx.setStyle('display', 'block');
 	}
	
 	var submitBtn = $('submitBtn'); 		
 	if(submitBtn){ 		
 		submitBtn.setStyle('visibility', 'hidden');
 		submitBtn.setStyle('display', 'none');
 		
 	}
	
 	var form = $('contactForm');
	(function(){		
		form.removeEvents('submit');		
		form.submit();
	}).delay(1000);	
}

function hideButtons(b)
{
	var s = "visible";
	if(b){
		s = "hidden";
	}	
	
	var btnCheckAll = $('checkAll');
	if(btnCheckAll){
		btnCheckAll.setStyle('visibility', s);
	}
	
	var btnUnCheckAll = $('uncheckAll');
	if(btnUnCheckAll){
		btnUnCheckAll.setStyle('visibility', s);
	}

}

function hideNaytaValitutBtn(b)
{
	var s = "visible";
	if(b){
		s = "hidden";
	}
	
	var b = $('showProductsLink');	
	if(b){
		b.setStyle('visibility', s);
	}
}

function checkIfDefaultInCB()
{
	var def = "--Valitse--";
	var def2 = "Näytä kaikki";
	
	var cb = $("categories");
	var s = cb.options[cb.selectedIndex].text;
	
	if(s == def){
		hideButtons(true);
		hideNaytaValitutBtn(true);
	}else if(s == def2){		
		hideButtons(true);
		hideNaytaValitutBtn(false);
	}else{
		hideButtons(false);
		hideNaytaValitutBtn(false);
	}
	showSubCats(s);
}

function showSubCats(s)
{
	var subCatDivs = $$(".subCat")
	var contentID = "subCat-"+s.replace(/ /g,"-");
	var showDiv = $(contentID);

	if(showDiv){
		subCatDivs.addClass('hide');
		subCatDivs.removeClass('activeSubCat');
		showDiv.removeClass('hide');
		showDiv.addClass('activeSubCat');
		
	}else{
		subCatDivs.addClass('hide');
		subCatDivs.removeClass('activeSubCat');
	}

}

/*
Function: $get
	This function provides access to the "get" variable scope + the element anchor

Version: 1.3

Arguments:
	key - string; optional; the parameter key to search for in the url's query string (can also be "#" for the element anchor)
	url - url; optional; the url to check for "key" in, location.href is default

Example:
	>$get("foo","http://example.com/?foo=bar"); //returns "bar"
	>$get("foo"); //returns the value of the "foo" variable if it's present in the current url(location.href)
	>$get("#","http://example.com/#moo"); //returns "moo"
	>$get("#"); //returns the element anchor if any, but from the current url (location.href)
	>$get(,"http://example.com/?foo=bar&bar=foo"); //returns {foo:'bar',bar:'foo'}
	>$get(,"http://example.com/?foo=bar&bar=foo#moo"); //returns {foo:'bar',bar:'foo',hash:'moo'}
	>$get(); //returns same as above, but from the current url (location.href)
	>$get("?"); //returns the query string (without ? and element anchor) from the current url (location.href)

Returns:
	Returns the value of the variable form the provided key, or an object with the current GET variables plus the element anchor (if any)
	Returns "" if the variable is not present in the given query string

Credits:
		Regex from [url=http://www.netlobo.com/url_query_string_javascript.html]http://www.netlobo.com/url_query_string_javascript.html[/url]
		Function by Jens Anders Bakke, webfreak.no
*/
function $get(key,url){
	if(arguments.length < 2) url =location.href;
	if(arguments.length > 0 && key != ""){
		if(key == "#"){
			var regex = new RegExp("[#]([^$]*)");
		} else if(key == "?"){
			var regex = new RegExp("[?]([^#$]*)");
		} else {
			var regex = new RegExp("[?&]"+key+"=([^&#]*)");
		}
		var results = regex.exec(url);
		return (results == null )? "" : results[1];
	} else {
		url = url.split("?");
		var results = {};
			if(url.length > 1){
				url = url[1].split("#");
				if(url.length > 1) results["hash"] = url[1];
				url[0].split("&").each(function(item,index){
					item = item.split("=");
					results[item[0]] = item[1];
				});
			}
		return results;
	}
}

function splitParams(s)
{
	var arr = [];
	
	if(s != ""){
        params = s.split('&');
        params.each(function(param){
			param = param.split('=');
			s.replace(/ /g,"-");
			var word = decodeURI(param[1]);
			var fixed = word.replace(/ /g,"");
			arr.push(fixed);
        });
    }
	
	return arr;
}

