/* Autofusion JWS API v0.2.03 by Josh Lizarraga */
/* Copyright 2009 Autofusion.com */

/* AF Library */

if(typeof(YAHOO.AUTOFUSION) == "undefined"){
	YAHOO.namespace("AUTOFUSION");
}
if(typeof(YAHOO.AUTOFUSION.items) == "undefined"){
	YAHOO.AUTOFUSION.items = new Object();
}

/* MILAPI */

function JWSAPI(confID){
	this.JSON = new Object();
	this.asyncSuccess = function (pObj){
		if(pObj.responseText != ""){
			this.JSON = YAHOO.lang.JSON.parse(pObj.responseText);
		}
		if(typeof(pObj.argument["callback"]) != "undefined"){
			if(typeof(pObj.argument["args"]) != "undefined"){
				pObj.argument["callback"](pObj.argument["args"]);
			} else {
				pObj.argument["callback"]();
			}
		}
	};
	this.asyncFailure = function (pObj){
		//alert("Asynchronous connection failed.");
	};
	this.asyncJWS = function (pData, pCallback, pArgs){
		var oConfID = (confID) ? confID : "jws_api";
		try {
			var oJSON = YAHOO.lang.JSON.stringify(pData);
		}
		catch (e) {
			//alert("Failed to Stringify: Invalid JSON Object.");
		}
		var oCallback = {
			success:  this.asyncSuccess,
			failure: this.asyncFailure,
			scope: this,
			argument: new Object()
		};
		if(pCallback){
			oCallback.argument["callback"] = pCallback;
		}
		if(pArgs){
			oCallback.argument["args"] = pArgs;
		}
		var oParamString = "conf_id=" + oConfID + "&json=" + oJSON;
		var oRequest = YAHOO.util.Connect.asyncRequest("POST", "/AF2/JWS_Matchmaker.php", oCallback, oParamString);
	};
	this.setPref = function (pPref, pCallback, pArgs){
		this.asyncJWS({"action":"setPref","pref":pPref}, pCallback, pArgs);
	};
	this.getPref = function (pCallback, pArgs){
		this.asyncJWS({"action":"getPref"}, pCallback, pArgs);
	};
	this.setSinglePref = function (pPref, pValue, pCallback, pArgs){
		this.asyncJWS({"action":"setSinglePref","option":pPref,"value":pValue}, pCallback, pArgs);
	};
	this.setParam = function (pParam, pCallback, pArgs){
		this.asyncJWS({"action":"setParam","param":pParam}, pCallback, pArgs);
	};
	this.getParam = function (pCallback, pArgs){
		this.asyncJWS({"action":"getParam"}, pCallback, pArgs);
	};
	this.addSingleParam = function (pParam, pValue, pCallback, pArgs){
		this.asyncJWS({"action":"addSingleParam","filter":pParam,"value":pValue}, pCallback, pArgs);
	};
	this.delSingleParam = function (pParam, pValue, pCallback, pArgs){
		this.asyncJWS({"action":"delSingleParam","filter":pParam,"value":pValue}, pCallback, pArgs);
	};
	this.clearSingleParam = function (pParam, pCallback, pArgs){
		this.asyncJWS({"action":"clearSingleParam","filter":pParam}, pCallback, pArgs);
	};
	this.getFilter = function (pFilter, pCallback, pArgs){
		this.asyncJWS({"action":"getFilter","filter":pFilter}, pCallback, pArgs);
	};
	this.getMatchCount = function (pCallback, pArgs){
		this.asyncJWS({"action":"getMatchCount"}, pCallback, pArgs);
	};
	this.getMatch = function (pPage, pCallback, pArgs){
		this.asyncJWS({"action":"getMatch","page":pPage}, pCallback, pArgs);
	};
	this.getVehicle = function (pVIN, bInv, pCallback, pArgs){
		if(bInv == true){
			this.asyncJWS({"action":"getVehicle","vin":pVIN}, pCallback, pArgs);
		} else {
			this.asyncJWS({"action":"getVehicle","car_id":pVIN}, pCallback, pArgs);
		}
	};
	this.getSavelist = function (pCallback, pArgs){
		this.asyncJWS({"action":"getSavelist"}, pCallback, pArgs);
	};
	this.setSave = function (pName, pCallback, pArgs){
		this.asyncJWS({"action":"setSave","name":pName}, pCallback, pArgs);
	};
	this.getSave = function (pName, pCallback, pArgs){
		this.asyncJWS({"action":"getSave","name":pName}, pCallback, pArgs);
	};
	this.delSave = function (pName, pCallback, pArgs){
		this.asyncJWS({"action":"delSave","name":pName}, pCallback, pArgs);
	};
};