function clsArray() {
	// initialize the member function references
    // for the class prototype
    if (typeof(_clsArray_prototype_called) == 'undefined')
    {
       _clsArray_prototype_called = true;
       clsArray.prototype.findIn2DArray = _findIn2DArray ;
	   clsArray.prototype.find = _find ;
	   clsArray.prototype.sortMultiDimensionalArray = _sortMultiDimensionalArray;
    }
    
    this.DT_INT = 0;
    this.DT_STR = 1;
    this.DT_DATE = 2;
	this.DT_ELEM = 3;    
	
	function _find(vFindThis, aArray, nDataType){
    	var i, bFound = false, nReturn = -1;
        
		if (aArray.length > 0) {
			if ((nDataType == this.DT_INT) || (nDataType == this.DT_STR)) {
            	for (i = 0; ((i < aArray.length) && (!bFound)); i++) {        
            		if (vFindThis == aArray[i]) {          
        				nReturn = i;
        				bFound = true;
        			}
            	}
			}
			else if (nDataType == this.DT_ELEM) {
				for (i = 0; ((i < aArray.length) && (!bFound)); i++) {        
            		if (vFindThis == aArray[i].value) {          
        				nReturn = i;
        				bFound = true;
        			}
            	}
			}
		}
		
    	return nReturn;
    }
	
    function _findIn2DArray(vFindThis, aArray, nDataType, nElement){
    	var i, bFound=false, nReturn=-1;
        
    	for (i=0;((i<aArray.length)&&(!bFound));i++)
    	{        
    		if ((nDataType==this.DT_INT) || (nDataType==this.DT_STR))
    		{                   
    			if (vFindThis==aArray[i][nElement])
    			{          
    				nReturn=i;
    				bFound=true;
    			}
    
    		}
    	}
    	return nReturn;
    }		
	
	function _sortMultiDimensionalArray(IndexToSort, TheArray) {		
		function compare(element1, element2) 
         {
		 	var value1 = '', value2 = '';
		
			if (element1 != null) {
				value1 = element1[IndexToSort];
			}
				
			if (element2 != null) {
				value2 = element2[IndexToSort];
			}

			if ((!isNaN(value1))
			&& (!isNaN(value2)))
			{
				value1 = Number(value1);
				value2 = Number(value2);
			}
				
           return ((value1 < value2) ? -1 : ((value1 > value2) ? 1 : 0)); 
         }	 

         TheArray.sort(compare);		 
	}
}
