$(document).ready(function() {
	initMenus();
	initSlideShow();
	initPartners();
	initOther();
});


function initMenus() {
	//Animate Main Menu
	if($('#menu')) {
		/*
		$('#menu li').hover(
			function() {
				$(this).children('ul').dequeue().slideDown('fast', function() {$(this).css('opacity', 1);});
			},
			function() {
				$(this).children('ul').dequeue().delay(500).fadeOut('fast', function() {$(this).css('opacity', 0);});
			}
		)
		*/
		$('#menu > li').has('ul').addClass('dropdown');	
	}
	
	//Accordion Side Menu
	if($('#sidebar .submenu')) {
		$('#sidebar > .submenu > li').has('ul').accordion({
			collapsible: true,
			navigation: true,
			autoHeight: false,
			active: false
		});
		$('#sidebar > .submenu > li').has('ul').addClass('dropdown');	
	}
}

function initPartners() {
	//Rotating Partners
	if($('#partners')) {
		
		var fadeItems = $('#partners a');
		var fadeLength = fadeItems.length;

		function startFade() {
			//start with a random partner
			var fadeNum = Math.floor(Math.random() * fadeLength);
			//fade first partner into view
			nextFade();
			//start looping through
			setInterval(nextFade, 5000);
			function nextFade() {
				//fade out everything except target partner
				$(fadeItems).filter(function(index) {
					return index != fadeNum;						 
				}).fadeOut();
				//fade in target partner
				$(fadeItems[fadeNum]).fadeIn();
				//find next partner
				if (fadeNum < (fadeLength-1)) {
					fadeNum++;
				} else {
					fadeNum = 0;
				}
			}
		}
		startFade();
	}
}

function initSlideShow() {
	var slideshow = $('#slideshow');
	var slides = slideshow.children('img');
	var fadeNum = 0;
	var cycles = 2;
	var cycleNum = 0;
	
	//if at least one slide:
	if(slides.length != 0) {
		//wrap each with a div and overlay the title
		slides.each(function() {
			var slide = $(this).detach();
			var alt = slide.attr('alt');
			var title = $('<div class="title" />').html(alt);
			var wrap = $('<div class="slide" />').appendTo(slideshow);
			wrap.append(title).append(slide);
		});
	}
	
	//if more than one slide:
	if(slides.length > 1) {
		//create the menu
		var menu = $('<div class="slide_menu" />').prependTo(slideshow);
		slides.each(function(index) {
			//add buttons for each slide
			if(index == 0) {
				menu.append($('<a href="#" class="active">' + (index + 1) + '</a>'));
			} else {
				menu.append($('<a href="#">' + (index + 1) + '</a>'));
			}
			//add id's to each slide
			$(this).parent().attr('id', 'slide' + (index + 1));
		});
		//add events to each button
		var buttons = menu.children('a');
		buttons.each(function(index) {
			$(this).click(function() {
				fadeNum = index;
				nextFade();
				return false;					   
			});
		});
		//adjust slide title positioning to accommodate a gigantic menu
		if(slides.length > 1) {
			var menu_h = menu.height();
			slides.each(function() {
				var title = $(this).parent().children('.title');
				var title_y = parseInt(title.css('top')) + menu_h - 25;
				title.css('top', title_y);					 
			});
		}
		var auto_fade = null;
		function nextFade() {
			if(auto_fade != null) {
				clearInterval(auto_fade);
			}
			var slide_items = $('.slide');
			var fadeLength = slide_items.length;
			//fade out everything except target slide
			$(slide_items).filter(function(index) {
				return index != fadeNum;						 
			}).fadeOut();
			//fade in target slide
			$(slide_items[fadeNum]).fadeIn();
			//set active menu button
			buttons.removeClass('active');
			buttons.eq(fadeNum).addClass('active');
			//find next slide
			if (fadeNum < (fadeLength-1)) {
				fadeNum++;
			} else {
				fadeNum = 0; //start over at beginning
				cycleNum++;
			}
			if(cycleNum >= cycles) {
				clearInterval(auto_fade); //stop cycling
			} else {
				auto_fade = setInterval(nextFade, 5000); //continue cycling
			}
		}
		nextFade();		
	}
}


function initOther() {
	//Colorbox
	$("a[rel='boxed']").colorbox();

	//Fix Lists
	$('ul').children('li:last-child').addClass('last');
}

function initTabbing() {
	//Setup Tabbing
	var profile_tabs = $('.bsi_tabs > li > a');
	profile_tabs.click(function() {
		profile_tabs.removeClass('active');
		$(this).addClass('active');
	});

	var start_page = self.document.location.hash.substring(1);
	var start_tab = profile_tabs.filter('a[href=#' + start_page + ']');

	if(start_tab.length) {
		start_tab.click();
	} else {
		profile_tabs.first().click();
	}

}

function showTabSection(id) {
	//Show Tab Section
	//hide target section
	$('.bsi_tab_content').hide();
	//show target section
	$(id).slideDown('slow');
}

function injectMessage(text, type, duration) {
	//type = error, notification, success
	if(isEmpty(text)) return false;
	if(!type) type = 'notification';
	$('html, body').animate({ scrollTop: 0 });
	if(typeof text == 'object') {
		$.each(text, function(key, val) {
			var message = $('<p>' + val + '</p>').hide().addClass(type).appendTo('#messages').slideDown('slow');
			if(duration) message.delay(duration).slideUp('fast', function() { $(this).remove(); });
		});
	} else {
		var message = $('<p>' + text + '</p>').hide().addClass(type).appendTo('#messages').slideDown('slow');
		if(duration) message.delay(duration).slideUp('fast', function() { $(this).remove(); });
	}
}

function clearMessages(type) {
	!type ? $('#messages p').slideUp() : $('#messages p.'+type).slideUp();
}

function isEmpty(input){
  if(input == false) return true;
  if(typeof input == 'undefined') return true;
  if(typeof input == 'object'){
	for (var name in input) { return false; }
  }
  //string
  return !(input && input.length);
}

