﻿(function ($) {
    $.fn.openwindow = function (options) {
        settings = {
            id: 0,
            title: '',
            url: '',
            uhtml: '',
            width: 600,
            height: 300,
            top: 0,
            left: 0,
            elemobj: '',
            elemobj_offsetLeft: 0,
            elemobj_offsetTop: 0,
            elemobj_position: 'arrow', //'arrow','bottom'
            ismove: false,
            zindex: 99,
            button: 'close',
            button_function: ''
        };
        var options = $.extend(settings, options);
        var id = options.id
        var zindex = options.zindex + (id * 3)
        var movediv = options.ismove;
        var top = options.top + $(window).scrollTop();
        var left = options.left;
        var height = options.height;
        var width = options.width;
        var elemobj_offsetLeft = options.elemobj_offsetLeft
        var elemobj_offsetTop = options.elemobj_offsetTop
        //var w = document.documentElement ? document.documentElement : document.body;
        var elemobj = document.getElementById(options.elemobj);
        var mouse_x, mouse_y;
        var mouseisdown = false;

        if (elemobj != null && typeof (elemobj) == 'object') {
            var pos = $(elemobj).offset(); //窗口沿目标高度居中
            switch (options.elemobj_position) {
                case 'arrow':
                    if (top == -1) {
                        top = pos.top - ((height - 35) / 2);
                    }
                    else if ((pos.top + 2) < top + 33) {
                        top = pos.top - 35
                    }
                    else if ((pos.top + 2) >= top + height + 33) {
                        top = pos.top - ((height - 35) / 2);
                    }
                    left = pos.left + elemobj.offsetWidth + 20 + elemobj_offsetLeft;
                    movediv = false;
                    break;

                case 'bottom':
                    top = pos.top + $(elemobj).height() + elemobj_offsetTop;
                    left = pos.left + elemobj_offsetLeft;
                    break;

                case 'bottomright':
                    top = pos.top + $(elemobj).height() + elemobj_offsetTop;
                    left = pos.left + $(elemobj).width() + elemobj_offsetLeft - width;
                    break;

            }

        }
        else {
            if (top == -1) {
                if (height != 'auto')
                    top = $(window).scrollTop() + ($(window).height() - height - 35) / 2
                else
                    top = $(window).scrollTop() + 20
            }
            if (left == -1) {
                left = ($(window).width() - width) / 2
            }
        }
        if (top < $(window).scrollTop()) {
            top = top + $(window).scrollTop();
        }

        var divtxt = "<table cellpadding='0' cellspacing='0' border='0' style='border-width:0px;width:" + width + "px;height:33px;font-size:9pt'>";
        divtxt += "<tr><td style='height:33px;width:33px'><img style='height:33px;width:33px' src='/Images/pdhrwin/headleft.gif' alt='' /></td>";
        divtxt += "<td style='background-image:url(/Images/pdhrwin/headback.gif);background-repeat:repeat-x;width:" + (width - 113) + "px' id='pdhropenwindowtitle" + id + "'>" + options.title + "</td>";
        if (options.button == "close")
            divtxt += "<td style='height:33px;width:80px;background-image:url(&#39;/Images/pdhrwin/headright.gif&#39;);background-repeat:no-repeat;text-align:center'><a href='#' onclick='return $.close()' style='color:#1e1e55'>【关 闭】</a></td>";
        else
            divtxt += "<td style='height:33px;width:80px;background-image:url(&#39;/Images/pdhrwin/headright.gif&#39;);background-repeat:no-repeat;text-align:center'><a href='#' onclick='return " + options.button_function + ";' style='color:#1e1e55'>【" + options.button + "】</a></td>";
        divtxt += "</tr></table><div style='border-left:1px solid #1e1e55;border-right:1px solid #1e1e55;border-bottom:1px solid #1e1e55;bckground-color:white'>";
        if (options.url != "")
            divtxt += "<iframe name='pdhrwinIFrame" + id + "' id='pdhrwinIFrame" + id + "' src='" + options.url + "' width='" + (width - 2) + "px' height='" + height + "px' frameborder='0' style='border-width:0px;'></iframe></div>";
        else if (options.uhtml != "") {
            if (height == "auto")
                divtxt += "<div style='width:" + (width - 2) + "px;border-width:0px;'>" + options.uhtml + "</div>";
            else
                divtxt += "<div style='width:" + (width - 2) + "px;height:" + height + "px;border-width:0px;'>" + options.uhtml + "</div>";
        }

        if (height == "auto")
            var windiv = "<div id='pdhropenwinowdiv" + id + "' style='position:absolute;overflow:hidden;width:" + width + "px;top:" + top + "px;left:" + left + "px;zindex:" + zindex + "'>";
        else
            var windiv = "<div id='pdhropenwinowdiv" + id + "' style='position:absolute;overflow:hidden;width:" + width + "px;height:" + (height + 35) + "px;top:" + top + "px;left:" + left + "px;zindex:" + zindex + "'>";
        windiv = windiv + divtxt + "</div>";

        //        var dialogdiv = "<div id='pdhropenwinowdialogdiv" + id + "' style='position:absolute;background-color:#c5c5c5;filter:alpha(opacity=20);-moz-opacity:0.2;opacity:0.2;width:" + w.scrollWidth + "px;height:" + w.scrollHeight + "px;top:0px;left:0px;zindex:" + (zindex - 1) + "'></div>";
        var dialogdiv = "<div id='pdhropenwinowdialogdiv" + id + "' style='position:absolute;background-color:#c5c5c5;filter:alpha(opacity=20);-moz-opacity:0.2;opacity:0.2;width:" + $(document).width() + "px;height:" + $(document).height() + "px;top:0px;left:0px;zindex:" + (zindex - 1) + "'></div>";

        var arrowdiv = "";

        if (elemobj != null && typeof (elemobj) == 'object') {
            var pos = $(elemobj).offset();
            if ((pos.top + 2) > top)
                arrowdiv = "<div id='pdhropenwinowarrowdiv" + id + "' style='background-image:url(&#39;/Images/pdhrwin/openwindow_arrow.gif&#39;);position:absolute;overflow:auto;width:15px;height:20px;top:" + (pos.top + 2) + "px;left:" + (left - 14) + "px;zindex:" + (zindex + 1) + "'></div>";
        }

        $("body").ready(function () {
            $("select").css("display", "none");
            $("body").append(dialogdiv);
            $("body").append(windiv);
            if (arrowdiv != '') {
                $("body").append(arrowdiv);
            }

            if (movediv == true) {
                $("#pdhropenwindowtitle" + id).css("cursor", "move");
                document.getElementById("pdhropenwindowtitle" + id + "").onmousedown = function (e) {
                    if (document.getElementById("pdhropenwindowtitle" + id + "").setCapture)
                        document.getElementById("pdhropenwindowtitle" + id + "").setCapture();
                    else if (window.captureEvents)
                        window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
                    var evt = e || window.event;
                    mouse_x = evt.offsetX ? evt.offsetX : evt.layerX;
                    mouse_y = evt.offsetY ? evt.offsetY : evt.layerY;
                    mouseisdown = true;
                }
                document.onmousemove = function (e) {
                    if (mouseisdown) {
                        var evt = e || window.event;
                        var xPosition = evt.pageX || evt.clientX;
                        var yPosition = evt.pageY || evt.clientY;
                        xPosition = xPosition - mouse_x
                        yPosition = yPosition - mouse_y
                        if (xPosition < 0)
                            xPosition = 0;
                        if (yPosition < 0)
                            yPosition = 0;
                        document.getElementById("pdhropenwinowdiv" + id + "").style.top = $(window).scrollTop() + yPosition + "px";
                        document.getElementById("pdhropenwinowdiv" + id + "").style.left = $(window).scrollLeft() + xPosition + "px";
                        event.returnValue = false;
                    }
                }
                document.onmouseup = function () {
                    if (mouseisdown == false) return;
                    if (document.getElementById("pdhropenwindowtitle" + id + "").releaseCapture)
                        document.getElementById("pdhropenwindowtitle" + id + "").releaseCapture();
                    else if (window.captureEvents)
                        window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
                    mouseisdown = false
                }
            }
        });

        $.extend({ close: function () {
            if (arrowdiv != '') {
                $("#pdhropenwinowarrowdiv" + id).remove();
            }
            $("#pdhropenwinowdiv" + id + "").remove();
            $("#pdhropenwinowdialogdiv" + id).remove();
            $("select").css("display", "");
            return false;
        }
        });
    }
})(jQuery);

function close_openwindowurl(id) {
    if (typeof (id) == 'undefined')
        id = 0;
    if ($("#pdhropenwinowarrowdiv" + id, window.parent.document) != null)
        $("#pdhropenwinowarrowdiv" + id, window.parent.document).remove(); ;
    if ($("#pdhropenwinowdiv" + id, window.parent.document) != null)
        $("#pdhropenwinowdiv" + id, window.parent.document).remove();
    if ($("#pdhropenwinowdialogdiv" + id, window.parent.document) != null)
        $("#pdhropenwinowdialogdiv" + id, window.parent.document).remove();
    $("select").css("display", "");
}

function close_openwindowuhtml(id) {
    if (typeof (id) == 'undefined')
        id = 0;
    if ($("#pdhropenwinowarrowdiv" + id) != null)
        $("#pdhropenwinowarrowdiv" + id).remove(); ;
    if ($("#pdhropenwinowdiv" + id) != null)
        $("#pdhropenwinowdiv" + id).remove();
    if ($("#pdhropenwinowdialogdiv" + id) != null)
        $("#pdhropenwinowdialogdiv" + id).remove();
    $("select").css("display", "");
}
