/* 

	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 = "search-form-field";
	
	// Text you want to set as a default value of your search field.
	var defaultText = "Chercher un article...";	
	
	// 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 = "1&egrave;re ligue, 2&egrave;me ligue, 20 sur 20, Aarau, Actualit&eacute;, Adrian Wichser, Ajoie, Albanie, Alexander Frei, Allemagne, Ambri-Piotta, Andres Amb&uuml;hl, Angleterre, Argentine, Arjen Robben, Arsenal, Ashley Cole, Aston Villa, Athl&eacute;tisme, Atletico Madrid, Autriche, B&acirc;le, Barcelone, Basketball, Bayern Munich, Beat Foster, Beat Gerber, Belgique, Bellinzone, Benjamin Huggel, Berne, Bi&eacute;lorussie, Bienne, Billet d&acute;humeur, Blaise Nkufo, Bordeaux, Borussia Dortmund, Bosnie-Herz&eacute;govine, Br&eacute;sil, Bruno Aegerter, Blog, Bulgarie, Bundesliga, Canada, Carles Puyol, Carlos Tevez, Challenge League, Chelsea, Chine, Chris McSorley, Christoph Spycher, Croatie, Commentaire, Cory Pecker, Coupe de Suisse, Coupe du monde, Coupe UEFA, Cristiano Ronaldo, Cyclisme, Daniel Gygax, Daniel Manzato, Dany G&eacute;linas, David Aebicher, David Beckham, David Degen, David Trezeguet, David Villa, Davos, Deco, Del&eacute;mont, Didier Drogba, Diego Benaglio, Dominique Forget, Ecosse, Echallens, Eldin Jakupovic, Equipes nationales, Eren Derdyiok, Eric Abidal, Eric Himelfarb, Espagne, ES Malley, Estonie, Etats-Unis, Euro, Everton, Fabio Cannavaro, Fernando Torres, Finlande, Football, Football r&eacute;gional, France, Franck Rib&eacute;ry, Frank Lampard, Fribourg-Gott&eacute;ron, Fribourg Olympic, Formule 1, Gael Clichy, Gago, Gary Sheehan, Gelson Fernandes, Gen&egrave;ve-Servette, G&eacute;orgie, Gianluca Mona, Gianluigi Buffon, Giro, Glasgow, Gokhan Inler, Goran Benzina, Grande-Bretagne, Grasshopper, Gr&egrave;ce, Gr&eacute;gory Mathey, Guti, Gymnastique, Hambourg, Handball, Hatem Ben Arfa, Heinz Ehlers, Hertha Berlin, Herv&eacute; Rickli, Hockey sur glace, Hongrie, Iker Casillas, Iles F&eacute;ro&eacute;, Inter Milan, Irlande, Islande, Italie, James Desmarais, Japon, Jean-Pierre Vigier, J&eacute;r&eacute;my Toulalan, Jeux Olympiques, Joe Cole, Johan Djourou, John Gobbi, John Terry, Jonas Hiller, Jonathan Roy, Julien Sprunger, Julien Vauclair, Juninho, Juventus, Kaka, Karim Benzema, Kosovo, La Chaux-de-Fonds, Lance Armstrong, Langenthal, Lausanne HC, Lausanne-Sport, Lazio, Lettonie, LHC, Liga, Ligue 1, Ligue des Champions, LNA, LNB, Lisbonne, Liverpool, Lituanie, Luca Sbisa, Luca Toni, Lucerne, Ludovic Magnin, Lugano, Luxembourg, Lyon, Mac&eacute;doine, Manchester United, Manchester City, Marc Chouinard, Marco Truttman, Marco W&ouml;lfli, Mario Eggiman, Mark Streit, Martigny, Martin Gerber, Martin H&ouml;hener, Martin Steinegger, Mathieu Tschantr&eacute;, Messi, Michael Owen, Michael Ballack, Michael Ngoy, Michael Phelps, Milan AC, Moldavie, Monaco, Montenegro, Moscou, Motocyclisme, MotoGP, Naples, Nantes, NBA, Neuch&acirc;tel Xamax, NHL, Nicolas Anelka, Niko Mikkola, Norv&egrave;ge, Olten, Olympique de Marseille, Paris Saint-Germain, Pascal Zuberb&uuml;hler, Patrice Evra, Patrick M&uuml;ller, Patrick Vieira, Pays-Bas, Philippe Senderos, Philipp Degen, Pigeon d&acute;Or, Place des Grands Hommes, Pologne, Porto, Portugal, Premier League, Rafael Van der Vaart, Rapperwill, Raul, Real Madrid, R&eacute;al Paiement, R&eacute;publique tch&egrave;que, Reto Ziegler, Ricco Fata, Robinho, Ronaldinho, Ronaldo, Ronnie R&uuml;eger, Roumanie, Rugby, Russie, Ruud Van Nistelrooy, Ryan Gardner, Saint-Etienne, Saint-Gall, Samuel Eto&acute;o, Sandy Jeannin, Schalke 04, Ski alpin, Serbie, Serge Pelletier, Sergio Ramos, Serie A, Servette FC, Severin Blindenbacher, Shawn Heins, Sierre, Sion, Slovaquie, Slov&eacute;nie, Sochi, Stade nyonnais, Stephan Lichsteiner, St&eacute;phane Grichting, St&eacute;phane Roy, Steve Mandanda, Steven Gerrard, Stuttgart, Su&egrave;de, Suisse, Super League, Tennis, Terry Yake, Thierry Henry, Thomas D&eacute;runs, Thoune, Tobias Stephan, Toulouse, Tour de France, Tranquillo Barnetta, Turin, Turquie, Udinese, Ukraine, Usain Bolt, Valence, Valentin Wirz, Valeri Chirjaev, Valon Behrami, Vancouver, Vid&eacute;o, Vi&egrave;ge, Villareal, Voile, Vuelta, Wayne Rooney, Werder Br&ecirc;me, Wesley Sneijder, West Ham, William Gallas, Xavi, Xabi Alonso, Yoann Gourcuff, Young Sprinters, Young Boys, Yverdon, Zlatan Ibrahimovic, Zoug, ZSC Lions, Zurich"; 
	
	// 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);

