function fetchAutoCompleteList() {
	var selected = findSelected();
	var selectedPath = selected ? selected + '/' : '';
	var searchPhrase = $j('#searchBoxElement #SearchPhrase').attr('value') ? $j('#searchBoxElement #SearchPhrase').attr('value') : 'all';
	var d = new Date();

	$j.get('/search/auto_complete/' + searchPhrase + '/' + selectedPath + '?'+d.getDate(),
		function (resultListElement) {
			if ($j(resultListElement).size() > 0) {
				$j('#autoCompleteResults').remove();
				$j('#searchBoxElement #SearchPhrase').after(resultListElement);
				$j('#autoCompleteResults li').removeClass('selected');

				$j('body').click(function(){
					if ($j('ul#autoCompleteResults').size() > 0) {
						$j('#autoCompleteResults').remove();
					}
				});

				if (hasValue(selected) && isNaN(selected)) {
					$j('#autoCompleteResults li#'+selected).addClass('selected');
				}

				$j('#autoCompleteResults li').eq(0).addClass('selected');

				$j('#autoCompleteResults li').mouseover(
					function () {
						$j('#autoCompleteResults li').removeClass('selected');
						$j(this).addClass('selected');
						$j(this).click(
							function () {
								setSearchString($j('span.textSpan',this).text());
								setSearchUrl($j('span.textSpan',this).attr('rel'));
							}
						);
					}
				);
			}
		}
	);
}

function setSearchUrl(newVal) {
	$j('#searchBoxElement #SearchUrl').attr({value: newVal});
	$j('#searchBoxElement #SearchUrl');
	return false;
}

function setSearchString(newVal) {
	$j('#searchBoxElement #SearchPhrase').attr({value: newVal});
	$j('#autoCompleteResults').remove();
	return false;
}

function findSelected() {
	var selected = null;

	if ($j('#autoCompleteResults ul').children('.selected').size() > 0) {
		selected = $j('#autoCompleteResults li.selected').attr('id');
	}
	return selected;
}

function makeSelection(direction) {
	var selected = findSelected();

	switch (direction) {
		case 'prev':
			if ($j('#autoCompleteResults li.selected').size() > 0 && $j('#autoCompleteResults li.selected') != 'undefined') {
				$j('#autoCompleteResults li.selected').removeClass('selected').prev().addClass('selected');
			} else {
				$j('#autoCompleteResults li:last').addClass('selected');
			}
			break;
		case 'next':
			if ($j('#autoCompleteResults li.selected').size() > 0 && $j('#autoCompleteResults li.selected') != 'undefined') {
				$j('#autoCompleteResults li.selected').removeClass('selected').next().addClass('selected');
			} else {
				$j('#autoCompleteResults li:first').addClass('selected');
			}
			break;
	}
}

function hasValue(Data) {
	if (Data) {
		return (Data.length < 1 || Data == 'undefined' || Data == null || Data == undefined) ? false : true;
	} else {
		return false;
	}
}

// ON DOM READY
$j(document).ready(
	function() {
	    $j('#searchBoxElement #SearchPhrase').keypress(function(Event){
	        if (Event.keyCode == 13) {
	            if ($j('#autoCompleteResults li.selected span.textSpan').text() != undefined) {
	                setSearchUrl($j('#autoCompleteResults li.selected span.textSpan').attr('rel'));
	                setSearchString($j('#autoCompleteResults li.selected span.textSpan').text());
	                $j('#autoCompleteResults').remove();
	                return ($j.browser.msie == false) ? true : false;
                }
                return false;
            }
        });
		$j('#searchBoxElement #SearchPhrase').attr({autocomplete: 'off'});
		$j('#searchBoxElement #SearchPhrase').keyup(
			function (Event) {
				switch(Event.keyCode) {
					case 27: // false
						$j('#autoCompleteResults').remove();
						break;
					case 38:
						makeSelection("prev");
						break;
					case 40:
						makeSelection("next");
						break;
					default:
						fetchAutoCompleteList();
				}
			}
		);
		$j('#searchBoxElement #SearchPhrase').focus(
			function () {
				if ($j('#searchBoxElement #SearchPhrase').attr('value') == 'Enter keyword') {
					$j('#searchBoxElement #SearchPhrase').attr({value: ''});
				}
				if ($j('#searchBoxElement #SearchPhrase').attr('value') != undefined) {
					fetchAutoCompleteList();
				}
			}
		);
		$j('#searchButton').click(
			function () {
				if ($j('#searchBoxElement #SearchUrl').attr('value') != undefined) {
					//document.location = $j('#searchBoxElement #SearchUrl').attr('value') + 'phrase:' + $j('#searchBoxElement #SearchPhrase').attr('value') + '/type:search/';
					document.location = $j('#searchBoxElement #SearchUrl').attr('value');
				} else {
					document.location = '/search/phrase/'+$j('#searchBoxElement #SearchUrl').attr('value')+'/phrase:'+$j('#searchBoxElement #SearchPhrase').attr('value')+'/type:search/';
				}
				return false;
			}
		);
	}
);
