(function() {
    
    var W = this;
    
    var openExpand = function(parent) {
        var pos = $(parent).position().left;
        box.dom('div.expand', parent).eq(0).css({left: pos + 'px', display: 'none'}).slideDown(300);
    };
    
    var closeExpand = function(parent) {
        box.dom('div.expand', parent).eq(0).css('left', '-10000px').find('div.subExpand').css('left', '-10000px').removeClass('on');
    };
    
    var mouseOverMainItems = function() {
        box.dom(this).addClass('on');
        openExpand(this);
    };
    
    var mouseOutMainItems = function() {
        box.dom(this).removeClass('on');
        closeExpand(this);
    };
    
    var activeLocal;
    
    var openLocal = function(ref, expand) {
        if(activeLocal && activeLocal.length) {
            closeLocal(activeLocal);
            activeLocal = null;
        }
        var pos = ref.position().left - expand.getSize().width;
        activeLocal = expand.addClass('on').css({left: pos + 'px', display: 'none'}).slideDown(300);
    };
    
    var closeLocal = function(expand) {
        expand.css('left', '-10000px').removeClass('on');
    };
    
    var manageLocal = function(e) {
        e.preventDefault();
        var ref = box.dom(this), expand = ref.next();
        if(expand.hasClass('on')) {
            closeLocal(expand);
        } else {
            openLocal(ref, expand);
        }
    };
    
    box.dom(function() {
        var expandRef = box.dom('#mainMenu div.expand');
        var offsetHeight = expandRef.getSize('border-box').height - expandRef.find('ul').getSize('content-box').height;
        
        box.dom('#mainMenu > ul > li')
            .hover(mouseOverMainItems, mouseOutMainItems)
            .each(function() {
                var expand = box.dom('div.expand', this)
                    .prepend('<span class="expandTL"></span><span class="expandTR"></span>')
                    .append('<span class="expandBL"></span><span class="expandBR"></span>');
                
                var maxH = expand.getSize().height - offsetHeight;
                expand.find('> ul').height(maxH);
            });
        
        box.dom('#mainMenu div.subExpand')
            .prepend('<span class="expandTL"></span><span class="expandTR"></span>')
            .append('<span class="expandBL"></span><span class="expandBR"></span>')
            .prev()
                .click(manageLocal);
        
        if(W.ie6) {
            box.dom('#mainMenu div.expand li').addHoverState();
        }
        
        box.dom('#query').clearTextFields();
    });
    
})();
