function getSortCommandSortOrder()
{
	if (ddlSortOptions)
	{
		var selectedValue = ddlSortOptions.options[ddlSortOptions.selectedIndex].value;
	    
		if ((selectedValue) &&
		    (selectedValue != '') &&
		    (selectedValue != '_'))
		{
			var selectedOptions = selectedValue.split('_');
	        
			if ((selectedOptions) &&
				(selectedOptions.length == 2))
			{
				var selectedSortCommand = selectedOptions[0];
				var selectedSortOrder = selectedOptions[1];
	            
				sort(selectedSortCommand, selectedSortOrder);
			}
		}
	}
}

function TrimString(sInString)
{
	sInString = sInString.replace( /^\s+/g, "" );
	return sInString.replace( /\s+$/g, "" );
}

function sort(sortCommand, sortOrder)
{
	if(!LNJS.Page.SearchMgr ||
		!LNJS.Page.SearchMgr.lData ||
		!LNJS.Page.SearchMgr.lData.items ||
		LNJS.Page.SearchMgr.lData.items.length <= 1)
		return;

	var functionBuilder = new StringBuilder();
	var eventDataBuilder = new StringBuilder();
	
	var searchType = LNJS.Page.SearchMgr.CritMgr.Criteria.SearchType;
	if(searchType == "FSFL")
		searchType = "SL";
	searchType = "W" + searchType;
	
	eventDataBuilder.append('<EventData SearchID="'+searchID+'" ListingCount="'+LNJS.Page.SearchMgr.lData.resultCount+'" SearchType="'+searchType+'">');
	eventDataBuilder.append('<SortOrder>');

	if(sortOrder.toLowerCase() == 'asc')
		functionBuilder.append('var diff = sortBy'+sortCommand+'(param1,param2,"'+sortOrder.toLowerCase()+'");');
	else
		functionBuilder.append('var diff = -sortBy'+sortCommand+'(param1,param2,"'+sortOrder.toLowerCase()+'");');
	functionBuilder.append('if(diff != 0)return diff;');

	eventDataBuilder.append('<SortField Name="'+sortCommand+'" Seq="'+sortOrder+'" />');

	if(LNJS.Page.SearchMgr.CritMgr.Criteria.SortFieldList &&
		LNJS.Page.SearchMgr.CritMgr.Criteria.SortFieldList.items &&
		LNJS.Page.SearchMgr.CritMgr.Criteria.SortFieldList.items.length > 0)
	{
		var sortFieldList = LNJS.Page.SearchMgr.CritMgr.Criteria.SortFieldList.items;
		
		for (var i = 0;i < sortFieldList.length; i++)
		{
			if(sortFieldList[i] != null &&
				sortFieldList[i].Name != null &&
				sortFieldList[i].Name != '' &&
				sortFieldList[i].Name != sortCommand &&
				sortFieldList[i].Seq != null &&
				sortFieldList[i].Seq != '')
			{
    			var sortFieldName = '';
				    
			    if ((sortFieldList[i].Name == 'SizeMinAvail') ||
			        (sortFieldList[i].Name == 'SizeMaxAvail'))
		        {
		            sortFieldName = 'SizeTotalRentable';
		        }
		        else
		        {
		            sortFieldName = sortFieldList[i].Name;
		        }
		        var type = '';
		        try
		        {
					//check if its a function
					type = typeof(eval('window.'+sortFieldName));
		        }
		        catch(error)
		        {
		        }
		        if(type==='function')
    			{
    				if(sortFieldList[i].Seq.toLowerCase() == 'asc')
    				{
						functionBuilder.append(
							'diff = sortBy' + 
							sortFieldName + 
							'(param1,param2,"' + 
							sortFieldList[i].Seq.toLowerCase()+'");');
					}
					else
					{
						functionBuilder.append(
							'diff = -sortBy' + 
							sortFieldName + 
							'(param1,param2,"' + 
							sortFieldList[i].Seq.toLowerCase()+'");');
					}
				
					functionBuilder.append('if(diff != 0)return diff;');
					
					eventDataBuilder.append(
						'<SortField Name="' + 
						sortFieldList[i].Name +
						'" Seq="' + 
						sortFieldList[i].Seq.toLowerCase()+'" />');
				}
			}
		}
	}

	functionBuilder.append('return diff;');

	var sortFunction = new Function('param1','param2',functionBuilder.toString());
	LNJS.Page.SearchMgr.lData.items.sort(sortFunction);

	eventDataBuilder.append('</SortOrder>');
	eventDataBuilder.append('</EventData>');

    if ((typeof(enNGMapMode) != 'undefined') &&
        (enNGMapMode != 'NoMap') &&
        (enNGMapMode != 'GalleryNoMap'))
    {
	    sortPData();
	}
	
	if (typeof(resultsSorted) != 'undefined')
	{
	    resultsSorted = true;
	}
	
	if ((typeof(forSaleForLeaseSort) != 'undefined') &&
	    (sortCommand == 'ListingType'))
    {
        forSaleForLeaseSort = true;
    }
    else if ((typeof(forSaleForLeaseSort) != 'undefined') &&
        (sortCommand != 'ListingType'))
    {
        forSaleForLeaseSort = false;
    }
	
	if (LNJS.Page.MapMgr)
	{
	    LNJS.Page.MapMgr.clearPushpins();
	}
	
	LNJS.Page.SearchMgr._plotPins();
	LNJS.Page.SearchMgr._renderResultList();
	LNJS.Page.Log.__LogActionCode(160);

	LNJS.Page.Log.__LogEvent({eventclass:60,eventtype:180,eventdata:eventDataBuilder.toString()});
}

function sortPData()
{
	var newPDataArray = new Array();
	var pDataIndex = 0;
	
	for (var i = 0; i < LNJS.Page.SearchMgr.lData.items.length; i++)
	{
		var currentLid = LNJS.Page.SearchMgr.lData.items[i].lid;
		
		for (var j = 0; j < LNJS.Page.SearchMgr.pData.items.length; j++)
		{
			if (LNJS.Page.SearchMgr.pData.items[j].lid == currentLid)
			{
				LNJS.Page.SearchMgr.pData.items[j].index = pDataIndex;
				newPDataArray[pDataIndex] = LNJS.Page.SearchMgr.pData.items[j];
				
				pDataIndex++;
				
				break;
			}
		}
	}
	
	LNJS.Page.SearchMgr.pData.items = newPDataArray;
}

//function sortByDateEntered(l1,l2)
//{
//	if(l1.dateentered == null)
//		return 1;
//	if(l2.dateentered == null)
//		return -1;
//	var l1Date = new Date(l1.dateentered);
//	var l2Date = new Date(l2.dateentered);
//	return l1Date - l2Date;
//}

function sortByListingType(l1, l2)
{
	if(l1.type.toUpperCase() == 'FS')
		return -1;
	if(l2.type.toUpperCase() == 'FS')
		return 1;
	return 0;
}

function sortByPhotoAvailable(l1,l2)
{
	if(l1.photo)
		return -1;
	if(l2.photo)
		return 1;
	return 0;
}

function sortByPropertyName(l1,l2)
{
	if(l1.name == null || l1.name == '' || !l1.name.match(/\S/))
		return 1;
	if(l2.name == null || l2.name == '' || !l2.name.match(/\S/))
		return -1;
	var l1PropName = l1.name.toLowerCase();
	var l2PropName = l2.name.toLowerCase();
	if(l1PropName < l2PropName)
		return -1;
	if(l1PropName > l2PropName)
		return 1;
	return 0;
}

function sortByCityName(l1,l2)
{
	if(l1.city == null || l1.city == '' || !l1.city.match(/\S/))
		return 1;
	if(l2.city == null || l2.city == '' || !l2.city.match(/\S/))
		return -1;
	var l1City = l1.city.toLowerCase();
	var l2City = l2.city.toLowerCase();
	if(l1City < l2City)
		return -1;
	if(l1City > l2City)
		return 1;
	return 0;
}

function sortByStateProvCode(l1,l2)
{ 
	if(l1.state == null || l1.state == '' || !l1.state.match(/\S/))
		return 1;
	if(l2.state == null || l2.state == '' || !l2.state.match(/\S/))
		return -1;
	var l1State = l1.state.toLowerCase();
	var l2State = l2.state.toLowerCase();
	if(l1State < l2State)
		return -1;
	if(l1State > l2State)
		return 1;
	return 0;
}

function sortBySubCategoryName(l1,l2)
{
	if(l1.bfscname == null || l1.bfscname == '' || !l1.bfscname.match(/\S/))
		return 1;
	if(l2.bfscname == null || l2.bfscname == '' || !l2.bfscname.match(/\S/))
		return -1;
	var l1PropType = l1.bfscname.toLowerCase();
	var l2PropType = l2.bfscname.toLowerCase();
	if(l1PropType < l2PropType)
		return -1;
	if(l1PropType > l2PropType)
		return 1;
	return 0;
}

function sortByPrice(l1, l2, sortOrder)
{
	var l1Price = null;
	var l2Price = null;

	if(l1.type == null)
		return 1;
	if(l2.type == null)
		return -1;
	if(l1.type.toUpperCase() == 'FS' && l2.type.toUpperCase() == 'FS')
	{
		if(l1.price != null)
		{
			l1Price = l1.price;
			while(l1Price.match(','))
				l1Price = l1Price.replace(',','');
			l1Price = eval(l1Price.match(/\d+[.]?\d*/));
			//to account for undefined
			if(l1Price == null)
				l1Price = null;
		}
		if(l2.price != null)
		{
			l2Price = l2.price;
			while(l2Price.match(','))
				l2Price = l2Price.replace(',','');
			l2Price = eval(l2Price.match(/\d+[.]?\d*/));
			if(l2Price == null)
				l2Price = null;
		}
		return l1Price - l2Price;
	}
	else if(l1.type.toUpperCase() == 'FS')
		if(sortOrder == 'asc')
			return 1;
		else
			return -1;
	else if(l2.type.toUpperCase() == 'FS')
		if(sortOrder == 'asc')
			return -1;
		else
			return 1;
	else if(l1.type.toUpperCase() == 'FL' && l2.type.toUpperCase() == 'FL')
		return sortByRent(l1,l2,sortOrder);
	return 0;
}

function sortByRent(l1, l2, sortOrder)
{
	var l1RateYr = null;
	var l1RateYr2 = null;
	var l2RateYr = null;
	var l2RateYr2 = null;

	if(l1.type == null)
		return 1;
	if(l2.type == null)
		return -1;

	if(l1.type.toUpperCase() == 'FL' && l2.type.toUpperCase() == 'FL')
	{
		if(l1.rateyr != null)
		{
			var l1RateYrStr = l1.rateyr;
			while(l1RateYrStr.match(','))
				l1RateYrStr = l1RateYrStr.replace(',','');
			l1RateYr = eval(l1RateYrStr.match(/\d+[.]?\d*/));
			if(l1RateYrStr.replace(l1RateYr+'','').match(/\d+[.]?\d*/))
				l1RateYr2 = eval(l1RateYrStr.replace(l1RateYr+'','').match(/\d+[.]?\d*/));
			//to account for undefined
			if(l1RateYr == null)
				l1RateYr = null;
			if(l1RateYr2 == null)
				l1RateYr2 = null;
		}
		if(l2.rateyr != null)
		{
			var l2RateYrStr = l2.rateyr;
			while(l2RateYrStr.match(','))
				l2RateYrStr = l2RateYrStr.replace(',','');
			l2RateYr = eval(l2RateYrStr.match(/\d+[.]?\d*/));
			if(l2RateYrStr.replace(l2RateYr+'','').match(/\d+[.]?\d*/))
				l2RateYr2 = eval(l2RateYrStr.replace(l2RateYr+'','').match(/\d+[.]?\d*/));
			if(l2RateYr == null)
				l2RateYr = null;
			if(l2RateYr2 == null)
				l2RateYr2 = null;
		}
		
		var diff = l1RateYr - l2RateYr;
		
		if ((diff == 0) && 
		    ((l1RateYr2 != null) || 
		    (l2RateYr2 != null)))
	    {
	        if ((l1RateYr2 != null) &&
		        (l2RateYr2 != null))
	        {
	            diff = l1RateYr2 - l2RateYr2;
	        }
	        else if (l1RateYr2 != null)
	        {
	            diff = l1RateYr2 - l2RateYr;
	        }
	        else if (l2RateYr2 != null)
	        {
	            diff = l1RateYr - l2RateYr2;
	        }
	    }
	    
		return diff;
	}
	else if(l1.type.toUpperCase() == 'FL')
		if(sortOrder == 'asc')
			return -1;
		else
			return 1;
	else if(l2.type.toUpperCase() == 'FL')
		if(sortOrder == 'asc')
			return 1;
		else
			return -1;
	else if(l1.type.toUpperCase() == 'FS' && l2.type.toUpperCase() == 'FS')
		return sortByPrice(l1,l2,sortOrder);
	return 0;
}

function sortBySizeTotalRentable(l1, l2, sortOrder)
{
	var l1Size = null;
	var l1Size2 = null;
	var l2Size = null;
	var l2Size2 = null;

	if(l1.type == null)
		return 1;
	if(l2.type == null)
		return -1;

	if(l1.type.toUpperCase() == 'FL' && l2.type.toUpperCase() == 'FL')
	{
		if(l1.spaceavail != null)
		{
			var l1SizeStr = l1.spaceavail;
			while(l1SizeStr.match(','))
				l1SizeStr = l1SizeStr.replace(',','');
			l1Size = eval(l1SizeStr.match(/\d+[.]?\d*/));
			if(l1SizeStr.replace(l1Size+'','').match(/\d+[.]?\d*/))
				l1Size2 = eval(l1SizeStr.replace(l1Size+'','').match(/\d+[.]?\d*/));
			//to account for undefined
			if(l1Size == null)
				l1Size = null;
			if(l1Size2 == null)
				l1Size2 = null;
		}
		
		if(l2.spaceavail != null)
		{
			var l2SizeStr = l2.spaceavail;
			while(l2SizeStr.match(','))
				l2SizeStr = l2SizeStr.replace(',','');
			l2Size = eval(l2SizeStr.match(/\d+[.]?\d*/));
			if(l2SizeStr.replace(l2Size+'','').match(/\d+[.]?\d*/))
				l2Size2 = eval(l2SizeStr.replace(l2Size+'','').match(/\d+[.]?\d*/));
			if(l2Size == null)
				l2Size = null;
			if(l2Size2 == null)
				l2Size2 = null;
		}
		
		var diff = 0;
		
		if (sortOrder == 'asc')
		{
		    diff = l1Size - l2Size;
		    
		    if ((diff == 0) &&
		        ((l1Size2 != null) ||
		        (l2Size2 != null)))
	        {
	            if ((l1Size2 != null) &&
		            (l2Size2 != null))
	            {
	                diff = l1Size2 - l2Size2;
	            }
	            else if (l1Size2 != null)
	            {
	                diff = l1Size2 - l2Size;
	            }
	            else if (l2Size2 != null)
	            {
	                diff = l1Size - l2Size2;
	            }
	        }
		}
		else if ((sortOrder == 'desc') &&
		    ((l1Size2 != null) ||
		    (l2Size2 != null)))
		{
		    if ((l1Size2 != null) &&
		        (l2Size2 != null))
	        {
	            diff = l1Size2 - l2Size2;
	        }
	        else if (l1Size2 != null)
	        {
	            diff = l1Size2 - l2Size;
	        }
	        else if (l2Size2 != null)
	        {
	            diff = l1Size - l2Size2;
	        }
		}
		else if ((sortOrder == 'desc') &&
		    (l1Size2 == null) &&
		    (l2Size2 == null))
	    {
	        diff = l1Size - l2Size;
	    }
		
		return diff;
	}
	else if(l1.type.toUpperCase() == 'FL')
		if(sortOrder == 'asc')
			return -1;
		else
			return 1;
	else if(l2.type.toUpperCase() == 'FL')
		if(sortOrder == 'asc')
			return 1;
		else
			return -1;
	else if(l1.type.toUpperCase() == 'FS' && l2.type.toUpperCase() == 'FS')
		return sortByBuildingSize(l1,l2,sortOrder);
	return 0;
}

function sortByBuildingSize(l1, l2, sortOrder)
{
	var l1Size = null;
	var l2Size = null;

	if(l1.type == null)
		return 1;
	if(l2.type == null)
		return -1;
	if(l1.type.toUpperCase() == 'FS' && l2.type.toUpperCase() == 'FS')
	{
		if(l1.sizetotal != null)
		{
			l1Size = l1.sizetotal;
			while(l1Size.match(','))
				l1Size = l1Size.replace(',','');
			l1Size = eval(l1Size.match(/\d+[.]?\d*/));
			//to account for undefined
			if(l1Size == null)
				l1Size = null;
		}
		if(l2.sizetotal != null)
		{
			l2Size = l2.sizetotal;
			while(l2Size.match(','))
				l2Size = l2Size.replace(',','');
			l2Size = eval(l2Size.match(/\d+[.]?\d*/));
			if(l2Size == null)
				l2Size = null;
		}
		return l1Size - l2Size;
	}
	else if(l1.type.toUpperCase() == 'FS')
		if(sortOrder == 'asc')
			return 1;
		else
			return -1;
	else if(l2.type.toUpperCase() == 'FS')
		if(sortOrder == 'asc')
			return -1;
		else
			return 1;
	else if(l1.type.toUpperCase() == 'FL' && l2.type.toUpperCase() == 'FL')
		return sortBySizeTotalRentable(l1,l2,sortOrder);
	return 0;
}

function sortByNumUnits(a, b)
{
	var x = null;
	var y = null;

	if (a.type.toUpperCase() == 'FS')
	{
		if (a.units)
			x = eval(a.units.match(/\d+[.]?\d*/));
	}
	else if (a.type.toUpperCase() == 'FL')
	{
		x = a.numunits;
	}

	if (b.type.toUpperCase() == 'FS')
	{
		if (b.units)
			y = eval(b.units.match(/\d+[.]?\d*/));
	}
	else if (b.type.toUpperCase() == 'FL')
	{
		y = b.numunits;
	}

	if(x==null)
		x=null;
	if(y==null)
		y=null;

	return x-y;
}

function sortByCapRate(a, b)
{
	var x;
	var y;

	if(a.cap == null)
		return -1;
	if(b.cap == null)
		return 1;
	x = eval(a.cap.match(/\d+[.]?\d*/));
	y = eval(b.cap.match(/\d+[.]?\d*/));

	if(x==null)
		x=null;
	if(y==null)
		y=null;

	return x-y;
}

function sortByParcelSize(a, b)
{
	var x = null;
	var y = null; 

	if (a.type == 'FS')
	{
		if(a.sizetotparcel)
			x = eval(a.sizetotparcel.match(/\d+[.]?\d*/));    
	}

	if (b.type == 'FS')
	{
		if(b.sizetotparcel)
			y = eval(b.sizetotparcel.match(/\d+[.]?\d*/));
	}

	if (x == null)
	{
		return -1;
	}

	if (y == null)
	{
		return 1;
	}        
	return x-y;
}