/***************************************************************
Sirius Contest Popups v2.0
by John Amick
© Sirius XM Satellite Radio 2008
PURPOSE: For unobtrusive displaying of text pop-ups.
***************************************************************/

// attach events to elements of specific css classes
if (window.addEventListener)
{	
	window.addEventListener("load", attachPopups, false);
}
else if (window.attachEvent) 
{
	window.attachEvent("onload", attachPopups);
}
else window.onload = attachPopups;

// this array holds classes that will handle click events to show popups
// format: [position]-[text type]
var popupClasses = ['bottom-rules', 'top-rules', 'bottom-privacy', 'top-privacy'];

// this array holds classes that will handle click events to close popups
var closeClasses = ['popup-close'];

function attachPopups()
{	
	plen = popupClasses.length;
	for (var c=0; c<plen; c++)
	{
		var bRules = getElementsByClass(popupClasses[c]);
		var brlen=bRules.length;
		for(var i=0; i<brlen; i++)
		{
			var o = bRules[i];
			
			if (o.addEventListener)
			{	
				o.addEventListener("click", function(e){showSiriusPopup(e);}, false);
			}
			else if (o.attachEvent) 
			{
				o.attachEvent("onclick", function(e){showSiriusPopup(e);});
			}
			else o.onclick = function(e){showSiriusPopup(e);};
		}	
	}

	clen = closeClasses.length;
	for (var c=0; c<clen; c++)
	{
		var bRules = getElementsByClass(closeClasses[c]);
		var brlen=bRules.length;
		for(var i=0; i<brlen; i++)
		{
			var o = bRules[i];
			
			if (o.addEventListener)
			{	
				o.addEventListener("click", function(){hidePopups();}, false);
			}
			else if (o.attachEvent) 
			{
				o.attachEvent("onclick", function(){hidePopups();});
			}
			else o.onclick = function(){hidePopups();};
		}	
	}
}


function showSiriusPopup(e)
{
	// get the class of the target
	var trgt = e.target || e.srcElement;
	var tail = trgt.className;
	
	// determine if top or bottom
	var topbottom;	
	
	var pattern; 
	pattern = new RegExp("^top");
	if (pattern.test(tail))
	{
		topbottom = 'top';
	}
	else
	{
		topbottom = 'bottom';
	}

	// parse class to get type of text
	var temparr = tail.split("-");	
	var texttype = temparr[1];

	var t=document.getElementById(topbottom + '-popup-container-table');
		
	var el=document.getElementById('text-' + texttype);

	var clicked = texttype + topbottom;

	hidePopups();
	
	if(typeof HideSelects == 'function') HideSelects();  // for IE bug
	
	// append text p to div
	document.getElementById(topbottom + '-contest-popup').appendChild(el);
	el.style.display = 'block';
	el.style.visibility = 'visible';

	// offsets
	var offsettop;
	var offsetleft;
	if(topbottom == 'top')
	{
		offsettop = 10;
		offsetleft = -80;
	}
	else
	{
		offsettop = -527;
		offsetleft = -321;
	}
	
	e = e || window.event;

	// get mouse coordinates
	var x, y;
	if (window.event) {
		x = e.clientX + document.documentElement.scrollLeft
								 + document.body.scrollLeft;
		y = e.clientY + document.documentElement.scrollTop +
								 + document.body.scrollTop;
	}
	else {
		x = e.clientX + window.scrollX;
		y = e.clientY + window.scrollY;
	}
	var calcleftpos = x + offsetleft; 
	var calctoppos = y + offsettop;
	leftpos = calcleftpos > 0 ? calcleftpos : 0;
	toppos = calctoppos > 0 ? calctoppos : 0;

	// make visible
	t.style.display = 'block';
	t.style.top=toppos + 'px'; 
	t.style.left=leftpos + 'px';
			
}

function hidePopups()
{
	// hide popups
	var len;
	var p;
	var popups = getElementsByClass('popup-container-table');
	len=popups.length;
	for(var i=0; i<len; i++)
	{		
		p = popups[i];
		p.style.display = 'none';
		p.style.left="-500px";
		p.style.top="-800px";
	}
	// reset text paragraphs to orig. container
	var paras = getElementsByClass('popuptext');
	len=paras.length;
	for(var i=0; i<len; i++)
	{
		p = paras[i];
		p.style.display = 'none';
		p.style.visibility = 'hidden';
		document.getElementById('textholder').appendChild(p);
	}
	if(typeof ShowSelects == 'function') ShowSelects(); // for IE bug

}


function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if (pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
