

var UP = 38;
var DOWN = 40;
var ENTER = 13;
var index = -1;
var TAB = 9;
var BACKSPACE = 8;
var SHIFT = 16;
var CTRL = 17;
var CAPSLOCK = 20;
var ESC = 27;
var table = null;
var rows = null;
var selectedRow = null;
var searchText = '';

function SearchProducts(e) 
{                
	var keynum
	var keychar
	var numcheck
	var txt = document.getElementById('txtSearch');
	var productResult = document.getElementById('productResult');
		
	if (window.event) // IE
	{
		keynum = e.keyCode
	}
	else if (e.which) //Firefox/Opera...
	{
		keynum = e.which
    }
	
	keychar = String.fromCharCode(keynum)
	numcheck = /\d/

	if (keynum == DOWN) 
	{
	    MoveDown(txt);
	    return;
	}
	else if (keynum == UP) 
	{
	    MoveUp(txt);
	    return;
	}
	else if (keynum == SHIFT || keynum == CTRL || keynum == CAPSLOCK) 
	{
	    return false;
	}
	else if (keynum == ENTER) 
	{
		//return false;		
		document.getElementById('searchSubmit').click();		
	}	
	else 
	{
	    index = -1
	}

	if (keynum != DOWN && keynum != UP && (keynum >= 45 || keynum == 32)) 
	{
	    searchText = txt.value;
	}

	else if (keynum == BACKSPACE) 
	{
	    searchText = txt.value;
	}
	
	if (searchText.length < 2) 
	{
	    productResult.innerHTML = '';	    
	}
	else
	{	
		var productlist = "{searchText: '"+ searchText +"'}";
		var service = "SearchProducts.asmx/GetProducts";
	    
		result = $.ajax({
			type: "POST",
			url: service,
			contentType: "application/json; charset=utf-8",
			data: productlist,
			dataType: "json",
			success: productSearchSuccess,
			error: productSearchError
		});
	}
}

function productSearchSuccess(products)
{
    if(products.d != null && products.d != '')
    {
        $("div#productResult").html(products.d);
    }
    else if(products != null && products != '')
    {
        $("div#productResult").html(products);
    }
    else
    {
        productSearchError();
    }
}

function productSearchError()
{
    //Do error handling...
}


function SetTextBox(obj, mouseclick, txt, productResult) 
{
    if (mouseclick) 
    {
        if (IsFireFox()) 
        {
            txt.value = obj.textContent;
            productResult.innerHTML = '';
            document.getElementById('searchSubmit').click();
        }
        else 
        {
            txt.value = obj.innerText;
            productResult.innerHTML = '';
            document.getElementById('searchSubmit').click();
        }
    }
    else 
    {
        if (IsFireFox()) 
        {
            txt.value = selectedRow.childNodes[1].textContent;
        }
        else 
        {
            txt.value = selectedRow.innerText;
        }
    }
}

function MoveUp(txt) 
{
	selectedRow = null;
	table = document.getElementById("Table");

	if (table == null) return;

	rows = table.getElementsByTagName("TR");

	if (index > 0) 
	{
		index--;
		SetDefaultRowColor();
		selectedRow = rows[index];
		selectedRow.className = 'ProductSearchHighlightRow'
		SetTextBox(selectedRow, false, txt);
	}
}

function MoveDown(txt) 
{
	selectedRow = null;
	table = document.getElementById("Table");

	if (table == null) return;

	rows = table.getElementsByTagName("TR");

	if (index < rows.length) 
	{
		if (index < rows.length - 1) 
		{
			index++;
			SetDefaultRowColor();
			selectedRow = rows[index];
			selectedRow.className = 'ProductSearchHighlightRow';
			SetTextBox(selectedRow, false, txt);
		}
	}
}

function SetHoverColor(obj, over) 
{
    index = -1;
    table = document.getElementById("Table");
    if (table == null) return;
    rows = table.getElementsByTagName("TR");
    for (var ix=0 ; ix < rows.length ; ix++)
    {
        selectedRow = rows[ix];
		selectedRow.className = 'ProductSearchDefaultRow';
    }
    
    obj.style.cursor = 'default'
    if (over) 
    {
        obj.className = 'ProductSearchHighlightRow';
    }
    else 
    {        
        obj.className = 'ProductSearchDefaultRow';
    }
}

function SetDefaultRowColor() 
{
	for (i = 0; i < rows.length; i++) 
	{
		rows[i].className = 'ProductSearchDefaultRow';
	}
}

function IsFireFox() 
{
	return (navigator.appName == 'Netscape');
}

function RedirectPage(url)
{		
	window.location = url;
}
