var rowhider = function() { var tables = document.getElementsByTagName('tbody'); var maxRows = 5; var colspan; for(var i = 0, l = tables.length; l > i; i++) { var rows = tables[i].getElementsByTagName('tr'); colspan = rows[0].getElementsByTagName('td').length; if(rows.length > maxRows) { for(var a = 0, e = rows.length; e > a; a++) { if(a >= 5) { rows[a].className += " hide"; } } var tr = document.createElement('tr'); tr.innerHTML = "More rows. Click to show..."; tr.getElementsByTagName('a')[0].addEventListener ? tr.getElementsByTagName('a')[0].addEventListener('click',showRows) : tr.getElementsByTagName('a')[0].attachEvent('onclick',showRows); tables[i].appendChild(tr); } } function hideRows(e) { var target = e.srcElement ? e.srcElement : e.target; var tr = target.parentElement; while(tr.nodeName !== "TR") { tr = tr.parentElement; } var table = target; while(table.nodeName !== "TBODY") { table = table.parentElement; } table.removeChild(tr); var rows = table.getElementsByTagName('tr'); for(var i = 0, l = rows.length; l > i; i++) { if(i >= 5) { rows[i].className += " hide"; } } var tr = document.createElement('tr'); tr.innerHTML = "More rows. Click to show..."; tr.getElementsByTagName('a')[0].addEventListener ? tr.getElementsByTagName('a')[0].addEventListener('click',showRows) : tr.getElementsByTagName('a')[0].attachEvent('onclick',showRows); table.appendChild(tr); } function showRows(e) { var target = e.srcElement ? e.srcElement : e.target; var tr = target.parentElement; while(tr.nodeName !== "TR") { tr = tr.parentElement; } var table = target; while(table.nodeName !== "TBODY") { table = table.parentElement; } var rows = table.getElementsByTagName('tr'); for(var i = 0, l = rows.length; l > i; i++) { var n = rows[i].className.replace(' hide',''); rows[i].className = n; } tr.innerHTML = "...hide rows"; tr.getElementsByTagName('a')[0].addEventListener ? tr.getElementsByTagName('a')[0].addEventListener('click',hideRows) : tr.getElementsByTagName('a')[0].attachEvent('onclick',hideRows); if(e.preventDefault) { e.preventDefault(); } else { return false; } } };