var searchDexPersonalizationService = function(personalizationService) {
	var self = {
		personalizationService : personalizationService
	};
	
	self.constants = {
		PERSONALIZATION_DATA_READY : "personalizationData:ready",
		SITES_VISITED_SEPARATOR : ",",
		SITE_ENTRY_POINT_INDEX : 0,
		ORIGIN_SEARCH_DEX: "searchDex",
		BUSINESS_UNIT_TO_BRAND : {
			1 : "GAP",
			2 : "BR",
			3 : "ON",
			4 : "BG",
			7 : "GAP_CA",
			8 : "BR_CA",
			9 : "ON_CA",
			10 : "AT",
			20 : "GAP_EU",
			21 : "BR_EU"
		}
	};

	self.callPersonalizationService = function(callback) {
		self.personalizationService.controller.init.main(self.constants.ORIGIN_SEARCH_DEX);
		Event.observe(document,
				self.constants.PERSONALIZATION_DATA_READY,
				callback);
	};
		
	self.getEntryPoint = function() {
		return getEntryPointFrom(self.personalizationService.model.personalizationData.personalizationInfoV1.userContext.clickStream.sitesVisited);
	};
	
	self.getReportingAccount = function (){
		return getUserContext().reportingAccount;
	};
	
	self.getCampaignTrackingId = function() {
		return getUserContext().campaignTrackingId;
	};
	
	var getUserContext = function() {
		return self.personalizationService.model.personalizationData.personalizationInfoV1.userContext;
	}

	var getEntryPointFrom = function(sitesVisited) {
		var entryPointCode = sitesVisited
			.split(self.constants.SITES_VISITED_SEPARATOR)[self.constants.SITE_ENTRY_POINT_INDEX];
		return self.constants.BUSINESS_UNIT_TO_BRAND[entryPointCode];
	};
	
	return self;
};

