/*===================================================================
 Author: Matt Kruse
 
 View documentation, examples, and source code at:
     http://www.JavascriptToolbox.com/

 NOTICE: You may use this code for any purpose, commercial or
 private, without any further permission from the author. You may
 remove this notice from your final code if you wish, however it is
 appreciated by the author if at least the web site address is kept.

 This code may NOT be distributed for download from script sites, 
 open source CDs or sites, or any other distribution method. If you
 wish you share this code with others, please direct them to the 
 web site above.
 
 Pleae do not link directly to the .js files on the server above. Copy
 the files to your own server for use with your site or webapp.
 ===================================================================*/
var Util ={'$VERSION':1.06};
function isArray(o){return(o!=null && typeof(o)=="object" && typeof(o.length)=="number" &&(o.length==0 || defined(o[0])));};
function isObject(o){return(o!=null && typeof(o)=="object" && defined(o.constructor) && o.constructor==Object && !defined(o.nodeName));};
function defined(o){return(typeof(o)!="undefined");};
function map(func){var i,j,o;var results = [];if(typeof(func)=="string"){func = new Function('$_',func);}for(i=1;i<arguments.length;i++){o = arguments[i];if(isArray(o)){for(j=0;j<o.length;j++){results[results.length] = func(o[j]);}}else if(isObject(o)){for(j in o){results[results.length] = func(o[j]);}}else{results[results.length] = func(o);}}return results;};
function setDefaultValues(o,values){if(!defined(o) || o==null){o ={};}if(!defined(values) || values==null){return o;}for(var val in values){if(!defined(o[val])){o[val] = values[val];}}return o;};
Array.prototype.contains = function(o){var i,l;if(!(l = this.length)){return false;}for(i=0;i<l;i++){if(o==this[i]){return true;}}}
var DOM =(function(){var dom ={};
dom.getParentByTagName = function(o,tagNames){if(o==null){return null;}if(isArray(tagNames)){tagNames = map("return $_.toUpperCase()",tagNames);while(o=o.parentNode){if(o.nodeName && tagNames.contains(o.nodeName)){return o;}}}else{tagNames = tagNames.toUpperCase();while(o=o.parentNode){if(o.nodeName && tagNames==o.nodeName){return o;}}}return null;};
dom.removeNode = function(o){if(o!=null && o.parentNode && o.parentNode.removeChild){for(var i in o){if(typeof(o[i])=="function"){o[i] = null;}}o.parentNode.removeChild(o);return true;}return false;};
dom.getOuterWidth = function(o){if(defined(o.offsetWidth)){return o.offsetWidth;}return null;};
dom.getOuterHeight = function(o){if(defined(o.offsetHeight)){return o.offsetHeight;}return null;};
dom.resolve = function(){var results = new Array();var i,j,o;for(var i=0;i<arguments.length;i++){var o = arguments[i];if(o==null){if(arguments.length==1){return null;}results[results.length] = null;}else if(typeof(o)=='string'){if(document.getElementById){o = document.getElementById(o);}else if(document.all){o = document.all[o];}if(arguments.length==1){return o;}results[results.length] = o;}else if(isArray(o)){for(j=0;j<o.length;j++){results[results.length] = o[j];}}else if(isObject(o)){for(j in o){results[results.length] = o[j];}}else if(arguments.length==1){return o;}else{results[results.length] = o;}}return results;};dom.$ = dom.resolve;return dom;})();
var CSS =(function(){var css ={};
css.rgb2hex = function(rgbString){if(typeof(rgbString)!="string" || !defined(rgbString.match)){return null;}var result = rgbString.match(/^\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*/);if(result==null){return rgbString;}var rgb = +result[1] << 16 | +result[2] << 8 | +result[3]
var hex = "";var digits = "0123456789abcdef";while(rgb!=0){hex = digits.charAt(rgb&0xf)+hex;rgb>>>=4;}while(hex.length<6){hex='0'+hex;}return "#" + hex;};
css.hyphen2camel = function(property){if(!defined(property) || property==null){return null;}if(property.indexOf("-")<0){return property;}var str = "";var c = null;var l = property.length;for(var i=0;i<l;i++){c = property.charAt(i);str +=(c!="-")?c:property.charAt(++i).toUpperCase();}return str;};
css.hasClass = function(obj,className){if(!defined(obj) || obj==null || !RegExp){return false;}var re = new RegExp("(^|\\s)" + className + "(\\s|$)");if(typeof(obj)=="string"){return re.test(obj);}else if(typeof(obj)=="object" && obj.className){return re.test(obj.className);}return false;};
css.addClass = function(obj,className){if(typeof(obj)!="object" || obj==null || !defined(obj.className)){return false;}if(obj.className==null || obj.className==''){obj.className = className;return true;}if(css.hasClass(obj,className)){return true;}obj.className = obj.className + " " + className;return true;};
css.removeClass = function(obj,className){if(typeof(obj)!="object" || obj==null || !defined(obj.className) || obj.className==null){return false;}if(!css.hasClass(obj,className)){return false;}var re = new RegExp("(^|\\s+)" + className + "(\\s+|$)");obj.className = obj.className.replace(re,' ');return true;};
css.replaceClass = function(obj,className,newClassName){if(typeof(obj)!="object" || obj==null || !defined(obj.className) || obj.className==null){return false;}css.removeClass(obj,className);css.addClass(obj,newClassName);return true;};
css.getStyle = function(o, property){if(o==null){return null;}var val = null;var camelProperty = css.hyphen2camel(property);if(property=="float"){val = css.getStyle(o,"cssFloat");if(val==null){val = css.getStyle(o,"styleFloat");}}else if(o.currentStyle && defined(o.currentStyle[camelProperty])){val = o.currentStyle[camelProperty];}else if(window.getComputedStyle){val = window.getComputedStyle(o,null).getPropertyValue(property);}else if(o.style && defined(o.style[camelProperty])){val = o.style[camelProperty];}if(/^\s*rgb\s*\(/.test(val)){val = css.rgb2hex(val);}if(/^#/.test(val)){val = val.toLowerCase();}return val;};css.get = css.getStyle;
css.setStyle = function(o, property, value){if(o==null || !defined(o.style) || !defined(property) || property==null || !defined(value)){return false;}if(property=="float"){o.style["cssFloat"] = value;o.style["styleFloat"] = value;}else if(property=="opacity"){o.style['-moz-opacity'] = value;o.style['-khtml-opacity'] = value;o.style.opacity = value;if(defined(o.style.filter)){o.style.filter = "alpha(opacity=" + value*100 + ")";}}else{o.style[css.hyphen2camel(property)] = value;}return true;};css.set = css.setStyle;
css.uniqueIdNumber=1000;css.createId = function(o){if(defined(o) && o!=null && defined(o.id) && o.id!=null && o.id!=""){return o.id;}var id = null;while(id==null || document.getElementById(id)!=null){id = "ID_"+(css.uniqueIdNumber++);}if(defined(o) && o!=null &&(!defined(o.id)||o.id=="")){o.id = id;}return id;};return css;})();
var Event =(function(){var ev ={};
ev.resolve = function(e){if(!defined(e) && defined(window.event)){e = window.event;}return e;};
ev.add = function( obj, type, fn, capture){if(obj.addEventListener){obj.addEventListener( type, fn, capture);return true;}else if(obj.attachEvent){obj.attachEvent( "on"+type, fn);return true;}return false;};
ev.getMouseX = function(e){e = ev.resolve(e);if(defined(e.pageX)){return e.pageX;}if(defined(e.clientX)){return e.clientX+Screen.getScrollLeft();}return null;};
ev.getMouseY = function(e){e = ev.resolve(e);if(defined(e.pageY)){return e.pageY;}if(defined(e.clientY)){return e.clientY+Screen.getScrollTop();}return null;};
ev.cancelBubble = function(e){e = ev.resolve(e);if(typeof(e.stopPropagation)=="function"){e.stopPropagation();}if(defined(e.cancelBubble)){e.cancelBubble = true;}};ev.stopPropagation = ev.cancelBubble;
ev.preventDefault = function(e){e = ev.resolve(e);if(typeof(e.preventDefault)=="function"){e.preventDefault();}if(defined(e.returnValue)){e.returnValue = false;}};return ev;})();
var Screen =(function(){var screen ={};
screen.getBody = function(){if(document.body){return document.body;}if(document.getElementsByTagName){var bodies = document.getElementsByTagName("BODY");if(bodies!=null && bodies.length>0){return bodies[0];}}return null;};
screen.getScrollTop = function(){if(document.documentElement && defined(document.documentElement.scrollTop) && document.documentElement.scrollTop>0){return document.documentElement.scrollTop;}if(document.body && defined(document.body.scrollTop)){return document.body.scrollTop;}return null;};
screen.getScrollLeft = function(){if(document.documentElement && defined(document.documentElement.scrollLeft) && document.documentElement.scrollLeft>0){return document.documentElement.scrollLeft;}if(document.body && defined(document.body.scrollLeft)){return document.body.scrollLeft;}return null;};
screen.zero = function(n){return(!defined(n) || isNaN(n))?0:n;};
screen.getDocumentWidth = function(){var width = 0;var body = screen.getBody();if(document.documentElement &&(!document.compatMode || document.compatMode=="CSS1Compat")){var rightMargin = parseInt(CSS.get(body,'marginRight'),10) || 0;var leftMargin = parseInt(CSS.get(body,'marginLeft'), 10) || 0;width = Math.max(body.offsetWidth + leftMargin + rightMargin, document.documentElement.clientWidth);}else{width =  Math.max(body.clientWidth, body.scrollWidth);}if(isNaN(width) || width==0){width = screen.zero(self.innerWidth);}return width;};
screen.getDocumentHeight = function(){var body = screen.getBody();var innerHeight =(defined(self.innerHeight)&&!isNaN(self.innerHeight))?self.innerHeight:0;if(document.documentElement &&(!document.compatMode || document.compatMode=="CSS1Compat")){var topMargin = parseInt(CSS.get(body,'marginTop'),10) || 0;var bottomMargin = parseInt(CSS.get(body,'marginBottom'), 10) || 0;return Math.max(body.offsetHeight + topMargin + bottomMargin, document.documentElement.clientHeight, document.documentElement.scrollHeight, screen.zero(self.innerHeight));}return Math.max(body.scrollHeight, body.clientHeight, screen.zero(self.innerHeight));};
screen.getViewportWidth = function(){if(document.documentElement &&(!document.compatMode || document.compatMode=="CSS1Compat")){return document.documentElement.clientWidth;}else if(document.compatMode && document.body){return document.body.clientWidth;}return screen.zero(self.innerWidth);};
screen.getViewportHeight = function(){if(!window.opera && document.documentElement &&(!document.compatMode || document.compatMode=="CSS1Compat")){return document.documentElement.clientHeight;}else if(document.compatMode && !window.opera && document.body){return document.body.clientHeight;}return screen.zero(self.innerHeight);};return screen;})();
var Sort =(function(){var sort ={};
sort.AlphaNumeric = function(a,b){if(a==b){return 0;}if(a<b){return -1;}return 1;};sort.Default = sort.AlphaNumeric;
sort.NumericConversion = function(val){if(typeof(val)!="number"){if(typeof(val)=="string"){val = parseFloat(val.replace(/,/g,''));if(isNaN(val) || val==null){val=0;}}else{val = 0;}}return val;};
sort.Numeric = function(a,b){return sort.NumericConversion(a)-sort.NumericConversion(b);};
sort.IgnoreCaseConversion = function(val){if(val==null){val="";}return(""+val).toLowerCase();};
sort.IgnoreCase = function(a,b){return sort.AlphaNumeric(sort.IgnoreCaseConversion(a),sort.IgnoreCaseConversion(b));};
sort.CurrencyConversion = function(val){if(typeof(val)=="string"){val = val.replace(/^[^\d\.]/,'');}return sort.NumericConversion(val);};
sort.Currency = function(a,b){return sort.Numeric(sort.CurrencyConversion(a),sort.CurrencyConversion(b));};
sort.DateConversion = function(val){function getdate(str){function fixYear(yr){yr = +yr;if(yr<50){yr += 2000;}else if(yr<100){yr += 1900;}return yr;};var ret;if(ret=str.match(/(\d{2,4})-(\d{1,2})-(\d{1,2})/)){return(fixYear(ret[1])*10000) +(ret[2]*100) +(+ret[3]);}if(ret=str.match(/(\d{1,2})[\/-](\d{1,2})[\/-](\d{2,4})/)){return(fixYear(ret[3])*10000) +(ret[1]*100) +(+ret[2]);}return 99999999;};return getdate(val);};
sort.Date = function(a,b){return sort.Numeric(sort.DateConversion(a),sort.DateConversion(b));};return sort;})();var Table ={};Table.VERSION = .955;
Table.getTable = function(o){if(o==null){return o;}return DOM.getParentByTagName(o,"TABLE");};
Table.resolve = function(o){if(o==null){return null;}if(o.nodeName && o.nodeName!="TABLE"){o = this.getTable(o);}CSS.createId(o);return o;};
Table.getCell = function(o){if(o==null){return null;}if(o.nodeName && o.nodeName!="TH" && o.nodeName!="TD"){o = DOM.getParentByTagName(o,["TD","TH"]);}return o;};
Table.expandBodies = function(t){var bodies = this.getBodies(t);if(bodies==null){return bodies;}for(var i=0;i<bodies.length;i++){if(CSS.get(bodies[i],"display")=="none"){CSS.set(bodies[i],"display","block");}}};
Table.getBodies = function(t){if(t==null){return t;}if(t.getElementsByTagName){return t.getElementsByTagName("TBODY");}return null;};
Table.getHeads = function(t){if(t==null){return t;}if(t.getElementsByTagName){return t.getElementsByTagName("THEAD");}return null;};
Table.expandRowClicked = function(o){var t, tr;if((tr = DOM.getParentByTagName(o,"TR"))==null){return;}if((t = this.getTable(tr))==null){return;}
this.expandBodies(t);CSS.setStyle(tr,"display","none");};Table.processHeaderCells = function(t, func){t = this.resolve(t);if(t==null){return;}var theads = this.getHeads(t);for(var i=0;i<theads.length;i++){var th = theads[i];if(th.rows && th.rows.length && th.rows.length>0){var rows = th.rows;var len = rows.length;for(var j=0;j<len;j++){var row = rows[j];if(row.cells && row.cells.length && row.cells.length>0){var cells = row.cells;var len2 = cells.length;for(var k=0;k<len2;k++){var cellsK = cells[k];func(cellsK);}}}}}};
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 && cells[cells.length-1].cellIndex>0){this.getCellIndex = function(td){return td.cellIndex;};return td.cellIndex;}for(var i=0;i<cells.length;i++){if(tr.cells[i]==td){return i;}}}return 0;};
Table.getCellValue = function(td,useInnerText){if(td==null){return null;}if(useInnerText && defined(td.innerText)){return td.innerText;}if(!td.childNodes){return "";}var childNodes = td.childNodes;var childNodesLength = childNodes.length;var node = null;var ret = "";for(var i=0;i<childNodesLength;i++){node = childNodes[i];if(node.nodeType && node.nodeType==1){if(node.nodeName=="INPUT" && defined(node.value)){if(node.type &&(node.type!="checkbox" || node.checked)){ret += node.value;}}else if(node.nodeName=="SELECT" && node.selectedIndex>=0 && node.options){ret += node.options[node.selectedIndex].text;}else if(node.nodeName=="IMG" && node.name){ret += node.name;}else{ret += this.getCellValue(node);}}else{if(node.nodeType && node.nodeType==3){if(defined(node.innerText)){ret += node.innerText;}else if(defined(node.nodeValue)){ret += node.nodeValue;}}}}return ret;};Table.tableHeaderIndexes ={};
Table.getActualCellIndex = function(tableCellObj){var tableObj = this.getTable(tableCellObj);var cellCoordinates = tableCellObj.parentNode.rowIndex+"-"+this.getCellIndex(tableCellObj);if(typeof(this.tableHeaderIndexes[tableObj.id])!='undefined'){return this.tableHeaderIndexes[tableObj.id][cellCoordinates];}var matrix = [];this.tableHeaderIndexes[tableObj.id] ={};var thead = tableObj.getElementsByTagName('THEAD')[0];var trs = thead.getElementsByTagName('TR');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(typeof(matrix[rowIndex])=="undefined"){matrix[rowIndex] = [];}var m = matrix[rowIndex];for(var k=0;k<m.length+1;k++){if(typeof(m[k])=="undefined"){firstAvailCol = k;break;}}this.tableHeaderIndexes[tableObj.id][cellId] = firstAvailCol;for(var k=rowIndex;k<rowIndex+rowSpan;k++){if(typeof(matrix[k])=="undefined"){matrix[k] = [];}var matrixrow = matrix[k];for(var l=firstAvailCol;l<firstAvailCol+colSpan;l++){matrixrow[l] = "x";}}}}return this.tableHeaderIndexes[tableObj.id][cellCoordinates];};Table.lastSortedColumn ={};Table.SortedAscendingClassName = "TableSortedAscending";Table.SortedDescendingClassName = "TableSortedDescending";Table.SortableClassName = "sortable";
Table.sort = function(t,args){var colIndex, sortType, descending, rowShade, ignoreHiddenRows;if(!defined(args)){args ={};}var origT = t;if(t==null){return;}t = this.resolve(t);if(defined(args['colIndex'])){colIndex = args['colIndex'];}else if(defined(origT) && defined(origT.cellIndex)){colIndex = this.getActualCellIndex(origT);}else{colIndex = 0;}sortType =((!defined(args['sortType'])) ||(typeof(args['sortType'])!="function")) ? Sort.Default : args['sortType'];if(defined(this.lastSortedColumn[t.id]) && this.lastSortedColumn[t.id]['index']==colIndex){descending = !(this.lastSortedColumn[t.id]['descending']);}else if(defined(args['descending']) && typeof(args['descending'])=="boolean"){descending = args['descending'];}else{descending = false;}ignoreHiddenRows =(defined(args['ignoreHiddenRows'])) ? args['ignoreHiddenRows'] : false;var sortedAscendingClassName = this.SortedAscendingClassName;var sortedDescendingClassName = this.SortedDescendingClassName;var sortableClassName = this.SortableClassName;var sortedClassName = descending?sortedDescendingClassName:sortedAscendingClassName;var sortConversion = false;if(sortType==Sort.Default || sortType==Sort.AlphaNumeric){sortType=Sort.AlphaNumeric;}else if(sortType==Sort.IgnoreCase){sortConversion = Sort.IgnoreCaseConversion;sortType=Sort.AlphaNumeric;}else if(sortType==Sort.Numeric){sortConversion = Sort.NumericConversion;sortType=Sort.AlphaNumeric;}else if(sortType==Sort.Currency){sortConversion = Sort.CurrencyConversion;sortType=Sort.AlphaNumeric;}else if(sortType==Sort.Date){sortConversion = Sort.DateConversion;sortType=Sort.AlphaNumeric;}this.lastSortedColumn[t.id] ={'index':colIndex, 'descending':descending};var self = this;this.processHeaderCells(t,
function(cell){if(CSS.hasClass(cell,sortableClassName)){CSS.removeClass(cell,sortedAscendingClassName);CSS.removeClass(cell,sortedDescendingClassName);if(colIndex==self.getActualCellIndex(cell)){CSS.addClass(cell,sortedClassName);}}});var bodies = this.getBodies(t);if(bodies==null || bodies.length==0){return;}for(var i=0;i<bodies.length;i++){var tb = bodies[i];var tbrows = tb.rows;var tbrowslength = tbrows.length;var rows = [];var useInnerText =(tb.getElementsByTagName('INPUT').length==0);var cRow;var cRowIndex=0;if(cRow=tbrows[cRowIndex]){do{if(rowCells = cRow.cells){var cellValue =(rowCells&&colIndex<rowCells.length)?this.getCellValue(rowCells[colIndex],useInnerText):null;if(sortConversion) cellValue = sortConversion(cellValue);rows[cRowIndex] = [cellValue,tbrows[cRowIndex]];}}while(cRow=tbrows[++cRowIndex])}var newSortFunc = function(a,b){return(descending)?sortType(b[0],a[0]):sortType(a[0],b[0]);};rows.sort(newSortFunc);var cRow;var cRowIndex=0;if(cRow=rows[cRowIndex]){do{tb.appendChild(cRow[1]);}while(cRow=rows[++cRowIndex])}}if(defined(args['rowShade'])){this.shadeOddRows(t,args['rowShade'],ignoreHiddenRows);}};Table.FilteredClassName = "TableFiltered";Table.FilterableClassName = "filterable";Table.Filters ={};
Table.filter = function(t,filters,args){var colIndex, rowShade, filter, allFilters;var reset = false;if(!defined(args)){args ={};}if(!defined(filters)){return;}if(filters && filters.nodeName && filters.nodeName=="SELECT" && filters.type){if(filters.type=="select-one" && defined(filters.selectedIndex) && filters.selectedIndex>-1){var sel = filters;filters ={};filters.filter = sel.options[sel.selectedIndex].value;}}if(isObject(filters) && !isArray(filters)){filters = [filters];}else if(filters==null){reset = true;filters = [];}else{return;}t = this.getCell(t);for(var i=0;i<filters.length;i++){colIndex = filters[i].colIndex;if(!defined(colIndex) && defined(t) && defined(t.cellIndex)){filters[i].colIndex = this.getCellIndex(t);}}if(t==null){return;}t = this.resolve(t);if(!defined(this.Filters[t.id]) || reset){this.Filters[t.id] ={};}var allFilters = this.Filters[t.id];for(var i=0;i<filters.length;i++){filter = filters[i];if(filter.filter==null || filter.filter==""){delete allFilters[filter.colIndex];}else{allFilters[filter.colIndex] = filter.filter;}}var bodies = this.getBodies(t);if(bodies==null || bodies.length==0){return;}for(var i=0;i<bodies.length;i++){var tb = bodies[i];for(var j=0;j<tb.rows.length;j++){var row = tb.rows[j];if(reset){row.style.display="";}else if(row.cells){var cells = row.cells;var cellsLength = cells.length;var hide = false;for(colIndex in allFilters){if(!hide){filter = allFilters[colIndex];if(colIndex < cellsLength){var val = this.getCellValue(cells[colIndex]);if(filter.charAt(0)=="/" && val.search){hide =(val.search(new RegExp(filter.substring(1,filter.length-1)))<0);}else if(val!=filter){hide = true;}}}}if(hide){row.style.display = "none";}else{row.style.display="";}}}}var self = this;this.processHeaderCells(t,
function(cell){if(defined(allFilters[self.getCellIndex(cell)]) && CSS.hasClass(cell,self.FilterableClassName)){CSS.addClass(cell,self.FilteredClassName);}else{CSS.removeClass(cell,self.FilteredClassName);}});if(defined(args['rowShade'])){this.shadeOddRows(t,args['rowShade']);}};
Table.shadeOddRows = function(t,className,ignoreHiddenRows){if(t==null){return;}ignoreHiddenRows =(defined(ignoreHiddenRows) && typeof(ignoreHiddenRows)=="boolean") ? ignoreHiddenRows : false;t = this.resolve(t);var bodies = this.getBodies(t);if(bodies==null || bodies.length==0){return;}for(var i=0;i<bodies.length;i++){var tb = bodies[i];var tbrows = tb.rows;var cRowIndex=0;var cRow;var displayedCount=0;if(cRow=tbrows[cRowIndex]){do{if(ignoreHiddenRows || CSS.getStyle(cRow,"display")!="none"){if(displayedCount++%2==0){CSS.removeClass(cRow,className);}else{CSS.addClass(cRow,className);}}}while(cRow=tbrows[++cRowIndex])}}};Table.pages ={};
Table.page = function(t,pageIndex,pageSize,args){if(!defined(args)){args ={};}if(!defined(pageSize) || typeof(pageSize)!="number" || pageSize==0){pageSize = 25;}if(!defined(pageIndex) || typeof(pageIndex)!="number"){pageIndex = 0;}var startRow = pageIndex*pageSize;var endRow = startRow + pageSize - 1;if(t==null){return;}t = this.resolve(t);var bodies = this.getBodies(t);if(bodies==null || bodies.length==0){return;}var tb = bodies[0];if(startRow<0){pageIndex = 0;startRow = 0;endRow = startRow + pageSize - 1;}if(startRow > tb.rows.length){pageIndex = Math.floor(tb.rows.length/pageSize);if(pageIndex==tb.rows.length/pageSize){pageIndex--;}startRow = pageIndex * pageSize;endRow = startRow + pageSize;}this.pages[t.id] ={'pageIndex':pageIndex, 'pageSize':pageSize};for(var i=0;i<tb.rows.length;i++){var row = tb.rows[i];if(i<startRow || i>endRow){row.style.display="none";}else{row.style.display="";}}if(defined(args['rowShade'])){this.shadeOddRows(t,args['rowShade']);}}
Table.pageNext = function(t,pageSize,args){t = this.resolve(t);if(defined(Table.pages[t.id])){var pages = Table.pages[t.id];var newPage = pages.pageIndex+1;this.page(t,newPage,pageSize || pages.pageSize,args);return newPage;}else{this.page(t,1,pageSize,args);return 1;}return -1;};
Table.pagePrevious = function(t,pageSize,args){t = this.resolve(t);if(defined(Table.pages[t.id])){var pages = Table.pages[t.id];var newPage = pages.pageIndex-1;this.page(t,newPage,pageSize || pages.pageSize,args);return newPage;}else{this.page(t,0,pageSize,args);return 0;}return -1;};

