﻿;jQuery.fn.extend({
    showWindow: function(opt) {
        var defaultOpt = {
            title: '标题',
            url: '#',
            width: 400,
            height: 300,
            onClosed: function() { }
        };
        jQuery.extend(defaultOpt, opt);
        var title = defaultOpt.title;
        var url = defaultOpt.url;
        var width = defaultOpt.width;
        var height = defaultOpt.height;
        //计算top和left
        var windowFrame = this;
        this.height(height).width(width).addClass('windowFrame');
        var wnd = jQuery(window);
        //var doc = jQuery(document);
        var doc = jQuery(document.documentElement);
        var pTop = doc.scrollTop(), pLeft = doc.scrollLeft(), minTop = pTop, minLeft = pLeft;
        pTop += (wnd.height() - height) / 2;
        pLeft += (wnd.width() - width) / 2;
        pTop = Math.max(pTop, minTop);
        pLeft = Math.max(pLeft, minLeft);

        //创建windowHead
        var windowHead = jQuery("<div id='windowHead' class='windowHeader'>");
//        temp = "<div style='float:left;width:100px;' id='tdTitle'>" + title + "</div><div style='cursor:hand' id='btnChangeWinState'></div><div style='cursor:hand' id='btnCloseWin'></div>"
//        var windowHeadTdTitle = jQuery(temp);
        
        //var windowHeadTable = jQuery("<table width='100%' cellpadding='0' cellspacing='0' border='0' height=22>");
        //var windowHeadTr = jQuery("<tr valign=bottom unselectable=on>");
        var windowHeadTdTitle = jQuery("<div style='float:left;text-align:left;width:150px;text-indent:1em;' id='tdTitle'>" + title + "</div>");
        //windowHeadTdTitle.html(title);
        var windowHeadTdChangeState = jQuery("<div style='cursor:hand;float:right;text-align:center;width:30px;' id='btnChangeWinState'>最大</div>");
        //windowHeadTdChangeState.html('最大');
        var windowHeadTdClose = jQuery("<div style='cursor:hand;float:right;text-align:center;width:30px;' id='btnCloseWin'>关闭</div>");
        //windowHeadTdClose.html('关闭');
        windowHead.append(windowHeadTdTitle);
        windowHead.append(windowHeadTdClose);
        windowHead.append(windowHeadTdChangeState);
        
//        windowHeadTable.append(windowHeadTr);
//        windowHead.append(windowHeadTable);
        this.append(windowHead);

        //创建windowContent
        var windowContent = jQuery("<div id='windowContent' class='windowContent' style='width: 100%; overflow-y: hidden'>");
        var contentFrame = jQuery("<iframe src='" + url + "' width='100%' height='100%' id='contentFrame' frameborder='0'></iframe>");
        windowContent.append(contentFrame);
        windowContent.height(this.height() - 22);
        this.append(windowContent);

        //设置宽度、高度、以及class
        this.css({ position: 'absolute', top: pTop, left: pLeft });

        var oldLeft = pLeft, oldTop = pTop, oldWidth = width, oldHeight = height;
        var winState = 0;

        //关联相关事件
        this.draggable();
        /*
        this.resizable({
        handles: "all",
        start: function(e, ui) { windowContent.hide(); },
        stop: function(e, ui) {
        windowContent.height(windowFrame.height() - windowHeadTable.height());
        windowContent.show();
        }
        });*/
        //设置拖动Head移动窗体 
        windowHeadTdTitle.dblclick(changeWindowState);
        windowHeadTdTitle.mousedown(function() { windowContent.hide(); });
        windowHeadTdTitle.mouseup(function() { windowContent.show(); });

        //Windows改变大小的情况下,假如窗体处于最大化，则也因改变大小

        wnd.resize(function() {
        if (winState == 1) {
                windowFrame.css({ top: doc.scrollTop(), left: doc.scrollLeft() }).width(wnd.width() - 5).height(wnd.height() - 5);
                windowContent.height(windowFrame.height() - windowHead.height());
            }
        });

        //关闭窗体
        windowHeadTdClose.click(function() {
            windowFrame.remove();
            defaultOpt.onClosed();
        });
        //改变窗体状态
        windowHeadTdChangeState.click(changeWindowState);

        function changeWindowState() {
            windowContent.hide();
            if (winState == 0) {
                var offset = windowFrame.offset();
                oldLeft = offset.left;
                oldTop = offset.top;
                oldWidth = windowFrame.width();
                oldHeight = windowFrame.height();
                windowFrame.css({ top: doc.scrollTop(), left: doc.scrollLeft() }).width(wnd.width() - 3).height(wnd.height() - 3);
                windowHeadTdChangeState.html('还原');
                //windowFrame.resizable("disable").draggable("disable");
                windowFrame.draggable("disable");
                winState = 1;
            } else {
                windowFrame.css({ top: oldTop, left: oldLeft }).width(oldWidth).height(oldHeight);
                windowHeadTdChangeState.html('最大');
                //windowFrame.resizable("enable").draggable("enable");
                windowFrame.draggable("enable");
                winState = 0;
            }
            windowContent.height(windowFrame.height() - windowHead.height());
            windowContent.show();
        }
    }
});
