/* 

	SearchField 
	written by Alen Grakalic, provided by Css Globe (cssglobe.com)
	please visit http://cssglobe.com/post/1202/style-your-websites-search-field-with-jscss/ for more info
	
*/

this.searchfield = function(){
	
	// CONFIG 
	
	// this is id of the search field you want to add this script to. 
	// You can use your own id just make sure that it matches the search field in your html file.
	var id = "searchfield";
	
	// Text you want to set as a default value of your search field.
	var defaultText = "Unesite pojam za potragu...";	
	
	// set to either true or false
	// when set to true it will generate search suggestions list for search field based on content of variable below
	var suggestion = true;
	
	// static list of suggestion options, separated by comma
	// replace with your own
        var counter=0;
	var suggestionText;// = "advokati i pravne usluge, agencije za nekretnine, akumulatori i motorna ulja, alkoholna pica, alternativna medicina, ambalaza, aparati za samoposluzivanje, apoteke i veledrogerije, arhitektura i projektovanje, audio/video/TV, auspuh servisi, auto alarmi i sigurnost vozila, auto delovi, auto elektricari, auto elektronika i dijagnostika, auto gas, auto klime, auto perionice, auto servisi i mehanicari, auto servisi i mehanicari (beograd), auto skole, autobusi i oprema, autobuski prevoz, banje i banjski turizam, banke, bela tehnika, bezalkoholna pica, biciklizam oprema i servisi, boje lakovi lepkovi, bolnice i klinike, brokerske usluge, cafe i barovi, casopisi, camci i oprema, ciscenje i higijena, crna metalurgija i aluminijum, decji namestaj, decja oprema, dermatologija, dijagnostika, dizajn i stampanje, donji ves i carape, dostava hrane na kucnu adresu, drvna industrija, ekstremni sportovi, elektromaterijal, elektrika, elektronika, energetika, enterijer, estetska (plasticna) hirurgija, farmacija, fiskalne kase, fotografija, fotografi i fotografske radnje, fotoaparati i kamere, frizerski saloni, ginekologija, gradjevinarstvo, gradjevinski materijal, gradjevinske masine i oprema, gradjevinske kompanije, grejanje, hidraulika i guma, hoteli, hosteli, graficki materijal, hemijska industrija i hemija, igracke, informacioni sistemi, industrija tekstila, industrija-razno, instalacioni radovi, izolacija, kafa i caj, kamenorezacki radovi, kamini, kamionski transport, kancelarijski namestaj, kardiologija, keramika i keramicki proizvodi, ketering, klima i rashladni uredjaji, klima i rashladni uredjaji-servisi, klubovi, knjizevnost i izdavacke kuce, knjizare, knjigovodstvo, kompjuteri i kompjuterska oprema, kombi transport, konditorski proizvodi, konsalting i menadzment, kovano gvozdje i okovi za stolariju, kozmeticki saloni, kozmetika i dekoracija vozila, kozmetika i kozmeticki proizvodi, krovni pokrivaci, kupatila, kucni aparati, kucna hemija, kuhinje i kuhinjski elementi, kupatila i bazeni, laser centri, lekovito bilje, lizing (leasing), lov i ribolov, liftovi, limari, lakireri, marketing agencije, masaza, masine u prehrambenoj industriji, masine i alati, masinska industrija, medicinska i stomatoloska oprema, meso, mesne preradjevine, med, metalopreradjivacka industrija, mlecni proizvodi, mobilni i fiksni telefoni, modne kuce i agencije, montazne kuce, motocikli i skuteri, muzicke kuce, muzicka oprema i ozvucenje, namestaj i komponente, namestaj od metala, namestaj po meri, namestaj za ugostitelje, nekretnine, ocne kuce, obuca, odeca, odeca i obuca za decu, oprema za kozmeticke i frizerske salone, osiguranje, pcelarstvo, penzioni i investicioni fondovi, picerije i brza hrana, planinski turizam, plastika, plesne skole i klubovi, podne obloge, pogrebne usluge, polovna vozila, poliklinike, poljoprivreda i stocarstvo, poljoprivredna i stocarska oprema, poljoprivredne masine, poljoprivredne apoteke, poslasticarnice i palacinkarnice, prevodjenje, prevodioci, prevodilacke agencije, privatni vrtici, privatni fakulteti, privatne osnovne i srednje skole, privatni smestaj, prodaja avio karata, prodaja konfiguracija i komponenti, provajderi, hosting, internet, produkcija i film, programiranje i prodaja softvera, racunarska oprema, racunarske mreze i oprema, rasveta, rasadnici i hortikultura, ratarstvo i povrtarstvo, reciklaza tonera i kertridza, reciklaza, reklamni materijal, rent a car, repromaterijal, restorani, restorani evropske kuhinje, restorani orijentalne i latino americke kuhinje, restoranski prostori za proslave, restorani sa konacistem i moteli, riblji restorani, riba i proizvodi od ribe, salasi i etno turizam, saloni namestaja, sanitarije, satelitska oprema, kablovska TV, antene, selidbe, servisi racunara i opreme, sigurnosna tehnicka oprema, skole racunara, skolski pribor i oprema, skole racunara, skole plesa, skole stranih jezika, skole i kursevi za negu lepote, skole borilackih vestina, skole tenisa, skole fudbala, skole kosarke i kampovi, skole sporta, solarijumi, SPA i wellness, specijalizovani servisi i distributeri, spedicija, splavovi, sportski centri, hale i baloni, sportska i fitness oprema, sportski preparati, stakla i tapaciring, staklo, stamparije, stampaci, skeneri, fotokopir masine, staracki domovi i nega starih, stomatoloske ordinacije, stocarstvo i stocna hrana, stolarija, stolice i stolovi, stilski namestaj, stolarija, sudski tumaci, tehnicka zastita, tepisi, teretane i fitness centri, tehnicki pregled i registracija vozila, telekomunikacije i mreze, toneri i kertridzi, torte i kolaci, turisticke agencije, ugostiteljska oprema, umetnicke galerije i ateljei, urologija, veleprodaja hrane i pica, veterina, Vestacka djubriva i pesticidi, vina i vinarije, voda i mineralna voda, vodovodni materijal, voce i povrce, Vocarstvo i vinogradarstvo, vrata i prozori, vulkanizeri i pneumatici, udruzenja i komore, web dizajn, zacini i supe, zaposljavanje i zadruge, zastupnistva stranih firmi, zastita i sigurnost, zastita na radu, zastita-fizicko obezbedjenje, zastita od pozara, zavrsni gradjevinski radovi, zavese i venecijaneri, zdrava hrana, zivinarstvo";
	var suggestionId;
        var src2;

	// END CONFIG (do not edit below this line, well unless you really, really want to change something :) )
	
	// Peace, 
	// Alen

	var field = document.getElementById(id);	
	var classInactive = "sf_inactive";
	var classActive = "sf_active";
	var classText = "sf_text";
	var classSuggestion = "sf_suggestion";
	this.safari = ((parseInt(navigator.productSub)>=20020000)&&(navigator.vendor.indexOf("Apple Computer")!=-1));
	if(field && !safari){
		field.value = defaultText;
		field.c = field.className;		
		field.className = field.c + " " + classInactive;
		field.onfocus = function(){
                        if(counter==0)
                        {
                          $.get("/get_f.php?q=sve",function(data){
                            var res=eval('('+data+')');
                            suggestionText=res.name;
                            suggestionId=res.id;
                            src2 = suggestionText.replace(/\u0160/g, "S");
                            src2 = src2.replace(/\u0161/g, "s");
                            src2 = src2.replace(/\u017d/g, "Z");
                            src2 = src2.replace(/\u017e/g, "z");
                            src2 = src2.replace(/\u0106/g, "C");
                            src2 = src2.replace(/\u0107/g, "c");
                            src2 = src2.replace(/\u010c/g, "C");
                            src2 = src2.replace(/\u010d/g, "c");
                          });
                          counter=1;
                        }
			this.className = this.c + " "  + classActive;
			this.value = (this.value == "" || this.value == defaultText) ?  "" : this.value;
		};
		field.onblur = function(){
			this.className = (this.value != "" && this.value != defaultText) ? this.c + " " +  classText : this.c + " " +  classInactive;
			this.value = (this.value != "" && this.value != defaultText) ?  this.value : defaultText;
			clearList();
		};
		if (suggestion){
			
			var selectedIndex = 0;
						
			field.setAttribute("autocomplete", "off");
			var div = document.createElement("div");
			var list = document.createElement("ul");
			list.style.display = "none";
			div.className = classSuggestion;
			list.style.width = "765px";
			div.appendChild(list);
			field.parentNode.appendChild(div);	

			field.onkeypress = function(e){
				
				var key = getKeyCode(e);
		
				if(key == 13){ // enter
					selectList();
					selectedIndex = 0;
					return false;
				};	
			};
				
			field.onkeyup = function(e){
			
				var key = getKeyCode(e);
		
				switch(key){
				case 13:
					return false;
					break;			
				case 27:  // esc
					field.value = "";
					selectedIndex = 0;
					clearList();
					break;				
				case 38: // up
					navList("up");
					break;
				case 40: // down
					navList("down");		
					break;
				default:
					startList();			
					break;
				};
			};
			
			this.startList = function(){
				var arr = getListItems(field.value);
				if(field.value.length > 0){
					createList(arr);
				} else {
					clearList();
				};	
			};
			
			this.getListItems = function(value){
				var arr = new Array();
                                var str1; var str2;
				var src = suggestionText;
                                var sid = suggestionId;
				//src = src.replace(/, /g, ",");
                                //sid = sid.replace(/, /g, ",");
				var arrSrc = src.split("//");
                                var arrSid = sid.split("//");
                                var arrSrc2 = src2.split("//");
				for(i=0;i<arrSrc.length;i++){
					str1=arrSrc2[i].toLowerCase();
                                        str2=value.toLowerCase();
                                        //if(arrSrc2[i].substring(0,value.length).toLowerCase() == value.toLowerCase())
					if(str1.search(str2)!=-1){
                                                arr.push(arrSrc[i]+"="+arrSid[i]);
					};
				};				
				return arr;
			};
			
			this.createList = function(arr){				
				resetList();
				if(arr.length > 0) {
					for(i=0;i<arr.length;i++){
						var atr = arr[i].split("=");
                                                li = document.createElement("li");
						a = document.createElement("a");
						a.href = "javascript:void(0);";
						a.i = i+1;
                                                //if(i==1) alert(arr[i][1]);
                                                a.setAttribute('id',atr[1]);
						a.innerHTML = atr[0];
						li.i = i+1;
						li.onmouseover = function(){
							navListItem(this.i);
						};
						a.onmousedown = function(){
							selectedIndex = this.i;
							selectList(this.i);		
							return false;
						};					
						li.appendChild(a);
						list.setAttribute("tabindex", "-1");
						list.appendChild(li);	
					};	
					list.style.display = "block";				
				} else {
					clearList();
				};
			};	
			
			this.resetList = function(){
				var li = list.getElementsByTagName("li");
				var len = li.length;
				for(var i=0;i<len;i++){
					list.removeChild(li[0]);
				};
			};
			
			this.navList = function(dir){			
				selectedIndex += (dir == "down") ? 1 : -1;
				li = list.getElementsByTagName("li");
				if (selectedIndex < 1) selectedIndex =  li.length;
				if (selectedIndex > li.length) selectedIndex =  1;
				navListItem(selectedIndex);
			};
			
			this.navListItem = function(index){	
				selectedIndex = index;
				li = list.getElementsByTagName("li");
				for(var i=0;i<li.length;i++){
					li[i].className = (i==(selectedIndex-1)) ? "selected" : "";
				};
			};
			
			this.selectList = function(){
				li = list.getElementsByTagName("li");	
				a = li[selectedIndex-1].getElementsByTagName("a")[0];
				field.value = a.innerHTML;
                                var sel = a.getAttribute("id");
				clearList();
                                $.get("/get_f.php?subcat_id="+sel,function(data){window.location="http://www.infopult.net"+data;});
				//$('#button-search').click();
			};			
			
		};
	};
	
	this.clearList = function(){
		if(list){
			list.style.display = "none";
			selectedIndex = 0;
		};
	};		
	this.getKeyCode = function(e){
		var code;
		if (!e) var e = window.event;
		if (e.keyCode) code = e.keyCode;
		return code;
	};
	
};

// script initiates on page load. 

this.addEvent = function(obj,type,fn){
	if(obj.attachEvent){
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	} else {
		obj.addEventListener(type,fn,false);
	};
};
addEvent(window,"load",searchfield);


