﻿if (!RightNow) var RightNow = {};
if (!RightNow.UI) RightNow.UI = {};
if (!RightNow.UI.Homepage) RightNow.UI.Homepage = {};

/* global options for floatbox */
fbPageOptions = {
	'overlayOpacity': 80,
	'shadowType': 'drop',
	'shadowSize': 8,
	'roundCorners': 'none',
	'outerBorder': 0,
	'innerBorder': 15,
	'captionPos': 'bl',
	'boxTop': 180,
	'color': 'black'
};

// RightNow.UI namespace
new function() {
	// namespace short hand
	var ME = RightNow.UI;
	var Q = jQuery;


	// DEBUG: test code for flipping stuff
	Q(function() {
		Q('#column-flip').click(function(event) {
			event.stopPropagation();
			event.preventDefault();
			var main = Q('.main_wide, .main_left, .main_right, .main_both');
			if (main.hasClass('main_wide')) {
				main.removeClass('main_wide').addClass('main_both');
			}
			else if (main.hasClass('main_both')) {
				main.removeClass('main_both').addClass('main_left');
			}
			else if (main.hasClass('main_left')) {
				main.removeClass('main_left').addClass('main_right');
			}
			else {
				main.removeClass('main_right').addClass('main_wide');
			}
		});
		Q('#steps-flip').click(function(event) {
			event.stopPropagation();
			event.preventDefault();
			var steps = Q('#steps-widget');
			if (steps.parent().hasClass('widget_horz')) {
				steps.detach().appendTo('.widget_vert');
			}
			else {
				steps.detach().prependTo('.widget_horz');
			}
		});
		Q('#tab-flip').click(function(event) {
			event.stopPropagation();
			event.preventDefault();
			Q('#tab-nav').toggle();
		});
	});


	// tab-nav li.hover for IE6; do it this way since jQuery's mouseover/out are problematic in this context
	if (Q.browser.msie && Q.browser.version.substr(0, 1) < 7) {
		Q(function() {
			var nlLIs = document.getElementById('tab-nav').getElementsByTagName('LI');
			for (var i = 0; i < nlLIs.length; i++) {
				nlLIs[i].onmouseover = function() { this.className += ' hover'; };
				nlLIs[i].onmouseout = function() { this.className = this.className.replace(/ hover\b/, ''); };
			}
		});
	}


	// tooltip popup for contact icons in the link panel
	function _ContactHoverIn(event) {
		var parentOffset = Q('#link-box').offset();
		var hoverX = event.pageX - parentOffset['left'];
		var hoverY = event.pageY - parentOffset['top'] + 20;
		Q('#contact-frame-hover > div > div').text(Q(event.target).attr('alt'));
		Q('#contact-frame-hover').css('left', hoverX + 'px').css('top', hoverY + 'px').show();
	};
	function _ContactHoverOut(event) {
		Q('#contact-frame-hover').hide();
	};
	Q(function() { Q('#contact-frame > a > img').hover(_ContactHoverIn, _ContactHoverOut); });


	// SEO bar related
	Q(function() {
		// move the SEO bar to the bottom on page load
		Q('#seo-bar').detach().insertBefore('#footer').show();

		// click handler for SEO bar
		Q('#seo-menu > li > a').click(function(event) {
			event.stopPropagation();
			event.preventDefault();

			var li = Q(event.target).parent();
			var wasActive = false;
			if (li.hasClass('active')) wasActive = true;

			var ul = Q(event.target).parent().parent();
			var panels = ul.siblings('.seo_links').children('.seo_link');
			var lis = ul.children('li');

			lis.removeClass('active');
			panels.removeClass('active');
			ul.siblings('.seo_links').removeClass('active');

			if (!wasActive) {
				li.addClass('active');
				for (var i = 0; i < lis.length; i++) {
					if (lis[i] == li[0]) {
						Q(panels[i]).addClass('active');
						ul.siblings('.seo_links').addClass('active');
						break;
					}
				}
			}
		});
	});


	// tabset/tab panels related
	Q(function() {
		// click handler for generic tabs and tab panels
		Q('div.tabset ul.tabs > li > a').click(function _TabClick(event) {
			event.stopPropagation();
			event.preventDefault();

			var li = Q(event.target).parent();
			var ul = Q(event.target).parent().parent();
			var panels = ul.siblings('div.panels').children('div.panel');
			var lis = ul.children('li');

			lis.removeClass('active');
			panels.removeClass('active');

			li.addClass('active');
			for (var i = 0; i < lis.length; i++) {
				if (lis[i] == li[0]) {
					Q(panels[i]).addClass('active');
					break;
				}
			}
		});

		// hide the javascript warn panel when JS is enabled
		Q('div.tabset div.jswarn').hide();

		// pre-select the first tab in each tabset on load
		Q('div.tabset ul.tabs > li:first-child > a').click();

		// force initial tab if set
		if (ME.activeTabSet && ME.activeTabId) {
			ME.SelectTab(ME.activeTabSet, ME.activeTabId);
		}
	});

	// public method for selecting a tab given a tabSet and tabId
	ME.SelectTab = function(tabSet, tabId) {
		Q('#tab_' + tabSet + '_' + tabId + ' > a').click();
	}

};


// RightNow.UI.Homepage namespace; specific to homepage only, in case we decide to split this off and load it separately
new function() {
	// namespace short hand
	var ME = RightNow.UI.Homepage;
	var Q = jQuery;


	var _isHome = false; // if this is the homepage; could drop these checks if this only loads on the homepage
	var _bulletClick = false; // whether the user clicked in the last banner interval
	var _bulletAutoClick = false;
	var _bulletInterval = 0; // banner interval id

	ME.bannerTimer = 15; // default 15s homepage banner interval


	Q(function() {
		// check if this is the homepage
		if (Q('#home-banners').length > 0) _isHome = true;
		if (!_isHome) return;


		// auto-build the home banner image switcher bullets on page load
		var banners = Q('#home-banners > div.home_banner');
		if (banners.length > 1) {
			var html = '<ul id="home-bullets">';
			for (var i = 0; i < banners.length; i++) {
				var liClass = '';
				if (i == 0) {
					liClass = ' class="active"';
				}
				html += '<li' + liClass + '><button /></li>';
			}
			html += '</ul>';
			Q('#home-banners').append(html);
		}


		// click handler for home bullet image switcher
		Q('#home-bullets > li > button').click(function(event) {
			event.stopPropagation();
			event.preventDefault();

			var li = Q(event.target).parent();
			var ul = li.parent();
			var allLi = ul.children('li');
			var banners = Q('#home-banners > div.home_banner');

			if (!_bulletAutoClick) {
				_bulletClick = true;
			}
			else {
				_bulletAutoClick = false;
			}

			var curLi = ul.children('li.active');
			var curBanner = Q('#home-banners > div:not(:hidden)');
			var nextLi;
			var nextBanner;

			for (var i = 0; i < allLi.length; i++) {
				if (li[0] == allLi[i]) {
					nextLi = Q(allLi[i]);
					nextBanner = Q(banners[i]);
					break;
				}
			}

			curLi.removeClass('active');
			nextLi.addClass('active');
			curBanner.fadeOut(300);
			nextBanner.fadeIn(300);
		});
	});


	// for IE6, auto-display the first banner
	if (Q.browser.msie && Q.browser.version.substr(0, 1) < 7) {
		Q(function() { Q('div.home_banner:first-child').show(); });
	}


	// timer for home bullet image switcher
	function _HomeInterval() {
		if (!_isHome) {
			window.clearInterval(_bulletInterval);
			return;
		}

		var bulletList = Q('#home-bullets');
		if (bulletList.length == 0) {
			window.clearInterval(_bulletInterval);
			return;
		}

		if (_bulletClick) {
			_bulletClick = false;
			return;
		}

		var ul = Q('#home-bullets');
		var allLi = ul.children('li');
		var curLi = ul.children('li.active');
		var nextLi;
		if (curLi.length == 0) {
			nextLi = ul.children('li:first-child');
		}
		else {
			for (var i = 0; i < allLi.length; i++) {
				if (allLi[i] == curLi[0]) {
					if ((i + 1) >= allLi.length) {
						nextLi = ul.children('li:first-child');
					}
					else {
						nextLi = Q(allLi[i + 1]);
					}
					break;
				}
			}
		}

		_bulletAutoClick = true;
		nextLi.children('button').click();
	};
	Q(function() {
		if (!_isHome) return;

		var timeOut = ME.bannerTimer;
		if (!timeOut) return;
		timeOut *= 1000;

		_bulletInterval = window.setInterval(_HomeInterval, timeOut);
	});

};

