var serviceTimeout = null;
var hasFieldsFocused = false;

var serviceTimeoutTrigger = function ( enabled ) {
    if (enabled) {
        serviceTimeoutTrigger(false);
        serviceTimeout = setTimeout(
            "if(!hasFieldsFocused){serviceTimeoutTrigger (false);\
            $('div.service-menu-sub').fadeOut(400);}",
            500
        );
    } else if ( serviceTimeout ) {
        clearTimeout(serviceTimeout);
        serviceTimeout = null;
    }
}

$(document).ready( function () {
    $('div.service-menu-sub').hide();
    $('div#serviceMenu a.ajax').click(function () {
        var container = $('#'+this.rel);
        if ( container.css('display') == 'block' ) {
            container.fadeOut(400);
        } else {
	        $('div.service-menu-sub').hide();
            if ( !container.hasClass('loaded') ) {
		        var pos = $(this).offset();
		        pos.top += $(this).height();
		        pos.right = ($(document).width() - pos.left - $(container).width() - 16);
		        delete pos.left;
		        
		        if ( pos.right < 0 ) {
		            pos.right = 0;
		        }
		        
		        var ptr = container;
		        var url = this.href;
		        if ( url.match ( /\?/ ) ) {
		            url += '&';
		        } else {
		            url += '?';
	            }
	            url += 'content_only=1';
		        container
		            .load( 
                        url, 
	                    null, 
	                    (
	                       $(this).hasClass('search') 
	                       ?   function(){} 
	                       :   function(){ menuContentLoaded(ptr); }
                        ) 
                    )
		            .css(pos)
		            .addClass('loaded');
                container.mouseout(function(){
                    serviceTimeoutTrigger(true);
                });
                container.bind('mouseover click blur', function(){
                    serviceTimeoutTrigger(false);
                });
                $(this).bind('mouseover', function () {
                    serviceTimeoutTrigger(false);
                });
            }
            container.fadeIn(400);  
        }
            
        return false;
    });
});

function menuContentLoaded ( container ) {
    $('form input, form textarea', container).focus ( function () {
        hasFieldsFocused = true;
    } );
    $('form input, form textarea', container).blur ( function () {
        hasFieldsFocused = false;
        serviceTimeoutTrigger(true);
    } );
    
	$('form', container).submit(function(){
        try{
	        $('input[@type=submit]', $(this)).replaceWith($('<img src="gfx/loading.gif" />'));
	        var params = {}; 
	        $(this) 
	           .find("input[@checked], input[@type='text'], input[@type='hidden'], input[@type='password'], input[@type='submit'], option[@selected], textarea") 
	           .filter(":enabled") 
	           .each(function() { params[ this.name || this.id || this.parentNode.name || this.parentNode.id ] = this.value; }); 
	        $.post(this.getAttribute('action'), params, function ( response ) {
	           setTimeout(function() {
	               container.html(response);
	               menuContentLoaded(container);
 	           }, 400);
	        } );
	        //TODO afmaken
	        return false;
        } catch(Exception) {
            alert(Exception);
	    }
	    return false;
	});
}