$.fn.PopupDiv = function(mods, options){
 
    var PopupDivSettings = {
        modal: false,
        top: null,
        left: null,
        title: "提示信息",
        closeTitle: false,
        myclass: "myWrap",
        maxHeight: null,
        maxWidth: null,
        minHeight: 100,
        minWidth: 150,
        center: true,
        close_btn: true,
        autoOpen: true,
        PopupDivId: "myWrap",
        ajaxUrl: null,
        close_fn_before: function(){
        },
        close_fn_later: function(){
        },
        start_fn_before: function(){
        },
        start_fn_later: function(){
        },
        open_fn_before: function(){
        },
        open_fn_later: function(){
        },
        remove_fn_before: function(){
        },
        remove_fn_later: function(){
        }
    };
    if (options == null) {
        options = mods;
    }
    var container = this;
    bool = container.data("bool");
    if (bool == null) {
        bool = true;
    }
    if (options) {
        jQuery.extend(PopupDivSettings, options);
    }
   
    return this.each(function(){
        switch (mods) {
            case 'open':
                open();
                break;
            case 'close':
                close();
                break;
            case "remove":
                remove();
                break;
            default:
                ckStart();
        }
    })
    function open(){
        container.data("val").open_fn_before();
        container.show()
        if (container.data("val").modal) {
            addOutDiv();
        }
        $("#" + container.data("val").PopupDivId).fadeIn(function(){
            $("#" + container.data("val").PopupDivId + " .myTi_l").width($("#" + container.data("val").PopupDivId + " .myTi").width() - $("#" + container.data("val").PopupDivId + " .myTi_r").width());
           container.data("val").open_fn_later();
		   });
        
    }
    function close(){
        container.data("val").close_fn_before();
        reOutDiv();
        $("#" + container.data("val").PopupDivId).hide();
        container.hide();
        container.data("bool", false);
        container.data("val").close_fn_later();
    }
    function remove(){
        container.data("val").remove_fn_before();
        reOutDiv();
        $("#" + container.data("val").PopupDivId).hide();
        reWrap();
        container.hide();
        container.data("val").remove_fn_later();
        container.removeData("bool").removeData("val");
    }
    function ckStart(){
        if (bool) {
            container.data("bool", false);
            container.data("val", PopupDivSettings);
            if (container.data("val").ajaxUrl !== null) {
                $.ajax({
                    type: "GET",
                    url: container.data("val").ajaxUrl,
                    success: function(mydata){
                        container.html(mydata); 
                        start();
                    }
                })
            }
            else {
                start();
            }            
        }
        else {
            open();
        }
    }
    
    function start(){
        container.data("val").start_fn_before();
        addWrap();
        if (container.data("val").center) {
            container.css("margin", "0px auto");
        };
        
        $("#" + container.data("val").PopupDivId).css("width", container.width());
        $("#" + container.data("val").PopupDivId).css("maxHeight", container.data("val").maxHeight);
        $("#" + container.data("val").PopupDivId).css("maxWidth", container.data("val").maxWidth);
        $("#" + container.data("val").PopupDivId).css("minHeight", container.data("val").minHeight);
        $("#" + container.data("val").PopupDivId).css("minWidth", container.data("val").minWidth);
        
        if (container.data("val").minWidth > container.width()) {
            $("#" + container.data("val").PopupDivId).width(container.data("val").minWidth);
		}
        if (container.data("val").minHeight > (container.height() + $("#" + container.data("val").PopupDivId + " .myTi").height())) {
        
            $("#" + container.data("val").PopupDivId).height(container.data("val").minHeight + $("#" + container.data("val").PopupDivId + " .myTi").height());
            
        }
        if (container.width() < $("#" + container.data("val").PopupDivId).width()) {
            
            container.data("val").left == null ? $("#" + container.data("val").PopupDivId).css("left", document.documentElement.scrollLeft + document.documentElement.clientWidth / 2 - $("#" + container.data("val").PopupDivId).width() / 2) : $("#" + container.data("val").PopupDivId).css("left", container.data("val").left);
        }
        else {
            container.data("val").left == null ? $("#" + container.data("val").PopupDivId).css("left", document.documentElement.scrollLeft + document.documentElement.clientWidth / 2 - container.width() / 2) : $("#" + container.data("val").PopupDivId).css("left", container.data("val").left);
        }
        if (container.height() < $("#" + container.data("val").PopupDivId).height() - $("#" + container.data("val").PopupDivId + " .myTi").height()) {
        
            container.data("val").top == null ? $("#" + container.data("val").PopupDivId).css("top", document.documentElement.scrollTop + document.documentElement.clientHeight / 2 - $("#" + container.data("val").PopupDivId).height() / 2) : $("#" + container.data("val").PopupDivId).css("top", container.data("val").top);
        }
        else {
            container.data("val").top == null ? $("#" + container.data("val").PopupDivId).css("top", document.documentElement.scrollTop + document.documentElement.clientHeight / 2 - container.height() / 2) : $("#" + container.data("val").PopupDivId).css("top", container.data("val").top);
        }
        
        $("#" + container.data("val").PopupDivId).addClass(container.data("val").myclass);
        
        container.data("val").start_fn_later();
        if (container.data("val").autoOpen) {
            open();
        }
    }
    
    function addWrap(){
        var myWrap = document.createElement("div");
        myWrap.style.position = "absolute";
        myWrap.id = container.data("val").PopupDivId;
        myWrap.style.zIndex = 15000;
        
        var myTi = document.createElement("div");
        myTi.className = "myTi";
        var myTi_l = document.createElement("div");
        myTi_l.className = "myTi_l";
        var myTi_r = document.createElement("div");
        myTi_r.className = "myTi_r";
       
        container.wrap(myWrap);
                              
        if (!container.data("val").closeTitle) {
            $("#" + container.data("val").PopupDivId).prepend(myTi);
            myTi.appendChild(myTi_l);
            $("#" + container.data("val").PopupDivId + " .myTi_l").text(container.data("val").title);
            if (container.data("val").close_btn) {
                myTi.appendChild(myTi_r);
                $("#" + container.data("val").PopupDivId + " .myTi_r").attr("class", "myTi_r close_out");
                $("#" + container.data("val").PopupDivId + " .myTi_r").click(function(){
                    close();
                });
                $("#" + container.data("val").PopupDivId + " .myTi_r").hover(function(){
                    $("#" + container.data("val").PopupDivId + " .myTi_r").attr("class", "myTi_r close_on");
                }, function(){
                    $("#" + container.data("val").PopupDivId + " .myTi_r").attr("class", "myTi_r close_out");
                })
                
            }
            $("#" + container.data("val").PopupDivId + " .myTi_l").get(0).onmousedown = function(e){
				e = arguments[0] || window.event;
                var x = e.layerX || e.offsetX;
                var y = e.layerY || e.offsetY;
				var thisti=document.getElementById(container.data("val").PopupDivId);
				thisti.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=4,opacity=70)";
                thisti.style.opacity = 0.7;
                document.onmousemove = function(e){
                    e = arguments[0] || window.event;
                    
                    var nowx = document.documentElement.scrollLeft + (e.clientX - x);
                    var nowy = document.documentElement.scrollTop + (e.clientY - y);
                    if (nowx < 0 && nowy < 0) {
                        document.onmousemove = null;
                        document.onmousedown = null;
                    }

                    thisti.style.left = nowx + "px";
                    thisti.style.top = nowy + "px";
                };
                
                document.onmouseup = function(){
                    document.onmousemove = null;
                    document.onmousedown = null;
                    thisti.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=4,opacity=100)";
                    thisti.style.opacity = 1;					
                };
            };
        }
    }
    function reWrap(){
        $("#" + container.data("val").PopupDivId).replaceWith(container);
    }
    function addOutDiv(){
        var myIframe = document.createElement("iframe");
        var myDiv = document.createElement("div");
        myIframe.id = "myIframe";
        myIframe.style.position = "absolute";
        myIframe.style.zIndex = 10000;
        myIframe.style.top = "0px";
        myIframe.style.left = "0px";
        myIframe.style.height = getHeight() + "px";
        myIframe.style.width = getWidth() + "px";
 
        myIframe.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=4,opacity=0)";
        myIframe.style.opacity = 0;
        
        myDiv.id = "myDiv";
        myDiv.style.position = "absolute";
        myDiv.style.zIndex = 10001;
        myDiv.style.top = "0px";
        myDiv.style.left = "0px";
        myDiv.style.height = getHeight() + "px";
        myDiv.style.width = getWidth() + "px";
        document.body.appendChild(myIframe);
        document.body.appendChild(myDiv);
        myDiv.style.backgroundColor = "black";
        myDiv.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=4,opacity=50)";
        myDiv.style.opacity = 0.5; 
        window.onresize = re_show;
    }
    

    function getHeight(){
        var winWidth
        if (document.documentElement.scrollHeight > document.documentElement.clientHeight) {
            winHeight = document.documentElement.scrollHeight;
        }
        else {
            winHeight = document.documentElement.clientHeight;
        }
        if (navigator.appName !== "Microsoft Internet Explorer") {
            winHeight = winHeight - 4;
        }
        else {
            winHeight = winHeight;
        }
        return winHeight;
    }
    

    function getWidth(){
        var winWidth;
        if (document.documentElement.scrollWidth > document.documentElement.clientWidth) {
            winWidth = document.documentElement.scrollWidth;
        }
        else {
            winWidth = document.documentElement.clientWidth;
        }
        if (navigator.appName !== "Microsoft Internet Explorer") {
            winWidth = winWidth - 4;
        }
        else {
            winWidth = winWidth;
        }
        return winWidth;
    }
    
   
    function re_show(){
        $("#myIframe").height(getHeight());
        $("#myIframe").width(getWidth());
        $("#myDiv").height(getHeight());
        $("#myDiv").width(getWidth());
    }
    
 
    function reOutDiv(){
        $("#myIframe").remove();
        $("#myDiv").remove();
    }
    
}
