/**
 * SvcClass
 *
 *     Handle simple calls 
 *
 * @author    <ben.borowski@bkwld.com>
 * @version   1.0.0
 */
var SvcClass = new Class({
	
	/**
	 * basic XMLHTTPRequest handler
	 * @param object params       -- var:val pairs to send
	 * @param function OnComplete -- func to call when success
	 * @param string|Element      -- element to update on success
	 * @return Request
	 */
	_doRequest : function(params, onComplete, update)
	{
		onComplete = onComplete || null;
		update = update || null;
		this.request = new Request({
			data : params,
			method : this.method,
			onSuccess : function(responseText, responseXML)
			{
				if (update != null)
				{
					$(update).innerHTML = responseText;
				}
				
				if (onComplete != null)
				{
					onComplete.call(this, responseText, responseXML);
				}
			},
			onRequest : function() 
			{
			},
			url : this.url
		});
		this.request.send(params);
		return this.request;
	},
	
	/**
	 * constructor function
	 * @return void
	 */
	initialize : function() 
	{
	},
	
	/**
	 * public search method
	 * @param object params  -- var:val pairs to send
	 * @param string|Element -- element to update on success
	 */
	search : function(url, params, onComplete, update)
	{
		if (url != null)
		{
			this.url = url;
		}
		this._doRequest(params, onComplete, update);
	}
	
});


/**
 * DealerSvcClass
 *
 *     Handle simple calls to the dealer search
 *
 * @author    <ben.borowski@bkwld.com>
 * @version   1.0.0
 */
var DealerSvcClass = new Class({
	
	/**
	 * constants
	 */
	CONTINENTS : '/dealer-locator/continent',
	COUNTRIES  : '/dealer-locator/country',
	REGIONS    : '/dealer-locator/region',
	RESULTS    : '/dealer-locator/results',
	ZIPCODE    : '/dealer-locator/zipcode',
	
	/**
	 * extend base service
	 */
	Extends : SvcClass,
	
	/**
	 * constructor function
	 * @return void
	 */
	initialize : function() 
	{
		this.parent();
		this.method = 'post';
		this.url = this.CONTINENTS;
	}
	
});
	
