﻿/// <reference path="../NoUse/imort.js" />
/// <reference path="../jquery-1.4.1.js" />

(function ($) {
    var def = { speed: 180, callback: function () { }, bgcolor: "#000", ie6only: false, opacity: 0.15, iscover: true, zIndex: 100 };
    var zIndex = 1000;
    var ie6 = false;
    var style = {};
    var _iframe = 0;
    $.fn.extend({
        maskshow: function (arg) {
            ///<summary>显示遮照</summary>
            ///<param name="arg">arg:{speed:[int],callback:[Function]}</param>
           
            arg = ZC.Common.setdefault(def, arg);
            zIndex = arg.zIndex;
            _iframe = $("body").find("iframe").length;
            ie6 = $.browser.msie == true && parseInt($.browser.version, 10) == 6; //是否为IE版本浏览器
            if (def.ie6only == true && ie6 || def.ie6only != true) {
                //生成IFRAME覆盖层
                if (_iframe == 0 || ($.browser.msie && _iframe == 1)) {
                    this.Iframe = $("<iframe src=\"about:blank\" FRAMEBORDER=\"0\" allowTransparency=\"true\"></iframe>").appendTo(this.parent(0)).get(0);
                    if (this.css("zIndex") == "auto" || parseInt(this.css("zIndex"), 10) == 0) { this.css("zIndex", zIndex) }
                    else { zIndex = parseInt(this.css("zIndex"), 10); }
                    function createCssText(style) {
                        ///<summary>生成CSS样式字符串</summary>
                        style = ZC.Common.setdefault({ zIndex: 1000,
                            width: "100%",
                            height: (ie6 ? document.documentElement.offsetHeight + "px" : "100%"),
                            left: "0",
                            top: "0",
                            text: !$.browser.msie ? ("background-color:rgba(" + arg.bgcolor.color2rgba() + "," + arg.opacity + ")") : ("filter:alpha(opacity=" + parseInt(arg.opacity * 100, 10) + ")")
                            //+ (";_top:expression(eval(document.compatMode && document.compatMode=='CSS1Compat') ? document.documentElement.scrollTop + (document.documentElement.clientHeight-this.clientHeight)/2 - 1 : document.body.scrollTop + (document.body.clientHeight-this.clientHeight)/2 - 1)")
                        }, style);
                        var cssAry = new Array();
                        cssAry.push("position:fixed!important");
                        cssAry.push("position:absolute");
                        cssAry.push("display:block");
                        cssAry.push("z-index", style.zIndex);
                        cssAry.push("width:" + style.width);
                        cssAry.push("height:" + style.height);
                        cssAry.push("left:" + style.left);
                        cssAry.push("top:" + style.top);
                        cssAry.push(style.text);
                        return cssAry.join(";");

                    }
                    if (arg.iscover) {

                        $(this.Iframe).css("cssText", createCssText()).css("zIndex", zIndex - 1);
                        function readystatechange() { if (document.readyState != "complete") { setTimeout(readystatechange.bind(this), 50); return; } this.Iframe.contentWindow.document.body.style.cssText = "background-color:" + arg.bgcolor + ";"; }
                        this.Iframe.onreadystatechange = readystatechange.bind(this);
                        if (arg.speed > 0) { $(this.iframe).fadeIn(arg.speed); } else { $(this.iframe).show(); }
                    }
                    else {

                        $(this.Iframe).css("cssText", createCssText({ text: "", zIndex: zIndex - 1, width: this.outerWidth() + "px", height: this.outerHeight() + "px", left: this.offset().left + "px", top: this.offset().top + "px" })).show();
                    }
                }
            }
            //this.show(arg.speed, arg.callback);
            this.show();
            return this;
        },
        maskhide: function (arg) {
            ///<summary>隐藏遮照</summary>
            ///<param name="arg">arg:{speed:[int],callback:[Function]}</param>
            arg = ZC.Common.setdefault(def, arg);
            if (this.Iframe) { $(this.Iframe).fadeOut(arg.speed, function () { $(this.Iframe).remove(); } .bind(this)); }
            //this.hide(arg.speed, arg.callback);
            this.hide();

            return this;
        },
        setValue: function (data) {
            ///<summary>设置选中值</summary>
            ///<param name="data">数据对象 [data:{text:"",value:"",input:""}]</param>
            //{"text":"重庆,北京,上海","value":"13,11,12","input":{"context":{"docMD":true}}
            if (!data) { return false; }
            var owner = $(this);
            if (owner.get(0).nodeName == "A") { owner.html(data.text); }
            else { owner.val(data.text); }
            owner.attr("title", data.text);
            var args = data.value.split(",");
            var arg = null;
            var valHtml = "";
            for (var i = 0, len = args.length; i < len; i++) {
                arg = args[i];
                if (!arg) { continue; };
                valHtml = valHtml + '<input type="hidden" value="' + arg + '"/>';
            }
            valHtml = valHtml == "" ? valHtml : "<em>" + valHtml + "</em>";
            $(valHtml).insertAfter(owner);
        },
        getValue: function () {
            ///<summary>获取选中值</summary>
            ///<param name="data">数据对象 [data:{text:"上海，北京",value:"12，13"}]</param>
            //            var owner = $(this), nextInputs = null;
            //            var data = { text: "", value: "" };
            //            if(owner.get(0).nodeName=="A"){data.text = owner.html();}
            //            else{data.text = owner.val();}
            //            nextInputs = owner.next("em").find("input");
            //            var inpt = null;
            //            for (var i = 0, len = nextInputs.length; i < len; i++) {
            //                inpt = nextInputs.eq(i);
            //                if (!inpt) { continue; }
            //                data.value = data.value == "" ? inpt.val() : data.value + "," + inpt.val();
            //            }
            //            return data;
        }
    });
})(jQuery);

