(function(){
	
	// Init nav hover effect
	function initNav(){
		var tabs = document.getElementById('menu').getElementsByTagName('li');
		var tabsLength = tabs.length;
		
		for(var i=0; i < tabsLength; i++) {
			
			var	tabNav = tabs[i].getElementsByTagName('ul');
			
			if (tabNav.length > 0) {
				tabs[i].tabNav = tabNav[0];
				tabNav[0].style.display = "none";
				
				tabs[i].onmouseover = function(){
					this.tabNav.style.display = "block";
				};
				
				tabs[i].onmouseout = function(){
					this.tabNav.style.display = "none";
				};
			}
		}
	};
	
	// Search
	function initSearch(){
		var searchField = document.getElementById("motcle");
		
		if (!!searchField){
			
			// Clear field
			searchField.onfocus = function(){
				if (!this.init){
					this.value = "";
					this.init = true;
				}
			};
			
			// Search
			var deptsNav = document.getElementById("liste-departements").getElementsByTagName("li");
			var deptsNavLength = deptsNav.length;
			var details = document.getElementById("coordonnees");
			var depts = details.getElementsByTagName("div");
			var deptsLength = depts.length;
			
			for (var k=0; k < deptsNavLength; k++){
				var deptElt = document.getElementById( deptsNav[k].getElementsByTagName("a")[0].href.match(/#(.+)/)[1]);
				
				if (!!deptElt) {
					deptElt.listElt = deptsNav[k];
				}
			}
			
			// On key up event
			searchField.onkeyup = function(){
				
				// Regex
				var re = new RegExp(">([^<]*)?("+ this.value +")([^>]*)?<","im");
				
				// Each dept...
				for (var i=0; i < deptsLength; i++){
					
					// If not found, hide all dept and nav entry
					if(!(re.test(depts[i].innerHTML))) {
						depts[i].style.display = "none";
						depts[i], depts[i].listElt.style.display = "none";
					}
					
					// Else, show dept and nav entry...
					else {
						depts[i].style.display = "block";
						depts[i], depts[i].listElt.style.display = "block";
						
						// Search title and addresses
						var deptTitle = depts[i].getElementsByTagName("h3")[0];
						var addresses = depts[i].getElementsByTagName("p");
						var addressesLength = addresses.length;
						
						// If found in title, show each address
						if(re.test('>'+ deptTitle.innerHTML +'<')) {
							for (var j=0; j < addressesLength-1; j++){
								addresses[j].style.display = "block";
							}
						}
						
						// If not found in title, search in each address ("addressesLength-1" because of "return to top" link)
						else {
							for (var j=0; j < addressesLength-1; j++){
								
								// If search not found in addresse, hide it
								if(!(re.test('>'+ addresses[j].innerHTML +'<'))) {
									addresses[j].style.display = "none";
								}
								
								// If found, show it
								else {
									addresses[j].style.display = "block";
								}
							}
						}
					}
				}
				
			};
			
		}
	};
	
	// On window load event
	window.onload = function(){
		initNav();
		initSearch();
	};
})();