/* 

	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 = "Поиск по сайту";	
	
	// 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 suggestionText = "Apollo Studios, Topdate, laubistudio, Джей Пегги Красный Октябрь, NOTION, DEJAVU STUDIO, ДОЖДЬ фотостудия, Drugoj Rakurs / Другой Ракурс, Фотостудия De Lumiere, frutta, PRIDE photo, PHOTOPLAY Китай-город, FotografPro, OM Production, Фотостудия FOTUM, Indigo, MISSS, Hey|to, Art-сlub PEOPLE, Lufoto, Мини-студия Фотобук, FOTO-TOWER, Breeze, Printa, BACKSTAGE, Мой Фотограф, ФОТОШТАБ, PTstudio, Фотофот, Global, 42, Digital Cinema Rent, ФотоФормат, aaaa, The Dream, 16-й этаж, moonparkstudio, Insightphoto, Planet 108, Фотостудия №55, ДОМ, TRENDTIMES, на пролетарке, ZEBRA STUDIO, Визуальная Эстетика, Photoroom, Royalflash, PODIUM, Aвтозавод. Студия МотоАрт на старом МЗМА, Фотостудия Медиамастер, DarFoto.Ru, FotoHut / ФотоХижина, Игра Образов, PRIMEFOTO, Art-studio FOTO-LIGHT, Image Club, NAM4You на Киевской, Фотогенез, HD STUDIO, Студия Ксении Пятницкой, Фотоклуб37, Студия 23, STUDIY SB, LimeRoom, Art-Set, Photo-Styles, ANAGRAM STUDIOS, Air-Room (Естественный свет), slomotion, 2.8 Macro, Бульвар - фотостудия на Цветном, Студия PSQUARED, Photo focus, MajeStick Pole Dance Studio, ФотоФрукт, Lita Studio, Pixel, Фотостудия FG404, Photoparadise-октябрь, Karlita Studio, Данаида, Dr.photor, Фотостудия Юшкова, Фотосоль СМ МАИ, Floor-studio, Factory Momenti (Фабрика мгновений), FotoHaus, BURO FOTONI, Фотостудия Творческая студия SG г.Королёв, fotolik-студия, Lightbox v2.0, Студия на Покровке, ФОТОРСТУДИЯ МИОЗИ, Белый Свет, 7style, PROfoto studio, Martinstudio, Studio Quattro, Аква студио, Фото-Дар, Sunlightstudio, FOTOESTET, Белый Кролик, АртКомбинат, blissstudio.ru, SETUN\', Legenda, SBF Studio, StudioRentals, Photomuse, Ray Studio, Дюффон, Ромашка фото , MIMM Photo Studio, STUDIO12D, фотостудии на артзаводе, Фотостудия MELZ, Photorium, Олимп, Coma studio, галереяWHITE, FOTO-SHARM, Name Studio, PHOTO BOUTIQUE, LUME studio, Cross-Studio, NOON studio, Photocity, AnylinStudio, Pravda studio, Angels Place, Академия Классической Фотографии, Pi-Studio, м. Алексеевская, Студия Рекламной Фотографии , Light Photo Studio, BIG FISH, ZoomRoom, Вираж, 3Grafika, MagicDesignLab, Photo Sweet, studio609.ru, RINAM, Ваниль и Шоколад Studio, ФотоПять, Black and White Studio, Студия Полтинник, Quattro Fashion, Sharm, Studio Fashion Photo, Творческий Центр Теплый, ALEXIS-STUDIO, портретная фотостудия F177.ru, Студия на Китай-городе, ZoOmLab, Интерьерная МОЯ СТУДИЯ фотостудия, ART-Studio FOTOmotion [MAXSAFONOV.com], ГЛЯНЕЦ, GOA Studio, Фотостудия на Чистых прудах, Русская школа фотографии, Photo-portal studio, Центр Компактных Фотостудий на Сретенке (временно не сдается), ФОТОФАБРИКА Красный Октябрь, ЧБ фото, Фотостудия, Школа-студия фотографии MetsPhoto, Photo-FM, StarFrame, LOFT, ART-Studio Лемур, Fotolike, Фотостудия 75, Luna-Studio, LibertyPhoto, iso | drive and space, Арт-Фотостудия Ярослава Чурилова, иZOOMруд, Edinorog Production, Фотостудия ПЕРЕЦ, Фотостудия Ольги Ветровой, Атлантис Арт-Студио, Фотостудия фотобанка Лори, фотостудия Julia, Foto-rent. Фотостудия на Третьяковской, White Studios, фотостудия Кати Фукс, 5D Studio, Фотостудия Макс, MetsPhoto, Творческая мастерская StudioUP, Ok-studio, ArtIllusion, Фотостудия  ВИРАЖ, Dead Chicken, Квадрат, VirageFoto, ФотоДизайнСтудия Александра Шабельникова, фотостудия на Шереметьевской, LoART, Студия 27, PHOTOPARADISE, playmai, FOTOKITAI, Индести, фотостудия АНДИ, Shotgunstudio, Advert Photo, fotostudio - ROM, ALANSYDD STUDIO, Reanemia, ФОКУСАРТ, Maстер ПЭЛ, студия РАДУГА, AF-Studio, Фотостудия МХР, Extravaganzastudio, Мастерская Олега Тенина, ФОТОВСЕМ, Фотостудия на Соколе, ФОТОФАБРИКА, Creativestudio, MotoArt Студия, Фотостудия Андрея Сергеева, FOTOhall, PHOTOPLAY Красные ворота, Footoorooms- фотостудия в аренду в Санкт-Петербурге круглосуточно!, CKstudio, VEGAS, Photo-Art Studio GRADIENT, Аванс, WhiteArtStudio, Diamond Photo Studio, Photosession, Full Frame, Квартира, Без Рамок, МАНСАРДА, VISIO, Студия FotoPorter, Детская и семейная ФОТОСТУДИЯ, No Comments, Классика, ПОЗИТИВ, Пространство Звёздочка, Яркий Мир, Фотостудия Пять звезд, LJ SHOTS Studio, ART FORM, ПапараЦЦи, ae-studio, Light Room, Green Apple, Fotozx, Berdanka, Фотостудия DL, PhotoStyle Studio, ФотоСтанция, Fabrique, ФотоСтудия Ле-Дантю, НИКА, Мохито!, Grand Image, Аквафотостудия ГЕКАТА, Сахар, ДнК - Дизайн&Креатив, Фотостудия на Большом, Kangaroo, S-photo, Богарт, More Studio, DL-studio, ФотоЦех, 5 Этаж, FishFoto, Пятница, Fotokub, AquaPhotoStudio, 13 линия, Фотостудия Phazan, MiKs Art-photo studio, Monochrome Loft, Lime, БЕГЕМОТ, Фотостудия PhotographStudio, POPCORN, АСВ студия, Pirat-Studio, Studiorent, Крокус-7, PerfectPhoto.ru, Dada studio, Фотостудия, Yellow studio, PhotomastersSPB, Арванд-Фото, BLOOM, Brouk, STUDIO-7, Cezario, студия СВ, Fame Studio, art!обстрел, ОКНО, НЕБО, Light-Cube, Studio life photography, Kashin Studio, Slidestudio, FotoZvuk, Image4you, Фотонота, Прованс, Wonderland, photoinstudio, ICONE, Mohito, Vostok - Foto, Фотостудия Lenta, Carpe diem Лови момент, Foto Бункер, Black and White by Natali Boldireva, творческая фотостудия \"Крокус\", foto-vision, Ля Стиль, Studio-Iv, Foto-Sintez, MOTION DIGITAL STUDIOS, FotoMouse, Rec-time, Десятник, masha, Am-studio, Time, FORMA Photo Place, ФотоЗал, Фотостудия ZoomRoom, фотостудия \"Фотопроект\", М-студио, Cifrografia, Карамель, Art-city, Dom на Преображенке, Мастерская фотографии Алексея Попова, Студия Фото-сон, Фотостудия RazoomOff, i love studio, Фотовердинер, Studio-M, ARD-Foto, "; 
	
	// 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(){
			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 = field.offsetWidth + "px";
			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 src = suggestionText;
				var src = src.replace(/, /g, ",");
				var arrSrc = src.split(",");
				for(i=0;i<arrSrc.length;i++){
					if(arrSrc[i].substring(0,value.length).toLowerCase() == value.toLowerCase()){
						arr.push(arrSrc[i]);
					};
				};				
				return arr;
			};
			
			this.createList = function(arr){				
				resetList();			
				if(arr.length > 0) {
					for(i=0;i<arr.length;i++){				
						li = document.createElement("li");
						a = document.createElement("a");
						a.href = "javascript:void(0);";
						a.i = i+1;
						a.innerHTML = arr[i];
						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;
				clearList();
			};			
			
		};
	};
	
	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);


