
/*	INTERACTIVE LEADER MODEL
--------------------------------------------------------*/
var navs, current = null, container, cards, card, init_height;
Leaders = {

	init: function(){

		navs = $$('#leaders-bar a'),
		container = $('leaders-content'),
		cards = $('leaders-content-list'),
		card = $$('#leaders-content-list li'),
		card_count = card.length,
		prev_next = $$('#leaders-content-list li .step-nav'),
		init_height = card[0].getHeight() + 36;

		container.set('morph', {
			duration: 300,
			transition: 'cubic:in:out'
		});
		card[0].set('morph', {
			duration: 450,
			transition: 'cubic:in:out'
		});

		navs.each(function(a,i){

			card[i].store('card_height', card[i].getHeight() + 36);
			card[i].store('card_top', card[i].getTop() - cards.getTop());

			a.addEvent('click', function(event){
				event.preventDefault();
				Leaders.flip(i);
			});
		});

		// set up prev and next links
		prev_next.each(function(p,i){
			var as = p.getElements('a');
			as.each(function(a){
				a.addEvent('click',function(){
					if (a.hasClass('previous')) {
						Leaders.flip(Leaders.getPrev());
					}
					else {
						Leaders.flip(Leaders.getNext());
					}
				});
			});
		});

		setTimeout(function(){ Leaders.flip(0); }, 500);

	},

	flip: function(index){
		if (current === index) { return false; }
		else if (current !== null) {
			navs[current].removeClass('selected');
		}

		navs[index].addClass('selected');

		container.morph({ 'height': card[index].retrieve('card_height') });
		card[0].morph({ 'margin-top': (card[index].retrieve('card_top') * -1) + 18 });
		current = index;
	},

	getNext: function(){
		return current + 1;
	},

	getPrev: function(){
		return current - 1;
	}

};

window.addEvent('domready', function() {

	if ($('leaders-content')) Leaders.init();

	/************************************
		ADD ICON TO ALL EXTERNAL LINKS
	************************************/
	var domain = "dev.servicelearningtexas.org|servicelearningtexas:8888|www.servicelearningtexas.org";
	var ishttp = /(http(.)*:\/\/)/;
	$$("a[href$=.pdf]").addClass('doc-pdf');
	$$("a[href$=.doc], a[href$=.docx]").addClass('doc-word');
	$$("a[href$=.xls]").addClass('doc-excel');
	$$("a[href$=.zip]").addClass('doc-zip');
	$$("a[href$="+domain+"]").addClass('doc-zip');
	$$("ol#metadata-subnav li a[href^=mailto:]").addClass('email');
	$$("a[href$=.flv], a[href$=.swf]").addClass('video');
	var links = $$('div#body a');
	links.each(function(a, i){
		if ((a.href != null) && (a.href.match(domain) == null) && (a.href.match(ishttp)!=null)) {
			a.setProperty('target','_blank');
			a.addClass('externallink');
		}
	});
	var footnotes = $$('sup');
	footnotes.each(function(fn){
		fn.addEvent('click', function() {
			var scrollit = new Fx.Scroll(window, {
				onComplete: function(){
					$('birdseed').highlight('#eee');
				}
			}).toElement('birdseed');
		});
	});


	/************************************
		FIRST CHECK FOR CSS SUPPORT
	************************************/
	function checkCSS()
	{
		var newDiv = document.createElement('div');
		document.body.appendChild(newDiv);
		newDiv.style.visibility = 'hidden';
		newDiv.style.width = '20px';
		newDiv.style.padding = '10px';
		var divWidth = newDiv.offsetWidth;
		if (divWidth != 40) {
			document.body.removeChild(newDiv);
			return false;
		}
		else {
			document.body.removeChild(newDiv);
			return true;
		}
	}


	/************************************
		REPLACE TEXT
	************************************/
	if (checkCSS()) {
		Cufon.replace('div#mission p, blockquote, div#body div#content h1', { fontFamily: 'InterstateLight' });
		Cufon.replace('div#slideshow ol li div.caption div.headline, table#fc_outer tr#month_year th.current-month, table#fc_inner thead tr#days_of_week th', { fontFamily: 'Interstate' });
		Cufon.replace('body#home div#header h1', { fontFamily: 'InterstateLight' });
	}


	/************************************
		GLOBAL SMOOTHSCROLL
	************************************/
	new SmoothScroll({
		duration: 600,
		transition:Fx.Transitions.Cubic.easeOut
	}, window);
	


	/************************************
		SEARCH FIELD
	************************************/
	if ($('searchbox')) {
		$('searchbox').addEvent('focus', function(event){
			if ($('searchbox').get('value') == 'Search') $('searchbox').set('value', '');
			$('searchbox').addClass('focused');
		});
		$('searchbox').addEvent('blur', function(event){
			if ($('searchbox').get('value') == '') $('searchbox').set('value', 'Search');
			if ($('searchbox').get('value') == 'Search') $('searchbox').removeClass('focused');
		});
	}


	/************************************
		SEARCH FIELD
	************************************/
	var navigationdelay = [];
	var navprevious;
	$$('ul#main-navigation li').each(function(li, i){
		li.addEvent('mouseenter', function(event){
			li.addClass('hovered');
		});
		li.addEvent('mouseleave', function(event){
			li.removeClass('hovered');
		});
	});


	/************************************
		METADATA SUCCESS STORIES NAV
	************************************/
	if ($('sidebar-successstories')) {
		var storyfade;
		var successstories = $$('ol#successstories li');
		var successstorycount = successstories.length;
		if ($('successstory-paging')) $('successstory-paging').addClass('enabled');
		var activestory = 0;
		function switchstory(li, direction, inout)
		{
			if (storyfade) storyfade.cancel();
			storyfade = new Fx.Morph(li, {
				duration: 300,
				transition:Fx.Transitions.Cubic.easeInOut,
				onStart: function(){
					if (inout == 'in') {
						li.removeClass('deactivated');
						storyfade.set({'opacity': 0});
					}
				},
				onComplete: function(){
					if (inout == 'out') {
						li.addClass('deactivated');
						if (direction == 'next')
							activestory = (activestory == (successstorycount - 1)) ? 0 : activestory + 1;
						else if (direction == 'prev')
							activestory = (activestory == 0) ? (successstorycount - 1) : activestory - 1;
						switchstory(successstories[activestory], direction, 'in');
					}
				}
			});
			if (inout == 'in')
				storyfade.start({ 'opacity': [0,1] });
			else if (inout == 'out')
				storyfade.start({ 'opacity': [1,0] });
		}
		successstories.each(function(li, i){
			if (i > 0) {
//				li.addClass('deactivated');
			}
		});
		if ($('next-successstory')) {
			$('next-successstory').addEvent('click', function(event){
				switchstory(successstories[activestory], 'next', 'out');
			});
		}
		if ($('prev-successstory')) {
			$('prev-successstory').addEvent('click', function(event){
				switchstory(successstories[activestory], 'prev', 'out');
			});
		}
		switchstory(successstories[0], 'next', 'in');
	}

	/************************************
		DISABLE FORM SUBMIT BUTTON
	************************************/
	var forms = $$('form');
	forms.each(function(form, i){
		form.addEvent('submit', function() {
			var submit = form.getElement('input[type=submit]');
			submit.set('value','One moment...');
			submit.setProperty('disabled','true');
			submit.setStyle('opacity', .6);
		});
	});

	/************************************
		DOCUMENT SIDEBAR TREE MENU
	************************************/
	if (window.ie6) var heightValue = '100%';
	else var heightValue = '';

	var togglerName = 'a.toggler_';
	var contentName = 'ul.content_';

	var counter = 1;	
	var toggler = $$(togglerName + counter);
	var content = $$(contentName + counter);

	while (toggler.length>0)
	{
		new Accordion (toggler, content, {
			opacity: false,
			display: -1,
			alwaysHide: true,
			transition:Fx.Transitions.Cubic.easeInOut,
			duration: 400,
			onComplete: function() {
				var element = $(this.elements[this.previous]);
				if (element && element.offsetHeight > 0) element.setStyle('height', heightValue);
			},
			onActive: function(toggler, content) {
				toggler.getParent().toggleClass('selected');
			},
			onBackground: function(toggler, content) {
				toggler.getParent().removeClass('selected');
			}
		});

		counter++;
		toggler = $$(togglerName + counter);
		content = $$(contentName + counter);
	}

	/************************************
		EXTENDED CONTENT
	************************************/
	var ext_content = $$('.extended-content'),
		ext_buttons = $$('.extended-content-switch');
	ext_content.each(function(div){
		div.set('slide', {
			duration: 500,
			transition: 'expo:in:out'
		}).slide('hide');
	});
	ext_buttons.each(function(a){
		a.addEvent('click', function(event){
			event.preventDefault();
			var rel = this.get('rel');
			$(rel).slide('toggle');
		});
	});

});

