function homePopup(options){
	
	//Optional options object 	
	this.Options = {
		'triggerBlock': 'homeMakesBlock',
		'targetBlock': 'homeMakePopup'
	};
	
	//assign Options with custom or default values 
	if ( options != null ) {
		for( var index in this.Options ) {
			this.Options[index] = (typeof options[index] != "undefined") ? options[index] : this.Options[index];
		}
	}
	
	//initial popup vars
	var homeMakeBlock = $(this.Options.triggerBlock);	
	var homeMakePopup = $(this.Options.targetBlock);
	
	//create an array of all makes 'triggers'. These dictate what popup
	//information will be displayed and where the popup will be positioned
	var choiceArray = homeMakeBlock.firstDescendant().childElements();
	
	//boolean for a positioning bug
	var firstHit = true;
	
	//timeout for popup
	var popupTO;
	
	//constant for global 'this'
	var uberThis = this;
	
	
	//init the application
	this.init = function(){
		
		//add mouse events to the choiceArray 
		choiceArray.each(function(n,i)
		{
			choiceArray[i].observe("mouseover", function()
			{
				//make the choice array positionable
				choiceArray[i].makePositioned();
				//get the left offset of the current make for positioning the popup
				var currLeft = choiceArray[i].positionedOffset().left;
				var currWidth = choiceArray[i].getWidth();
				var popupWidth = homeMakePopup.getWidth();
				
				var isLeft = (i+1) / choiceArray.length < .5 ? true: false;
				
				//positioning bug. popup is positioned uniquely the first time it's triggered
				if(firstHit && isLeft)
				{
					var leftOffset = currLeft;
					firstHit = false;	
				}				
				else if(firstHit && !isLeft)
				{
					var leftOffset = (currLeft - popupWidth) - 126;
					firstHit = false;	
				}				
				else
				{
					var leftOffset = (i+1) / choiceArray.length < .5 ? currLeft : (currLeft - popupWidth) + currWidth;
					firstHit = false;
				}
								
				//determine whether to display the left or right popup image via css
				var backgroundClass = isLeft ? 'homeMakePopup' : 'homeMakePopup right';
				
				//show the popup
				homeMakePopup.style.display = "";
				//position the popup
				homeMakePopup.style.left = leftOffset + 'px';
				homeMakePopup.className = backgroundClass;
				
				//determine the current make information to display
				uberThis.getInnerMake(this.id);
				
				//clear the timeout to hide the popup
				clearTimeout(popupTO);
			});
			
			//on mouseout trigger the event to hide the popup
			choiceArray[i].observe("mouseout", function()
			{
				uberThis.triggerHidePopup();	
			});			
		});	
		
		//clear the timeout for the popup when a mouseover event occurs
		homeMakePopup.observe("mouseover", function()
		{
			uberThis.clearPUTimeout();
		});
		
		//reset the timeout for the popup when a mouseout event occurs
		homeMakePopup.observe("mouseout", function()
		{
			uberThis.triggerHidePopup();	
		});
		
		//get the current make to display the correct make information
		this.getInnerMake = function (currentMake)
		{
			choiceArray.each(function(n,i)
			{
				var updatedMake = choiceArray[i].id.sub('hmb','hmp',1);
				var showHide = choiceArray[i].id == currentMake ? "" : "none";					
				$(updatedMake).style.display = showHide;
			});
		}
		
		//set a timeout for hiding the popup
		this.triggerHidePopup = function()
		{
			popupTO = setTimeout(uberThis.hidePopup, 500);
		}
		
		//actually hide the popup
		this.hidePopup = function()
		{
			homeMakePopup.style.display = "none";
		}
		
		//clear the timeout for the popup
		this.clearPUTimeout = function()
		{
			clearTimeout(popupTO);
		}
		
	}
}



