/*
	Search Box
*/
var PC_searchbox = {

	searchdomain: '',
	searchfile: '',
	searchkeys: {},
	streetmapfile: '',
	streetmapkey: '',

	timeout: 0,
	slideup: false,
	focussed: false,
	select_focussed: false,
	
	init: function(searchfile,searchdomain,searchkeys,streetmapfile,streetmapkey) {
		this.searchdomain = searchdomain;
		this.searchfile = searchfile;
		this.searchkeys = searchkeys;
		this.streetmapfile = streetmapfile;
		this.streetmapkey = streetmapkey;
		if ($('searchboxq')) {
			Event.observe($('searchboxq'), 'keypress', function(event){ if(event.keyCode == Event.KEY_RETURN) PC_searchbox.search(); });
		}
	},
	
	focus: function() {
		this.focussed = true;
		if (!$('searchboxopts').visible()) {
			PC_searchbox.slide('down');
		}
	},
	blur: function() {
		this.focussed = false;
	},
	select_focus: function() {
		this.select_focussed = true;
	},
	select_blur: function() {
		this.select_focussed = false;
	},
	over: function() {
		if (this.timeout) {
			window.clearTimeout(this.timeout);
		}
		if (this.focussed && !$('searchboxopts').visible()) {
			PC_searchbox.slide('down');
		}
	},
	out: function() {
		if (this.select_focussed) { return false; }
		this.timeout = window.setTimeout(function() {
			if ($('searchboxopts').visible()) {
				PC_searchbox.slide('up');
			}
		},800);
	},
	slide: function(dir) {
		switch (dir) {
			case "up":
				$('searchbox_advancedlink').hide();
				PC_searchbox.slideup = Effect.SlideUp('searchboxopts', { duration: 0.2 } );
			break;
			case "down":
				if (PC_searchbox.slideup) { 
					PC_searchbox.slideup.cancel();
				}
				$('searchbox_advancedlink').hide();
				Effect.SlideDown('searchboxopts', { duration: 0.6, transition: Effect.Transitions.spring, afterFinish: function() { $('searchbox_advancedlink').appear( { duration: 0.5 } ); } });
			break;
		}
	},
	search: function() {
		var searchtype = $('searchbox_type').value;
		var q = $('searchboxq').value;
		var cref = $('searchboxcref').value;
		if (!cref) { alert('no cref'); }
		if (!q) {
			new Effect.Highlight($('searchboxq'), { startcolor: '#ff0000', endcolor: '#ffffff' });
			$('searchboxq').focus();
			return false;
		}
		switch(searchtype) {
			case "full":
			case "news":
			case "events":
			case "companies":
			case "market":
				// google search
				if (!this.searchfile) {
					alert('The search file has not been initiated.');return false;
				}
				switch (searchtype) {
					case "news":
						q = q + ' inurl:'+this.searchkeys['news'];
					break;
					case "events":
						q = q + ' inurl:'+this.searchkeys['events'];
					break;
					case "companies":
						q = q + ' inurl:'+this.searchkeys['companies'];
					break;
					case "market":
						q = q + ' inurl:'+this.searchkeys['market'];
					break;
				}
				var searchform = new Element('form', { id: 'exec_searchform', action:this.searchfile, method: 'get' });
				searchform.appendChild(new Element('input', { type: 'hidden', name: 'cref', value: cref } ));
				searchform.appendChild(new Element('input', { type: 'hidden', name: 'q', value: q } ));
				//searchform.appendChild(new Element('input', { type: 'hidden', name: 'cx', value: 'partner-pub-7147251639831640:gl9tkr-xqyb' } ));
				searchform.appendChild(new Element('input', { type: 'hidden', name: 'cof', value: 'FORID:10' } ));
				searchform.appendChild(new Element('input', { type: 'hidden', name: 'ie', value: 'UTF-8' } ));
				//searchform.appendChild(new Element('input', { type: 'hidden', name: 'domains', value: this.searchdomain } ));
				//searchform.appendChild(new Element('input', { type: 'hidden', name: 'sitesearch', value: this.searchdomain } ));
				searchform.appendChild(new Element('input', { type: 'submit', value: '&raquo;' } ));
				document.body.appendChild(searchform);
				setTimeout(function() { $('exec_searchform').submit(); },100);
			break;
			case "street":
				var searchform = new Element('form', { id: 'exec_searchform', action:this.streetmapfile, method: 'get' });
				searchform.appendChild(new Element('input', { type: 'hidden', name: this.streetmapkey, value: q } ));
				document.body.appendChild(searchform);
				setTimeout(function() { $('exec_searchform').submit(); },100);
			break;
		}
	}
};
