(function($){
	NDW = {
		
		el: {
			sidebarIcon: '#sidebar a.icon',
			sidebarCaption: 'p#social-caption',
			applicationList: 'ul#main-applications',
			navList: 'ul#nav'
		},
		
		init: function(){
			NDW.initSocialMediaPanel();
			
			NDW.initWibiyaLinks();
			
			NDW.initCollapsingSidebar();
			
			NDW.hideUnsubscribeButton();
			
			NDW.initBlockquote();
			
			NDW.initShowMore();
			
			NDW.initNav();
		},
		
		initShowMore: function(){
			var span = $('span[id^=more]');
			if (span.parent().is('p')) {
				span.insertBefore(span.parent());
				var more = false;
				$('#content *').each(function(i,e){
					if ($(e).is('span[id^=more]')) {
						more = true;
					}
					if (more) {
						$(e).addClass('more-hidden');
					}
				});
				span.after('<a href="#" class="show-more">show more &#187;</a>');
				$('a.show-more').click(function(){
					$('.more-hidden').show();
					$(this).hide();
					return false;
				})
			}
		},
		
		initNav: function(){
			$(NDW.el.navList).find('li a').hover(function(){
				var li = $(this).parent();
				if (li.hasClass('children')) {
					li.addClass('hover').siblings().addClass('hide');
				}
			},function(){
				var li = $(this).parent();
				$(this).parent().removeClass('hover').siblings().removeClass('hide');
			})
		},
		
		initBlockquote: function(){
			var bq = $('#content blockquote').not('.endorsement');
			// split blockquotes into two p's for styling
			// do it here because Wordpress is fussy
			bq.each(function(i,e){
				e = $(e);
				if (e.find('p').length < 2) {
					var text = e.text().split('-');
					e.html('<p>'+text[0]+'</p><p>- '+text[1]+'<p>');
				}
			})
		},
		
		initCollapsingSidebar: function(){
			var collapseable = 'li.widget';
			var not = 'li.s2class_widget_subscribe2widget';
			$(collapseable).not(not).addClass('collapsed').addClass('collapseable').find('h2').click(function(){
				if ($(this).parent().hasClass('collapsed')) {					
					$(this).siblings('ul,form').slideDown().parent().removeClass('collapsed');
				} else {
					$(this).siblings('ul,form').slideUp().parent().addClass('collapsed');
				}
			}).hover(function(){
				$(this).addClass('hover')
			},function(){
				$(this).removeClass('hover')
			});
		},
		
		hideUnsubscribeButton: function(){
			$('input[name=unsubscribe]').hide();
		},
		
		initSocialMediaPanel: function(){
			$(NDW.el.sidebarIcon).hover(function(e){
				$(NDW.el.sidebarCaption).text($(this).text());
			},function(e){
				$(NDW.el.sidebarCaption).text('');
			})
		},
		
		initWibiyaLinks: function(){			
				$('a#link-more-options').click(function(e){
					NDW.launchWibiyaApp('Share');
					return false;
				})
				$('a#link-twitter').click(function(e){
					return !NDW.launchWibiyaApp('Twitter');
				})
				$('a#link-facebook').click(function(e){
					return !NDW.launchWibiyaApp('Facebook Fan Page');
				})
		},
		
		launchWibiyaApp: function(appName){
			if ($('#wibiyaToolbar').length) {
				var $button = $('#wibiyaToolbar div[applicationname='+appName+']');
				if ($button.length) {
					$button.click();
					return true;
				}
			}
			return false;
		},
		
		Contact: {
			formElement: 'form#contact_form',
			inputElement: 'form#contact_form input.madlib, form#contact_form textarea.madlib',
			
			init: function(){
				NDW.Contact.initLabels();
				$(NDW.Contact.formElement).submit(NDW.Contact.submitHandler);
				NDW.Contact.initPhoneCheckbox();
			},
			
			initLabels: function(){
				$(NDW.Contact.inputElement).each(function(){
					NDW.Contact.renderMadlibLabel(this);
				}).focus(function(){
					if ($(this).hasClass('merged')) {
						$(this).val('').removeClass('merged').removeClass('error')
					}
					$(this).addClass('focus')
				}).blur(function(){
					if ($(this).val() === '') {
						NDW.Contact.renderMadlibLabel(this);
					}
					$(this).removeClass('focus')
				})
			},
			
			renderMadlibLabel: function(input){
				var $input = $(input);
				if ($input.val().length) {
					//return;
				}
				var $label = $('label[for='+$input.attr('id')+']');
				$label.addClass('hidden');
				$('#'+$label.attr('for')).val($label.text()).addClass('merged');
			},
			
			submitHandler: function(){
				$(NDW.Contact.inputElement).each(function(){
					if ($(this).hasClass('merged')){
						$(this).val('');
					}
				})
			},
			
			initPhoneCheckbox: function(){
				$('#contact_phone').keypress(function(){
					$('#contact_contact_by_phone').attr('checked','checked');
				})
			}
		}
		
	}
	
	$(document).ready(function(){
		NDW.init();
	})
})(jQuery);
