
/*

        Author:		Robbe D. Morris
		Date:		October 20, 2002
		URL:			http://www.robbemorris.com

*/
 

var idxGrid_Text=0;
var idxGrid_CheckBox=1;
var idxGrid_Input=2;
var idxGrid_DropDown=3;

 

  function GridSort(oGridArrays)
  {
        var oTmpGrid = new Array();
		var oNewGrid = new Array();
        var oRow;
		var oCell;
		var nDataType=0;
		var nFound=0;
		
 
        try
	    {

			 
             lArrayLength = oGridArrays.length;
 
    	     if (lArrayLength < 1) { return false; }
 
 
             for (lLoop=0; lLoop<lArrayLength; lLoop++)
            { 

            
               if (lLoop != 0)
			    {
				   
				    oRow = oGridArrays[lLoop];
				 
				    oCell = oRow[GridSortColumn];
                   
				    oTmpGrid[nFound] = new Array();
  
    
					 if (lLoop == 1) { nDataType = oCell.Type; }
        
	
                    oTmpGrid[nFound][0] = oCell.ID;	 
                    oTmpGrid[nFound][1] = oCell.SortVal.toUpperCase();
					
					 
					 nFound++;
				
				 }
			 
             }
			 
		 
            if ( GridSortDirection == 'descending') { GridSortDirection='ascending';  oTmpGrid.sort(GridSortColumnArray);   }
			else { GridSortDirection = 'descending'; oTmpGrid.reverse(GridSortColumnArray); }
           
 

           oNewGrid[0] = oGridArrays[0];

           var nLoop=0;
		  
		   nFound=0;
       
            for (nLoop=0;nLoop<lArrayLength; nLoop++)
            { 

               if (nLoop >0)
				{
                   
                   sID = oTmpGrid[nFound][0]; 
			       oRow = GridGetSortedRow(oGridArrays,sID);	 
				   oNewGrid[nFound +1] = oRow;
				   nFound++;

				}	
		 
			}
 			 
         }
		   catch (exception) 
		  { 
		     if (exception.description == null) { alert("Grid Sort Error: " + exception.message); }  
		     else {  alert("Grid Sort Error: " + exception.description); }
		  }

		return oNewGrid; 
  }



 function GridGetSortedRow(oGridArrays,sID)
 {

        var oRow;
		var oCell;
	 
        try
	    {
             lArrayLength = oGridArrays.length;
     
    	     if (lArrayLength < 1) {  return null; }
 
             for (lLoop=0; lLoop<lArrayLength; lLoop++)
            { 
               if (lLoop != 0)
			    {
				    oRow = oGridArrays[lLoop];
				    oCell = oRow[GridSortColumn];
                    if (oCell.ID == sID) { return oRow; }
				 }      
             }
		}
	 	   catch (exception) 
		  { 
		     if (exception.description == null) { alert("GridGetSortedRow: " + exception.message); }  
		     else {  alert("GridGetSortedRow: " + exception.description); }
		  }
 }

  function GridSortColumnArray(colA, colB) 
 {
    if (colA[1] > colB[1]) return 1;
    else if (colA[1] < colB[1]) return -1;
    else return 0;
  }

 

   
  function GridSortSetColumn(nVal)
  {

	  try
	  {
	   if (nVal != GridSortColumn)
	  {
         GridSortColumn = nVal;
	     GridDrawTable(GridArrays);
		 GridDrawTable(GridArrays);
	  }
	  else
	  {
         GridSortColumn = nVal;
		 GridDrawTable(GridArrays);
	  }
	  }
	  	 	   catch (exception) 
		  { 
		     if (exception.description == null) { alert("GridSortSetColumn: " + exception.message); }  
		     else {  alert("GridSortSetColumn: " + exception.description); }
		  }
  }

  function GridReplace(sOrgVal,sSearchVal,sReplaceVal)
 {

	 	  try
	  {
       var sVal;
       var sRegExp = eval("/" + sSearchVal + "/g");

	   sVal = sOrgVal.replace(sRegExp,sReplaceVal);
       return sVal;
	  }
	   	  	 	   catch (exception) 
		  { 
		     if (exception.description == null) { alert("GridReplace: " + exception.message); }  
		     else {  alert("GridReplace: " + exception.description); }
		  }
 }




 

    
