﻿ACCP.Controls.TextBoxCompletion = Class.create();
Object.extend(ACCP.Controls.TextBoxCompletion.prototype,
{
	initialize : function(uniqueId, textBoxId, hiddenFieldId)
	{
		this.textBox = $(textBoxId);
		this.hiddenField = $(hiddenFieldId);
		this.results = document.createElement("div");
		this.nextSearchAllowed = true;
		this.results.className = "text-completion-results";
		this.uniqueId = uniqueId;
	},
	getNameSearchResults : function()
	{
	
		if (this.textBox.value.length > 3 && this.nextSearchAllowed == true)
		{
			this.nextSearchAllowed = false;
			TextBoxCompletion.SearchMemberNames(this.textBox.value, this.showResults.bind(this));
		}
		else
		{
			this.hideResults();
		}
	},
	clearResults : function()
	{
		this.results.innerHTML = "";
	},
	hideResults : function()
	{
		if (ACCP.General.Exists(this.results.parentNode))
		{
			this.results.parentNode.removeChild(this.results);
		}
	},
	showResults : function(response)
	{	
		this.nextSearchAllowed = true;
		this.clearResults();
				
		for (var i = 0; i < response.value["Rows"].length; i++)
		{
			var result = document.createElement("div");
			var hidden = document.createElement("hidden");
			
			result.className = "text-completion-results-item";
			
			result.innerHTML = response.value["Rows"][i]["full_name"];
			result.id = "result_" + response.value["Rows"][i]["id"];
			hidden.value = response.value["Rows"][i]["id"];
			hidden.id = "result_" + response.value["Rows"][i]["id"] + "_hidden";
			
			result.onclick = function() 
											{ 
												this.textBoxCompletion.hiddenField.value = $(this.id + "_hidden").value; 
												this.textBoxCompletion.hideResults(); 
												this.textBoxCompletion.textBox.value = this.innerHTML;
											};
			result.textBoxCompletion = this;
			
			this.results.appendChild(hidden);
			this.results.appendChild(result);
		}
		
		var position = ACCP.General.GetPosition(this.textBox);
		this.results.style.left = position.x + "px";
		this.results.style.top = position.y + this.textBox.offsetHeight + "px";		
		
		if (!ACCP.General.Exists(document.body.textBoxCompletions))
		{
			document.body.textBoxCompletions = new Array();
		}
		
		document.body.textBoxCompletions[this.uniqueId] = this;
		ACCP.General.AddEvent(document.body, "click", function() 
																									{  
																										for (var i in this.textBoxCompletions)
																										{
																											if (ACCP.General.Exists(this.textBoxCompletions[i].clearResults))
																											{
																												this.textBoxCompletions[i].hideResults();
																											}
																										}
																									});
		document.body.appendChild(this.results);
	}
}, false);