/*
 * 特别声明：本技术材料受《中华人民共和国著作权法》、《计算机软件保护条例》等法律、法规、行政
 * 规章以及有关国际条约的保护，赞同科技享有知识产权、保留一切权利并视其为技术秘密。未经本公司书
 * 面许可，任何人不得擅自（包括但不限于：以非法的方式复制、传播、展示、镜像、上载、下载）使用，
 * 不得向第三方泄露、透露、披露。否则，本公司将依法追究侵权者的法律责任。特此声明！
 *
 * Special Declaration: These technical material reserved as the technical secrets by AGREE
 * TECHNOLOGY have been protected by the "Copyright Law" "ordinances on Protection of Computer
 * Software" and other relevant administrative regulations and international treaties. Without
 * the written permission of the Company, no person may use (including but not limited to the
 * illegal copy, distribute, display, image, upload, and download) and disclose the above
 * technical documents to any third party. Otherwise, any infringer shall afford the legal
 * liability to the company.
 */
/**
 * Created by huangdeyun on 2015/3/3.
 */
define(["adoreapp/widget/Composite"
    , "adoreapp/widget/TabItem"
    , "adoreapp/util/TabUtil"], function (Composite, TabItem, TabUtil) {
    return Composite.extend(function (base) {
        return {
            _initWidget: function (attrs) {
                this.children = new Array();
                var template = attrs.template;
                this.jqueryNode = $(template).attr("id", this.id);
                var tmpTab = this.jqueryNode.find(".adore_tabs");
                this._tabs = tmpTab.attr("id", this.id + "_tabs");
                this.attachNode = this.jqueryNode;
                var tabFolderId = this.id + "_tabs";
                this._tabs.find("li.tab_left_move").on("click", function (e) {
                    TabUtil.handleTabLeftMoveClick(tabFolderId);
                });
                this._tabs.find("li.tab_right_move").on("click", function (e) {
                    TabUtil.handleTabRightMoveClick(tabFolderId);
                });
                this.originalWidth = window.innerWidth;
                var own = this;
                $(window).bind("resize." + this.id, function (e) {
                    if ($("#" + own.id).length === 0) {//没有正确销毁时（如父亲直接销毁）的逻辑
                        $(window).unbind("resize." + own.id);
                    }
                    if (window.innerWidth !== own.originalWidth) {
                        own.originalWidth = window.innerWidth;
                        // refresh
                        var tabs = $("#" + tabFolderId);
                        if (tabs.find("li.adore_tab").length !== 0) {
                            //tabs.tabs();
                            TabUtil.tabsSwitch(tabs);
                            TabUtil.refreshTabs(tabs);
                        }
                    }
                });
            },
            addChild: function (child) {
                this.children.push(child);
            },
            _layout: function () {
                base._layout.call(this);
                if (!document.getElementById(this.id)) {
                    this.jqueryNode.appendTo(this.father.attachNode);
                }
            },
            _dispose: function () {
                $(window).unbind("resize." + this.id);
                base._dispose.call(this);
            }
        };
    });
})