var searchComplete;
var criteria;
var searchPosition = -1;
var searchList;

function DoSearch(id, url)
{
	var s, f;
	s = document.getElementById(id);
	if(s != null && (Trim(s.value) != ''))
	{
		f = document.getElementById('SearchBySection');
		if(f != null && f.checked)
			location.href = location.href.substring(0, location.href.lastIndexOf('/') + 1) + 'search.epx?q1=' + encodeURIComponent(s.value);	
		else
			location.href = url + '?q1=' + escape(s.value);
	}
	return false;
}

function SearchOnEnter(id, url, e)
{
	var et;
	if(window.event)
	{
		if(!e)
			e = window.event;
		et = 1;
	}
	else if(window.Event)
	{
		if(!e)
			e = window.Event;
		et = 3;
	}
	else if(arguments.callee)
	{
		if(!e)
			e = arguments.callee.caller.arguments[0];
		et = 2;
	}
	if(e != null)
	{
		var kc = e.keyCode ? e.keyCode : e.charCode ? e.charCode: e.which;

		if(kc == 13)
		{
			if(searchPosition == -1 || searchComplete.style.display == 'none')
			{
				HideSearch();
				DoSearch(id, url);
			}
			else if(searchPosition > -1)
			{
				var obj = document.getElementById(id);
				if(obj != null)
				{
					obj.value = searchList[searchPosition];
					obj.focus();
					HideSearch();
				}
			}
			
			if(et == 1)
			{
				e.cancelBubble = true;
				e.returnValue = false;
			}else if(et == 3)
			{
				e.stopPropagation();
				e.preventDefault();
			}else{
				return false;
			}
		}
	}
}

function GetAutoComplete(id, url)
{
	var e, et;
	
	if(window.event)
	{
		e = window.event;
		et = 1;
	}
	else if(window.Event)
	{
		e = window.Event;
		et = 1;
	}
	else if(arguments.callee)
	{
		e = arguments.callee.caller.arguments[0];
		et = 2;
	}
	if(e)
	{
		var kc = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
		if(kc == 27 || kc == 9) //esc
		{ 
			HideSearch();
			return false;
		}else if(kc == 40){
			searchPosition++;
			if(searchList && searchPosition >= searchList.length)
				searchPosition = 0;
		}else if(kc == 38){
			searchPosition--;
			if(searchPosition < -1)
				searchPosition = searchList.length - 1;
		}
		
		if(searchList && searchPosition > -1)
			for(i = 0; i < searchComplete.childNodes.length; i++)
				if(searchComplete.childNodes[i].tagName == 'A' || searchComplete.childNodes[i].tagName == 'a')
				{
					if(searchComplete.childNodes[i].title == searchList[searchPosition])
						searchComplete.childNodes[i].style.backgroundColor = '#f3bc33';
					else
						searchComplete.childNodes[i].style.backgroundColor = '#f9dd99';
				}
	}
	
	if(criteria != document.getElementById(id).value && document.getElementById(id).value.length > 0)
	{
		criteria = document.getElementById(id).value;
		searchComplete = document.getElementById('searchComplete');
		searchList = null;
		searchPosition = -1;
		if(searchComplete != null)
		{
			var rem = new RemoteMethod(url);
			rem.MethodName = 'GetAutoComplete';
			rem.AddArgument(criteria);
			rem.LocalAction = ShowSearch;
			rem.Invoke();
		}
	}
}

function Trim(value)
{
	return value.replace(/^\s+|\s+$/g,"");
}

function SetSearch(id, value)
{
	var obj = document.getElementById(id);
	if(obj != null)
	{
		criteria = null;
		obj.value = value;
		obj.focus();
		HideSearch();
	}
	return false;
}

function HideSearch()
{
	if(searchComplete)
	{
		criteria = null;
		searchComplete.style.display = 'none';
		searchComplete.innerHTML = '';
	}
}

function ShowSearch(args)
{
	if(args != null)
	{
		args = eval(args);
		
		if(args != null && args[0] == criteria && args[2])
		{
			searchComplete.innerHTML = args[1];
			searchComplete.style.display = 'inline';
			searchPosition = -1;
			searchList = args[2];
		}
	}else
		HideSearch();
}

function GetObjectFromEvent()
{
	var e;
	if(window.event)
		e = window.event;
	else if(window.Event)
		e = window.Event;
	else if(arguments.callee)
		e = arguments.callee.caller.arguments[0];
	if(e)
		return e.srcElement;
}

function SearchHighlight(key)
{
	for(i = 0; i < searchList.length;i++)
		if(searchList[i] == key)
			searchPosition = i;
	for(i = 0; i < searchComplete.childNodes.length; i++)
		if(searchComplete.childNodes[i].tagName == 'A' || searchComplete.childNodes[i].tagName == 'a')
		{
			if(searchComplete.childNodes[i].title == searchList[searchPosition])
				searchComplete.childNodes[i].style.backgroundColor = '#f3bc33';
			else
				searchComplete.childNodes[i].style.backgroundColor = '#f9dd99';
		}
}

function SearchNormal(key)
{
	for(i = 0; i < searchComplete.childNodes.length; i++)
		if(searchComplete.childNodes[i].tagName == 'A' || searchComplete.childNodes[i].tagName == 'a')
			searchComplete.childNodes[i].style.backgroundColor = '#f9dd99';
}
