var MSIE6 = (navigator.appVersion.search("MSIE 6.0"));

//Recherche incrémentale

var search = new function()
{
	//--- PROPERTY
	var hide = true;
	var support = document.createElement("div");
		support.className = "option_saisie";
	var selected_option = -1;
	//--- 
	this.init = function(){
		document.body.appendChild(support);
	}
				
	this.attach = function(textBox,Url){
		textBox.onkeyup = function(e){
			e = (e)?e:window.event;
			if((e.keyCode == 40 || e.keyCode == 38) && hide == false){						
				var ln = support.getElementsByTagName("a").length;
							
				try{
					support.getElementsByTagName("a")[selected_option].className = "";
				}
				catch(e){}
						
				if(e.keyCode == 40){
					selected_option++;
				}
				else{
					selected_option--;
				}
							
				if(selected_option >= ln){selected_option = 0;}
				else if(selected_option <0){selected_option = ln-1;}
							
				try{
					support.getElementsByTagName("a")[selected_option].className = "option_focused";
					textBox.value = support.getElementsByTagName("a")[selected_option].innerHTML;
				}
				catch(e){}
			}
			else if(textBox.value.length > 0){
				show(textBox,Url);
			}
			else{
				hideIt();
			}
		}
		
		textBox.onfocus = function(){
			this.value="";
		}
	}
								
	function show(textBox,Url)
	{
		hide = false;
		
		//var pos = getRealPosition(textBox);
		var pos = getRealPosition(textBox);
		//var cl = (MSIE6 == -1)?textBox.clientLeft:0;
		
		support.style.top = pos.Y+textBox.offsetHeight+"px";
		support.style.left = pos.X+"px";
		support.style.width = textBox.clientWidth+"px";
		support.style.display = "block";
		support.innerHTML = "<div class='loader'></div>";
		
		var param = {"reg":textBox.value};
		
		REQ["search"].url = new Dsl(Url,param);
		REQ["search"].loaded = function(list){
			REQ["search"].url.clear();
			support.innerHTML = "";
			
			var ln = list.length;
			var link;
			
			for(var i=0; i<ln; i++)
			{
				link = document.createElement("a");
				link.href = list[i].url;
				link.selected = i;
				link.innerHTML = list[i].title;
				setLinkEvent(link);
				support.appendChild(link);
			}
			
			function setLinkEvent(Obj)
			{
				Obj.onmouseover = function(){
					try{
						support.getElementsByTagName("a")[selected_option].className = "";
					}
					catch(e){}
					selected_option = Obj.selected;
					Obj.className = "option_focused";
				}
			}
		}
	}
				
	function hideIt()
	{
		hide = true;
		support.style.display = "none";
	}
}

//=== Fonction permettant de donner la position d'un élément HTML dans une page web
			
function getRealPosition(objHtml)
{	
	var current = objHtml;
	var Top = 0;
	var Left = 0;
			
	while(current != null)
	{
		Top += current.offsetTop;
		Left +=	current.offsetLeft;
		current = current.offsetParent;
	}
					
	return {'X':Left,'Y':Top};
}

//=== Redimensionnement des ombres pour IE 6

//AJAX - Dsl

//=== Model Mvc des requêtes Dsl

function ReqModel()
{
	this.url = null;
	this.loaded = function(){}
}

function Dsl(Url,Objet_param)
{
	var script_dsl;
		
	if(Objet_param != null){
		for(var i in Objet_param)
		{
			if(Url.lastIndexOf("?") != -1){
				Url+="&"
			}else{
				Url+="?"
			}
			Url+= i+"="+Objet_param[i];
		}
	}
			
	script_dsl		= document.createElement("script");
	script_dsl.type	= "text/javascript";
	script_dsl.src	= Url;
	document.body.appendChild(script_dsl);
	this.clear = function()
	{
		try{
			document.body.removeChild(script_dsl);
		}catch(err){
		}
	}
}

//=== Trim pour formulaire

String.prototype.trim = function()
{
	return this.replace(/(?:^\s+|\s+$)/g, "");
}
