Type.registerNamespace('Devy.UI.Carrito');

Devy.UI.Carrito.AddToCarrito = function () {
    Devy.UI.Carrito.AddToCarrito.initializeBase(this);

    //Miembros
    this._Container = null;
    this._IdProducto = 0;
    this._ModoExpandido = false;

    this._txtCantidad = null;
}

Devy.UI.Carrito.AddToCarrito.prototype = {
    //*********************************************************************
    //Publicos
    set_Container: function (value) { this._Container = value; },
    get_Container: function () { return this._Container; },

    set_IdProducto: function (value) { this._IdProducto = value; },
    get_IdProducto: function () { return this._IdProducto; },

    set_ModoExpandido: function (value) { this._ModoExpandido = value; },
    get_ModoExpandido: function () { return this._ModoExpandido; },

    initialize: function () {
        Devy.UI.Carrito.AddToCarrito.callBaseMethod(this, 'initialize');

        this._ServicePortal = Devy.UI.Carrito.CarritoService;

        this._initInterface();

        this._atachEvents();
    },

    dispose: function () {
        this._detachEvents();

        Devy.UI.Carrito.AddToCarrito.callBaseMethod(this, 'dispose');
    },

    _atachEvents: function () {
        var contexto = this;


    },

    _detachEvents: function () {

    },

    _initInterface: function () {
        var contexto = this;

        var containerJQ = $(this._Container);
        containerJQ.empty();

        var CantidadContainer = $('<p class="CantidadContainer"></p>');
        containerJQ.append(CantidadContainer);

        CantidadContainer.append('<label>Cantidad</label>');
        this._txtCantidad = $('<input type="text" size="4" style="text-align:right" />')[0];
        this._txtCantidad.value = 1;
        Devy.Util.SetNumericTextBox(this._txtCantidad);
        CantidadContainer.append(this._txtCantidad);


        var CommandContainer = $('<p class="CommandContainer"></p>');
        containerJQ.append(CommandContainer);

        var addCmd = $('<a href="#" title = "Agregar a carrito" class="Command AddCmd"><span> Agregar al carrito </span></a>')[0];
        $addHandler(addCmd, "click", function (evt) {
            evt.preventDefault();

            contexto._addToCarrito();
        });
        CommandContainer.append(addCmd);
    },

    _addToCarrito: function () {
        var cantidad = Devy.Util.GetFormNumericFieldValue(this._txtCantidad);
        if (cantidad <= 0) {
            Devy.Notifications.ShowError("Error", "Debe ingresar una cantidad mayor que cero");
            return;
        }

        var carritoInstance = Devy.UI.Carrito.CarritoView.GetFirstInstance();
        if (carritoInstance) {
            carritoInstance.AddItem(this._IdProducto, cantidad, null)
        }
    },



    //WebServices
    _BeginGetObject: function () {
        //Invocamos el servicio
        var ServiceData = new Array();
        ServiceData.Requester = this;

        this._ServicePortal.GetObject(this._HtmlViewTemplateName,
            this._onCarritoServerSuccess, this._onCarritoServerError, ServiceData);

    },


    _onCarritoServerSuccess: function (result, context, methodName) {

    },
    _onCarritoServerError: function (error, context, methodName) {
        //No hay nada por hacer
        Sys.Debug.trace("Carrito Error: " + error.get_message());
    }
}


Devy.UI.Carrito.AddToCarrito.registerClass('Devy.UI.Carrito.AddToCarrito', Sys.Component);

Devy.UI.Carrito.AddToCarrito.CreateObject = function (ContainerId, IdProducto, ModoExpandido) {
    var ctrl = $create(Devy.UI.Carrito.AddToCarrito,
        {
            "Container": $get(ContainerId),
            "IdProducto": IdProducto,
            "ModoExpandido": ModoExpandido
        },
        {},
        {});

    return ctrl;
}

Devy.UI.Carrito.AddToCarrito.CreateAllObjectsInContainer = function (ContainerDOM) {
    var addToCarritoContainers = null;
    if (ContainerDOM)
        addToCarritoContainers = $('.DevyUICarritoAddToCarritoCtrlContainer', ContainerDOM);
    else
        addToCarritoContainers = $('.DevyUICarritoAddToCarritoCtrlContainer');

    for (var i = 0; i < addToCarritoContainers.length; i++) {
        var addToCarrito = addToCarritoContainers[i];

        var expandido = $(addToCarrito).hasClass('Big');

        //"AddToCarrito_" + IdProducto + "_R" + Util.Misc.RandomGen.Next(100000);
        var idProducto = addToCarrito.id.substring(13);

        //Buscamos '_R' que nos marca el final del id del articulo, cortamos y convertimos en numero
        var finID = idProducto.indexOf('_R');
        idProducto = idProducto.substring(0, finID);

        idProducto = parseInt(idProducto);

        $create(Devy.UI.Carrito.AddToCarrito,
        {
            "Container": addToCarrito,
            "IdProducto": idProducto,
            "ModoExpandido": expandido
        },
        {},
        {});
    }
}
