define(['jquery', 'underscore', 'backbone', 'text!controls/window/windowTemplate.html', 'jqx'],
    function($, _, Backbone, windowTemplate){

        var window = Backbone.View.extend({

            data: {
                title: "",
                width: "100%",
                height: "650px",
                margin_top: "50px",
                id: "",
                showCloseButton: true,
                resizable: true,
                content: "",                
                initContentFn: null                
            },

            initialize : function (options) {                
                this.data.title = options.title;
                if(options.width)
                    this.data.width = options.width;
                if(options.height)
                    this.data.height = options.height;
                if(options.showCloseButton !== undefined)
                    this.data.showCloseButton = options.showCloseButton;
                if(options.initContentFn !== undefined)
                    this.data.initContentFn = options.initContentFn;
                if(options.content !== undefined)
                    this.data.content = options.content;
                if(options.resizable !== undefined)
                    this.data.resizable = options.resizable;
                
                this.data.id = this.id;
                //this.el is the root element of Backbone.View. By default, it is a div.
                //$el is cached jQuery object for the view's element.
                //append the compiled template into view div container
                this.$el.append(this.template( { "data": this.data } ));
            },

            //initialize template
            template:_.template(windowTemplate),
            
            SetContent: function(content){
                this.$el.jqxWindow('setContent', content);
            },

            //render the content into div of view
            render: function(){
                var elem = this.$el;                
                this.$el.jqxWindow({ 
                    title: this.data.title , 
                    width: this.data.width, 
                    height: this.data.height,
                    showCloseButton: this.data.showCloseButton,
                    content: this.data.content,
                    initContent: this.data.initContentFn
                });
                this.$el.on('close', function (event) { elem.remove(); });
                //return to enable chained calls
                return this;
            }
        });
        return window;
    });