//@global window.jQuery
//@global window.FlashNavigation
//@global window.AjaxLoading
//@global window.isAncientIE
//@global window.template_directory_uri
//@global window.flashNavSwfModifiedTime
//@global window.flashNavXMLModifiedTimes

/**
 * Capture client JavaScript errors
 */
window.onerror = function(error, src, line){
	if(src.indexOf("quantserve.com") != -1)
		return;
	
	var params = {};
	params["error"] = error;
	params["src"] = src;
	params["line"] = line;
	try {
		params["location"] = window.location.href; //Firefox sometimes denies this if window closed?
	}
	catch(e){
		params["location"] = "(Window apparently closed too soon)";
	}
	
	if(!window.AjaxLoading)
		params["ajax"] = "null";
	else
		params["ajax"] = AjaxLoading.isEnabled() ? 'true' : 'false';
	
	if(!window.FlashNavigation)
		params["flash"] = "null";
	else
		params["flash"] = FlashNavigation.isEnabled() ? 'true' : 'false';
	
	jQuery.post("/client-error-logger.php", params, null);
};


/**
 * Implement console if it's not available
 */
if(!window.console){
	window.console = {
		"info":  function(msg){ alert("info: "  + msg) },
		"warn":  function(msg){ alert("warn: "  + msg) },
		"error": function(msg){ alert("error: " + msg) }
	};
}


//Quantcast
var _qoptions={qacct:"p-f8kXDr8mkHLCk"};

(function($, undefined){
	//Abort initializing FlashNavigation and AjaxLoading if IE6 or older
	if(isAncientIE){
		FlashNavigation = window.FlashNavigation = undefined;
		AjaxLoading = window.AjaxLoading = undefined;
		return;
	}
	
	//Initialize FlashNavigation
	if(window.FlashNavigation){
		FlashNavigation.debug = (window.location.hostname.indexOf('local') != -1 /*|| window.location.hostname.indexOf('staging') != -1*/);
		FlashNavigation.swf = window.template_directory_uri + "/navigation.swf?" + window.flashNavSwfModifiedTime;
		FlashNavigation.xml = window.template_directory_uri + "/flash-navigation.xml?" + window.flashNavXMLModifiedTime;
		FlashNavigation.onenable = function(){
			$(document.documentElement).addClass('is-flash-navigation');
			$('#flashNavigationOption .toggle').html('On').addClass('on').removeClass('off');
		};
		FlashNavigation.ondisable = function(){
			$(document.documentElement).removeClass('is-flash-navigation');
			$('#flashNavigationOption .toggle').html('Off').addClass('off').removeClass('on');
		};
		FlashNavigation.uriFilter = function(uri){
			return uri.replace(/\d\d\d\d.+/, '').replace(/#.*/, '');
		};
	}
	
	//Initialize AjaxLoading
	if(window.AjaxLoading){
		AjaxLoading.debug = FlashNavigation.debug;
		AjaxLoading.updateTitle = true;	
		AjaxLoading.disallowedURIRegExp = new RegExp("^(/about-us/blog/|/wp-)");
		AjaxLoading.selectors = [
			{selector:"body", attributes:['class']},
			{selector:"#breadcrumbs"},
			{selector:"#navigation li", attributes:['class']},
			{selector:"#content"}
		];
		AjaxLoading.blankURL = window.template_directory_uri + "/blank.html";
		var onloadingCount = 0;
		AjaxLoading.onloading = function(){
			$(document.documentElement).addClass('loading');
			//if(navigator.userAgent.indexOf('Chrome') != -1){
			//	setTimeout(function(){
			//		$(document.documentElement).removeClass('loading');
			//	}, 1000);
			//}
			
			
			//Google Analytics track, but only on requests after the first which
			//  is handled by the inline code in the header
			var uri = AjaxLoading.getURI();
			if(window._gaq && onloadingCount > 1){
				_gaq.push(['_trackPageview', uri]);
			}
			onloadingCount++;
			//console.profile('updateLocationState')
			FlashNavigation.updateLocationState(uri);
			//console.profileEnd('updateLocationState')
		};
		AjaxLoading.onloaded = function(){
			$(document.documentElement).removeClass('loading').removeClass('not-landed');
			$('#content').css({backgroundColor: '#395161'}).animate(
				{backgroundColor:'#597485'},
				500
				//,
				//function(){
				//	$(this).css({backgroundColor:'#597485'});
				//}
			);
		};
		AjaxLoading.onenable = function(){
			$('#ajaxLoadingOption .toggle').html('On').addClass('on').removeClass('off');
		};
		AjaxLoading.ondisable = function(){
			$('#ajaxLoadingOption .toggle').html('Off').addClass('off').removeClass('on');
		};
		AjaxLoading.init();
		
		

		var uri = AjaxLoading.getURI();
		if(uri != '/' && AjaxLoading.isEnabled()){
			$(document.documentElement).addClass('not-landed');
		}
	}

/** This is for Flash Navigation **/
window.ajaxnavigation_changeLoadedPage = function(uri){
	if(AjaxLoading.isEnabled()){
		//if(AjaxLoading.initialSlash){
		//	if(uri.substr(0, 1) != '/')
		//		uri = '/' + uri;
		//}
		//else {
		//	uri = uri.replace(/^\//, '');
		//}
		AjaxLoading.navigate(uri);
		//window.location = '#' + uri;
	}
	else
		window.location = uri;
};
//AjaxLoading.onhashchange = function(){
//	var uri = '/' + window.location.hash.substr(1);
//	
//	//The following two should be replaced with a recursive best-match lookup in the HTML nav for the url that is closest
//	//Remove the blog post URLs from being sent to the Flash
//	uri = uri.replace(/\d\d\d\d.*/, '');
//	
//	(function(){
//		var flashNav = $('#flashNav')[0];
//		if(FlashNavigation.enabled && !(flashNav && flashNav.updateLocationState && flashNav.updateLocationState(uri)))
//			window.setTimeout(arguments.callee, 10);
//	})();
//};




/**
 * Controls for enabling and disabling site options
 */
$('#ajaxLoadingOption .toggle').live('click', function(){
	if(AjaxLoading.isEnabled())
		AjaxLoading.disable();
	else
		AjaxLoading.enable();
});
$('#flashNavigationOption .toggle').live('click', function(){
	if(FlashNavigation.isEnabled())
		FlashNavigation.disable();
	else
		FlashNavigation.enable();
});

/**
 * Track outbond links
 */
$('a[href]').live('click', function(){
	if(window._gaq && !/shepherd-?interactive\./.test(this.href)){
		_gaq.push(['_trackPageview', this.href.replace(/^https?:\/\//i, '/outgoing/')]);
	}
});



$(document).ready(function(){
	//Show the site options it not IE6
	if(!isAncientIE){
		if(window.AjaxLoading && AjaxLoading.initialized){
			AjaxLoading.init();
			if(AjaxLoading.isEnabled())
				AjaxLoading.onenable();
			else
				AjaxLoading.ondisable();
			$('#ajaxLoadingOption').removeAttr('hidden').show();
		}
		
		if(window.FlashNavigation && FlashNavigation.initialized){
			if(FlashNavigation.isEnabled())
				FlashNavigation.onenable();
			else
				FlashNavigation.ondisable();
			$('#flashNavigationOption').removeAttr('hidden').show();
		}
		$('#siteOptions').removeAttr('hidden').show();
	}
	

	//Quantcast
	var script = document.createElement('script');
	if(window.location.protocol == 'https:')
		script.src = '//secure.quantserve.com/quant.js';
	else
		script.src = '//secure.quantserve.com/quant.js';
	$('head').append(script);
	
	
	//Newsletter signup validation
	var form = $('#newsletter-signup')[0];
	if(form){
		form.onsubmit = function(){
			if(!form.emma_member_name_first.value){
				alert('Please provide your first name.');
				form.emma_member_name_first.focus();
				return false;
			}
			if(!form.emma_member_name_last.value){
				alert('Please provide your last name.');
				form.emma_member_name_last.focus();
				return false;
			}
			if(!form.emma_member_email.value){
				alert('Please provide your email.');
				form.emma_member_email.focus();
				return false;
			}
			
			if(window._gaq){
				_gaq.push(['_trackPageview', '/about-us/newsletters/signup/']);
			}
			return true;
		};
	}
});


})(jQuery);
