function ksAssignJsActions(controlClass, Actions) {
    $('.ks_ajax_control.' + controlClass).each(function(){
        var controlPath = $(this).attr('id');
        for (var action in Actions) {
            $(this).find('a.jsAction.' + action).each(function() {
                this.href = 'javascript:' + Actions[action] + '(\'' + controlPath + '\',\'' + this.id + '\')';
            });
        }
    });
}

function ksAjaxControl(controlPath) {
    
    var control;
    if (controlPath == '')
        control = $("body");
    else
        control = $('.ks_ajax_control#' + controlPath);

    control.getInputValue = function(inputId) {
        return this.find('#' + inputId).val();
    }

    control.getControlPath = function() {
        return this.attr('id');
    }

    control.prepareAjaxParams = function(type, createInstance, data) {
        var ks_data = {
            ksajax_type: type,
            ksajax_createInstance: createInstance,
            ksajax_packageName: this.getInputValue('packageName'),
            ksajax_namePart: this.getInputValue('namePart'),
            ksajax_controlPath: this.getControlPath()
        };
        return completedata = $.extend(data, ks_data);
    }

    control.invokeAjax = function(type, createInstance, data, submited) {
        var urlAjax = location.href;
        var respuesta = "";
        /*
        var ks_data = {
            ksajax_type: type,
            ksajax_createInstance: createInstance,
            ksajax_packageName: this.getInputValue('packageName'),
            ksajax_namePart: this.getInputValue('namePart'),
            ksajax_controlPath: this.getControlPath()
        };*/

        //var completedata = $.extend(data, ks_data);
        var completedata = control.prepareAjaxParams(type, createInstance, data);
        $.ajax({
        type: "POST",
            url: urlAjax,
            data: completedata,
            dataType: type,
            success: function (result) {
                respuesta = result;
            },
            complete: function(XMLHttpRequest, textStatus) {
                if (textStatus == 'success')
                    submited(respuesta, true);
                else
                    submited(XMLHttpRequest, false);
            }
        });
    }

    control.invokeJson = function(createInstance, data, submited) {
        control.invokeAjax('json', createInstance, data, submited);
    }

    control.ajaxLoad = function(destination, createInstance, data, submited) {
        control.invokeAjax(
            'html',
            createInstance,
            data,
            function(respuesta, success) {
                if (success) {
                    //alert('//TODO: ACA TIENE QUE HACER EL LOAD.');
                    destination.html(respuesta);
                }
                submited(respuesta, success);
            }
        );
    }

    return control;
}
