/*
-------------------------------------------------------------------
Banner
*/

function SetHtmlContent()
{
	var Menu = $('Banner').getElement('.Banner-Menu-Content');
	var MenuHeight = 286;
	Menu.style.overflow = 'hidden';
	Menu.style.height = MenuHeight+'px';
	MenuScroll = new Fx.Scroll(Menu,{velocity: 0.2});
	MenuScroll.Menu = Menu;
	MenuScroll.Current = 0;
	MenuScroll.Items = Menu.getElements('.Item');
	MenuScroll.Items.each(function(el,i){ 
		el.id = 'Banner-Menu-Item-'+i;
		el.Active = false;
		el.addEvent('mouseenter',function() { this.addClass('Item-On'); });
		el.addEvent('mouseleave',function() { if(!this.Active) this.removeClass('Item-On'); });
		el.y = el.getSize().y;
		el.A = el.getElement('A');
		el.A.Link = el.A.href;
		el.A.Img = el.A.getProperty('onmouseover')+'';
		el.A.Img = el.A.Img.substring(el.A.Img.indexOf("Image='")+7,el.A.Img.lastIndexOf("'"));
		el.A.removeProperty('href');
		el.A.onmouseover=function(){};
		el.A.removeProperty('onmouseover');
		el.A.style.cursor = 'pointer';
		el.A.MenuView = function(){ MenuView(this.parentNode.parentNode,this.Link,this.Img); };
		el.A.onclick = function(){ this.MenuView(); };
	});
	
	//spacer
	Menu.grab( new Element('div', {'style' : 'height:130px;'}) );

	//the up/down on needs to be enough clicks
	//so last item becomes visible at bottom of
	//menu box
		MenuScroll.Total = 0;
	
		//Total height
		var MenuItemsHeight = 0;
		for(var i=0; i<MenuScroll.Items.length; i++)
		{
			var el = $('Banner-Menu-Item-'+i);
			MenuItemsHeight += el.y;
		}
		
		//Trailing height
		var MenuTrailingHeight = MenuItemsHeight - MenuHeight;
		
		//Number items trailing over end
		MenuScroll.TrailingTotal = 0;
		if(MenuTrailingHeight > 0)
		{
			var MenuTrailingStackHeight = 0;
			for(var i=MenuScroll.Items.length-1; i>=0; i--)
			{
				var el = $('Banner-Menu-Item-'+i);
				MenuTrailingStackHeight += el.y;
				MenuScroll.TrailingTotal++;
				if(MenuTrailingStackHeight > MenuTrailingHeight)
					break;
			}
		}
		MenuScroll.Total = MenuScroll.TrailingTotal;
	//

	MenuScroll.ScrollDown = function() {
		if(MenuScroll.Current + 1 <= MenuScroll.Total)
		{
			MenuScroll.Current++;
			this.toElement('Banner-Menu-Item-'+MenuScroll.Current);
			this.buttonDown.style.backgroundPosition='left top';
		}
		MenuScroll.SetButtons();
	};

	MenuScroll.ScrollUp = function() {
		if(MenuScroll.Current - 1 >= 0)
		{
			MenuScroll.Current--;
			this.toElement('Banner-Menu-Item-'+MenuScroll.Current);
		}
		MenuScroll.SetButtons();
	};

	MenuScroll.SetButtons = function() {
		if(MenuScroll.Current == 0)//at start
		{
			this.buttonDown.style.backgroundPosition='left top';
			this.buttonDown.style.cursor = 'pointer';
			this.buttonUp.style.backgroundPosition='left bottom';
			this.buttonUp.style.cursor = 'default';
		}
		else if(MenuScroll.Current >= MenuScroll.Total)//at end
		{
			this.buttonDown.style.backgroundPosition='left bottom';
			this.buttonDown.style.cursor = 'default';
			this.buttonUp.style.backgroundPosition='left top';
			this.buttonUp.style.cursor = 'pointer';
		}
		else//middle
		{
			this.buttonDown.style.backgroundPosition='left top';
			this.buttonDown.style.cursor = 'pointer';
			this.buttonUp.style.backgroundPosition='left top';
			this.buttonUp.style.cursor = 'pointer';
		}
	};
	
	function MenuView(Box,Link,Src)
	{
		Box.Active = true;
		Box.addClass('Item-On');

		for(var i=0; i<MenuScroll.Items.length; i++)
		{
			if(MenuScroll.Items[i] != Box)
			{
				MenuScroll.Items[i].removeClass('Item-On');
				MenuScroll.Items[i].Active = false;
			}
		}
		
		var Img = $('Banner').getElement('.Banner-Image');
		if(Img)
		{
			Img.src = Src;
			Img.Link = Link;
			Img.style.cursor = 'pointer';
			Img.onclick = function() { location.href = this.Link; };
		}
	}

	var navDown = new Element('div', {
		'class' : 'Banner-Menu-Control-Down'
	});
	navDown.onclick = function() { MenuScroll.ScrollDown(); }
	var navUp = new Element('div', {
		'class' : 'Banner-Menu-Control-Up'
	});
	navUp.onclick = function() { MenuScroll.ScrollUp(); }

	$('Banner-Menu-Controls').grab( navDown );
	$('Banner-Menu-Controls').grab( navUp );

	MenuScroll.buttonDown = $('Banner').getElement('.Banner-Menu-Control-Down');
	MenuScroll.buttonUp = $('Banner').getElement('.Banner-Menu-Control-Up');

	MenuScroll.toTop();
	MenuScroll.SetButtons();
	MenuScroll.Items[0].A.MenuView();
}

window.addEvent('domready', function() { 

var Menu = $('Banner').getElement('.Banner-Menu-Content');
var MenuHeight = 286;

if(Menu)
{
	SetHtmlContent();
}

});

/*
-------------------------------------------------------------------
Columns
*/

function ColumnArticleGet(el)
{
	//nav is in DIV.Group-Content-Nav; this finds the previous DIV.Articles-Content sibling
	el = el.parentNode;
	while(el.previousSibling)
	{
		el =  el.previousSibling;
		if(el.nodeName == 'DIV' && el.className == 'Articles-Content')
			return el;
	}
	return false;
}

function ColumnArticleHighlightIndex(el,i)
{
	var cn = el.parentNode.childNodes;
	for(var j=2;j<cn.length; j++)//skip first 2, Next & Prev links
		cn[j].removeClass('On');
	if(i+2 < cn.length-1)
		cn[i+2].addClass('On');
}

function ColumnArticleGoTo(el,i,w)//element,position,width
{
	ColumnArticleHighlightIndex(el,i);
	el = ColumnArticleGet(el);
	if(el) el.style.marginLeft = (i == 0)? '0':'-'+(i*w)+'px';
}

function ColumnArticleNext(el,n,w)//element,count,width
{
	var nav_el = el;
	el = ColumnArticleGet(el);
	if(el)
	{
		var m = el.style.marginLeft? parseInt(el.style.marginLeft):0;
		el.style.marginLeft = (m == -((n-1)*w))? '0':(m-w)+'px';
		
		m = parseInt(el.style.marginLeft);
		var i = 0;
		while(m < 0)
		{
			m = m+w;
			i++;
		}
		ColumnArticleHighlightIndex(nav_el,i);
	}
}

function ColumnArticlePrev(el,n,w)//element,count,width
{
	var nav_el = el;
	el = ColumnArticleGet(el);
	if(el)
	{
		var m = el.style.marginLeft? parseInt(el.style.marginLeft):0;
		el.style.marginLeft = (m == 0)? '-'+((n-1)*w)+'px':(m+w)+'px';
		
		m = parseInt(el.style.marginLeft);
		var i = 0;
		while(m < 0)
		{
			m = m+w;
			i++;
		}
		ColumnArticleHighlightIndex(nav_el,i);
	}
}

function ColumnArticleTitleStyles(toggler,el)
{
	var H3s = toggler.parentNode.parentNode.getElements('H3');
	for(var i=0; i<H3s.length; i++)
		H3s[i].removeClass('Accordian-Control-Active');
	toggler.getElement('H3').addClass('Accordian-Control-Active');
}
					
function ColumnArticleFlashHide(toggler,el)
{
	var F = toggler.parentNode.parentNode.getElements('.Flash');
	for(var i=0; i<F.length; i++)
		F[i].style.visibility = 'hidden';
}

function ColumnArticleFlashShow(toggler,el)
{
	var F = toggler.parentNode.parentNode.getElements('.Flash');
	for(var i=0; i<F.length; i++)
		F[i].style.visibility = 'visible';
}

window.addEvent('domready', function() { 

	$$('#Columns .Column').each(function(el,n) {

		//Make sub navigation like this:
		/*
			<div class="Group-Content-Nav">
				//next and previous buttons
				<a href="javascript:ColumnArticleNext()" class="Next">Next</a>
				<a href="javascript:ColumnArticlePrev()" class="Previous">Previous</a>
				//page buttons
				<a href="javascript:ColumnArticleGoTo(this,0,225)">1</a>
				<a href="javascript:ColumnArticleGoTo(this,1,225)">2</a>
				<a href="javascript:ColumnArticleGoTo(this,2,225)">3</a>
				// etc.
			</div>
		*/
		el.getElements('.Group-Content').each(function(GroupContent,GroupContentN) {
			var ArticlesBox = GroupContent.getElement('.Articles');
			if(ArticlesBox)
			{
				var w = GroupContent.getSize().x;
				
				//HACK: (for safari)
				w = 225;
				
				
				var nav = new Element('div', { });
					nav.className = 'Group-Content-Nav';
				var Articles = GroupContent.getElements('.Article');
				if(Articles.length > 1)
				{
					// ".grab" is from Mootools, grabs and drops element into itself
					var Next = new Element('a', { });
						Next.className = 'Next';
						Next.w = w;
						Next.n = Articles.length;
						Next.onclick = function() { ColumnArticleNext(this,this.n,this.w); };
					nav.grab( Next );
					var Prev = new Element('a', { });
						Prev.className = 'Previous';
						Prev.w = w;
						Prev.n = Articles.length;
						Prev.onclick = function() { ColumnArticlePrev(this,this.n,this.w); };
					nav.grab( Prev );
					for(var i=0;i<Articles.length;i++)
					{
						var A = new Element('a', { html:(i+1) });
							A.i = i;
							A.w = w;
							A.onclick = function() { ColumnArticleGoTo(this,this.i,this.w); };
							if(i==0)
								A.className = 'First On';
						nav.grab( A );
					}
					var Span = new Element('span');
						Span.innerHTML = '&nbsp;'
						Span.className = 'floatBreak';
					nav.grab( Span );
					ArticlesBox.grab(nav);
				}
			}
		});

		if(ApplyAccordion === true)
		{
			$$('#'+el.id+' div.Group-Title h3').each(function(H3,i) {
				H3.style.cursor = 'pointer';
				H3.className = 'Accordian-Control';
			});

			//Apply accordion effect (after above because of dynamic height calculations of .Articles)
			el.Accordion = new Accordion($$('#'+el.id+' div.Group-Title'), $$('#'+el.id+' div.Group-Content'), { 
				opacity: false,
				onActive: function(toggler,element) {
					ColumnArticleTitleStyles(toggler,element);
					ColumnArticleFlashHide(toggler,element);
				},
				onComplete: function(toggler,element) {
					ColumnArticleFlashShow(toggler,element);
				}
			});
		}
		
	});

});
	
