
// outerClick-Event >> http://blog.kassens.net/outerclick-event
(function(){

    var events;
    var check = function(e){
    
        var target = $(e.target);
        var parents = target.getParents();

        events.each(function(item){

        var element = item.element;
    
        if (element != target && !parents.contains(element))
            item.fn.call(element, e);
    
        });
    };

    Element.Events.outerClick = {

        onAdd: function(fn){

            if(!events) {

                document.addEvent('click', check);
                events = [];
            }

            events.push({element: this, fn: fn});
        },

        onRemove: function(fn){
        
            events = events.filter(function(item){
                return item.element != this || item.fn != fn;
            }, this);

            if (!events.length) {
            
                document.removeEvent('click', check);
                events = null;
            }
        }

    };

})();

/* FIX for Request.HTML >> http://mootools.lighthouseapp.com/projects/2706/tickets/205-onclick-properties-are-dropped-unsing-request-html-in-ie 
Request.HTML.implement({

    success: function(text){
        var options = this.options, response = this.response;
        
        response.html = text.stripScripts(function(script){
            response.javascript = script;
        });
        
        var temp = this.processHTML(response.html);
        
        response.tree = temp.childNodes;
        response.elements = temp.getElements('*');
        
        if (options.filter) response.tree = response.elements.filter(options.filter);
        
        // Changed this line so we can adopt the html directly like in the old versions.
        //if (options.update) $(options.update).empty().adopt(response.tree);
        if (options.update) $(options.update).empty().set('html',response.html);
        
        if (options.evalScripts) $exec(response.javascript);
        
        this.onSuccess(response.tree, response.elements, response.html, response.javascript);
    }

});

*/

var cAISajax = new Class({
    
    get: function( url,target ) {
        
        var myHTMLRequest = new Request.HTML( { method: 'get', headers: {'X-Request-Type': 'xhr', 'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT' }, update: $(target), url: url  } ).get( );
    },

    send: function( form, target ) {
    
        var ul = $(form).get('action');
        var myHTMLRequest = new Request.HTML( { url: ul, headers: {'X-Request-Type': 'xhr' }, update: $(target)  } ).post( $(form) );
    },

    post: function( url, target, params ) {
   
        var myHTMLRequest = new Request.HTML( { url: url, headers: {'X-Request-Type': 'xhr' }, update: $(target) } ).post( params );
    }

});


var cAISpopup = new Class({
    
    initialize: function() {
        
        this.target  = $('popupdialog');
        this.content = $('popupcontent');
        
        $('popupdialog').self = this;
    },

    close: function() {

        // Fenster ausblenden
        this.target.setStyle('display','none');          
    },

    load: function(e, url, height ) {

        var event = new Event(e);
   
        this.content.empty();

        this.target.setStyle('height', height ) ;

        // Fenstergrösse
        var winwidth  = window.getWidth();
        var winheight = window.getHeight();

        // Position des Klicks
        var posleft = event.page.x;
        var postop  = event.page.y;

        // Element einblenden
        this.target.setStyle('display','block');

        // Inhalt laden
        AISajax().get(url, this.content );

        // Schliessen wenn außerhalb geklickt wird
        this.target.addEvent('outerClick', function() { this.close()}.bind(this) );

        // Grössenobjekt des Popups
        var popupsize = this.target.getSize();

        // Breite des Popups
        var popwidth  = popupsize.x;
        var popheight = popupsize.y;

        // Offset für den Pfeil
        var posx = 31;
        var posy = 18;

        var x = "l";
        var y = "t";

        // Das Popup ausrichten
        if ( winwidth < ( posleft + popwidth + posx ) ) {
        
            posx = posleft - posx - popwidth;
            x = "r";

        } else {

            posx = posleft + posx;
        }

        if ( winheight < ( postop + popheight + posy ) ) {

            posy = postop - posy - popheight;
            y = "b";

        } else {
            
            posy = postop + posy;
        }
 
        this.target.getFirst().id = 'popupdialogmarker_'+x+y;
        this.target.setStyle('left', posx);
        this.target.setStyle('top', posy);
    }

});


var cAISdialog = new Class({

    initialize: function(url, callback) {

        this.url      = url;
        this.callback = callback;
    },
    
    load: function() {

        // Dialog einblenden
        $('dialog').style.display = 'block';

        // Hintergrund einblenden, aktuelle Höhe und Breite des Viewports
        $('dialogshadow').setStyle('display','block');
        $('dialogshadow').setStyle('width', window.getScrollWidth() );
        $('dialogshadow').setStyle('height',window.getScrollHeight() );

        var myHTMLRequest = new Request.HTML( { method: 'get', headers: {'X-Request-Type': 'dialog', 'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT' }, update: $('dialog'), url: this.url } ).get();
 
    },

 
    cancel: function() {

        // Dialog ausblenden
        $('dialog').style.display = 'none';

        // Dialog leeren
        $('dialog').empty();

        // Hintergrund ausblenden
        $('dialogshadow').style.display = 'none';

        return false;
    },

    close: function() {

        // Wrapper auf cancel
        this.cancel();
    },

    message: function(message) {
       
        // Message setzen und nach 2 Sekunden ausblenden
        $('message').setStyle('display','block');
        $('message').set('text',message);
        $('error').empty();
    },

    error: function(message) {
        
        // Fehler setzen
        $('error').set('text',message);
    },

    submit: function() {

        // Abschliessen

        // Callback Success
        var success = function(answer) {

            this.message(answer.message);
            
            if ( this.callback && this.callback(answer) ) {
                this.close();
            }

        }.bind(this);

        // Callback Error
        var error = function() { }.bind(this);

        var XHR = new Request.JSON( { url: $('dialogform').get('action'), onComplete: success, onFailure: error, headers: {'X-Request-Type': 'xhr'} }  ).post( $('dialogform') );
    },

    forward: function() {

        // nächste Dialogmaske ausrufen
      
        // Callback Success
        var success = function(answer) {

            $('dialog').set('text',answer);

        }.bind(this);

        // Callback Error
        var error = function() { }.bind(this);
   
        // Als AJAX-Request kennzeichnen, damit der Wrapper nicht aktiv wird
        var XHR = new Request.JSON( { onComplete: success, onFailure: error,  headers: {'X-Request-Type': 'xhr', 'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT'} }  ).get( $('dialogform') );
      }

   
});

var cAISmultiselect = new Class({

    initialize: function(form) {
        this.form = $(form);
    },

    message: function(message) {
        
        $('message').setStyle('display','block');
        $('message').set('text',message);
        $('error').empty();
    },

    submit: function() {

        // Callback Success
        var success = function( answer ) {

            this.message(answer.message);

        }.bind(this);

        // Callback Error
        var error = function() {}.bind(this);
  
        // Als AJAX-Request kennzeichnen, damit der Wrapper nicht aktiv wird
        var XHR = new Request.JSON({url: this.form.get('action'), onComplete: success, onFailure: error,  headers: {'X-Request-Type': 'xhr'} }  ).post(this.form);
    }
});

// Relationale Auswahl
var cAISselect = new Class({

    initialize: function(url,callback) {

        this.url      = url;
        this.callback = callback;
    },

    // Einen Eintrag auswählen, Kinder laden
    select: function(el,end) {
        
        var x = 1;

        // Elemente ermitteln
        var el = $(el);
        var label   = el;
        var xinput  = el.getPrevious();
        var ul      = el.getParent().getParent();
        var li      = el.getParent();
        var current = ul.id.replace(/\D/g,"").toInt();
        var id      = xinput.value.toInt();

        $('buttontext').set('text',label.innerHTML+" hinzufügen");

        // Alle Aktivierungsklassen entfernen
        ul.getChildren().each(function(child) {
            
            child.removeClass('current');
            child.removeClass('active');
            
        });

        // neues Elemente markieren
        li.addClass('current');
        
        // Nächste Ebenen aufräumen
        $$('.select').each( function(child) {
        
            var childid = child.id.replace(/\D/g,"").toInt();

            if ( childid > current ) {
                child.empty();
            }
        });

        // Vorherige Ebene aufräumen
        if ( current > 1 ) {
            var old = 'select'+(current-1);

            // Alle Aktivierungsklassen entfernen
            $(old).getChildren().each(function(child) {
            
                if ( child.hasClass('current') ) {
                    child.removeClass('current');
                    child.addClass('active');
                }
            
            });

        }

        if ( !end ) {

            // Nächste Ebene neu laden
            var target = 'select'+(current+1);
            target.load(this.url + "/"+ id );                

        }
    }

});

function AISajax() { 
   return new cAISajax();
}

function AISdialog() {
    return new cAISdialog();
}

function AISmultiselect(form) {
    return new cAISmultiselect(form);
}


// 
// Eine Selectbox mit werten via AJAX füllen
//
function AISfillselect(select,url) {

    var target = $(select);

    // Leeren
    target.empty();

    // Callback Success
    var success = function(answer) {

            $each(answer.list, function(el) {
                
                var option = new Element('option');
               
                option.setProperty('value', el.id);
               
               if ( el.type ) {
                    option.set('text',  el.name + " [" + el.type +"]" );
                } else {
                    option.set('text', el.name ) ;
                }
               
               option.injectInside( target );

            });

            if ( answer.list == 0 ) {
                   var option = new Element('option');
                   option.set('text', "Keine Bereiche vorhanden");
                   option.injectInside( target );
            }
    };

    var error = function() {};

    var XHR = new Request.JSON({url: url, onComplete: success, onFailure: error,  headers: {'X-Request-Type': 'xhr', 'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT' } }  ).get();

}


function AISremove(el, url) {

    // Callback Success
    var success = function(answer) {
    
        if ( answer.message ) {
            $('message').setStyle('display','block');
            $('message').set('text',answer.message);
            $('error').empty();
        }
        
        if ( answer.status == 'ok' ) {
            el.destroy();
        }
    };

    // Callback Error  
    var error = function() {

        alert("Es ist ein Fehler aufgetreten");            
    };

    // Request starten
    var rm = new Request.JSON({url: url, onComplete: success, onFailure: error,  headers: {'X-Request-Type': 'xhr', 'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT' } }  ).get();
}


function AIStoggle(trigger,target) {
    
    // Checkboxen togglen
    $$('input').each(function(el){
    
        if ( el.name == target ) {
            el.checked = ( el.checked == true) ? false : true;
        }
    });

}


function AIScalendarAddEvent(e,url,datetime) {

    var event = new Event(e);
    event.stopPropagation();

    var popup = new cAISpopup();
    popup.load( event, url, '20em' );
    return false;
}

function AIScalendarEditEvent(e,url) {

    var event = new Event(e);
    event.stopPropagation();

    var popup = new cAISpopup();
    popup.load( event, url, '14em' );
    return false;
}


function AIScalendarViewEvent(e,url) {

    var event = new Event(e);
    event.stopPropagation();
    var popup = new cAISpopup();
    popup.load( event, url, '21em');
    return false;
}

// Sicherheitsabfrage - fuer die Loeschung wichtiger Sachen
function doublecheck(question, expected, link) {

   	var answer = prompt( question, "" );

	if ( answer == null ) {
			
		
	} else {

        var answer = answer.clean();

		if ( expected.toLowerCase() == answer.toLowerCase() ) {
		
			// Link aufrufen
			document.location.href = link;
			
		} else {
		
			// Recursiver Aufruf 	
			doublecheck( question, expected, link ) ;
		} 
	}			
}


// Einfache Sicherheitsabfrage
function check(question,link) {

    var ok = confirm( question ) ;

    if ( ok ) {

        document.location.href = link;
    }        
    
}

// Fokuswechsel und Tips integrieren
window.addEvent('domready', function() {

    // Datepicker zuordnen
    var datepickers = $$('.datepicker');

    // Init Benutzerauswahl via AC
    if ( $('facebook-demo') ) {

        new FacebookList('facebook-demo', 'facebook-auto');
    }

    datepickers.each( function(dp) {

        // Element 
        var dpid = dp.get('id');
       
        dp.addClass('highlight-days-67');
        dp.addClass('no-transparency');
        dp.addClass('format-d-m-y');
        dp.addClass('divider-dot');

        if ( dpid ) {

            datePickerController.datePickers[dpid];

        } else {

            alert("Elemente ohne ID");
        }

    });

    // alle Listenelemente
    var list = $$( 
        '.form li input[type!=hidden]', 
        '.form li textarea',
        '.form li a', 
        '.form li select',
        '.form li button'
    );
   
    
   if ( $$('.nofocus').length == 0 ) {
    
        list.each( function(el) {
    
            var bfocus = function() {
            
                // alle anderen .focused zurücksetzen
                $$('li.focused').each( function(lif) {
                    
                    lif.removeClass('focused');                   
                    
                });

                // focused auf das übergeordnete LI setzen
                var li = el.getParent();
            

                if ( li.get('tag') == 'li' ) {
                    
                    li.addClass('focused');
        
                } else {

                    li.getParent().addClass('focused');

                }
                
            };

            el.addEvent('focus', bfocus );
            el.addEvent('click', bfocus );
        });

        if ( list.length > 0 ) {

            // Focus auf das Erste Element setzen 
            list[0].fireEvent('focus');
            list[0].focus();
   
        }
    
    }

      // Toggler für Checkboxen togglemaster/toggleme
    $$('.togglemaster').each( function(master) {

            var classref = master.getAttribute('name');

            master.addEvent('click', function(e) {

                $$('.'+classref).each( function(el) {

                        (el.checked) ? el.checked = false : el.checked = true;
                    }
                );

            });

        }
    );

    // Aufpoppen des zusätzlichen Feldes
    if ( $('userinfo') ) {

        var xel = $('userinfo');
        
        xel.addEvent('click', function() {

            if ( xel.checked ) {
                
                $$('.changelog').each( function(el) {
                
                    if ( el.get('tag') == 'li') {

                        el.setStyle('display','block'); 
                       
                    } else {
                        
                        el.setStyle('display','inline');
                    }                        
                });                    

            } else {
                    
                $$('.changelog').setStyle('display','none');
            }
         });
 
        if ( xel.checked ) {
            
            $$('.changelog').each( function(el) {
            
                if ( el.get('tag') == 'li') {

                    el.setStyle('display','block'); 
                    
                } else {
                    
                    el.setStyle('display','inline');
                }                        
            });                    

        } else {
                
            $$('.changelog').setStyle('display','none');
        }
    }

    // Relation zwischen Upload und Benachrichtigung
    if ( $('upload_role_level') ) {
        
        var right  = $('upload_role_level');
        var notify = $('upload_notify_role_level');

        right.addEvent('change', function() {

            var current = right.value;
           
            $A(notify.options).each( function(option) {
                
                option.disabled = false;
            });

            var end = false;
    
            // Zielliste ggf disablen
            $A(notify.options).each( function(option) {

                    if ( option.value == current) {

                        end = true;                            
                        option.selected = true;

                    } else {

                        if ( end == false ) {
                            option.disabled = true;
                        }
                    }
                }
            );
        });
    }

    function dochilds(childlist,state) {

        // Untergeordnerte Elemente markieren, demarkieren
        childlist.each( function(nel) {
                
            if ( state == true ) {
                    
                nel.checked  = true;
                nel.disabled = true;    

            } else {
                
                nel.checked  = false;
                nel.disabled = false;
            }
        });
    };

    // Alle LI-Elemente im Auswahlbaum 
    $$('.selecttree li').each( function(el) {
        
        var ta = el.getElement('a');

        // Klick-Event Toggle für Baum auf/zu
        var togglechild = function(e) {
        
            var event = new Event(e);
            event.stop();

            if ( ta.innerHTML == '[-]') {

                el.getElement('ul').getChildren().each( function(child) {
                    child.setStyle('display','none');
                });
            
                ta.set('text','[+]');
            
            } else {

                el.getElement('ul').getChildren().each( function(child) {
                    child.setStyle('display','block');
                });

                ta.set('text','[-]');
            }
        };
        

        // Baum aufbauen und Klick-Events hinzufügen
        if ( el.title < 2 ) {

            el.setStyle('display','block');

            if ( ta ) {

                ta.destroy();
                ta = false;
            }
        
        } else if (  el.title == 2 ) { 
            
            el.setStyle('display','block');
                            
            if ( ta ) {
                ta.set('text','[+]');
            }
            
            if ( ta ) {
                ta.addEvent('click', togglechild );
            }    
                        
        } else {
            
            if ( ta ) {
                ta.addEvent('click', togglechild );
            }                    
        }

        
        var input = el.getElement('input');

        if (  input.checked == true && input.disabled == false ) {
            
            // Kinder ermitteln und als disabled markieren
            var childlist = el.getElements('input');
            childlist.shift();
            dochilds(childlist, input.checked);

            // Geschwister
            var siblings = el.getParent().getChildren();
            siblings.setStyle('display','block');

            var parent = el.getParent().getParent();

            while ( parent && parent.title > 0 ) {
            
                var pat = parent.getElement('a');

                if ( pat && pat.innerHTML == '[+]' ) {
                    pat.innerHTML = '[-]';
                }

                parent.setStyle('display','block');
                parent = parent.getParent().getParent();
            }
        }
        

    });

    
    // Alle-Inputboxen im Auswahlbaum
    var selecttree = $$('.selecttree li input') ;
    selecttree.each( function(el) {

        var toggle = function(e) {
            
            // Event
            var event = new Event(e);
            
            // Eventausweitung stoppen
            // event.stop();

            // Alle Inputs
            var inputs = el.getParent().getElements('input') ;
            
            // Aktuelles
            var input = inputs.shift() ;

            // Nicht weitermachen, wenn Element disabled
            if ( input.disabled ) {
                return;
            }
            
            dochilds(inputs, input.checked );

        };

        // Toggle-Event
        el.addEvent('click', toggle );
        
    });


    var confirmclicks = $$('a[rel=confirmclick]', 'button.confirmclick');

    confirmclicks.each( function(el) {

        var confirmcode = function(e) {

            var confirmtext = el.title;
            var result = confirm(confirmtext);
            return ( result ) ? true : false;
        }
            
        el.addEvent('click', confirmcode) ;            
    });



    var inputfield = $('usersearchajax');
    var target     = $('usersearchresult');
    var collector  = $('usersearchcollector');
    
    if  ( target ) {

        target.addEvent('dblclick', function(e) {

            var event = new Event(e);
            event.stop();

            if ( target.value ) {

                // Aktueller Wert
                var value = target.value;
                
                // Objekt finden
                target.getChildren().each( function(el){
                
                    if ( el.value == value ) {
                        
                        var user_id   = el.value;
                        var user_name = el.innerHTML;

                        // Neues Element in den Sammler
                        var item  = new Element('span');
                        
                        // Hidden-Input für User-ID
                        var input = new Element('input');    
                
                        // entfernen
                        var remove = new Element('a');
                        var br     = new Element('br');

                        remove.set('text','enfernen');
                        

                        input.type  = 'hidden';
                        input.value = user_id
                        input.name  = 'user_id';
                                    
                        item.set('text',"- "+user_name+" ");
                        remove.injectInside(item);
                        input.injectInside( item);
                        br.injectInside( item);                    

                        remove.addEvent('click', function(e) {
                            
                            var event = new Event(e);
                            event.stop();
                            item.destroy();
                        });
                        
                        item.injectInside( collector);
                        el.destroy();
                    }
                });
            }
        });
    }

    if ( inputfield ) {

        inputfield.addEvent('keyup', function() {

            var searchstring = inputfield.value;

            var sl = searchstring.length;
            
            if ( sl > 2 ) {

                // auf Suche setzen
                target.empty();

                new Element('option').set('text','Keine Benutzer gefunden').inject(target);
                    
                var complete = function(result){
                       

                    target.empty();

                    if ( result.length == 0 ) {

                        new Element('option').set('text','Keine Benutzer gefunden').inject(target);

                    } else {

                        result.each( function(user) {

                            var option = new Element('option');
                        
                            option.value = user.id;
                            option.set('text', user.name ); 
                            option.inject(target);

                        });
  
                   }

                   // Dummy für den IE hinzufügen, damit die Einträge sichtbar werden
                   new Element('option', { 'text': ' ', 'value': '' }).inject(target);
                  
                };

                var jsonRequest = new Request.JSON({url: "/dialog/usersearchajax", onComplete: complete, headers: {'X-Request-Type': 'xhr', 'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT' }} );
                jsonRequest.get( {'searchstring': searchstring } ) ;
            }            
        });
    }
});


/* classes */
var ZebraTables = new Class({
    //initialization
    initialize: function(table_class) {

        //add table shading
        $$('table.' + table_class + ' tr').each(function(el,i) {

            //do regular shading
            var _class = i % 2 ? 'even' : 'odd'; el.addClass(_class);

            //do mouseover
            el.addEvent('mouseenter',function() { if(!el.hasClass('highlight')) { el.addClass('mo').removeClass(_class); } });

            //do mouseout
            el.addEvent('mouseleave',function() { if(!el.hasClass('highlight')) { el.removeClass('mo').addClass(_class); } });

            //do click
            el.addEvent('click',function() {
                //click off
                if(el.hasClass('highlight'))
                {
                    el.removeClass('highlight').addClass(_class);
                }
                //click on
                else
                {
                    el.removeClass(_class).removeClass('mo').addClass('highlight');
                }
            });

        });
    }
});

/* do it! */  
window.addEvent('domready', function() {  
     var zTables = new ZebraTables('max');  
}); 


function resetother(target) {

    target.getParent().getParent().getElements('input:checked').each( function(el){
        el.checked = false;
    });

    target.checked = true;
    
    return false;

}

function stopother(target) {


    if (target.checked == true ) {

        target.getParent().getParent().getElements('input[type=radio]').each( function(el){
             el.disabled = true;
        });

    } else {

        target.getParent().getParent().getElements('input[type=radio]').each( function(el){
             el.disabled = false;
        });

    }

    return true;
}


/* do it! */  
window.addEvent('domready', function() {  

    function maximize(el) {

        var element_pos = el.getCoordinates();
        var document_pos = document.getCoordinates();

        var xwidth  = document_pos.width - element_pos.left - 20;
        var xheight = document_pos.height - element_pos.top  - 20;

        el.setStyles({ 'width': xwidth, 'height': xheight });
    }


    $$('.maximize').each( function(el) {
        
        maximize(el);
        window.addEvent('resize', function(e) { maximize(el); });
    });


    var autosearchtimeout;

    function autosearch(inp) {
        
        if ( autosearchtimeout ) {
            $clear(autosearchtimeout);
        }
        var autofunction = doautosearch.pass(inp);
        autosearchtimeout = autofunction.delay(500);
    }

    function doautosearch(inp)  {

        if (!$('autoresult' )) {
            new Element('div', { id: 'autoresult' } ).inject($(document.body));
        } 
        
        
        var pos = $(inp).getCoordinates();

            $('autoresult').setStyles( { 'left': pos.left, 'top': pos.top + pos.height + 2 });


        if ( inp.value == "" ) {
            $('autoresult').hide();
            return;
        } else {
            
            $('autoresult').show();
        }
    
        var search = inp.value;

        var myHTMLRequest = new Request.HTML({url:'/search/autoresult', 'async': false });

        myHTMLRequest.addEvent('success', function(responseTree,responseElements,responseHTML, responseJavascript ) {

            $('autoresult').set('html', responseHTML);
            
            $('autoresult').getElements('.sortresult').addEvent('keyup', refocus);

        });

        var filter = $('searchfilter');

        myHTMLRequest.post( { 'q': search, 'filter': filter.get('value') });

        $('autoresult').addEvent('outerClick', function() { $('autoresult').hide();  } );        
        $('autoresult').addEvent('click', function() { $('autoresult').hide(); });
    }


    function refocus(event) {

        return;
        
        if (event.key == 'up' ) {

            if ($('autoresult')) {

                var current = event.target.href ? event.target : false; 
                
                if( current ) {

                    var last = false;

                    $$('.sortresult').each( function(el) {
                         
                         if (el.href == current.href) {

                            last.focus();
                            last;
                        }
                        
                        last = el;                            
                    });   
                
                } else {

                    $$('.sortresult')[0].focus();
                }
            }


        } else if ( event.key == 'down' ) {
          
            if ($('autoresult')) {

                var current = event.target.href ? event.target : false; 

                if( current ) {

                    var last = false;

                    $$('.sortresult').reverse().each( function(el) {
                   
                         if (el.href == current.href) {

                            last.focus();
                            last;
                        }
                        
                        last = el;           
                    });

                } else {

                    $$('.sortresult')[0].focus();
                }
            }

        } 
    }

    if ( $('searchbox') ) {

    $('searchbox').addEvent('keyup', function(e) {
        
        if (e.key == 'up' || e.key == 'down' ) {
                  
            refocus(e);

        } else {

            autosearch(e.target);
        }


    });

    }

    var myTips = new Tips('.tooltip');

   
}); 

