home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / JanaSetup.exe / admin / seiten_js / table_sort.js < prev   
Text File  |  2006-05-08  |  2KB  |  117 lines

  1. // Copyright 2002 by Mike Hall
  2. // Please see http://www.brainjar.com for terms of use.
  3.  
  4. function sortTable(id, col, rev)
  5. {
  6.     var tblEl = document.getElementById(id);
  7.  
  8.     if (tblEl.reverseSort == null)
  9.     {
  10.         tblEl.reverseSort = new Array();
  11.         tblEl.lastColumn = 1;
  12.     }
  13.  
  14.     if (tblEl.reverseSort[col] == null)
  15.         tblEl.reverseSort[col] = rev;
  16.  
  17.     if (col == tblEl.lastColumn)
  18.         tblEl.reverseSort[col] = !tblEl.reverseSort[col];
  19.  
  20.     tblEl.lastColumn = col;
  21.  
  22.     var tmpEl;
  23.     var i, j;
  24.     var minVal, minIdx;
  25.     var testVal;
  26.     var cmp;
  27.  
  28.     for (i = 0; i < tblEl.rows.length - 1; i++)
  29.     {
  30.         minIdx = i;
  31.         minVal = getTextValue(tblEl.rows[i].cells[col]);
  32.  
  33.         for (j = i + 1; j < tblEl.rows.length; j++)
  34.         {
  35.             testVal = getTextValue(tblEl.rows[j].cells[col]);
  36.             cmp = compareValues(minVal, testVal);
  37.  
  38.             if (tblEl.reverseSort[col])
  39.                 cmp = -cmp;
  40.  
  41.             if ((cmp == 0) && (col != 1))
  42.                 cmp = compareValues(getTextValue(tblEl.rows[minIdx].cells[1]), getTextValue(tblEl.rows[j].cells[1]));
  43.  
  44.             if (cmp > 0)
  45.             {
  46.                 minIdx = j;
  47.                 minVal = testVal;
  48.             }
  49.         }
  50.  
  51.         if (minIdx > i)
  52.         {
  53.             tmpEl = tblEl.removeChild(tblEl.rows[minIdx]);
  54.             tblEl.insertBefore(tmpEl, tblEl.rows[i]);
  55.         }
  56.     }
  57.  
  58.     return false;
  59. }
  60.  
  61. if (document.ELEMENT_NODE == null)
  62. {
  63.     document.ELEMENT_NODE = 1;
  64.     document.TEXT_NODE = 3;
  65. }
  66.  
  67. function getTextValue(el)
  68. {
  69.     var i;
  70.     var s = '';
  71.  
  72.     for (i = 0; i < el.childNodes.length; i++)
  73.     {
  74.         if (el.childNodes[i].nodeType == document.TEXT_NODE)
  75.             s += el.childNodes[i].nodeValue;
  76.         else if ((el.childNodes[i].nodeType == document.ELEMENT_NODE) && (el.childNodes[i].tagName == 'BR'))
  77.             s += ' ';
  78.         else
  79.             s += getTextValue(el.childNodes[i]);
  80.     }
  81.  
  82.     return normalizeString(s);
  83. }
  84.  
  85. function compareValues(v1, v2)
  86. {
  87.     var f1, f2;
  88.  
  89.     f1 = parseFloat(v1);
  90.     f2 = parseFloat(v2);
  91.  
  92.     if (!isNaN(f1) && !isNaN(f2))
  93.     {
  94.         v1 = f1;
  95.         v2 = f2;
  96.     }
  97.  
  98.     if (v1 == v2)
  99.         return 0;
  100.  
  101.     if (v1 > v2)
  102.         return 1
  103.  
  104.     return -1;
  105. }
  106.  
  107. var whtSpMult = new RegExp('\\s\\s+', 'g');
  108. var whtSpEnds = new RegExp('^\\s*|\\s*$', 'g');
  109.  
  110. function normalizeString(s)
  111. {
  112.     s = s.replace(whtSpMult, ' ');
  113.     s = s.replace(whtSpEnds, '');
  114.     s = s.toLowerCase();
  115.  
  116.     return s;
  117. }