window.addEvent('load',function(){
	tr3s_init();
});

function navInit() {
	tr3s_init();
}
// prepares the regular version of the global navigation with full functionality
function tr3s_init() {
	
	var gonogo=true;
	var use_ishim=false;
	var active_ishim=null;
	
	if (navigator.appVersion.indexOf("MSIE")!=-1){
	try
	{
		document.execCommand("BackgroundImageCache", false, true); 
	}
	catch(err)
	{
	}
	var temp=navigator.appVersion.split("MSIE")
	var version=parseFloat(temp[1])
		if (version<=5.9)
		{
			gonogo=false;
		}
		if (version>=6 && version<7)
		{
			use_ishim=true;
            tr3s_iframe = "";
			$('tr3s').insertAdjacentHTML('beforeEnd', '<iframe src="'+tr3s_iframe+'" id="tr3s_ishim" frameborder="0" scrolling="0" style="position:absolute;top:0;left:0;width:0;height:0;display:none;z-index:498;filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);"></iframe>');
			var tr3s = $('tr3s');
			var lis = $ES('li',tr3s);
			lis.each(function(li) {
				var lnk = li.getFirst();
				lnk.style.height='1%';
			});
		}
	}
	
	function tr3s_ishim(show,d_2)
	{
		var ishim = $('tr3s_ishim');
		if(show==true && use_ishim==true)
		{	
			ishim.style.display = 'block';
			var d_2_pos = d_2.getCoordinates();
			ishim.style.width = d_2_pos.width;
			ishim.style.height = d_2_pos.height;
			ishim.style.top = d_2_pos.top;
			ishim.style.left = d_2_pos.left;
		}
		
		if (active_ishim==d_2 && show==false && use_ishim==true)
		{
			ishim.style.display = 'none';
		}
		active_ishim=d_2;
	}

	var objects = document.getElementsByTagName('OBJECT');
	var embeds = document.getElementsByTagName('EMBED');
			
	if (((objects.length >= 1) || (embeds.length >= 1)) && (navigator.appVersion.indexOf('Mac')!=-1))
	{
		gonogo=false;
	}

	if (gonogo==true)
	{
		if (typeof tr3sCategory!='undefined')
		{
			var t = 0;
			var g = tr3sCategory*1;
			var headers = $$('#tr3s h2');
			headers.each(function(header) {
				if (g==t)
				{
					var a = $E('a',header);
					a.addClass('tr3s_selected');
				}
				t++;
			});
		}

		var headers = $$('#tr3s h2');
		headers.each(function(header) {
			
			var a_1 = $E('a',header);
			var d_2 = header.getNext();
			var u_2 = $E('ul',d_2);
			var l_2s = u_2.getChildren();
			var u_3s = $ES('ul',u_2);

			if (header.className=='tr3s_right')
			{
				var tr3s_right=true;
				u_2.setStyle('float', 'right');
			}
			else
			{
				var tr3s_right=false;
			}

			d_2.setStyle('opacity', '0.1');

			function d_2_show(a_1,d_2) {
				var a_1_pos = a_1.getCoordinates();
				var h = a_1_pos.height;
				var w = a_1_pos.width;
				var l = a_1_pos.left;
				var t = a_1_pos.top;

				var tr3s = $('tr3s');
				var d_2_cs = $ES('div.tr3s_dd',tr3s);
				d_2_cs.each(function(d_2_c) {
					if (d_2_c.style.zIndex='500')
					{
						var h_c = d_2_c.getPrevious();
						var a_1_c = $E('a',h_c);
						d_2_hide(a_1_c,d_2_c);
					}
				});

				d_2.setStyle('top', (t+h));
				if (tr3s_right==true)
				{
					d_2.setStyle('left', l+w-200);
				}
				else
				{
					d_2.setStyle('left', l);
				}
				d_2.setStyle('z-index', '500');
				a_1.addClass('tr3s_active');
				tr3s_ishim(true,d_2);
			}

			function d_2_hide(a_1,d_2) {
				d_2.setStyle('margin-left', '0');
				d_2.setStyle('width', '200px');
				d_2.setStyle('height', 'auto');
				d_2.setStyle('left', '-1000em');
				d_2.setStyle('z-index', '499');
				a_1.removeClass('tr3s_active');
				tr3s_ishim(false,d_2);
			}

			a_1.addEvents({
				
				'focus': function() {
					d_2_show(a_1,d_2);
					d_2.setStyle('opacity', '1');
				},
				
				'blur': function() {
					d_2_hide(a_1,d_2);
				},

				'keydown': function(event) {
					event = new Event(event);
					if (event.key=='down')
					{
						u_2.getFirst().getFirst().focus();
					}
					else if (event.key=='left' && header.getPrevious())
					{
						$E('a',header.getPrevious().getPrevious()).focus();
					}
					else if (event.key=='right' && header.getNext().getNext())
					{
						$E('a',header.getNext().getNext()).focus();
					}
				}
			});

			var reveal = new Fx.Styles(d_2, {
				duration: 300,
				transition: Fx.Transitions.Quad.easeIn,
				fps: 30
			});

			reveal.addEvent('onStart', function(){
				d_2_show(a_1,d_2);
			});
			
			var repeal = new Fx.Styles(d_2, {
				duration: 300,
				transition: Fx.Transitions.Quad.easeOut,
				fps: 30
			});
			
			repeal.addEvent('onStart', function(){
				d_2.setStyle('z-index', '499');
				a_1.removeClass('tr3s_active');
				tr3s_fo(a_1);
			});

			repeal.addEvent('onComplete', function(){
				d_2_hide(a_1,d_2);
			});

			a_1.addEvent('mouseenter', function(event){
				var rt = event.relatedTarget;
				while (rt && rt != d_2 && rt.nodeName != 'BODY')
				rt = rt.parentNode
				if (rt == d_2) return;
				
				repeal.stop();
				d_2.setStyle('opacity', '0.1');
				reveal.start({
					'opacity': [0.1,1]
				});
			});

			a_1.addEvent('mouseleave', function(event){
				var rt = event.relatedTarget;
				while (rt && rt != d_2 && rt.nodeName != 'BODY')
				rt = rt.parentNode
				if (rt == d_2) return;
				
				reveal.stop();
				repeal.start({
					'opacity': [1,1]
				});
			});

			d_2.addEvent('mouseleave', function(event){
				var rt = event.relatedTarget;
				while (rt && rt != a_1 && rt.nodeName != 'BODY')
				rt = rt.parentNode
				if (rt == a_1) return;
				
				reveal.stop();
				repeal.start({
					'opacity': [1,1]
				});
			});

			l_2s.each(function(l_2) {
				
				var a_2 = l_2.getFirst();

				var rollover = new Fx.Styles(a_2, {
					duration: 300,
					transition: Fx.Transitions.Quad.easeOut,
					fps: 30,
					wait: false
				});

				var rolloff = new Fx.Styles(a_2, {
					duration: 300,
					transition: Fx.Transitions.linear,
					fps: 30,
					wait: false
				});

				var tr3s_foto;

				a_2.addEvents({
					
					'mouseenter':  function() {
					tr3s_foto = tr3s_fo.delay(300,tr3s_fo,a_2);
						rollover.stop();
						rollover.start({
							'background-color': '#FF0000'
						});
					},

					'mouseleave': function(event) {  
					$clear(tr3s_foto);
						if (!(a_2.hasClass('tr3s_out')))
						{
							rollover.stop();
							rolloff.start({
								'background-color': '#353535'
							});
						}
					},

					'focus': function() {
						d_2_show(a_1,d_2);
						a_2.setStyle('background-color', '#FF0000');
						d_2.setStyle('opacity', '1');
					},

					'blur': function() {
						d_2_hide(a_1,d_2);
						a_2.setStyle('background-color', '#353535');
					},

					'keydown': function(event) {
						event = new Event(event);
						if (event.key=='up' && l_2.getPrevious())
						{
							l_2.getPrevious().getFirst().focus();
						}
						else if (event.key=='up' && !(l_2.getPrevious()))
						{
							a_1.focus();
						}
						else if (event.key=='down' && l_2.getNext())
						{
							l_2.getNext().getFirst().focus();
						}
						else if (event.key=='left' && header.getPrevious())
						{
							$E('a',header.getPrevious().getPrevious()).focus();
						}
						else if (event.key=='right' && header.getNext().getNext())
						{
							$E('a',header.getNext().getNext()).focus();
						}
					}
				});
			});

			function tr3s_fo(a_2) { 
				
				var u_2_h = u_2.getCoordinates().height;

				u_3s.each(function(u_3) {
					
					if (u_3.style.left=='auto' && u_3!=a_2.getNext())
					{
						var flyin = new Fx.Styles(u_3, {
							duration: 300,
							transition: Fx.Transitions.linear,
							fps: 30
						});

						flyin.addEvent('onStart', function(){
							u_3.getPrevious().removeClass('tr3s_out');
						});

						flyin.addEvent('onComplete', function(){
							u_3.setStyle('left', '-1000em');
							u_3.setStyle('height', 'auto');
							if (!(a_2.getNext()))
							{
								d_2.setStyle('margin-left', '0');
								d_2.setStyle('width', '200px');
								d_2.setStyle('height', 'auto');
								tr3s_ishim(true,d_2);
							}
						});

						var u_3_h = u_3.getCoordinates().height;

						if (tr3s_right==true)
						{
							flyin.start({
								'width': [200,0],
								'height': [u_3_h,0],
								'opacity': [1,0],
								'margin-left': [-200,0]
							})
						}
						else
						{
							flyin.start({
								'width': [200,0],
								'height': [u_3_h,0],
								'opacity': [1,0]
							})
						}
						
						var rollover = new Fx.Styles(u_3.getPrevious(), {
							duration: 300,
							transition: Fx.Transitions.linear,
							fps: 30,
							wait: false
						});

						rollover.start({
							'background-color': '#353535'
						});
					}

					if (u_3==a_2.getNext() && u_3.style.left!='auto')
					{
						var u_3_h = u_3.getCoordinates().height;

						var flyout = new Fx.Styles(u_3, {
							duration: 300,
							transition: Fx.Transitions.linear,
							fps: 30
						});

						flyout.addEvent('onStart', function(){
							a_2.addClass('tr3s_out');
							u_3.setStyle('left', 'auto');
							d_2.setStyle('width', '394px');
							if (tr3s_right==true)
							{
								d_2.setStyle('margin-left', '-200px');
							}
							if (u_3_h>u_2_h)
							{
								d_2.setStyle('height', u_3_h+30);
							}
							else 
							{
								d_2.setStyle('height', 'auto');
								var d_2_h = d_2.getCoordinates().height;
								d_2.setStyle('height', d_2_h+30);
							}
							tr3s_ishim(true,d_2);
						});

						if (tr3s_right==true)
						{
							flyout.start({
								'width': [0,200],
								'height': [0,u_3_h],
								'opacity': [0,1],
								'margin-left': [0,-200]
							})
						}
						else
						{
							flyout.start({
								'width': [0,200],
								'height': [0,u_3_h],
								'opacity': [0,1]
							})
						}
					}
				})
			}
		});
	}
}