
if(!argos) var argos = {};
if(!argos.marketing) argos.marketing  = {};

//argos.marketing.ESpotLoader = {};

argos.marketing.ESpotLoader = {

	context : { espotname: "",  preProcessESpotLoadData: function(data){}, postProcessESpotLoadData: function(){}, onsuccess: function(){}, onfail: function(){}, inputContext: {} },

	init: function(inputcontext){		
		var argmkespotldr= argos.marketing.ESpotLoader;
		if(inputcontext.espotname!=null)argmkespotldr.context.espotname=inputcontext.espotname;		
		if(inputcontext.preProcessESpotLoadData!=null)argmkespotldr.context.preProcessESpotLoadData=inputcontext.preProcessESpotLoadData;
		if(inputcontext.postProcessESpotLoadData!=null)argmkespotldr.context.postProcessESpotLoadData=inputcontext.postProcessESpotLoadData;
		if(inputcontext.onsuccess!=null)argmkespotldr.context.onsuccess=inputcontext.onsuccess;
		if(inputcontext.onfail!=null)argmkespotldr.context.onfail=inputcontext.onfail;
		argmkespotldr.context.inputContext[inputcontext.espotname] = inputcontext;
		
		if(argmkespotldr.context.espotname==null){
			alert("espotname is empty in inputcontext");
			return false;
		}
		
		return true;
		
	},
	
	load: function(inputcontext){
		var argmkespotldr = argos.marketing.ESpotLoader;	
		if(!argmkespotldr.init(inputcontext))	return false;
		var data = "storeId="+homebase.generic.constants.storeId+"&langId="+homebase.generic.constants.langId;
		data += "&emsName="+argmkespotldr.context.espotname; 
		argos.marketing.ESpotLoader.context.preProcessESpotLoadData(data);
		var ajax = $.ajax({
			url: window.location.protocol+"//" + window.location.host + "/webapp/wcs/stores/servlet/GenericEMarketingSpot",
			dataType: "json",
			type: "post",
			data: data,
			timeout: 5000,
			success: function(json){
				argmkespotldr.handleSuccess(json)
			},
			error: function(request,status,errorThrown) {				
				if(request && request.requestId !=null ){
					argmkespotldr.handleFail(request.requestId.emsName);
				}else{
					argmkespotldr.handleFail(null);
				}
			}
			
		});		
		
		//IE doesnot return a valid request object
		if(ajax && ajax.length != null){
			ajax.requestId = { emsName : argmkespotldr.context.espotname };							
		}
		argmkespotldr.context.postProcessESpotLoadData(argmkespotldr.context.inputContext[argmkespotldr.context.espotname], null);
	},
	
	handleSuccess: function(json){
		argos.marketing.ESpotLoader.context.onsuccess(argos.marketing.ESpotLoader.context.inputContext[json.emsName], json);
		argos.marketing.ESpotLoader.context.postProcessESpotLoadData(argos.marketing.ESpotLoader.context.inputContext[json.emsName], json);
		
	},
	
	handleFail: function(emsName){	
		if(emsName!=null){
			argos.marketing.ESpotLoader.context.onfail(argos.marketing.ESpotLoader.context.inputContext[emsName]);
			argos.marketing.ESpotLoader.context.postProcessESpotLoadData(argos.marketing.ESpotLoader.context.inputContext[emsName], null);
		}
	}
	
};

