if(!window.SIMS){
	window.SIMS = {};
}

SIMS = {
	init:function() {
		var self = this;
		
		Cufon.replace('h1', {color: '-linear-gradient(#1579aa, #115b80)'});
		Cufon.replace('.h1', {color: '-linear-gradient(#1579aa, #115b80)'});
		Cufon.replace('.h2');
		Cufon.replace('.cta', {textShadow: '-1px -1px rgba(0, 0, 0, 0.1)', hover:true});
		Cufon.replace('ul.nav-panels li div.tooltip-target h2', {textShadow: '0px -1px rgba(0, 0, 0, 0.3)', hover:true});
		Cufon.replace('.nav-primary a', {textShadow: '1px 1px rgba(0, 0, 0, 0.2)', hover:true});
		Cufon.replace('.drawer-link', {textShadow: '1px 1px rgba(0, 0, 0, 0.2)', hover:true});
		Cufon.replace('.brow');
		Cufon.replace('.footer-links .brow', {textShadow: '1px 1px rgba(0, 0, 0, 0.2)'});
		Cufon.replace('div.tabs ul.nav-panels-pagi li a', {hover:true});
		Cufon.replace('.date-available');
		Cufon.replace('#hero .content-switcher h2.h1', {color: '-linear-gradient(#1579aa, #115b80)'});
		Cufon.replace('p.panel-count');
		Cufon.replace('ul.page-nav a');
	}
};

SIMS.Config = {
	isIE: !!(navigator.userAgent.indexOf('MSIE') >= 0),
	isIE6: !!(navigator.userAgent.indexOf('MSIE 6') >= 0),
	isIE7: !!(navigator.userAgent.indexOf('MSIE 7') >= 0),
	isIE8: !!(navigator.userAgent.indexOf('MSIE 8') >= 0),
	isIE9: !!(navigator.userAgent.indexOf('MSIE 9') >= 0)
};

CALLOUTS = {
	init:function() {
		$("div.content-drawer").hide();
		$('div.callout').hover(function(){
			$(this).find("div.content-drawer").slideToggle();
			return false; //prevents page from jumping due to href="#"
		});		
	}
};



// --------------------------------------------------
//
// Modal Window
//
// USAGE: myModal = new SIMS.modalWindow(target, options);
//
// AUTHOR: MC
//
// DEPENDENCIES:
// jQuery 1.6 or later
//
// --------------------------------------------------

SIMS.modalWindow = function(target, options){
	var base = this;

	base.options = $.extend({
		className: 'modal-window',
		modalFadeDuration: 400,
		onModelOpen: function(){}, // runs when modal window is opened
		callback: function(){} // runs when modal is instantiated
	}, options || {});

	base.elLink = target;

	base.init();
	base.options.callback();
};

SIMS.modalWindow.prototype = {
	init:function(){
		var base = this;

		base.buildModal();
		base.bindEvents();
	},
	bindEvents:function(){
		var base = this;

		base.elLink.click(function(e){
			e.preventDefault();

			base.showModal(this);
		});

		$('div#overlay').live('click', function(){
			base.hideModal();
		});

		$('button#btn-modal-close').live('click', function(){
			base.hideModal();
		});

		$(window).bind('resize', function(){
			base.positionModal();
		});

		//$(window).scroll(function(e){
		//	base.positionModal();
		//});

		$(document).keydown(function(e){
			if(e.keyCode === 27){
				base.hideModal();
			}
		});
	},
	buildModal:function(){
		var base = this;

		base.elOverlay = $('<div id="overlay" />').fadeTo(0, '0.90');
		base.elModal = $('<div id="modal-window" />').addClass(base.options.className);
		base.elBtnClose = $('<button id="btn-modal-close"></button>');

		base.elOverlay.css({
			height: ($(document.viewport).height() > $(document.body).height() ? $(document.viewport).height() : $(document.body).height()) + 'px'
		});
	},
	positionModal:function(){
		var base = this,
			leftPosition = (( $(window).width() - base.elModal.width() ) / 2) + 'px',
			topPosition = (( $(window).height() - base.elModal.height() ) / 2) + 'px';

		base.elModal.css({
			'left' : leftPosition,
			'top' : topPosition
		});
	},
	showModal:function(el){
		var base = this,
			targetId = $(el).attr('href');

		base.modalContent = base.elModal.append($(targetId).children().clone(true));
		base.elModal.append(base.elBtnClose);
		$('body').append(base.elOverlay, base.elModal);

		base.positionModal();

		base.elOverlay.fadeIn(base.options.modalFadeDuration);

		// callback function to run modal is opened
		base.options.onModelOpen($(targetId), base.modalContent, el);

		base.modalContent.fadeIn(base.options.modalFadeDuration);
	},
	hideModal:function(){
		var base = this;

		base.elOverlay.fadeOut(base.options.modalFadeDuration, function(){
			$(this).remove();
		});

		base.elModal.fadeOut(base.options.modalFadeDuration, function(){
			$(this).remove();
		}).empty();

		$(document).unbind('keydown', base.hideModal);
	}
};

// --------------------------------------------------
//
// Video Player Embed
//
// USAGE: myVideo = new SIMS.embedVideo(target, options);
//
// AUTHOR: MC
//
// DEPENDENCIES:
// jQuery 1.6 or later
//
// --------------------------------------------------

SIMS.embedVideo = function(source, target, options){
	var base = this;
	
	base.options = $.extend({
		autoPlay: false,
		expressInstall: false,
		flashPath: '_ui/swf/',
		flashVersion: '9.0.115.0',
		onVideoLoad: function(){},
		callback: function(){}
	}, options || {});

	base.elSource = source;
	base.elTarget = target;

	base.init();
	base.options.callback();
};

SIMS.embedVideo.prototype = {
	init:function(){
		var base = this, i, ii,
			flashTarget = $('<div />');

		$('#' + base.flashVideoId).remove();

		for(i = 0, ii = base.elTarget.length; i < ii; i++){
			base.flashVideo = $(base.elSource[i]).attr('data-video-id');
			base.flashVideoId = 'flash-' + $(base.elTarget[i]).attr('id');
			base.flashPlaylist = $(base.elSource[i]).attr('data-play-list');

			// if height or width are passed through options use those, else use data attributes
			base.flashHeight = base.options.flashHeight ? base.options.flashHeight : $(base.elSource[i]).attr('data-height');
			base.flashWidth = base.options.flashWidth ? base.options.flashWidth : $(base.elSource[i]).attr('data-width');

			flashTarget.attr('id', base.flashVideoId);
			flashTarget.height(base.flashHeight);
			flashTarget.width(base.flashWidth);

			base.elTarget.append(flashTarget);

			//setTimeout(function(){
				base.embedSWF();
				base.options.onVideoLoad(base.flashVideo);
			//}, 3000);
		}
	},
	embedSWF:function(){
		var base = this,
			settings, flashVars,
			parameters, attributes;

		base.settings = {
			expressInstall: base.options.expressInstall,
			id: base.flashVideoId,
			height: base.flashHeight,
			path: base.options.flashPath,
			version: base.options.flashVersion,
			width: base.flashWidth
		};
		base.flashVars = {
			autoPlay: base.options.autoPlay,
			playlistID: base.flashPlaylist,
			videoID: base.flashVideo,
			callback: 'videoPlayerReady'
		};
		base.parameters = {
			bgcolor: '#cccccc',
			allowFullscreen: 'true',
			allowScriptAccess: 'always'
		};
		base.attributes = {
			wmode: 'transparent'
		};

		swfobject.embedSWF(base.settings.path, base.settings.id, base.settings.width, base.settings.height, base.settings.version, base.settings.expressInstall, base.flashVars, base.parameters, base.attributes);
	}
};

// --------------------------------------------------
//
// Content Switcher
//
// USAGE: homeCarousel = new SIMS.contentSwitcher(target, options);
//
// AUTHOR: MC
//
// DEPENDENCIES:
// jQuery 1.6 or later
//
// --------------------------------------------------

SIMS.contentSwitcher = function(target, options){
	var base = this;
	
	var rv = -1;
	if (navigator.appName == 'Microsoft Internet Explorer'){
		 var ua = navigator.userAgent;
		 var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		 if (re.exec(ua) != null){
		   rv = parseFloat( RegExp.$1 );
		 }
	}

	base.options = $.extend({
		elWrapper: null,			// wrapper element
		panelTitleSelector: null,	// button/tab text
		contentSelector: null,		// content element for fancy load in
		btnElement: null,           // override default button element
		currentIndex: 0,			// index for first content loaded
		maxItems: 5,				// max items in switcher
		autoCycle: false,			// boolean for auto cycling
		cycleSpeed: 6000,			// speed through auto cycle
		panelFadeDuration: 1000,	// duration for switching panels
		maxRotations: 1,			// max num of auto-cycles
		pagination: false,			// boolean for pagination buttons
		arrows: false,				// boolean for arrow buttons
		showNext: false,			// boolean for displaying next panel title
		showNextText: 'Next: ',     // next text indicator
		itemCount: false,			// boolean for item count display
		itemCountSeparator: ' of ',	// set separator for item count,
		onPanelSwitch: function(){},
		callback: function(){}
	}, options || {});

	base.elPanel = target;
	base.animating = false;
	base.elWrapper = !!base.options.elWrapper ? base.options.elWrapper : base.elPanel.parent();
	base.browser = rv;
	base._panelLen = base.elPanel.length;
	base._cycleCount = base._panelLen * base.options.maxRotations;

	base.init();
	base.options.callback(base.elPanel);
};

SIMS.contentSwitcher.prototype = {
	init:function(){
		var base = this, i, ii, contentNodeLeftPosition,
			elContentNodes = $(base.elWrapper).find(base.options.contentSelector).children();

		// cache current panel
		base.elCurrentPanel = $(base.elPanel[base.options.currentIndex]);

		// cache original left position for all content elements
		for(i = 0, ii = elContentNodes.length; i < ii; i++){
			contentNodeLeftPosition = $(elContentNodes[i]).position().left;

			$(elContentNodes[i]).data('leftPosition', contentNodeLeftPosition);
		}

		// hide all panels except the default panel
		base.elPanel.hide();
		base.elCurrentPanel.show().addClass('on');

		// build out navigation
		base.buildNav();

		// animate default panels content
		if(base.options.contentSelector){
			base.animateContent();
		}

		// cycle through panels
		if(base.options.autoCycle){
			base.cycle = setTimeout(function(){
				base.autoCycle();
			}, base.options.cycleSpeed);
		}
	},
	buildNav:function(){
		var base = this, i, ii,
			elNavLink, itemCount,
			elBtnBack, elBtnNext,
			btnText, btnElement,
			elNextPanel, nextPanelText;

		itemCount = base.elPanel.length > base.options.maxItems ? base.options.maxItems : base.elPanel.length;
		btnElement = base.options.btnElement ? base.options.btnElement : 'button';

		if(itemCount > 1){
			base.elControlsWrapper = $('<div class="panel-controls"></div>');

			// build out pagination/tabs
			if(base.options.pagination){
				base.elNavPagiWrapper = $('<ul class="nav-panels-pagi" />');

				for(i = 0, ii = itemCount; i < ii; i++){
					btnText = base.options.panelTitleSelector ? $(base.elPanel[i]).find(base.options.panelTitleSelector).html() : 'Panel ' + (i + 1);
					elNavLink = $('<li><' + btnElement + '>' + btnText + '</' + btnElement + '></li>');
	
					if(i === base.options.currentIndex){
						elNavLink.addClass('on');
					}
	
					base.elNavPagiWrapper.append(elNavLink);
				}
	
				base.elControlsWrapper.append(base.elNavPagiWrapper);
			}

			// build arrow buttons
			if(base.options.arrows){
				base.elNavArrowsWrapper = $('<ul class="nav-panels-arrows" />');
				
				elBtnBack = $('<li class="btn-back"><' + btnElement + '><span class="offscreen">Back</span></' + btnElement + '></li>');
				elBtnNext = $('<li class="btn-next"><' + btnElement + '><span class="offscreen">Next</span></' + btnElement + '></li>');

				base.elNavArrowsWrapper.append(elBtnBack, elBtnNext);
				base.elControlsWrapper.append(base.elNavArrowsWrapper);

				if(base.options.currentIndex === 0){
					base.elNavArrowsWrapper.children('li.btn-back').addClass('disabled');
				}else if(base.options.currentIndex === base.elPanel.length - 1){
					base.elNavArrowsWrapper.children('li.btn-next').addClass('disabled');
				}
			}

			// display item count
			if(base.options.itemCount){
				base.elCountWrapper = $('<p class="panel-count"></p>');
				base.elCountAfterIE = $('<p class="panel-after"></p>');

				base.elCountWrapper.text((base.elCurrentPanel.index() + 1) + base.options.itemCountSeparator + (base.elPanel.length));
				base.elControlsWrapper.append(base.elCountWrapper);
				base.elControlsWrapper.append(base.elCountAfterIE);
			}

			// display next panel title
			if(base.options.showNext){
				base.elShowNextWrapper = $('<p class="panel-next"></p>');

				elNextPanel = base.elCurrentPanel[0] !== base.elPanel.last()[0] ? base.elPanel[base.elCurrentPanel.index() + 1] : base.elPanel[0];
				nextPanelText = base.options.showNextText + $(elNextPanel).find(base.options.panelTitleSelector).text();

				base.elShowNextWrapper.text(nextPanelText);
				base.elControlsWrapper.append(base.elShowNextWrapper);
			}

			base.elWrapper.prepend(base.elControlsWrapper)
		}

		base.bindEvents();
	},
	bindEvents:function(){
		var base = this,
			direction;

		// bind click to all pagination/tab buttons
		if(base.elNavPagiWrapper){
			base.elNavPagiWrapper.children('li').click(function(e){
				e.preventDefault();
				if(!base.animating){
					base.switchPanel($(this).index());

					clearTimeout(base.cycle);
					clearTimeout(base.progressInterval);
				}
			});
		}

		// bind click to arrow buttons
		if(base.elNavArrowsWrapper){
			base.elNavArrowsWrapper.children('li').click(function(e){
				e.preventDefault();
				if(!base.animating){
					direction = $(this).hasClass('btn-back') ? 'back' : 'next';

					if(direction === 'back' && base.elCurrentPanel.index() > 0){
						base.switchPanel(base.elCurrentPanel.index() - 1);
					}else if(direction === 'next' && base.elCurrentPanel.index() < base.elPanel.length - 1){
						base.switchPanel(base.elCurrentPanel.index() + 1);
					}

					clearTimeout(base.cycle);
					clearTimeout(base.progressInterval);
				}
			});
		}
	},
	switchPanel:function(index){
		var base = this,
			elTargetPanel;

		if(index !== undefined){
			elTargetPanel = base.elPanel[index];
		}else{
			if(base.elCurrentPanel.next('li').length && base.elCurrentPanel.next('li').index() + 1 <= base.options.maxItems){
				elTargetPanel = base.elCurrentPanel.next('li');
			}else{
				elTargetPanel = $(base.elPanel[0]);
			}

			index = elTargetPanel.index();
		}

		if(base.elCurrentPanel[0] !== elTargetPanel && !base.animating){
			if(base.browser == 7 || base.browser == 8){
				base.elCurrentPanel.removeClass('on').hide();

				$(elTargetPanel).addClass('on').show();
			}else{
				base.animating = true;

				base.elCurrentPanel.removeClass('on').fadeOut(base.options.panelFadeDuration / 2);
				$(elTargetPanel).addClass('on').fadeIn(base.options.panelFadeDuration, function(){
					if(!base.options.contentSelector){
						base.animating = false;
					}
				});
			}

			base.elPreviousPanel = base.elCurrentPanel;
			base.elCurrentPanel = $(elTargetPanel);

			if(base.options.contentSelector){
				base.animateContent();
			}

			base.updateUI(index);

			// switching panel event
			$('body').trigger('SIMS:switchPanel');
			base.options.onPanelSwitch(base.elCurrentPanel);
		}
	},
	updateUI:function(index){
		var base = this,
			elNextPanel,
			nextPanelText;

		// update current panel indicator
		if(base.options.pagination){
			base.elNavPagiWrapper.children('li').removeClass('on');
			
			$(base.elNavPagiWrapper.children('li')[index]).addClass('on');

			//$($('ul.nav-panels-pagi li')[base.elCurrentPanel.prevAll().not('.panel-controls').length]).addClass('on');
		}

		// enable/disable arrows
		if(base.options.arrows){
			base.elNavArrowsWrapper.children('li').removeClass('disabled');

			if(base.elCurrentPanel.index() === 0){
				base.elNavArrowsWrapper.children('li.btn-back').addClass('disabled');
			}else if(base.elCurrentPanel.index() === base.elPanel.length - 1){
				base.elNavArrowsWrapper.children('li.btn-next').addClass('disabled');
			}
		}

		// keep track of current panel
		if(base.options.itemCount){
			base.elCountWrapper.text((base.elCurrentPanel.index() + 1) + base.options.itemCountSeparator + (base.elPanel.length));
		}

		// show upcoming panel
		if(base.options.showNext){
			elNextPanel = base.elCurrentPanel[0] !== base.elPanel.last()[0] ? base.elPanel[base.elCurrentPanel.index() + 1] : base.elPanel[0];
			nextPanelText = base.options.showNextText + $(elNextPanel).find(base.options.panelTitleSelector).text();

			base.elShowNextWrapper.text(nextPanelText);
		}
	},
	animateContent:function(){
		
		var base = this, loadInterval, currentIndex = 0,
			elContent = base.elCurrentPanel.children(base.options.contentSelector).children();

			base.animating = true;
				
		loadInterval = setInterval(function(){
			if(currentIndex <= elContent.length - 1){
				if(base.browser == 7 || base.browser == 8){
					$(elContent[currentIndex]).show();
				}else{
					$(elContent[currentIndex]).animate({
						left : 0,
						opacity : 1
					}, 1000, 'easeOutExpo');
				}
				currentIndex += 1;	
			}else{
				if(base.elPreviousPanel){
					base.resetContent();
				}

				currentIndex = 0;
				base.animating = false;

				clearInterval(loadInterval);
			}
		}, 500);
	},
	resetContent:function(){
		var base = this, i, ii,
			elContent = base.elPreviousPanel.children(base.options.contentSelector).children();

		for(i = 0, ii = elContent.length; i < ii; i++){
			
			if(base.browser == 7 || base.browser == 8){
				$(elContent[i]).show();
			}else{
				$(elContent[i]).css({
					left : $(elContent[i]).data('leftPosition'),
					opacity : 1
				});
			}

		}
	},
	autoCycle:function(){
		var base = this,
			index;

		(function cycleNode(){

			base.switchPanel();
			base.progressInterval = setTimeout(cycleNode, base.options.cycleSpeed);
			base._cycleCount--;
			if (base._cycleCount == 0) {
				base.options.autoCycle = false;
				clearTimeout(base.cycle);
				clearTimeout(base.progressInterval);
			}
		
		})();
	}
};

// --------------------------------------------------
//
// Tooltip Widget
//
// USAGE: var YourTooltip = new SIMS.tooltip(triggers, targets, options), where targets are children of triggers in the markup
//
// VERSION: 0.1
// AUTHOR: CM
//
// DEPENDENCIES:
// jQuery 1.6 or later
//
// --------------------------------------------------

SIMS.tooltip = function(triggers, targets, options){
	var base = this;
	
	base.triggers = triggers;
	base.targets = targets;
	base.delayTimeout = '';
	base.activeClass = 'active';
	
	base.options = $.extend({
		animateDelay: 75, 	// number ms timeout to add to hover events
		animateIn: 'fade', 	// use fade transition, optionally pass in a custom animation function instead (sends target jquery object as parameter), else 'none' for just show
		animateOut: 'fade', // use fade transition, optionally pass in a custom animation function instead (sends target jquery object as parameter), else 'none' for just hide
		fadeSpeed: 200,		// speed used for default fade animation
		detectEdges: true, 	// detect content size and browser edges and apply css classes accordingly - if true, script will apply absolute position values for you (don't add them in css)
		buildContent: null 	// optional function to call to build tooltip markup (if left null, widget just shows/hides whatever is in the target container)
	}, options || {});
	
	base.init();
};

SIMS.tooltip.prototype = {
	
	init: function(){
		var base = this;

		if(base.options.buildContent != null){ // optional function passed in for building/setup of tooltip content
			base.options.buildContent();
		}
		
		base.triggers.live({
			mouseenter: function(e){
				base._enterHandler($(this));
			}, 
			mouseleave: function(e){
				base._leaveHandler($(this));
			}
		});
	},
	
	// handle/delegate mouse enter events
	_enterHandler: function(trigger){
		var base = this,
			target = trigger.find(base.targets);
		
		clearTimeout(base.delayTimeout);
		base.delayTimeout = setTimeout(function(){
			if(base.options.detectEdges === true){
				base._detectEdges(trigger, target);
			}else{
				base.showTooltip(target);
			}
		}, base.options.animateDelay);
	},
	
	// handle/delegate mouse leave events
	_leaveHandler: function(trigger){
		var base = this,
			target = trigger.find(base.targets);
		clearTimeout(base.delayTimeout);	
		base.hideTooltip(target);
	},
	
	// option: detect window size and determine css class to apply to tooltip target container (above, below, left, right classes)
	_detectEdges: function(trigger, target){
		var base = this,
			windowHeight = $(window).height(),
			windowWidth = $(window).width(),
			triggerPosition = { // coordinates are set to the center of the trigger object
				top: (trigger.offset().top - $(window).scrollTop()) + (trigger.height() / 2),
				left: trigger.offset().left + (trigger.width() / 2)
			},
			targetPositionClass = 'tooltip-';
			targetPositionCss = {};
		// clear any previous position class names
		target.removeClass('tooltip-above-left tooltip-below-left tooltip-above-right tooltip-below-right').attr('style', '');
		
		// set vertical position
		if(windowHeight - triggerPosition.top > triggerPosition.top){
			targetPositionClass += 'below-';
			targetPositionCss.top = trigger.height() + 'px';
		}else{
			targetPositionClass += 'above-';
			targetPositionCss.bottom = trigger.height() + 'px';
		}
		
		// set horizontal position
		if(windowWidth - triggerPosition.left > triggerPosition.left){
			targetPositionClass += 'right';
			targetPositionCss.left = '0px';
		}else{
			targetPositionClass += 'left';
			targetPositionCss.right = '0px';
		}
		target.addClass(targetPositionClass).css(targetPositionCss);
		base.showTooltip(target);
	},
	
	// show tooltip - options are 'fade' (default), 'none', or callback animation function
	showTooltip: function(target){
		var base = this;
		
		target.addClass(base.activeClass);
		if(base.options.animateIn == 'fade'){
			target.stop(true, true).fadeIn(base.options.fadeSpeed);
		}else if(typeof base.options.animateIn == 'function'){
			base.options.animateIn(target);
		}else{
			target.show();
		}
	},
	
	// hide tooltip - options are 'fade' (default), 'none', or callback animation function
	hideTooltip: function(target){
		var base = this;
		
		target.removeClass(base.activeClass);
		if(base.options.animateOut == 'fade'){
			target.stop(true, true).fadeOut(base.options.fadeSpeed);
		}else if(typeof base.options.animateOut == 'function'){
			base.options.animateOut(target);
		}else{
			target.hide();
		}
	}
	
};

$(document).ready(function() {
	$('body').removeClass('no-js');
	SIMS.init();
	CALLOUTS.init();
});

//--------------------------------------------------
//
// Content Toggle
//
// USAGE: var contentToggle = new SIMS.contentToggle(contents, options), where contents are elements inside of a content div
//
// VERSION: 0.1
// AUTHOR: ML
//
// DEPENDENCIES:
// jQuery 1.6 or later
//
// --------------------------------------------------
SIMS.contentToggle = function(contents, options) {
	var base = this;
	
	base.contents = contents;
	base.options = $.extend({
		hideStr: 'Hide', 	// The text for hide state
		showStr: 'Show' 	// The text for show state
	}, options || {});
	
	base.init();
};

SIMS.contentToggle.prototype = {

	init: function() {
		var base = this, i, ii, 
				   elBtnShow, elBtnHide, 
				   elContent, elMoreContent;
		
		var itemCount = base.contents.length;
		
		for(i = 0, ii = itemCount; i < ii; i++){
			elBtnHide = $("<button class='toggle btn-hide-content'><span>" + base.options.hideStr + "</span></button>");
			elBtnShow = $("<button class='toggle btn-show-content'><span>" + base.options.showStr + "</span></button>");
			elMoreContent = base.contents[i];
			elContent = $(elMoreContent).parent();
			elContent.append(elBtnHide);
			elContent.append(elBtnShow);
			// bind mouse events
			base._removeUnderline(elBtnShow);
			base._removeUnderline(elBtnHide);
			base._hideMoreContent(elBtnShow, elBtnHide, elMoreContent);
		}
	},
	
	_addUnderline: function(btn) {
		var base = this;
		$(btn).css('text-decoration', 'underline');
		$(btn).unbind('mouseover');
		$(btn).bind('mouseout', function() {
			base._removeUnderline(btn);
		});
	},
	
	_removeUnderline: function(btn) {
		var base = this;
		$(btn).css('text-decoration', 'none');
		$(btn).unbind('mouseout');
		$(btn).bind('mouseover', function() {
			base._addUnderline(btn);
		});
	},
	
	_showMoreContent: function(btnShow, btnHide, content) {
		var base = this;
		$(btnShow).css('display', 'none');
		$(content).css('display', 'inline');
		$(btnHide).css('display', 'inline');
		$(btnHide).bind('click', function(){
			base._hideMoreContent(btnShow, btnHide, content);
		});
	},
	
	_hideMoreContent: function(btnShow, btnHide, content) {
		var base = this;
		$(content).css('display', 'none');
		$(btnHide).css('display', 'none');
		$(btnShow).css('display', 'inline');
		$(btnShow).bind('click', function(){
			base._showMoreContent(btnShow, btnHide, content);
		});
	}

};
