//导入网站配置信息
IncludeJs("/config/js/config.js");

var EW_LOADING = "<img src =\"/common/images/ajax-loader.gif\"/><br/>数据正在录入，请稍等...";

var EW_LOADING_SMALL = "<img src =\"/common/images/ajax-loading-circle.gif\" alt=\"正在加载中....\"/>";

function $(element) {
    return document.getElementById(element);
}
function $F(element) {
    return document.getElementById(element).value;
}

function GetNewCode() {
    return config.WebURL + "common/ValidateCode.ashx?" + Math.random();
}

//给客户端追加js脚本块
//funcName:函数名
//scriptText:函数内容
function attachScript(funcName, scriptText) {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.text = "function " + funcName + "(){" + scriptText + ";}";
    //document.getElementsByTagName("head")[0].appendChild(script)
    document.body.appendChild(script);
}

//给客户端追加隐藏表单
//eleName:表单名称
//value:表单值
function attachHiddleField(eleName, value) {
    var ele = document.createElement("input");
    ele.id = eleName;
    ele.name = eleName;
    ele.type = "hidden";
    ele.value = value;
    document.body.appendChild(ele);
}


//获取单选按钮组当前选中项的值
function $R(element) {
    var eles = document.getElementsByName(element);

    if (eles.length <= 0) return "";

    for (var i = 0; i < eles.length; i++) {
        if (eles[i].checked) {
            return eles[i].value;
        }
    }
    return "";
}

function Dialog(msg) {
    return window.confirm(msg);
}
function IE() {
    Browser = {
        IE: !!(window.attachEvent && !window.opera),
        Opera: !!window.opera,
        WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
        Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
        MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
    }
    return this.Browser.IE
}

/********************** firefox add event start ************************/
function __firefox() {
    HTMLElement.prototype.__defineGetter__("runtimeStyle", __element_style);
    window.constructor.prototype.__defineGetter__("event", __window_event);
    Event.prototype.__defineGetter__("srcElement", __event_srcElement);
}

function __element_style() {
    return (this.style);
}

function __window_event() {
    return (__window_event_constructor());
}

function __event_srcElement() {
    return this.target;
}

function __window_event_constructor() {
    if (document.all)
        return (window.event);
    var _caller = __window_event_constructor.caller;
    while (_caller != null) {
        var _argument = _caller.arguments[0];
        if (_argument) {
            var _temp = _argument.constructor;
            if (_temp.toString().indexOf("Event") != -1)
                return (_argument);
        }
        _caller = _caller.caller;
    }
    return (null);
}

if (window.addEventListener) {
    __firefox();
}

/********************** firefox add event end ************************/


/********************** 对象添加拖拽操作 ****************************/
var oDrag;
var ox, oy, nx, ny, dy, dx;
function drag(e, o) {
    var e = e ? e : event;
    var mouseD = IE() ? 1 : 0;
    if (e.button == mouseD) {
        oDrag = $(o);
        ox = e.clientX;
        oy = e.clientY;
    }
}
function dragPro(e) {
    if (oDrag != null) {
        var e = e ? e : event;
        dx = parseInt(oDrag.style.left);
        dy = parseInt(oDrag.style.top);
        nx = e.clientX;
        ny = e.clientY;
        oDrag.style.left = (dx + (nx - ox)) + "px";
        oDrag.style.top = (dy + (ny - oy)) + "px";
        ox = nx;
        oy = ny;
    }
}
document.onmouseup = function() { oDrag = null; }
document.onmousemove = function(event) { dragPro(event); }
/********************** 对象添加拖拽操作结束 ****************************/

function IncludeJs(path) {
    var script = document.createElement('script');
    script.src = path;
    script.type = 'text/javascript';
    document.getElementsByTagName('head')[0].appendChild(script);
}

//设置图片的大小
function SetImgSize(imgObj, maxWidth, maxHeight) {
    if (undefined != maxWidth) {
        if (imgObj.width > maxWidth)
            imgObj.width = maxWidth;
    }
    if (undefined != maxHeight) {
        if (imgObj.height > maxHeight)
            imgObj.height = maxHeight;
    }
}
//取得Get传值中的参数
function GetQueryString(queryName) {
    var strURL = location.href;
    var index = strURL.lastIndexOf("?");
    if (index > 0) {
        var values = strURL.substr(index + 1);
        if (values.indexOf("&") > 0) {
            var arrQuery = values.split("&");
            for (i in arrQuery) {
                if (arrQuery[i].indexOf("=") > 0) {
                    var arr = arrQuery[i].split("=");
                    if (arr[0].toLowerCase() == queryName.toLowerCase()) {
                        return arr[1];
                    }
                }
            }
        }
        else {
            var arr = values.split("=");
            if (arr[0].toLowerCase() == queryName.toLowerCase()) {
                return arr[1];
            }
        }
    }
    return "";
}

//获取指定名称的cookie的值
function getCookie(objName) {
    var arrStr = document.cookie.split("; ");
    for (var i = 0; i < arrStr.length; i++) {
        var temp = arrStr[i].split("=");
        if (temp[0].toLowerCase() == objName.toLowerCase()) {
            return unescape(temp[1]);
        }
    }
    return "";
}

/*
* 获取 document.body 对象
*/
function GetDocumentBody() {
    if (typeof window.pageYOffset != 'undefined') {
        return indow.pageYOffset;
    }

    if (typeof document.compatMode != 'undefined' &&
         document.compatMode != 'BackCompat') {
        return document.documentElement;
    }

    if (typeof document.body != 'undefined') {
        return document.body;
    }
}

//取得页面尺寸
function getPageSize() {

    var docElem = document.documentElement
    //可见区域宽度
    this.width = self.innerWidth || (docElem && docElem.clientWidth) || document.body.clientWidth;
    //可见区域高度
    this.height = self.innerHeight || (docElem && docElem.clientHeight) || document.body.clientHeight;
    //页面的总高度
    this.docheight = Math.max(document.documentElement.scrollHeight, document.documentElement.clientHeight);
}

//取得对象尺寸
function getElementSize(elem) {
    this.width = elem.clientWidth || elem.style.pixelWidth;
    this.height = elem.clientHeight || elem.style.pixelHeight;
}


//计算滚动条像素
function getScrollPos() {

    var docElem = document.documentElement;

    this.scrollX = self.pageXOffset || (docElem && docElem.scrollLeft) || document.body.scrollLeft;

    this.scrollY = self.pageYOffset || (docElem && docElem.scrollTop) || document.body.scrollTop;
}

//使对象居为屏幕中央
function posToCenter(elem) {
    var scrollPos = new getScrollPos();
    var pageSize = new getPageSize();
    var emSize = new getElementSize(elem);

    var pageSizeWidth = pageSize.width;
    var pageSizeheight = pageSize.height;
    //emSize.height/emSize.width
    var x = Math.round(pageSizeWidth / 2) - (emSize.width / 2) + scrollPos.scrollX;
    var y = Math.round(pageSizeheight / 2) - (emSize.height / 2) + scrollPos.scrollY;
    elem.style.left = x + 'px';
    elem.style.top = y + 'px';
}

//获取鼠标位置
function mouseCoords() {
    var ev = ev || window.event;
    var tmpobj;
    if (typeof window.pageYOffset != 'undefined') {
        tmpobj = window.pageYOffset;
    }
    else if (typeof document.compatMode != 'undefined' &&
         document.compatMode != 'BackCompat') {
        tmpobj = document.documentElement;
    }
    else if (typeof document.body != 'undefined') {
        tmpobj = document.body;
    }

    if (ev.pageX || ev.pageY) {
        return { x: ev.pageX, y: ev.pageY };
    }
    return {
        x: ev.clientX + tmpobj.scrollLeft - tmpobj.clientLeft,
        y: ev.clientY + tmpobj.scrollTop - tmpobj.clientTop
    };
}

function insertHtml(where, el, html) {
    where = where.toLowerCase();
    if (el.insertAdjacentHTML) {
        switch (where) {
            case "beforebegin":
                el.insertAdjacentHTML('BeforeBegin', html);
                return el.previousSibling;
            case "afterbegin":
                el.insertAdjacentHTML('AfterBegin', html);
                return el.firstChild;
            case "beforeend":
                el.insertAdjacentHTML('BeforeEnd', html);
                return el.lastChild;
            case "afterend":
                el.insertAdjacentHTML('AfterEnd', html);
                return el.nextSibling;
        }
        throw 'Illegal insertion point -> "' + where + '"';
    }
    var range = el.ownerDocument.createRange();
    var frag;
    switch (where) {
        case "beforebegin":
            range.setStartBefore(el);
            frag = range.createContextualFragment(html);
            el.parentNode.insertBefore(frag, el);
            return el.previousSibling;
        case "afterbegin":
            if (el.firstChild) {
                range.setStartBefore(el.firstChild);
                frag = range.createContextualFragment(html);
                el.insertBefore(frag, el.firstChild);
                return el.firstChild;
            } else {
                el.innerHTML = html;
                return el.firstChild;
            }
        case "beforeend":
            if (el.lastChild) {
                range.setStartAfter(el.lastChild);
                frag = range.createContextualFragment(html);
                el.appendChild(frag);
                return el.lastChild;
            } else {
                el.innerHTML = html;
                return el.lastChild;
            }
        case "afterend":
            range.setStartAfter(el);
            frag = range.createContextualFragment(html);
            el.parentNode.insertBefore(frag, el.nextSibling);
            return el.nextSibling;
    }
    throw 'Illegal insertion point -> "' + where + '"';
}

/*
* 清空指定表单元素的值
*/
function ClearObjectValue() {
    var eles = arguments;
    for (i = 0; i < eles.length; i++) {
        $(eles[i] + '').value = '';
    }
}

/*
* 页面跳转
*/
function GoTo(url) {
    window.location.href = url;
}

/****************************** 对话框sAlert ************************************/
function alertmsg(returnValue, msg, url, strFlag) {
    if (typeof (returnValue) == "string") {
        sAlert(returnValue, msg, true);
        if (typeof (url) == "boolean") {
            return url;
        }
    }
    else {
        sAlert(msg, url, true);

        if (typeof (returnValue) == "boolean") {
            return returnValue;
        }
    }
}

function alertnotbut(str, autoHidden) {
    sAlert(str, "", autoHidden);
}

function MsgClass(objName) {
    var strHtml;
    strHtml = "<div id='_ew_alert_' style=\"display:none;\" class='msgbg'>";
    strHtml += "</div>";
    strHtml += '<div class="ewAlertBoxBox" id="_ew_alert_inner_div" style="display:none;">';
    strHtml += '  <div class="ewAlertBoxInBox">';
    strHtml += '    <div class="ewAlertBoxBoxContent">';
    strHtml += '      <div class="ewAlertBoxBoxContenedor">';
    strHtml += '      <span class="ewAlertBoxBoxTitle">系统提示信息</span><br /> <p id="msgcontent"></p>';
    strHtml += '      </div>';
    strHtml += '      <div class="ewAlertBoxButtons">';
    strHtml += '        <input class="BoxAlertBtnOk" onclick="' + objName + '.doOk();" type="button" value="关闭">';
    strHtml += '      </div>';
    strHtml += '    </div>';
    strHtml += '  </div>';
    strHtml += '</div>';

    document.write(strHtml);

    var div = $("_ew_alert_");
    var backURL = "";
    var objMsg = objName;
    var obj = this;

    var interval;
    var timeout;

    this.AlertMsg = function(errorMsg, strurl, autoHidden) {
        window.clearInterval(interval);
        window.clearTimeout(timeout);

        this.Show(errorMsg, strurl, autoHidden);
        this.Show(errorMsg, strurl, autoHidden);
        interval = window.setInterval(function() {
            obj.Show(errorMsg, strurl, autoHidden);
        }, 500);

        if (strurl != undefined) {
            backURL = strurl;
        }

        if (autoHidden) {
            timeout = window.setTimeout(objName + ".doOk()", 3000);
        }
    }

    this.Show = function(errorMsg, strurl, autoHidden) {
        div.style.display = "block";
        $("msgcontent").innerHTML = errorMsg;

        var pageSize = new getPageSize();
        div.style.height = pageSize.docheight + "px";
        $("_ew_alert_inner_div").style.display = 'block';
        //对子DIV进行设置
        var mydiv = $("_ew_alert_inner_div");

        posToCenter(mydiv);
    }

    //释放DIV
    this.doOk = function(strurl) {
        if (backURL != "")
            window.location.href = backURL;

        div.style.display = "none";
        $("_ew_alert_inner_div").style.display = "none";
        window.clearInterval(interval);
        window.clearTimeout(timeout);
    }
}

var objMsg = new MsgClass("objMsg");
//弹出DIV
function sAlert(errorMsg, strurl, autoHidden) {
    objMsg.AlertMsg(errorMsg, strurl, autoHidden);
}
function sClose() {
    objMsg.doOk();
}
/****************************** 对话框sAlert结束 ************************************/

/****************************** ajax start ************************************/
var AjaxIndex = 0; //全局的ajax索引，表示唯一的ajax实例
function Ajax(acID, url) {

    var thisIndex = "result" + AjaxIndex;
    AjaxIndex++;

    var oXmlDom;
    this.state = null;
    this.data = null;
    this.AJAX_URL = config.WebURL + "Common/EWAjax.ashx?ajaxidnex=" + thisIndex + "&ac=" + acID;
    this.AJAX_URL += undefined == url ? "" : url;
    var obj = this;

    this.getNode = function(oNode) {
        var resulit = "";
        if (oNode.childNodes.length > 0) {//如果有数据		
            var ii = false;
            for (var i = 0; i < oNode.childNodes.length; i++) {
                var oItem = oNode.childNodes[i];
                if (oItem.nodeType == 1) {//判断是否是Element类型
                    resulit += (ii ? "," : "");
                    if (oItem.childNodes.length == 1) {
                        resulit += oItem.nodeName + ":'" + (IE() ? oItem.text : oItem.textContent) + "'";
                    }
                    else {
                        if (!ii) {
                            resulit += oItem.nodeName + ":[" + obj.getNode(oItem);
                        }
                        else {
                            var pNode = null;

                            for (var j = i - 1; j >= 0; j--) {

                                if (oNode.childNodes[j].nodeType == 1) {
                                    pNode = oNode.childNodes[j];
                                    break;
                                }
                            }
                            if (pNode.nodeName == oItem.nodeName) {
                                resulit += obj.getNode(oItem);
                            }
                            else {
                                resulit += oItem.nodeName + ":[" + obj.getNode(oItem);
                            }
                        }
                        var nNode = null;
                        for (var j = i + 1; j < oNode.childNodes.length; j++) {
                            if (oNode.childNodes[j].nodeType == 1) {
                                nNode = oNode.childNodes[j];
                                break;
                            }
                        }
                        if (nNode != null) {
                            if (nNode.nodeName != oItem.nodeName) {
                                resulit += "]";
                            }
                        }
                        else {
                            resulit += "]";
                        }
                    }
                    ii = true;
                }
            } //end for

            resulit = "{" + resulit + "}";
        }
        else {
            resulit = "null";
        }
        return resulit;
    }

    this.onSuccess = function() {
        //内部数据处理方法;
    }

    this.getData = function() {
        var nodes = oXmlDom.documentElement;

        for (var i = 0; i < nodes.childNodes.length; i++) {
            var oItem = nodes.childNodes[i];
            if (oItem.nodeType == 1) {
                if (oItem.nodeName.toLowerCase() == "state") {
                    var tmp1 = "";
                    var tmp2 = "";

                    for (var j = 0; j < oItem.childNodes.length; j++) {
                        var tmpNode = oItem.childNodes[j];
                        if (tmpNode.nodeType == 1) {
                            if (tmpNode.nodeName.toLowerCase() == "result")
                                tmp1 = IE() ? tmpNode.text : tmpNode.textContent;
                            else if (tmpNode.nodeName.toLowerCase() == "message")
                                tmp2 = IE() ? tmpNode.text : tmpNode.textContent;
                        }
                    }
                    eval("obj.state = {result:'" + tmp1 + "',message:'" + tmp2 + "'}");
                }
                else if (oItem.nodeName.toLowerCase() == "data") {
                    eval("obj.data = " + obj.getNode(oItem));
                }
            }
        }
        obj.onSuccess();
    }

    this.Init = function() {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = this.AJAX_URL;
        if (IE()) {
            script.onreadystatechange = function() {
                if ("loaded" == script.readyState || "complete" == script.readyState) {
                    oXmlDom = new ActiveXObject("Microsoft.XMLDOM");
                    //oXmlDom.async=false;
                    oXmlDom.onreadystatechange = function() {
                        if (oXmlDom.readyState == 4) {
                            obj.getData();
                        }
                    }
                    try {
                        eval("oXmlDom.loadXML(" + thisIndex + ")");
                    }
                    catch (e) {
                    }
                    document.getElementsByTagName("head")[0].removeChild(script);
                }
            }
        }
        else {
            script.onload = function() {
                var oParser = new DOMParser();
                try {
                    eval("oXmlDom = oParser.parseFromString(" + thisIndex + ",\"text/xml\")");
                    obj.getData();
                }
                catch (e) {

                }
                document.getElementsByTagName("head")[0].removeChild(script);
            }
        }
        document.getElementsByTagName("head")[0].appendChild(script);
    }
    this.Init();
}
/****************************** ajax end **************************************/

/******************************   Select Class Start  *******************************/

//显示类别信息
//      objName             外部实例化的对象名
//      moduleFlagTextId    模块标识名称表单Id
//      showDivID:          显示类别信息的Div的ID，
//      inputTxtID:         页面接受选择后的ID的文本字段
//      acID:               要选择哪个类别表的ID 对应ajax里面的程序
//      level:              显示多少级 默认为全部
//      params              自定义参数  key:value|key1:value1
function ClassType(objName, moduleFlagTextId, showDivID, inputTxtID, level, ac, params) {
    var DivWidth = "240px";
    //初始化全局变量

    this.ActionID = "";
    this.MaxLevel = 999;

    if (ac == undefined || ac == "") {
        this.ActionID = "ew001";
    } else {
        this.ActionID = ac;
    }

    if (level == undefined || level == "") {
        this.MaxLevel = 999;
    } else {
        this.MaxLevel = level;
    }

    this.Params = params == undefined ? "" : params;

    this.IndexLevel = 0;
    this.InputTxtID = inputTxtID;
    this.ModuleName = $(moduleFlagTextId) != undefined ? $F(moduleFlagTextId) : moduleFlagTextId;
    //存储默认值
    var OldValue = "";

    this.Mode = "div"; //div or select
    var obj = objName;
    var thisObj = this;
    var mainobj = $(showDivID);
    //模式为select时当前选定控件的默认值用于撤销操作
    var tmpvalue = "";

    this.Init = function() {
        OldValue = $F(this.InputTxtID);

        //初始化html元素
        if ("div" == this.Mode) {
            //添加浮动层
            var tmpdiv = document.createElement("div");
            tmpdiv.id = obj + "DisplayData";
            tmpdiv.style.position = "absolute";
            tmpdiv.style.width = DivWidth;
            tmpdiv.style.padding = "10px";
            tmpdiv.style.paddingTop = "0";
            tmpdiv.style.display = "none";
            tmpdiv.className = "SelectClassType";
            var closediv = document.createElement("div");
            closediv.style.textAlign = "right";
            closediv.style.width = "95%";
            closediv.id = obj + "Close"
            tmpdiv.appendChild(closediv);
            var dataul = document.createElement("ul");
            dataul.id = obj + "DisplayDataUL";
            tmpdiv.appendChild(dataul);

            $(showDivID).appendChild(tmpdiv);

            var tmpul = document.createElement("ul");
            tmpul.id = obj + "MainItem";
            tmpul.className = "SelectClassTypeItem";
            mainobj = tmpul;
            $(showDivID).appendChild(tmpul);
        }
        else if ("select" == this.Mode) {

        }

        //初始化读取默认数据
        if ("" != $F(thisObj.InputTxtID) && parseInt($F(thisObj.InputTxtID)) > 0) {
            var ajax = new Ajax(thisObj.ActionID, "&strID=" + $F(thisObj.InputTxtID) + "&Mode=GetInfo&module=" + this.ModuleName + "&Params=" + this.Params);
            ajax.onSuccess = function() {
                if (null != ajax.data) {
                    if ("" != ajax.data.FullID && "0" != ajax.data.FullID) {
                        var arrID = unescape(ajax.data.FullID).split(",");
                        var arrName = unescape(ajax.data.FullName).split(",");
                        for (i = 0; i < arrID.length; i++) {
                            if ("div" == thisObj.Mode) {
                                if (0 == i)
                                    thisObj.AddNode(0, arrName[i]);
                                else
                                    thisObj.AddNode(arrID[i - 1], arrName[i]);
                            }
                            else if ("select" == thisObj.Mode) {
                                if (0 == i)
                                    thisObj.AddNodeForSel(0, arrID[i], arrName[i]);
                                else
                                    thisObj.AddNodeForSel(arrID[i - 1], arrID[i], arrName[i]);
                            }
                        }
                    }

                    if ("div" == thisObj.Mode) {
                        thisObj.AddNode(ajax.data.ParentID, unescape(ajax.data.Name));
                    }
                    else if ("select" == thisObj.Mode) {
                        thisObj.AddNodeForSel(ajax.data.ParentID, $F(thisObj.InputTxtID), unescape(ajax.data.Name));
                    }

                    if (ajax.data.HasSub == "true") {
                        if ("div" == thisObj.Mode) {
                            thisObj.AddNode($F(thisObj.InputTxtID));
                        }
                        else if ("select" == thisObj.Mode) {
                            thisObj.AddNodeForSel($F(thisObj.InputTxtID));
                        }
                    }
                }
            }
        }
        else {
            if ("div" == this.Mode) {
                thisObj.AddNode(0);
            }
            else if ("select" == this.Mode) {
                thisObj.AddNodeForSel(0);
            }
        }
    }

    this.AddNode = function(strID, strName) {
        if (this.MaxLevel <= this.IndexLevel) return;
        this.IndexLevel++;
        var tmpli = document.createElement("li");
        tmpli.id = obj + "li" + this.IndexLevel;
        tmpli.innerHTML = "<a href=\"javascript:" + obj + ".ShowData(" + strID + "," + this.IndexLevel + ");\">" + (undefined == strName ? "请选择" : strName) + "</a>";
        mainobj.appendChild(tmpli);
    }

    this.close = function() {
        $(obj + "DisplayData").style.display = "none";
    }

    this.ShowData = function(strID, level) {
        if (!this.OnClick()) return;

        this.IndexLevel = level;

        //更新关闭层的清空选项
        $(obj + "Close").innerHTML = "<a href=\"javascript:" + obj + ".SelectItem(" + strID + ",'请选择'," + strID + ",false);\" title=\"点击选择此项\">清空选项</a> | <a href=\"javascript:" + obj + ".close();\">关闭</a>";

        var ajax = new Ajax(this.ActionID, "&strID=" + strID + "&module=" + this.ModuleName);
        ajax.onSuccess = function() {
            var tmpData = "";
            if (ajax.state.result == 0) {
                tmpData = ajax.state.message;
            }
            else {
                for (i = 0; i < ajax.data.Item.length; i++) {
                    tmpData += "<li><a href=\"javascript:" + obj + ".SelectItem(" + ajax.data.Item[i].ID + ",'" + unescape(ajax.data.Item[i].Name) + "'," + strID + "," + ajax.data.Item[i].HasSub + ");\" title=\"点击选择此项\">" + unescape(ajax.data.Item[i].Name) + "</a></li>";
                }
            }

            $(obj + "DisplayDataUL").innerHTML = tmpData;
            $(obj + "DisplayData").style.display = "block";
            //定位层显示的位置
            var mouse = mouseCoords();

            var dw = parseInt($(obj + "DisplayData").style.width) + parseInt($(obj + "DisplayData").style.padding) * 2;
            if ((mouse.x + dw) < document.body.clientWidth)
                $(obj + "DisplayData").style.left = mouse.x + "px";
            else
                $(obj + "DisplayData").style.left = (mouse.x - dw) + "px";
            $(obj + "DisplayData").style.top = mouse.y + "px";
        }
    }

    this.SelectItem = function(strID, areaName, parentID, isInsert) {
        if (parseInt(strID) <= 0)
            $(this.InputTxtID).value = "";
        else
            $(this.InputTxtID).value = strID;

        $(obj + "li" + this.IndexLevel).innerHTML = "<a href=\"javascript:" + obj + ".ShowData(" + parentID + "," + this.IndexLevel + ");\">" + areaName + "</a>";
        var isShow = isInsert;
        if (this.MaxLevel <= this.IndexLevel) isShow = false;
        for (i = this.IndexLevel + 1; i <= this.MaxLevel; i++) {
            if ($(obj + "li" + i)) {
                mainobj.removeChild($(obj + "li" + i));
            }
            else
                break;
        }
        if (isShow) {
            this.AddNode(strID);
        }
        $(obj + "DisplayData").style.display = "none";

        this.OnChange();
    }

    this.AddNodeForSel = function(strParentID, strID, strName) {
        if (this.MaxLevel <= this.IndexLevel) return;
        this.IndexLevel++;
        var tmpsel = document.createElement("select");
        //临时存放当前的索引 因为获取数据是异步方式
        var tmpIndex = this.IndexLevel;
        tmpsel.id = obj + "sel" + this.IndexLevel;
        tmpsel.options.add(new Option("请选择", strParentID + "_false_" + this.IndexLevel));
        //取得该类的数据并填充select
        var ajax = new Ajax(this.ActionID, "&strID=" + strParentID + "&module=" + this.ModuleName + "&Params=" + this.Params);
        ajax.onSuccess = function() {
            if (ajax.state.result == 0) {
                //sAlert(ajax.state.message);
            }
            else {
                for (i = 0; i < ajax.data.Item.length; i++) {
                    var op = new Option(unescape(ajax.data.Item[i].Name), ajax.data.Item[i].ID + "_" + ajax.data.Item[i].HasSub + "_" + tmpIndex);
                    if (parseInt(strID) == parseInt(ajax.data.Item[i].ID)) op.selected = true;
                    tmpsel.options.add(op);
                }
            }
        }

        tmpsel.onclick = function() { tmpvalue = this.value; }
        tmpsel.onchange = this.SelectChange;
        mainobj.appendChild(tmpsel);
    }

    this.SelectChange = function() {

        if (!thisObj.OnClick()) {
            this.value = tmpvalue;
            return false;
        }

        var strID = parseInt(this.value.split("_")[0]);
        var isShow = "true" == this.value.split("_")[1];
        thisObj.IndexLevel = parseInt(this.value.split("_")[2]);

        if (parseInt(strID) <= 0)
            $(thisObj.InputTxtID).value = "";
        else
            $(thisObj.InputTxtID).value = strID;

        if (thisObj.MaxLevel <= thisObj.IndexLevel) isShow = false;

        for (i = thisObj.IndexLevel + 1; i <= thisObj.MaxLevel; i++) {
            if ($(obj + "sel" + i)) {
                mainobj.removeChild($(obj + "sel" + i));
            }
            else
                break;
        }
        if (isShow) {
            thisObj.AddNodeForSel(strID);
        }

        thisObj.OnChange();
    }

    //清空当前选择
    this.Clear = function() {
        this.IndexLevel = 0;
        $(this.InputTxtID).value = OldValue;
        $(showDivID).innerHTML = "";
        this.Init();
    }
    //将初始化的值清空
    this.ClearContent = function() {
        OldValue = null;
        var tmpdiv = document.getElementById(obj + "DisplayData");
        tmpdiv.innerHTML = "";
    }

    this.OnChange = function() {
        //类别值改变的处理方法
    }

    this.OnClick = function() {
        //点击事件处理方法
        return true;
    }
}
function ClassTypes(objName, moduleFlagTextId, showDivID, inputTxtID, maxNum) {
    //初始化全局变量
    this.ActionID = "EW001";
    this.MaxNum = undefined == maxNum ? 999 : arguments[5];
    this.IndexLevel = 0;
    this.InputTxtID = inputTxtID;
    this.ModuleName = $(moduleFlagTextId) != undefined ? $F(moduleFlagTextId) : moduleFlagTextId;
    //如果选择已经选择的父类的子类
    this.IsSelChild = false;
    var obj = objName;
    var thisObj = this;
    var mainobj = $(showDivID);

    //存储已经选择的对象的数组
    var SelectedItems = [];

    //弹出窗口大小
    var dWidth = 700;
    var dHeight;

    this.Init = function() {
        //添加浮动层
        var html = '';

        html = '' +
        '<a href="javascript:' + obj + '.Show();">请选择</a>' +
        '<div id="' + obj + 'selectedvalues"></div>' +
        '<div id="' + obj + 'selectbg" class="SelectClassTypesbg shidden"></div>' +
        '<div id="' + obj + 'selectMain" class="SelectClassTypesmain shidden">' +
            '<div class="SelectClassTypestit smove" onmousedown="drag(event,\'' + obj + 'selectMain\')">' +
            '    <h2 class="sleft">请选择</h2>' +
            '    <span class="spointer sright" onclick="' + obj + '.Close();">[取消]</span>' +
            '    <span class="spointer sright" onclick="' + obj + '.Update();">[确定]</span>' +
            '</div>' +
            '<div class="SelectClassTypescls"></div>' +
            '<div class="SelectClassTypescont">' +
            '    <div id="' + obj + 'selectSub">' +
            '    </div>' +
            '    <div id="' + obj + 'selectItems">' +
            '    </div>' +
            '</div>' +
            '<div class="SelectClassTypespreview">' +
            '    <div class="SelectClassTypespreviewtit">' +
            '        <h2>已选择</h2>' +
            '    </div> ' +
            '    <div class="SelectClassTypescont" id="' + obj + 'selectPreviewItem"></div>' +
            '</div>' +
        '</div>'
        insertHtml("beforeend", mainobj, html);
        mainobj = $(obj + "selectSub");

        //初始化读取默认数据
        if ("" != $F(thisObj.InputTxtID) && "0" != $F(thisObj.InputTxtID)) {
            var ajax = new Ajax(thisObj.ActionID, "&strID=" + $F(thisObj.InputTxtID) + "&Mode=GetInfos&module=" + this.ModuleName);
            ajax.onSuccess = function() {
                if (null != ajax.data) {
                    for (i = 0; i < ajax.data.Item.length; i++) {
                        thisObj.AddItem(ajax.data.Item[i].ID, unescape(ajax.data.Item[i].Name));
                    }
                    thisObj.RefurbishParentDoc();
                }
            }
        }
        this.AddNode(0, 0);
    }

    this.SelectBoxItem = function(objBox, strID, strName) {
        if (SelectedItems.length >= this.MaxNum) {
            sAlert("您最多选择" + this.MaxNum + "项");
            objBox.checked = false;
            return;
        }
        if (objBox.checked) {
            this.AddItem(strID, strName);
        }
        else {
            this.RemoveItem(strID);
        }
    }

    this.AddItem = function(strID, strName) {
        SelectedItems[SelectedItems.length] = { ID: strID, Name: strName };
        this.Refurbish();
    }

    this.RemoveItem = function(strID) {
        //如果当前的列表里有被删除类别 则取消该类的选择
        var arr = $(obj + "selectItems").getElementsByTagName("input");
        for (var i = 0; i < arr.length; i++) {
            if (arr[i].type == "checkbox") {
                if (parseInt(arr[i].value) == parseInt(strID)) {
                    arr[i].checked = false;
                    break;
                }
            }
        }

        for (var i = 0; i < SelectedItems.length; i++) {
            if (parseInt(SelectedItems[i].ID) == parseInt(strID)) {
                SelectedItems.splice(i, 1);
                break;
            }
        }

        this.Refurbish();
    }

    //当前要操作的类是否已经被选择
    this.IsCheckedLevelID = function() {
        var arr = $(obj + "selectSub").getElementsByTagName("select");
        for (var i = 0; i < arr.length; i++) {
            for (var sindex = 0; sindex < SelectedItems.length; sindex++) {
                if (parseInt(SelectedItems[sindex].ID) == parseInt(arr[i].value)) {
                    return true;
                }
            }
        }
        return false;
    }

    //判断是否已经选择了该类
    this.IsChecked = function(strID) {
        for (var i = 0; i < SelectedItems.length; i++) {
            if (parseInt(SelectedItems[i].ID) == parseInt(strID)) {
                return true;
            }
        }
        return false;
    }

    this.Refurbish = function() {
        var str = '<ul>';
        for (var i = 0; i < SelectedItems.length; i++) {
            str += '<li><input type="checkbox" checked="true" onclick="' + obj + '.RemoveItem(' + SelectedItems[i].ID + ');" />' + SelectedItems[i].Name + '</li>';
        }
        str += '</ul>';
        $(obj + "selectPreviewItem").innerHTML = str;
    }

    this.RefurbishParentDoc = function() {
        var html = "";
        var ids = "";
        for (var i = 0; i < SelectedItems.length; i++) {
            ids += 0 == i ? "" : ","
            ids += SelectedItems[i].ID;
            html += '<input type="checkbox" checked="true" onclick="' + obj + '.RemoveItemByDoc(' + SelectedItems[i].ID + ');" />' + SelectedItems[i].Name;
        }
        $(this.InputTxtID).value = ids;
        $(obj + "selectedvalues").innerHTML = html;
    }

    this.RemoveItemByDoc = function(strID) {
        this.RemoveItem(strID);
        this.RefurbishParentDoc();
    }

    this.Show = function() {
        var scrollPos = new getScrollPos();
        var pageSize = new getPageSize();

        $(obj + "selectbg").style.display = "block";
        $(obj + "selectbg").style.height = pageSize.docheight + "px";
        $(obj + "selectMain").style.display = "block";

        dHeight = $(obj + "selectMain").clientHeight;
        var x = Math.round(pageSize.width / 2) - (dWidth / 2) + scrollPos.scrollX;
        var y = Math.round(pageSize.height / 2) - (dHeight / 2) + scrollPos.scrollY;

        $(obj + "selectMain").style.width = dWidth + "px";
        //$(obj + "selectMain").style.height = dHeight + "px";
        $(obj + "selectMain").style.left = x + 'px';
        $(obj + "selectMain").style.top = y + 'px';
    }

    this.Update = function() {
        this.RefurbishParentDoc();
        this.Close();
    }

    this.Close = function() {
        $(obj + 'selectbg').style.display = "none";
        $(obj + 'selectMain').style.display = "none";
    }

    this.AddNode = function(strParentID, strID, strName) {
        //如果已经选择了该类 则退出
        if (!thisObj.IsSelChild && thisObj.IsCheckedLevelID()) {
            $(obj + "selectItems").innerHTML = "";
            return;
        }

        this.IndexLevel++;

        var tmpsel = document.createElement("select");
        //临时存放当前的索引 因为获取数据是异步方式
        var tmpIndex = this.IndexLevel;
        tmpsel.id = obj + "sel" + this.IndexLevel;
        tmpsel.options.add(new Option("请选择", strParentID + "_parent_" + this.IndexLevel));
        //取得该类的数据并填充select和多选层
        var ajax = new Ajax(this.ActionID, "&strID=" + strParentID + "&module=" + this.ModuleName);
        ajax.onSuccess = function() {
            if (ajax.state.result == 0) {
                sAlert(ajax.state.message);
            }
            else {
                var html = '<ul>';
                var tmpstr = '';
                for (i = 0; i < ajax.data.Item.length; i++) {
                    var op = new Option(unescape(ajax.data.Item[i].Name), ajax.data.Item[i].ID + "_" + ajax.data.Item[i].HasSub + "_" + tmpIndex);
                    if (parseInt(strID) == parseInt(ajax.data.Item[i].ID)) op.selected = true;
                    tmpsel.options.add(op);

                    tmpstr = "";
                    if (thisObj.IsChecked(ajax.data.Item[i].ID)) {
                        tmpstr = ' checked="true" '
                    }
                    html += '<li><input type="checkbox" ' + tmpstr + ' value="' + ajax.data.Item[i].ID + '" onclick="' + obj + '.SelectBoxItem(this,' + ajax.data.Item[i].ID + ',\'' + unescape(ajax.data.Item[i].Name) + '\');" />' + unescape(ajax.data.Item[i].Name) + '</li>';

                }
                html += '</ul>';
                $(obj + "selectItems").innerHTML = html;
            }
        }
        tmpsel.onchange = this.SelectChange;
        $(obj + "selectSub").appendChild(tmpsel);
    }

    this.SelectChange = function() {
        var strID = parseInt(this.value.split("_")[0]);
        var isShow = "true" == this.value.split("_")[1];
        var tmplevel = thisObj.IndexLevel;
        thisObj.IndexLevel = parseInt(this.value.split("_")[2]);
        if ("parent" == this.value.split("_")[1]) {
            isShow = true;
            thisObj.IndexLevel = thisObj.IndexLevel - 1
        }

        for (i = thisObj.IndexLevel + 1; i <= tmplevel; i++) {
            if ($(obj + "sel" + i)) {
                mainobj.removeChild($(obj + "sel" + i));
            }
            else
                break;
        }
        if (isShow) {
            thisObj.AddNode(strID);
        }
        else {
            $(obj + "selectItems").innerHTML = "";
        }
        thisObj.OnChange();
    }

    this.OnChange = function() {
        //类别值改变的处理方法
    }
}
/*根据模块和类别选择模块或类别的子类
*@param objName             外部实例化的对象名，比如 var cla=new ModuleClasses(),cla即为objName
*@param moduleFlagTextId    模块标识名称表单Id
*@param showDivID           显示类别信息的Div的ID
*@param inputTxtID          页面接受选择后的ID的文本字段
*@param maxNum              允许选择的最大类别数目
*/
var SelectedItems = []; //全局变量，存储已经选择的对象的数组
function ModuleClasses(objName, moduleFlagTextId, showDivID, inputTxtID, maxNum) {
    //初始化全局变量
    this.ActionID = "EW001";
    this.MaxNum = undefined == maxNum ? 999 : arguments[5];
    this.IndexLevel = 0;
    this.InputTxtID = inputTxtID;
    this.ModuleName = $(moduleFlagTextId) != undefined ? $F(moduleFlagTextId) : moduleFlagTextId;
    //如果选择已经选择的父类的子类
    this.IsSelChild = false;
    var obj = objName;
    var thisObj = this;
    var mainobj = $(showDivID);

    //弹出窗口大小
    var dWidth = 700;
    var dHeight;

    //初始化
    this.Init = function() {
        //添加浮动层
        var html = '';

        html = '' +
            '<div id="' + obj + 'selectedvalues"></div>' +
            '<div id="' + obj + 'selectbg" class="SelectClassTypesbg shidden"></div>' +
            '<div id="' + obj + 'selectMain" class="SelectClassTypesmain shidden">' +
            '<div class="SelectClassTypestit smove" onmousedown="drag(event,\'' + obj + 'selectMain\')">' +
            '    <h2 class="sleft">请选择</h2>' +
            '    <span class="spointer sright" onclick="' + obj + '.Close();">[取消]</span>' +
            '    <span class="spointer sright" onclick="' + obj + '.Update();">[确定]</span>' +
            '</div>' +
            '<div class="SelectClassTypescls"></div>' +
            '<div class="SelectClassTypescont">' +
            '    <div id="' + obj + 'selectSub">' +
            '    </div>' +
            '    <div id="' + obj + 'selectItems">' +
            '    </div>' +
            '</div>' +
            '<div class="SelectClassTypespreview">' +
            '    <div class="SelectClassTypespreviewtit">' +
            '        <h2>已选择</h2>' +
            '    </div> ' +
            '    <div class="SelectClassTypescont" id="' + obj + 'selectPreviewItem"></div>' +
            '</div>' +
            '</div>'
        insertHtml("beforeend", mainobj, html);
        mainobj = $(obj + "selectSub");

        //初始化读取默认数据
        if ("" != $F(thisObj.InputTxtID) && "0" != $F(thisObj.InputTxtID)) {
            var ajax = new Ajax(thisObj.ActionID, "&strID=" + $F(thisObj.InputTxtID) + "&Mode=GetInfos&module=" + this.ModuleName);
            ajax.onSuccess = function() {
                if (null != ajax.data) {
                    for (i = 0; i < ajax.data.Item.length; i++) {
                        thisObj.AddItem(ajax.data.Item[i].ID, unescape(ajax.data.Item[i].Name));
                    }
                    thisObj.RefurbishParentDoc();
                }
            }
        }
        this.AddNode(0, 0);
    }
    //选择要选择的项目
    this.SelectBoxItem = function(objBox, strID, strName) {
        if (SelectedItems.length >= this.MaxNum) {
            sAlert("您最多选择" + this.MaxNum + "项");
            objBox.checked = false;
            return;
        }
        if (objBox.checked) {
            this.AddItem(this.ModuleName, strID, strName);
        }
        else {
            this.RemoveItem(thisObj.ModuleName, strID);
        }
    }
    //添加项
    this.AddItem = function(Module, strID, strName) {
        SelectedItems[SelectedItems.length] = { Module: this.ModuleName, ID: strID, Name: strName };
        //刷新预览选择项
        this.Refurbish();
    }
    //删除项
    this.RemoveItem = function(Module, strID) {
        //如果当前的列表里有被删除类别 则取消该类的选择
        var arr = $(obj + "selectItems").getElementsByTagName("input");
        var arr2;
        //在预览取消类别选择则在分类处也取消该类别的选择
        for (var i = 0; i < arr.length; i++) {
            if (arr[i].type == "checkbox") {
                arr2 = arr[i].value.split('$');
                if (arr2[0].toString() == Module.toString() && arr2[1] == parseInt(strID)) {
                    arr[i].checked = false;
                    break;
                }
            }
        }
        //在参数列表中取消该类别的参数
        for (var i = 0; i < SelectedItems.length; i++) {
            if (SelectedItems[i].Module.toString() == Module.toString() && SelectedItems[i].ID == strID) {
                SelectedItems.splice(i, 1);
                break;
            }
        }
        this.Refurbish();
        this.RefurbishAll();
    }
    //当前要操作的类是否已经被选择
    this.IsCheckedLevelID = function() {
        var arr = $(obj + "selectSub").getElementsByTagName("select");
        for (var i = 0; i < arr.length; i++) {
            for (var sindex = 0; sindex < SelectedItems.length; sindex++) {
                if (parseInt(SelectedItems[sindex].ID) == parseInt(arr[i].value)) {
                    return true;
                }
            }
        }
        return false;
    }
    //判断是否已经选择了该类
    this.IsChecked = function(Module, strID) {
        for (var i = 0; i < SelectedItems.length; i++) {
            if (SelectedItems[i].Module.toString() == Module.toString() && parseInt(SelectedItems[i].ID) == parseInt(strID)) {
                return true;
            }
        }
        return false;
    }
    //刷新所有选中项
    this.RefurbishParentDoc = function() {
        var html = "<ul class='cbselected'>";
        var txtValue = $(this.InputTxtID).value;
        var idstr = "";
        var ids = "";
        for (var i = 0; i < SelectedItems.length; i++) {
            idstr = SelectedItems[i].ID + "," + SelectedItems[i].Module;
            if (SelectedItems.length > 1 && txtValue == "") {
                if (i < SelectedItems.length - 1) {
                    idstr += "$";
                }
            }
            if (txtValue != "") {
                if (txtValue.indexOf(idstr) > -1) {
                    idstr = "";
                }
                else {
                    idstr = "$" + idstr;
                }
            }
            if (idstr != "") {
                ids += idstr;
                html += '<li><input type="checkbox" checked="true" onclick="' + obj + '.RemoveItem(' + "'" + SelectedItems[i].Module + "'" + ',' + SelectedItems[i].ID + ');" />' + SelectedItems[i].Name + '</li>';
            }
        }
        html += "</ul>";
        $(this.InputTxtID).value += ids;
        $(obj + "selectedvalues").innerHTML += html;
    }
    //刷新预览选中项
    this.Refurbish = function() {
        var str = '<ul>';
        for (var i = 0; i < SelectedItems.length; i++) {
            if (SelectedItems[i].Module == this.ModuleName) {
                str += '<li><input type="checkbox" checked="true" onclick="' + obj + '.RemoveItem(' + "'" + SelectedItems[i].Module + "'" + ',' + SelectedItems[i].ID + ');" />' + SelectedItems[i].Name + '</li>';
            }
        }
        str += '</ul>';
        //选择预览框
        $(obj + "selectPreviewItem").innerHTML = str;
    }
    //刷新全部选中项
    this.RefurbishAll = function() {
        var str = '<ul>';
        var ids = '';
        for (var i = 0; i < SelectedItems.length; i++) {
            str += '<li><input type="checkbox" checked="true" onclick="' + obj + '.RemoveItem(' + "'" + SelectedItems[i].Module + "'" + ',' + SelectedItems[i].ID + ');" />' + SelectedItems[i].Name + '</li>';
        }
        str += '</ul>';
        $(obj + "selectedvalues").innerHTML = str;
        this.RefubishText();
    }
    //刷新文本框
    this.RefubishText = function() {
        var str = '';
        var addcount = 0;
        if (SelectedItems.length > 0) {
            for (var i = 0; i < SelectedItems.length; i++) {
                str += SelectedItems[i].ID + "," + SelectedItems[i].Module;
                if (++addcount < SelectedItems.length) {
                    str += "$";
                }
            }
        }
        $(this.InputTxtID).value = str;
    }

    this.Show = function() {
        var scrollPos = new getScrollPos();
        var pageSize = new getPageSize();

        $(obj + "selectbg").style.display = "block";
        $(obj + "selectbg").style.height = pageSize.docheight + "px";
        $(obj + "selectMain").style.display = "block";

        dHeight = $(obj + "selectMain").clientHeight;
        var x = Math.round(pageSize.width / 2) - (dWidth / 2) + scrollPos.scrollX;
        var y = Math.round(pageSize.height / 2) - (dHeight / 2) + scrollPos.scrollY;

        $(obj + "selectMain").style.width = dWidth + "px";
        //$(obj + "selectMain").style.height = dHeight + "px";
        $(obj + "selectMain").style.left = x + 'px';
        $(obj + "selectMain").style.top = y + 'px';
    }
    //更新
    this.Update = function() {
        this.RefurbishParentDoc();
        this.RefurbishAll();
        this.Close();
    }
    //关闭浮动层
    this.Close = function() {
        $(obj + 'selectbg').style.display = "none";
        $(obj + 'selectMain').style.display = "none";
    }
    //给浮动选择的类别添加该类别下的子类别
    this.AddNode = function(strParentID, strID, strName) {
        //如果已经选择了该类 则退出
        if (!thisObj.IsSelChild && thisObj.IsCheckedLevelID()) {
            $(obj + "selectItems").innerHTML = "";
            return;
        }
        this.IndexLevel++;
        var tmpsel = document.createElement("select");
        //临时存放当前的索引 因为获取数据是异步方式
        var tmpIndex = this.IndexLevel;
        tmpsel.id = obj + "sel" + this.IndexLevel;
        tmpsel.options.add(new Option("请选择", strParentID + "_parent_" + this.IndexLevel));
        //取得该类的数据并填充select和多选层
        var ajax = new Ajax(this.ActionID, "&strID=" + strParentID + "&module=" + this.ModuleName);
        ajax.onSuccess = function() {
            if (ajax.state.result == 0) {
                sAlert(ajax.state.message);
            }
            else {
                var html = '<ul>';
                var prehtml = "<ul>";
                var tmpstr = '';
                for (i = 0; i < ajax.data.Item.length; i++) {
                    var op = new Option(unescape(ajax.data.Item[i].Name), ajax.data.Item[i].ID + "_" + ajax.data.Item[i].HasSub + "_" + tmpIndex);
                    if (parseInt(strID) == parseInt(ajax.data.Item[i].ID)) op.selected = true;
                    tmpsel.options.add(op);

                    tmpstr = "";
                    //判断是否已经选择
                    if (thisObj.IsChecked(thisObj.ModuleName, ajax.data.Item[i].ID)) {
                        tmpstr = ' checked="true" '
                        prehtml += '<li><input type="checkbox" ' + tmpstr + ' value="' + ajax.data.Item[i].ID + '" onclick="' + obj + '.SelectBoxItem(this,' + ajax.data.Item[i].ID + ',\'' + unescape(ajax.data.Item[i].Name) + '\');" />' + unescape(ajax.data.Item[i].Name) + '</li>';
                    }
                    html += '<li><input type="checkbox" ' + tmpstr + ' value="' + thisObj.ModuleName + '$' + ajax.data.Item[i].ID + '" onclick="' + obj + '.SelectBoxItem(this,' + ajax.data.Item[i].ID + ',\'' + unescape(ajax.data.Item[i].Name) + '\');" />' + unescape(ajax.data.Item[i].Name) + '</li>';
                }
                html += '</ul>';
                prehtml += '</ul>';
                $(obj + "selectItems").innerHTML = html;
                $(obj + "selectPreviewItem").innerHTML = prehtml;
            }
        }
        tmpsel.onchange = this.SelectChange;
        $(obj + "selectSub").appendChild(tmpsel);
    }

    this.SelectChange = function() {
        var strID = parseInt(this.value.split("_")[0]);
        var isShow = "true" == this.value.split("_")[1];
        var tmplevel = thisObj.IndexLevel;
        thisObj.IndexLevel = parseInt(this.value.split("_")[2]);
        if ("parent" == this.value.split("_")[1]) {
            isShow = true;
            thisObj.IndexLevel = thisObj.IndexLevel - 1
        }

        for (i = thisObj.IndexLevel + 1; i <= tmplevel; i++) {
            if ($(obj + "sel" + i)) {
                mainobj.removeChild($(obj + "sel" + i));
            }
            else
                break;
        }
        if (isShow) {
            thisObj.AddNode(strID);
        }
        else {
            $(obj + "selectItems").innerHTML = "";
        }
        thisObj.OnChange();
    }

    this.OnChange = function() {
        //类别值改变的处理方法
    }
}
/******************************   Select Class End *********************************/

/******************************   Suggest Word Start *********************************/
/*
*@param objName   当前自动补全补全实例化名
*@param textId    输入文本框id
*@param buttonId  搜索按钮id
*@param popupId   补全框的id -- 可选
*/
function Suggest(objName, textId, buttonId, popupId) {
    //初始化全局变量
    this.ActionID = "EW060";
    var thisObj = this;

    var textValue; //文本框内容的值
    var textNode; //文本框节点
    var lastValue; //记录上一次文本框中的值
    var popNode; //提示框节点
    var hightlightIndex = -1; //高亮节点索引值
    var intervalId; //设置间隔循环的ID
    var timeoutId; //延时方法的ID
    //初始化补全框和文本框
    this.Init = function() {
        //页面初始化时设置提示框的位置和宽度
        //可以改变的一些参数
        textNode = document.getElementById(textId);
        //设置补全框
        popNode = document.getElementById(popupId);
        thisObj.PopupStyle();
        var left = textNode.offsetLeft;
        var top = textNode.offsetTop;
        var parent = textNode.offsetParent;
        var lastLeft;
        var lastTop;
        //因为浏览器的差异，对父节点的位置不同，所以，加上了该循环来准确设置出提示框的位置       
        while (parent) {
            left += parent.offsetLeft;
            top += parent.offsetTop;
            parent = parent.offsetParent;
        }
        //设置提示框距离顶部的高度
        popNode.style.top = top + textNode.offsetHeight + "px";
        //设置提示框距离左边的高度
        popNode.style.left = left + "px";
        //设置提示框的宽度
        popNode.style.width = textNode.offsetWidth - 2 + "px";
        //文本框获取焦点
        textNode.onfocus = thisObj.GetTextValue;
        //有键盘按下
        textNode.onkeydown = thisObj.SelectSuggest;
    }
    //间隔一段时间向文本框中获取内容
    this.GetTextValue = function() {
        intervalId = setInterval(thisObj.SendText, 200);
    }
    //向服务器发送请求的补全信息
    this.SendText = function() {
        textValue = textNode.value;
        //清除前后的空格
        textValue = textValue.replace(/^\s*|\s*$/g, "");
        //如果文本框中的内容没有改变，则不会触发下一次的提示
        if (lastValue == textValue) {
            return;
        }
        //当文本框中有内容时，向服务器发送输入的内容获得提示信息
        if (textValue != "" && lastValue != textValue) {
            clearTimeout(timeoutId);
            //Ajax向服务器发送请求并对返回的数据进行处理
            var ajax = new Ajax(thisObj.ActionID, "&sq=" + escape(textValue));
            //处理返回结果的代码
            ajax.onSuccess = function() {
                if (ajax.state.result == 0 || ajax.state.result == -1) {
                    thisObj.ClearPop();
                }
                else {
                    var html = "";
                    var divNode;
                    var redFont;
                    var length = ajax.data.Item.length;
                    if (length > 0) {
                        for (var i = 0; i < length; i++) {
                            redFont = unescape(ajax.data.Item[i].Name);
                            html += "<div id='Suggest_" + i + "'><span class='r'>约" + ajax.data.Item[i].ResultCount + "结果</span>" + "<span class='l'>" + redFont + "</span></div>";
                        }
                        html += "<div><a id='closePopUp' onclick='" + objName + ".ClearPop();'>关闭</a></div>";
                        popNode.innerHTML = html;
                        thisObj.Show();
                        thisObj.SelectByMouse(length);
                    }
                }
            }
        } else if (textValue == "") {
            thisObj.ClearPop();
        }
        //将文本框中的内容附值给上一次提交值的变量，避免重复提交
        lastValue = textValue;
    }
    //选择补全单词
    this.SelectSuggest = function(event) {
        var e = undefined == window.event ? event : window.event;
        var keycode = e.keyCode;
        if (keycode == 38 || keycode == 40) {   //按下上下键来选择提示框中的内容
            //因为设置了一定时间的延时，如果文本框中没有内容或提示框还没出来按上下键则不会触发
            if (textValue == "" || popNode.style.display == "none") {
                return;
            }
            //按键盘上下键来高亮提示框中的内容
            thisObj.MoveHightLight(keycode);
        } else if (keycode == 13) {
            //按下回车键时，如果没有提示框则把文本框中的内容直接提交给服务器，如果有内容则把选择的提示框中的内容复制给文本框并发送给服务器
            if (textNode.value == "") {
                return;
            } else {
                //清除提示框
                thisObj.ClearPop();
                //将文本框中获取的数据传给服务器
                thisObj.SendKeyWord();
            }
        }
    }
    //按鼠标选择
    this.SelectByMouse = function(length) {
        for (var i = 0; i < length; i++) {
            divNode = document.getElementById("Suggest_" + i);
            divNode.onmouseover = function() {
                //遍历所有的div节点并取消高亮         
                for (var i = 0; i < length; i++) {
                    popNode.childNodes[i].style.backgroundColor = "#fff";
                    popNode.childNodes[i].style.color = "#000";
                    popNode.childNodes[i].firstChild.style.color = "green";
                }
                //将鼠标对应的div节点高亮
                this.style.backgroundColor = "#3366cc";
                this.style.color = "#fff";
                this.firstChild.style.color = "#fff";
                //将鼠标对应的div的id值附给高亮索引值，使鼠标移出提示框时，键盘上下键仍然可以根据原来的位置上下移动
                hightlightIndex = this.id.replace("Suggest_", "");
            }
            //鼠标点击对应的div节点时也就是高亮节点将div中的值附给文本框                   
            divNode.onclick = function() {
                //将高亮div节点中的值附给文本框                      
                textNode.value = this.lastChild.innerHTML;
                //将文本框中的内容附为上一次suggest的内容
                lastValue = textNode.value;
                //清除提示框中的内容
                thisObj.ClearPop();
                //将文本框设置为焦点
                textNode.focus();
                //将文本的信息发送给服务器
                thisObj.SendKeyWord();
            }
        }
    }
    //高亮选择条
    this.MoveHightLight = function(keycode) {
        //提示框中内容被选中时使用高亮       
        var divNode = popNode.childNodes;
        //获取提示框中提示的条数
        var length = divNode.length;
        var selectValue;
        if (keycode == 38) {
            //按向上键选择上一个目标被高亮         
            if (hightlightIndex != -1) {//当提示框中已有内容被高亮时，则去掉高亮
                divNode[hightlightIndex].style.backgroundColor = "white";
                divNode[hightlightIndex].style.color = "#000";
                divNode[hightlightIndex].firstChild.style.color = "green";
            }
            hightlightIndex--; //每按一次向上键盘，提示框元素的索引值就减1；
            if (hightlightIndex < 0) {//当提示框中元素的索引值为负时，将其值变为提示框中所有元素的个数减2，因为最后一个元素为关闭提示框按钮
                hightlightIndex = length - 2;
            }
            //将提示框中被选中的元素高亮           
            divNode[hightlightIndex].style.backgroundColor = "#3366cc";
            divNode[hightlightIndex].style.color = "#fff";
            divNode[hightlightIndex].firstChild.style.color = "#fff";
            //将高亮条中的值附给textNode
            selectValue = divNode[hightlightIndex].lastChild.innerHTML;
            textNode.value = selectValue;
            lastValue = selectValue;
        }
        if (keycode == 40) {
            //按向下键选择下一个目标       
            if (hightlightIndex != -1) {//当提示框中已有内容被高亮时，则去掉高亮
                divNode[hightlightIndex].style.backgroundColor = "white";
                divNode[hightlightIndex].style.color = "#000";
                divNode[hightlightIndex].firstChild.style.color = "green";
            }
            hightlightIndex++; //每按一次向上键盘，提示框元素的索引值就加1；
            if (hightlightIndex > length - 2) {//当提示框中元素的索引值大于所有元素个数减2时，将其值变为0，因为最后一个元素为关闭提示框按钮
                hightlightIndex = 0;
            }
            //将提示框中被选中的元素高亮           
            divNode[hightlightIndex].style.backgroundColor = "#3366cc";
            divNode[hightlightIndex].style.color = "#fff";
            divNode[hightlightIndex].firstChild.style.color = "#fff";
            //将高亮条中的值附给textNode
            selectValue = divNode[hightlightIndex].lastChild.innerHTML;
            textNode.value = selectValue;
            lastValue = selectValue;
        }
    }
    //设置补全框的样式
    this.PopupStyle = function() {
        popNode.style.cssText = "border:1px solid #000;display:none;position:absolute;z-index:9999;padding-bottom:3px;";
    }
    //设置补全框内部样式
    this.PopInnerStyle = function() {
        var popInnerDiv = popNode.getElementsByTagName("div");
        for (var i = 0; i < popInnerDiv.length; i++) {
            popInnerDiv[i].style.cssText = "padding:3px 3px 0;height:17px;background-color:#fff;";
        }
        var popInnerSpan = popNode.getElementsByTagName("span");
        for (var i = 0; i < popInnerSpan.length; i++) {
            if (popInnerSpan[i].className == "r") {
                popInnerSpan[i].style.cssText = "float:right;color:green;";
            } else {
                popInnerSpan[i].style.cssText = "float:left;";
            }
        }
        var popInnerA = document.getElementById("closePopUp");
        popInnerA.style.cssText = "float:right;text-decoration:underline;color:blue;font-size:12px;cursor:pointer;";
    }
    //显示补全框
    this.Show = function() {
        popNode.style.display = "block";
        thisObj.PopInnerStyle();
    }
    //清除补全框
    this.ClearPop = function() {
        timeoutId = setTimeout(function() {
            popNode.innerHTML = "";
            popNode.style.display = "none";
            hightlightIndex = -1;
        }, 600)
    }
    //向服务器发送搜索内容
    this.SendKeyWord = function() {
        if (buttonId == undefined) {
            alert("向服务器发送的内容为:" + textNode.value);
        } else {
            document.getElementById(buttonId).click();
        }
    }
}
/******************************   Suggest Word End *********************************/

/***************************通用检测函数********************************/

//验证Email格式
function ValidateEmail(source) {
    var patrn = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
    return patrn.exec(source);
}

//检测电话
function ValidateTel(source) {
    var patrn = /^((\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/;
    return patrn.exec(source);
}

//检测以逗号隔开的多个电话号码
function ValidateTels(source) {
    source = source.replace('，', ',');
    var telformat = source.split(',');
    for (var i = 0; i < telformat.length; i++) {
        if (!ValidateTel(telformat[i])) {
            return false;
        }
    }
    return true;
}

//检测手机
function ValidateMobileTel(source) {
    var patrn = /^1[3,5,8]\d{9}$/;
    return patrn.exec(source);
}

//监测以逗号隔开的多个手机号
function ValidateMobileTels(source) {
    source = source.replace('，', ',');
    var telformat = source.split(',');
    for (var i = 0; i < telformat.length; i++) {
        if (!ValidateMobileTel(telformat[i])) {
            return false;
        }
    }
    return true;
}

//验证为数字
function ValidateNum(source) {
    var patrn = /^\d+$/;
    return patrn.exec(source);
}
//验证只能有a-z,A-Z，0-9组成的字符串
function ValidateS(source) {
    var patrn = /^[a-zA-Z0-9]+$/
    return patrn.exec(source);
}
//验证只能有a-z,A-Z组成的字符串
function ValidateLetter(source) {
    var patrn = /^[a-zA-Z]+$/
    return patrn.exec(source);
}
//验证是否含有空格、\/、\\、\'、\"、\<、\>等特殊字符,请重新输入!
function ValidateInput(source) {
    len = source.length;
    for (i = 0; i < len; i++) {
        while (source.charAt(i) == " " || source.charAt(i) == "\\" || source.charAt(i) == "/" || source.charAt(i) == "'" || source.charAt(i) == "\"" || source.charAt(i) == "*" || source.charAt(i) == "<" || source.charAt(i) == ">") {
            return true;
        }
    }
}

//验证字符串是否全是中文
function ValidateCNAll(source) {
    var patrn = /^[\u0391-\uFFE5]+$/
    return patrn.exec(source);
}
//验证字符串中是否包含中文
function ValidateCN(source) {
    var patrn = /^(\w*)([\u0391-\uFFE5]+)(\w*)+$/
    return patrn.exec(source);
}

function IsIncludeChinese(source) {
    var patrn = /^(\w*)([\u0391-\uFFE5]+)(\w*)+$/
    return patrn.test(source);
}
//验证URL地址格式
function ValidateUrl(source) {
    var regExp = new RegExp("((^http)|(^https)|(^ftp)):\/\/(\\w)+\.(\\w)+");
    var rtn = source.match(regExp);
    if (rtn == null) {
        return false;
    }
    else {
        return true;
    }
}
//验证长日期格式
function ValidateLongDate(source) {
    var patrn = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/
    return patrn.exec(source);
}
//验证短日期格式
function ValidateShortDate(source) {
    var patrn = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$/
    return patrn.exec(source);
}

//验证身份证号码
function ValidateIdCode(source) {
    var patrn = /^([0-9]{15}|[0-9]{18})$/
    return patrn.test(source);
}

//验证身份证号码
function ValidateZipCode(source) {
    var patrn = /^\d{6}$/
    return patrn.test(source);
}


/***************************end 通用验证函数********************************/

/*************************  其他通用函数开始 ************************************/

String.prototype.trim = function() {
    return this.replace(/^\s*/g, "").replace(/\s*$/g, "");
}

//替换所有自定的字符为新字符
//str:目标字符串
//oChr:原字符
//dChr:新字符
function ReplaceAll(str, oChr, dChr) {
    str = str.trim();
    var len = str.length;

    if (len <= 0) return "";

    for (var i = 0; i < len; i++) {
        str = str.replace(oChr, dChr);
    }
    return str;
}


//生成任意长度的随机数字
function GetRandom(numLength) {
    var rnd = "";
    for (i = 0; i < numLength; i++) {
        rnd = rnd + Math.floor(Math.random() * 10)
    }
    return rnd;
}

//字符串进行前空格截除
function TrimLeft(source) {
    while (source.charAt(0) == " ") {
        source = source.substr(1);
    }
    return source;
}
//字符串进行后空格截除
function TrimRight(source) {
    while (source.charAt(source.length - 1) == " ") {
        source = source.substr(0, source.length - 1);
    }
    return source;
}
//字符串进行首末位空格截除
function Trim(source) {
    return TrimRight(TrimLeft(source));
}
//得到字符串的真实长度（双字节换算为两个单字节） 
function GetLength(source) {
    return source.replace(/[^\x00-\xff]/g, "xx").length;
}

//给指定元素赋值
//多个元素用,号隔开
function SetElementValue(eleIds, value) {

    if (eleIds.trim() == "") return;

    var eles = eleIds.split(',');

    for (var i = 0; i < eles.length; i++) {
        if (document.getElementById(eles[i])) {
            document.getElementById(eles[i]).value = value;
        }
    }
}
//设为首页
function SetHomePage() {
    if (document.all) {
        window.external.addFavorite(' http://www.tex86.com.cn ', ' 中国纺织交易网 TEX86.com.cn '); //  加入收藏夹
        document.body.style.behavior = ' url(#default#homepage) ';//设为首页
        document.body.setHomePage(' http://www.tex86.com.cn ');
    }
    else if (window.sidebar) {
        window.sidebar.addPanel(' 中国纺织交易网 TEX86.com.cn ', ' http://www.tex86.com.cn ', ""); //  加入收藏夹   
    }
}

/*************************  其他通用函数结束 ************************************/




