﻿
(function ()
{
    if (window.Gmr != null) { return; }
    Gmr = new Object();
    Bx = new Object();
   
    Bx.Environment = new function ()
    {
       

        this.WebSiteUrl = "/"; 
        this.GetWebSiteUrl = function (url)
        {
           
            if (url !== null)
            {
                if (url.substring(0, 1) == "/") url = url.substring(1);
                return this.WebSiteUrl + url;
            }
            else
            {
                return this.WebSiteUrl;
            }
        }
        var domain = '';
        this.pluginList = [
        { name: "flash", checkVar: "window.SWFObject", url: "/js/plugins/flash.js" },
        { name: "ie6fix", checkVar: "window.Bx.Style.Ie6Fix", url: "/js/plugins/ie6fix.js" },
        { name: "messagebox", checkVar: "window.Bx.MessageBox", url: "/js/plugins/messagebox.js" },
        { name: "motion", checkVar: "window.Bx.Motion", url: domain+"/files/motion.js" },
        { name: "validator", checkVar: "window.Bx.Validator", url: "/js/plugins/validator.js" },
        { name: "xmlapi", checkVar: "window.Bx.XML.API", url: "/js/plugins/xmlapi.js" },
        { name: "imagesplayer", checkVar: "window.ImagesPlayer", url: domain+"/files/BxImagesPlayer.js" },
        { name: "article", checkVar: "window.Bx.Article", url: "/js/bxarticle.js" },
        { name: "fffix", checkVar: "window.bxFFix", url: domain+"/files/fffix.js" },
        { name: "webmenu", checkVar: "window.BxMenu", url: "/js/bxmenu.js" },
        { name: "editor", checkVar: "window.bxFtb", url: "/htmleditor/editor.js" },
        { name: "guestbook", checkVar: "window.Bx.GuestBook", url: "/js/bxguestbook.js" },
        { name: "tab", checkVar: "window.Bx.Plugin.Others.Tab", url: "/js/plugins/tab.js" },
        { name: "comment", checkVar: "window.Bx.Comment", url: "/js/bxcomment.js" }
    ]; 
        this.addPlugin = function (name, checkVar, url)
        {
           
            this.pluginList.push({ name: name, checkVar: checkVar, url: url });
        }
    }

    //#endregion 

    //#region  �?��?�?��?

   
    HtmlEncode = function (text)
    {
       
        text = text.toString();
        text = text.replace(/&/g, "&amp;");
        text = text.replace(/"/g, "&quot;");
        text = text.replace(/</g, "&lt;");
        text = text.replace(/>/g, "&gt;");
        text = text.replace(/'/g, "&#39;");
        return text;

    }
    HtmlDecode = function (text)
    {
       
        text = text.toString();
        text = text.replace(/&amp;/g, "&");
        text = text.replace(/&quot;/g, '"');
        text = text.replace(/&lt;/g, '<');
        text = text.replace(/&gt;/g, ">");
        text = text.replace(/&#39;/g, "'");
        return text;

    }
   
    String.prototype.replaceAll = function (strSearch, strReplace)
    {
      
        return this.replace(eval("/" + strSearch + "/g"), strReplace);
    }

    String.prototype.Trim = String.prototype.trim = function ()
    {
      
        var m = this.match(/^\s*(\S+(\s+\S+)*)\s*$/);
        return (m == null) ? "" : m[1];
    }
    String.prototype.padLeft = function (totalLength, paddingChar)
    {
       
        var l = totalLength - this.length;
        if (l > 0)
        {
            var s = "";
            for (var i = 0; i < l; i++)
            {
                s = s + paddingChar;
            }
            return s + this;
        }
        return this;
    }
    String.prototype.padRight = function (totalLength, paddingChar)
    {
       
        var l = totalLength - this.length;
        if (l > 0)
        {
            var s = "";
            for (var i = 0; i < l; i++)
            {
                s = s + paddingChar;
            }
            return this + s;
        }
        return this;
    }
    //#endregion 
    Array.prototype.Remove = function (arrayItem)
    {
        /// <summary>移�?��?��?第�?个�?��??�??对象</summary>
        /// <param name="arrayItem">�?移�?��??对象</param>

        var i = -1;
        for (var j = 0; j < this.length; j++)
        {
            if (this[j] == arrayItem)
            {
                this.splice(j, 1);
                break;
            }
        }
    }
    Array.prototype.RemoveAt = function (index)
    {
        /// <summary>移�?��?��?�??�?索�?�?�??�??素</summary>

        this.splice(index, 1);
    }
    Array.prototype.IndexOf = function (arrayItem)
    {
        /// <summary>�?�询�?��?中第�?个�?��??对象,并�?�??该�??素索�?,�?�??�?�?�?��??�?�??素,�??�?�??-1</summary>
        /// <param name="arrayItem">�?�?��?��??对象</param>

        for (var i = 0; i < this.length; i++)
        {
            if (this[i] == arrayItem)
            {
                return i;
            }
        }
        return -1;
    }
    Array.prototype.pushs = function (params)
    {
        /// <summary>�?�?��?�?��??添�?��?�</summary>
        /// <param name="params">�?添�?��??�?个�??�?��?��?�?��??�?��??�?</param>

        for (var i = 0; i < arguments.length; i++)
        {
            this.push(arguments[i]);
        }
    }
    Array.prototype.insertAt = function (index, obj)
    {
        /// <summary>�?��?��?�??�?�?置�??�?�对象</summary>
        /// <param name="index">索�?�?置</param>
        /// <param name="obj">�?�??�?��??对象</param>

        this.splice(index, 0, obj);
    }

    //#region �?��??�??�??�?��?
    Date.prototype.getMonthDays = function ()
    {
        /// <summary>�?�??�?��??�??天�?�</summary>
        var year = this.getFullYear();
        var month = this.getMonth() + 1;
        var solarMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
        if (month == 2)
        {
            return (((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) ? 29 : 28);
        }
        else
        {
            return (solarMonth[month - 1]);
        }
    }
    Date.prototype.addMonth = function (v)
    {
        /// <summary>�?��?��??�?��?�??�?个�??</summary>
        /// <param name="v">�?�?�?��??�??�?��?�?�以为�?�?�</param>
        this.setMonth(this.getMonth() + v);
        return this;
    }
    Date.prototype.addDays = function (v)
    {
        /// <summary>�?��?��??�?��?�??�?个天�?�</summary>
        /// <param name="v">�?�?�?��??天�?��?�?�以为�?�?�</param>
        var dt = this;
        var d = dt.getDate() + v;
        this.setDate(d);
        return this;
    }
    Date.prototype.format = function (format)
    {
        /// <summary>格�?�??�?�?��?��??</summary>

        var o = {
            "M+": this.getMonth() + 1, //�??份        
            "d+": this.getDate(), //�?�        
            "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //�?�?�        
            "H+": this.getHours(), //�?�?�        
            "m+": this.getMinutes(), //�??        
            "s+": this.getSeconds(), //�?        
            "q+": Math.floor((this.getMonth() + 3) / 3), //季度        
            "S": this.getMilliseconds() //毫�?        
        };
        var week = {
            "0": "\u65e5",
            "1": "\u4e00",
            "2": "\u4e8c",
            "3": "\u4e09",
            "4": "\u56db",
            "5": "\u4e94",
            "6": "\u516d"
        };
        if (/(y+)/.test(format))
        {
            format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        }
        if (/(E+)/.test(format))
        {
            format = format.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + week[this.getDay() + ""]);
        }
        for (var k in o)
        {
            if (new RegExp("(" + k + ")").test(format))
            {
                format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            }
        }
        return format;
    }
    //#endregion
    _$ = function (obj)
    {
        if (obj == null) { return null; }
        obj.addCell = function (cell)
        {
            /// <summary>�??�?��?个�??�??格</summary>
            if (this.tagName)
            {
                if (this.tagName == "TABLE")
                {
                    var i = this.rows.length;
                    if (cell)
                    {
                        if (i > 0) { this.rows[i - 1].appendChild(cell); } else { this.addRow().appendChild(cell); }
                        return cell;
                    }
                    else
                    {
                        return i > 0 ? this.rows[i - 1].insertCell(this.rows[i - 1].cells.length) : $(this.addRow()).addCell();
                    }
                }
                else if (this.tagName == "TR")
                {

                    if (cell)
                    {
                        this.appendChild(cell);
                        return cell;
                    }
                    else
                    {
                        return this.insertCell(this.cells.length);
                    }
                }
            }
        }
        obj.addRow = function (row)
        {
            /// <summary>�??�?��?�?</summary>
            if (this.tagName && this.tagName == "TABLE")
            {
                if (row)
                {
                    this.appendChild(row);
                    return _$(row);
                }
                else
                {
                    return _$(this.insertRow(this.rows.length));
                }
            }

        }
        obj.xy = function ()
        {
            /// <summary>�?�??对象�?��?页�?��??�??�?�?置�?�?�??格�?为{x,y}</summary>
            return bxStyle.xy(obj);
        }
        if (obj.text == null)
        {
            obj.text = function (str)
            {
                if (obj.innerText) { if (str) { obj.innerText = str; } else { return obj.innerText; } }
                else { if (str) { obj.textContent = str; } else { return obj.textContent; } }
            }
        }
        obj.html = function (str)
        {
            /// <summary>�?��??�??设置对象�??innerHTML�?�</summary>
            if (arguments.length == 0)
            {
                return obj.innerHTML;
            }
            else
            {
                obj.innerHTML = str;
            }
        }
        obj.set = function (options)
        {
            /// <summary>设置对象�??�?�?��?�</summary>
            /// <param name="options">�?设置�??�?�?��?��?JSON格�?</param>
            if (options)
            {
                for (var k in options)
                {
                    if (options.hasOwnProperty(k))
                    {
                        obj[k] = options[k];
                    }
                }
            }
        }
        return obj;
    }
    $ = function (expression)
    {
        /// <summary>�??�??素</summary>
        ///<param name="expression">�??素ID�??�??素对象</param>
        var obj;
        if (typeof (expression) == "object")
        {
            obj = _$(expression);
        }
        else if (typeof (expression) == "string")
        {
            switch (expression)
            {
                case ("document.body"):
                    obj = _$(document.body);
                    break;
                default:
                    obj = _$(document.getElementById(expression));
                    break;
            }

        }
        return obj;
    }
    $P = function (childNode, parentTagName, parentDepth, isDepthOnly)
    {
        /// <summary>�?��?�对�??�??�?��??�?�中�?��??�??�?�?签�??�??对象</summary>
        /// <param name="childNode">�?级�?�对象�??对象表达�?</param>
        /// <param name="parentTagName">�?�?�询�??�?�对象�?签�??称</param>
        /// <param name="parentDepth">�?�?�询�??�?�对象深度,�?��?�??第�?�个满足�?签�??称�?�?�??�?�对象.�?认�?�为1</param>
        /// <param name="isDepthOnly">�?�对象深度�?��?�精确�?�?.�?�??�?�为False,�??�?�没�??满足parentDepth�??�?��?�??�?�??�?满足parentDepth�??�??�?�?�?�对象.�?�??�?�为True,�??�?�没�??满足parentDepth�??�?��?�?�??null.�?认为False</param>
        var obj = $(childNode);
        if (typeof (parentTagName) == "string")
        {
            parentTagName = parentTagName.toLowerCase();
            if (parentDepth == null)
            {
                parentDepth = 1;
            }
            if (isDepthOnly == null)
            {
                isDepthOnly = false;
            }
            var po = obj;
            var t = null;
            var i = 0;
            while (po)
            {
                po = obj.parentNode;
                if (po == obj || po == null)
                {
                    if (i > 0 && !isDepthOnly)
                    {
                        return t;
                    }
                    else
                    {
                        return null;
                    }
                }
                if (po.tagName != null && (po.tagName.toLowerCase() == parentTagName))
                {
                    t = po;
                    i++;
                    if (i == parentDepth)
                    {
                        return t;
                    }
                }
                obj = po;
            }
        }
        else
        {
            return null;
        }

    }
    $T = function (expression, parentObj)
    {
        /// <summary>�?��??�??�?�?签�??�??�?签�?��?</summary>
        /// <param name="expression">�?签�??表达�?</param>
        /// <param name="parentObj">�?�对象�?�?认为document</param>
        var tarray = Array();
        var pp = parentObj ? parentObj : document;
        tarray = pp.getElementsByTagName(expression);
        var rs = [];
        for (var i = 0; i < tarray.length; i++)
        {
            rs.push(_$(tarray[i]));
        }
        return rs;
    }
    $C = function (expression, parentObj, tagName)
    {
        /// <summary>�?��??�??�?��??CSS类�??�??素�?��?</summary>
        /// <param name="expression">CSS类�??</param>
        /// <param name="parentObj">�?��??�?对象�?�?��??索</param>

        var objs;

        if (arguments.length == 3)
        {

            objs = parentObj.getElementsByTagName(tagName);

        }
        else
        {
            objs = document.all ? document.all : document.getElementsByTagName("*");
        }

        var rs = new Array();
        for (var i = 0; i < objs.length; i++)
        {
            var cns = objs[i].className.split(/ +/);
            for (var j = 0; j < cns.length; j++)
            {
                if (cns[j] == expression)
                {
                    rs[rs.length] = _$(objs[i]);
                }
            }
        }
        return rs;
    }
    $E = function (tagName, initProperty, doc)
    {
        /// <summary>�??建�?签对象</summary>
        /// <param name="tagName">�?签�??称</param>
        /// <param name="doc">document对象�?�?认为�?�?? document</param>
        var doc = doc ? doc : document;
        var o = doc.createElement(tagName);
        if (initProperty)
        {
            for (var key in initProperty)
            {
                if (initProperty.hasOwnProperty(key))
                {
                    o[key] = initProperty[key];
                }
            }
        }
        return $(o);
    }
    Object.prototype.p = function (name, defaultValue)
    {
        /// <summary>�?�询对象�??�??�?�?�?��?�?�容�?签�?�?�</summary>
        /// <param name="name">�?�?�询�??�?�?��??称</param>
        /// <param name="defaultValue">�?�?�?��??该对象�?��?�??�?�</param>        
        return (this != null && (name in this)) ? this[name] : ((this.attributes && (this.attributes[name] != null)) ? this.attributes[name].value : (arguments.length == 2 ? defaultValue : null));
    }
    //#endregion

    //#region �?�询�?符串�?�??类
    bxQueryString = function (rawString, isHtmlMode)
    {
        /// <summary>�?�询�?符串�?�??类</summary>
        /// <param name="rawString">�??�?�?符串</param>
        /// <param name="isHtmlMode">True�?使�?�Html�?�?�?False�?使�?�Url�?�?</param>
        var vs = new Array();
        var htmlMode = arguments.length == 2 ? isHtmlMode : true;

        function loadString()
        {
            if (rawString.length > 0)
            {
                var s;
                if (htmlMode)
                {
                    s = rawString.split("&&");
                    for (var i = 0; i < s.length; i++)
                    {
                        var a = s[i].split(">");
                        vs.pushs(a[0], HtmlDecode(a[1]));
                    }
                }
                else
                {
                    s = rawString.split("&&");
                    for (var i = 0; i < s.length; i++)
                    {
                        var a = s[i].split("=");
                        vs.pushs(a[0], decodeURIComponent(a[1]));
                    }
                }
            }
        }
        loadString();
        this.getValue = function (name, defaultValue)
        {
            for (var i = 0; i < vs.length; i = i + 2)
            {
                if (vs[i] == name) { return vs[i + 1]; }
            }
            if (defaultValue != null)
            {
                return defaultValue;
            }
            else
            {
                return null;
            }
        }
        this.setValue = function (name, value)
        {
            /// <summary>设置�?��?��?该�?��?为�?��?��??value�?�转�?��??�?符串格�?</summary>
            value = value.toString()
            for (var i = 0; i < vs.length; i = i + 2)
            {
                if (vs[i] == name) { vs[i + 1] = value; return; }
            }
            vs.pushs(name, value);
        }
        this.setValues = function (name, value)
        {
            for (var i = 0; i < arguments.length; i = i + 2)
            {
                this.setValue(arguments[i], arguments[i + 1]);
            }
        }
        this.getQueryString = function ()
        {
            if (htmlMode)
            {
                var s = "";
                for (var i = 0; i < vs.length; i = i + 2)
                {
                    s += ("&&" + vs[i] + ">" + ((vs[i + 1] != null && vs[i + 1].length > 0) ? HtmlEncode(vs[i + 1]) : ""));
                }
                if (s.length > 0)
                {
                    return s.substring(2, s.length);
                }
                else
                {
                    return "";
                }
            }
            else
            {
                var s = "";
                for (var i = 0; i < vs.length; i = i + 2)
                {
                    s += ("&" + vs[i] + "=" + ((vs[i + 1] != null && vs[i + 1].length > 0) ? encodeURIComponent(vs[i + 1]) : ""));
                }
                if (s.length > 0)
                {
                    return s.substring(1, s.length);
                }
                else
                {
                    return "";
                }
            }
        }
    }
    //#endregion

    //#region Bx.Pub�?��?�类
    Bx.Pub = bxPub = function ()
    {
        /// <summary>�?��?��?��?类</summary>
        return {
            parseBool: function (v)
            {
                /// <summary>转�?�对象为�?�?�?�</summary>
                /// <param name="v">�?转�?��??对象</param>
                if (v == true || v == false) { return v; }
                else if (typeof (v) == "string")
                { return v.toLowerCase() == "true"; }
                else if (typeof (v) == "number") { return v != 0; }
                else { return false; }
            },
            parseFloat: function (v, defaultValue)
            {
                /// <summary>转�?�对�??为float�?�</summary>
                /// <param name="v">�?转�?��??�?�</param>
                /// <param name="defaultValue">�?认�?�</param>

                var f = parseFloat(v);
                if (isNaN(f))
                {
                    if (defaultValue != null) { return defaultValue; }
                }
                return f;
            },
            urlRandom: function (url)
            {
                /// <summary>�?URL�??�?��?个�??�?��??�?��?�?��?�?�?�?��?�?</summary>
                /// <param name="url">�?URL</param>
                return bxUrlReplaceValue("irand", parseInt(Math.random() * 100), url);
            },
            getUniqueID: function ()
            {
                /// <summary>�??�??页�?��??�?个�?��?�??ID�?�?</summary>
                if (window._uid == 0 || window._uid == NaN || window._uid == null)
                {
                    window._uid = 0;
                }
                window._uid++;
                return "bxid" + window._uid;
            },
            valueToHtml: function (v)
            {
                /// <summary>�??�??�?��?�?�件�??�?�转�?�为HTML格�?</summary>
                return v.replace(/<(.+?)>/gi, "&lt;$1&gt;").replace(/ /gi, "&nbsp;").replace(/\n/gi, "<br>");
                ;
            },
            htmlToValue: function (v)
            {
                /// <summary>�??HTML格�?转�?�为�??�?��?�?�格�?</summary>
                return v;
            },
            checkTagName: function (tagObj, tagName)
            {
                /// <summary>�?�?对象�?��?��?��??�??�?�?签�??</summary>
                /// <param name="tagObj">�?�?�?�??�?签对象</param>
                /// <param name="tagName">�?��?�?签�??称</param>
                var tagObj = $(tagObj);
                return tagObj.tagName.toLowerCase() == tagName.toLowerCase();
            },
            getMousePosition: function (event, isOffsetDocument)
            {
                /// <summary>�?�??�?�??鼠�?�??�?�?置�?�?�??格�?为{x,y}</summary>
                /// <param name="evt">�?件对象</param>
                /// <param name="isOffsetDocument">true(�?认):�?�??�?�对�?�?�个�??档�??�?��?false:�?�??�?��?��?�?�??�?��?�?页�?��??�??�?�</param>

                var evt = event || window.event;
                var bd = bxGetBodyDocumentElement(window.top);
                var isOffsetDocument = isOffsetDocument == null ? true : isOffsetDocument;
                if (evt.pageX || evt.pageY)
                {
                    if (isOffsetDocument)
                    {
                        return { x: evt.pageX, y: evt.pageY };
                    } else
                    {
                        return { x: evt.pageX - bd.scrollLeft, y: evt.pageY - bd.scrollTop };
                    }
                }
                if (isOffsetDocument)
                {
                    return {
                        x: evt.clientX + bd.scrollLeft,
                        y: evt.clientY + bd.scrollTop
                    };
                }
                else
                {
                    return {
                        x: evt.clientX + bd.scrollLeft - bd.clientLeft,
                        y: evt.clientY + bd.scrollTop - bd.clientTop
                    };
                }
            },
            clearFileInput: function (file)
            {
                /// <summary>�?空file�?�件</summary>
                /// <param name="file">�?�??�?�??file对象</param>

                var form = document.createElement('form');
                document.body.appendChild(form);
                //记�?file�?��?�表�??中�??�??�?置
                var pos = file.nextSibling;
                form.appendChild(file);
                form.reset();
                pos.parentNode.insertBefore(file, pos);
                document.body.removeChild(form);
            },
            extend: function (destination, source)
            {
                /// <summary>�?�?��?对象�?�?��?��?��?对象</summary>
                /// <param name="destination">�?��?对象</param>
                /// <param name="source">�?对象</param>
                if (source == null) { return destination; }
                for (var property in source)
                {
                    destination[property] = source[property];
                };
                return destination;
            },
            isFunction: function (obj)
            {
                /// <summary>�?��?�对象�?��?��?��?��?�</summary>
                return (obj && obj.constructor == window.Function);
            },
            htmlTagToLowerCase: function (html)
            {
                /// <summary>转�?�html�?记中�??�??大�??�??�?�??</summary>
                return html.replace(/(<\/?\w+)(\s*?.*?>)/gi, function ($0, $1, $2)
                {
                    return $1.toLowerCase() + $2;
                });


            },
            open: function (url)
            {
                /// <summary>弹�?�??�?URL</summary>
                window.open(url);
            },
            timeToSpan: function (dt)
            {
                /// <summary>转�?��?��??为�?��?��??段表达�?</summary>
                var dt = dt.constructor == Date.constructor ? dt : Date.parse(dt);
                var ts = bxParseInt((new Date() - dt) / 1000, 1);
                var h = bxParseInt(ts / 3600, 0);
                if (h >= 720)
                {
                    s = bxParseInt(h / 720, 1) + " �??�?? ";
                }
                else if (h >= 168)
                {
                    s = bxParseInt(h / 168, 1) + " �?��??";
                }
                else if (h >= 24)
                {
                    s = bxParseInt(h / 24, 1) + " 天�??";
                }
                else if (h >= 1)
                {
                    s = h + " �?�?��??";
                }
                else
                {
                    var m = ts / 60;
                    if (m >= 1)
                    {
                        s = bxParseInt(m, 1) + "�??�??�??";
                    }
                    else
                    {
                        s = ts + " �?�??";
                    }
                }
                return s;
            },
            htmlEncode: function (text)
            {
                /// <summary>对�?符串�?�?HTML�?�?</summary>
                /// <param name="text">�?�?�?�?�?�??�??�?�</param>
                text = text.toString();
                text = text.replace(/&/g, "&amp;");
                text = text.replace(/"/g, "&quot;");
                text = text.replace(/</g, "&lt;");
                text = text.replace(/>/g, "&gt;");
                text = text.replace(/'/g, "&#39;");
                return text;
            },
            htmlDecode: function (text)
            {
                /// <summary>对�?符串�?�?HTML解�?</summary>
                /// <param>�?�?�?解�?�??�??�?�</text>
                text = text.toString();
                text = text.replace(/&amp;/g, "&");
                text = text.replace(/&quot;/g, '"');
                text = text.replace(/&lt;/g, '<');
                text = text.replace(/&gt;/g, ">");
                text = text.replace(/&#39;/g, "'");
                return text;
            }


        }
    } ();
    Bx.Pub.GetFeature = bxGetFeatures = function (featureString, featureName, defaultValue, isDouhao)
    {
        /// <summary>�?�?��?�?符串中�?��?��??�?�??�?��?�?�</summary>
        /// <param name="featureString">�?��?�?符串,�?�?f1:v1;f2:v2;</param>
        /// <param name="featureName">�?��?�?��??�?</param>
        /// <param name="defaultValue">�?�??�?��??�?�?��?��?�??�??�?认�?�</param>
        /// <param name="isDouhao">�?��?�解�??为�??�?��??�??符�?�?认为False�?�?�使�?��??�?��??�??符</param>

        if (!featureName || !featureString) { return defaultValue; }
        if (typeof (featureString) == "object") { return featureString.p(featureName, defaultValue); }
        var fs = isDouhao ? featureString.split(",") : featureString.split(";");
        for (var i = 0; i < fs.length; i++)
        {
            var fvs = fs[i].split(":");
            if (fvs[0].Trim() == featureName)
            {
                return fvs[1].Trim();
            }
        }
        return defaultValue;

    }
    Bx.Pub.getProperty = bxGetProperty = function (obj, name, defaultValue)
    {
        /// <summary>�?�询对象�??�??�?�?�?�</summary>
        /// <param name="obj">�?�??�?�??对象</param>    
        /// <param name="name">�?�?�询�??�?�?��??称</param>
        /// <param name="defaultValue">�?�?�?��??该对象�?��?�??�?�</param>
        return (obj != null && (name in obj)) ? obj[name] : (arguments.length == 3 ? defaultValue : null);
    }
    Bx.Pub.parseInt = bxParseInt = function (v, defaultValue)
    {
        /// <summary>转�?�对象为�?��?�</summary>
        /// <param name="v">�?转�?��??�?�?��?�</param>
        /// <param name="defaultValue">转�?�失败�?��?�??�??�?认�?�</param>

        var o = parseInt(v);
        if (isNaN(o)) { o = defaultValue; }
        return o;
    }
    Bx.Pub.$A = $A = function (parentObj, tagName, attributeName, attributeValue)
    {
        /// <summary>根�?��?签�??�??�?�?��?��?��?�??�?�</summary>
        /// <param name="parentObj">�?�?��?��??�?�对象</param>
        /// <param name="tagName">�?��??�??�?�??�?��??�?签</param>
        /// <param name="attributeName">�?��??�??�?�?��??</param>
        /// <param name="attributeValue">�?��??�??�?�?��?�,�?认忽�?�</param>

        var pObj = $(parentObj);
        var objs = pObj.getElementsByTagName(tagName);
        var rojbs = new Array();
        if (attributeValue)
        {
            for (var i = 0; i < objs.length; i++)
            {
                if (objs[i].attributes[attributeName] && (objs[i].attributes[attributeName].value == attributeValue))
                {
                    rojbs[rojbs.length] = objs[i];
                }
            }
        }
        else
        {
            for (var i = 0; i < objs.length; i++)
            {

                if (objs[i].attributes[attributeName])
                {

                    rojbs[rojbs.length] = objs[i];
                }
            }
        }
        return rojbs;
    }
    Bx.Pub.$N = $N = function (name)
    {
        /// <summary>�?�询name�?�?�为�??�?�?��??�??素�??�??</summary>
        /// <param name="name">�?�?�询�??name�?�</param>
        var os = document.getElementsByName(name);
        var os2 = new Array();
        bxBatch(os, function (obj, index)
        {
            if (obj.getAttribute("name") == name || (obj.name == name))
            {
                os2.push(obj);
            }
        });
        return os2;
    }
    Bx.Pub.GetUrl = function ()
    {
        /// <summary>�?��??�?�??�??URL</summary>
        return window.location;
    }
    Bx.Pub.GetUrlWithoutParam = function (strUrl)
    {
        /// <summary>�?��??URL�?��??�?带�??�?��?��??</summary>
        /// <param name="strUrl">�??�?URL�?符串</param>
        /// <return>�?�??URL�?��??�?带�??�?��?��??</return>
        var urls = strUrl.split("?");
        return urls[0];
    }


    Bx.Pub.GetUrlParam = bxGetUrlParam = function (name, rawUrl, isReturnNull)
    {
        /// <summary>�?��??UrlGet�??�?��?�?�??�??�?��?�?�?��??�?�??""</summary>
        /// <param name="name">�?�?��??�??�??�?��??称</param>
        /// <param name="rawUrl">�??�?URL�?�?认为�?�??客�?�端URL</param>
        /// <param name="isReturnNull">�?�?�?�此�??�?��?��??�?�??�?�,True:�?�??null�?��?False(�?认):�?�??""</param>

        var str = rawUrl ? rawUrl : window.location.href;
        if (str.indexOf("?") >= 0)
        {
            str = str.substring(str.indexOf("?"));
        }
        var index = Math.max(str.indexOf("&" + name + "="), str.indexOf("?" + name + "="));
        if (index >= 0)
        {
            var pos_start = index + name.length + 2;
            var p1 = str.indexOf("&", pos_start), p2 = str.indexOf("#", pos_start);
            var pos_end = p1 < 0 ? p2 : (p2 < 0 ? p1 : Math.min(p1, p2));
            if (pos_end == -1)
            {
                return str.substring(pos_start);
            }
            else
            {
                return str.substring(pos_start, pos_end)
            }
        }
        else
        {
            if (isReturnNull == true) { return null } else { return ""; }
        }
    }
    Bx.Pub.UrlReplaceParamValue = bxUrlReplaceValue = function (paramName, newParamValue, rawUrl)
    {
        /// <summary>�?��?�URL中�??�??�?��?��?�?�??�?�?�?��??添�?�</summary>
        /// <param name="paramName">�??�?��??称</param>
        /// <param name="newParamValue">�?��??�??�?��?�</param>
        /// <param name="rawUrl">�?�??�?�??URL�?�?认为�?�??客�?�端URL</param>
        var oUrl = rawUrl ? rawUrl : window.location.href.toString();
        var nUrl = "";
        var urls = oUrl.split("#");
        oUrl = urls[0];
        if (bxGetUrlParam(paramName, oUrl, true) == null)
        {

            if (oUrl.indexOf("?") > 0)
            {
                nUrl = oUrl + ("&" + paramName + "=" + newParamValue);
            }
            else
            {
                nUrl = oUrl + ("?" + paramName + "=" + newParamValue);
            }
        }
        else
        {
            var re = eval('/([?&])(' + paramName + '=[^&#]*)/gi');
            //alert(oUrl.match(re));
            nUrl = oUrl.replace(re, "$1" + paramName + '=' + newParamValue);
        }
        if (urls.length > 1)
        {
            nUrl += ("#" + urls[1]);
        }
        return nUrl;
    }
    Bx.Pub.SetClipboardText = SetClipboardText = function (text)
    {
        /// <summary>设置客�?�端�?�贴�?��??�??�?��??容</summary>
        /// <param name="text">�?设置�??�??�?��?�</param>
        window.clipboardData.setData("text", text.toString())
    }
    Bx.Pub.SelectSetValue = SelectSetValue = function (selectObj, value, text)
    {/// <summary>设置�?�??�?�件�??�??�?��?�</summary>
        /// <param name="value">�?�?��??�??�?��?�?�??设为null�?�??�?��??text�??�?�</param>
        /// <param name="text">�?value�??�?�为 null�?��?�?��??�??�?�</param>

        var obj = $(selectObj);
        if (obj)
        {
            for (var i = 0; i < obj.options.length; i++)
            {
                var op = obj.options[i];
                if (value)
                {
                    if (op.value == value)
                    {
                        obj.selectedIndex = i; break;
                    }
                }
                else if (text && op.text == text)
                {
                    obj.selectedIndex = i; break;
                }
            }
        }
    }
    Bx.Pub.SelectGetOptions = SelectGetOptions = function (selectObj, value, text)
    {
        /// <summary>�?�??�?�??�?�件�??�??�?�项option对象�??�??�?�?�</summary>
        /// <param name="value">�?�?��??�??�?��?�?�??设为null�?�??忽�?��??�?�</param>
        /// <param name="text">�?value�??�?�为 null�?��?忽�?�此�??�?�</param>
        var obj = $(selectObj);
        if (obj)
        {
            if (value == null && text == null)
            {
                return obj.options;
            }
            var ops = new Array();
            for (var i = 0; i < obj.options.length; i++)
            {
                var op = obj.options[i];
                if (value && value != op.value)
                {
                    continue;
                }
                if (text && op.text != text)
                {
                    continue;
                }
                ops[ops.length] = op;
            }
            return ops;
        }
        else
        {
            return null;
        }
    }
    Bx.Pub.InputRadioSetValue = InputRadioSetValue = function (controlName, selectedValue)
    {
        var objs = document.getElementsByName(controlName);
        for (var i = 0; i < objs.length; i++)
        {
            if (objs[i].value == selectedValue)
            {
                objs[i].checked = true;
                break;
            }
        }
    }
    Bx.Pub.InputRadioGetValue = InputRadioGetValue = function (controlName, defaultValue)
    {
        var objs = document.getElementsByName(controlName);
        for (var i = 0; i < objs.length; i++)
        {
            if (objs[i].checked)
            {
                return objs[i].value;
            }
        }
        return defaultValue;

    }
    Bx.Pub.SubmitKeyClick = SubmitKeyClick = function (evt, button, func)
    {
        /// <summary>设置�?�??对象�??交�?件</summary>
        /// <param name="button">�?�?�?�??�??交�??�?�</param>
        evt = evt ? evt : window.event;
        me = evt.srcElement || evt.target;

        var keyCode = evt.which || evt.keyCode;
        if (keyCode == 13)
        {
            if (document.all)
            {
                evt.keyCode = 9;
                evt.returnValue = false;
            }
            else
            {
                evt.preventDefault();
            }
            if (button && button.length > 0)
            {
                $(button).click();
            }
            else if (func)
            {
                func();
            }
        }
    }
    Bx.Pub.ParseAbsoluteUrl = function (targetUrl, thisUrl)
    {
        /// <summary>转�?�URL�?��??为�?对URL�?��??</summary>
        /// <param name="targetUrl">�?转�?��??�?��?URL</param>
        /// <param name="thisUrl">�??�??URL�?�?认为�?�??页�?�URL</param> 
        thisUrl = thisUrl ? thisUrl : window.location.pathname;
        thisUrl = thisUrl.substring(0, thisUrl.lastIndexOf("/") + 1);
        if ((targetUrl.substring(0, 7).toLowerCase() == "http://") || (targetUrl.substring(0, 8).toLowerCase() == "https://") || (targetUrl.substring(0, 1).toLowerCase() == "/")) { return targetUrl; }
        else { targetUrl = thisUrl + targetUrl; }
        return targetUrl;
    }
    Bx.Pub.Batch = bxBatch = function (objsArray, fun)
    {
        /// <summary>�?��?�??对象</summary>
        /// <param name="objsArray">�?�?��?�??�??对象�?��?</param>
        /// <param name="fun">�?�?��?�??�??�?�?��?�?该�?��?第�?个�??�?�为�?�??对象�?第�?个�??�?�为该对象�?��?��?中�??索�?</param>
        //if ((objsArray == null) || (objsArray.constructor != window.Array) ||( typeof (fun) != "function")) { return 0; }
        for (var i = 0; i < objsArray.length; i++)
        {
            fun(objsArray[i], i);
        }
        return objsArray.length;
    }
    Bx.Pub.Alert = bxAlert = function (messages)
    {
        /// <summary>弹�?��?�?��?</summary>
        /// <param name="messages">�?弹�?��??信�?��?�?�以�?个�?��?�?��??�?��??�?</param>
        if (arguments.length == 1) { alert(messages); return; }
        var s = "";
        for (var i = 0; i < arguments.length; i++)
        {
            s = s + (" " + arguments[i]);
        }
        alert(s);
    }
    Bx.Pub.GetRandom = bxGetRandom = function (vMax, vMin)
    {
        /// <summary>�??�?��??�?�??�?��??�?��?��??�?��?�</summary>
        /// <param name="vMax">�??大�?�</param>
        /// <param name="vMin">�??�?�?��?�?认�?�为0</param>
        var vMin = vMin != null ? vMin : 0;
        return parseInt(Math.random() * (vMax - vMin + 1) + vMin);
    }
    //#endregion

    //#region Bx.Sys系�?类
    Bx.Sys = bxSys = function ()
    {
        return {
            stopPropagation: function (evt)
            {
                /// <summary>�??�?�?件�??泡</summary>
                if (window.event) { window.event.cancelBubble = true; }
                else if (evt) { evt.stopPropagation(); }
            },
            cancelBubble: function (evt)
            {
                /// <summary>�??�?�?件�??泡</summary>
                if (window.event) { window.event.cancelBubble = true; }
                else if (evt) { evt.stopPropagation(); }
            },
            preventDefault: function (evt)
            {
                /// <summary>�??�?��?�?�?��?�?�?��?�?�?件�?��??�??�?认�?��?</summary>
                if (window.event) { window.event.returnValue = false; }
                else { evt.preventDefault(); }
            },
            addEventHandler: function (target, eventName, callBack)
            {
                /// <summary>�??对象添�?��?个�?件代�??</summary>
                /// <param name="target">�?��?对象</param>
                /// <param name="eventName">�?件�??称</param>
                /// <param name="callBack">�?件�?�??�?��?��?形�?function(evt,eventSrc){}�?传�?��??�?�为�?件�?�??对象�??�?件�?对象</param>

                var f = function (evt)
                {
                    var src = bxGetEventSrc(evt);
                    callBack(evt, src);
                }
                SysAddEvent(target, eventName, f);
            },
            extendDOMElement: function (name, fn)
            {
                //�?DOMElement添�?��??称为name�??�?��?fn
                var _f = _$;
                _$ = function (obj)
                {
                    var _elem = _f(obj);
                    if (_elem) { _elem[name] = fn; }
                    return _elem;
                }
                if (window.HTMLElement)//�?��?ie�??�?�??�?�?�?��?��?��?访�?��?�HTMLElement�?个类
                    eval("HTMLElement.prototype." + name + " = fn");
                else
                {
                    //    IE中�?�?�访�?�HTMLElement�?个类
                    //    为�?达�?��??样�??�?��??�?�?须�??�??�?�?��?�个�?��?�
                    //    document.createElement
                    //    document.getElementById
                    //    document.getElementsByTagName
                    //    �?�?�个�?��?��?��?��?��?HTML�??素�??�?��?
                    //    修�?��?�?�?��?�?使�?�??�?�?�?�?��?�?��?�??�?个�??素�?��??�??称为name�??�?��?fn

                    var _createElement = document.createElement;
                    document.createElement = function (tag)
                    {
                        var _elem = _createElement(tag);
                        if (_elem) { _elem[name] = fn; } //eval("_elem." + name + " = fn");�?�?�以达�?��??样�??�?��??
                        return _elem;
                    }

                    var _getElementById = document.getElementById;
                    document._getElementById = document.getElementById = function (id)
                    {
                        var _elem = _getElementById(id);
                        if (_elem) { _elem[name] = fn; }
                        return _elem;
                    }

                    var _getElementsByTagName = document.getElementsByTagName;
                    document.getElementsByTagName = function (tag)
                    {
                        var _arr = _getElementsByTagName(tag);
                        for (var _elem = 0; _elem < _arr.length; _elem++)
                            eval("_arr[_elem]." + name + " = fn");
                        return _arr;
                    }
                }
            },
            runJsFile: function (jsURL, funReceive, isAsync)
            {
                /// <summary>�?��??�?�载JS</summary>
                /// <param name="jsURL">js�??件URL</param>
                /// <param name="funReceive">�??�?�?��?�</param>
                var isAsync = (isAsync == null ? true : isAsync);
                bxAjax.getURL(jsURL, function (response)
                {
                    eval(response.text);
                    if (response)
                    {
                        funReceive(response);
                    }
                }, isAsync);
            }
        }

    } ();

    Bx.Sys.AddEvent = SysAddEvent = function (objExpression, eventName, callBack)
    {
        /// <summary>�?对象添�?��?件</summary>
        /// <param name="objExpression">对象�??对象ID</param>
        /// <param name="eventName">�?件�??称</param>
        /// <param name="callBack">�??�?�?��?�</param>

        if (typeof (objExpression) == "string")
        {
            if ($(objExpression) == null)
            {
                SysAddEvent(window, "onload", function () { SysAddEvent(objExpression, eventName, callBack); });
                return;
            }
        }
        var obj = $(objExpression);
        if (obj.addEventListener)
        {
            if (eventName.substring(0, 2) == "on") eventName = eventName.substring(2, eventName.length);
            obj.addEventListener(eventName, callBack, false);
        } else if (obj.attachEvent)
        {//IE
            if (eventName.substring(0, 2) != "on") eventName = "on" + eventName;
            obj.attachEvent(eventName, callBack);
        } else
        {
            if (eventName.substring(0, 2) != "on") eventName = "on" + eventName;
            obj[eventName] = callBack;
        }
    }
    Bx.Sys.RemoveEvent = SysRemoveEvent = function (objExpression, eventName, callBack)
    {
        /// <summary>�?��?��??�?Bx.Sys.AddEvent()�?��?添�?��??�?件</summary>
        /// <param name="objExpression">对象�??对象ID</param>
        /// <param name="eventName">�?件�??称</param>
        /// <param name="callBack">�?�?��?��??�??�?�?��?�</param>
        if (typeof (objExpression) == "string")
        {
            if ($(objExpression) == null)
            {
                SysAddEvent(window, "onload", function () { Bx.Sys.RemoveEvent(objExpression, eventName, callBack); });
                return;
            }
        }
        var obj = $(objExpression);
        if (obj.removeEventListener)
        {
            if (eventName.substring(0, 2) == "on") eventName = eventName.substring(2, eventName.length);
            obj.removeEventListener(eventName, callBack, false);
        } else if (obj.detachEvent)
        {//IE
            if (eventName.substring(0, 2) != "on") eventName = "on" + eventName;
            obj.detachEvent(eventName, callBack);
        } else
        {
            if (eventName.substring(0, 2) != "on") eventName = "on" + eventName;
            obj[eventName] = "";
        }
    }


    Bx.Sys.LoadJsCssFile = SysLoadJsCssFile = function (filename, filetype)
    {
        /// <summary>�??页�?��??Head�?签添�?�Js�??�?��??件�??Css样�?表�??件</summary>
        /// <param name="filename">�??件Url</param>
        /// <param name="filetype">�??件类�??,�?��??"js"�??"css"</param>

        if (filetype == "js")
        {
            var fileref = document.createElement('script');
            fileref.setAttribute("type", "text/javascript");
            fileref.setAttribute("src", filename)
        } else if (filetype == "css")
        {
            var fileref = document.createElement("link");
            fileref.setAttribute("rel", "stylesheet");
            fileref.setAttribute("type", "text/css");
            fileref.setAttribute("href", filename)
        }
        if (typeof fileref != "undefined") document.getElementsByTagName("head")[0].appendChild(fileref)
    }

    Bx.Sys.GetEventSrc = bxGetEventSrc = function (evt)
    {
        /// <summary>�?��??鼠�?�?件对象</summary>
        var evt = evt ? evt : event;
        if (evt.srcElement)
        {
            return evt.srcElement;
        }
        else
        {
            return evt.target;
        }
    }
    Bx.Sys.EventHandler = bxEventHandler = function ()
    {
        /// <summary>�?件代�??�??�?类</summary>
        var events = new Array();
        return {
            addEventListener: function (eventName, callBack)
            {
                /// <summary>�?�??�?�?件�?�?�?�??�?��??</summary>
                events.push({ eventName: eventName, callBack: callBack });
            },
            removeEventListener: function (eventName, callBack)
            {
                /// <summary>�?��?��??�?�?件�??�??�?�?�??�?��??</summary>
                var evs = this.getEvents(eventName);
                for (var i = 0; i < evs.length; i++)
                {
                    var ev = evs[i];
                    if (callBack == null || ev.callBack == callBack)
                    {
                        events.Remove(ev);
                    }
                }
            },
            getEvents: function (eventName)
            {
                /// <summary>�?�询�??�?�?件�??</summary>
                /// <param name="eventName">�?件�??称</param>
                var evs = new Array();
                for (var i = 0; i < events.length; i++)
                {
                    var ev = events[i];
                    if (ev.eventName == eventName)
                    {
                        evs.push(ev);
                    }
                }
                return evs;
            },
            execEvent: function (eventName, args)
            {
                /// <summary>�?��?�??�?�?件</summary>

                var evs = this.getEvents(eventName);
                var as = [];
                for (var i = 1; i < arguments.length; i++) { as.push(arguments[i]); }
                for (var i = 0; i < evs.length; i++) { evs[i].callBack.apply(this, as); }
            }
        }
    }
    //#endregion 

    //#region Bx.Math�?�学类
    Bx.Math = bxMath = function ()
    {
        return {
            getAvarage: function (dataArray)
            {
                /// <summary>�?��??�?��?��?��?�??素�??平�??�?�</summary>
                /// <param name="dataArray">�?计�?�??�?��?,�?须�?��?��?��??�?维�?��?</param>
                var tv = 0;
                for (var i = 0; i < dataArray.length; i++)
                {
                    tv += dataArray[i];
                }
                return tv / dataArray.length;
            },
            convertJiaoToRad: function (jiaoValue)
            {
                /// <summary>�??�?度转�?��??弧度</summary>
                /// <param name="jiaoValue">�?转�?��??�?度�?�</param>
                return jiaoValue * Math.PI / 180;
            },
            convertRadToJiao: function (radValue)
            {
                /// <summary>�??�?度转�?��??弧度</summary>
                /// <param name="radValue">�?转�?��??弧度�?�</param>
                return radValue * 180 / Math.PI;
            },
            getArraySum: function (numberArray)
            {
                /// <summary>�?��??�?��?�?��?�??�?��??</summary>
                /// <param name="numberArray">�?计�?�??�?��?��?��?</param>
                var s = 0;
                for (var i = 0; i < numberArray.length; i++)
                {
                    s += numberArray[i];
                }
                return s;
            },
            toHexColor: function (v)
            {
                /// <summary>转�?��?�?��?�为16�?�?�格�?</summary>

                if (v.indexOf("#") >= 0) return v; //�?�??�?��?个hex�?��??�?��?��?�??
                var pattern = new RegExp("2[0-4]\\d|25[0-5]|[01]?\\d\\d?", "ig"); //�?个正�??�?��?? 0 ~ 255�??�?��?
                var va = v.match(pattern);
                if (va.length != 3) return "NaN"; //�??�?��??�?��?�?�度�?�?�?为3
                var result = "#";
                for (var i = 0; i < 3; i++)
                {
                    var num = parseInt(va[i]);
                    result += num < 16 ? "0" + num.toString(16) : num.toString(16); //�?�??�?�?F�?��??�?�补0
                }
                return result;
            },
            rgbToHexColor: function (r, g, b)
            {
                /// <summary>转�?�RGB�?�?�为16�?�?��?�?�</summary>

                return "#" + bxPub.parseInt(r, 0).toString(16).padLeft(2, "0") + bxPub.parseInt(g, 0).toString(16).padLeft(2, "0") + bxPub.parseInt(b, 0).toString(16).padLeft(2, "0");
            }
        }
    } ();
    //#endregion

    //#region Bx.String�?符串类
    Bx.String = bxString = function ()
    {
        /// <summary>谷�?�人�?符串�??�?�?��?�??</summary>
        return {
            makeString: function (childString, number)
            {
                /// <summary>�??�??�?个�?符串</summary>
                /// <param name="childString">�??�??�?��?符串�??�?�??�?符串</param>
                /// <param name="number">�??�??�?�度,�?��?�?符串�?�度�??number�??</param>
                var l = childString.length;
                var s = "";
                for (var i = 0; i < number; i++) { s += childString; }
                return s;
            },
            getExtentsion: function (path, isWithPoint)
            {
                /// <summary>�?��??路�?中�??�??件�?��?�??</summary>
                /// <param name="path">路�?�?符串</param>
                /// <param name="isWithPoint">�?��?��??�?��?��?�".",�?认�??�?�</param>
                if (isWithPoint || isWithPoint == null)
                {
                    return path.substring(path.lastIndexOf("."));
                }
                else
                {
                    return path.substring(path.lastIndexOf(".") + 1);
                }
            },
            replace: function (source, search, newstr)
            {
                /// <summary></summary>
                var reg = new RegExp("\\" + search, "g");
                return source.replace(reg, newstr);

            }
        }
    } ();
    //#endregion

    //#region  Bx.DateTime�?��??�?��?�类
    Bx.DateTime = bxTimeHelper = function ()
    {
        /// <summary>�?��??�?��?��?�??�?��??�?�?认�?�?�第�?天为�?��?</summary>
        var config = { firstDayInWeek: 1//�?�?��??第�?天�?1为�??�??1�?7为�?��?�
        }
        return {
            getConfig: function ()
            {
                /// <summary>�??置�?��?�</summary>
                return config;
            },
            getMonthDay: function (year, month)
            {
                /// <summary>�?�询�??�?�??�??天�?�</summary>
                var solarMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
                if (month == 2)
                {
                    return (((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) ? 29 : 28);
                }
                else
                {
                    return (solarMonth[month - 1]);
                }
            },
            getCalendarMonth: function (year, month)
            {
                /// <summary>�?�询�??�??�?��??表�?�?�??�?个�?维�?��?�?格�?为[[dtstart1,dtend1],[dtstart2,dtend2]...]</summary>
                var weeks = new Array();
                var d = bxTimeHelper.getMonthDay(year, month); //�?�询该�??�??天�?�
                weeks.push([new Date(year + "/" + month + "/1")]);
                for (var i = 1; i <= d; i++)
                {
                    var dtDay1 = new Date(year + "/" + month + "/" + i); //�?��??�??�?�年�??�??�??�?�?�
                    var tempnum = dtDay1.getDay(); //�?��??�??�?��?��??�??�??�??�?��?0表示�?�
                    if (((config.firstDayInWeek == 1) && (tempnum == 0)) || ((config.firstDayInWeek == 7) && (tempnum == 6)) || i == d)
                    {

                        weeks[weeks.length - 1].push(dtDay1); //�?��?��??�??�??�?天
                        if (i < d)
                        {
                            weeks.push([new Date(dtDay1.getYear(), dtDay1.getMonth(), i + 1)]);
                        }
                    }
                }
                return weeks;
            },
            getWeek: function (d)
            {
                /// <summary>�?�询�??�?�?��??�??�?��?��??起�?�??�?止�?��??�?�?�??格�?为{startdate:Date,enddate:Date}</summary>
                /// <param name="d">�?�询�??�?��??�?Date对象</param>
                var dayOfWeek = d.getDay();
                if (dayOfWeek == 0) { dayOfWeek = 7; }
                var sDate = new Date(d), eDate = new Date(d);
                sDate.addDays(1 - dayOfWeek);
                eDate.addDays(7 - dayOfWeek);
                return { startdate: sDate, enddate: eDate };
            },
            getWeekDay: function (d)
            {
                /// <summary>�?�??�??�??�??中�??形�?</summary>
                var i = d.getDay();
                var as = new Array("�?�", "�?", "�?", "�?", "�??", "�?", "�?�");
                return as[i];
            },
            getWeekInMonth: function (d)
            {
                /// <summary>�?�询�??�?�?��??�?�该�??中�??第�?��?�</summary>
                /// <param name="d">�?�?�询�??�?��??</param>
                var weeks = bxTimeHelper.getCalendarMonth(d.getYear(), d.getMonth() + 1);
                var dInMonth = d.getDate();
                for (var i = 0; i < weeks.length; i++)
                {
                    //bxAlert(weeks[i][0].getDate(), weeks[i][1].getDate());
                    if ((dInMonth >= weeks[i][0].getDate()) && (dInMonth <= weeks[i][1].getDate()))
                    {
                        return i + 1;
                    }
                }
                return -1;
            },
            getMonthWeek: function (year, month, weekIndex)
            {
                /// <summary>�?�??�??�??�??�?�?��??起�?�??�?�止�?��??�?�?�??格�?{startdate:,enddate:}</summary>
                /// <param name="year">�?�?�询�??�??年</param>
                /// <param name="month">�?�?�询�??�?��?��??�?�?1�?�?</param>
                /// <param name="weekIndex">�?�?�询�??�?��?�?1�?�?</param>
                var d1 = new Date(year + "/" + month + "/1");
                var week1End = bxTimeHelper.getWeek(d1).enddate.getDate(); //第�?�?��??�??�?天
                var r = {};
                if (weekIndex == 1)
                {
                    r.startdate = new Date(year + "/" + month + "/1");
                    r.enddate = new Date(year + "/" + month + "/" + week1End);
                }
                else
                {
                    r.startdate = new Date(year + "/" + month + "/" + (week1End + 1 + (weekIndex - 2) * 7));
                    var ed = r.startdate.getDate() + 6;
                    if (ed <= bxTimeHelper.getMonthDay(year, month))
                    {
                        r.enddate = new Date(year, month - 1, ed);
                    }
                    else
                    {
                        r.enddate = new Date(year, month - 1, bxTimeHelper.getMonthDay(year, month));
                    }
                }
                return r;

            },
            parseSenconds: function (senconds)
            {
                /// <summary>�??�?�?�转�?�为�?��??�?对象</summary>
                /// <param name="senconds">�?��?�?�</param>
                ///#region 
                var r = { h: 0, m: 0, s: 0 };
                r.h = Math.floor(senconds / 3600);
                r.m = Math.floor((senconds - 3600 * r.h) / 60);
                r.s = senconds - r.h * 3600 - r.m * 60;
                return r;
                ///#endregion 

            },
            getAge: function (birthday)
            {
                /// <summary>计�?�??�?�</summary>
                /// <param name="birthday">�??�?��?�?��??格�?�??�?符串格�?</param>
                var d = new Date(birthday);
                var dn = new Date();
                var y = dn.getFullYear() - d.getFullYear();
                if (dn.getMonth() < d.getMonth()) { y--; }
                else if (dn.getMonth() > d.getMonth()) { }
                else { y = y - (dn.getDate() < d.getDate() ? 1 : 0); }
                return y;
            }

        }
    } ();
    //#endregion 

    //#region Bx.Cookie Cookie类
    Bx.Cookie = new Object();
    Bx.Cookie.Add = function (name, value, expirestime)
    {
        /// <summary>添�?�Cookie</summary>
        /// <param name="name">�??称</param>
        /// <param name="value">�?�</param>
        /// <param name="expirestime">�?�?��?��?�,�??�?�??�??,�?认�?�为0,为0�?�表示�??�?�?�?��?�?</param>
        var str = name + "=" + escape(value);
        if (expirestime > 0)
        {//为0�?��?设�?�?�??�?��?��?�?�?�?��?��?��?�cookie�?��?��?失
            var date = new Date();
            var ms = expirestime * 60 * 1000;
            date.setTime(date.getTime() + ms);
            str += "; expires=" + date.toGMTString();
        }
        document.cookie = str;
        return true;

    }
    Bx.Cookie.GetValue = function (name)
    {
        /// <summary>�?��??Cookie�?�</summary>
        /// <param name="name">�??称</param>
        var arrStr = document.cookie.split("; ");
        for (var i = 0; i < arrStr.length; i++)
        {
            var temp = arrStr[i].split("=");
            if (temp[0] == name) return unescape(temp[1]);
        }
        return "";
    }
    Bx.Cookie.Delete = function (name)
    {
        /// <summary>�?��?��??�?Cookie</summary>
        /// <param name="name">�??称</param>
        var date = new Date();
        date.setTime(date.getTime() - 10000);
        document.cookie = name + "=a; expires=" + date.toGMTString();
    }
    //#endregion

    //#region  Bx.NavigatorNavigator�?�?�?�类�?�?
    Bx.Navigator = new Object();
    Bx.Navigator.Info = bxNavigator = function ()
    {
        /// <summary>�?�?�?�信�?�对象</summary>
        var rObj = { IsIE: false, IsIE6: false, IsIE7: false, IsIE8: false, IsIE9: false, IsFireFox: false, IsOther: false };
        var str = navigator.userAgent.toLowerCase();

        if (/msie (8.0)/.test(str)) { rObj.IsIE = rObj.IsIE8 = true; } else if (/msie (7.0)/.test(str)) { rObj.IsIE = rObj.IsIE7 = true; } else if (/msie (9.0)/.test(str)) { rObj.IsIE = rObj.IsIE9 = true; } else if (/msie (5\.5|6\.)/.test(str)) { rObj.IsIE = rObj.IsIE6 = true; } else if (/firefox/.test(str)) { rObj.IsFireFox = true; } else { rObj.IsOther = true; }
        return rObj;
    } ();

    //#endregion

    //#region Bx.Style样�?类
    Bx.Style = bxStyle = function ()
    {
        return {
            setImgNoPic: function (obj, nopicUrl)
            {
                /// <summary>设置IMG�?签没�??�?��?�??�?�载�??误�?��??�?认�?��??</summary>
                var src = obj.attributes["src"].value;
                if (src == "" || src.indexOf(".html") > 0 || src.substr(src.length - 1) == "/") { obj.src = nopicUrl; }
                else { obj.onerror = function () { obj.src = nopicUrl; bxFixPng(obj); } }
            },
            xy: function (obj)
            {
                /// <summary>�?�??�??设置对象�?��?页�?��??�??�?</summary>
                var obj = $(obj), _xy = { x: obj.offsetLeft, y: obj.offsetTop }, pn = obj;
                while (pn = pn.offsetParent)
                {
                    _xy.y += pn.offsetTop;
                    _xy.x += pn.offsetLeft;
                }
                return _xy;
            },
            addCss: function (cssText)
            {
                /// <summary>�??页�?�添�?��?段样�?</summary>
                var s = document.createElement("style");
                s.type = "text/css";
                if (bxNavigator.IsIE)
                {
                    s.styleSheet.cssText = cssText;
                }
                else
                {
                    var frag = document.createDocumentFragment();
                    frag.appendChild(document.createTextNode(cssText));
                    s.appendChild(frag);
                }
                $T("head")[0].appendChild(s);
            },
            addClassName: function (obj, className)
            {
                /// <summary>添�?��??素�??�??�?类�??</summary>
                var className = className.trim();
                if (!bxCheckCssName(obj, className)) { obj.className += (" " + className); }
            },
            removeClassName: function (obj, className)
            {
                /// <summary>�?��?��??素�??�??�?类�??</summary>
                var className = className.trim();
                obj.className = obj.className.replace(eval("/ " + className + "|" + className + " /"), "");
            }
        }
    } ();
    Bx.Style.GetBodyDocumentElement = bxGetBodyDocumentElement = function (windowobj)
    {
        /// <summary>根�?��?�??�??�??�?�??�?��?��?��??Body对象�??DocumentElement对象</summary>
        /// <param name="windowobj">�??�?�document�??window对象�?�?认为�?�??页�?��??window对象</param>
        var doc = windowobj ? windowobj.document : document;
        return doc.compatMode == "CSS1Compat" ? doc.documentElement : doc.body;
    }
    Bx.Style.GetRuntimeStyle = bxGetRuntimeStyle = function (obj, propertyName)
    {
        /// <summary>�?��??对象�?�?�?��??样�?�?�?��?�,�??�?��??�??�??�?�??CSS�?�?��?�</summary>
        /// <param name="obj">�?�?��??�?�?��?��??对象</param>
        /// <param name="propertyName">CSS�?�?��??称�?�?�容Javascript�?�?��??称</param>
        var v = null;
        var propertyName = bxNavigator.IsFireFox ? propertyName.replace(/([A-Z])/g, function (a) { return "-" + a.toLowerCase(); }) : propertyName.replace(/(-\w)/g, function (a) { return (a.substring(1, 2).toUpperCase()); });
        try
        {
            if (obj.currentStyle) { v = obj.currentStyle[propertyName]; } else { v = window.getComputedStyle(obj, null).getPropertyValue(propertyName); } return v;
        }
        catch (e) { return ""; }
    }
    Bx.Style.GetBoxInfo = bxGetBoxInfo = function (obj)
    {
        /// <summary>�?�询�??�?模�??信�?��?��?�?�??�?�为�?{left:px,top:px,width:px,height:px,border:{top:px,left:px,right:px,bottom:px},margin:{top:px,left:px,right:px,bottom:px}}</summary>
        /// <param name="obj">�?�?�询�??对象</param>
        var obj = $(obj);
        var r = new Object();
        r.border = new Object();
        r.border.top = parseInt(obj.css("border-top-width")); if (isNaN(r.border.top)) { r.border.top = 0; }
        r.border.left = parseInt(obj.css("border-left-width")); if (isNaN(r.border.left)) { r.border.left = 0; }
        r.border.right = parseInt(obj.css("border-right-width")); if (isNaN(r.border.right)) { r.border.right = 0; }
        r.border.bottom = parseInt(obj.css("border-bottom-width")); if (isNaN(r.border.bottom)) { r.border.bottom = 0; }
        r.padding = new Object();
        r.padding.top = parseInt(obj.css("padding-left")); if (isNaN(r.padding.top)) { r.padding.top = 0; }
        r.padding.right = parseInt(obj.css("padding-right")); if (isNaN(r.padding.right)) { r.padding.right = 0; }
        r.padding.left = parseInt(obj.css("padding-left")); if (isNaN(r.padding.left)) { r.padding.left = 0; }
        r.padding.bottom = parseInt(obj.css("padding-bottom")); if (isNaN(r.padding.bottom)) { r.padding.bottom = 0; }
        r.left = obj.offsetLeft;
        r.top = obj.offsetTop;
        r.width = obj.offsetWidth - r.padding.left - r.padding.right - r.border.left - r.border.right;
        r.height = obj.offsetHeight - r.padding.top - r.padding.bottom - r.border.top - r.border.bottom;
        return r;
    }
    Bx.Style.GetBackgroundImageUrl = function (obj)
    {
        /// <summary>�?��??�??�?对象�??url形�?�?符串中�??�??�?��?��??路�?</summary>
        /// <param name="obj">�?��??对象,�?�为对象类�??�??�?符串,�?符串须为url(...)格�?</param>
        if (typeof (obj) == "object") { obj = obj.css("background-image"); }
        return obj.replace(/url|\(|\)|'|"/ig, "");
    }
    Bx.Style.GetClassNames = function (obj)
    {
        /// <summary>�?��??�?签对象�??CSS类�??称�?��?</summary>
        /// <param name="obj">对象表达�?</param>
        obj = $(obj);
        var name = obj.className.split(/ +/);
        var cns = new Array();
        for (var i = 0; i < name.length; i++)
        {
            if (name[i] != "" && name[i] != " ")
            {
                cns[cns.length] = name[i];
            }
        }
        return cns;
    }
    Bx.Style.GetObjTopY = function (obj)
    {
        /// <summary>�?��??对象顶�?��?�对�?�?页左�?�?�??Y�??�?</summary>
        return $(obj).xy().y;
    }
    Bx.Style.GetObjLeftX = function (obj)
    {
        /// <summary>�?��??对象左侧�?�对�?�?页左�?�?�??X�??�?</summary>
        return $(obj).xy().x;
    }

    Bx.Style.SetAlignCenterInParent = function (obj, type)
    {
        /// <summary>设置对象�?�?�?��?�?�中�?�</summary>
        /// <param name="obj">�?�?中�??对象</param>
        /// <param name="type">�?中�?��?,�?��??�?�为"x","y","both",�?认both</param>
        var obj = $(obj);
        var pw = obj.parentNode.offsetWidth;
        var ph = obj.parentNode.offsetHeight;
        var pos = Bx.Style.GetRuntimeStyle(obj, "position");

        if (pos == "static")
        {
            //obj.style.position = "relative";
            return;
        }
        var tw = obj.offsetWidth;
        var th = obj.offsetHeight;
        if (type == "y" || type == "both")
        {
            obj.style.top = (ph / 2 - th / 2) + "px";

        }
        if (type == "x" || type == "both")
        {
            obj.style.left = "50%";
            obj.style.marginLeft = (-1 * tw / 2) + "px";
        }
    }
    Bx.Style.SetAlignCenterInWindow = function (obj, type)
    {
        /// <summary>设置对象�?�?�?�?�?��?�?�中�?�</summary>
        /// <param name="obj">�?�?中�??对象</param>
        /// <param name="type">�?中�?��?,�?��??�?�为"x","y","both",�?认both</param>
        obj = $(obj);
        var winHeight, winWidth, winLeft, winTop;
        var oWidth = obj.offsetWidth, oHeight = obj.offsetHeight;
        var objBody = Bx.Style.GetBodyDocumentElement();
        winHeight = objBody.clientHeight;
        winWidth = objBody.clientWidth;
        winLeft = objBody.scrollLeft, winTop = objBody.scrollTop;

        if (type == "x" || type == "both" || type == null)
        {
            obj.style.left = winLeft + winWidth / 2 - oWidth / 2 + "px";
        }
        if (type == "y" || type == "both" || type == null)
        {
            obj.style.top = winTop + winHeight / 2 - oHeight / 2 + "px";
        }
        if (obj.getAttribute("SetAlignCenterInWindow"))
        {
            if (obj.parentNode.parentNode == null)
            {
                var o = obj.getAttribute("SetAlignCenterInWindow");
                window.SetAlignCenterInWindowArray.Remove(o);
                Bx.Sys.RemoveEvent(window, "onresize", o);
                obj.setAttribute("SetAlignCenterInWindow", false);
            }
        }
        else
        {
            if (!window.SetAlignCenterInWindowArray)
            {
                window.SetAlignCenterInWindowArray = new Array();
            }
            var f = window.SetAlignCenterInWindowArray[window.SetAlignCenterInWindowArray.length] = function ()
            {
                Bx.Style.SetAlignCenterInWindow(obj, type);
            }
            Bx.Sys.AddEvent(window, "onresize", f);
            obj.setAttribute("SetAlignCenterInWindow", f);


        }
    }
    Bx.Style.SetPostionInWindow = function (obj, left, top, right, bottom)
    {
        /// <summary>设置对象�?�对�?�?�?�?��?�?��??�?置</summary>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <param name=""></param>
        var winLeft, winTop;
        var bd = bxGetBodyDocumentElement();
        winLeft = bd.scrollLeft, winTop = bd.scrollTop;
        obj = $(obj);
        if (left != null)
        {
            obj.style.left = left + winLeft + "px";
        }
        if (top != null)
        {
            obj.style.top = top + winTop + "px";
        }

    }

    bxFixPng = function (srcElement, isAuto)
    {
        /// <summary>修�?IE6�?�?签�??�?��??PNG</summary>
        /// <param name="imgObj">修正�?签</param>
        /// <param name="isAuto">�?认True:�?��?��?��?��?��?�??并修�?�?False:强�?�修�?</param>
        if (bxNavigator.IsIE6 && bxPlugin.run("ie6fix")) { bxIe6Png.fixSrc(srcElement); bxIe6Png.fixBackground(srcElement); }
    }
    Bx.Style.ShowBodyInfo = function ()
    {
        var bd = Bx.Style.GetBodyDocumentElement();
        var s = "";
        s += "\r\n�?页�?��?�?��??宽�?" + bd.clientWidth;
        s += "\r\n�?页�?��?�?��??�?�?" + bd.clientHeight;
        s += "\r\n�?页�?��?�?��??宽�?" + bd.offsetWidth + "  (�??�?�边线�??宽)";
        s += "\r\n�?页�?��?�?��??�?�?" + bd.offsetHeight + "  (�??�?�边线�??宽)";
        s += "\r\n�?页正�??�?��??宽�?" + bd.scrollWidth;
        s += "\r\n�?页正�??�?��??�?�?" + bd.scrollHeight;
        s += "\r\n�?页被�?��?��??�?�?" + bd.scrollTop;
        s += "\r\n�?页被�?��?��??左�?" + bd.scrollLeft;
        s += "\r\n�?页正�??�?��??�?�?" + window.screenTop;
        s += "\r\n�?页正�??�?��??左�?" + window.screenLeft;
        s += "\r\n�?�?�??辨�??�??�?�?" + window.screen.height;
        s += "\r\n�?�?�??辨�??�??宽�?" + window.screen.width;
        s += "\r\n�?�?�?��?�工�?�?��?度�?" + window.screen.availHeight;
        s += "\r\n�?�?�?��?�工�?�?�宽度�?" + window.screen.availWidth;
        alert(s);
    }
    Bx.Style.SetAlpha = bxSetAlpha = function (obj, opacityValue)
    {
        /// <summary>设置�?签对象�??�??度</summary>
        /// <param name="obj">�?设置�??�?签对象</param>
        /// <param name="opacityValue">�??�??�?�,0~100</param>
        var obj = $(obj);
        if (bxNavigator.IsIE)
        {
            var f = obj.filters["alpha"];
            f = f ? f : obj.filters["progid:DXImageTransform.Microsoft.Alpha "];
            if (f) { if (opacityValue >= 0) { f.enabled = true; f.opacity = opacityValue; } else { f.enabled = false; } }
            else if (opacityValue >= 0) { obj.style.filter = (bxGetRuntimeStyle(obj, "filter") + " " + " alpha(opacity=" + opacityValue + ")").trim(); }
        }
        else
        {
            opacityValue = opacityValue / 100;
            obj.style.opacity = opacityValue >= 0 ? opacityValue : 1;
        }
    }
    Bx.Style.SetWindowAlpha = function (opacityValue, colorValue, windowSet, features)
    {
        /// <summary>设置�?�个�?�?�?�?��??�??�??度,�?�使�?页�??�??</summary>
        /// <param name="opacityValue">�??�??�?�,0~100</param>
        /// <param name="colorValue">�??�?�?�?��?��?�?认为�??�??�?�Transparent</param>
        /// <param name="windowSet">�?设置�??window对象�?�?认为window.top�?�顶�?�?�?�</param>
        var cv;
        if (colorValue)
        {
            cv = colorValue;
        }
        else
        {
            cv = "Transparent";
        }
        var pw = windowSet ? windowSet : window.top, dmt = pw.document, pnode = dmt.body;
        if (bxNavigator.IsIE8 || bxNavigator.IsIE9 || Bx.Navigator.Info.IsFireFox) { pnode = dmt.body.parentNode; }
        var aDiv = dmt.createElement("div");
        if (bxNavigator.IsIE)
        {
            aDiv.style.cssText = "position:absolute;top:0px;left:0px ;width:100%;height:100%;bottom:0px;margin-bottom:0px;background-color:" + cv + ";filter:alpha(opacity=" + opacityValue + "); ";
        }
        else
        {
            aDiv.style.cssText = "position:absolute;top:0px;left:0px ;width:100%;height:100%;bottom:0px;background-color:" + cv + ";-moz-opacity:" + opacityValue / 100 + ";opacity:" + opacityValue / 100 + " ;";
        }
        aDiv.style.height = pnode.scrollHeight + "px";
        aDiv.style.width = pnode.scrollWidth + "px";
        pnode.appendChild(aDiv);
        var childs = pnode.childNodes;
        var z = 999;
        var max = bxGetProperty(features, "maxdepth", 9000);
        for (var i = 0; i < childs.length; i++)
        {
            var z2 = parseInt(bxGetRuntimeStyle(childs[i], "z-index"));
            if (z2 != NaN && z2 >= z && z2 <= max)
            {
                z = z2 + 1;
            }
        }
        aDiv.style.zIndex = z;
        //修�?IE6 Select Bug
        if (bxNavigator.IsIE6)
        {
            var sels = $T("select", document.body);
            for (var i = 0; i < sels.length; i++)
            {
                var sel = sels[i];
                if (bxGetRuntimeStyle(sel, "visibility") != "hidden") { sel.isbxalpha = bxGetRuntimeStyle(sel, "visibility"); sel.style.visibility = "hidden"; }
            }
        }
        return aDiv;
    }

    Bx.Style.ClearWindowAlpha = function (alphaObj)
    {
        /// <summary>�?�?��?�SetWindowAlpha�?��?设置�??�?�?�??�??度</summary>
        /// <param name="alphaObj">�?�SetWindowAlpha�?��?�?�??�??�?��??对象</param>

        var obj = $(alphaObj);
        if (obj)
        {
            obj.parentNode.removeChild(obj);
        }
        //修�?IE6 Select Bug
        if (Bx.Navigator.Info.IsIE6)
        {
            var sels = $T("select", document.body);
            for (var i = 0; i < sels.length; i++)
            {
                var sel = sels[i];
                if (sel.isbxalpha) { sel.style.visibility = sel.isbxalpha; sel.isbxalpha = null; }
            }
        }
    }
    Bx.Style.CheckCssName = bxCheckCssName = function (obj, cssName)
    {
        /// <summary>�?�?对象�?��?��?��??�??�?Css类�??</summary>
        var obj = $(obj);
        if (obj.className)
        {
            return obj.className.split(" ").IndexOf(cssName) >= 0;
        }
        return false;
    }
    //#endregion

    //#region Bx.MessageBox 模�??对�?�?
    bxOpenWindow = function (title, url, windowStyle, closeStyle, feature, closeFunction, showWindow)
    {
        /// <summary>�??�?�?个模�??�?�?�,�??容为�??�?�??URL</summary>
        /// <param name="url">�?�??�?�??页�?�URL</param>
        /// <param name="title">�?�?��?�?</param>
        /// <param name="feature">�?�?��?��?</param>
        /// <param name="showWindow">�?�载window对象</param>             
        if (bxPlugin.run("messagebox"))
        {
            return Bx.MessageBox.OpenWindow(title, url, windowStyle, closeStyle, feature, closeFunction, showWindow);
        }
        else
        {
            return null;
        }
    }
    bxCloseOpenWindow = function (index)
    {
        /// <summary>�?��?��?� Bx.MessageBox.OpenWindow �?� bxOpenWindow �??�?�??�?�?�</summary>
        /// <param name="index">�?�?��?��??�?�?�索�?�?�?认为�?�??�??页�?��?�?�</param>
        if (bxPlugin.run("messagebox")) { Bx.MessageBox.CloseOpenWindow(index); }

    }
    //#endregion

    //#region Bx.Ajax GmrAjax类
    Bx.Ajax = bxAjax = function ()
    {
        function ajax()
        {
            /// <summary>Ajax对象</summary>
            var newAjax = bxAjax.getXmlHttpRequest();
            var requestUrl = "", requestAsync = true, userName = "", userPassword = "", contentType = "application/x-www-form-urlencoded";
            var returnCall = function ()
            {
                /// <summary>�??�?�?��?�,�?�??�?��?�?��?��??正常�?�?��?就�??�?�??�??�??容�?�?��?�?�?��??�?�??�?</summary>
                if (newAjax.readyState == 4 && newAjax.status == 200) { readyFunction(); }
            }
            var readyFunction = function ()
            {
                /// <summary>�?认�?�载�?�??�?�??�?��?�</summary>
            }
            var thisObj = this;
            return {
                setContentType: function (value)
                {
                    /// <summary>设置�??对Send()�?��?�??Content-type�?�,�?��?该�?��?�?�?�??设置�?�??�??�?�</summary>
                    /// <param name="value">�?设置�??�?�,�?认为"application/x-www-form-urlencoded"</param>
                    var oldType = contentType;
                    if (value != null) { contentType = value; }
                    return oldType;
                },
                setCallFunction: function (callFunction)
                {
                    /// <summary>设置�??�?�?��?�</summary>
                    returnCall = callFunction;
                },
                setReadyFunction: function (readyCallFunction)
                {
                    /// <summary>设置�?�载�?�??�??�??�?�??�?��?�,�?�??�?�?��?SetCallFunction()�?��?设置�?�?��??�??�?�?��?�,�?��?��?�?�?�?起�??�?�</summary>
                    /// <param name="readyCallFunction">�?�载�?�??�??�??�?�??�?��?�</param>
                    if (readyCallFunction != null)
                    {
                        readyFunction = readyCallFunction;
                    }
                },
                open: function (url, callFunction, isAsync)
                {
                    /// <summary>AJAX对象�??OPEN�?��?</summary>
                    /// <param name="url">请�?�??URL�?��??</param>
                    /// <param name="callFunction">�??�?�?��?�,�?�??�?�?��??�?��?�??�?��?认�??�?�?��?�</param>
                    /// <param name="isAsync">�?��?��??�?��?步模�?,�?认�??�?��?步</param>

                    if (typeof (url) == 'undefined')
                    {
                        return false;
                    }
                    requestUrl = url;
                    if (callFunction)
                    {
                        this.setCallFunction(callFunction);
                    }
                    if (isAsync != null)
                    {
                        requestAsync = isAsync;
                    }
                },
                close: function ()
                {
                    /// <summary>�??�?�??�??</summary>
                    newAjax.abort();
                },
                setUser: function (username, userpassword)
                {
                    /// <summary>设置�?��?��??�??�?�?,�?认为空</summary>
                    if (username != null)
                    {
                        userName = username;
                        if (userpassword != null)
                        {
                            userPassword = userpassword;
                        }
                    }
                },
                send: function (value)
                {
                    /// <summary>�??�??</summary>

                    if (typeof (requestUrl) == 'undefined')
                    {
                        return false;
                    }
                    if (typeof (returnCall) == 'undefined')
                    {
                        return false;
                    }
                    if (typeof (value) == 'undefined')
                    {
                        //使�?�Get�?��?�?�?请�?

                        if (typeof (userName) == 'undefined' || userName.length == 0)
                        {
                            newAjax.open("GET", requestUrl, requestAsync);
                        }
                        else
                        {
                            newAjax.open("GET", requestUrl, requestAsync, userName, userPassword);
                        }
                        newAjax.onreadystatechange = returnCall; //设置�?��?�?��??�??�?�?�??�?��?��?��??
                        newAjax.send(null); //�??�??
                        if (bxNavigator.IsFireFox && !requestAsync)
                        {
                            returnCall();
                        }
                    }
                    else
                    { //使�?�POST�?��?�?�?请�?
                        //alert("ok");
                        if (typeof (userName) == 'undefined' || userName.length == 0)
                        { newAjax.open("POST", requestUrl, requestAsync); }
                        else
                        {
                            newAjax.open("POST", requestUrl, requestAsync, userName, userPassword);
                        }
                        newAjax.onreadystatechange = returnCall; //设置�?��?�?��??�??�?�?�??�?��?��?��??
                        newAjax.setRequestHeader("Content-Length", value.length);
                        newAjax.setRequestHeader("Content-type", contentType);
                        //newAjax.setRequestHeader("Content-type", "text/xml");
                        newAjax.send(value); //�??�??
                        if (bxNavigator.IsFireFox && !requestAsync)
                        {
                            returnCall();
                        }

                    }
                },
                sendXml: function (value)
                {
                    /// <summary>�??�??text/xml格�?�??�?��?�</summary>
                    /// <param name="value">�?�??�??�??�?��?�</param>

                    var conType = this.setContentType("text/xml");
                    this.send(value);
                    this.setContentType(conType);
                },
                getXmlHttpObject: function ()
                {
                    /// <summary>�?��??�??�?��??�??�??XMLHttpRequest对象</summary>
                    return newAjax;
                },
                getResponseText: function ()
                {
                    /// <summary>�?��??客�?�端�?��?��?��??HTTP�??�?�??�??�?��??容</summary>    
                    return newAjax.responseText;
                },
                getResponseXML: function ()
                {
                    /// <summary>�?��??�?��?��?��?�?��??HTTP�??�?�?�(readyState为4)�??述XML�??�?</summary>

                    return newAjax.responseXML;
                },
                getResponseBody: function ()
                {
                    /// <summary></summary>

                    return newAjax.responseBody;
                },
                getResponseStream: function ()
                {
                    return newAjax.responseStream;
                }
            }
        }

        return {
            getXmlHttpRequest: function ()
            {
                /// <summary>�?��??�?个XmlHttpRequest对象,�?�容�??�?�?�?�</summary>
                var name = false;
                try
                {
                    name = new ActiveXObject("Msxml2.XMLHTTP");

                }
                catch (e)
                {
                    try
                    {
                        name = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e)
                    {
                        if (typeof XMLHttpRequest != 'undefined')
                        {
                            try
                            {
                                name = new XMLHttpRequest();
                            }
                            catch (e)
                            {
                                if (window.createRequest)
                                {
                                    try
                                    {
                                        name = window.createRequest();
                                    }
                                    catch (e)
                                    {
                                        name = false;
                                    }
                                }
                            }
                        }
                    }
                }
                return name;
            },
            getAjaxInstance: function ()
            {
                /// <summary>�?��??�?个Ajax�??�?对象�?�?</summary>
                var a = new ajax();
                return a;
            },
            getURL: function (url, funReceive, isAsync)
            {
                /// <summary>�?�??�?URL�?�get�?��?�?��??�?��?�</summary>
                /// <param name="url">请�?�??URL</param>
                /// <param name="funReceive">�??�?�?��?�</param>
                /// <param name="isAsync">�?��?��?��?步请�?</param>

                var myAjax = new ajax();
                myAjax.setReadyFunction(function ()
                {
                    var response = {
                        stream: myAjax.getResponseStream(),
                        body: myAjax.getResponseBody(),
                        xml: myAjax.getResponseXML(),
                        text: myAjax.getResponseText(),
                        ajax: myAjax
                    }
                    funReceive(response);
                });
                var isAsync = isAsync == false ? false : true;
                myAjax.open(url, null, isAsync);
                myAjax.send();
            }
        }
    } ();
    bxPageAPI = function (apiPageUrl, method, arrayParamsSend, receiveFunction, featuresParams)
    {
        /// <summary>�?��?GmrAPI请�?</summary>
        /// <param name="apiPageUrl">�?��?�页�?��?��??�?�?�??设为空�??�?认为�?�页�?�</param>
        /// <param name="method">请�?�??�?��?�??称</param>    
        /// <param name="arrayParams">�??�?��??�?��??称�??�??�?��?��??�?��?</param>
        /// <param name="receiveFunction">�?�??�?��?�?��?�</param>
        /// <param name="featuresParams">�?��?�?��??�?�对象</param>

        if (bxPlugin.run("xmlapi"))
        {
            Bx.XML.API.PageAPI(apiPageUrl, method, arrayParamsSend, receiveFunction, featuresParams);
        }
    }

    //#endregion

    //#region Bx.XML XML�?��?�类
    Bx.XML = new Object();
    Bx.XML.LoadXmlFile = function (xmlFile)
    {
        /// <summary>�?�载XML�??件,�?�??XmlDom对象</summary>
        /// <param name="xmlFile">�?�载�??xml�??件URI</param>

        var xmlDoc;
        if (window.ActiveXObject)
        {
            xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
            xmlDoc.async = false;
            xmlDoc.load(xmlFile);
        }
        else if (document.implementation && document.implementation.createDocument)
        {
            xmlDoc = document.implementation.createDocument('', '', null);
            xmlDoc.async = false;
            xmlDoc.load(xmlFile);
        }
        else
        {
            return null;
        }
        return xmlDoc;
    }
    Bx.XML.LoadXmlString = function (xmlString)
    {
        /// <summary>�?xml格�?�?符串中�?�载XmlDom对象</summary>
        /// <param name="xmlString">XML格�?�?符串</param>
        var xmlDoc;
        if (window.ActiveXObject)
        {
            xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
            xmlDoc.async = false;
            xmlDoc.loadXML(xmlString);
        }
        else if (document.implementation && document.implementation.createDocument)
        {
            var oParser = new DOMParser();
            var xmlDoc = oParser.parseFromString(xmlString, "text/xml");
        }
        else
        {
            return null;
        }
        return xmlDoc;
    }
    /**
    * Xml解�??�?��??
    */
    if (!bxNavigator.IsIE)
    {
        try
        {
            XMLDocument.prototype.selectNodes = function (cXPathString, xNode)
            {
                if (!xNode) { xNode = this; }
                var oNSResolver = this.createNSResolver(this.documentElement)
                var aItems = this.evaluate(cXPathString, xNode, oNSResolver,
                   XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
                var aResult = [];
                for (var i = 0; i < aItems.snapshotLength; i++)
                {
                    aResult[i] = aItems.snapshotItem(i);
                }
                return aResult;
            }
            // prototying the Element
            Element.prototype.selectNodes = function (cXPathString)
            {
                if (this.ownerDocument.selectNodes)
                {
                    return this.ownerDocument.selectNodes(cXPathString, this);
                }
                else { throw "For XML Elements Only"; }
            }
            // prototying the XMLDocument
            XMLDocument.prototype.selectSingleNode = function (cXPathString, xNode)
            {
                if (!xNode) { xNode = this; }
                var xItems = this.selectNodes(cXPathString, xNode);
                if (xItems.length > 0)
                {
                    return xItems[0];
                }
                else
                {
                    return null;
                }
            }
            // prototying the Element
            Element.prototype.selectSingleNode = function (cXPathString)
            {
                if (this.ownerDocument.selectSingleNode)
                {
                    return this.ownerDocument.selectSingleNode(cXPathString, this);
                }
                else { throw "For XML Elements Only"; }
            }

            XMLDocument.prototype.transformNode = function (styleDocument)
            {
                var xslProc = new XSLTProcessor();
                xslProc.importStylesheet(styleDocument);
                //alert(styleDocument.xml);
                var mDoc = xslProc.transformToFragment(this, document);
                return mDoc.xml;
            }
            Element.prototype.transformNode = function (styleDocument)
            {
                var xslProc = new XSLTProcessor();
                xslProc.importStylesheet(styleDocument);
                //alert(styleDocument.xml);
                //var mDoc=xslProc.transformToDocument(xDoc);
                var mDoc = xslProc.transformToFragment(this, document);
                return mDoc.xml;
            }

            XMLDocument.prototype.__defineGetter__("xml", function ()
            {
                var xmlStr;
                try
                {
                    xmlStr = new XMLSerializer().serializeToString(this);
                }
                catch (ex)
                {
                    var d = document.createElement(" div ");
                    d.appendChild(this.cloneNode(true));
                    xmlStr = d.innerHTML;
                }
                var re = / encoding=\"UTF-8\"/g
                xmlStr = xmlStr.replace(re, "");
                return xmlStr;
            });
            Element.prototype.__defineGetter__("xml", function ()
            {
                var xmlStr;
                try
                {
                    xmlStr = new XMLSerializer().serializeToString(this);
                }
                catch (ex)
                {
                    var d = document.createElement(" div ");
                    d.appendChild(this.cloneNode(true));
                    xmlStr = d.innerHTML;
                }
                var re = / encoding=\"UTF-8\"/g
                xmlStr = xmlStr.replace(re, "");
                return xmlStr;
            });
            DocumentFragment.prototype.__defineGetter__("xml", function ()
            {
                var xmlStr;
                try
                {
                    xmlStr = new XMLSerializer().serializeToString(this);
                }
                catch (ex)
                {
                    var d = document.createElement(" div ");
                    d.appendChild(this.cloneNode(true));
                    xmlStr = d.innerHTML;
                }
                var re = / encoding=\"UTF-8\"/g
                xmlStr = xmlStr.replace(re, "");
                return xmlStr;
            });

            XMLDocument.prototype.__defineGetter__("text", function ()
            {
                return this.firstChild.textContent;
            });
            Element.prototype.__defineGetter__("text", function ()
            {
                return this.textContent;
            });
        }
        catch (e) { }
    }
    //#endregion

    //#region Bx.Validator�?�?�?�件
    bxValSetMessage = function (varControl, isOk, message)
    {
        /// <summary>设置�?�?�?�件�?�?��??�?��??</summary>
        /// <param name="varControl">�?设置�??�?�?�??�?�件</param>
        /// <param name="isOk">设置�?��??为True�?�??�?�?�?�?Fasle�?�?��??�?�?�?�?null�?�?��?�?�?�?</param>
        /// <param name="message">�?�?��??�?�</param>
        bxPlugin.run("validator", function ()
        {
            Bx.Validator.SetMessage(varControl, isOk, message);
        });
    }
    bxValMessage = "";
    bxVal = function (groupname)
    {
        /// <summary>�?�?�??�?�?�?�件�?�??�?�?�?�?�??True�?�??�?�?�??False</summary>
        if (bxPlugin.run("validator"))
        {
            return Bx.Validator.ValidateControls(groupname);
        }
        return false;
    }
    bxValInit = function ()
    {
        /// <summary>�??�?�??�?�?�?�件</summary>    
        if (bxPlugin.run("validator"))
        {
            Bx.Validator.Init();
        }
    }
    SysAddEvent(window, "onload", function ()
    {
        var vals = $A(document.body, "span", "isval");
        if (vals.length > 0)
        {
            bxValInit();
        }
    });
    //#endregion

    //#region Bx.Controls�?�件类
    Bx.Controls = new Object();
    Bx.Controls.TextSetRemark = bxTextSetRemark = function (objOrId, remarkString, isAutoHide, feathers)
    {
        /// <summary>设置�??�?��?�??�??示�??容信�?�</summary>
        /// <param name="objOrId">�?设置�??�??�?��?对象为ID</param>
        /// <param name="remarkString">�??示�??容</param>
        /// <param name="isAutoHide">�?�?��?�?��?��?��?��?��?��?��??�??,设为False�?��?�?�?��?��??�??�?�设为�??中�?��??;设为True�?��??�?�?��?��?空�??�?�</param>
        var obj = $(objOrId);
        obj.value = remarkString;
        var oldColorr = Bx.Style.GetRuntimeStyle(obj, "color")
        obj.setAttribute("oldFontColor", oldColorr);
        obj.style.color = bxGetProperty(feathers, "color", "gray");
        if (isAutoHide)
        {
            SysAddEvent(obj, "onfocus", function () { if (obj.value == remarkString) obj.value = ''; obj.style.color = obj.getAttribute("oldFontColor"); });
        }
        else
        {
            SysAddEvent(obj, "onfocus", function () { obj.select(); });
        }
        SysAddEvent(obj, "onblur", function () { if (obj.value == '') { obj.value = remarkString; obj.style.color = bxGetProperty(feathers, "color", "gray"); } });
    }
    Bx.Controls.Select = bxSelect = function ()
    {
        return {
            getSelectedOption: function (selObj)
            {
                /// <summary>�?�??�?�??�??�?�项对象</summary>
                return selObj.options[selObj.selectedIndex];
            }
        }
    } ();

    Bx.Controls.SelectAddOption = bxSelectAddOption = function (selObj, value, text)
    {
        /// <summary>�??�?�??�??表�?�?�?��?个项</summary>
        /// <param name="selObj">�?�??�?�??�??表�?�?�件</param>
        /// <param name="value">�?�</param>
        /// <param name="text">�??�?�</param>

        var sel = $(selObj);
        if (!sel) { return false; }
        var y = document.createElement('option');
        y.value = value;
        y.text = text;

        try
        {
            sel.add(y, null); // standards compliant
        }
        catch (ex)
        {
            sel.add(y); // IE only
        }
    }
    Bx.Controls.SelectSetOptions = bxSelectSetOptions = function (selObj, params)
    {
        /// <summary>设置�?�??�??�?��?�??�??项</summary>
        /// <param name="selObj">�?设置�??�??�?��?对象</param>
        /// <param name="params">�?�??该�??�?�系�?为�?个�?��?�??�?��?�??该�?��?�??�?�?��?为�?��?�?��?��?为�??�?��?�?�??该�??�?�系�??为两个�?��?�??�?��?�??第�?个为�?��?��?�?第�?个为�??�?��?��?�?�?�??该�??�?�系�??为1个�?符串�?�??使�?��??�?��??�??符计�?�?�?�??为�?个�??�?��?�??�?�?��?为�?��?�?��?��?为�??�?�</param>
        var sel = $(selObj);
        if (!sel) { return false; }
        sel.options.length = 0;
        if (arguments.length == 1 || params == null) { return false; }
        else if (arguments.length == 2 && params.constructor == window.Array)
        {
            for (var i = 0; i + 1 < params.length; i = i + 2)
            {
                bxSelectAddOption(sel, params[i], params[i + 1]);
            }

        }
        else if (arguments.length == 3 && params.constructor == window.Array && arguments[2].constructor == window.Array)
        {
            var m = Math.min(params.length, arguments[2].length);
            for (var i = 0; i < m; i++)
            {
                bxSelectAddOption(sel, params[i], arguments[2][i]);
            }
        }
        else if (arguments.length == 2 && typeof (params) == "string")
        {
            var as = params.split(",");
            for (var i = 0; i + 1 < as.length; i = i + 2)
            {
                bxSelectAddOption(sel, as[i], as[i + 1]);
            }
        }
        else if (arguments.length >= 3)
        {
            for (var i = 1; i + 1 < arguments.length; i = i + 2)
            {
                bxSelectAddOption(sel, arguments[i], arguments[i + 1]);
            }
        }
        else
        {
            return false;
        }
        return true;
    }
    Bx.Controls.RadioGetValue = bxRadioGetValue = function (name, defaultValue)
    {
        /// <summary>�?��??radio�?�件�??�?�</summary>
        /// <param name="name">name�?�</param>
        /// <param name="defaultValue">�?�??没�??�??�?�项�?��??�?认�?�??�?�</param>
        var rs = $N(name);
        for (var i = 0; i < rs.length; i++)
        {
            var obj = rs[i];
            if (obj.checked) { return obj.value; }
        }
        if (defaultValue != null) { return defaultValue; } else { return null; }
    }
    Bx.Controls.TextAreaAutoHeight = bxTextAreaAutoHeight = function (obj)
    {
        /// <summary>设置textarea�?�件根�?��??容�?��?��?�?��?度以�?�?��?��?�?��?�</summary>
        /// <param name="obj">�?设置�??对象</param>
        var obj = $(obj);
        SysAddEvent(obj, "onpropertychange", function () { obj.style.posHeight = obj.scrollHeight; });
        SysAddEvent(obj, "onfocus", function () { obj.style.posHeight = obj.scrollHeight; });
    }
    //#endregion    

    //#region Bx.Motion �?��?��??�?
    bxMotion = function ()
    {
        /// <summary>�?��?��??�?�??</summary>
        return {
            Tween: function (obj, attributes, options)
            {
                /// <summary>�??建补�?��?��?�</summary>
                /// <param name="obj">�??�?�?��?��??对象</param>
                /// <param name="attributes">�?��?��??�?��??�??对象�?�??�?�{ css �??称:{from:�??使�?�,to:�?�??�?�}...}{"width":{to:100},"height":{to:100}} //�??�?��?对象�??width�?height�?�?�??�?��?�大�?�100px</param>
                /// <param name="options">�??�?��??�??�??�?�{currentTime: 0, //�?��?��??使�??,�?认�?�为0,�?��??�?��?�;duration: 100, //�??续�?��?�,�?��?大,�?��?��??度�?�?�tweenType: "Linear", //Tween类�??(�?�?�类�??)easeType: "easeIn", //Tween�?�?�类�??,�??�??tweenType�?�?�onStart: null, //�?��?��?�?�?�触�??�?件 onEnd: null //�?��?��?�??�??触�??�?件}</param>

                var tw;
                bxPlugin.run("motion", function ()
                {
                    tw = new Bx.Motion.Tween();
                    tw.init(obj, attributes, options);
                });
                return {
                    play: function ()
                    {
                        /// <summary>�?��?��?��?�</summary>
                        tw.play();
                    },
                    stop: function ()
                    {
                        /// <summary>�??止�?��?�</summary>
                        tw.stop();
                    }
                };
            },
            Drag: function (obj, options)
            {
                var dg;
                bxPlugin.run("motion", function ()
                {
                    dg = new Bx.Motion.Drag(obj, options);
                });
                return dg;
            }
        }
    } ();
    //#endregion 


    //#region Bx.Tags �?签�??�?类
    Bx.Tag = bxTag = function ()
    {
        /// <summary>�?签�??�?类</summary>
        bxSys.extendDOMElement("css", function (cssName, value)
        {
            /// <summary>�?��??对象�?�?�?��??样�?�?�?��?�,�??�?��??�??�??�?�??CSS�?�?��?�</summary>
            /// <param name="obj">�?�?��??�?�?��?��??对象</param>
            /// <param name="cssName">CSS�?�?��??称�?�?�容Javascript�?�?��??称</param>
            if (value == null) { return bxGetRuntimeStyle(this, cssName); }
            else { eval("this.style." + cssName.replace(/(-\w)/g, function (a) { return (a.substring(1, 2).toUpperCase()); }) + "=value"); return this; }
        });
        bxSys.extendDOMElement("getByClass", function (className, isFirstNode)
        {
            /// <summary>�?��??对象�?�?�?�中类�??为�??�?�??称�??�?�?��?�??�?</summary>
            /// <param name="className">css类�??</param>
            /// <param name="isFirstNode">false:�?�??�??�??符�??�?�件�??�?�?��?��?;true:�?�??符�??�?�件�??第�?个�?�?�</param>
            var isFirstNode = isFirstNode == false ? false : true;
            var os = this.getElementsByTagName("*");
            var rs = [];
            for (var i = 0; i < os.length; i++)
            {
                if (bxStyle.CheckCssName(os[i], className))
                {
                    if (isFirstNode)
                    {
                        return $(os[i]);
                    }
                    else
                    {
                        rs.push($(os[i]));
                    }

                }
            }
            if (isFirstNode) { return null; }
            return rs;
        });
        bxSys.extendDOMElement("p", function (name, defaultValue)
        {
            /// <summary>�?�询对象�??�??�?�?�?��?�?�容�?签�?�?�</summary>
            /// <param name="name">�?�?�询�??�?�?��??称</param>
            /// <param name="defaultValue">�?�?�?��??该对象�?��?�??�?�</param>       
            return (this != null && (name in this)) ? this[name] : ((this.attributes && (this.attributes[name] != null)) ? this.attributes[name].value : (arguments.length == 2 ? defaultValue : null));
        });
        return {
            tabRowAddCell: function (row, td)
            {
                /// <summary>�??表格�?追�?��?个�??�??格</summary>
                if (td) { row.appendChild(td); return td; }
                return row.insertCell(row.cells.length);
            },
            tabAddRow: function (tab)
            {
                return tab.insertRow(tab.rows.length);
            },
            selGetValue: function (sel)
            {
                /// <summary>�?�询select�??�?�</summary>
                if (sel.selectedIndex < 0) { return null; }
                return sel.options[sel.selectedIndex].value;
            }
        }
    } ()
    //#endregion 

    //#region Bx.Plugin�??件�??�?类
    Bx.Plugin = bxPlugin = function ()
    {
        /// <summary>Plugins�??件�??�?类</summary>
        return {
            getInfo: function (name)
            {
                /// <summary>�?��??�??件信�?�</summary>
                /// <param name="name">�??件�??称</param>

                var name = name.toLowerCase();
                var ps = Bx.Environment.pluginList;
                for (var i = 0; i < ps.length; i++)
                {
                    if (name == ps[i].name)
                    {
                        return ps[i];
                    }
                }
                return null;
            },
            getURL: function (name)
            {
                /// <summary>�?��??�??件路�?</summary>
                /// <param name="name">�??件�??称</param>
                var f = this.getInfo(name);
                return f ? f.url : "";
            },
            run: function (name, fun, isAsync)
            {
                /// <summary>�?�?�??件并�?��?�?��?�?��?��?�?�??该�??件�?�?��?�载�?�??�??�?�载并�?�?�??件</summary>
                /// <param name="name">�??件�??称</param>
                /// <param name="fun">�?��?�?��?�</param>
                /// <param name="isAsync">�?��?��?��?步模�?��?�?认为False�?�?��??步模�?</param>
                var pi = this.getInfo(name);
                var isAsync = isAsync != null ? isAsync : false;
                if (eval(pi.checkVar) != null)
                {
                    if (fun) { fun(); }
                    return true;
                }
                else
                {
                    bxSys.runJsFile(Bx.Environment.GetWebSiteUrl(pi.url), function ()
                    {
                        if (eval(pi.checkVar) != null)
                        {
                            if (fun) { fun(); }
                        }
                    }, isAsync);
                    return (eval(pi.checkVar) != null);
                }
            },
            Others: function () { }
        }
    } ();
    //#endregion 

    //#region Flash�?�?�

    Bx.Pub.WriteFlash = bxWriteFlash = function (canvId, swfUrl, swfId, width, height, version, params, otherVariables)
    {
        /// <summary>�??�??�?容�?��?�?�Swf�?��?�</summary>
        /// <param name="canvId">�?�?�ID</param>
        /// <param name="swfUrl">swf�??件URL</param>
        /// <param name="width">宽度</param>
        /// <param name="height">�?度</param>
        /// <param name="version">�??�?�</param>
        /// <param name="swfId">�??�??�??对象ID</param>
        /// <param name="params">�?添�?��??�??�?�,json格�?</param>
        /// <param name="otherVariables">�?��?传�?��??�??�?��?json格�?</param>
        bxPlugin.run("flash", function ()
        {
            var sf = new SWFObject(swfUrl, swfId, width, height, version);
            if (params)
            {
                for (var key in params)
                {
                    if (params.hasOwnProperty(key))
                    {
                        sf.addParam(key, params[key]);
                    }
                }
            }
            if (otherVariables)
            {
                for (var key in otherVariables)
                {
                    if (otherVariables.hasOwnProperty(key))
                    {
                        sf.addVariable(key, otherVariables[key]);
                    }
                }
            }
            sf.write(canvId);
        }, false);

    }
    //#endregion

    //#region �?��?��?�载项
    if (bxNavigator.IsFireFox)
    {
        bxPlugin.run("fffix");
    }
    if (bxNavigator.IsIE6)
    {
        bxPlugin.run("ie6fix");
    }
    SysAddEvent(window, "onload", function ()
    {
        bxBatch($T("img"), function (m, i)
        {
            if (m.title == "" && m.alt != "")
            {
                m.title = m.alt;
            }
        });
        if ($C("divTab").length > 0)
        {
            bxPlugin.run("tab", function ()
            {
                bxTab.initDefault();
            }, true);
        }
    });
    //#endregion 


})();
