﻿// ----------------------------------------------
// File:		AdvancedSearchMenuService.js
// Author:		Nathan Derksen
// Description:	A class that holds the available service methods, along with response handlers.
// Example:
// AdvancedSearchMenuService.getInstance().getSearchDropdownValues();
// ----------------------------------------------


// ----------------------------------------------
// Function:	AdvancedSearchMenuService
// Author:		Nathan Derksen
// Description:	Base class
// Inputs:		<none>
// Returns:		<nothing>
// ----------------------------------------------
function AdvancedSearchMenuService()
{
}

var advancedSearchMenuService_menuLoaded = false;

// ----------------------------------------------
// Function:	SearchValidationService.isSearchEmpty
// Author:		Nathan Derksen
// Description:	Calls the service to find if the given search is an empty search or not
// Inputs:		<Object> searchCriteria - An object of properties to search on
//				<Number> startIndex - The zero-based index of which row to start at in the total results
//				<Number> maxResults - The maximum number of results to return
// Returns:		<nothing>
// ----------------------------------------------
AdvancedSearchMenuService.prototype.getSearchDropdownValues = function()
{
	try
	{
		if (advancedSearchMenuService_menuLoaded == false)
		{
			PageMethods.GetAdvacedSearchFilters(this.onResult, this.onError);
		}
	}
	catch (err)
	{
		Debug.error(err);
	}
};

// ----------------------------------------------
// Function:	SearchValidationService.onResult
// Author:		Nathan Derksen
// Description:	Callback from the successful completion of the service call
// Inputs:		<XMLElement> result - Handle to the results xml object
// Returns:		<nothing>
// ----------------------------------------------
AdvancedSearchMenuService.prototype.onResult = function(result)
{
	try
	{
		if (result)
		{
			var resultElements = result.documentElement;
			var menuData = CategoriesFactory.convertXMLToObjects(resultElements);
			
			advancedSearchMenuService_menuLoaded = true;
			generateEvent("onAdvancedSearchDataLoaded", menuData);
		}
		else
		{
			var error = new Object();
			error.name = "Service 'AdvancedMenuService' returned with no results";
			error.message = error.name;
			error.fileName = "AdvancedSearchMenuService.js";
			error.lineNumber = "";
			
			Debug.error(error);
		}
	}
	catch (err)
	{
		Debug.error(err);
	}
};

// ----------------------------------------------
// Function:	AdvancedSearchMenuService.onError
// Author:		Nathan Derksen
// Description:	Callback from the unsuccessful completion of the service call
// Inputs:		<XMLElement> result - Handle to the results xml object
// Returns:		<nothing>
// ----------------------------------------------
AdvancedSearchMenuService.prototype.onError = function(result)
{
	var error = new Object();
	error.name = "Service 'AdvancedMenuService' returned with an error";
	error.message = result.get_message();
	error.fileName = "AdvancedSearchMenuService.js";
	error.lineNumber = "";
	
	Debug.error(error);
};
