/*
 *	A global namespace for AFS.
 *
 */

window.AFS = (function($) {
	
	var HELVETICA_REGULAR= '.cufon_helvregular';
	var HELVETICA_BOLD = '.cufon_helvbold';
	var HELVETICA_LIGHT = '.cufon_helvlight';
	var HELVETICA_LIGHT_SHADOW = '.cufon_helvlightshadow';

	var AFS = {
		initialize: function() {

			/*
			 * Notify the DOM JavaScript is enabled.
			 */
			
			$('body').addClass('js_enabled');

			/*
			 * Configure Cufon
			 *
			 */
			
			Cufon.set({ hover: true, autoDetect: true });
			Cufon.replace(HELVETICA_REGULAR, { fontFamily: 'helvetica' });
			Cufon.replace(HELVETICA_BOLD, { fontFamily: 'HelveticaNeueBold' });
			Cufon.replace(HELVETICA_LIGHT, { fontFamily: 'HelveticaNeueLight' });
			Cufon.replace(HELVETICA_LIGHT + ' strong', { fontFamily: 'HelveticaNeueBold' });
			Cufon.replace(HELVETICA_LIGHT_SHADOW, { fontFamily: 'HelveticaNeueLight', textShadow: '1px 2px rgba(0,0,0,0.5)' });
			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) {
					}
				}
			});


			

			/*
			 * Submit forms via enter
			 *
			 */
			
			var field;
			$('input:text').focus(function() {
				field = this;
			});
			
			$('form').keydown(function(e) {
				if (e.which === 13) { 
					var sub = $(field).closest('fieldset').find('[type=submit]').get(0);
					if (sub) {
						e.preventDefault();
						sub.click();
					}
				}
			});

			/*
			 * Configure Primary Nav
			 *
			 */
			this.simpleMenu = new LBi.SimpleMenu(document.getElementById("nav_primary"), {
				openDelay: 200,
				closeDelay: 300,
				menuSelector: '.nav_sub',
				touchEnabled: !!('ontouchstart' in window),
				toggleMenu: function(element, toggle) {
					var target = $(element)[toggle? 'addClass' : 'removeClass'](this.activeClass);
					var sub = target.find('.nav_sub');
					if(sub.length) {
						if(toggle) {
							sub.show();
						} else {
							sub.hide();
						}
						LBi.Dispatcher.fire('menu:toggle', sub[0]);
					}
				}
			});			
			
			/*
			 * Configure Form Enhancements
			 *
			 */
			this.forms = new LBi.Forms();			
			
			/*
			 * Configure Carousel
			 *
			 */
			$('.carousel').carousel({});
			
			/*
			 * Configure triggers
			 *
			 */
			this.triggers = new LBi.Trigger('.trigger');
			
			/*
			 * Configure tooltips
			 *
			 */
			this.tooltips = new LBi.Tooltip('dfn');
			
			/**
			 * Configure comments
			 * 
			 */
			$('.comment-form').userComments({
				details: '.comment-details'
			});

			/**
			 * split lists
			 * 
			 */
			$('.splitted').splittedLists({
				template: '<div class="column_wrapper"></div>'
			});
			
			/*
			 * Configure Equalizers
			 *
			 */
			$(window).bind('load', function() {
				new LBi.Equalize('.equalize');
			});	

		}
	};
	

	$(function() {
		AFS.initialize();
	});

	return AFS;
	
})(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="">');
	}
};

	// flash hook, needs a global function
	window.sitestatPageView = function(tag) {
		AFS.Sitestat.pageView(tag);
	}

