function callout(content_id, content_url, height, opener) {

	var zindex = 100;
	var width = 514;

	var body_pos = this.getCoordinates();
	var opener_coords = opener.getCoordinates();

	if((opener_coords.left + width) > body_pos.right) {
		var callout_left = ((opener_coords.left)-width) + 'px';
	}
	else {
		var callout_left = (opener_coords.left) + 'px';
	}
	var callout_top = opener_coords.top;



	// Create callout divs
	calloutButtons = new Element('div', {'id':'callout-buttons'});
	calloutButtons.set('html', '<a href="javascript:void(0)" onclick="close_callout()">Close <img src="/assets/images/callout/modal_close.png" /></a>');

	if(height) {
		calloutMessage = new Element('div', {'id':'callout-message','styles':{'overflow':'auto','height':height}});
	}
	else {
		calloutMessage = new Element('div', {'id':'callout-message'});
	}
	calloutContent = new Element('div', {'id':'callout-content'}).adopt(calloutButtons).adopt(calloutMessage);
	calloutInnerbox = new Element('div', {'id':'callout-innerbox'}).adopt(calloutContent);

	calloutBox = new Element('div', {
		'id':'callout-box',
		'styles': {
			'display':'block',
			'z-index':zindex,
			'position':'absolute',
			'top':callout_top,
			'left':callout_left,
			'width':width+'px'
		}
	}).adopt(calloutInnerbox);

	// Load content
	if(content_id) {
		calloutMessage.innerHTML += $(content_id).innerHTML;
	}
	else if(content_url) {
		var request = new Request({	method: 'get',
									url: content_url,
									onSuccess: function(txt, xml) {
										calloutMessage.innerHTML += txt;
									}});
		request.send();
	}

	// Load to document
	document.body.appendChild(calloutBox);
}

function close_callout() {
	if($('callout-box')) {
		$('callout-box').dispose();
	}
}

function callout_findposition (obj) {
	
	var curleft = curtop = 0;
	if (obj.offsetParent) {	
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;	
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function callout_speech(message, opener) {
	
	// Settings
	var oContainer 	= document.id(opener);
	var oImage 		= oContainer.getFirst('img'); 
	var oPosition	= callout_findposition(oImage);
	
	// Create Callout Box
	var settings_zindex = 100;
	var settings_width 	= 230;
	var settings_top 	= oPosition[1];
	var settings_left 	= oPosition[0] + 15;
	
	var oConnector = new Element('div', {'id':'callout-speech-connector'});
	var oMessage = new Element('div', {'id':'callout-speech-message'});
	var oContent = new Element('div', {'id':'callout-speech-content'}).adopt(oMessage);
	var oInnerbox = new Element('div', {'id':'callout-speech-innerbox'}).adopt(oContent);
	
	var oBox = new Element('div', {'id':'callout-speech-box',
									'styles': {
												'display': 		'block',
												'z-index': 		settings_zindex,
												'position': 	'absolute',
												'top': 			settings_top + 'px',
												'left':			settings_left + 'px',
												'width': 		settings_width + 'px'
												}
							}).adopt(oConnector).adopt(oInnerbox);
	
	// Load content
	oMessage.innerHTML += message;
	
	// Load to document
	document.body.appendChild(oBox);	
	
	// Reposition Box
	var box_height = oBox.getCoordinates().height;
	
	if (box_height > 50) {
		settings_top += 50 - box_height;
		oBox.style.top = settings_top + 'px';
	}
}

function callout_speech_wide(message, opener) {

	var leftPos = 20;
	var width = 400;
	var topPos = 280;
	var zindex = 100;

	var body_pos = this.getCoordinates();
	var opener_coords = opener.getCoordinates();
	
	if((opener_coords.left + width) > body_pos.right) {
		var callout_left = ((opener_coords.left)-width) + 'px';
	}
	else {
		var callout_left = (opener_coords.left + leftPos) + 'px';
	}
	var callout_top = opener_coords.top - topPos;

	// Create callout divs
	calloutConnector = new Element('div', {'id':'callout-speech-wide-connector'});
	calloutMessage = new Element('div', {'id':'callout-speech-wide-message'});
	calloutContent = new Element('div', {'id':'callout-speech-wide-content'}).adopt(calloutMessage);
	calloutInnerbox = new Element('div', {'id':'callout-speech-wide-innerbox'}).adopt(calloutContent);

	calloutBox = new Element('div', {
		'id':'callout-speech-wide-box',
		'styles': {
			'display':'block',
			'z-index':zindex,
			'position':'absolute',
			'top':callout_top,
			'left':callout_left,
			'width':width+'px'
		}
	}).adopt(calloutConnector).adopt(calloutInnerbox);

	// Load content
	calloutMessage.innerHTML += message;

	// Load to document
	document.body.appendChild(calloutBox);
}

function close_callout_speech_wide() {
	if($('callout-speech-wide-box')) {
		$('callout-speech-wide-box').dispose();
	}
}

function close_callout_speech() {
	if($('callout-speech-box')) {
		$('callout-speech-box').dispose();
	}
}

