define(['jquery', 'underscore', 'backbone', 'text!modules/addingr/addingrViewTemplate.html', 'modules/base/baseView',
    'jqx'],
        function ($, _, Backbone, addingrViewTemplate, BaseView) {

            var AddIngrView = BaseView.extend({
                dataAdapter: undefined,
                //initialize template
                template: _.template(addingrViewTemplate),
                modifyItem: null,
                ingrIndex: null,
                initialize: function () {
                    AddIngrView.__super__.initialize.call(this);
                    //this.header.title = "pippo";
                },
                openDlg: function (ingrIndex, item)
                {
                    this.ingrIndex = typeof ingrIndex !== 'undefined' ? ingrIndex : null;
                    this.modifyItem = typeof item !== 'undefined' ? item : {
                        "id_tipo_ingredienti": -1,
                        "nome_ingrediente": '',
                        "quantita": '',
                        "id_tipo_quantita": -1,
                        "unita": null,
                        "note": ''
                    };
                    $("#addIngrWindow").jqxWindow('open');
                    this._updateUI(this.modifyItem);
                },
                validate: function () {
                    if ($("#ingrediente").val() === "22" && $("#nota").val() !== "")
                        return true;
                    if ($("#ingrediente").val() === "152" && $("#nota").val() !== "")
                        return true;
                    if ($("#ingrediente").val() > 0 &&
                            ($("#ingrediente").val() !== "22" || $("#ingrediente").val() !== "152") &&
                            $("#qty").val() != "" &&
                            $("#unitMis").val() > 0)
                        return true;
                    return false;
                },
                addBtnFn: undefined,
                _updateUI: function (item) {
                    if(item.id_tipo_ingredienti == "22"){
                        $("#isHeading").jqxCheckBox({ checked:false });
                        $("#isNote").jqxCheckBox({ checked:true });
                        $("#ingrediente").jqxDropDownList({disabled: true});
                    }else if (item.id_tipo_ingredienti == "152"){
                        $("#isNote").jqxCheckBox({ checked:false });
                        $("#isHeading").jqxCheckBox({ checked:true });
                        $("#ingrediente").jqxDropDownList({disabled: true});
                    }else{
                        var itemIngr = $("#ingrediente").jqxDropDownList('getItemByValue', parseInt(item.id_tipo_ingredienti));
                        if (itemIngr !== undefined) {
                            $("#ingrediente").jqxDropDownList({selectedIndex: itemIngr.index});
                        }else{
                            $("#ingrediente").jqxDropDownList({selectedIndex: -1});
                        }
                    }

                    var itemUnMis = $("#unitMis").jqxDropDownList('getItemByValue', parseInt(item.id_tipo_quantita));
                    if (itemUnMis !== undefined) {
                        $("#unitMis").jqxDropDownList({selectedIndex: itemUnMis.index});
                    } else {
                        $("#unitMis").jqxDropDownList({selectedIndex: -1});
                    }
                    $("#qty").jqxInput('val', this.modifyItem.quantita);
                    $("#nota").val(this.modifyItem.note);
                },
                //render the content into div of view
                render: function () {
                    //this.header.title = "pippo";
                    AddIngrView.__super__.render.call(this);
                    var self = this;

                    this.$el.append(this.template());

                    this.$el.find("#addIngrWindow").jqxWindow({
                        width: 350,
                        height: 300,
                        resizable: false,
                        isModal: true,
                        autoOpen: false,
                        cancelButton: this.$el.find("#cancelIngrBtn"),
                        modalOpacity: 0.01,
                        initContent: function () {
                            var source = {
                                datatype: "jsonp",
                                datafields: [
                                    {name: 'tipo_ingredienti_id'},
                                    {name: 'name'}
                                ],
                                url: myManifest.Settings.DefaultURL + "/backend/typeingredients",
                                data: {
                                }
                            };
                            var dataAdapter = new $.jqx.dataAdapter(source);
                            $("#ingrediente").jqxDropDownList(
                                    {
                                        width: 175,
                                        height: 25,
                                        source: dataAdapter,
                                        displayMember: "name",
                                        valueMember: "tipo_ingredienti_id",
                                        renderer: function (index, label, value){return unescape(label);},
                                        selectionRenderer: function () {
                                            var item = $('#ingrediente').jqxDropDownList('getSelectedItem');
                                            if (item) {
                                                return unescape(item.label);
                                            }
                                            return "Please Choose:";
                                        }
                                    });

                            $("#isNote").jqxCheckBox(
                            {
                                width: 75,
                                height: 16,
                                checked:false
                            });

                            $("#isNote").on('change', function (event) {
                                var checked = event.args.checked;
                                if(checked)
                                {
                                    $("#isHeading").jqxCheckBox({ checked:false });
                                    var item = $("#ingrediente").jqxDropDownList('getItemByValue', 22);
                                    $("#ingrediente").jqxDropDownList({selectedIndex: item.index});
                                    $("#ingrediente").jqxDropDownList({disabled: true});
                                }
                                else{
                                    $("#ingrediente").jqxDropDownList({selectedIndex: -1});
                                    $("#ingrediente").jqxDropDownList({disabled: false});
                                }
                            });

                            $("#isHeading").jqxCheckBox(
                            {
                                width: 75,
                                height: 16,
                                checked:false
                            });

                            $("#isHeading").on('change', function (event) {
                                var checked = event.args.checked;
                                if(checked)
                                {
                                    $("#isNote").jqxCheckBox({ checked:false });
                                    var item = $("#ingrediente").jqxDropDownList('getItemByValue', 152);
                                    $("#ingrediente").jqxDropDownList({selectedIndex: item.index});
                                    $("#ingrediente").jqxDropDownList({disabled: true});
                                }
                                else{
                                    $("#ingrediente").jqxDropDownList({selectedIndex: -1});
                                    $("#ingrediente").jqxDropDownList({disabled: false});
                                }
                            });

                            $("#ingrediente").on('bindingComplete', function (event) {
                                var item = $("#ingrediente").jqxDropDownList('getItemByValue', parseInt(self.modifyItem.id_tipo_ingredienti));
                                if(item)
                                    $("#ingrediente").jqxDropDownList({selectedIndex: item.index});
                            });
                            var sourceunitMis ={
                                datatype: "jsonp",
                                datafields: [
                                    {name: 'tipo_quantita_id'},
                                    {name: 'name'}
                                ],
                                url: myManifest.Settings.DefaultURL + "/backend/typeqtys",
                                data: {
                                }
                            };
                            var dataAdapterunitMis = new $.jqx.dataAdapter(sourceunitMis);
                            $("#unitMis").jqxDropDownList(
                            {
                                width: 200,
                                height: 25,
                                source: dataAdapterunitMis,
                                displayMember: "name",
                                valueMember: "tipo_quantita_id", 
                                disabled: true
                            });
                            $("#unitMis").on('bindingComplete', function (event) {
                                var item = $("#unitMis").jqxDropDownList('getItemByValue', parseInt(self.modifyItem.id_tipo_quantita));
                                if(item)
                                    $("#unitMis").jqxDropDownList({selectedIndex: item.index});
                            });
                            $("#ingrediente").on('select', {scope: self}, function (event) {
                                if (event.args) {
                                    var item = event.args.item;
                                    if (item) {
                                        if (item.value === "22" || item.value === "152")
                                        {
                                            $("#qty").jqxInput({disabled: true});
                                            $("#qty").parents("tr").hide();
                                            $("#unitMis").jqxDropDownList({disabled: true});
                                            $("#unitMis").parents("tr").hide()
                                        }
                                        else
                                        {
                                            $("#qty").parents("tr").show();
                                            $("#qty").jqxInput({disabled: false});
                                            $("#unitMis").parents("tr").show();
                                            $("#unitMis").jqxDropDownList({disabled: false});
                                        }
                                    }
                                    else
                                    {
                                        $("#qty").parents("tr").show();
                                        $("#qty").jqxInput({disabled: false});
                                        $("#unitMis").parents("tr").show();
                                        $("#unitMis").jqxDropDownList({disabled: false});
                                    }
                                }
                            });
                            $("#qty").jqxInput({placeHolder: "Quantità:", width: '250px', height: 25, minLength: 1, disabled: true});
                            $("#nota").jqxInput({placeHolder: "Nota:", width: '250px', height: 25});
                            $("#addTypeIngr").jqxButton({width: '100%'});
                            $("#addTypeIngr").on('click', function () {
                                
                            });

                            $("#addIngrBtn").jqxButton({width: '48%', height: 40});
                            $("#cancelIngrBtn").jqxButton({width: '48%', height: 40});
                            $("#addIngrBtn").on('click', function () {
                                if (self.validate())
                                {
                                    var newItem = {
                                        "id_tipo_ingredienti": $("#ingrediente").jqxDropDownList('getSelectedItem').value,
                                        "nome_ingrediente": $("#ingrediente").jqxDropDownList('getSelectedItem').label,
                                        "quantita": $("#qty").jqxInput('val'),
                                        "id_tipo_quantita": null,
                                        "unita": null,
                                        "note": $("#nota").val()
                                    };

                                    if ($("#unitMis").jqxDropDownList('getSelectedItem') !== null)
                                        newItem.unita = $("#unitMis").jqxDropDownList('getSelectedItem').label;

                                    if ($("#unitMis").jqxDropDownList('getSelectedItem') !== null)
                                        newItem.id_tipo_quantita = $("#unitMis").jqxDropDownList('getSelectedItem').value;

                                    if (self.addBtnFn)
                                        self.addBtnFn(self.ingrIndex, newItem);

                                    $('#addIngrWindow').jqxWindow('close');
                                }
                                else
                                    alert("Inserire correttamente i dati");
                            });

                            self._updateUI(self.modifyItem);
                        }
                    });
                    return this;
                }
            });
            return AddIngrView;
        });