
/*
JC 1/19/11
requires jQuery to function properly, must be called after $(document).ready executes

EW Userid password
jcegnar
jcegnar
jcegnar@secondthought.com
*/



function DataRetriever(){}
/*
@path http path to remote service
@responseType should be either json or xml (XML has not yet been implemented, JC 1/19/11)
@parameters request object containing URL parameters
@filter An object that adheres to the IDataRetrieverFilter 'interface' below, and will parse and return your data
@successFunc success callback function that should take an object (data) as its first argument
@errorFunc error callback function that will take an object of type DataRetrieverError as its first arugment
*/
DataRetriever.FetchData = function(path, parameters, responseType, filter, successFunc, errorFunc, params){

	//try{console.log("fetch data called")}catch(e){}
	
	if (filter.TypeToString != IDataRetrieverFilter.prototype.TypeToString)
	{	
		errorFunc(new Error("DataRetreiver: ERROR: You must pass an object of type IDataRetrieverFilter to FetchData()"));
		return;
	}
	
	var queryString = "";
	if (parameters)
	{
		for (var x in parameters)
		{
			(queryString == "")?queryString+="?":queryString+="&";
			queryString+=x;
			queryString+="=";
			queryString+=parameters[x];
		}
	}
	
	
	$.ajax({
		  url: path+queryString,
		  type: 'GET',
		  dataType: responseType,
		  success: function(data, textStatus, XMLHttpRequest){
						
						
					try{filter.parseData(data)}catch(e)
					{	
						errorFunc(e, params);				
						return;						
					}
					successFunc(filter.getData(),params);	
					
			},
		  error: function(XMLHttpRequest, textStatus, errorThrown){
			
				errorFunc(errorThrown, params);
			}
		});
	

} 


//filter 'interface'
IDataRetrieverFilter.prototype.TypeToString = "IDataRetrieverFilter";
function IDataRetrieverFilter()
{
	
	
	this.getData = function()
	{
		throw("getData() must be overridden in IDataRetrieverFilter");
	}
	
	
	this.parseData = function()
	{
		throw("parseData() must be overridden in IDataRetrieverFilter");
	}	
}


