Solved

Javascript sort works in Mozilla but not in IE6.. why is that?

Posted on 2008-06-11
8
1,429 Views
Last Modified: 2008-06-13
Hi Experts,

I'm not good with javascript, and I'm using a table sorting/paging/filtering script which works brilliantly on Mozilla, but the sorting does not work in IE6.

I would be super grateful if somebody out there could fix it so the sorting will work in IE6 too!

This is very urgent!!! Javascript and html table code follows..

rss2

** code moved to snippet - b0lsc0tt **
***Javascript***(table.js)
/**
 * Copyright (c)2005-2007 Matt Kruse (javascripttoolbox.com)
 * 
 * Dual licensed under the MIT and GPL licenses. 
 * This basically means you can use this code however you want for
 * free, but don't claim to have written it yourself!
 * Donations always accepted: http://www.JavascriptToolbox.com/donate/
 * 
 * Please do not link to the .js files on javascripttoolbox.com from
 * your site. Copy the files locally to your server instead.
 * 
 */
/**
 * Table.js
 * Functions for interactive Tables
 *
 * Copyright (c) 2007 Matt Kruse (javascripttoolbox.com)
 * Dual licensed under the MIT and GPL licenses. 
 *
 * @version 0.981
 *
 * @history 0.981 2007-03-19 Added Sort.numeric_comma, additional date parsing formats
 * @history 0.980 2007-03-18 Release new BETA release pending some testing. Todo: Additional docs, examples, plus jQuery plugin.
 * @history 0.959 2007-03-05 Added more "auto" functionality, couple bug fixes
 * @history 0.958 2007-02-28 Added auto functionality based on class names
 * @history 0.957 2007-02-21 Speed increases, more code cleanup, added Auto Sort functionality
 * @history 0.956 2007-02-16 Cleaned up the code and added Auto Filter functionality.
 * @history 0.950 2006-11-15 First BETA release.
 *
 * @todo Add more date format parsers
 * @todo Add style classes to colgroup tags after sorting/filtering in case the user wants to highlight the whole column
 * @todo Correct for colspans in data rows (this may slow it down)
 * @todo Fix for IE losing form control values after sort?
 */
 
/**
 * Sort Functions
 */
var Sort = (function(){
	var sort = {};
	// Default alpha-numeric sort
	// --------------------------
	sort.alphanumeric = function(a,b) {
		return (a==b)?0:(a<b)?-1:1;
	};
	sort['default'] = sort.alphanumeric; // IE chokes on sort.default
 
	// This conversion is generalized to work for either a decimal separator of , or .
	sort.numeric_converter = function(separator) {
		return function(val) {
			if (typeof(val)=="string") {
				val = parseFloat(val.replace(/^[^\d\.]*([\d., ]+).*/g,"$1").replace(new RegExp("[^\\\d"+separator+"]","g"),'').replace(/,/,'.')) || 0;
			}
			return val || 0;
		};
	};
 
	// Numeric Sort	
	// ------------
	sort.numeric = function(a,b) {
		return sort.numeric.convert(a)-sort.numeric.convert(b);
	};
	sort.numeric.convert = sort.numeric_converter(".");
 
	// Numeric Sort	- comma decimal separator
	// --------------------------------------
	sort.numeric_comma = function(a,b) {
		return sort.numeric_comma.convert(a)-sort.numeric_comma.convert(b);
	};
	sort.numeric_comma.convert = sort.numeric_converter(",");
 
	// Case-insensitive Sort
	// ---------------------
	sort.ignorecase = function(a,b) {
		return sort.alphanumeric(sort.ignorecase.convert(a),sort.ignorecase.convert(b));
	};
	sort.ignorecase.convert = function(val) {
		if (val==null) { return ""; }
		return (""+val).toLowerCase();
	};
 
	// Currency Sort
	// -------------
	sort.currency = sort.numeric; // Just treat it as numeric!
	sort.currency_comma = sort.numeric_comma;
 
	// Date sort
	// ---------
	sort.date = function(a,b) {
		return sort.numeric(sort.date.convert(a),sort.date.convert(b));
	};
	// Convert 2-digit years to 4
	sort.date.fixYear=function(yr) {
		yr = +yr;
		if (yr<50) { yr += 2000; }
		else if (yr<100) { yr += 1900; }
		return yr;
	};
	sort.date.formats = [
		// YY[YY]-MM-DD
		{ re:/(\d{2,4})-(\d{1,2})-(\d{1,2})/ , f:function(x){ return (new Date(sort.date.fixYear(x[1]),+x[2],+x[3])).getTime(); } }
		// MM/DD/YY[YY] or MM-DD-YY[YY]
		,{ re:/(\d{1,2})[\/-](\d{1,2})[\/-](\d{2,4})/ , f:function(x){ return (new Date(sort.date.fixYear(x[3]),+x[1],+x[2])).getTime(); } }
		// Any catch-all format that new Date() can handle. This is not reliable except for long formats, for example: 31 Jan 2000 01:23:45 GMT
		,{ re:/(.*\d{4}.*\d+:\d+\d+.*)/, f:function(x){ var d=new Date(x[1]); if(d){return d.getTime();} } }
	];
	sort.date.convert = function(val) {
		var m,v, f = sort.date.formats;
		for (var i=0,L=f.length; i<L; i++) {
			if (m=val.match(f[i].re)) {
				v=f[i].f(m);
				if (typeof(v)!="undefined") { return v; }
			}
		}
		return 9999999999999; // So non-parsed dates will be last, not first
	};
 
	return sort;
})();
 
/**
 * The main Table namespace
 */
var Table = (function(){
 
	/**
	 * Determine if a reference is defined
	 */
	function def(o) {return (typeof o!="undefined");};
 
	/**
	 * Determine if an object or class string contains a given class.
	 */
	function hasClass(o,name) {
		return new RegExp("(^|\\s)"+name+"(\\s|$)").test(o.className);
	};
 
	/**
	 * Add a class to an object
	 */
	function addClass(o,name) {
		var c = o.className || "";
		if (def(c) && !hasClass(o,name)) {
			o.className += (c?" ":"") + name;
		}
	};
 
	/**
	 * Remove a class from an object
	 */
	function removeClass(o,name) {
		var c = o.className || "";
		o.className = c.replace(new RegExp("(^|\\s)"+name+"(\\s|$)"),"$1");
	};
 
	/**
	 * For classes that match a given substring, return the rest
	 */
	function classValue(o,prefix) {
		var c = o.className;
		if (c.match(new RegExp("(^|\\s)"+prefix+"([^ ]+)"))) {
			return RegExp.$2;
		}
		return null;
	};
 
	/**
	 * Return true if an object is hidden.
	 * This uses the "russian doll" technique to unwrap itself to the most efficient
	 * function after the first pass. This avoids repeated feature detection that 
	 * would always fall into the same block of code.
	 */
	 function isHidden(o) {
		if (window.getComputedStyle) {
			var cs = window.getComputedStyle;
			return (isHidden = function(o) {
				return 'none'==cs(o,null).getPropertyValue('display');
			})(o);
		}
		else if (window.currentStyle) {
			return(isHidden = function(o) {
				return 'none'==o.currentStyle['display'];
			})(o);
		}
		return (isHidden = function(o) {
			return 'none'==o.style['display'];
		})(o);
	};
 
	/**
	 * Get a parent element by tag name, or the original element if it is of the tag type
	 */
	function getParent(o,a,b) {
		if (o!=null && o.nodeName) {
			if (o.nodeName==a || (b && o.nodeName==b)) {
				return o;
			}
			while (o=o.parentNode) {
				if (o.nodeName && (o.nodeName==a || (b && o.nodeName==b))) {
					return o;
				}
			}
		}
		return null;
	};
 
	/**
	 * Utility function to copy properties from one object to another
	 */
	function copy(o1,o2) {
		for (var i=2;i<arguments.length; i++) {
			var a = arguments[i];
			if (def(o1[a])) {
				o2[a] = o1[a];
			}
		}
	}
 
	// The table object itself
	var table = {
		//Class names used in the code
		AutoStripeClassName:"table-autostripe",
		StripeClassNamePrefix:"table-stripeclass:",
 
		AutoSortClassName:"table-autosort",
		AutoSortColumnPrefix:"table-autosort:",
		AutoSortTitle:"Click to sort",
		SortedAscendingClassName:"table-sorted-asc",
		SortedDescendingClassName:"table-sorted-desc",
		SortableClassName:"table-sortable",
		SortableColumnPrefix:"table-sortable:",
		NoSortClassName:"table-nosort",
 
		AutoFilterClassName:"table-autofilter",
		FilteredClassName:"table-filtered",
		FilterableClassName:"table-filterable",
		FilteredRowcountPrefix:"table-filtered-rowcount:",
		RowcountPrefix:"table-rowcount:",
		FilterAllLabel:"Filter: All",
 
		AutoPageSizePrefix:"table-autopage:",
		AutoPageJumpPrefix:"table-page:",
		PageNumberPrefix:"table-page-number:",
		PageCountPrefix:"table-page-count:"
	};
 
	/**
	 * A place to store misc table information, rather than in the table objects themselves
	 */
	table.tabledata = {};
 
	/**
	 * Resolve a table given an element reference, and make sure it has a unique ID
	 */
	table.uniqueId=1;
	table.resolve = function(o,args) {
		if (o!=null && o.nodeName && o.nodeName!="TABLE") {
			o = getParent(o,"TABLE");
		}
		if (o==null) { return null; }
		if (!o.id) {
			var id = null;
			do { var id = "TABLE_"+(table.uniqueId++); } 
				while (document.getElementById(id)!=null);
			o.id = id;
		}
		this.tabledata[o.id] = this.tabledata[o.id] || {};
		if (args) {
			copy(args,this.tabledata[o.id],"stripeclass","ignorehiddenrows","useinnertext","sorttype","col","desc","page","pagesize");
		}
		return o;
	};
 
 
	/**
	 * Run a function against each cell in a table header or footer, usually 
	 * to add or remove css classes based on sorting, filtering, etc.
	 */
	table.processTableCells = function(t, type, func, arg) {
		t = this.resolve(t);
		if (t==null) { return; }
		if (type!="TFOOT") {
			this.processCells(t.tHead, func, arg);
		}
		if (type!="THEAD") {
			this.processCells(t.tFoot, func, arg);
		}
	};
 
	/**
	 * Internal method used to process an arbitrary collection of cells.
	 * Referenced by processTableCells.
	 * It's done this way to avoid getElementsByTagName() which would also return nested table cells.
	 */
	table.processCells = function(section,func,arg) {
		if (section!=null) {
			if (section.rows && section.rows.length && section.rows.length>0) { 
				var rows = section.rows;
				for (var j=0,L2=rows.length; j<L2; j++) { 
					var row = rows[j];
					if (row.cells && row.cells.length && row.cells.length>0) {
						var cells = row.cells;
						for (var k=0,L3=cells.length; k<L3; k++) {
							var cellsK = cells[k];
							func.call(this,cellsK,arg);
						}
					}
				}
			}
		}
	};
 
	/**
	 * Get the cellIndex value for a cell. This is only needed because of a Safari
	 * bug that causes cellIndex to exist but always be 0.
	 * Rather than feature-detecting each time it is called, the function will
	 * re-write itself the first time it is called.
	 */
	table.getCellIndex = function(td) {
		var tr = td.parentNode;
		var cells = tr.cells;
		if (cells && cells.length) {
			if (cells.length>1 && cells[cells.length-1].cellIndex>0) {
				// Define the new function, overwrite the one we're running now, and then run the new one
				(this.getCellIndex = function(td) {
					return td.cellIndex;
				})(td);
			}
			// Safari will always go through this slower block every time. Oh well.
			for (var i=0,L=cells.length; i<L; i++) {
				if (tr.cells[i]==td) {
					return i;
				}
			}
		}
		return 0;
	};
 
	/**
	 * A map of node names and how to convert them into their "value" for sorting, filtering, etc.
	 * These are put here so it is extensible.
	 */
	table.nodeValue = {
		'INPUT':function(node) { 
			if (def(node.value) && node.type && ((node.type!="checkbox" && node.type!="radio") || node.checked)) {
				return node.value;
			}
			return "";
		},
		'SELECT':function(node) {
			if (node.selectedIndex>=0 && node.options) {
				// Sort select elements by the visible text
				return node.options[node.selectedIndex].text;
			}
			return "";
		},
		'IMG':function(node) {
			return node.name || "";
		}
	};
 
	/**
	 * Get the text value of a cell. Only use innerText if explicitly told to, because 
	 * otherwise we want to be able to handle sorting on inputs and other types
	 */
	table.getCellValue = function(td,useInnerText) {
		if (useInnerText && def(td.innerText)) {
			return td.innerText;
		}
		if (!td.childNodes) { 
			return ""; 
		}
		var childNodes=td.childNodes;
		var ret = "";
		for (var i=0,L=childNodes.length; i<L; i++) {
			var node = childNodes[i];
			var type = node.nodeType;
			// In order to get realistic sort results, we need to treat some elements in a special way.
			// These behaviors are defined in the nodeValue() object, keyed by node name
			if (type==1) {
				var nname = node.nodeName;
				if (this.nodeValue[nname]) {
					ret += this.nodeValue[nname](node);
				}
				else {
					ret += this.getCellValue(node);
				}
			}
			else if (type==3) {
				if (def(node.innerText)) {
					ret += node.innerText;
				}
				else if (def(node.nodeValue)) {
					ret += node.nodeValue;
				}
			}
		}
		return ret;
	};
 
	/**
	 * Consider colspan and rowspan values in table header cells to calculate the actual cellIndex
	 * of a given cell. This is necessary because if the first cell in row 0 has a rowspan of 2, 
	 * then the first cell in row 1 will have a cellIndex of 0 rather than 1, even though it really
	 * starts in the second column rather than the first.
	 * See: http://www.javascripttoolbox.com/temp/table_cellindex.html
	 */
	table.tableHeaderIndexes = {};
	table.getActualCellIndex = function(tableCellObj) {
		if (!def(tableCellObj.cellIndex)) { return null; }
		var tableObj = getParent(tableCellObj,"TABLE");
		var cellCoordinates = tableCellObj.parentNode.rowIndex+"-"+this.getCellIndex(tableCellObj);
 
		// If it has already been computed, return the answer from the lookup table
		if (def(this.tableHeaderIndexes[tableObj.id])) {
			return this.tableHeaderIndexes[tableObj.id][cellCoordinates];      
		} 
 
		var matrix = [];
		this.tableHeaderIndexes[tableObj.id] = {};
		var thead = getParent(tableCellObj,"THEAD");
		var trs = thead.getElementsByTagName('TR');
 
		// Loop thru every tr and every cell in the tr, building up a 2-d array "grid" that gets
		// populated with an "x" for each space that a cell takes up. If the first cell is colspan
		// 2, it will fill in values [0] and [1] in the first array, so that the second cell will
		// find the first empty cell in the first row (which will be [2]) and know that this is
		// where it sits, rather than its internal .cellIndex value of [1].
		for (var i=0; i<trs.length; i++) {
			var cells = trs[i].cells;
			for (var j=0; j<cells.length; j++) {
				var c = cells[j];
				var rowIndex = c.parentNode.rowIndex;
				var cellId = rowIndex+"-"+this.getCellIndex(c);
				var rowSpan = c.rowSpan || 1;
				var colSpan = c.colSpan || 1;
				var firstAvailCol;
				if(!def(matrix[rowIndex])) { 
					matrix[rowIndex] = []; 
				}
				var m = matrix[rowIndex];
				// Find first available column in the first row
				for (var k=0; k<m.length+1; k++) {
					if (!def(m[k])) {
						firstAvailCol = k;
						break;
					}
				}
				this.tableHeaderIndexes[tableObj.id][cellId] = firstAvailCol;
				for (var k=rowIndex; k<rowIndex+rowSpan; k++) {
					if(!def(matrix[k])) { 
						matrix[k] = []; 
					}
					var matrixrow = matrix[k];
					for (var l=firstAvailCol; l<firstAvailCol+colSpan; l++) {
						matrixrow[l] = "x";
					}
				}
			}
		}
		// Store the map so future lookups are fast.
		return this.tableHeaderIndexes[tableObj.id][cellCoordinates];
	};
 
	/**
	 * Sort all rows in each TBODY (tbodies are sorted independent of each other)
	 */
	table.sort = function(o,args) {
		var t, tdata, sortconvert=null;
		// Allow for a simple passing of sort type as second parameter
		if (typeof(args)=="function") {
			args={sorttype:args};
		}
		args = args || {};
 
		// If no col is specified, deduce it from the object sent in
		if (!def(args.col)) { 
			args.col = this.getActualCellIndex(o) || 0; 
		}
		// If no sort type is specified, default to the default sort
		args.sorttype = args.sorttype || Sort['default'];
 
		// Resolve the table
		t = this.resolve(o,args);
		tdata = this.tabledata[t.id];
 
		// If we are sorting on the same column as last time, flip the sort direction
		if (def(tdata.lastcol) && tdata.lastcol==tdata.col && def(tdata.lastdesc)) {
			tdata.desc = !tdata.lastdesc;
		}
		else {
			tdata.desc = !!args.desc;
		}
 
		// Store the last sorted column so clicking again will reverse the sort order
		tdata.lastcol=tdata.col;
		tdata.lastdesc=!!tdata.desc;
 
		// If a sort conversion function exists, pre-convert cell values and then use a plain alphanumeric sort
		var sorttype = tdata.sorttype;
		if (typeof(sorttype.convert)=="function") {
			sortconvert=tdata.sorttype.convert;
			sorttype=Sort.alphanumeric;
		}
 
		// Loop through all THEADs and remove sorted class names, then re-add them for the col
		// that is being sorted
		this.processTableCells(t,"THEAD",
			function(cell) {
				if (hasClass(cell,this.SortableClassName)) {
					removeClass(cell,this.SortedAscendingClassName);
					removeClass(cell,this.SortedDescendingClassName);
					// If the computed colIndex of the cell equals the sorted colIndex, flag it as sorted
					if (tdata.col==table.getActualCellIndex(cell) && (classValue(cell,table.SortableClassName))) {
						addClass(cell,tdata.desc?this.SortedAscendingClassName:this.SortedDescendingClassName);
					}
				}
			}
		);
 
		// Sort each tbody independently
		var bodies = t.tBodies;
		if (bodies==null || bodies.length==0) { return; }
 
		// Define a new sort function to be called to consider descending or not
		var newSortFunc = (tdata.desc)?
			function(a,b){return sorttype(b[0],a[0]);}
			:function(a,b){return sorttype(a[0],b[0]);};
 
		var useinnertext=!!tdata.useinnertext;
		var col = tdata.col;
 
		for (var i=0,L=bodies.length; i<L; i++) {
			var tb = bodies[i], tbrows = tb.rows, rows = [];
 
			// Allow tbodies to request that they not be sorted
			if(!hasClass(tb,table.NoSortClassName)) {
				// Create a separate array which will store the converted values and refs to the
				// actual rows. This is the array that will be sorted.
				var cRow, cRowIndex=0;
				if (cRow=tbrows[cRowIndex]){
					// Funky loop style because it's considerably faster in IE
					do {
						if (rowCells = cRow.cells) {
							var cellValue = (col<rowCells.length)?this.getCellValue(rowCells[col],useinnertext):null;
							if (sortconvert) cellValue = sortconvert(cellValue);
							rows[cRowIndex] = [cellValue,tbrows[cRowIndex]];
						}
					} while (cRow=tbrows[++cRowIndex])
				}
 
				// Do the actual sorting
				rows.sort(newSortFunc);
 
				// Move the rows to the correctly sorted order. Appending an existing DOM object just moves it!
				cRowIndex=0;
				var displayedCount=0;
				var f=[removeClass,addClass];
				if (cRow=rows[cRowIndex]){
					do { 
						tb.appendChild(cRow[1]); 
					} while (cRow=rows[++cRowIndex])
				}
			}
		}
 
		// If paging is enabled on the table, then we need to re-page because the order of rows has changed!
		if (tdata.pagesize) {
			this.page(t); // This will internally do the striping
		}
		else {
			// Re-stripe if a class name was supplied
			if (tdata.stripeclass) {
				this.stripe(t,tdata.stripeclass,!!tdata.ignorehiddenrows);
			}
		}
	};
 
	/**
	* Apply a filter to rows in a table and hide those that do not match.
	*/
	table.filter = function(o,filters,args) {
		var cell;
		args = args || {};
 
		var t = this.resolve(o,args);
		var tdata = this.tabledata[t.id];
 
		// If new filters were passed in, apply them to the table's list of filters
		if (!filters) {
			// If a null or blank value was sent in for 'filters' then that means reset the table to no filters
			tdata.filters = null;
		}
		else {
			// Allow for passing a select list in as the filter, since this is common design
			if (filters.nodeName=="SELECT" && filters.type=="select-one" && filters.selectedIndex>-1) {
				filters={ 'filter':filters.options[filters.selectedIndex].value };
			}
			// Also allow for a regular input
			if (filters.nodeName=="INPUT" && filters.type=="text") {
				filters={ 'filter':"/^"+filters.value+"/" };
			}
			// Force filters to be an array
			if (typeof(filters)=="object" && !filters.length) {
				filters = [filters];
			}
 
			// Convert regular expression strings to RegExp objects and function strings to function objects
			for (var i=0,L=filters.length; i<L; i++) {
				var filter = filters[i];
				if (typeof(filter.filter)=="string") {
					// If a filter string is like "/expr/" then turn it into a Regex
					if (filter.filter.match(/^\/(.*)\/$/)) {
						filter.filter = new RegExp(RegExp.$1);
						filter.filter.regex=true;
					}
					// If filter string is like "function (x) { ... }" then turn it into a function
					else if (filter.filter.match(/^function\s*\(([^\)]*)\)\s*\{(.*)}\s*$/)) {
						filter.filter = Function(RegExp.$1,RegExp.$2);
					}
				}
				// If some non-table object was passed in rather than a 'col' value, resolve it 
				// and assign it's column index to the filter if it doesn't have one. This way, 
				// passing in a cell reference or a select object etc instead of a table object 
				// will automatically set the correct column to filter.
				if (filter && !def(filter.col) && (cell=getParent(o,"TD","TH"))) {
					filter.col = this.getCellIndex(cell);
				}
 
				// Apply the passed-in filters to the existing list of filters for the table, removing those that have a filter of null or ""
				if ((!filter || !filter.filter) && tdata.filters) {
					delete tdata.filters[filter.col];
				}
				else {
					tdata.filters = tdata.filters || {};
					tdata.filters[filter.col] = filter.filter;
				}
			}
			// If no more filters are left, then make sure to empty out the filters object
			for (var j in tdata.filters) { var keep = true; }
			if (!keep) {
				tdata.filters = null;
			}
		}		
		// Everything's been setup, so now scrape the table rows
		return table.scrape(o);
	};
 
	/**
	 * "Page" a table by showing only a subset of the rows
	 */
	table.page = function(t,page,args) {
		args = args || {};
		if (def(page)) { args.page = page; }
		return table.scrape(t,args);
	};
 
	/**
	 * Jump forward or back any number of pages
	 */
	table.pageJump = function(t,count,args) {
		t = this.resolve(t,args);
		return this.page(t,(table.tabledata[t.id].page||0)+count,args);
	};
 
	/**
	 * Go to the next page of a paged table
	 */	
	table.pageNext = function(t,args) {
		return this.pageJump(t,1,args);
	};
 
	/**
	 * Go to the previous page of a paged table
	 */	
	table.pagePrevious = function(t,args) {
		return this.pageJump(t,-1,args);
	};
 
	/**
	* Scrape a table to either hide or show each row based on filters and paging
	*/
	table.scrape = function(o,args) {
		var col,cell,filterList,filterReset=false,filter;
		var page,pagesize,pagestart,pageend;
		var unfilteredrows=[],unfilteredrowcount=0,totalrows=0;
		var t,tdata,row,hideRow;
		args = args || {};
 
		// Resolve the table object
		t = this.resolve(o,args);
		tdata = this.tabledata[t.id];
 
		// Setup for Paging
		var page = tdata.page;
		if (def(page)) {
			// Don't let the page go before the beginning
			if (page<0) { tdata.page=page=0; }
			pagesize = tdata.pagesize || 25; // 25=arbitrary default
			pagestart = page*pagesize+1;
			pageend = pagestart + pagesize - 1;
		}
 
		// Scrape each row of each tbody
		var bodies = t.tBodies;
		if (bodies==null || bodies.length==0) { return; }
		for (var i=0,L=bodies.length; i<L; i++) {
			var tb = bodies[i];
			for (var j=0,L2=tb.rows.length; j<L2; j++) {
				row = tb.rows[j];
				hideRow = false;
 
				// Test if filters will hide the row
				if (tdata.filters && row.cells) {
					var cells = row.cells;
					var cellsLength = cells.length;
					// Test each filter
					for (col in tdata.filters) {
						if (!hideRow) {
							filter = tdata.filters[col];
							if (filter && col<cellsLength) {
								var val = this.getCellValue(cells[col]);
								if (filter.regex && val.search) {
									hideRow=(val.search(filter)<0);
								}
								else if (typeof(filter)=="function") {
									hideRow=!filter(val,cells[col]);
								}
								else {
									hideRow = (val!=filter);
								}
							}
						}
					}
				}
 
				// Keep track of the total rows scanned and the total runs _not_ filtered out
				totalrows++;
				if (!hideRow) {
					unfilteredrowcount++;
					if (def(page)) {
						// Temporarily keep an array of unfiltered rows in case the page we're on goes past
						// the last page and we need to back up. Don't want to filter again!
						unfilteredrows.push(row);
						if (unfilteredrowcount<pagestart || unfilteredrowcount>pageend) {
							hideRow = true;
						}
					}
				}
 
				row.style.display = hideRow?"none":"";
			}
		}
 
		if (def(page)) {
			// Check to see if filtering has put us past the requested page index. If it has, 
			// then go back to the last page and show it.
			if (pagestart>=unfilteredrowcount) {
				pagestart = unfilteredrowcount-(unfilteredrowcount%pagesize);
				tdata.page = page = pagestart/pagesize;
				for (var i=pagestart,L=unfilteredrows.length; i<L; i++) {
					unfilteredrows[i].style.display="";
				}
			}
		}
 
		// Loop through all THEADs and add/remove filtered class names
		this.processTableCells(t,"THEAD",
			function(c) {
				((tdata.filters && def(tdata.filters[table.getCellIndex(c)]) && hasClass(c,table.FilterableClassName))?addClass:removeClass)(c,table.FilteredClassName);
			}
		);
 
		// Stripe the table if necessary
		if (tdata.stripeclass) {
			this.stripe(t);
		}
 
		// Calculate some values to be returned for info and updating purposes
		var pagecount = Math.floor(unfilteredrowcount/pagesize)+1;
		if (def(page)) {
			// Update the page number/total containers if they exist
			if (tdata.container_number) {
				tdata.container_number.innerHTML = page+1;
			}
			if (tdata.container_count) {
				tdata.container_count.innerHTML = pagecount;
			}
		}
 
		// Update the row count containers if they exist
		if (tdata.container_filtered_count) {
			tdata.container_filtered_count.innerHTML = unfilteredrowcount;
		}
		if (tdata.container_all_count) {
			tdata.container_all_count.innerHTML = totalrows;
		}
		return { 'data':tdata, 'unfilteredcount':unfilteredrowcount, 'total':totalrows, 'pagecount':pagecount, 'page':page, 'pagesize':pagesize };
	};
 
	/**
	 * Shade alternate rows, aka Stripe the table.
	 */
	table.stripe = function(t,className,args) { 
		args = args || {};
		args.stripeclass = className;
 
		t = this.resolve(t,args);
		var tdata = this.tabledata[t.id];
 
		var bodies = t.tBodies;
		if (bodies==null || bodies.length==0) { 
			return; 
		}
 
		className = tdata.stripeclass;
		// Cache a shorter, quicker reference to either the remove or add class methods
		var f=[removeClass,addClass];
		for (var i=0,L=bodies.length; i<L; i++) {
			var tb = bodies[i], tbrows = tb.rows, cRowIndex=0, cRow, displayedCount=0;
			if (cRow=tbrows[cRowIndex]){
				// The ignorehiddenrows test is pulled out of the loop for a slight speed increase.
				// Makes a bigger difference in FF than in IE.
				// In this case, speed always wins over brevity!
				if (tdata.ignoreHiddenRows) {
					do {
						f[displayedCount++%2](cRow,className);
					} while (cRow=tbrows[++cRowIndex])
				}
				else {
					do {
						if (!isHidden(cRow)) {
							f[displayedCount++%2](cRow,className);
						}
					} while (cRow=tbrows[++cRowIndex])
				}
			}
		}
	};
 
	/**
	 * Build up a list of unique values in a table column
	 */
	table.getUniqueColValues = function(t,col) {
		var values={}, bodies = this.resolve(t).tBodies;
		for (var i=0,L=bodies.length; i<L; i++) {
			var tbody = bodies[i];
			for (var r=0,L2=tbody.rows.length; r<L2; r++) {
				values[this.getCellValue(tbody.rows[r].cells[col])] = true;
			}
		}
		var valArray = [];
		for (var val in values) {
			valArray.push(val);
		}
		return valArray.sort();
	};
 
	/**
	 * Scan the document on load and add sorting, filtering, paging etc ability automatically
	 * based on existence of class names on the table and cells.
	 */
	table.auto = function(args) {
		var cells = [], tables = document.getElementsByTagName("TABLE");
		var val,tdata;
		if (tables!=null) {
			for (var i=0,L=tables.length; i<L; i++) {
				var t = table.resolve(tables[i]);
				tdata = table.tabledata[t.id];
				if (val=classValue(t,table.StripeClassNamePrefix)) {
					tdata.stripeclass=val;
				}
				// Do auto-filter if necessary
				if (hasClass(t,table.AutoFilterClassName)) {
					table.autofilter(t);
				}
				// Do auto-page if necessary
				if (val = classValue(t,table.AutoPageSizePrefix)) {
					table.autopage(t,{'pagesize':+val});
				}
				// Do auto-sort if necessary
				if ((val = classValue(t,table.AutoSortColumnPrefix)) || (hasClass(t,table.AutoSortClassName))) {
					table.autosort(t,{'col':(val==null)?null:+val});
				}
				// Do auto-stripe if necessary
				if (tdata.stripeclass && hasClass(t,table.AutoStripeClassName)) {
					table.stripe(t);
				}
			}
		}
	};
 
	/**
	 * Add sorting functionality to a table header cell
	 */
	table.autosort = function(t,args) {
		t = this.resolve(t,args);
		var tdata = this.tabledata[t.id];
		this.processTableCells(t, "THEAD", function(c) {
			var type = classValue(c,table.SortableColumnPrefix);
			if (type!=null) {
				type = type || "default";
				c.title =c.title || table.AutoSortTitle;
				addClass(c,table.SortableClassName);
				c.onclick = Function("","Table.sort(this,{'sorttype':Sort['"+type+"']})");
				// If we are going to auto sort on a column, we need to keep track of what kind of sort it will be
				if (args.col!=null) {
					if (args.col==table.getActualCellIndex(c)) {
						tdata.sorttype=Sort['"+type+"'];
					}
				}
			}
		} );
		if (args.col!=null) {
			table.sort(t,args);
		}
	};
 
	/**
	 * Add paging functionality to a table 
	 */
	table.autopage = function(t,args) {
		t = this.resolve(t,args);
		var tdata = this.tabledata[t.id];
		if (tdata.pagesize) {
			this.processTableCells(t, "THEAD,TFOOT", function(c) {
				var type = classValue(c,table.AutoPageJumpPrefix);
				if (type=="next") { type = 1; }
				else if (type=="previous") { type = -1; }
				if (type!=null) {
					c.onclick = Function("","Table.pageJump(this,"+type+")");
				}
			} );
			if (val = classValue(t,table.PageNumberPrefix)) {
				tdata.container_number = document.getElementById(val);
			}
			if (val = classValue(t,table.PageCountPrefix)) {
				tdata.container_count = document.getElementById(val);
			}
			return table.page(t,0,args);
		}
	};
 
	/**
	 * A util function to cancel bubbling of clicks on filter dropdowns
	 */
	table.cancelBubble = function(e) {
		e = e || window.event;
		if (typeof(e.stopPropagation)=="function") { e.stopPropagation(); } 
		if (def(e.cancelBubble)) { e.cancelBubble = true; }
	};
 
	/**
	 * Auto-filter a table
	 */
	table.autofilter = function(t,args) {
		args = args || {};
		t = this.resolve(t,args);
		var tdata = this.tabledata[t.id],val;
		table.processTableCells(t, "THEAD", function(cell) {
			if (hasClass(cell,table.FilterableClassName)) {
				var cellIndex = table.getCellIndex(cell);
				var colValues = table.getUniqueColValues(t,cellIndex);
				if (colValues.length>0) {
					if (typeof(args.insert)=="function") {
						func.insert(cell,colValues);
					}
					else {
						var sel = '<select onchange="Table.filter(this,this)" onclick="Table.cancelBubble(event)" class="'+table.AutoFilterClassName+'"><option value="">'+table.FilterAllLabel+'</option>';
						for (var i=0; i<colValues.length; i++) {
							sel += '<option value="'+colValues[i]+'">'+colValues[i]+'</option>';
						}
						sel += '</select>';
						cell.innerHTML += "<br>"+sel;
					}
				}
			}
		});
		if (val = classValue(t,table.FilteredRowcountPrefix)) {
			tdata.container_filtered_count = document.getElementById(val);
		}
		if (val = classValue(t,table.RowcountPrefix)) {
			tdata.container_all_count = document.getElementById(val);
		}
	};
 
	/**
	 * Attach the auto event so it happens on load.
	 * use jQuery's ready() function if available
	 */
	if (typeof(jQuery)!="undefined") {
		jQuery(table.auto);
	}
	else if (window.addEventListener) {
		window.addEventListener( "load", table.auto, false );
	}
	else if (window.attachEvent) {
		window.attachEvent( "onload", table.auto );
	}
 
	return table;
})();
 
 
***HTML table***
(apologies that it's illegible..it is written dynamically from a dataset)
<table id='alertstable' class='example table-autosort table-autofilter table-autopage:10 table-stripeclass:alternate table-page-number:t1page table-page-count:t1pages table-filtered-rowcount:t1filtercount table-rowcount:t1allcount'><thead><tr><th><input type='checkbox' ID='chkSelectAll' /></th><th class='table-filterable table-sortable:default'>Hostname</th><th class='table-filterable table-sortable:default'>Appquest ID</th><th>Application</th><th>Pending Status</th><th>Event Type</th><th>Event Priority</th><th>Environment</th><th>L2 Op Mgr</th><th>Event Creation Date</th><th>First Email Sent</th><th>First Email Received</th><th>Last Chased Date</th><th>Date Last Responded</th><th>Next Review Date</th></tr></thead><tbody><tr id=Select$0 onclick=javascript:ShowNewAlertDetails('Select$0'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab0' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab0'/></td><td>cmcppb112</td><td>25314</td><td>T2</td><td></td><td>New CMDB - Not in TW</td><td>P2</td><td>Prod</td><td>Roger Lifson</td><td>29/05/2008 15:54:06</td><td></td><td></td><td></td><td></td><td></td><td id='Select$0Primary_Hostname' class='hiddencol'>cmcppb112</td><td id='Select$0Primary_IP_Address' class='hiddencol'>169.82.224.52</td><td id='Select$0FQDNs' class='hiddencol'>None Specified</td><td id='Select$0Hardware_Model' class='hiddencol'>DELL POWEREDGE 2950</td><td id='Select$0asset_type' class='hiddencol'>SERVER</td><td id='Select$0asset_state' class='hiddencol'>Prod</td><td id='Select$0asset_status' class='hiddencol'>In Use</td><td id='Select$0OSName' class='hiddencol'>Red Hat Enterprise Linux Advanced Server 3</td><td id='Select$0Region' class='hiddencol'>NA</td><td id='Select$0Server_Owner' class='hiddencol'></td><td id='Select$0TW_App_Name' class='hiddencol'></td><td id='Select$0TW_Process' class='hiddencol'></td><td id='Select$0Last_Login' class='hiddencol'>2008-06-08 12:10:46.25</td><td id='Select$0Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$0Host_in_TW_YesNo' class='hiddencol'>never seen</td><td id='Select$0Notes' class='hiddencol'></td></tr><tr id=Select$1 onclick=javascript:ShowNewAlertDetails('Select$1'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab1' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab1'/></td><td>fxp-ebtsdbprod1</td><td>25703</td><td>efet</td><td></td><td>New CMDB - Not in TW</td><td>P2</td><td>Prod</td><td>Matt Weston,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$1Primary_Hostname' class='hiddencol'>fxp-ebtsdbprod1</td><td id='Select$1Primary_IP_Address' class='hiddencol'>169.93.139.43</td><td id='Select$1FQDNs' class='hiddencol'>fxp-ebtsdbprod1.60ve.uk.jpmorganchase.com</td><td id='Select$1Hardware_Model' class='hiddencol'>SUN FIRE V440</td><td id='Select$1asset_type' class='hiddencol'>SERVER</td><td id='Select$1asset_state' class='hiddencol'>Prod</td><td id='Select$1asset_status' class='hiddencol'>In Use</td><td id='Select$1OSName' class='hiddencol'>Solaris 10</td><td id='Select$1Region' class='hiddencol'>EMEA</td><td id='Select$1Server_Owner' class='hiddencol'></td><td id='Select$1TW_App_Name' class='hiddencol'></td><td id='Select$1TW_Process' class='hiddencol'></td><td id='Select$1Last_Login' class='hiddencol'>2008-06-09 13:44:55.76</td><td id='Select$1Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$1Host_in_TW_YesNo' class='hiddencol'>never seen</td><td id='Select$1Notes' class='hiddencol'></td></tr><tr id=Select$2 onclick=javascript:ShowNewAlertDetails('Select$2'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab2' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab2'/></td><td>hkxp0508</td><td>14741</td><td></td><td></td><td>NewCMDB(Reappear) - Not in TW</td><td>P2</td><td>Prod</td><td>Fraser X Brown, John X Dempster, Edward X Strike,</td><td>04/06/2008 17:20:01</td><td></td><td></td><td></td><td></td><td></td><td id='Select$2Primary_Hostname' class='hiddencol'>hkxp0508</td><td id='Select$2Primary_IP_Address' class='hiddencol'>10.152.22.98</td><td id='Select$2FQDNs' class='hiddencol'>hkxp0508.ssh.hk.jpmorganchase.com</td><td id='Select$2Hardware_Model' class='hiddencol'>HP PROLIANT DL585 G1</td><td id='Select$2asset_type' class='hiddencol'>SERVER</td><td id='Select$2asset_state' class='hiddencol'>Prod</td><td id='Select$2asset_status' class='hiddencol'>In Use</td><td id='Select$2OSName' class='hiddencol'>Red Hat Enterprise Linux Advanced Server 3</td><td id='Select$2Region' class='hiddencol'>AP</td><td id='Select$2Server_Owner' class='hiddencol'></td><td id='Select$2TW_App_Name' class='hiddencol'></td><td id='Select$2TW_Process' class='hiddencol'></td><td id='Select$2Last_Login' class='hiddencol'>2008-06-06 20:15:01.44</td><td id='Select$2Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$2Host_in_TW_YesNo' class='hiddencol'>never seen</td><td id='Select$2Notes' class='hiddencol'>UPDATE: Jun  5 2008 </td></tr><tr id=Select$3 onclick=javascript:ShowNewAlertDetails('Select$3'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab3' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab3'/></td><td>p-lvem-t1-har1</td><td>25703</td><td>efet</td><td></td><td>New CMDB - Not in TW</td><td>P2</td><td>Prod</td><td>Matt Weston,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$3Primary_Hostname' class='hiddencol'>p-lvem-t1-har1</td><td id='Select$3Primary_IP_Address' class='hiddencol'>169.29.32.28</td><td id='Select$3FQDNs' class='hiddencol'>p-lvem-t1-har1.dmz.emea.jpmchase.net</td><td id='Select$3Hardware_Model' class='hiddencol'>SUN FIRE V240</td><td id='Select$3asset_type' class='hiddencol'>SERVER</td><td id='Select$3asset_state' class='hiddencol'>Prod</td><td id='Select$3asset_status' class='hiddencol'>In Use</td><td id='Select$3OSName' class='hiddencol'>Solaris 10</td><td id='Select$3Region' class='hiddencol'>EMEA</td><td id='Select$3Server_Owner' class='hiddencol'></td><td id='Select$3TW_App_Name' class='hiddencol'></td><td id='Select$3TW_Process' class='hiddencol'></td><td id='Select$3Last_Login' class='hiddencol'>2008-06-09 21:26:25.04</td><td id='Select$3Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$3Host_in_TW_YesNo' class='hiddencol'>never seen</td><td id='Select$3Notes' class='hiddencol'></td></tr><tr id=Select$4 onclick=javascript:ShowNewAlertDetails('Select$4'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab4' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab4'/></td><td>p-lvem-t1-har2</td><td>25703</td><td>efet</td><td></td><td>New CMDB - Not in TW</td><td>P2</td><td>Prod</td><td>Matt Weston,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$4Primary_Hostname' class='hiddencol'>p-lvem-t1-har2</td><td id='Select$4Primary_IP_Address' class='hiddencol'>169.29.32.29</td><td id='Select$4FQDNs' class='hiddencol'>p-lvem-t1-har2.dmz.emea.jpmchase.net</td><td id='Select$4Hardware_Model' class='hiddencol'>SUN FIRE V240</td><td id='Select$4asset_type' class='hiddencol'>SERVER</td><td id='Select$4asset_state' class='hiddencol'>Prod</td><td id='Select$4asset_status' class='hiddencol'>In Use</td><td id='Select$4OSName' class='hiddencol'>Solaris 10</td><td id='Select$4Region' class='hiddencol'>EMEA</td><td id='Select$4Server_Owner' class='hiddencol'></td><td id='Select$4TW_App_Name' class='hiddencol'></td><td id='Select$4TW_Process' class='hiddencol'></td><td id='Select$4Last_Login' class='hiddencol'>2008-06-10 03:47:03.27</td><td id='Select$4Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$4Host_in_TW_YesNo' class='hiddencol'>never seen</td><td id='Select$4Notes' class='hiddencol'></td></tr><tr id=Select$5 onclick=javascript:ShowNewAlertDetails('Select$5'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab5' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab5'/></td><td>p-lvem-t2-ebts1</td><td>25703</td><td>efet</td><td></td><td>New CMDB - Not in TW</td><td>P2</td><td>Prod</td><td>Matt Weston,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$5Primary_Hostname' class='hiddencol'>p-lvem-t2-ebts1</td><td id='Select$5Primary_IP_Address' class='hiddencol'>169.93.130.42</td><td id='Select$5FQDNs' class='hiddencol'>p-lvem-t2-ebts1.60ve.uk.jpmorganchase.com</td><td id='Select$5Hardware_Model' class='hiddencol'>Unknown</td><td id='Select$5asset_type' class='hiddencol'>SERVER</td><td id='Select$5asset_state' class='hiddencol'>Prod</td><td id='Select$5asset_status' class='hiddencol'>In Use</td><td id='Select$5OSName' class='hiddencol'>Red Hat Enterprise Linux Advanced Server 3</td><td id='Select$5Region' class='hiddencol'>EMEA</td><td id='Select$5Server_Owner' class='hiddencol'></td><td id='Select$5TW_App_Name' class='hiddencol'></td><td id='Select$5TW_Process' class='hiddencol'></td><td id='Select$5Last_Login' class='hiddencol'>2008-06-09 19:22:43.11</td><td id='Select$5Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$5Host_in_TW_YesNo' class='hiddencol'>never seen</td><td id='Select$5Notes' class='hiddencol'></td></tr><tr id=Select$6 onclick=javascript:ShowNewAlertDetails('Select$6'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab6' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab6'/></td><td>p-nhbr-t2-ebts1</td><td>25703</td><td>efet</td><td></td><td>New CMDB - Not in TW</td><td>P2</td><td>Prod</td><td>Matt Weston,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$6Primary_Hostname' class='hiddencol'>p-nhbr-t2-ebts1</td><td id='Select$6Primary_IP_Address' class='hiddencol'>169.94.217.35</td><td id='Select$6FQDNs' class='hiddencol'>p-nhbr-t2-ebts1.nh.uk.jpmorganchase.com</td><td id='Select$6Hardware_Model' class='hiddencol'>Unknown</td><td id='Select$6asset_type' class='hiddencol'>SERVER</td><td id='Select$6asset_state' class='hiddencol'>Prod</td><td id='Select$6asset_status' class='hiddencol'>Decom Requested</td><td id='Select$6OSName' class='hiddencol'>Red Hat Enterprise Linux Advanced Server 3</td><td id='Select$6Region' class='hiddencol'>EMEA</td><td id='Select$6Server_Owner' class='hiddencol'></td><td id='Select$6TW_App_Name' class='hiddencol'></td><td id='Select$6TW_Process' class='hiddencol'></td><td id='Select$6Last_Login' class='hiddencol'>2008-06-09 21:17:47.94</td><td id='Select$6Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$6Host_in_TW_YesNo' class='hiddencol'>never seen</td><td id='Select$6Notes' class='hiddencol'></td></tr><tr id=Select$7 onclick=javascript:ShowNewAlertDetails('Select$7'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab7' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab7'/></td><td>upes1815</td><td>25703</td><td></td><td></td><td>New CMDB - Not in TW</td><td>P2</td><td>BCP</td><td>Matt Weston,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$7Primary_Hostname' class='hiddencol'>upes1815</td><td id='Select$7Primary_IP_Address' class='hiddencol'>169.94.192.65</td><td id='Select$7FQDNs' class='hiddencol'>upes1815.nh.uk.jpmorganchase.com</td><td id='Select$7Hardware_Model' class='hiddencol'>SUN FIRE V440</td><td id='Select$7asset_type' class='hiddencol'>SERVER</td><td id='Select$7asset_state' class='hiddencol'>Prod</td><td id='Select$7asset_status' class='hiddencol'>In Use</td><td id='Select$7OSName' class='hiddencol'>Solaris 10</td><td id='Select$7Region' class='hiddencol'>EMEA</td><td id='Select$7Server_Owner' class='hiddencol'></td><td id='Select$7TW_App_Name' class='hiddencol'></td><td id='Select$7TW_Process' class='hiddencol'></td><td id='Select$7Last_Login' class='hiddencol'>2008-06-09 14:04:53.32</td><td id='Select$7Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$7Host_in_TW_YesNo' class='hiddencol'>never seen</td><td id='Select$7Notes' class='hiddencol'></td></tr><tr id=Select$8 onclick=javascript:ShowNewAlertDetails('Select$8'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab8' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab8'/></td><td>upns43</td><td>25703</td><td></td><td></td><td>New CMDB - Not in TW</td><td>P2</td><td>Prod - BCP</td><td>Matt Weston,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$8Primary_Hostname' class='hiddencol'>upns43</td><td id='Select$8Primary_IP_Address' class='hiddencol'>198.75.10.43</td><td id='Select$8FQDNs' class='hiddencol'>upns43.nh.uk.jpmorganchase.com</td><td id='Select$8Hardware_Model' class='hiddencol'>SUN FIRE V210</td><td id='Select$8asset_type' class='hiddencol'>SERVER</td><td id='Select$8asset_state' class='hiddencol'>Prod</td><td id='Select$8asset_status' class='hiddencol'>Decom Requested</td><td id='Select$8OSName' class='hiddencol'>Solaris 10</td><td id='Select$8Region' class='hiddencol'>EMEA</td><td id='Select$8Server_Owner' class='hiddencol'></td><td id='Select$8TW_App_Name' class='hiddencol'></td><td id='Select$8TW_Process' class='hiddencol'></td><td id='Select$8Last_Login' class='hiddencol'>2008-06-07 16:40:24.84</td><td id='Select$8Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$8Host_in_TW_YesNo' class='hiddencol'>never seen</td><td id='Select$8Notes' class='hiddencol'></td></tr><tr id=Select$9 onclick=javascript:ShowNewAlertDetails('Select$9'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab9' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab9'/></td><td>upns44</td><td>25703</td><td></td><td></td><td>New CMDB - Not in TW</td><td>P2</td><td>Prod - BCP</td><td>Matt Weston,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$9Primary_Hostname' class='hiddencol'>upns44</td><td id='Select$9Primary_IP_Address' class='hiddencol'>198.75.10.44</td><td id='Select$9FQDNs' class='hiddencol'>upns44.nh.uk.jpmorganchase.com</td><td id='Select$9Hardware_Model' class='hiddencol'>SUN FIRE V210</td><td id='Select$9asset_type' class='hiddencol'>SERVER</td><td id='Select$9asset_state' class='hiddencol'>Prod</td><td id='Select$9asset_status' class='hiddencol'>Decom Requested</td><td id='Select$9OSName' class='hiddencol'>Solaris 10</td><td id='Select$9Region' class='hiddencol'>EMEA</td><td id='Select$9Server_Owner' class='hiddencol'></td><td id='Select$9TW_App_Name' class='hiddencol'></td><td id='Select$9TW_Process' class='hiddencol'></td><td id='Select$9Last_Login' class='hiddencol'>2008-06-10 01:59:27.53</td><td id='Select$9Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$9Host_in_TW_YesNo' class='hiddencol'>never seen</td><td id='Select$9Notes' class='hiddencol'></td></tr><tr id=Select$10 onclick=javascript:ShowNewAlertDetails('Select$10'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab10' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab10'/></td><td>cbb1a-027c</td><td>14741</td><td>PRM</td><td></td><td>NewTW(Reappear) - Not in CMDB</td><td>P1</td><td>Prod</td><td>Fraser X Brown, John X Dempster, Edward X Strike,</td><td>04/06/2008 17:20:01</td><td></td><td></td><td></td><td></td><td></td><td id='Select$10Primary_Hostname' class='hiddencol'>cbb1a-027c</td><td id='Select$10Primary_IP_Address' class='hiddencol'>169.69.8.186</td><td id='Select$10FQDNs' class='hiddencol'></td><td id='Select$10Hardware_Model' class='hiddencol'>IBM X3550</td><td id='Select$10asset_type' class='hiddencol'>SERVER</td><td id='Select$10asset_state' class='hiddencol'>Prod</td><td id='Select$10asset_status' class='hiddencol'>In Use</td><td id='Select$10OSName' class='hiddencol'>Red Hat Enterprise Linux Advanced Server 3</td><td id='Select$10Region' class='hiddencol'>NA</td><td id='Select$10Server_Owner' class='hiddencol'></td><td id='Select$10TW_App_Name' class='hiddencol'>PRM</td><td id='Select$10TW_Process' class='hiddencol'></td><td id='Select$10Last_Login' class='hiddencol'>2008-06-08 14:09:39.17</td><td id='Select$10Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$10Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$10Notes' class='hiddencol'></td></tr><tr id=Select$11 onclick=javascript:ShowNewAlertDetails('Select$11'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab11' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab11'/></td><td>chp-vcs18a</td><td>11560</td><td>PTP</td><td></td><td>NewTW(Reappear) - Not in CMDB</td><td>P1</td><td>Prod</td><td>Fraser X Brown, Stuart X Ward,</td><td>04/06/2008 17:20:01</td><td></td><td></td><td></td><td></td><td></td><td id='Select$11Primary_Hostname' class='hiddencol'>chp-vcs18a</td><td id='Select$11Primary_IP_Address' class='hiddencol'>169.123.208.202</td><td id='Select$11FQDNs' class='hiddencol'></td><td id='Select$11Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$11asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$11asset_state' class='hiddencol'>Prod</td><td id='Select$11asset_status' class='hiddencol'>In Use</td><td id='Select$11OSName' class='hiddencol'>Solaris 8</td><td id='Select$11Region' class='hiddencol'>EMEA</td><td id='Select$11Server_Owner' class='hiddencol'>Richard F. Leechow/JPMCHASE</td><td id='Select$11TW_App_Name' class='hiddencol'>PTP</td><td id='Select$11TW_Process' class='hiddencol'></td><td id='Select$11Last_Login' class='hiddencol'>2008-06-09 20:09:34.38</td><td id='Select$11Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$11Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$11Notes' class='hiddencol'></td></tr><tr id=Select$12 onclick=javascript:ShowNewAlertDetails('Select$12'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab12' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab12'/></td><td>cmccbbeg4n11prd</td><td>8780</td><td></td><td></td><td>Delete TW - In CMDB</td><td>P2</td><td>Prod</td><td>David X Wicks, Yin Keon Ong,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$12Primary_Hostname' class='hiddencol'>cmccbbeg4n11prd</td><td id='Select$12Primary_IP_Address' class='hiddencol'>10.3.19.24</td><td id='Select$12FQDNs' class='hiddencol'></td><td id='Select$12Hardware_Model' class='hiddencol'>EGENERA PBLADE</td><td id='Select$12asset_type' class='hiddencol'>SERVER BLADE</td><td id='Select$12asset_state' class='hiddencol'>Prod</td><td id='Select$12asset_status' class='hiddencol'>In Use</td><td id='Select$12OSName' class='hiddencol'>Red Hat Enterprise Linux Advanced Server 3</td><td id='Select$12Region' class='hiddencol'>NA</td><td id='Select$12Server_Owner' class='hiddencol'>Cory X Shull/JPMCHASE</td><td id='Select$12TW_App_Name' class='hiddencol'>Kapital</td><td id='Select$12TW_Process' class='hiddencol'></td><td id='Select$12Last_Login' class='hiddencol'>2008-05-31 21:02:11.56</td><td id='Select$12Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$12Host_in_TW_YesNo' class='hiddencol'>deleted</td><td id='Select$12Notes' class='hiddencol'></td></tr><tr id=Select$13 onclick=javascript:ShowNewAlertDetails('Select$13'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab13' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab13'/></td><td>COM4W159N1</td><td>21508</td><td></td><td></td><td>Delete TW - In CMDB</td><td>P2</td><td>Prod</td><td>Andrea Cuadra/IL/ONE, Michael Gick/C/IL/ONE, Gerald Galbreath/IL/ONE,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$13Primary_Hostname' class='hiddencol'>COM4W159N1</td><td id='Select$13Primary_IP_Address' class='hiddencol'>155.180.226.142</td><td id='Select$13FQDNs' class='hiddencol'></td><td id='Select$13Hardware_Model' class='hiddencol'>HP PROLIANT DL380 G4</td><td id='Select$13asset_type' class='hiddencol'>SERVER</td><td id='Select$13asset_state' class='hiddencol'>Prod</td><td id='Select$13asset_status' class='hiddencol'>In Use</td><td id='Select$13OSName' class='hiddencol'>Windows 2000 Advanced Server</td><td id='Select$13Region' class='hiddencol'>NA</td><td id='Select$13Server_Owner' class='hiddencol'></td><td id='Select$13TW_App_Name' class='hiddencol'>LoanIQAgency</td><td id='Select$13TW_Process' class='hiddencol'></td><td id='Select$13Last_Login' class='hiddencol'>2008-06-08 13:03:37.85</td><td id='Select$13Last_Login_Method' class='hiddencol'>wmi</td><td id='Select$13Host_in_TW_YesNo' class='hiddencol'>deleted</td><td id='Select$13Notes' class='hiddencol'></td></tr><tr id=Select$14 onclick=javascript:ShowNewAlertDetails('Select$14'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab14' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab14'/></td><td>ehp-tdb05</td><td>11560</td><td>PTP</td><td></td><td>New TW - Not in CMDB </td><td>P1</td><td>Prod</td><td>Fraser X Brown, Stuart X Ward,</td><td>04/06/2008 17:19:59</td><td></td><td></td><td></td><td></td><td></td><td id='Select$14Primary_Hostname' class='hiddencol'>ehp-tdb05</td><td id='Select$14Primary_IP_Address' class='hiddencol'>169.93.196.150</td><td id='Select$14FQDNs' class='hiddencol'></td><td id='Select$14Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$14asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$14asset_state' class='hiddencol'>Prod</td><td id='Select$14asset_status' class='hiddencol'>In Use</td><td id='Select$14OSName' class='hiddencol'>Solaris 10</td><td id='Select$14Region' class='hiddencol'>EMEA</td><td id='Select$14Server_Owner' class='hiddencol'></td><td id='Select$14TW_App_Name' class='hiddencol'>PTP</td><td id='Select$14TW_Process' class='hiddencol'></td><td id='Select$14Last_Login' class='hiddencol'>2008-06-10 09:56:26.77</td><td id='Select$14Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$14Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$14Notes' class='hiddencol'></td></tr><tr id=Select$15 onclick=javascript:ShowNewAlertDetails('Select$15'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab15' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab15'/></td><td>ehp-tdb05</td><td>14741</td><td>PRM</td><td></td><td>New TW - Not in CMDB </td><td>P1</td><td>Prod</td><td>Fraser X Brown, John X Dempster, Edward X Strike,</td><td>04/06/2008 17:19:59</td><td></td><td></td><td></td><td></td><td></td><td id='Select$15Primary_Hostname' class='hiddencol'>ehp-tdb05</td><td id='Select$15Primary_IP_Address' class='hiddencol'>169.93.196.150</td><td id='Select$15FQDNs' class='hiddencol'></td><td id='Select$15Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$15asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$15asset_state' class='hiddencol'>Prod</td><td id='Select$15asset_status' class='hiddencol'>In Use</td><td id='Select$15OSName' class='hiddencol'>Solaris 10</td><td id='Select$15Region' class='hiddencol'>EMEA</td><td id='Select$15Server_Owner' class='hiddencol'></td><td id='Select$15TW_App_Name' class='hiddencol'>PRM</td><td id='Select$15TW_Process' class='hiddencol'></td><td id='Select$15Last_Login' class='hiddencol'>2008-06-10 09:56:26.77</td><td id='Select$15Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$15Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$15Notes' class='hiddencol'></td></tr><tr id=Select$16 onclick=javascript:ShowNewAlertDetails('Select$16'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab16' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab16'/></td><td>ehp-tdb05</td><td>18185</td><td>PAYG</td><td></td><td>New TW - Not in CMDB </td><td>P1</td><td>Prod</td><td>Ramesh R Mullangi, </td><td>04/06/2008 17:19:59</td><td></td><td></td><td></td><td></td><td></td><td id='Select$16Primary_Hostname' class='hiddencol'>ehp-tdb05</td><td id='Select$16Primary_IP_Address' class='hiddencol'>169.93.196.150</td><td id='Select$16FQDNs' class='hiddencol'></td><td id='Select$16Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$16asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$16asset_state' class='hiddencol'>Prod</td><td id='Select$16asset_status' class='hiddencol'>In Use</td><td id='Select$16OSName' class='hiddencol'>Solaris 10</td><td id='Select$16Region' class='hiddencol'>EMEA</td><td id='Select$16Server_Owner' class='hiddencol'></td><td id='Select$16TW_App_Name' class='hiddencol'>PAYG</td><td id='Select$16TW_Process' class='hiddencol'></td><td id='Select$16Last_Login' class='hiddencol'>2008-06-10 09:56:26.77</td><td id='Select$16Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$16Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$16Notes' class='hiddencol'></td></tr><tr id=Select$17 onclick=javascript:ShowNewAlertDetails('Select$17'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab17' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab17'/></td><td>ehp-tdb05</td><td>19387</td><td>Kaizen</td><td></td><td>New TW - Not in CMDB </td><td>P1</td><td>Prod</td><td>Ramesh R Mullangi, </td><td>04/06/2008 17:19:59</td><td></td><td></td><td></td><td></td><td></td><td id='Select$17Primary_Hostname' class='hiddencol'>ehp-tdb05</td><td id='Select$17Primary_IP_Address' class='hiddencol'>169.93.196.150</td><td id='Select$17FQDNs' class='hiddencol'></td><td id='Select$17Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$17asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$17asset_state' class='hiddencol'>Prod</td><td id='Select$17asset_status' class='hiddencol'>In Use</td><td id='Select$17OSName' class='hiddencol'>Solaris 10</td><td id='Select$17Region' class='hiddencol'>EMEA</td><td id='Select$17Server_Owner' class='hiddencol'></td><td id='Select$17TW_App_Name' class='hiddencol'>Kaizen</td><td id='Select$17TW_Process' class='hiddencol'></td><td id='Select$17Last_Login' class='hiddencol'>2008-06-10 09:56:26.77</td><td id='Select$17Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$17Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$17Notes' class='hiddencol'></td></tr><tr id=Select$18 onclick=javascript:ShowNewAlertDetails('Select$18'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab18' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab18'/></td><td>eqd-sybdev21</td><td>12970</td><td></td><td></td><td>Delete TW - In CMDB</td><td>P2</td><td>BCP - Dev</td><td>Jill A Smith, </td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$18Primary_Hostname' class='hiddencol'>eqd-sybdev21</td><td id='Select$18Primary_IP_Address' class='hiddencol'>169.93.12.93</td><td id='Select$18FQDNs' class='hiddencol'></td><td id='Select$18Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$18asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$18asset_state' class='hiddencol'>In Progress</td><td id='Select$18asset_status' class='hiddencol'>Installed</td><td id='Select$18OSName' class='hiddencol'>Solaris 10</td><td id='Select$18Region' class='hiddencol'>EMEA</td><td id='Select$18Server_Owner' class='hiddencol'></td><td id='Select$18TW_App_Name' class='hiddencol'>SBLApplicationSuite</td><td id='Select$18TW_Process' class='hiddencol'></td><td id='Select$18Last_Login' class='hiddencol'>2008-06-09 16:26:33.77</td><td id='Select$18Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$18Host_in_TW_YesNo' class='hiddencol'>deleted</td><td id='Select$18Notes' class='hiddencol'></td></tr><tr id=Select$19 onclick=javascript:ShowNewAlertDetails('Select$19'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab19' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab19'/></td><td>eqd-sybdev22</td><td>14741</td><td>PRM</td><td></td><td>New TW - Not in CMDB </td><td>P1</td><td>BCP - Dev</td><td>Fraser X Brown, John X Dempster, Edward X Strike,</td><td>04/06/2008 17:19:59</td><td></td><td></td><td></td><td></td><td></td><td id='Select$19Primary_Hostname' class='hiddencol'>eqd-sybdev22</td><td id='Select$19Primary_IP_Address' class='hiddencol'>169.93.12.115</td><td id='Select$19FQDNs' class='hiddencol'></td><td id='Select$19Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$19asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$19asset_state' class='hiddencol'>In Progress</td><td id='Select$19asset_status' class='hiddencol'>Installed</td><td id='Select$19OSName' class='hiddencol'>Solaris 10</td><td id='Select$19Region' class='hiddencol'>EMEA</td><td id='Select$19Server_Owner' class='hiddencol'></td><td id='Select$19TW_App_Name' class='hiddencol'>PRM</td><td id='Select$19TW_Process' class='hiddencol'></td><td id='Select$19Last_Login' class='hiddencol'>2008-06-10 10:29:19.40</td><td id='Select$19Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$19Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$19Notes' class='hiddencol'></td></tr><tr id=Select$20 onclick=javascript:ShowNewAlertDetails('Select$20'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab20' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab20'/></td><td>eqd-sybdev22</td><td>7430</td><td>GTW</td><td></td><td>New TW - Not in CMDB </td><td>P1</td><td>BCP - Dev</td><td>Gordon X Neill, Vezhavendan X Annamalai,</td><td>04/06/2008 17:19:59</td><td></td><td></td><td></td><td></td><td></td><td id='Select$20Primary_Hostname' class='hiddencol'>eqd-sybdev22</td><td id='Select$20Primary_IP_Address' class='hiddencol'>169.93.12.115</td><td id='Select$20FQDNs' class='hiddencol'></td><td id='Select$20Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$20asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$20asset_state' class='hiddencol'>In Progress</td><td id='Select$20asset_status' class='hiddencol'>Installed</td><td id='Select$20OSName' class='hiddencol'>Solaris 10</td><td id='Select$20Region' class='hiddencol'>EMEA</td><td id='Select$20Server_Owner' class='hiddencol'></td><td id='Select$20TW_App_Name' class='hiddencol'>GTW</td><td id='Select$20TW_Process' class='hiddencol'></td><td id='Select$20Last_Login' class='hiddencol'>2008-06-10 10:29:19.40</td><td id='Select$20Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$20Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$20Notes' class='hiddencol'></td></tr><tr id=Select$21 onclick=javascript:ShowNewAlertDetails('Select$21'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab21' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab21'/></td><td>eqd-sybdev26</td><td>12240</td><td>Scala</td><td></td><td>New TW - Not in CMDB </td><td>P1</td><td>BCP - Dev</td><td>Jill A Smith, </td><td>04/06/2008 17:19:59</td><td></td><td></td><td></td><td></td><td></td><td id='Select$21Primary_Hostname' class='hiddencol'>eqd-sybdev26</td><td id='Select$21Primary_IP_Address' class='hiddencol'>169.93.12.121</td><td id='Select$21FQDNs' class='hiddencol'></td><td id='Select$21Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$21asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$21asset_state' class='hiddencol'>In Progress</td><td id='Select$21asset_status' class='hiddencol'>Installed</td><td id='Select$21OSName' class='hiddencol'>Solaris 10</td><td id='Select$21Region' class='hiddencol'>EMEA</td><td id='Select$21Server_Owner' class='hiddencol'></td><td id='Select$21TW_App_Name' class='hiddencol'>Scala</td><td id='Select$21TW_Process' class='hiddencol'></td><td id='Select$21Last_Login' class='hiddencol'>2008-06-07 12:14:25.96</td><td id='Select$21Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$21Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$21Notes' class='hiddencol'></td></tr><tr id=Select$22 onclick=javascript:ShowNewAlertDetails('Select$22'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab22' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab22'/></td><td>eqd-sybdev26</td><td>12840</td><td>Sphinx</td><td></td><td>New TW - Not in CMDB </td><td>P1</td><td>BCP - Dev</td><td>Jill A Smith, </td><td>04/06/2008 17:19:59</td><td></td><td></td><td></td><td></td><td></td><td id='Select$22Primary_Hostname' class='hiddencol'>eqd-sybdev26</td><td id='Select$22Primary_IP_Address' class='hiddencol'>169.93.12.121</td><td id='Select$22FQDNs' class='hiddencol'></td><td id='Select$22Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$22asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$22asset_state' class='hiddencol'>In Progress</td><td id='Select$22asset_status' class='hiddencol'>Installed</td><td id='Select$22OSName' class='hiddencol'>Solaris 10</td><td id='Select$22Region' class='hiddencol'>EMEA</td><td id='Select$22Server_Owner' class='hiddencol'></td><td id='Select$22TW_App_Name' class='hiddencol'>Sphinx</td><td id='Select$22TW_Process' class='hiddencol'></td><td id='Select$22Last_Login' class='hiddencol'>2008-06-07 12:14:25.96</td><td id='Select$22Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$22Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$22Notes' class='hiddencol'></td></tr><tr id=Select$23 onclick=javascript:ShowNewAlertDetails('Select$23'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab23' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab23'/></td><td>eqd-sybdev26</td><td>14741</td><td>PRM</td><td></td><td>New TW - Not in CMDB </td><td>P1</td><td>BCP - Dev</td><td>Fraser X Brown, John X Dempster, Edward X Strike,</td><td>04/06/2008 17:19:59</td><td></td><td></td><td></td><td></td><td></td><td id='Select$23Primary_Hostname' class='hiddencol'>eqd-sybdev26</td><td id='Select$23Primary_IP_Address' class='hiddencol'>169.93.12.121</td><td id='Select$23FQDNs' class='hiddencol'></td><td id='Select$23Hardware_Model' class='hiddencol'>SUN FIRE E25K</td><td id='Select$23asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$23asset_state' class='hiddencol'>In Progress</td><td id='Select$23asset_status' class='hiddencol'>Installed</td><td id='Select$23OSName' class='hiddencol'>Solaris 10</td><td id='Select$23Region' class='hiddencol'>EMEA</td><td id='Select$23Server_Owner' class='hiddencol'></td><td id='Select$23TW_App_Name' class='hiddencol'>PRM</td><td id='Select$23TW_Process' class='hiddencol'></td><td id='Select$23Last_Login' class='hiddencol'>2008-06-07 12:14:25.96</td><td id='Select$23Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$23Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$23Notes' class='hiddencol'></td></tr><tr id=Select$24 onclick=javascript:ShowNewAlertDetails('Select$24'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab24' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab24'/></td><td>eqny-cshcmp2</td><td>7430</td><td>GTW</td><td></td><td>Delete TW - In CMDB</td><td>P2</td><td>Prod</td><td>Gordon X Neill, Vezhavendan X Annamalai,</td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$24Primary_Hostname' class='hiddencol'>eqny-cshcmp2.ny.jpmorgan.com</td><td id='Select$24Primary_IP_Address' class='hiddencol'>10.3.230.122</td><td id='Select$24FQDNs' class='hiddencol'></td><td id='Select$24Hardware_Model' class='hiddencol'>SUN FIRE 6800</td><td id='Select$24asset_type' class='hiddencol'>SERVER MULTI-DOMAIN</td><td id='Select$24asset_state' class='hiddencol'>Prod</td><td id='Select$24asset_status' class='hiddencol'>In Use</td><td id='Select$24OSName' class='hiddencol'>Solaris 8</td><td id='Select$24Region' class='hiddencol'>NA</td><td id='Select$24Server_Owner' class='hiddencol'>Laurence D Pinkus/JPMCHASE</td><td id='Select$24TW_App_Name' class='hiddencol'>GTW</td><td id='Select$24TW_Process' class='hiddencol'></td><td id='Select$24Last_Login' class='hiddencol'>2008-06-08 23:49:06.42</td><td id='Select$24Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$24Host_in_TW_YesNo' class='hiddencol'>deleted</td><td id='Select$24Notes' class='hiddencol'></td></tr><tr id=Select$25 onclick=javascript:ShowNewAlertDetails('Select$25'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab25' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab25'/></td><td>isyndappdr1</td><td>24088</td><td></td><td></td><td>Delete TW - In CMDB</td><td>P2</td><td>BCP</td><td>Krishna X Rajesh, </td><td>04/06/2008 17:20:00</td><td></td><td></td><td></td><td></td><td></td><td id='Select$25Primary_Hostname' class='hiddencol'>isyndappdr1</td><td id='Select$25Primary_IP_Address' class='hiddencol'>169.69.44.20</td><td id='Select$25FQDNs' class='hiddencol'></td><td id='Select$25Hardware_Model' class='hiddencol'>SUN FIRE 480R</td><td id='Select$25asset_type' class='hiddencol'>SERVER</td><td id='Select$25asset_state' class='hiddencol'>Prod</td><td id='Select$25asset_status' class='hiddencol'>In Use</td><td id='Select$25OSName' class='hiddencol'>Solaris 10</td><td id='Select$25Region' class='hiddencol'>NA</td><td id='Select$25Server_Owner' class='hiddencol'></td><td id='Select$25TW_App_Name' class='hiddencol'>iSynd</td><td id='Select$25TW_Process' class='hiddencol'></td><td id='Select$25Last_Login' class='hiddencol'>2008-06-08 01:47:56.97</td><td id='Select$25Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$25Host_in_TW_YesNo' class='hiddencol'>deleted</td><td id='Select$25Notes' class='hiddencol'></td></tr><tr id=Select$26 onclick=javascript:ShowNewAlertDetails('Select$26'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab26' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab26'/></td><td>SJPNPYRTCS002</td><td>14741</td><td>PRM</td><td></td><td>NewTW(Reappear) - Not in CMDB</td><td>P1</td><td>Prod</td><td>Fraser X Brown, John X Dempster, Edward X Strike,</td><td>04/06/2008 17:20:01</td><td></td><td></td><td></td><td></td><td></td><td id='Select$26Primary_Hostname' class='hiddencol'>SJPNPYRTCS002</td><td id='Select$26Primary_IP_Address' class='hiddencol'>169.76.18.225</td><td id='Select$26FQDNs' class='hiddencol'></td><td id='Select$26Hardware_Model' class='hiddencol'>IBM XSERIES 365</td><td id='Select$26asset_type' class='hiddencol'>SERVER</td><td id='Select$26asset_state' class='hiddencol'>Prod</td><td id='Select$26asset_status' class='hiddencol'>In Use</td><td id='Select$26OSName' class='hiddencol'>Windows 2000 Advanced Server</td><td id='Select$26Region' class='hiddencol'>AP</td><td id='Select$26Server_Owner' class='hiddencol'>Paul Syi</td><td id='Select$26TW_App_Name' class='hiddencol'>PRM</td><td id='Select$26TW_Process' class='hiddencol'></td><td id='Select$26Last_Login' class='hiddencol'>2008-06-06 23:47:06.76</td><td id='Select$26Last_Login_Method' class='hiddencol'>wmi</td><td id='Select$26Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$26Notes' class='hiddencol'></td></tr><tr id=Select$27 onclick=javascript:ShowNewAlertDetails('Select$27'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab27' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab27'/></td><td>tff1asfm2</td><td>1650</td><td>BrokerTec</td><td></td><td>NewTW(Reappear) - Not in CMDB</td><td>P1</td><td>Prod</td><td>Michael Allen Lee,</td><td>04/06/2008 17:20:01</td><td></td><td></td><td></td><td></td><td></td><td id='Select$27Primary_Hostname' class='hiddencol'>tff1asfm2</td><td id='Select$27Primary_IP_Address' class='hiddencol'>10.36.9.143</td><td id='Select$27FQDNs' class='hiddencol'></td><td id='Select$27Hardware_Model' class='hiddencol'>FUJITSU SIEMENS PRIMEPOWER 650</td><td id='Select$27asset_type' class='hiddencol'>SERVER</td><td id='Select$27asset_state' class='hiddencol'>Prod</td><td id='Select$27asset_status' class='hiddencol'>In Use</td><td id='Select$27OSName' class='hiddencol'>Solaris 8</td><td id='Select$27Region' class='hiddencol'>NA</td><td id='Select$27Server_Owner' class='hiddencol'></td><td id='Select$27TW_App_Name' class='hiddencol'>Duplicate Name in TW</td><td id='Select$27TW_Process' class='hiddencol'></td><td id='Select$27Last_Login' class='hiddencol'>2008-06-08 21:12:58.85</td><td id='Select$27Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$27Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$27Notes' class='hiddencol'></td></tr><tr id=Select$28 onclick=javascript:ShowNewAlertDetails('Select$28'); onmouseover=this.style.cursor='hand'><td><input type='checkbox' ID='chkTab28' onclick='javascript:return select_deselectAll(this.checked,this.id);' name='chkTab28'/></td><td>tff1asfm2</td><td>7090</td><td>Garban</td><td></td><td>NewTW(Reappear) - Not in CMDB</td><td>P1</td><td>Prod</td><td>Michael Allen Lee,</td><td>04/06/2008 17:20:01</td><td></td><td></td><td></td><td></td><td></td><td id='Select$28Primary_Hostname' class='hiddencol'>tff1asfm2</td><td id='Select$28Primary_IP_Address' class='hiddencol'>10.36.9.143</td><td id='Select$28FQDNs' class='hiddencol'></td><td id='Select$28Hardware_Model' class='hiddencol'>FUJITSU SIEMENS PRIMEPOWER 650</td><td id='Select$28asset_type' class='hiddencol'>SERVER</td><td id='Select$28asset_state' class='hiddencol'>Prod</td><td id='Select$28asset_status' class='hiddencol'>In Use</td><td id='Select$28OSName' class='hiddencol'>Solaris 8</td><td id='Select$28Region' class='hiddencol'>NA</td><td id='Select$28Server_Owner' class='hiddencol'></td><td id='Select$28TW_App_Name' class='hiddencol'>Garban</td><td id='Select$28TW_Process' class='hiddencol'></td><td id='Select$28Last_Login' class='hiddencol'>2008-06-08 21:12:58.85</td><td id='Select$28Last_Login_Method' class='hiddencol'>ssh</td><td id='Select$28Host_in_TW_YesNo' class='hiddencol'>present</td><td id='Select$28Notes' class='hiddencol'></td></tr></tbody><tfoot><tr><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td><td>tfoot</td></tr><tr><td class='table-page:previous' style='cursor:pointer;'>&lt;&lt; Previous</td><td colspan='3' style='text-align:center;'>Page <span id='t1page'></span>&nbsp;of <span id='t1pages'></span></td><td class='table-page:next' style:'cursor:pointer;'>Next &gt; &gt;</td></tr><tr><td colspan='15'><span id='t1filtercount'></span>&nbsp;of </span id='t1allcount'></span>&nbsp;rows match filter(s)</td></tr></tfoot></table>

Open in new window

0
Comment
Question by:rss2
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
8 Comments
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 21766988
1. Next time please post as files or in the code snippet
2. You have two identcal questions open, Please delete one
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 21766995
I am getting unknown runtime error on this line
tdata.container_all_count.innerHTML = totalrows;
0
 
LVL 75

Accepted Solution

by:
Michel Plungjan earned 500 total points
ID: 21767034
Fixed it

Change
</span id='t1allcount'>
to

<span id='t1allcount'>
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:rss2
ID: 21767272
mplungjan, you ARE a genius!!!

How on earth did you you spot that?

Many thanks.. will close other question if you want, or just credit you twice as I'm a super happy camper now. :)
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 21768410
I wrapped the statement in a try/catch and the problem went away. So I decided to see what the matter was with the object with the ID of t1allcount and saw it was defined as </span id="t1allcount"></span>  

Yes, please close the other question.

Feel free to visit my profile...
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 21777026
No stepping. I wanted to do the same (actually move to a file) but was not sure if I could
0

Featured Post

Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article will give core knowledge of JavaScript and will head in to your first JavaScript program. I am Durvesh Naik and I am here to deal with this series of JavaScript. I will teach you JavaScript in part wise , as its quite boring to read big…
This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question