// JavaScript Document

function Presearch(sourceName,menuDivName){
	this.sourceName = sourceName;
	this.source = null;
	this.phraseArray = new Array();
	this.initialize = PresearchInitialize;
	this.findPhrase = PresearchFindPhrase;
	this.menu = null;
	this.menuDivName = menuDivName;
	this.run = PresearchRun;
	this.kbevent = PresearchKBEvent;
}

function PresearchInitialize(){
	this.source = $(this.sourceName);
	this.menu = new SearchResultMenu(this.menuDivName,this.source);
	this.source.presearcher = this;
	var _this = this;
//	this.source.onblur = function(){
//		setTimeout("_this.menu.hide()",100);
//	}
	this.source.onkeydown = this.kbevent;
}
	
function PresearchFindPhrase(phrase){
	for (var i = 0; i < this.phraseArray.length; i++){
		if(this.phraseArray[i].compare(phrase)){
			return this.phraseArray[i];
		}
	}
	return null;
}

function PresearchKBEvent(evt){
	var c = document.all ? event.keyCode : evt.keyCode;
	//Up Arrow
	var oldIndex = this.presearcher.menu.selectedIndex;	
	if (c == 38){
		if (this.presearcher.menu.length > 0){
			if (oldIndex < this.presearcher.menu.length){
				this.presearcher.menu.clearSelected();
			}
			if (oldIndex > 0){
				this.presearcher.menu.setSelected(oldIndex - 1);
			}
			else
				this.presearcher.menu.setSelected(this.presearcher.menu.length-1);			
		return true;
		}
	}

	//Down Arrow
	else if (c == 40){
		if (this.presearcher.menu.length > 0){
			if (oldIndex >= 0){
				this.presearcher.menu.clearSelected();
			}
			if (oldIndex < this.presearcher.menu.length-1){
				this.presearcher.menu.setSelected(oldIndex + 1);
			}
			else
				this.presearcher.menu.setSelected(0);			
		}
		return true;
	}

	else if (c == 27){
		this.presearcher.menu.hide();
		this.presearcher.menu.length = 0;
		return true;
	}

	else if (c == 13){
		if (this.presearcher.menu.length > 0 && this.presearcher.menu.selectedItem != null){
			window.location = this.presearcher.menu.selectedItem.result.searchLink;
		}
		return false;
	}
	else{
		this.presearcher.run(this.presearcher.source);
	}
	return true;
}


function PresearchRun(){
	if(this.source.value.length > 0 && this.source.value != 'Search Text'){
		var swa = this.source.value.split(' ');
		var sp = new SearchPhrase(swa);
		var t = this.findPhrase(sp);
		if(t != null){
			if(t.results.length > 0){
				this.menu.build(t.results);
			}
			else{
				this.menu.hide();
			}
		}
		else{
			var _this = this;
			new Ajax.Request('http://www.visitbloomington.com/store/search/ajax.cfm?action=presearch&searchText=' + this.source.value,
			{
				'onSuccess' : function (response){
					sp.buildResultSet(response.responseXML);
					_this.phraseArray.push(sp);

					if(sp.results.length > 0){
						_this.menu.build(sp.results);
					}
					else{
						_this.menu.hide();
					}
				},
				'onFailure' : function(response){
					alert('Search failed - check your search string and try again');
				}
			});
		}
	}
}


	