var ls = {
        url:'',
        search_form:'searchform',
        results_box:'',
        selected_result:undefined,
        had_focus:false,
        
        init:function() {
            if ( $('livesearchpopup_results') == undefined )
                return;

            ls.results_box = $('livesearchpopup_box_container');
            ls.results_box.hide();
            
            var s = $('s');
 			s.value = startText;
			s.setAttribute("autocomplete","off");
            s.setAttribute("placeholder","Live search, just start typing");
            s.onkeypress = ls.noEnter;
            new Form.Element.Observer(s, 1.0, ls.show_results);
            Event.observe(s, "keypress", ls.handleKeypress, false);
            Event.observe(s, "blur", ls.lostFocus, false);
            Event.observe(s, "change", ls.lostFocus, false);
            Event.observe(s, "focus", ls.focus, false);
            Event.observe(ls.results_box, "mousemove", function(event){ ls.updateSelection(undefined,undefined);})
            ls.show_page(s.value, 1);
        },
        
        noEnter:function(evt) {
            evt = (evt) ? evt : ((window.event) ? window.event : "")
            if (evt) {
                return !( evt.keyCode==13 || evt.which==13 );
            }
        },

        lostFocus:function(event) {
            window.setTimeout("ls.results_box.hide();", 500);
        },
        
        focus:function(event) {
            ls.had_focus = true;
            svalue = $('s').value;
 			$('s').value = svalue.replace(startText,'');
            svalue = $('s').value;
			if (svalue.length > 0) {
                ls.show_page(svalue, 1);
            }
        },

        handleKeypress:function(event) {
            ls.had_focus = true;
            var key = event.which || event.keyCode;
            switch (key) {
            case 27:
                ls.close();
                return false;
            /* case Event.KEY_UP:
                ls.updateSelection(-1,undefined); 
                return false;
            case Event.KEY_DOWN:
                ls.updateSelection(+1,undefined); 
                return false;
            case Event.KEY_RETURN:
                if (ls.selected_result != undefined) {
                    var resultlist = $('resultlist');
                    var children = Element.childElements(resultlist);
                    var link = children[ls.selected_result].firstChild;
                    var url = link.href;
                    document.location = url;
                }
                return false;
            */
			}

            return true;
        },

        updateSelection:function(diff,tab) {
			
			// do portfolio in col 1
            var resultlist = $('resultlist');
            var children = undefined;
            if (resultlist != undefined ) {
                children = Element.childElements(resultlist);
            }
            if (resultlist == undefined || diff == undefined || resultlist.length == 0) {
                ls.selected_result = undefined;
                if (resultlist != undefined) {
                    var children = Element.childElements(resultlist);
                    for (i=0; i<children.length; i++) {
                        children[i].className = "resultlistitem";
                    }
                }
            } else {
                var num = 0;
                if (ls.selected_result == undefined) {
                    if (diff > 0)
                        num = -1 + diff;
                    else
                        num = children.length + diff;
                } else {
                    num = ls.selected_result + diff;
                }
                if (num >= children.length) {
                    num = children.length - 1;
                }
                if (num < 0) {
                    num = 0;
                }

                ls.selected_result = num;
                for (i=0; i<children.length; i++) {
                    if (i == num) {
                        children[i].className = "resultlistitem_selected";
                    } else {
                        children[i].className = "resultlistitem";
                    }
                }
            }
		},
      
        show_results:function(element, value) {
				if (ls.had_focus) {  
					ls.show_page(value, 1);
				}
        },
        
        show_page:function(s, page) {
			ls.results_box.hide();
			if ((s != startText) && (s != "")) {
                $('livesearchpopup_results').update( '<img src="http://www.flohmedia.com/loading.gif" />' );
                $('livesearchpopup_results2').update( '<img src="http://www.flohmedia.com/loading.gif" />' );
                $('livesearchpopup_results3').update( '<img src="http://www.flohmedia.com/loading.gif" />' );
                $('livesearchpopup_results4').update( '<img src="http://www.flohmedia.com/loading.gif" />' );
				window.clearTimeout();
                var pars = 's=' + s + '&paged=' + page + '&category_name=Portfolio';
                var pars1 = 's=' + s + '&paged=' + page + '&category_name=News';
                var pars2 = 'tagsearch=' + s + '&paged=' + page;
                var pars3 = 's=' + s + '&paged=' + page;
                new Ajax.Updater('livesearchpopup_results', ls.url + 'search_results.php', { method: 'get', parameters: pars });
                new Ajax.Updater('livesearchpopup_results2', ls.url + 'search_results_news.php', { method: 'get', parameters: pars1 });
                new Ajax.Updater('livesearchpopup_results3', ls.url + 'search_results_tags.php', { method: 'get', parameters: pars2 });
                new Ajax.Updater('livesearchpopup_results4', ls.url + 'search_results_other.php', { method: 'get', parameters: pars3 });
                ls.results_box.show();
            }

            ls.updateSelection(undefined); 
        },
        
        close:function() {
            $('s').value = startText;;
            ls.results_box.hide();
        }
}

Event.observe(window, 'load', ls.init, false);
var startText = "Live search, just start typing";
