﻿tsoobame.controls.ajaxcontrol = function(url) {
    return new tsoobame.controls.ajaxcontrolObject(url);
};

tsoobame.controls.ajaxcontrolObject = function(url) {
    this.url = url;
};

tsoobame.controls.ajaxcontrolObject.prototype.exec = function(args, context, callback) {
    var ajaxOptions = {};
    ajaxOptions.type = "GET";
    ajaxOptions.url = this.url;
    ajaxOptions.data = args;    
    ajaxOptions.callback = callback;
    ajaxOptions.success = function(data) { if(typeof this.callback == 'function') this.callback.call(context, data); }
    ajaxOptions.error = ajaxOptions.error = this.catchError;
    $.ajax(ajaxOptions);
};

tsoobame.controls.ajaxcontrolObject.prototype.json = function(args, context, callback) {
    var ajaxOptions = {};
    ajaxOptions.type = "GET";
    ajaxOptions.url = this.url;
    ajaxOptions.data = args;
    ajaxOptions.callback = callback;
    ajaxOptions.success = function(data) {
        //Si lo que nos devuelve la llamada es un error lo mostramos,
        //si no, ejecutamos el callback de la funcion
        if ((data) && (data.ErrorMessage)) tsoobame.kookan.page.showError(data.ErrorMessage);
        else
            if (typeof this.callback == 'function')
                this.callback.call(context, data);
    }
    ajaxOptions.error = ajaxOptions.error = this.catchJsonError;
    ajaxOptions.dataType = "json";
    $.ajax(ajaxOptions);
};

//TODO - Configurar Rendercallback
tsoobame.controls.ajaxcontrolObject.prototype.render = function(args, idcontainer, callbackBefore, callbackAfter) {

	if(typeof callbackBefore == 'function') callbackBefore(idcontainer);
    var ajaxOptions = {};
    ajaxOptions.type = "GET";
    ajaxOptions.url = this.url;
    ajaxOptions.data = args;
    ajaxOptions.success = function(data) {$('#' + idcontainer).html(data); if(typeof callbackAfter == 'function') callbackAfter(idcontainer); }
    ajaxOptions.error = this.catchError;
    $.ajax(ajaxOptions);
};

tsoobame.controls.ajaxcontrolObject.prototype.post = function(args, context, callback) {
    var ajaxOptions = {};
    ajaxOptions.type = "POST";
    ajaxOptions.url = this.url;
    ajaxOptions.data = args;
    ajaxOptions.callback = callback;
    ajaxOptions.success = function(data) {
        //Si lo que nos devuelve la llamada es un error lo mostramos,
        //si no, ejecutamos el callback de la funcion
        if ((data) && (data.ErrorMessage)) tsoobame.kookan.page.showError(data.ErrorMessage);
        else
            if (typeof this.callback == 'function')
            this.callback.call(context, data);
    }
    ajaxOptions.error = ajaxOptions.error = this.catchError;    
    $.ajax(ajaxOptions);
};

tsoobame.controls.ajaxcontrolObject.prototype.catchError = function(req, status, error) {
//Aqui manejariamos los errores. Así está centralizado y será más facil
alert(req.responseText);
 
};

tsoobame.controls.ajaxcontrolObject.prototype.catchJsonError = function(req, status, error) {
//Aqui manejariamos los errores. Así está centralizado y será más facil
    alert(req.responseText);
    
}; 