var pageHistory = [];
var currentPage;

var PageNames = {
	TEMPLATE_PAGE : 'views/'+device+'/page.html',
	TEMPLATE_SUB_PAGE : 'views/'+device+'/subPage.html',
	TEMPLATE_HOME : 'views/'+device+'/home.html'
};

var Navigation = {
	
	page: function(id){
		Navigation.navigateToPage(id);
	},
	
	subpage: function(id){
		Navigation.navigateToSubPage(id);
	},
	
	home: function(){
		Navigation.navigateToHome();
	},
	
	navigateToPage : function(id) {
		carImage.showPixelated();
		if('page("'+id+'")' != currentPage.address) {
			Navigation.setCurrentPage('page', {id:id}, 'page("'+id+'")');
			var template = (device == 'mobile') ? '#content':'#mainContent';
			replaceWithData(PageNames.TEMPLATE_PAGE, template);
		}
	},
	navigateBackToPage : function(id) {
		if($('.pageElement').length == 0) {
			Navigation.navigateToPage(id);
			return;
		}
		Navigation.setCurrentPage('navigateBackToPage', {id:id}, 'navigateBackToPage("'+id+'")');
		var template = (device == 'mobile') ? '#content':'#mainContent';
		replaceWithData(PageNames.TEMPLATE_PAGE, template);
	},
	navigateToHome : function() {
		if('home()' != currentPage.address) {
			Navigation.setCurrentPage('home',{id:''}, 'home()');
			replaceWithData(PageNames.TEMPLATE_HOME, '#content');
		}
	},
	getCurrentPage: function() {
		return currentPage;
	},
	navigateToSubPage: function(id) {
		carImage.showPixelated();
		if('subpage("'+id+'")' != currentPage.address) {
			if(device != 'mobile') $('#mainContent').fadeOut(500);
			Navigation.setCurrentPage('subpage', {id:id}, 'subpage("'+id+'")');
			var template = (device == 'mobile') ? '#content':'#mainContent';
			replaceWithData(PageNames.TEMPLATE_SUB_PAGE, template);
		}
	},
	setCurrentPage: function(inMethod, inParams, address) {
		if(address != currentPage.address) {
			currentPage = {method:inMethod, params:inParams, address:address };
			if(device != 'mobile') this.omnitureTrackPage(inMethod, inParams.id);
			pageHistory.push(currentPage);
		}
	},
	omnitureTrackPage: function(inMethod, id){
		// Track the omniture page
		var pageData;
		var nameStr 	= "passengercars:new_cars:models:c-class:c-classfacelift_microsite:";
		var prop1Str 	= "Passenger Cars:New cars:C-Class:C-Class Facelift microsite:";
		var prop16Str 	= "passengercars:c-classfacelift_microsite";
		var prop17Str 	= "passengercars:c-classfacelift_microsite:";
	//	try{
		switch(inMethod)
		{
			
			case "home":
				// Grab the page name
				pageData 	= '';
				nameStr 	= nameStr 	+ "home";
				prop1Str 	= prop1Str 	+ "Home"; 
				prop17Str	= prop17Str + "home";
			break;
			case "page":
				// Grab the page name
				pageData 	= $(xml).find('page[id="' + id + '"]');
				pageName 	= pageData.attr("name");
				//
				nameStr 	= nameStr 	+ pageName;
				prop1Str	= prop1Str 	+ pageName;
				prop17Str	= prop17Str + pageName;
			break;
			case "subpage":
				pageData 	= $(xml).find('subPage[nr="' + id + '"]');
				pageName 	= pageData.find("name").text();
				var parent 		= pageData.parent();
				var parentName 	= parent.attr("name");
				//
				nameStr		= nameStr 	+ parentName + ":" + pageName;
				prop1Str	= prop1Str 	+ parentName + ":" + pageName;
				prop17Str	= prop17Str + parentName;
			break;
			

 			}
 						
	//	}catch(e){}
		nameStr 	= nameStr.toLowerCase().replace(/ /gi, "_"); // Lower case no spaces
		prop17Str	= prop17Str.toLowerCase().replace(/ /gi, "_"); // Lower case no spaces
		
		// Set the tracking deets
		s.pageName=nameStr;
		s.server="W7";
		s.charSet="UTF-8";
		s.channel="passengercars";
		s.pageType="";
		s.prop1=prop1Str;
		s.prop11="mpc";
		s.prop13="mb.uk";
		s.prop14="en";
		s.prop16=prop16Str;
		s.prop17=prop17Str;
		s.hier1=s.pageName;
		s.t(); // Track
	}
}
Navigation.prototype = {};


var ajaxRequest;
function replaceWithData(template_url, element, params) {
	$(window).trigger('pageLoading');
	if(ajaxRequest != undefined ) ajaxRequest.abort();

	ajaxRequest = $.ajax({
		data: params,
		dataType: 'html',
		url : template_url+ '?'+ Math.floor(Math.random()*10000),
		success : function(data) {
		
			$.address.value(currentPage.method+'/'+currentPage.params.id);
			$(element).html(data);
			$(window).trigger('pageLoaded');
		}
	});
}

