// JavaScript Document

function initialize_media_poppers()
{
	var as = document.getElementsByTagName('a');
	var inner_spans = new Array();
	for(var asc=0; asc<as.length; asc++)
	{
		inner_spans = as[asc].getElementsByTagName('span');
		for(var sc=0; sc<inner_spans.length; sc++)
		{
			if(inner_spans[sc].className && inner_spans[sc].className == 'media_popper')
			{
				as[asc].popper = inner_spans[sc];
				if(as[asc].popper_interior) as[asc].popper_interior.popper = as[asc].popper;
				as[asc].onmouseover = media_popper_over;
				as[asc].onmouseout = media_popper_out;
				//as[asc].style.border = 'solid 1px #000000';
			}//end of if
			else if(inner_spans[sc].className && inner_spans[sc].className == 'interior')
			{
				as[asc].popper_interior = inner_spans[sc];
				if(as[asc].popper) as[asc].popper_interior.popper = as[asc].popper;
				as[asc].popper_interior.onmouseover = media_popper_interior_over;
				as[asc].popper_interior.onmouseout = media_popper_interior_out;
				as[asc].popper_interior.is_over = false;
				//as[asc].style.border = 'solid 1px #000000';
			}//end of if
		}//end of inner for
	}//end of for
}//end of initialize_media_poppers

function media_popper_over()
{
	var mpvd = mp_viewport_dimensions();
	var max_left = mpvd[2];
	var max_top = mpvd[3];
	var max_right = max_left+mpvd[0]-25;
	var max_bottom = max_top+mpvd[1]-25;
	var popper_width = 300;
	var popper_height = 300;
	var parent_el = this;
	var parent_width = 144; //parent_el.offsetWidth;
	var parent_height = 200; //parent_el.offsetHeight;
	var px = 0;
	var py = 0;
	var ppx = 0;
	var ppy = -50;
	var centered_offset = -80;
	var x_offset = 10;
	var y_offset = 10;
	var hip = null;
	var hippel = null;
	if(this.popper_interior && !this.popper_interior.is_over)
	{
		while(parent_el)
		{
			if(parent_el.offsetLeft) px += parent_el.offsetLeft;
			if(parent_el.offsetTop) py += parent_el.offsetTop;
			parent_el = parent_el.offsetParent;
		}
		if((px+parent_width+popper_width+x_offset) < (max_right))
		{
			ppx = parent_width+x_offset;
		}
		else {
			ppx = ((popper_width*-1)-x_offset);
		}
		if(((ppy+py+popper_height) > max_bottom) || ((ppy+py) < max_top))
		{
			//the popup can't go to the left or right; there's not room above or below for the standard offset
			if((py-popper_height-y_offset) < max_top)
			{
				//better put it under
				ppx = centered_offset;
				ppy = parent_height + y_offset;
			}
			else {
				//up we go
				ppx = centered_offset;
				ppy = (popper_height * -1) - y_offset;
			}
		}
		//we have it in the right quadrant, but should do a bit of twitchy to make sure scrollers don't get invoked
		if((px+ppx+popper_width) > max_right)
		{
			ppx = max_right - popper_width - px;	
		}
		if((py+ppy+popper_height) > max_bottom)
		{
			ppy = max_bottom - popper_height - py;	
		}
		if((px+ppx) < max_left)
		{
			ppx = max_left-px;	
		}
		if((py+ppy) < max_top)
		{
			ppy = max_top - py;	
		}
		this.popper.style.top = (py+ppy)+'px';
		this.popper.style.left = (px+ppx)+'px';
		this.popper.style.display = 'block';
		this.popper.style.zIndex = 200;
		if(document.getElementById('hidden_popper_link') && document.getElementById('hidden_popper'))
		{
			hip = document.getElementById('hidden_popper');
			hippel = document.getElementById('hidden_popper_link');
			hippel.href = this.href;
			hippel.style.top = (py+ppy)+'px';
			hippel.style.left = (px+ppx)+'px';
			hip.innerHTML = this.popper.innerHTML;
			hippel.style.position = 'absolute';
			hip.style.position = 'relative';
			hippel.style.display = 'block';
			hippel.style.overflow = 'visible';
			hip.style.display = 'block';
			hippel.style.zIndex = 200;
		}
	}
}//end of media_popper_over

function media_popper_out()
{
	this.popper.style.display = 'none';	
	if(document.getElementById('hidden_popper_link'))
	{
		document.getElementById('hidden_popper_link').style.display = 'none';
	}
	//alert(this.popper);
}

function media_popper_interior_over()
{
	this.is_over = true;	
}

function media_popper_interior_out()
{
	this.is_over = false;	
}

//helpful code from http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/
// merged with helpful code from http://www.javascriptkit.com/javatutors/static2.shtml
function mp_viewport_dimensions()
{
	var viewportwidth;
 	var viewportheight;
	var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
	var dsocleft=document.all? iebody.scrollLeft : pageXOffset;
	var dsoctop=document.all? iebody.scrollTop : pageYOffset;
	var dim = new Array();
 	// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
 	if (typeof window.innerWidth != 'undefined')
 	{
		viewportwidth = window.innerWidth,
      	viewportheight = window.innerHeight
 	}
 	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	else if (typeof document.documentElement != 'undefined'
    	 && typeof document.documentElement.clientWidth !=
    	 'undefined' && document.documentElement.clientWidth != 0)
 	{
    	viewportwidth = document.documentElement.clientWidth,
       	viewportheight = document.documentElement.clientHeight
 	}
	// older versions of IE
	else
	{
      	viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
       	viewportheight = document.getElementsByTagName('body')[0].clientHeight
 	}
	dim[0] = viewportwidth;
	dim[1] = viewportheight;
	dim[2] = dsocleft;
	dim[3] = dsoctop;
	return dim;
}

