/**//* 标准程序块 Author:King Astar Date: 2005-11-10 */ /**//****************************************************** Desp: 调用远程数据 Date: 2005-11-9 Author: King astar Params:改变的本地Div或者其它元素的ID,远程调用的URL,处理函数 如果处理函数为空,则自动将返回的HTML代码设置为元素内部的HTML *******************************************************/ function LoadDataInContainer(objeName,url,dealFunc) { this.ContentObj = document.getElementById(objeName); if(this.ContentObj==null) return; ShowProgress(1); if(dealFunc!=null) this.DealFunction = dealFunc; else this.DealFunction =null; if (window.XMLHttpRequest) { req =new XMLHttpRequest(); req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(null); // branch for IE/Windows ActiveX version }elseif (window.ActiveXObject) { isIE =true; req =new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(); } } } //数据返回后处理 function processReqChange() { // only if req shows "loaded" if (req.readyState ==4) { // only if "OK" if (req.status ==200) { if(this.DealFunction!=null) { try { this.DealFunction(); }catch(e){alert("调用方法失败:"+e.description);} ShowProgress(2); } else { //alert( req.responseText); try { this.ContentObj.innerHTML = req.responseText; } catch(e){alert(e.description);} ShowProgress(2); } }else{ alert("There was a problem retrieving the XML data:\n"+ req.statusText); } } } //显示进程正在进行 function ShowProgress(status) { var progressDiv = document.getElementById("progressDiv"); if(progressDiv==null) { progressDiv = document.createElement("div"); progressDiv.innerHTML ="数据加载中"; progressDiv.id ="progressDiv"; progressDiv.name ="progressDiv"; document.body.appendChild(progressDiv); } if(status==1) progressDiv.style.display =""; else progressDiv.style.display ="none"; }
/**//****************************************************** Desp: 点击设置表格颜色的程序块 Date: 2005-11-9 Author: King astar Params:table,新颜色代码,是否包括table的题头也变 ******************************************************/ function AttachTableOnchangeEvent(table,NewColor,includingTitle) { this.newColor = NewColor; this.includingtitle = includingTitle; table.attachEvent("onmousedown",OnClickChangeTdBackColor); } function OnClickChangeTdBackColor() { var srcElement=event.srcElement; //var Everselected ="whitesmoke"; var TabElement =event.srcElement; var oldcolor; while(srcElement.tagName.toLowerCase()!="tr") { srcElement=srcElement.parentElement; } while(TabElement.tagName.toLowerCase()!="table") { TabElement = TabElement.parentElement; } //alert(srcElement.tagName); for (var i=0;i<TabElement.rows.length;i++) { if(TabElement.rows[i].style.background!=this.newColor ) { oldcolor=TabElement.rows[i].style.background; break; } } for(var i=0;i<TabElement.rows.length;i++) { TabElement.rows[i].style.background=oldcolor; } //alert(srcElement.rowIndex==0&&this.includingtitle); if(!(srcElement.rowIndex==0&&!this.includingtitle)) srcElement.style.background=this.newColor ; }
/**//****************************************************** Desp: 取得当前URL地址 Date: 2005-11-11 Author: King astar Params:其它url参数 Returns:当前的路径+其它url参数 ******************************************************/ function getVirtualPath(reUrl) { var ss,sss; try { ss = window.location; } catch(e) { alert(e.description); } ss +=""; sss = ss.split("/"); ss =""; if(sss.length>1) { for(i=0;i<sss.length-1;i++) { ss+=sss[i]+"/"; } } return ss+reUrl; }
/**//****************************************************** Desp: An implementation of the debug log. Date: 2005-11-15 Author: google inc ******************************************************/ var logging__ =false; function Log() {}; Log.lines = []; Log.write =function(s) { if (logging__) { this.lines.push(xmlEscapeText(s)); this.show(); } }; // Writes the given XML with every tag on a new line. Log.writeXML =function(xml) { if (logging__) { var s0 = xml.replace(/</g, '\n<'); var s1 = xmlEscapeText(s0); var s2 = s1.replace(/\s*\n(\s|\n)*/g, '<br/>'); this.lines.push(s2); this.show(); } } // Writes without any escaping Log.writeRaw =function(s) { if (logging__) { this.lines.push(s); this.show(); } } Log.clear =function() { if (logging__) { var l =this.div(); l.innerHTML = ''; this.lines = []; } } Log.show =function() { var l =this.div(); l.innerHTML +=this.lines.join('<br/>') + '<br/>'; this.lines = []; l.scrollTop = l.scrollHeight; } Log.div =function() { var l = document.getElementById('log'); if (!l) { l = document.createElement('div'); l.id = 'log'; l.style.position = 'absolute'; l.style.right = '10px'; l.style.top = '20px'; l.style.width = '250px'; l.style.height = '150px'; l.style.overflow = 'auto'; l.style.backgroundColor = '#f0f0f0'; l.style.border = '1px solid gray'; l.style.fontSize = '10px'; l.style.padding = '5px'; document.body.appendChild(l); } return l; }
/**//* Desp:产生下拉列过滤选择项;Attach the filter to a table. Date: 2005-11-9 Author: ? Params: filterRow specifies the rownumber at which the filter should be inserted. Modify: 主要比较的是内容,所有把innerHTML换成了innerText 另外就是在特定的列创建 2.0 */ function attachFilter2(table, filterRow) { table.filterRow = filterRow; // Check if the table has any rows. If not, do nothing if(table.rows.length >0) { // Insert the filterrow and add cells whith drowdowns. var filterRow = table.insertRow(table.filterRow); table.fillFilters = fillFilters; table.inFilter = inFilter; table.buildFilter = buildFilter; table.showAll = showAll; table.detachFilter = detachFilter; table.filterElements =new Array(); table.filterElements[0]=2; var colLen = table.rows[0].cells.length; alert(colLen); for(var i =0; i < table.rows[table.filterRow +1].cells.length; i++) { var c = document.createElement("TH"); table.rows[table.filterRow].appendChild(c); var opt = document.createElement("select"); opt.onchange = filter; if(!table.inFilter( colLen-i)) { c.appendChild(opt); } else { c.innerText=""; } } // Set the functions // Fill the filters table.fillFilters(); table.filterEnabled =true; } } function detachFilter() { if(this.filterEnabled) { // Remove the filter this.showAll(); this.deleteRow(this.filterRow); this.filterEnabled =false; } } // Checks if a column is filtered function inFilter(col) { for(var i =0; i <this.filterElements.length; i++) { //if(this.filterElements[i].index == col) if(this.filterElements[i] == col) returntrue; } returnfalse; } // Fills the filters for columns which are not fiiltered function fillFilters() { for(var col =0; col <this.rows[this.filterRow].cells.length; col++) { if(!this.inFilter(col)) { this.buildFilter(col, "(all)"); } } } // Fills the columns dropdown box. // setValue is the value which the dropdownbox should have one filled. // If the value is not suplied, the first item is selected function buildFilter(col, setValue) { // Get a reference to the dropdownbox. var opt =this.rows[this.filterRow].cells[col].firstChild; // remove all existing items while(opt.length >0) opt.remove(0); var values =new Array(); // put all relevant strings in the values array. for(var i =this.filterRow +1; i <this.rows.length; i++) { var row =this.rows[i]; if(row.style.display !="none"&& row.className !="noFilter") { values.push(row.cells[col].innerText.toLowerCase()); } } values.sort(); //add each unique string to the dopdownbox var value; for(var i =0; i < values.length; i++) { if(values[i].toLowerCase() != value) { value = values[i].toLowerCase(); opt.options.add(new Option(values[i], value)); } } opt.options.add(new Option("(all)", "(all)"), 0); if(setValue != undefined) opt.value = setValue; else opt.options[0].selected =true; } // This function is called when a dropdown box changes function filter() { var table =this; // 'this' is a reference to the dropdownbox which changed while(table.tagName.toUpperCase() !="TABLE") table = table.parentNode; var filterIndex =this.parentNode.cellIndex; // The column number of the column which should be filtered var filterText = table.rows[table.filterRow].cells[filterIndex].firstChild.value; // First check if the column is allready in the filter. var bFound =false; for(var i =0; i < table.filterElements.length; i++) { if(table.filterElements[i].index == filterIndex) { bFound =true; // If the new value is '(all') this column is removed from the filter. if(filterText =="(all)") { table.filterElements.splice(i, 1); } else { table.filterElements[i].filter = filterText; } break; } } if(!bFound) { // the column is added to the filter var obj =new Object(); obj.filter = filterText; obj.index = filterIndex; table.filterElements.push(obj); } // first set all rows to be displayed table.showAll(); // the filter ou the right rows. for(var i =0; i < table.filterElements.length; i++) { // First fill the dropdown box for this column table.buildFilter(table.filterElements[i].index, table.filterElements[i].filter); // Apply the filter for(var j = table.filterRow +1; j < table.rows.length; j++) { var row = table.rows[j]; if(table.style.display !="none"&& row.className !="noFilter") { if(table.filterElements[i].filter != row.cells[table.filterElements[i].index].innerText.toLowerCase()) { row.style.display ="none"; } } } } // Fill the dropdownboxes for the remaining columns. table.fillFilters(); } function showAll() { for(var i =this.filterRow +1; i <this.rows.length; i++) { this.rows[i].style.display =""; } }