/*
 *	A global namespace for AFS.
 *
 */

var AFS = (function($) {
	
	var HELVETICA_BOLD = '.cufon_helvbold';
	var HELVETICA_LIGHT = '.cufon_helvlight';
	
	/*
	 * Configure Cufon
	 *
	 */
	
	Cufon.set({ hover: true, autoDetect: true });
	Cufon.replace(HELVETICA_BOLD, { fontFamily: 'HelveticaNeueBold' });
	Cufon.replace(HELVETICA_LIGHT, { fontFamily: 'HelveticaNeueLight' });
	LBi.Dispatcher.subscribe(LBi.Event.NODE_INSERTED, function() { Cufon.refresh(); });
	
	/*
	 * Configure Links
	 *
	 */
	
	var Links = new LBi.LinkRelations();
	
	// handle printing.
	Links.subscribe(/print/, function(e) {
		e.preventDefault();
		window.print();
	});
	
	// handle more links.
	Links.subscribe(/more/, function(e) {
		e.preventDefault();
		var target = $(e.target);
		var content = $(target.attr('href'));
		if (content.is(':hidden')) {
			target.addClass('less');
			content.show();
		} else {
			target.removeClass('less');
			content.hide();
		}
		var text = target.html();
		var label = target.attr('alt');
		target.attr('alt', text);
		target.html(label);
	});

	// forward sitestat clicks
	LBi.subscribe('click:link', function(e) {
		var stat = $(e.target).attr('af:sitestat');
		if(stat && AFS.Sitestat) {
			try {
				AFS.Sitestat.pageView(stat);
			} catch (e) {
			}
		}
	});

	return {};
	
})(jQuery);

AFS.Sitestat = {
	setURL:function(url) {
		this.sitestatURL = url;
	},
	pageView:function(tag) {
		if(!this.sitestatURL) {
			throw Error('A pixel URL must be defined using setURL() before pageView() can be called.');
		} else {
			var ns_l = this.sitestatURL + '?' + tag;
			this.count(ns_l);
		}
	},
	count: function sitestat(ns_l){
		ns_l+='&amp;ns__t='+(new Date()).getTime();ns_pixelUrl=ns_l;
		ns_0=document.referrer;
		ns_0=(ns_0.lastIndexOf('/')==ns_0.length-1)?ns_0.substring(ns_0.lastIndexOf('/'),0):ns_0;
		if(ns_0.length>0)ns_l+='&amp;ns_referrer='+escape(ns_0);
		if(document.images){ns_1=new Image();ns_1.src=ns_l;}else
		document.write('<img src="'+ns_l+'" width="1" height="1" alt="">');
	}
};

// move to AFS namespace.
jQuery(function() {
	
	
	
	/*
	 * Notify the DOM JavaScript is enabled.
	 */
	
	$('body').addClass('js_enabled');

	/*
	 *
	 *
	 */
	
	var field;
	$(':text').focus(function() {
		field = this;
	});
	
	$('form').keydown(function(e) {
		if (e.which === 13) { e.preventDefault();
			var sub = $(field).closest('fieldset').find('[type=submit]').get(0);
			if (sub) {
				sub.click();
			}
		}
	});
	
	/*
	 * Configure Primary Nav
	 *
	 */

	new LBi.SimpleMenu('#nav_primary', {
		openDelay: 200,
		closeDelay: 300,
		menuSelector: '.nav_sub',
		toggleMenu: function(element, toggle) {
			var target = $(element)[toggle? 'addClass' : 'removeClass'](this.activeClass);
			var sub = target.find('.nav_sub');
			if (toggle) {
				sub.show();
			} else {
				sub.hide();
			}
			
		}
	});

	
	
	/*
	 * Configure Form Enhancements
	 *
	 */

	new LBi.Forms();
	
	
	
	/*
	 * Configure Carousel
	 *
	 */
	
	$('.carousel').carousel({});
	
	
	
	
	/*
	 * Configure triggers
	 *
	 */
	
	new LBi.Trigger('.trigger');
	
	
	
	/*
	 * Configure tooltips
	 *
	 */
	
	new LBi.Tooltip('dfn');
	
	
	
	/*
	 * Configure Equalizers
	 *
	 */
	
	new LBi.Equalize('.equalize');
	
	
});