var iotSuggestion = {};
/*var iotSuggestion.timeOut;
var iotSuggestion.lastElement;
var iotSuggestion.lastUrl;*/
iotSuggestion.windowMade = false;

//onblur="suggestCloseDelay()" onkeyup="suggestInputType(this, 'http://odin.iotrak.net/index.php/hint_client_short.php')"

iotSuggestion.takeElement = function (selector, url, clickable)
{
	if(!iotSuggestion.windowMade)
		iotSuggestion.prepare();
	
	$(selector).blur(
		function()
		{
			setTimeout(iotSuggestion['close'], 800);
		}
	);
	$(selector).keyup(
		function()
		{
			iotSuggestion.lastElement = this;
			iotSuggestion.lastUrl = url;
			iotSuggestion.clickable = clickable ? true : false;
			
			if(iotSuggestion.timeOut)
				clearTimeout(iotSuggestion.timeOut);
			
			iotSuggestion.timeOut = setTimeout(iotSuggestion['getList'], 400);
		}
	);
}

/*function suggestInputType(element, url)
{
	iotSuggestion.lastElement = element;
	iotSuggestion.lastUrl = url;
	
	if(iotSuggestion.timeOut)
	{
		clearTimeout(iotSuggestion.timeOut);
	}
	iotSuggestion.timeOut = setTimeout('suggestGetList()', 400);
}*/

iotSuggestion.getList = function ()
{
	var inputValue = iotSuggestion.lastElement.value;
	$.post(iotSuggestion.lastUrl, {iotSuggestionText: inputValue},
		function(data)
		{
			if(data.length)
				iotSuggestion.populate(data)
			else
				iotSuggestion.close();
		}
	);
}

iotSuggestion.prepare = function()
{	
	var newHtml = $("<div id=\"iotSuggestion\"></div>");
	newHtml.css("position", "absolute");
	newHtml.hide();
	
	$("body").append(newHtml);
	iotSuggestion.windowMade = true;
}

/*function suggestCloseDelay()
{
	setTimeout('iotSuggestion.close()', 800);
}*/

iotSuggestion.close = function()
{
	$("#iotSuggestion").hide();
}

iotSuggestion.populate = function(items)
{	
	var input = iotSuggestion.lastElement;
	var display = $("#iotSuggestion");
	
	var inputPos = $(input).offset();
	
	display.css("left", inputPos.left);
	display.css("top", inputPos.top + $(input).outerHeight());
	display.width($(input).outerWidth() - (display.outerWidth() - display.innerWidth()));
	
	/*if(!obj.offsetParent)
	{
		alert('error');
		return;
	}
	
	var x = 0; var y = 0;
	
	do
	{
		x += obj.offsetLeft;
		y += obj.offsetTop;
	} while (obj = obj.offsetParent)
	
	y += iotSuggestion.lastElement.offsetHeight;
	
	displayDiv.style.left = x + 'px';
	displayDiv.style.top = y + 'px';
	displayDiv.style.display = 'block';
	displayDiv.style.position = 'absolute';
	displayDiv.style.minWidth = iotSuggestion.lastElement.offsetWidth + 'px';*/
	
	itemArray = items.split("\n");
	
	display.empty();
	
	//displayDiv.innerHTML = "";
	
	for(i=0;i<itemArray.length;i++)
	{
		if(!itemArray[i].length)
			continue;	
		
		var divClass = iotSuggestion.clickable ? "suggestItemClickable" : "suggestItem";
		
		var newHtml = $("<div class=\"" + divClass + "\">" + itemArray[i] + "</div>");
		if(iotSuggestion.clickable)
		{
			newHtml.click(
				function()
				{
					iotSuggestion.map($(this).text());
				}
			);
		}
		
		display.append(newHtml);
		
		/*node = document.createElement("div");
		node.className = "suggestItem";
		node.onclick = Function("suggestMap(\"" + itemArray[i] + "\")");
		node.innerHTML = itemArray[i];
		displayDiv.appendChild(node);*/
	}
	
	display.show();
	
	//displayDiv.innerHTML = ajax.xmlHttp.responseText;
}

iotSuggestion.map = function(string)
{
	iotSuggestion.lastElement.value = string;
	iotSuggestion.close();
}
