﻿// JScript 文件
//获取DOM对象 
//function $(obj) 
//{ 
//    return typeof(obj)=="string" ? $D(obj) : obj; 
//}
//获取元素的Id
//function $() {
//  var elements = new Array();

//  for (var i = 0; i < arguments.length; i++)
//  {
//    var element = arguments[i];
//    if (typeof element == 'string')
//      element = document.getElementById(element);

//    if (arguments.length == 1)
//      return element;

//    elements.push(element);
//  }

//  return elements;
//}

//获取ID对象 
function $D (ID) 
{ 
    return document.getElementById(ID); 
}

//打开时自动全屏
function FullScreen()
{
    top.moveTo(0,0);
    top.resizeTo(window.screen.width,window.screen.height);
}

//获取Name对象数组 
function $N(name) 
{ 
    return document.getElementsByName(name); 
}

//通过Name获取
function $Name()
{
    var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementByName(element);

    if (arguments.length == 1)
      return element;

    elements.push(element);
  }

  return elements;
}

//获取TagName对象数组 
function $TN(tagName) 
{ 
    return document.getElementsByTagName(tagName); 
}

//获取某节点下的图片对象数组 
function $AI(obj) 
{ 
    return $(obj).getElementsByTagName("img"); 
}

//获取ID对象列表 
function $A() 
{ 
    var a = arguments; 
    var l = a.length; 
    function f(arg){ return typeof(arg)=="string" ? document.getElementById(arg) : arg }; 
    if (l==0) 
    { 
        return document.body.firstChild; 
    } 
    else if (l==1) 
    { 
        return f(a[0]); 
    } 
    else if (l>=2) 
    { 
        var o = {}; 
        for (var i=0;i<l;i++) 
        { 
            if (typeof(a[i])=="string") 
            { 
                if (/^(\w+):(\w+)$/.test(a[i])) 
                { 
                    o[RegExp.$1] = f(RegExp.$2); 
                } 
                else 
                { 
                    o[a[i]] = f(a[i]); 
                } 
            } 
            else 
            { 
                o[i] = f(a[i]); 
            } 
        } 
        return o; 
    } 
}

//把XML所有子节点的值转换为Json的形式 
function XmlToJson(pNode,blm) 
{ 
    var nodes = pNode.childNodes; 
    var Result = {}; 
    for (var i=0;i<nodes.length;i++) 
    { 
        var node = nodes[i]; 
        name = node.nodeName; 
        var fNode = node.firstChild; 
        if (fNode&&fNode.nodeType==1) 
        { 
            value = node; 
        } 
        else 
        { 
            value = node.text.Trim(); 
            if (!blm) 
            { 
                if (/^\d+$/.test(value)) 
                { 
                    value = Number(value); 
                } 
                else if(/^true$/i.test(value)) 
                { 
                    value = true; 
                } 
                else if(/^false$/i.test(value)) 
                { 
                    value = false; 
                } 
            } 
        } 
        Result[name] = value; 
    } 
    return Result; 
}

//删除字符串前后多余的空格 
String.prototype.Trim = function (m) 
{ 
    return this.replace(m ? /^\s*|\s*$/mg : /^\s*|\s*$/g, ""); 
}

//返回Radio组的选择项
function ReturnRadioObj(radioName)
{
    var objs = document.getElementsByName(radioName);
    var obj = null;
    for (var i=0; i<objs.length; i++)
    {
        if(objs[i].checked)
        {
            obj = objs[i];
        }
    }
    return obj;
}

//设置radio的选择项By指定的值
function SetRadioValueByVal(radioName,val)
{
    var objs = document.getElementsByName(radioName);
    for (var i=0; i<objs.length; i++)
    {
        if(objs[i].value == val)
        {
            objs[i].checked = "checked";
        }
    }
}

/*
//获取元数script脚本中属性src的值
//document.scripts
strDid元数的id
//fieldName要获取的名称如：ad=1
*/
function GetSrcStringByScript(fieldName)
 {  
      var src = document.scripts[0].src;
      var urlString = src.split("?")[1];
      if(urlString != null)
      {
           var typeQu = fieldName+"=";
           var urlEnd = urlString.indexOf(typeQu);
           if(urlEnd != -1)
           {
                var paramsUrl = urlString.substring(urlEnd+typeQu.length);
                var isEnd =  paramsUrl.indexOf("&");
                if(isEnd != -1)
                {
                     return paramsUrl.substring(0, isEnd);
                }
                else
                {
                    return paramsUrl;
                }
           }
           else 
           return null;
      }
     else
     return null;
 }
 
//获取元数script脚本中属性src的值
//strDid元数的id
//fieldName要获取的名称如：ad=1
function GetSrcStringById(strID,fieldName)
 {  
      var id = document.getElementById(strID);
      var src = id.getAttribute("src");
      var urlString = src.split("?")[1]; 
      if(urlString != null)
      {
           var typeQu = fieldName+"=";
           var urlEnd = urlString.indexOf(typeQu);
           if(urlEnd != -1)
           {
                var paramsUrl = urlString.substring(urlEnd+typeQu.length);
                var isEnd =  paramsUrl.indexOf("&");
                if(isEnd != -1)
                {
                     return paramsUrl.substring(0, isEnd);
                }
                else
                {
                    return paramsUrl;
                }
           }
           else 
           return null;
      }
     else
     return null;
 }

//获取document.location后的参数值
//fieldName要获取的名称如：ad=1
function GetQueryString(fieldName)
 {  
      var urlString = document.location.search;
      if(urlString != null)
      {
           var typeQu = fieldName+"=";
           var urlEnd = urlString.indexOf(typeQu);
           if(urlEnd != -1)
           {
                var paramsUrl = urlString.substring(urlEnd+typeQu.length);
                var isEnd =  paramsUrl.indexOf("&");
                if(isEnd != -1)
                {
                     return paramsUrl.substring(0, isEnd);
                }
                else
                {
                    return paramsUrl;
                }
           }
           else 
           return null;
      }
     else
     return null;
 }



//AJAX类 
function AjaxClass() 
{ 
    var XmlHttp = false; 
    try 
    { 
        XmlHttp = new XMLHttpRequest();        //FireFox专有 
    } 
    catch(e) 
    { 
        try 
        { 
            XmlHttp = new ActiveXObject("MSXML2.XMLHTTP"); 
        } 
        catch(e2) 
        { 
            try 
            { 
                XmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
            } 
            catch(e3) 
            { 
                window.alert("你的浏览器不支持XMLHTTP对象，请升级到IE6以上版本！"); 
                XmlHttp = false; 
            } 
        } 
    } 

    var me = this; 
    this.Method = "Get"; 
    this.Url = ""; 
    this.Async = true; 
    this.Arg = ""; 
    this.CallBack = function(){}; 
     
    this.Send = function() 
    { 
        if (this.Url=="") 
        { 
            return false; 
        } 
        if (!XmlHttp) 
        { 
            return IframePost(); 
        } 

        XmlHttp.open (this.Method, this.Url, this.Async); 
        if (this.Method=="POST") 
        { 
            XmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
        } 
        XmlHttp.onreadystatechange = function() 
        { 
            if (XmlHttp.readyState==4) 
            { 
                var Result = false; 
                if (XmlHttp.status==200) 
                { 
                    var rec = new ActiveXObject("ADODB.RecordSet"); 
                    rec.Fields.Append("DDD",201,1); 
                    rec.open(); 
                    rec.addNew(); 
                    rec(0).appendChunk(XmlHttp.responseBody); 
                    rec.update(); 
                    Result = rec(0).value; 
                    rec.Close(); 
                    rec = null; 
                } 
                XmlHttp = null; 
                 
                me.CallBack(Result); 
            } 
        } 
        if (this.Method=="POST") 
        { 
            XmlHttp.send(this.Arg); 
        } 
        else 
        { 
            XmlHttp.send(null); 
        } 
    } 
     
    //Iframe方式提交 
    function IframePost() 
    { 
        var Num = 0; 
        var obj = document.createElement("iframe"); 
        obj.attachEvent("onload",function(){ me.CallBack(obj.contentWindow.document.body.innerHTML); obj.removeNode() }); 
        obj.attachEvent("onreadystatechange",function(){ if (Num>=5) {alert(false);obj.removeNode()} }); 
        obj.src = me.Url; 
        obj.style.display = 'none'; 
        document.body.appendChild(obj); 
    } 
}

//分页类 
function ChgPageClass(PreObj,NextObj) 
{ 
    var me = this; 
    var obj = {}; 
    obj.Pre  = $(PreObj);        //"上一个"按钮对象 
    //obj.List = $(ListObj);        //列表对象 
    obj.Next = $(NextObj);        //"下一个"按钮对象 
    this.PreStyle = "";            //"上一个"按钮的样式（包括有效和无效两种状态，用逗名隔开写，如果只写一种，则有效跟无效一样） 
    this.NextStyle = "";        //"下一个"按钮的样式（包括有效和无效两种状态，用逗名隔开写，如果只写一种，则有效跟无效一样） 
     
    var AblePre = false;        //"上一个"按钮是否有效 
    var AbleNext = false;        //"下一个"按钮是否有效 
     
    //检查样式 
    var ChkStyle = function(){}; 
    var PageIdx = 0; 
    this.PageNum = 0; 
    this.Fun = function(){}; 
     
    //铵钮事件 
    obj.Pre.onclick = function () { if (AblePre) {me.Fun(--PageIdx);ChkStatus()} } 
    obj.Next.onclick = function () { if (AbleNext) {me.Fun(++PageIdx); ChkStatus()} } 
     
    //检查状态 
    function ChkStatus() 
    { 
        AblePre = PageIdx>0; 
        AbleNext = PageIdx<me.PageNum-1; 
        ChkStyle(); 
    } 
     
    //初始化 
    this.StartRun = function () 
    { 
        me.Fun(PageIdx); 
         
        if (this.PreStyle!=""&&this.NextStyle!="") 
        { 
            var PreStyle = this.PreStyle.match(/\w+/g); 
            var NextStyle = this.NextStyle.match(/\w+/g); 

            if (PreStyle.length>1&&NextStyle.length>1) 
            { 
                ChkStyle = function () 
                { 
                    obj.Pre.className = PreStyle[AblePre?0:1]; 
                    obj.Next.className =  NextStyle[AbleNext?0:1]; 
                } 
            } 
            else 
            { 
                obj.Pre.className = PreStyle[0]; 
                obj.Next.className = NextStyle[0]; 
            } 
        } 
        ChkStatus(); 
    } 
}

//对象拖动类 
function DragClass(obj,dragObj) //objBox为obj的父对象，当objBox为空时，objBox = obj 
{ 
    var me = this; 
    if (typeof(obj)=="string") 
    { 
        obj=$(obj); 
    } 
    if (obj.style.cursor!="move") 
    { 
        obj.style.cursor = "move"; 
    } 
    if (obj.style.position!="absolute") 
    { 
        obj.style.position = "absolute"; 
    } 
    dragObj = dragObj || obj; 
     
    var startX; 
    var startY; 
    var IsMoveAble = false; 
    var RotateID = 0; 
    var w = obj.offsetWidth; 
    var h = obj.offsetHeight; 
    var x1,y1,x2,y2;     
         
    this.top; 
    this.left; 
    this.range; 
    this.CheckRange = function (){}; 
    this.setRange = function() 
    { 
        if (arguments.length==1) 
        { 
            var rangeObj = arguments[0]; 
            if (typeof(rangeObj)=="string") rangeObj=$(rangeObj); 
            x1 = rangeObj.style.pixelLeft; 
            y1 = rangeObj.style.pixelTop; 
             
            x2 = x1 + rangeObj.offsetWidth; 
            y2 = y1 + rangeObj.offsetHeight; 
        } 
        else 
        { 
            x1 = arguments[0]; 
            y1 = arguments[1]; 
            x2 = arguments[2]; 
            y2 = arguments[3]; 
        } 
         
        if (obj.tagName=="IMG") 
        { 
            ChkImgRange(obj,{x1:x1, y1:y1, x2:x2, y2:y2}) 
        } 

        this.range = { minLeft:x1, minTop:y1, maxLeft:x2-w, maxTop:y2-h}; 
         
        this.CheckRange = function () 
        { 
            if (this.left<this.range.minLeft) 
            { 
                this.left = this.range.minLeft; 
            } 
            else if (this.left>this.range.maxLeft) 
            { 
                this.left = this.range.maxLeft; 
            } 
            if (this.top<this.range.minTop) 
            { 
                this.top = this.range.minTop; 
            } 
            else if (this.top>this.range.maxTop) 
            { 
                this.top = this.range.maxTop; 
            } 
        } 
    } 
     
    var EndEvent = function () {}; 
    this.ChgEvent = function (Fun) { EndEvent = Fun }; 
     
    dragObj.onmousedown = function () 
    { 
        this.setCapture(); 
        IsMoveAble = true; 
        var w=obj.offsetWidth; 
        var h=obj.offsetHeight; 
        if (me.range) 
        { 
            me.range.maxLeft = x2 - w; 
            me.range.maxTop = y2 -h; 
        } 
        var rid = Number(obj.style.filter.match(/\d/)); 
        if ( !isNaN(rid) && RotateID !=rid ) 
        { 
            me.range.maxLeft = x2-(rid%2?h:w); 
            me.range.maxTop = y2-(rid%2?w:h); 
            RotateID = rid; 
        } 
        startX = event.x - obj.style.pixelLeft; 
        startY = event.y - obj.style.pixelTop; 
    } 
     
    dragObj.onmousemove = function () 
    { 
        if (IsMoveAble) 
        { 
            me.left = event.x - startX; 
            me.top  = event.y - startY; 
            me.CheckRange();             
            obj.style.pixelLeft = me.left; 
            obj.style.pixelTop  = me.top; 
        } 
    } 
     
    dragObj.onmouseup  = function () 
    { 
        EndEvent(); 
        this.releaseCapture(); 
        IsMoveAble = false; 
    } 
}

//Flash生成类 
function DrawFlashClass(u,w,h) 
{ 
    var html = []; 
    this.AddParam = function(name,value) 
    { 
        html.push('<param name="'+name+'" value="'+value+'">'); 
    } 
    this.AddParam("movie",u); 
    this.AddParam("quality","high"); 
    this.DrawFlash = function() 
    { 
        document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'+w+'" height="'+h+'">'+html.join('')+'</object>'); 
    } 
}

/*
javascript文本的语法高亮类，用于在线编辑javascript
*/
//语法高亮类   
function HighLightClass(codetxt) 
{ 
    var BIU = { B:["normal","bold"], I:["normal","italic"], U:["none","underline"] }; 
    var ao = []; 
    ao[ao.length] = { re: /^(?:return|if|else|switch|case|break|default|for|in|do|while|continue|try|catch|finally|throw|void|with|new|delete|var|this|true|false|null|class)$/, color: "#000099", BIU: "100" };        //保留关键字 
    ao[ao.length] = { re: /^(?:eval|Number|String|parseInt|parseFloat|escape|unescape|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|isNaN|isFinite|typeof)$/, color:"#009999", BIU: "000" };                //global函数 
    ao[ao.length] = { re: /^(?:window|document|body|alert|open|setTimeout|setInterval|location|execScript)$/g, color:"#990099", BIU: "000" };        //客户端关键字 
    ao[ao.length] = { re: /^(?:String|Number|Array|Boolean|RegExp|Math|Date|Function|Object|arguments|Error)$/, color:"#009999", BIU: "000" };    //内建对象 
    ao[ao.length] = { re: /^(?:html|head|body|title|style|script|language|input|select|div|span|button|img|iframe|frame|frameset|table|tr|td|caption|form|font|meta|textarea)$/, color:"#000099", BIU: "000" };        //标记     
    ao[ao.length] = { re: /^function$/, color: "#000000", BIU: "100" };                            //函数关键字 
    ao[ao.length] = { re: /^[\{\}\(\)\[\]]+$/, color:"#000099", BIU: "100" };                    //括号 
    ao[ao.length] = { re: /^\d+$/, color:"#ff0000", BIU: "000" };                                //数字 
    ao[ao.length] = { re: /^(?:\+|\-|\*|\/|%|=|&&|\|\||:|\?|\!)$/, color:"#0000ff", BIU: "000" };    //运算符 
     
    var DelimiterWords = "　 ,.?!;:\\/<>(){}[]\"'\r\n\t=+-|*%@#$^&";        //得到分割字符 
    var CommentLine = "//";            //行注释字符 
    var Escape = "\\";                //转义字符 
    var CommentOn = "/*";            //多行引用开始 
    var CommentOff = "*/";            //多行引用结束 
    var RegExpOn = "/";                //正则表达式开始 
    var RegExpOff = "/";            //正则表达式结束     
    var Ignore = "<!--";            //忽略词     

    this.highlight = function () 
    { 
        var arr_Code = GetCutString(codetxt,DelimiterWords); 

        var QT_opened = false;            //引用标记 
        var SL_Opened = false;            //单行注释标记         
        var ML_Opened = false;            //多行注释标记 
        var RE_Opened = false;            //正则标记     
        var line_num = 1;                //行号 
        var quote_char = "";            //引用标记类型 
        var Tag_opened = false;        //标记开始 
        var htmlTxt = [];                //按分割字，分块显示 
         
        //处理代码颜色 
        function SetColor(ii,s) 
        { 
            var o = ao[ii]; 
            var a = o.BIU.match(/\d/g); 
            var css = [ "color:"+o.color, "font-weight:"+BIU.B[a[0]], "font-style:"+BIU.I[a[1]], "text-decoration:"+BIU.U[a[2]] ].join(";");  
            htmlTxt[htmlTxt.length] = '<span style="'+css+'">'+s+'</span>'; 
        }     

        for(var i=0;i<=arr_Code.length;i++) 
        { 
            var s = arr_Code[i]; 
         
            //处理空行（由于转义带来） 
            if(typeof(s)=="undefined"||s.length==0) 
            { 
                continue;                 
            } 
             
            //处理空格 
            if(s==" ") 
            { 
                htmlTxt[htmlTxt.length] = " ";             
            } 
            //处理关键字颜色代码 
            else if(!SL_Opened&&!ML_Opened&&!QT_opened&&ao[0].re.test(s))    SetColor(0,s); 
            else if(!SL_Opened&&!ML_Opened&&!QT_opened&&ao[1].re.test(s))    SetColor(1,s);             
            else if(!SL_Opened&&!ML_Opened&&!QT_opened&&ao[2].re.test(s))    SetColor(2,s);             
            else if(!SL_Opened&&!ML_Opened&&!QT_opened&&ao[3].re.test(s))    SetColor(3,s);             
            else if(!SL_Opened&&!ML_Opened&&!QT_opened&&ao[4].re.test(s))    SetColor(4,s);         
            else if(!SL_Opened&&!ML_Opened&&!QT_opened&&ao[5].re.test(s))    SetColor(5,s); 
            else if(!SL_Opened&&!ML_Opened&&!QT_opened&&ao[6].re.test(s))    SetColor(6,s); 
            else if(!SL_Opened&&!ML_Opened&&!QT_opened&&ao[7].re.test(s))    SetColor(7,s);             
            //处理换行 
            else if(s=="\n") 
            { 
                if(SL_Opened) 
                { 
                    htmlTxt[htmlTxt.length] = "</span>"; 
                    SL_Opened = false;                     
                } 
                htmlTxt[htmlTxt.length] = "<br/>";             
                line_num++;                 
                   
            } 
            //处理双引号（引号前不能为转义字符） 
            else if(/[\"\']/.test(s)&&!ML_Opened&&!SL_Opened) 
            { 
                if(QT_opened) 
                { 
                    //是相应的引号 
                    if(quote_char==arr_Code[i]) 
                    { 
                        if(Tag_opened) 
                        { 
                            htmlTxt[htmlTxt.length] = s + "</span><span style='color:#808000;'>"; 
                        } 
                        else  
                        { 
                            htmlTxt[htmlTxt.length] = s + "</span>";                               
                        } 
                        QT_opened = false;                         
                        quote_char = "";                         
                    } 
                    else  
                    { 
                        htmlTxt[htmlTxt.length] = s.replace(/\</g,"<");                         
                    } 
                } 
                else  
                { 
                    if(Tag_opened) 
                    { 
                        htmlTxt[htmlTxt.length] = "</span><span style='color:#0000ff;'>" + s;                         
                    } 
                    else  
                    { 
                        htmlTxt[htmlTxt.length] = "<span style='color:#0000ff;'>" + s;                         
                    } 
                    QT_opened = true;                     
                    quote_char = s;                     
                } 

            } 
            //处理转义字符 
            else if(s==Escape) 
            { 
                htmlTxt[htmlTxt.length] =  s; 
                if(i<arr_Code.length-1) 
                { 
                    if(arr_Code[i+1].charCodeAt(0)>=32&&arr_Code[i+1].charCodeAt(0)<=127) 
                    { 
                        htmlTxt[htmlTxt.length] = arr_Code[i+1].substr(0,1).replace("&","&").replace(/\</g,"<"); 
                        arr_Code[i+1] = arr_Code[i+1].substr(1); 
                    } 
                } 
            } 
            //处理Tab 
            else if(s=="\t") 
            { 
                htmlTxt[htmlTxt.length] = "    ";                                 
            } 
            //处理正则表达式开始 
            /*else if(IsStartWith(RegExpOn,arr_Code,i)&&!SL_Opened&&!ML_Opened&&!QT_opened) 
            { 
                RE_Opened = true;                 
                htmlTxt[htmlTxt.length] = "<span style='color:#006600;'>" + RegExpOn.replace(/\</g,"<");             
                i = i + RegExpOn.length - 1; 
            }*/ 
            //处理多行注释的开始 
            else if(IsStartWith(CommentOn,arr_Code,i)&&!SL_Opened&&!ML_Opened&&!QT_opened) 
            { 
                ML_Opened = true;                 
                htmlTxt[htmlTxt.length] = "<span style='color:#999999;'>" + CommentOn.replace(/\</g,"<");             
                i = i + CommentOn.length - 1; 
            } 
            //处理单行注释 
            else if(IsStartWith(CommentLine,arr_Code,i)&&!SL_Opened&&!ML_Opened&&!QT_opened) 
            { 
                SL_Opened = true;                 
                htmlTxt[htmlTxt.length] = "<span style='color:#999999;'>" + CommentLine;             
                i=i+CommentLine.length-1; 
            } 
            //处理忽略词 
            else if(IsStartWith(Ignore,arr_Code,i)&&!SL_Opened&&!ML_Opened&&!QT_opened) 
            { 
                SL_Opened = true;                 
                htmlTxt[htmlTxt.length] = "<span style='color:#008000;'>"+Ignore.replace(/\</g,"<");             
                i = i + Ignore.length - 1; 
            } 
            //处理多行注释结束 
            else if(IsStartWith(CommentOff,arr_Code,i)&&!QT_opened&&!SL_Opened) 
            { 
                if(ML_Opened) 
                { 
                    ML_Opened = false;                     
                    htmlTxt[htmlTxt.length] = CommentOff + "</span>";                 
                    i= i + CommentOff.length - 1; 
                } 
            } 
            //处理正则表达式结束 
            /*else if(IsStartWith(RegExpOff,arr_Code,i)&&!QT_opened&&!SL_Opened) 
            { 
                if(RE_Opened) 
                { 
                    RE_Opened = false;                     
                    htmlTxt[htmlTxt.length] = RegExpOff + "</span>";                 
                    i= i + RegExpOff.length - 1; 
                } 
            }*/ 
            //处理左标记 
            else if(this._dealTag&&!SL_Opened&&!ML_Opened&&!QT_opened&&s=="<") 
            { 
                htmlTxt[htmlTxt.length] = "<<span style='color:#808000;'>";                 
                Tag_opened=true;                 
            } 
            //处理右标记 
            else if(this._dealTag&&Tag_opened&&s==">") 
            { 
                htmlTxt[htmlTxt.length] = "</span>>";             
                Tag_opened = false;                 
            } 
            //处理HTML转义符号 
            else if(s=="&") 
            { 
                htmlTxt[htmlTxt.length] = "&";             
            } 
            else if(!SL_Opened&&!ML_Opened&&!QT_opened&&ao[8].re.test(s))    SetColor(8,s);     
            else  
            { 
                htmlTxt[htmlTxt.length] = s.replace(/\</g,"<");                 
            } 
        } 
        return htmlTxt.join("");         
    } 
} 



//得到分割字符数组(分词) 
function GetCutString(txt,str) 
{ 
    var a = [];         
    var j = 0;         
    for(var i=0;i<txt.length;i++) 
    { 
        var s = txt.charAt(i); 
         
        //提取非分割字符 
        if(str.indexOf(s)==-1) 
        { 
            if(a[j]==null||typeof(a[j])=='undefined') 
            { 
                a[j] = "";                     
            } 
            a[j] += s;                 
        } 
        //提取分割字符 
        else  
        { 
            if(typeof(a[j])!='undefined'&&a[j].length>0) 
            j++;                 
            a[j++] = s;                 
        } 
    } 
    return a; 
} 

//是否开始 
function IsStartWith(str,code,index) 
{ 
    if(typeof(str)!="undefined"&&str.length>0) 
    { 
        for(var i=0;i<str.length;i++) 
        { 
            if(str.charAt(i)!=code[index+i]||(index+i>=code.length)) 
            { 
                return false;                         
            } 
        } 
        return true;             
    } 
    else  
    { 
        return false;             
    } 
}
////////////////////////////////////////////////

//图片预加载类 
function LoadImageClass() 
{ 
    var me = this; 
    var a = [];    //图片数组 
    this.Idx = 0;    //已经被加载的图片个数 
    this.Num = 0;    //图片总数 

    //下载图片 
    this.LoadImages = function(s) 
    { 
        a = s.split(","); 
        this.Num = a.length; 
        DownImg(); 
    } 

    function DownImg() 
    { 
        var i=new Image(); 
        var f = true; 
        i.onload= function() 
        { 
            if (f) 
            { 
                f = false 
                me.Idx++; 
                if (me.LoadIng) me.LoadIng(); 
                if (me.Idx<me.Num) DownImg(); 
                else if(me.CallBack) me.CallBack(a); 
            } 
        } 
        i.src = a[me.Idx]; 
    } 
}

//选项卡类 
function OptionCardClass(obj) 
{ 
    var me = this; 
    var a = $(obj).children; 
    var a_cssName = []; 
    this.Idx = 0; 
    this.cssName = ""; 
     
    this.Run = function () 
    { 
        a_cssName = this.cssName.split(","); 
        for (var i=0;i<a.length;i++) 
        { 
            a[i].className = a_cssName[0]; 
        } 
        a[this.Idx].className = a_cssName[1]; 
        if (me.CallBack) me.CallBack(); 
         
        (function (i) 
        { 
            if (me.Idx==i) return; 
            a[me.Idx].className = a_cssName[0]; 
            me.Idx = i; 
            a[me.Idx].className = a_cssName[1]; 
            if (me.CallBack) me.CallBack(); 
        }).AttachListEvent(obj); 
    } 
}

//轮显效果类 
function RevealTranClass(obj) 
{ 
    var obj = $(obj); 
    if (!obj.filters.revealTrans) 
    { 
        obj.style.filter += "revealTrans(Duration=1.5,Transition=4);"; 
    } 
    this.obj = obj; 
    this.TranNum = 6; 
    this.DurNum = 1.5; 
    this.CallBack = function (){}; 
    this.Send = function (arg) 
    { 
        obj.filters.revealTrans.Duration = this.DurNum; 
        obj.filters.revealTrans.Transition = this.TranNum; 
        obj.filters.revealTrans.apply(); 
        this.CallBack(arg); 
        obj.filters.revealTrans.play(); 
    } 
}

//横向滚动类 
function ScrollListClass(PreObj,ListObj,NextObj)        //滚动列表类,3个参数分别为："上一个"按钮对象或ID，列表对象或ID，"下一个"按钮对象或ID 
{ 
    var me = this; 
    var obj = {}; 
    obj.Pre  = $(PreObj);        //"上一个"按钮对象 
    obj.List = $(ListObj);        //列表对象 
    obj.Next = $(NextObj);        //"下一个"按钮对象 
    this.PreStyle = "";            //"上一个"按钮的样式（包括有效和无效两种状态，用逗名隔开写，如果只写一种，则有效跟无效一样） 
    this.NextStyle = "";        //"下一个"按钮的样式（包括有效和无效两种状态，用逗名隔开写，如果只写一种，则有效跟无效一样） 
    this.TimeNum = 10;            //步进的时间频率（毫秒） 
    this.StepNum = 1;            //每次步进的距离（像素）     
    this.MoveNum = 1;            //每次滚动的距离（像素） 
     
    var MaxLen = 0;                //最大的scrollLeft 
    var AblePre = false;        //"上一个"按钮是否有效 
    var AbleNext = false;        //"下一个"按钮是否有效 
     
    //铵钮事件 
    obj.Pre.onclick = function () { if (AblePre) StepMove(-me.StepNum) } 
    obj.Next.onclick = function () { if (AbleNext) StepMove(me.StepNum) } 
     
    //检查样式 
    var ChkStyle = function(){}     

    //初始化 
    this.StartRun = function () 
    { 
        obj.List.scrollLeft = 0; 
        MaxLen = obj.List.scrollWidth - obj.List.offsetWidth; 
         
        if (this.PreStyle!=""&&this.NextStyle!="") 
        { 
            var PreStyle = this.PreStyle.match(/\w+/g); 
            var NextStyle = this.NextStyle.match(/\w+/g); 

            if (PreStyle.length>1&&NextStyle.length>1) 
            { 
                ChkStyle = function () 
                { 
                    obj.Pre.className = PreStyle[AblePre?0:1]; 
                    obj.Next.className = NextStyle[AbleNext?0:1]; 
                } 
            } 
            else 
            { 
                obj.Pre.className = PreStyle[0]; 
                obj.Next.className = NextStyle[0]; 
            } 
        } 
        ChkStatus(); 
    } 

    //检查状态 
    function ChkStatus() 
    { 
        AblePre = obj.List.scrollLeft>0; 
        AbleNext = MaxLen>0 && obj.List.scrollLeft<MaxLen; 
        ChkStyle(); 
    } 
     
    //步进滚动 
    function StepMove(Num) 
    { 
        obj.List.scrollLeft += Num; 
         
        if (obj.List.scrollLeft % me.MoveNum) 
        { 
            window.setTimeout(function(){StepMove(Num)},me.TimeNum); 
        } 
        else 
        { 
            ChkStatus(); 
        } 
    } 
}

//显示隐藏对象类 
function ShowObjClass(obj,IsHide) 
{ 
    if (typeof(obj)=="string") 
    { 
        obj = $(obj); 
    } 
    if (!obj.filters.alpha) 
    { 
        obj.style.filter += "alpha(opacity=100)"; 
    } 
    if (IsHide) 
    { 
        obj.style.display = 'none'; 
    } 
    var me = this; 
    var timer = null; 
     
    //定义类的属性 
    this.OpacityNum = 10; 
    this.TimeOutNum = 10; 
     
    //定义类的方法 
    this.Show = function(){obj.filters.alpha.opacity=100;obj.style.display = 'block';}; 
    this.Hide = function(){obj.style.display = 'none';}; 
    this.ShowCall = function(){return false;} 
    this.HideCall = function(){return false;} 
     
    //对象逐渐淡入 
    this.StepShow = function () 
    { 
        obj.filters.alpha.opacity = 0; 
        obj.style.display = 'block'; 
        (function () 
        { 
            obj.filters.alpha.opacity += me.OpacityNum; 
             
            if (obj.filters.alpha.opacity<100) 
            { 
                timer = window.setTimeout(arguments.callee,me.TimeOutNum); 
            } 
            else 
            { 
                window.clearTimeout(timer); 
                me.ShowCall(); 
            } 
        })(); 
    } 

    //对象逐渐淡出 
    this.StepHide = function () 
    { 
        obj.filters.alpha.opacity = 100; 
        (function () 
        { 
            obj.filters.alpha.opacity -= me.OpacityNum; 
             
            if (obj.filters.alpha.opacity>0 ) 
            { 
                timer = window.setTimeout(arguments.callee,me.TimeOutNum); 
            } 
            else 
            { 
                window.clearTimeout(timer); 
                obj.style.display = 'none'; 
                me.HideCall(); 
            } 
        })(); 
    } 
}

//表单验证类 
function ValidatorClass() 
{ 
    var IsError = false; 
     
    //检查姓名，只能输入中文、字母、数字、下划线 
    this.ChkName = function(obj,msg) 
    { 
        if (IsError) return; 
        if (obj.value.Trim().length<2||(/[^\u4e00-\u9fa5\w]/.test(obj.value.Trim()))) ErrorHandle(obj,msg); 
    } 
     
    //检查邮件地址 
    this.ChkEmail = function(obj,msg) 
    { 
        if (IsError) return; 
        if (!/^\w+@\w+\.(?:com|cn|org|net|cc|tv|info|com\.cn|net\.cn|org\.cn|gov\.cn)$/i.test(obj.value.Trim())) ErrorHandle(obj,msg); 
    } 
     
    //检查地名，只能是中文，并不能为空 
    this.ChkPlace = function(obj,msg) 
    { 
        if (IsError) return; 
        if (obj.value.Trim().length<1||(/[^\u4e00-\u9fa5]/.test(obj.value.Trim()))) ErrorHandle(obj,msg); 
    } 

    //检查详细地址 
    this.ChkAddress = function (obj,msg) 
    { 
        if (IsError) return; 
        if (obj.value.Trim().length<2) ErrorHandle(obj,msg); 
    } 

    //检查邮件编码 
    this.ChkPostNumber = function (obj,msg) 
    { 
        if (IsError) return; 
        if(!(/^\d{6}$/.test(obj.value.Trim()))) ErrorHandle(obj,msg); 
    } 
     
    //检查手机号码 
    this.ChkMobile = function (obj,msg) 
    { 
        if (IsError) return; 
        if (!(/^(?:13\d|159)-?\d{5}(\d{3}|\*{3})$/.test(obj.value.Trim()))) ErrorHandle(obj,msg); 
    } 
     
    //检查固定电话号码 
    this.ChkPhone = function (obj,msg) 
    { 
        if (IsError) return; 
        if (!((/^\d{3,4}-?\d{4,5}(\d{3}|\*{3})$/.test(obj.value.Trim())))) ErrorHandle(obj,msg); 
    } 
     
    //提交表单事件 
    this.Submit = function (Form,msg) 
    { 
        if (IsError) return; 
        if (msg) alert(msg); 
        Form.submit(); 
    } 
     
    //错误处理 
    function ErrorHandle(obj,msg) 
    { 
        alert(msg); 
        IsError = true; 
        obj.focus();         
    } 
}

//字符转换为XML文档 
String.prototype.ToXmlDoc = function () 
{ 
    var xmlObj = new ActiveXObject("Microsoft.XMLDOM");   
    xmlObj.async = false;  
    xmlObj.loadXML(this); 
    return xmlObj.documentElement; 
}

//显示表单所有的值 
function AlertForm(Form) 
{ 
    var a = []; 
    var ele = Form.elements; 
    for(var i=0;i<ele.length;i++) 
    { 
        if (ele[i].name) a[a.length] = ele[i].name + " = " + ele[i].value; 
    } 
    alert(a.join("\n")); 
}

//弹出对象的各个属性 
function AlertObj (obj) 
{ 
        var a = []; 
        for (var i in obj) 
        { 
            a.push(i+" = "+obj[i]); 
        } 
        alert(a.join("\n")); 
}

//检查图片位置是否超出指定的范围 
function ChkImgRange (img,Range) 
{ 
    var x1 = Range.x1; 
    var x2 = Range.x2; 
    var y1 = Range.y1; 
    var y2 = Range.y2; 
    //var r  = img.filters["DXImageTransform.Microsoft.BasicImage"].Rotation % 2; 
    var r  = img.filters[0].Rotation % 2; 
    var w  = r ? y2-y1 : x2 - x1; 
    var h  = r ? x2-x1 : y2 - y1; 
     
    if (img.width>w) 
    { 
        img.height = Math.round(w/img.width*img.height); 
        img.width = w; 
    } 
    if (img.height>h) 
    { 
        img.width  = Math.round(h/img.height*img.width); 
        img.height = h; 
    } 
     
    if (img.style.pixelLeft<x1) 
    { 
        img.style.pixelLeft = x1; 
    } 
    else if (img.style.pixelLeft>x2-GetHL(img)) 
    { 
        img.style.pixelLeft = x2-GetHL(img); 
    } 
     
    if (img.style.pixelTop<y1) 
    { 
        img.style.pixelTop = y1; 
    } 
    else if (img.style.pixelTop>y2-GetVL(img)) 
    { 
        img.style.pixelTop = y2-GetVL(img); 
    } 
}

//清空文件选择框并保留事件 
function ResetFile(obj) 
{ 
    var name = obj.name; 
    var form = obj.form; 
    var ChangeEvent = obj.onchange; 
    obj.outerHTML = obj.outerHTML; 
    form[name].onchange = ChangeEvent; 
}

//获取中文日期格式 
function GetChineseDate() 
{ 
    return new Date().toLocaleDateString()+" 星期"+"日一二三四五六".charAt( new Date().getDay() );  
}
/*
扩展方法模块
*/
//绑定子节点列表事件 
Function.prototype.AttachListEvent = function(objList) 
{ 
    objList = $(objList); 
    var me = this; 
    for(var i=0;i<objList.children.length;i++) 
    { 
        objList.children[i].onclick = (function(n){return function(){me(n)};})(i); 
    } 
}

//位数不满自动补零 
Number.prototype.AddZero = function (n2) 
{ 
    var n1 = String(this).length; 
    return n1<n2 ? new Array(n2-n1+1).join("0")+this : this; 
}

//字节数格式化 
Number.prototype.FormatByte = function () 
{ 
    return this<1<<10 ? this+" B" : (this<1<<20 ? (this/(1<<10)).toFixed(2)+" KB" : (this/(1<<20)).toFixed(2)+" MB"); 
}

//去掉以空格相隔的字符串中的任何一个关键字 
String.prototype.ClearKeyWord = function (w) 
{ 
    return this.replace(new RegExp("^"+w+"\\s","i"),"").replace(new RegExp("\\s"+w+"(\\s)","i"),"$1").replace(new RegExp("\\s"+w+"$","i"),""); 
}

//获取图片信息 
String.prototype.GetImgInfo = function (Func) 
{ 
    var Url = this; 
    var IsFirst = true; 
    var img = new Image(); 
    img.onload = function() 
    { 
        if (IsFirst) 
        { 
            //String原型为图像地址， Func图像下载完成后执行的函数，参数是一个object对象，包括宽、高、尺寸大小 
            var Result = { ImgUrl:Url, Width: this.width, Height:this.height, FileSize:Number(this.fileSize) }; 
            Func(Result); 
        } 
        IsFirst = false; 
    }; 
    img.onerror = function() { Func(false); } 
    img.src = Url+"?"+new Date().getTime(); 
}

//下载XML文件 
String.prototype.LoadXmlCode = function (fun) 
{ 
    var xmlObj = new ActiveXObject("Microsoft.XMLDOM"); 
    xmlObj.async = true; 

    xmlObj.onreadystatechange = function () 
    { 
        if (xmlObj.readyState==4) fun(xmlObj.documentElement) 
    } 

    xmlObj.load( this.toString() ); 
}

//数字变红 
String.prototype.NumberRed = function () 
{ 
    return this.replace(/[\d\.]+/g,"$&".fontcolor("#ff0000")); 
}

//字符转换为XML文档 
String.prototype.ToXmlDoc = function () 
{ 
    var xmlObj = new ActiveXObject("Microsoft.XMLDOM");   
    xmlObj.async = false;  
    xmlObj.loadXML(this); 
    return xmlObj.documentElement; 
}

//JS版的Server.UrlEncode编码函数 
String.prototype.UrlEncode = function() 
{ 
    var str = this; 
    str = str.replace(/./g,function(sHex) 
    { 
        window.EnCodeStr = ""; 
        window.sHex = sHex; 
        window.execScript('window.EnCodeStr=Hex(Asc(window.sHex))',"vbscript"); 
        return window.EnCodeStr.replace(/../g,"%$&"); 
    }); 
    return str; 
}
