
KernelClass = function()
{
 	var self     = this;
 	var sBaseUrl = null;
 	var sUplUrl  = null;
 	
 	this.init = function( sBaseUrl, sUplUrl )
    {
        this.sBaseUrl = sBaseUrl;
        this.sUplUrl  = sUplUrl;
    }
    
    this.getBaseUrl = function()
    {
    	return this.sBaseUrl;
    }
    
    this.getUplUrl = function()
    {
    	return this.sUplUrl;
    }
    
    this.sendData = function( controller, action, postObj, callback, recursive )
    {             
    	var recursive = (recursive) ? recursive : true;
    	var url = this.sBaseUrl + controller + '/' + action + '/';
    	var counter = 3;
    	$.ajax( {
    	        	url: url,
    	        	type: 'POST',
    	        	data: postObj,
    	        	timeout: 5000,
    	        	complete: callback,
    	        	error: function( data, status )
    	        	{ 
    	        		if( counter-- && recursive )
    	        		{
    	        			Kernel.sendData( controller, action, postObj, callback, false );	
    	        		}
    	        	}
    			}
    	);
    	
    	//$.post( url, postObj, function( data, status ){ alert(status); callback(data); } );
    	
    }
    
    this.startLocalPreload = function( id )
    {         
    	var offset = $('#'+id).offset(); 
    	if( !offset ) return false; 
    	$('#localPreloader').css( 'left', offset.left + 'px' );
        $('#localPreloader').css( 'top', offset.top + 'px' );
        $('#localPreloader').css( 'width', $('#'+id).outerWidth() + 'px' );
        $('#localPreloader').css( 'height', $('#'+id).outerHeight() + 'px' );
        $('#localPreloader').css( 'display', 'block' );
    }
    
    this.stopLocalPreload = function( )
    {
    	$('#localPreloader').css( 'display', 'none' );
    }
    
    this.lockElement = function( id )
    {
    	var offset = $('#'+id).offset();
    	if( !offset ) return false;
    	$('#localLockLayout').css( 'left', offset.left + 'px' );
        $('#localLockLayout').css( 'top', offset.top + 'px' );
        $('#localLockLayout').css( 'width', $('#'+id).outerWidth() + 'px' );
        $('#localLockLayout').css( 'height', $('#'+id).outerHeight() + 'px' );
        $('#localLockLayout').css( 'display', 'block' );
    }
    
    this.unlockElement = function()
    {
    	$('#localLockLayout').css( 'display', 'none' );
    }
    
}

var Kernel = new KernelClass();