// ---------------- northstar : Wordpress site ---------------- //

// Namespace: northstar

// Safe console0
if (typeof console === 'undefined') console = {};
if (typeof console.log === 'undefined') console.log = function(){};

// Namespace definitions
var northstar = northstar || {};
northstar.display = {};

// Global definitions
var isAnimating_bool = false;
var firstRun_bool = false;
var last_str = "";
var secondLast_str = "";

northstar.display.init = function() {
	var navigation = new northstar.display.navigation();
	navigation.init();
};

// navigation is in control of all internal navigation of the site
northstar.display.navigation = function() {

	var displayContent = new northstar.display.content();
	var currentUrl_str = "";
	
	this.init = function() {	
		if (Modernizr.history == false) return false;	
	
		
		window.onpopstate = function(e) {
		
			if (firstRun_bool == false){
				firstRun_bool = true;
				return false;
			}
			
			e.preventDefault();		
			var data = e.state;	
			if (data != null && data["path"] != null){
				currentUrl_str = data["path"];
				displayContent.contentUpdateEvent(data["path"]);	
				
				_updateNavigationState();
			}
				
						
		};
		$("#primary-navigation a, .internal-link").click(function (event) {
		
			event.preventDefault();
			
			if (isAnimating_bool == true) return false;
			isAnimating_bool = true;
			
			var name_str = $(this).text();
			var href_str = $(this).attr("href");
			
			currentUrl_str = href_str;		
			
			_updatePageState(href_str);
		});
		
		var _updateNavigationState = function() {
		
			$("#primary-navigation a, a#northstar-logo").each(function () {
				if ($(this).attr("href") == currentUrl_str.replace(site_url, "")){
				
					$(this).parent().addClass("current-menu-item");					
					if ($(this).parent().parent().hasClass("sub-menu") == true){
						$(this).parent().parent().parent().addClass("current-menu-item");
					}		
					
				}else{
				
					$(this).parent().removeClass("current-menu-item");
					
				}
			});
		}	
		
		var _updatePageState = function(href_str) {	
			_updateNavigationState();			
			history.pushState({ path: href_str}, "", href_str);			
			displayContent.contentUpdateEvent(href_str);			
		}
	};
};

northstar.display.content = function() {

	this.contentUpdateEvent = function(slug_str){
		console.log("contentUpdateEvent - "+slug_str);
		$("#main").stop();
		$("#main").animate({height:null,opacity:1},500, "easeOutQuad", function(){		
			$("#ajax-loader").fadeIn();	
			$("#main").hide();

			$("#main").html("<div class=\"ajax-holder\"></div>");		
			
			var load_arr = slug_str.split("#")[0];
			
			
			$.ajax({
				url: load_arr+"?ajax=1",
				success: function(data){
					$("#main").show();
					$("body").removeClass();
					$("body").removeAttr("id");
					
					var objectKey_str = slug_str.replace(site_url, "")
										.replace(/\/page\/([0-9])/,"")
										.replace(/\//g, "")
										.split("#")[0];
								
					
					var bodyId_str = "home";
					if (bodyId_obj[objectKey_str] != null)bodyId_str = bodyId_obj[objectKey_str];
					
					var bodyClass_str = "home";
					if (bodyClass_obj[objectKey_str] != null)bodyClass_str = bodyClass_obj[objectKey_str];
					
					
					$("body").attr("id",bodyId_str );
					$("body").addClass(bodyClass_str);
					
					$("#ajax-loader").hide();
					$(".ajax-holder").html(data);
										
					switch (objectKey_str){
						case "our-clients":
							ourClients.init();
							$("#main").addClass("no-border");
						break;
						case "contact":
							contact.init();
						break;
						default:
							$("#main").removeClass("no-border");
							$("#main").addClass("dummy");
						break;
					}
					
					var title_str = "Northstar";
					
					if (bodyClass_obj[objectKey_str] != null) title_str = bodyClass_obj[objectKey_str].replace(/-/g, " ").capitalize() + " - " + title_str;
					
					document.title = title_str;
					
					caseStudy.init();
					
					$("#main").animate({height:"100%",opacity:1},300, "linear",function () {
						$(".ajax-holder").fadeIn();
						northstar.display.init();
						isAnimating_bool = false;
						
						if (slug_str.split("#")[1] != undefined) {
							var targetOffset = $("#"+slug_str.split("#")[1]).offset().top;
							$("body").animate({scrollTop: targetOffset}, 1000);
							console.log(targetOffset);
							
						
						}
						try {
							//update google analytics
							_gaq.push(['_trackPageview',slug_str]);
						}catch(err){
							console.log("===\ngoogle analtyics, tracking issue \nurl: "+site_url+slug_str+"\nerror: "+err+"\n===");
						}
					});								
				}
			});			
		});
	};	
}
String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}
$(document).ready(function() {	
	northstar.display.init();		
});
