  var order=0;
  var error=1;

  //===========================================================================
  function sort(el)
  { var t=document.getElementById('products');
    if(t)
    {
      var count_rows=t.rows.length;

      var count_cells=t.rows[0].cells.length;

      var r = new Array;

      var r_head = t.rows[0].innerHTML;

      var c_text = new Array

      var c_html = new Array;

      for(i=0; i<count_rows; i++)
      { r[i]=t.rows[i].innerHTML;
      }

      for(i=1; i<count_rows; i++)
      { try
        { if(t.rows[i].cells[el.cellIndex].textContent)
          { c_text[i]=new Array(t.rows[i].cells[el.cellIndex].textContent, i);
          }else
          { c_text[i]=new Array(t.rows[i].cells[el.cellIndex].innerText, i);
          }
          c_html[i]=t.rows[i].cells[el.cellIndex].innerHTML;

        }catch(er)
        { if(error==1) alert_error(er);
        }
      }

      if(order==el.cellIndex)
      { c_text.reverse();
      }else
      { try
        { order=el.cellIndex;
        }catch(er)
        { if(error==1) alert_error(er);
        }
        c_text.sort();
      }

      var new_table = '<tr>' + r_head + '</tr>';
      for(i=0; i<count_rows-1; i++)
      { try
        { new_table = new_table +  '<tr>' + r[c_text[i][1]] + '</tr>';
        }catch(er)
        { if(error==1) alert_error(er);
        }
      }

      try
      { t.innerHTML=new_table;
      }catch(er)
      { try
        { t.outerHTML='<table id="products" class="'+t.className+'" style="'+t.style.cssText+'" ' +
                      'cellpadding="'+t.cellPadding+'" cellspacing="'+t.cellSpacing+'">' +
                      new_table + '</table>';
        }catch(er)
        { if(error==1) alert_error(er);
        }
      }

    }else
    { if(error==1) alert("Table 'products' not found!");
    }
  }
