/*

TODO:
	- ce se pocekira se kksna grupa (ce mas neki pocekiranga, kr pripada eni grupi
	  in pocekiras se enga iz druge grupe), se oznacta, ampak ne dela AND na ostalih
	  dveh stolpcih;

*/

	function init() {
		buildSections();
		buildBrands();
		buildFamilies();
	}

	function buildSections(){
		var sectionsCell = $('section');

		for (var i = 0; i < sections.length; i++) {
			if (sections[i])
				newCheckbox(sectionsCell, 'sections', sections[i][0], sections[i][1]);
		}
	}

	function buildBrands() {
		var brandsCell = $('brand');

		for (var i = 0; i < brands.length; i++) {
			newCheckbox(brandsCell, 'brands', brands[i][0], brands[i][1]);
		}
	}

	function buildFamilies() {
		var familiesCell = $('family');

		for (var i = 0; i < families.length; i++) {
			newCheckbox(familiesCell, 'families', families[i][0], families[i][1]);
		}
	}


	function newCheckbox(parent, name, value, label) {

		var holder, holderLabel, holderMain, chkbox, cbLabel;

		holderMain = document.createElement('tr');

		holder         = document.createElement('td');
		holderLabel    = document.createElement('td');

		holder.className			= 'chkbox';
		holderLabel.className	= 'chkboxtxt';

		chkbox         = document.createElement('input');
		chkbox.type    = 'checkbox';
		chkbox.id      = name + '_' + value;
		chkbox.value   = value;
		chkbox.name    = name;
		chkbox.onclick = syncCheckboxes;

		cbLabel        = document.createElement('label');
		cbLabel.id		 = 'label_' + name + '_' + value;

		//cbLabel.setAttribute('for', chkbox.id);
		//cbLabel.for = chkbox.id;
		cbLabel.htmlFor = chkbox.id;
		cmDOM.addText(cbLabel, label);

		holder.appendChild(chkbox);
		holderLabel.appendChild(cbLabel);

		holderMain.appendChild(holder);
		holderMain.appendChild(holderLabel);

		parent.appendChild(holderMain);

		return true;
	}

	function fillArrayChecked(arr, arrName){

		var tmp = new Array();

		for( var i = 0; i < arr.length; i++){
			if (arr[i]){
				var temp = $(arrName + arr[i][0]);
				if (temp.checked == true && !temp.disabled){
					tmp.push(arr[i][0]);
				}
			}
        }

		return tmp;

	}

	function checkit(dataArray, arr, fieldName, check, disable){

		var tmp = new Array();

		for (var i in dataArray){
			for (var j = 0; j < dataArray[i].length; j++){
				if (inArray(i, document.matched_gids) && check){

					tmp.push(dataArray[i][j]);

					if (!disable){
						// pomeni da smo v izbranem stolpcu ker jih cekiramo
						$(fieldName + dataArray[i][j]).checked = check;
					}
				}
			}
		}

		if (disable){
			for (var ii = 0; ii < arr.length; ii++){
				if (!inArray(arr[ii][0], tmp)){
					$(fieldName + arr[ii][0]).disabled = check;
				}
			}
		}

	}

	var primaryName		= '';
	var secondaryName	= '';
	var terciaryName	= '';


	function array_key_exists(key, arr){
		for (var i in arr){
			if (i == key){
				return true;
			}
		}
		return false;
	}

	function removeIndex(pos, arr){

		var tmp = new Array();

		for (var i in arr){
			if (pos != i){
				tmp.push(arr[i]);
			}
		}

		return tmp;
	}

	var indeks;
	var checkedStates = new Array();
	var lastArray = new Array();

	function main(name, id, check){

		var group_array 		= new Array();
		var matched_gids		= new Array();
		var checkedSections	= new Array();
		var checkedBrands		= new Array();
		var checkedFamilies	= new Array();



		// vsebuje idje ki so enablani (in ne chekani)...
		document.enabled_ids		= new Array();

		switch(name){
			case 'sections'	: group_array = pgroup_section; break;
			case 'brands'		: group_array = pgroup_brand;		break;
			case 'families'	: group_array = pgroup_family;	break;
		}
		checkedSections	= fillArrayChecked(sections,	'sections_');
		checkedBrands		= fillArrayChecked(brands, 		'brands_');
		checkedFamilies	= fillArrayChecked(families,	'families_');

		var found = false;
		var isLast = false;
		for (i = 0; i < checkedStates.length; i++) {
			if (checkedStates[i] == name) {
				found = (checkedStates[i] == name);
				isLast = (i == (checkedStates.length -1));
				break;
			}
		}

		if (!found) {
			checkedStates.push(name);
		}

		primaryName = (checkedStates[0]) ? checkedStates[0] : '';
		secondaryName = (checkedStates[1]) ? checkedStates[1] : '';
		terciaryName = (checkedStates[2]) ? checkedStates[2] : '';



		//checkedStates


		if (primaryName){
			//alert('PRIM');
			var check1 = new Array();
			var check1_ = new Array();
			var check2 = new Array();
			var check3 = new Array();

			var check4 = new Array();
			var check5 = new Array();

			var check4Name = '';
			var check5Name = '';

			switch(primaryName) {
				case 'sections'	:
					match1			= pgroup_data_sections;
					match3			= pgroup_data_families;
					match2			= pgroup_data_brands;
					check1			= pgroup_data_sections;
					check1_			= checkedSections;
					check2			= pgroup_brand;
					check2_			= checkedBrands;
					check3			= pgroup_family;
					check3_			= checkedFamilies;
					check4			= brands;
					check5			= families;
					check4Name	= 'brands_';
					check5Name	= 'families_';
					break;
				case 'brands'		:
					match2			= pgroup_data_sections;
					match3			= pgroup_data_families;
					match1			= pgroup_data_brands;
					check1 			= pgroup_data_brands;
					check1_			= checkedBrands;
					check2			= pgroup_section;
					check2_			= checkedSections;
					check3			= pgroup_family;
					check3_			= checkedFamilies;
					check4			= sections;
					check5			= families;
					check4Name	= 'sections_';
					check5Name	= 'families_';
					break;
				case 'families'	:
					match2			= pgroup_data_sections;
					match1			= pgroup_data_families;
					match3			= pgroup_data_brands;
					check1			= pgroup_data_families;
					check1_			= checkedFamilies;
					check2			= pgroup_section;
					check2_			= checkedSections;
					check3			= pgroup_brand;
					check3_			= checkedBrands;
					check4			= sections;
					check5			= brands;
					check4Name	= 'sections_';
					check5Name	= 'brands_';
					break;
			}

			/*
			// cekiramo keri product groupi so pocekirani
			for (var ii = 0; ii < check1_.length; ii++){
				for (var i = 0; i < check1[check1_[ii]].length; i++){
					matched_gids.push(check1[check1_[ii]][i]);
				}
			}
			*/



			var matched_gids1 = new Array();
			var matched_gids2 = new Array();
			var matched_gids3 = new Array();
			var matched_gids = new Array();


			// cekiramo keri product groupi so pocekirani

			for (var ii = 0; ii < check1_.length; ii++){
				if (match1[check1_[ii]]) {
					for (var i = 0; i < match1[check1_[ii]].length; i++){
							matched_gids1.push(match1[check1_[ii]][i]);
					}
				}
			}


			if (
				(secondaryName == '' || !compare(eval('pgroup_data_' + secondaryName), match2))
				&&
				(terciaryName == '' || !compare(eval('pgroup_data_' + terciaryName), match2))
			) {
				for (var ii = 0; ii < check2_.length; ii++){
					for (var i = 0; i < match2[check2_[ii]].length; i++){
							matched_gids2.push(match2[check2_[ii]][i]);
					}
				}
			}

			if (
				(secondaryName == '' || !compare(eval('pgroup_data_' + secondaryName), match3))
				&&
				(terciaryName == '' || !compare(eval('pgroup_data_' + terciaryName), match3))
			) {
				for (var ii = 0; ii < check3_.length; ii++){
					for (var i = 0; i < match3[check3_[ii]].length; i++){
							matched_gids3.push(match3[check3_[ii]][i]);
					}
				}
			}

			for(var j = 0; j < matched_gids1.length; j++){
				if (
						(inArray(matched_gids1[j], matched_gids2) || !matched_gids2.length) &&
						(inArray(matched_gids1[j], matched_gids3) || !matched_gids2.length) &&
						!inArray(matched_gids1[j], matched_gids)
					) {
					matched_gids.push(matched_gids1[j]);
				}
			}
			for(var j = 0; j < matched_gids2.length; j++){
				if (
						(inArray(matched_gids2[j], matched_gids1) || !matched_gids1.length)&&
						(inArray(matched_gids2[j], matched_gids3) || !matched_gids3.length)&&
						!inArray(matched_gids2[j], matched_gids)
					) {
					matched_gids.push(matched_gids2[j]);
				}
			}
			for(var j = 0; j < matched_gids3.length; j++){
				if (
						(inArray(matched_gids3[j], matched_gids1) || !matched_gids1.length) &&
						(inArray(matched_gids3[j], matched_gids2) || !matched_gids2.length) &&
						!inArray(matched_gids3[j], matched_gids)
					) {
					matched_gids.push(matched_gids3[j]);
				}
			}

document.enabled_ids = new Array();

			// imamo vse product groupe in loopamo
			for (i = 0; i < matched_gids.length; i++){

				var mgid = matched_gids[i];

				if (array_key_exists(mgid, check2) && array_key_exists(mgid, check3)){
					// gremo cez * in * in cekiramo kateri je v teh brandih...
					for (var j = 0; j < check2[mgid].length; j++){
						if (!inArray(check2[mgid][j], document.enabled_ids)){
							document.enabled_ids.push(check2[mgid][j]);
						}
					}
					for (var j = 0; j < check3[mgid].length; j++){
						if (!inArray(check3[mgid][j], document.enabled_ids)){
							document.enabled_ids.push(check3[mgid][j]);
						}
					}
				}
			}

			// gremo cez cel stolpec * in * in
			// enajblamo vse, ki so v enabled_ids, katero
			// filamo zgoraj...
			for (var i = 0; i < check4.length; i++){
				if(check4[i]){
					// ce ni nobenga zbranga vse enablamo...
					if (!document.enabled_ids.length){
						$(check4Name + check4[i][0]).disabled = false;
						$('label_' + check4Name + check4[i][0]).style.color = '#000000';
					}else{
						if (!inArray(check4[i][0], document.enabled_ids)){
							if (check == false)	{ $(check4Name + check4[i][0]).disabled = !check; }
							else								{ $(check4Name + check4[i][0]).disabled = check;  }
								$('label_' + check4Name + check4[i][0]).style.color = '#989898';
						}else{
							if (check == false)	{ $(check4Name + check4[i][0]).disabled = check;  }
							else								{ $(check4Name + check4[i][0]).disabled = !check; }
								$('label_' + check4Name + check4[i][0]).style.color = '#000000';
						}
					}
				}
			}
			for (var i = 0; i < check5.length; i++){
				if (!document.enabled_ids.length){
					$(check5Name + check5[i][0]).disabled = false;
					$('label_' + check5Name + check5[i][0]).style.color = '#000000';
				}else{
					if (!inArray(check5[i][0], document.enabled_ids)){
						if (check == false)	{ $(check5Name + check5[i][0]).disabled = !check; }
						else								{ $(check5Name + check5[i][0]).disabled = check;  }
							$('label_' + check5Name + check5[i][0]).style.color = '#989898';
					}else{
						if (check == false)	{ $(check5Name + check5[i][0]).disabled = check; }
						else								{ $(check5Name + check5[i][0]).disabled = !check;  }
							$('label_' + check5Name + check5[i][0]).style.color = '#000000';
					}
				}
			}
			// end of sections

		}

		if (secondaryName){
			//alert('SEC');
			var check1 = new Array();
			var check1_ = new Array();
			var check2 = new Array();
			var check3 = new Array();

			var check4 = new Array();
			var check5 = new Array();

			var check4Name = '';
			var check5Name = '';

			switch(secondaryName) {
				case 'sections'	:
					match1			= pgroup_data_sections;
					match3			= pgroup_data_families;
					match2			= pgroup_data_brands;
					check1			= pgroup_data_sections;
					check1_			= checkedSections;
					check2			= pgroup_brand;
					check2_			= checkedBrands;
					check3			= pgroup_family;
					check3_			= checkedFamilies;
					check4	=  (primaryName != 'brands') ? brand : families;
					//check5			= families;
					check4Name	=  (primaryName != 'brands') ? 'brands_' : 'families_';
					//check5Name	= 'families_';
					break;
				case 'brands'		:
					match2			= pgroup_data_sections;
					match3			= pgroup_data_families;
					match1			= pgroup_data_brands;
					check1 			= pgroup_data_brands;
					check1_			= checkedBrands;
					check2			= pgroup_section;
					check2_			= checkedSections;
					check3			= pgroup_family;
					check3_			= checkedFamilies;
					check4	=  (primaryName != 'sections') ? sections : families;
					check4Name	=  (primaryName != 'sections') ? 'sections_' : 'families_';
					break;
				case 'families'	:
					match2			= pgroup_data_sections;
					match1			= pgroup_data_families;
					match3			= pgroup_data_brands;
					check1			= pgroup_data_families;
					check1_			= checkedFamilies;
					check2			= pgroup_section;
					check2_			= checkedSections;
					check3			= pgroup_brand;
					check3_			= checkedBrands;
					check4	=  (primaryName != 'sections') ? sections : brands;
					check4Name	=  (primaryName != 'sections') ? 'sections_' : 'brands_';
					break;
			}

			var matched_gids1 = new Array();
			var matched_gids2 = new Array();
			var matched_gids3 = new Array();
			var matched_gids = new Array();

			// cekiramo keri product groupi so pocekirani
			
			for (var ii = 0; ii < check1_.length; ii++){
				if (match1[check1_[ii]]) {
					for (var i = 0; i < match1[check1_[ii]].length; i++){
							matched_gids1.push(match1[check1_[ii]][i]);
					}
				}
			}
			if (terciaryName == '' || !compare(eval('pgroup_data_' + terciaryName), match2)) {
				for (var ii = 0; ii < check2_.length; ii++){
					for (var i = 0; i < match2[check2_[ii]].length; i++){
							matched_gids2.push(match2[check2_[ii]][i]);
					}
				}
			}

			if (terciaryName == '' || !compare(eval('pgroup_data_' + terciaryName), match3)) {
				for (var ii = 0; ii < check3_.length; ii++){
					if (match3[check3_[ii]]){
						for (var i = 0; i < match3[check3_[ii]].length; i++){
								matched_gids3.push(match3[check3_[ii]][i]);
						}
					}
				}
			}
			//
			//alert(matched_gids);
			for(var j = 0; j < matched_gids1.length; j++){
				//alert(inArray(matched_gids1[j], matched_gids2) && inArray(matched_gids1[j], matched_gids3));
				if (
						(inArray(matched_gids1[j], matched_gids2) || !matched_gids2.length) &&
						(inArray(matched_gids1[j], matched_gids3) || !matched_gids3.length) &&
						!inArray(matched_gids1[j], matched_gids)
					) {
					matched_gids.push(matched_gids1[j]);
				}
			}

			/*alert(inArray(259, matched_gids2));
			alert(inArray(259, matched_gids3));

			if (inArray(259, matched_gids)) {
				alert('MARS VAN');
			}
			*/
			for(var j = 0; j < matched_gids2.length; j++){
				if (
						(inArray(matched_gids2[j], matched_gids1) || !matched_gids1.length) &&
						(inArray(matched_gids2[j], matched_gids3) || !matched_gids3.length) &&
						!inArray(matched_gids2[j], matched_gids)){
					matched_gids.push(matched_gids2[j]);
				}
			}
			for(var j = 0; j < matched_gids3.length; j++){
				if (
						(inArray(matched_gids3[j], matched_gids1) || !matched_gids1.length) &&
						(inArray(matched_gids3[j], matched_gids2) || !matched_gids2.length) &&
						!inArray(matched_gids3[j], matched_gids)){
					matched_gids.push(matched_gids3[j]);
				}
			}


//alert(check2[280]);
//alert(check3[280]);
document.enabled_ids = new Array();
			// imamo vse product groupe in loopamo
			for (i = 0; i < matched_gids.length; i++){

				var mgid = matched_gids[i];

				//if (array_key_exists(mgid, check2) && array_key_exists(mgid, check3)){
					// gremo cez * in * in cekiramo kateri je v teh brandih...
					for (var j = 0; j < check2[mgid].length; j++){
						if (!inArray(check2[mgid][j], document.enabled_ids)){
							document.enabled_ids.push(check2[mgid][j]);
						}
					}
					for (var j = 0; j < check3[mgid].length; j++){
						if (!inArray(check3[mgid][j], document.enabled_ids)){
							document.enabled_ids.push(check3[mgid][j]);
						}
					}
				//}
			}

			//alert(document.enabled_ids);
			/*
			alert(document.enabled_ids);
			document.enabled_ids = removeIndex(5, document.enabled_ids);
			alert(document.enabled_ids);
			*/

			// gremo cez cel stolpec * in * in
			// enajblamo vse, ki so v enabled_ids, katero
			// filamo zgoraj...
			for (var i = 0; i < check4.length; i++){
				if (check4[i]) {
					// ce ni nobenga zbranga vse enablamo...
					if (!document.enabled_ids.length){
						$(check4Name + check4[i][0]).disabled = false;
						$('label_' + check4Name + check4[i][0]).style.color = '#000000';
					}else{
						if (!inArray(check4[i][0], document.enabled_ids)){
							if (check == false)	{ $(check4Name + check4[i][0]).disabled = !check; }
							else								{ $(check4Name + check4[i][0]).disabled = check;  }
								$('label_' + check4Name + check4[i][0]).style.color = '#989898';
						}else{
							if (check == false)	{ $(check4Name + check4[i][0]).disabled = check;  }
							else								{ $(check4Name + check4[i][0]).disabled = !check; }
								$('label_' + check4Name + check4[i][0]).style.color = '#000000';
						}
					}
				}
			}
		}


		if (terciaryName) {

		}



		lastArray = fillArrayChecked(eval(name),	name + '_');
		if (isLast && !lastArray.length) {
			checkedStates.pop();
		}

		return true;
	}

	var checkedSections	= new Array();
	var checkedBrands		= new Array();
	var checkedFamilies	= new Array();

	var checkedGroups		= new Array();

	function syncCheckboxes() {

		document.checkedArray = new Array();

		var check = false;

		if (this.checked == true){ check = true; }
		main(this.name, this.value, check);
		// prikazovanje rezultatov
		// cekiranje kateri checkboxi so obkljukani

		checkedSections	= fillArrayChecked(sections,	'sections_');
		checkedBrands	= fillArrayChecked(brands,		'brands_');
		checkedFamilies	= fillArrayChecked(families,	'families_');

		checkedGroups.length = 0;

		/**************************************************/
		var bSections = false;
		var bBrands = false;
		var bFamilies = false;
		var found = false;

		var code2run = '';

		/*Sestavljanje pogoja*/
		code2run += '(';
		for (var i = 0; i < checkedSections.length; i++) {
			bSections = true;
			ids = checkedSections[i];
			code2run += 'inArray(' + ids + ', pgroup[ii].section) || ';
		}
		code2run += (bSections) ? '0) && ' : '1) && ';

		code2run += '(';
		for (var i = 0; i < checkedBrands.length; i++) {
			bBrands = true;
			ids = checkedBrands[i];
			code2run += 'inArray(' + ids + ', pgroup[ii].brand) || ';
		}
		code2run += (bBrands) ? '0) && ' : '1) && ';

		code2run += '(';
		for (var i = 0; i < checkedFamilies.length; i++) {
			bFamilies = true;
			ids = checkedFamilies[i];
			code2run += 'inArray(' + ids + ', pgroup[ii].family) || ';
		}
		code2run += (bFamilies) ? '0)' : '1)';

		if (bSections || bFamilies || bBrands) {
			for (var ii in pgroup) {
					eval('found = ' + code2run + ';');
					if (found) {
						checkedGroups[ii] = pgroup[ii].title;
					}
			}
		}
		/*end Sestavljanje pogoja*/
		/****************************/
		//fillResults(checkedGroups, 1);//paging or down all results
		/***********OR***************/
		var count = 0;
		var textR = '';
		document.getElementById('rezultatiPonudbaUl').innerHTML = '<li>'+ search_results_txt +'</li>';
		for (i in checkedGroups) {
			if (typeof(checkedGroups[i]) == 'function') {
				continue;
			}

			textR += '<li><a href="' + i + '/product_details.html" class="pon_left"><img src="/Static/images/sulica.gif"></a> <a href="' + i + '/product_details.html" class="pon_right">' + checkedGroups[i] + ' </a></li>';
			++count;
		}
		if (count == 0) {
			document.getElementById('rezultatiPonudbaUl').innerHTML = '<li>'+ search_choose_txt +'</li>';
		} else {
			var zadetkov = '';
			switch(count){
				case 1	: zadetkov = '1 ' + (langId == 'hr' ? 'rezultat' : 'zadetek'); break;
				case 2	: zadetkov = '2 ' + (langId == 'hr' ? 'rezultata' : 'zadetka'); break;
				case 3	: zadetkov = '3 ' + (langId == 'hr' ? 'rezultata' : 'zadetki'); break;
				case 4	: zadetkov = '4 ' + (langId == 'hr' ? 'rezultata' : 'zadetki'); break;
				default	: zadetkov = count + ' ' + (langId == 'hr' ? 'rezultata' : 'zadetkov'); break;
			}
			//langId != 'sr' ? document.getElementById('rezultatiPonudbaUl').innerHTML = '<li><b>'+ zadetkov +'</b></li>' : null;
			//document.getElementById('rezultatiPonudbaUl').innerHTML += '<li>'+ search_results_txt +'</li><li>' + textR;
			document.getElementById('rezultatiPonudbaUl').innerHTML += textR;
		}
		/****************************/
	}

	function fillResults(checkedGroups, page) {
		//alert(checkedGroups);
		var count = 0;
		var elPerPage = 10;
		var textR = '';
		var numPages = 0;
		document.getElementById('rezultatiPonudbaUl').innerHTML = '<li>Zadetki so skupine izdelkov, ki ustrezajo preseku izbranih iskalnih parametrov.</li>';
		for (i in checkedGroups) {
			if (typeof(checkedGroups[i]) == 'function') {
				continue;
			}

			if (count >= ((page-1) * elPerPage) && count < (page * elPerPage) && checkedGroups[i] != '') {
				textR += '<li><a href="' + i + '/product_details.html" class="pon_left"><img src="/Static/images/sulica.gif"></a>&nbsp;<a href="' + i + '/product_details.html" class="pon_right">' + checkedGroups[i] + ' </a></li>';
			}
			++count;
		}
		if (count == 0) {
			document.getElementById('rezultatiPonudbaUl').innerHTML = '<li>Izberite področje uporabe, blagovno znamko in skupino izdelkov, na tem mestu pa se bo sproti osveževal seznam zadetkov.</li>';
		}
		else {
			var nextPage = '';
			var previousPage = '';
			numPages = Math.ceil(count/10);
			if (page < numPages) {
				nextPage = '<a href="#" onclick="fillResults(checkedGroups, ' + (page + 1) + '); return false;">Naslednja stran</a>';
			}
			else {
				nextPage = 'Naslednja stran';
			}
			if (page > 1) {
				previousPage = '<a href="#" onclick="fillResults(checkedGroups, ' + (page - 1) + '); return false;">Prejšnja stran</a>';
			}
			else {
				previousPage = 'Prejšnja stran';
			}

			//document.getElementById('rezultatiPonudbaUl').innerHTML += '<li><b>Rezultati: ' + count + '</b></li><li>' + previousPage + ' ' + page +'/' + numPages + ' ' + nextPage + '</li>' + textR;
			document.getElementById('rezultatiPonudbaUl').innerHTML += textR;
		}
		//alert(document.getElementById('rezultatiPonudbaUl').innerHTML);
	}

	function compare(array1, array2) {

		for (var i in array1) {
			if (!array2[i] || array1[i] != array2[i])  {
				return false;
			}
		}
		return true;
	}