//IE SNIFFER
var browserPlat = navigator.platform; 
var browserName = navigator.appName; 
var browserAgt = navigator.userAgent.toLowerCase(); 
var isIEUnsup = browserPlat == "Win32" && ((browserAgt.indexOf('msie 4.0')!=-1) || (browserAgt.indexOf('msie 5.0')!=-1) || (browserAgt.indexOf('msie 5.5')!=-1)); 
var isIE6Win = browserPlat == "Win32" && ((browserAgt.indexOf('msie 5.5')!=-1) || (browserAgt.indexOf('msie 6.0')!=-1)); 
var isIEMac = browserPlat == "MacPPC" && browserName == "Microsoft Internet Explorer"; 


//DOM CHECK
if (!document.getElementById || isIEUnsup || isIEMac) {
	alert('SORRY: To view this content properly you must be using at minimum\rIE 6.0, Netscape 6.0/Mozilla/Firefox, or Safari/KHTML');
}


//PRELOAD ACTIVE IMAGES (height, width)
nav1On = new Image(24, 134); nav1On.src = "/media/xrn_nav_1_on.png"; 
nav2On = new Image(24, 134); nav2On.src = "/media/xrn_nav_2_on.png"; 
nav3On = new Image(24, 134); nav3On.src = "/media/xrn_nav_3_on.png"; 
nav4On = new Image(24, 134); nav4On.src = "/media/xrn_nav_4_on.png"; 
scrollUpOver = new Image(8, 15); scrollUpOver.src = "/media/xrn_scroll_up_over.gif"; 
scrollDownOver = new Image(8, 15); scrollDownOver.src = "/media/xrn_scroll_down_over.gif"; 


//GET ELEMENTS BY CLASS
function getElementsByClass(node,searchClass,tag) {
	var classElements = new Array(); 
	var els = node.getElementsByTagName(tag); // use "*" for all elements
	var elsLen = els.length; 
	var pattern = new RegExp("\\b"+searchClass+"\\b"); 
	
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i]; 
			j++; 
		}
	}
return classElements; 
}


//SET PNG TRANSPARENCIES FOR IE 5.5-6.0
function setTrans() {

	//main shadow
	var objMainBody = document.getElementById('mainBlock'); 

	if (isIE6Win) {
		objMainBody.style.background = "none"; 
		objMainBody.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/media/xrn_back_shadow.png',sizingMethod='scale')"; 
	}
	
	else {
		objMainBody.style.backgroundImage = "url(/media/xrn_back_shadow.png)"; 
	}
	
	//standard images
	var transArray = new Array(); 
	transArray[0] = "logo"; 
	transArray[1] = "back_nav"; 
	transArray[2] = "back_bubble"; 
	transArray[3] = "back_news"; 
	transArray[4] = "hed_triton"; 
	transArray[5] = "hed_companies"; 
	transArray[6] = "art_candler"; 
	transArray[7] = "nav_1_off"; 
	transArray[8] = "nav_2_off"; 
	transArray[9] = "nav_3_off"; 
	transArray[10] = "nav_4_off"; 
	transArray[11] = "hed_2005"; 
	transArray[12] = "hed_2006"; 
	transArray[13] = "hed_2007"; 
	transArray[14] = "hed_2008"; 
	transArray[15] = "hed_2009"; 
	transArray[16] = "hed_2010"; 

	for (var i = 0; i < transArray.length; i++) { 
		
		var objPng = transArray[i]; 
	
		if (isIE6Win) { 
			var objID = document.getElementById(objPng+'PNG'); 
			
			if (objID) {
				objID.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'/media/xrn_'+objPng+'.png\',sizingMethod=\'scale\')'; 
			}
			
		}
		
		else {
			var objID = document.getElementById(objPng); 
			
			if (objID) {
				objID.style.visibility = "visible"; 
			}
		}
		
	}
	
	//section bars in content3
	var prLinks = getElementsByClass(document.getElementById("content3"),'prLink','p'); 
	
	for (var i = 0; i < prLinks.length; i++) {
	
		if (isIE6Win) {
			prLinks[i].style.width = "415px"; //IE needs dimension set in order to apply filter
			prLinks[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/media/xrn_back_section.png',sizingMethod='scale')"; 
		}
		
		else {
			prLinks[i].style.backgroundImage = "url(/media/xrn_back_section.png)"; 
		}
	}
}


//PNG NAV MOUSEOVERS
function navOver(num,toggle) {
	var objNavPNG = document.getElementById('nav_'+num+'_offPNG'); 
	var objNav = document.getElementById('nav_'+num+'_off'); 
	
	if (isIE6Win) {
		objNav.style.visibility = "hidden"; 
		objNavPNG.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'/media/xrn_nav_'+num+'_'+toggle+'.png\',sizingMethod=\'scale\')'; 
	}
	
	else {
		objNav.src = '/media/xrn_nav_'+num+'_'+toggle+'.png'; 
	}
	
}


//DISPLAY SELECTED SECTION
function displaySection(num) {
	hideAllSections(); 
	document.getElementById('section'+num+'').style.display = "block"; 
}


//HIDE ALL SECTIONS
function hideAllSections() {
	document.getElementById('section1').style.display = "none"; 
	document.getElementById('section2').style.display = "none"; 
	document.getElementById('section3').style.display = "none"; 
	document.getElementById('section4').style.display = "none"; 
}


//NEWS ARCHIVE AJAX
 function ajaxLoader(url,id) {
 
 	if (document.getElementById) {
 		var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 
 	}
 	
 	if (x) {
 		x.onreadystatechange = function() {
 			if (x.readyState == 4 && x.status == 200) {
 				el = document.getElementById(id); 
 				el.innerHTML = x.responseText; 
 			}
 		}
 		
 		x.open("GET", url, true); 
 		x.send(null); 
 	}
 	
 	//display and change background
 	var objPRContainer = document.getElementById(id); 
 	
 	if (isIE6Win) {
 		objPRContainer.style.width = "403px"; //IE needs dimension set in order to apply filter
		objPRContainer.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/media/xrn_back_pr.png',sizingMethod='scale')"; 
	}
		
	else {
 		objPRContainer.style.backgroundImage = "url(/media/xrn_back_pr.png)"; 
 	}
 	
 	//toggle display
 	var divState = document.getElementById(id).style.display; 
	
	if (divState == "none") {
		document.getElementById(id).style.display = "block"; 
	}
	
	else {
		document.getElementById(id).style.display = "none"; 
	}
}


//INITIALIZE DISPLAY OF ELEMENTS in content3
function initPrContainers() {
	var prContainers = getElementsByClass(document.getElementById("content3"),'prContainer','div'); 
	for (var i = 0; i < prContainers.length; i++) {
		prContainers[i].style.display = "none"; 
	}
}


//CLOSE PRESS RELEASE
function closePr(id) {
	document.getElementById(id).style.display = "none"; 
}


//SCROLLING FUNCTIONS
var scrollSpeed = 6; 

function scrollDown(section) {
	var objContent = document.getElementById('content'+section+''); 
	var contentHeight = objContent.offsetHeight; 

	if (window.scrollUpVar) {
		clearTimeout(scrollUpVar); 
	}
	
	if (parseInt(objContent.style.top) >= (contentHeight * (-1) + 257)) {  //adjust per contentContainer's height
		objContent.style.top = parseInt(objContent.style.top) - scrollSpeed+'px'; 
	}

	scrollDownVar = setTimeout('scrollDown(\''+section+'\')',20); 
}


function scrollUp(section) {
	var objContent = document.getElementById('content'+section+''); 
	var contentHeight = objContent.offsetHeight; 

	if (window.scrollDownVar) {
		clearTimeout(scrollDownVar); 
	}

	if (parseInt(objContent.style.top) <= 0) {
		objContent.style.top = parseInt(objContent.style.top) + scrollSpeed+'px'; 
	}

	scrollUpVar = setTimeout('scrollUp(\''+section+'\')',20); 
}

function scrollStop(section) {

	if (window.scrollUpVar) {
		clearTimeout(scrollUpVar); 
	}
	
	if (window.scrollDownVar) {
		clearTimeout(scrollDownVar); 
	}
}

function scrollTop(section) {
	var objContent = document.getElementById('content'+section+''); 
	
	scrollStop(); 
	objContent.style.top = 0+'px'; 
}


//ART ANIMATION
//DOM scripting by brothercake -- http://www.brothercake.com/
//global object
var ixf = { 'clock' : null, 'count' : 1 }

//list the images that need to be cached
ixf.imgs = [
	'/media/xrn_art_1.gif',
	'/media/xrn_art_2.gif',
	'/media/xrn_art_3.gif',
	'/media/xrn_art_4.gif',
	]; 

//cache the images
ixf.imgsLen = ixf.imgs.length;
ixf.cache = [];
for(var i=0; i<ixf.imgsLen; i++)
{
	ixf.cache[i] = new Image;
	ixf.cache[i].src = ixf.imgs[i];
}

//crossfade setup function
function crossfade()
{
	//if the timer is not already going
	if(ixf.clock == null)
	{
		//copy the image object 
		ixf.obj = arguments[0];
		
		//copy the image src argument 
		ixf.src = arguments[1];
		
		//store the supported form of opacity
		if(typeof ixf.obj.style.opacity != 'undefined')
		{
			ixf.type = 'w3c';
		}
		else if(typeof ixf.obj.style.MozOpacity != 'undefined')
		{
			ixf.type = 'moz';
		}
		else if(typeof ixf.obj.style.KhtmlOpacity != 'undefined')
		{
			ixf.type = 'khtml';
		}
		else if(typeof ixf.obj.filters == 'object')
		{
			//weed out win/ie5.0 by testing the length of the filters collection (where filters is an object with no data)
			//then weed out mac/ie5 by testing first the existence of the alpha object (to prevent errors in win/ie5.0)
			//then the returned value type, which should be a number, but in mac/ie5 is an empty string
			ixf.type = (ixf.obj.filters.length > 0 && typeof ixf.obj.filters.alpha == 'object' && typeof ixf.obj.filters.alpha.opacity == 'number') ? 'ie' : 'none';
		}
		else
		{
			ixf.type = 'none';
		}
		
		//if any kind of opacity is supported
		if(ixf.type != 'none')
		{
			//create a new image object and append it to artBlock
			var newArt = document.createElement('img');
			newArt.setAttribute('id', 'newArt');
			
			ixf.newimg = document.getElementById('artBlock').appendChild(newArt); 
			
			//set positioning classname
			ixf.newimg.idName = 'newArt';
			
			//set src to new image src
			ixf.newimg.src = ixf.src

			//move it to superimpose original image
			ixf.newimg.style.left = ixf.getRealPosition(ixf.obj, 'x') + 'px';
			ixf.newimg.style.top = ixf.getRealPosition(ixf.obj, 'y') + 'px';
			
			//copy and convert fade duration argument 
			ixf.length = parseInt(arguments[2], 10) * 1000;
			
			//create fade resolution argument as 20 steps per transition
			ixf.resolution = parseInt(arguments[2], 10) * 10;
			
			//start the timer
			ixf.clock = setInterval('ixf.crossfade()', ixf.length/ixf.resolution);
		}
		
		//otherwise if opacity is not supported
		else
		{
			//just do the image swap
			ixf.obj.src = ixf.src;
		}
		
	}
}

//crossfade timer function
ixf.crossfade = function()
{
	//decrease the counter on a linear scale
	ixf.count -= (1 / ixf.resolution);
	
	//if the counter has reached the bottom
	if(ixf.count < (1 / ixf.resolution))
	{
		//clear the timer
		clearInterval(ixf.clock);
		ixf.clock = null;
		
		//reset the counter
		ixf.count = 1;
		
		//set the original image to the src of the new image
		ixf.obj.src = ixf.src;
	}
	
	//set new opacity value on both elements
	//using whatever method is supported
	switch(ixf.type)
	{
		case 'ie' :
			ixf.obj.filters.alpha.opacity = ixf.count * 100;
			ixf.newimg.filters.alpha.opacity = (1 - ixf.count) * 100;
			break;
			
		case 'khtml' :
			ixf.obj.style.KhtmlOpacity = ixf.count;
			ixf.newimg.style.KhtmlOpacity = (1 - ixf.count);
			break;
			
		case 'moz' : 
			//restrict max opacity to prevent a visual popping effect in firefox
			ixf.obj.style.MozOpacity = (ixf.count == 1 ? 0.9999999 : ixf.count);
			ixf.newimg.style.MozOpacity = (1 - ixf.count);
			break;
			
		default : 
			//restrict max opacity to prevent a visual popping effect in firefox
			ixf.obj.style.opacity = (ixf.count == 1 ? 0.9999999 : ixf.count);
			ixf.newimg.style.opacity = (1 - ixf.count);
	}
	
	//now that we've gone through one fade iteration 
	//we can show the image that's fading in
	ixf.newimg.style.visibility = 'visible';
	
	//keep new image in position with original image
	//in case text size changes mid transition or something
	ixf.newimg.style.left = '0px';
	ixf.newimg.style.top = '0px';
	
	//if the counter is at the top, which is just after the timer has finished
	if(ixf.count == 1)
	{
		//remove the duplicate image
		ixf.newimg.parentNode.removeChild(ixf.newimg);
	}
}

//get real position method
ixf.getRealPosition = function()
{
	this.pos = (arguments[1] == 'x') ? arguments[0].offsetLeft : arguments[0].offsetTop;
	this.tmp = arguments[0].offsetParent;
	while(this.tmp != null)
	{
		this.pos += (arguments[1] == 'x') ? this.tmp.offsetLeft : this.tmp.offsetTop;
		this.tmp = this.tmp.offsetParent;
	}
	
	return this.pos;
}


//NAV ANIMATION
var navMax = "24"; 
var navMin = "0"; 
var navIncrement = 1; 

function openNav(num) {
	var nav = document.getElementById(num); 
	var navHeight = nav.offsetHeight; 

	if (navHeight < navMax) {
		nav.style.height = navHeight+navIncrement+'px'; 
		setTimeout("openNav('"+num+"','"+navMax+"')", 1); 
	}
}

function closeNav(num) {
	var nav = document.getElementById(num); 
	var navHeight = nav.offsetHeight; 

	if (navHeight > navMin) {
		nav.style.height = navHeight-navIncrement+'px'; 
		setTimeout("closeNav('"+num+"','"+navMin+"')", 1); 
	}
}


//NAVIGATION EFFECTS
//	need to control when the animations kick off
function nav1Effects() {
	displaySection('1'); 
	closeNav('nav_1_offPNG'); 
	openNav('nav_2_offPNG'); 
	openNav('nav_3_offPNG'); 
	openNav('nav_4_offPNG'); 
	navOver('1','off'); 
	setTimeout("crossfade(document.getElementById('blendImage'), '/media/xrn_art_1.gif', '1'); ", 500); 
	//to minimize flicker
	document.getElementById("artBlock").style.backgroundImage = "url(/media/xrn_art_1.gif)"; 
}

function nav2Effects() {
	displaySection('2'); 
	openNav('nav_1_offPNG'); 
	closeNav('nav_2_offPNG'); 
	openNav('nav_3_offPNG'); 
	openNav('nav_4_offPNG'); 
	navOver('2','off'); 
	setTimeout("crossfade(document.getElementById('blendImage'), '/media/xrn_art_2.gif', '1'); ", 500); 
	//to minimize flicker
	document.getElementById("artBlock").style.backgroundImage = "url(/media/xrn_art_2.gif)"; 
}

function nav3Effects() {
	displaySection('3'); 
	openNav('nav_1_offPNG'); 
	openNav('nav_2_offPNG'); 
	closeNav('nav_3_offPNG'); 
	openNav('nav_4_offPNG'); 
	navOver('3','off'); 
	setTimeout("crossfade(document.getElementById('blendImage'), '/media/xrn_art_3.gif', '1'); ", 500); 
	//to minimize flicker
	document.getElementById("artBlock").style.backgroundImage = "url(/media/xrn_art_3.gif)"; 
}

function nav4Effects() {
	displaySection('4'); 
	openNav('nav_1_offPNG'); 
	openNav('nav_2_offPNG'); 
	openNav('nav_3_offPNG'); 
	closeNav('nav_4_offPNG'); 
	navOver('4','off'); 
	setTimeout("crossfade(document.getElementById('blendImage'), '/media/xrn_art_4.gif', '1'); ", 500); 
	//to minimize flicker
	document.getElementById("artBlock").style.backgroundImage = "url(/media/xrn_art_4.gif)"; 
}


//ADJUST mainBlock FOR IE MAC
function adjustMain() {
	if (isIEMac) {
		document.getElementById('mainBlock').style.marginTop = "40px"; 
	}
}


//POSITION TIMELINE
function posTimeline() { 
	var objTimelineSelector = document.getElementById('timelineSelector'); 
	var objTimelineUp = document.getElementById('timelineUp'); 
	
	var docW = document.getElementsByTagName('html').item(0).offsetWidth/2; 
	var docH = document.getElementsByTagName('html').item(0).offsetHeight; 
	var divW = objTimelineSelector.offsetWidth/2; 
	
	if (isIE6Win) {
		objTimelineSelector.style.left = docW-divW+289+'px'; 
		objTimelineSelector.style.height = docH-10+'px'; 
		objTimelineUp.style.bottom = "-6px"; 
	}
	
	else if (isIEMac) {
		objTimelineSelector.style.display = "none"; 
	}
	
	else {
		objTimelineSelector.style.left = docW-divW+300+'px'; 
	}
}


//OUTPUT THE YEAR
var Today = new Date(); 
var Year = takeYear(Today); 

function takeYear(theDate) { 
	var x = theDate.getYear(); 
	var y = x % 100; 
	y += (y < 38) ? 2000 : 1900; 
	return y; 
}


//SPAMBUSTER
var mailDomain = 'E' + 'x' + 'Rad' + 'io' + '.co' + 'm'; 
var mailDomain2 = 'XR' + 'a' + 'dio' + 'Netw' + 'orks.c' + 'om'; 
var mailDomain3 = 'Di' + 'al' + '-Glo' + 'b' + 'al.co' + 'm'; 
var mailDomain4 = 'MJ' + 'I' + 'Inte' + 'ract' + 'ive.co' + 'm'; 
var mailDomain5 = 'Tr' + 'itonR' + 'a' + 'dio' + 'Netw' + 'orks.c' + 'om'; 
var mailAt = '@'; 
var mailProtocol = 'mailto'; 

function composeEmail(address,subject) { 
	document.location = mailProtocol+':'+address+mailAt+mailDomain+'?subject='+subject; 
}

function composeEmail2(address,subject) { 
	document.location = mailProtocol+':'+address+mailAt+mailDomain2+'?subject='+subject; 
}

function composeEmail3(address,subject) { 
	document.location = mailProtocol+':'+address+mailAt+mailDomain3+'?subject='+subject; 
}

function composeEmail4(address,subject) { 
	document.location = mailProtocol+':'+address+mailAt+mailDomain4+'?subject='+subject; 
}

function composeEmail5(address,subject) { 
	document.location = mailProtocol+':'+address+mailAt+mailDomain5+'?subject='+subject; 
}


//PAGE EFFECTS INIT
function pageEffects() {
	setTrans(); 
	posTimeline(); 
	adjustMain(); 
	initPrContainers(); 
}

window.onload = pageEffects; 
window.onresize = posTimeline; 