function IsIE() { if (window.ActiveXObject) return true; else return false; } function getXml(node) { var serializer = new XMLSerializer(); return serializer.serializeToString(node); } function transformNode(oxml,oxsl) { if (IsIE()) { return oxml.transformNode(oxsl); } else { var xlstProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(oxsl); return getXml(xslprocessor.transformToFragment(oxml, document)); } } //获取单个XML节点 function selectSingleNode(oxmldom,xpath){ if (IsIE()) { return oxmldom.selectSingleNode(xpath); } else { var oEvaluator = new XPathEvaluator(); var oResult = oEvaluator.evaluate(xpath,oxmldom,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null); if (oResult != null) { return oResult.singleNodeValue; } else { return null; } } } function selectNodes(oxmldom,xpath) { if (IsIE()) { return oxmldom.selectNodes(xpath); } else { var oEvaluator = new XPathEvaluator(); var oResult = oEvaluator.evaluate(opath,oxmldom,null,XPathResult.ORDERED_NODE_TYPE,null); var oNodes = new Array; if (oResult != null) { var oElement = oResult.iterateNext(); while (oElement) { oNodes.push(oElement); oElement = oResult.iterateNext(); } } return oNodes; } } function getXMLText(oNode) { var sText = ""; for (var i = 0; i < oNode.childNodes.length; i++) { if (oNode.childNodes[i].hasChildNodes()) { sText += getXMLText(oNode.childNodes[i]); } else { sText += oNode.childNodes[i].nodeValue; } } return sText; } function createXMLDom() { if (IsIE()) { var oXmlDom = new ActiveXObject("Msxml2.DOMDocument"); return oXmlDom; /*var XMLVersion = ["MSXML2.Document.5.0","MSXML2.Document.4.0","MSXML2.Document.3.0", "MSXML2.Document","Microsoft.XmlDom"]; for (var i = 0;i < XMLVersion.length;i++ ) { try { var oXmlDom = new ActiveXObject(XMLVersion[i]); return oXmlDom; } catch (oError) { // do nothing } } throw new Error("Not install msxml");*/ } else if (document.implementation && document.implementation.createDocument) { try { var oXmlDom = document.implementation.createDocument("","",null); return oXmlDom; } catch (oError) { throw new Error("Your browser not support XMLDocument"); } } } function setCookieEx(name,value,expires,path,domain,secure) { var _cookie = name + "=" + value; if(expires) { _cookie += ";expires="+expires.toGMTString(); } if(path) { _cookie += ";path=" + path; } if(domain) { _cookie += ";domain="+domain; } if(secure) { _cookie += ";secure"; } document.cookie = _cookie; } function getCookieEx(name) { var s = "(?:; )?"+name+"=([^;]*);?"; var ex = new RegExp(s); if (ex.test(document.cookie)) { return RegExp["$1"]; } else return null; } function delCookieEx(name,path,domain) { setCookie(name,"",new Date(0),path,domain); } function TList(lineCount, recordCount, dataObject) { //分页列表基类。 //lineCount,每页数量。 //dataObject,存放数据的对象。XML数据通过xsl转换成字符串后保存在__dataObject的innerHTML属性中。 //列表标准格式如下: //
//
// ... //
//
// dataObject的父结点为最上层div。 // 操作行的格式必须严格满足。其父结点为最上层div。 // 如果不符合该格式,派生类必须实现__onLoading方法。 //分页的算法 //一、条件 // A、边缘页数 > 保留页数 //二、初始化页 //如果总页数小于或者等于2*保留页数 + 中间页数,则显示所有页数 //否则,页面初始化为:[1 ,边缘页数]...[总页数 - 保留页数 + 1, 总页数]。如:1 2 3 4。。15 16 // //三、中间变量 //转换点1 = 保留页数 + 取整((中间页数 + 1) / 2) + 1 //转换点2 = 总页数 - 保留页数 - 取整(中间页数 / 2) - 1 // //四、页码点击 // A、如果总页数小于或者等于2*保留页数 + 中间页数,始终显示所有页数 // B、点击页数<=保留页数 // 页面为:[1, 边缘页数]...[总页数 - 保留页数 + 1, 总页数] // C、保留页数<点击页数<转换点1 // 页面为:[1, 边缘页数 + 点击页数 - 保留页数]...[总页数 - 保留页数 + 1, 总页数] // D、转换点1<=点击页数<=转换点2 // 页面为:[1, 保留页数]...[点击页数 - 取整((中间页数 - 1) / 2), 点击页数 + 取整(中间页数 / 2)]...[总页数 - 保留页数 + 1, 总页数] // E、转换点2<点击页数<总页数 - 保留页数 + 1 // 页面为:[1, 保留页数]...[点击页数 + 保留页数 - 边缘页数, 总页数] // F、点击页数>=总页数 - 保留页数 + 1 // 页面为:[1, 保留页数]...[总页数 - 边缘页数 + 1, 总页数] //开发技巧。在实例方法中使用me代替this,以避免this在使用过程中发生作用域的变迁。 var me = this; //操作区域 me.__funcObject = null; //首尾保留页数 me.__remainPageCount = 2; //中间的页数 me.__middlePageCount = 7; //最边缘一屏(第一屏和最后一屏) 页数 me.__cornerPageCount = 4; //布局状态 me.__layerStatus = null; //每页数量。 me.__lineCount = lineCount; //存放数据的对象。XML数据通过xsl转换成字符串后保存在__dataObject的innerHTML属性中。 me.__dataObject = dataObject; //收到的XML数据。 me.__xmlString = null; //收到的XSL数据。 me.__xslString = null; //新的请求页。 me.__newPage = 1; //描述对象 me.__descObject = null; //页码录入对象 me.__pageInputObject = null; //页数 me.__pageCount = Math.ceil(recordCount / lineCount); //获取或者设置当前页。 me.CurrentPage = 1; //加载数据时的列表行为。 me.__onLoading = function() { if (null!=me.__descObject) me.__descObject.innerText = "正在加载......"; } //XML数据加载完毕时的回调函数 me.__onXmlLoaded = function(res) { me.__xmlString = res.value; me.__onListLoaded(); } //XSL数据加载完毕时的回调函数 me.__onXslLoaded = function(res) { me.__xslString = res.value; me.__onListLoaded(); } //数据加载完毕时的处理。 //即把XML通过XSL转换为字符串赋给__dataObject的innerHTML属性。 me.__onListLoaded = function() { if (null!=me.__xmlString && null!=me.__xslString) { var oXml = createXMLDom(); oXml.resolveExternals = false; if (IsIE()) { oXml.loadXML(me._XmlString); } else { var oParser=new DOMParser(); oXml=oParser.parseFromString(me._XmlString,"application/xml"); } var oXsl = createXMLDom(); oXsl.resolveExternals = false; if (IsIE()) { oXsl.loadXML(me._XslString); } else { var oParser=new DOMParser(); oXsl=oParser.parseFromString(me._XslString,"application/xml"); } var s = transformNode(oXml,oXsl); setInnerHTML(dataObject, s); //刘丹 2007-4-24 修改为使用setInnerHTML函数 if (null!=me.__descObject) me.__descObject.innerText = ""; me.__generatePageView(); me.__xmlString = null; me.CurrentPage = me.__newPage; //最后一步执行。避免其它方法使用__newPage时出现问题。 } } //获取XML数据的方法。需要派生类实现。 //派生类调用AjaxPro方法时,callback为me.onXmlLoaded。 me.__requestXml = null; //获取XSL数据的方法。需要派生类实现。 //派生类调用AjaxPro方法时,callback为me.onXslLoaded。 me.__requestXsl = null; //获取指定页的数据 me.NavigatePage = function(page) { if (isNaN(page)) page = 1; page = page * 1; //转换为number类型 if (page==me.CurrentPage) return; me.__newPage = (page>me.__pageCount?me.__pageCount:page<=0?1:page); me.RefreshPage(); return false;//如果是链接则不刷新页面。 } //刷新当前页 me.RefreshPage = function() { me.__xmlString = null; me.__onLoading(); me.__requestXml(me.__newPage); if (null==me.__xslString) me.__requestXsl(); //me.__generatePageView();me.CurrentPage = me.__newPage; //测试用 } //重新设置总条数(用于计算总页数) me.ResetRecordCount = function(newRecordCount) { me.__pageCount = Math.ceil(newRecordCount / lineCount); } //获取首页数据 me.FirstPage = function() { me.NavigatePage(1); } //获取前页数据 me.PreviousPage = function() { if (1==me.CurrentPage) return; me.NavigatePage(me.CurrentPage - 1); } //获取后页数据 me.NextPage = function() { if (me.__pageCount==me.CurrentPage) return; me.NavigatePage(me.CurrentPage + 1); } //初始化操作对象 me.__initObjects = function(dataObject) { //初始化操作对象 var objects = dataObject.parentElement.children; var oFuncLine = null; for (var i=0; i=0; i--) me.__funcObject.removeChild(me.__funcObject.children(i)); } me.__generatePageView = function() { me.__clearPage(); if (me.__pageCount<=1) return; var obj; obj = me.__generatePageButton("上一页", me.PreviousPage); if (me.__pageCount<=me.__middlePageCount + 2 * me.__remainPageCount) me.__generateIdentityPage(1, me.__pageCount); else { var point1 = me.__remainPageCount + Math.floor((me.__middlePageCount + 1) / 2) + 1; var point2 = me.__pageCount - me.__remainPageCount - Math.floor(me.__middlePageCount / 2) - 1; if (me.__newPage<=me.__remainPageCount) { me.__generateIdentityPage(1, me.__cornerPageCount); me.__generateSuspensionPoint(); me.__generateIdentityPage(me.__pageCount - me.__remainPageCount + 1, me.__pageCount); } else if (me.__remainPageCount= 0 && ua.indexOf('opera') < 0) { if (typeof(htmlCode)=="object") { el.innerHTML = ''; el.appendChild(htmlCode); } else { htmlCode = '
for IE
' + htmlCode; htmlCode = htmlCode.replace(/]*)>/gi, ''); el.innerHTML = ''; el.innerHTML = htmlCode; el.removeChild(el.firstChild); } } else { var el_next = el.nextSibling; var el_parent = el.parentNode; el_parent.removeChild(el); if (typeof(htmlCode)=="object") el.appendChild(htmlCode); else el.innerHTML = htmlCode; if (el_next) { el_parent.insertBefore(el, el_next); } else { el_parent.appendChild(el); } } } if(timer==null) { timer = setInterval(callback,1); } } /* ------------------------------------------------------------------ 2007-04-11 刘丹 本类进行xml数据和xsl样式加载转换为html过程。 实例: var loader = new TLoadXMLToHtmlData("templates/blog/blog_pub_widget.xsl"); loader.onGetHTML = function(ret) { alert(ret); //取得html后行为 } loader.LoadXSLFile(); MoneyWise.WoNiuGu.HttpHandler.TUserBlogPubWidgetXML.RemoteExecute(loader.doLoadXMLData); ------------------------------------------------------------------ */ function TXMLToHtmlDataLoader(xslfile, pArrayOfParams) { var me = this; var xslprocessor = null;//used for ff me.XSLFile = xslfile; me.ParamsArray = pArrayOfParams; me._XmlString = null; me._XslString = null; me.onGetHTML = function(htmlstr) { } me.doTransXMLToHtml = function() { if (null!=me._XmlString && null!=me._XslString) { var oXml = createXMLDom(); oXml.resolveExternals = false; if (IsIE()) { oXml.loadXML(me._XmlString); } else { var oParser=new DOMParser(); oXml=oParser.parseFromString(me._XmlString,"application/xml"); } var oXsl = createXMLDom();; oXsl.resolveExternals = false; if (IsIE()) { oXsl.loadXML(me._XslString); } else { var oParser=new DOMParser(); oXsl=oParser.parseFromString(me._XslString,"application/xml"); } if (!IsIE()) { xslprocessor =new XSLTProcessor(); xslprocessor.importStylesheet(oXsl); } if(null!=me.ParamsArray) { for(var i=0; i0) { for(i=0;i0) $(sltAllCheckBoxName).checked=true; } } //功能:返回ie中真正的当前body元素,用于获得当前元素的真正坐标 function IeTrueBody(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body; } //功能:取指定对象的x坐标 function GetX(e){ var l=e.offsetLeft; while(e=e.offsetParent){ l+=e.offsetLeft; } return(l); } //功能:取指定对象的y坐标 function GetY(e){ var t=e.offsetTop; while(e=e.offsetParent){ t+=e.offsetTop; } return(t); } //功能:替换页面所有元素ID为xx的innerHTML中的内容 function replaceStrByElementsName(objName,val){ var objs=document.getElementsByName(objName); for(i=0;i/gi; return str.replace(reg,""); } //功能:检测日期输入框的日期,日期格式错误,设置为默认日期 function checkDate(obj, defaultDate){ if(!IsDate(obj.value)) { alert("请输入正确的日期格式!"); if(IsDate(defaultDate)) obj.value = defaultDate; else obj.value="1981-01-01"; return false; } } //字符字节长度 function StrLength(sString) { var sStr,iCount,i,strTemp; iCount = 0; sStr = sString.split(""); for(i = 0; i < sStr.length; i ++) { strTemp = escape(sStr[i]); if(strTemp.indexOf("%u",0) == -1) // 表示是汉字 { iCount = iCount + 1; } else { iCount = iCount + 2; } } return iCount; } // HTMLEncode String ----------------------------------------- function HTMLEncode(str) { if(str==undefined){ return ""; } str = str.replace(/\&/g, "&"); str = str.replace(/\>/g, ">"); str = str.replace(/\"); return str; } // HTMLEncode For Textarea ----------------------------------- function HTMLEncodeLite(str) { if(str==undefined){ return ""; } str = str.replace(/\&/g, "&"); str = str.replace(/\>/g, ">"); str = str.replace(/\