/**
 * @author karlstanley
 */
YAHOO.namespace('syzygy');

YAHOO.syzygy.mapPoint = function(div, overview){
	var calloutArea = null;
	var calloutClass = "";
	var calloutContent = null;		
	var viewport;
	
	var init = function(){
		calloutArea = document.getElementById("calloutArea");
		calloutContent = new YAHOO.syzygy.asyncArtistInfo('calloutArea', '/ldh/async/craftTrailCallout.php');	
		viewport = YAHOO.util.Dom.getRegion(calloutArea.parentNode);
		
		viewport.width = viewport.right - viewport.left;
		viewport.height = viewport.bottom - viewport.top;

		var locationId = div.id.replace('mp', '') - 0;
		if (YAHOO.util.Dom.hasClass(div, 'artist')){
			calloutClass = 'artist';
		} else if (YAHOO.util.Dom.hasClass(div, 'town')){
			calloutClass = 'town';
		} else if (YAHOO.util.Dom.hasClass(div, 'historical')){
			calloutClass = 'town';			
		} else if (YAHOO.util.Dom.hasClass(div, 'lake')){
			calloutClass = 'town';			
		}
		
		YAHOO.util.Event.on(div, "mouseover", showCallout, locationId);
		YAHOO.util.Event.on(div, "mouseout", hideCallout);
		if ('artist' == calloutClass && "undefined" != typeof(overview) && null != overview){
			YAHOO.util.Event.on(div, "click", loadOverview, locationId);
		}
	}
	
	var showCallout = function(e, obj){
		YAHOO.util.Dom.addClass(calloutArea, calloutClass);
		calloutArea.innerHTML = "<p>... loading ...</p>";	
		calloutContent.load(obj);
		
		target = YAHOO.syzygy.util.getTarget(e);
		
		var top = YAHOO.util.Dom.getStyle(target, 'top').replace('px', '') - 0;
		var left = YAHOO.util.Dom.getStyle(target, 'left').replace('px', '') - 0;
		
		// artist callout areas are a fixed size. town/historical callout
		// areas are bigger and not a fixed size, so we need to make sure
		// they don't overlap the map point
		if ('artist' == calloutClass){
			top = (top < viewport.height / 2) ? top + 24 : top - 110;
			left -= 90; 
		} else {
			top = (top < viewport.height / 2) ? top -32 : top - 192;
			// some hackery here to prevent text boxes disappearing off the
			// edge of the screen
			left = (left < viewport.width - 250) ? left + 16 : left - 350;
		}
		YAHOO.util.Dom.setStyle(calloutArea, "left", left + 'px');
		YAHOO.util.Dom.setStyle(calloutArea, "top", top + 'px');
		
		YAHOO.util.Dom.removeClass(calloutArea, "hidden");
	}
	
	var hideCallout = function(e, obj){
		YAHOO.util.Dom.addClass(calloutArea, "hidden");
		YAHOO.util.Dom.removeClass(calloutArea, calloutClass);
	}
	
	var loadOverview = function(e, obj){
		overview.load(obj);
	}
	
	init();
}
