// AJAX management
function getXhrObject()
{
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
	{
		xhr = new XMLHttpRequest();
	}
	else
	{
		if(window.ActiveXObject) // Internet Explorer 
		{
			try
			{
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e)
			{ 	
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		else // XMLHttpRequest non support� par le navigateur
		{
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
			xhr = false; 
		} 
	}
	return xhr;
}

// create request and send form
function send_form(url, button)
{	
	var where = ""; 
	var what = document.forms["main"].elements["what"].value;
	if($jquery_1_5_2('.as-values').attr('value').replace(/,/g,"") != "")
	{
		where = url_key_global;
	}
	
	if((where == "") || (where != "" && where.length > 2))
	{
		if (document.forms["filters"]){
			var form_price = document.forms["filters"].elements["price"].value;
			var form_year = document.forms["filters"].elements["year"].value;
			var form_mileage = document.forms["filters"].elements["mileage"].value;
			var form_doors = document.forms["filters"].elements["doors"].value;
			
			var price_min = form_price.substring(0, form_price.indexOf(";"));
			var price_max = form_price.substring(form_price.indexOf(";") + 1);
			var year_min = form_year.substring(0, form_year.indexOf(";"));
			var year_max = form_year.substring(form_year.indexOf(";") + 1);
			var fuel = document.forms["filters"].elements["fuel"].value;
			var categorie = document.forms["filters"].elements["categorie"].value;
			var transmission = document.forms["filters"].elements["transmission"].value;
			var mileage_min = form_mileage.substring(0, form_mileage.indexOf(";"));
			var mileage_max = form_mileage.substring(form_mileage.indexOf(";") + 1);
			var doors_min = form_doors.substring(0, form_doors.indexOf(";"));
			var doors_max = form_doors.substring(form_doors.indexOf(";") + 1);
			if (document.forms["tri_form"]){
				var tri = document.forms["tri_form"].elements["tri"].value;
			} else {
				var tri = 0;
			}
		}
		
		var xhr = getXhrObject();

		xhr.onreadystatechange = function()
		{
			if(xhr.readyState == 4 && xhr.status == 200)
			{
				window.location.href = xhr.responseText;
			}
		}
		
		xhr.open("POST", url+"ajax/ajax_url.php",true);

		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");

		if (document.forms["filters"]){
			xhr.send("&what=" + what + "&where=" + where + "&button=" + button + "&price_min=" + price_min + "&price_max=" + price_max + "&year_min=" + year_min + "&year_max=" + year_max + "&fuel=" + fuel + "&categorie=" + categorie + "&transmission=" + transmission + "&mileage_min=" + mileage_min + "&mileage_max=" + mileage_max + "&doors_min=" + doors_min + "&doors_max=" + doors_max + "&tri=" + tri);
		}
		else
		{
			xhr.send("&what=" + what + "&where=" + where + "&button=" + button);
		}
	}
}

// Get position X
function positionX (obj)
{
	var x = 0;

	do
	{
		x += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	while (obj);
	return x;
}

// Get position Y
function positionY (obj)
{
	var y = 0;
	do
	{
		y += obj.offsetTop;
		obj = obj.offsetParent;
	}
	while (obj);
	return y;
}

// Submit formulaire
function form_validation(event, url, mouse)
{
	if(event.keyCode == 13 || mouse == 1)
	{
		send_form(url, 1);
	}
}

// Load location
function get_location(event, url, location)
{
	if((event.keyCode == 38) || (event.keyCode == 40))
	{
		item_selected = -1;
		for(i = 0; i<document.getElementById("suggestions-list").getElementsByTagName("li").length; i++)
		{
			if(document.getElementById("suggestions-list").getElementsByTagName("li")[i].className == "suggest-over")
			{
				item_selected = i;
			}
		}
		if(item_selected != -1)
		{
			if(event.keyCode == 38 && (item_selected - 1) >= 0)
			{
				document.getElementById("suggestions-list").getElementsByTagName("li")[item_selected].className = "suggest-out";
				document.getElementById("suggestions-list").getElementsByTagName("li")[(item_selected - 1)].className = "suggest-over";
				item_selected = item_selected - 1;
			}
			if(event.keyCode == 40 && (item_selected + 1) < document.getElementById("suggestions-list").getElementsByTagName("li").length)
			{
				document.getElementById("suggestions-list").getElementsByTagName("li")[item_selected].className = "suggest-out";
				document.getElementById("suggestions-list").getElementsByTagName("li")[(item_selected + 1)].className = "suggest-over";
				item_selected = item_selected + 1;
			}
			if(document.getElementById("suggestions-list").getElementsByTagName("li")[item_selected].offsetTop < document.getElementById("suggestions-list").scrollTop)
			{
				document.getElementById("suggestions-list").scrollTop = document.getElementById("suggestions-list").getElementsByTagName("li")[item_selected].offsetTop;
			}
			if((document.getElementById("suggestions-list").getElementsByTagName("li")[item_selected].offsetTop + document.getElementById("suggestions-list").getElementsByTagName("li")[item_selected].offsetHeight) > (document.getElementById("suggestions-list").scrollTop + document.getElementById("suggestions-list").offsetHeight))
			{
				document.getElementById("suggestions-list").scrollTop = document.getElementById("suggestions-list").getElementsByTagName("li")[item_selected].offsetTop + document.getElementById("suggestions-list").getElementsByTagName("li")[item_selected].offsetHeight - document.getElementById("suggestions-list").offsetHeight;
			}
		}
		else
		{
			if(document.getElementById("suggestions-list").getElementsByTagName("li").length > 0)
			{
				document.getElementById("suggestions-list").getElementsByTagName("li")[0].className = "suggest-over";
				document.getElementById("suggestions-list").scrollTop = document.getElementById("suggestions-list").offsetHeight;
			}
		}
	}
	else if(event.keyCode == 13)
	{
		if(document.getElementById("suggestions").style.display == "none")
		{
			send_form(url, 1);
		}
		else
		{
			selected_item = 0;
			for(i = 0; i<document.getElementById("suggestions-list").getElementsByTagName("li").length; i++)
			{
				if(document.getElementById("suggestions-list").getElementsByTagName("li")[i].className == "suggest-over")
				{
					selected_item = i;
					
				}
			}
			
			if(selected_item != 0)
			{
				attribute_location(document.getElementById("suggestions-list").getElementsByTagName("li")[selected_item]);
			}
			else if(document.getElementById("suggestions-list").getElementsByTagName("li").length != 0)
			{
				attribute_location(document.getElementById("suggestions-list").getElementsByTagName("li")[0]);
			}
		}
	}
	else
	{
		if(location.length > 1)
		{
		var xhr = getXhrObject();

		xhr.onreadystatechange = function()
		{
			if(xhr.readyState == 4 && xhr.status == 200)
			{
				document.getElementById("suggestions-list").innerHTML = xhr.responseText;
				document.getElementById("suggestions").style.display = "block";
			}
		}
		
		xhr.open("POST", url+"ajax/ajax_location.php",true);

		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");

		xhr.send("location=" + location);
		}
		else
		{
			document.getElementById("suggestions").style.display = "none"
		}
	}
}

function selected_item(item_position)
{
	for(i = 0; i<document.getElementById("suggestions-list").getElementsByTagName("li").length; i++)
	{
		if(i == item_position)
		{
			document.getElementById("suggestions-list").getElementsByTagName("li")[i].className = "suggest-over";
		}
		else
		{
			document.getElementById("suggestions-list").getElementsByTagName("li")[i].className = "suggest-out";
		}
	}
}

function attribute_location(element)
{
	document.getElementById("where").value = element.innerHTML;
	url_key_global = element.getAttribute("value");
	document.getElementById("suggestions").style.display = "none";
}

