/* SiteCatalyst code version: H.21.
Copyright 1996-2010 Adobe, Inc. All Rights Reserved
More info available at http://www.omniture.com */

/* You may give each page an identifying name, server, and channel on
the next lines. */
s.pageName="";
s.server="";
s.channel="";
s.pageType="";
s.prop1="";
s.prop2="";
s.prop3="";
s.prop4="";

/* Conversion Variables */
s.campaign="";
s.state="";
s.zip="";
s.events="";
s.products="";
s.purchaseID="";
s.eVar1="";
s.eVar2="";
s.eVar3="";
s.eVar4="";
s.eVar5="";

s.linkTrackVars= true;
s.linkTrackEvents= true;

/* constant */
s.prop11 = 'webspecial_motorsport_gp_2010';
s.prop5 = logged_in;
s.prop13 = "mb.com";

switch(mgp_lang) {
	case "de":
		s.prop13 = "mb.de";
	break;
	case "en":
		s.prop13 = "mb.com";
	break;
}

s.prop14 = mgp_lang;
s.server = window.location.hostname;
s.prop12 = "campaign_suite";

mgp.tracking = {

	/** 
	 * translates urls into specific tracking variables
	 * @method translate
	 * @param {object} data
	 * @return {void}
	 */
	translate: function(data) {
		var channel;

		if ( data.page.indexOf("/category/fans/") > -1) {
			channel = 'fans';			
		}
		if ( data.page.indexOf("/category/home/") > -1) {
			channel = 'team';			
		}
		if ( data.page.indexOf("/category/shop/") > -1) {
			channel = 'shop';			
		}
		if ( data.page.indexOf("/partner") > -1) {
			channel = 'partner';	
			s.prop6 = 'partner';	
		}
		if ( data.page.indexOf("/search") > -1) {
			channel = 'search';
		}
		if ( data.page.indexOf("/crm") > -1) {
			channel = 'brochure_registration';			
		}
		
		switch(data.page) {
			case "/register":
				channel = 'registration';
				s.events = 'event2';
				s.prop6 = 'registration';	
			break;
			case "/profile":
				channel = 'profile';	
				s.prop6 = 'profile';					
			break;
			case "older_entries":
				channel = 'older_entries';
			break;
		}

		return channel;
		
	},
	
	/** 
	 * 
	 * @method pageTrack
	 * @param {e} event
 	 * @param {object} data
	 * @return {void}
	 */
	pageTrack: function(e, data) {

		if ( data != null && data.page !="/") {
			
			s.linkTrackVars = "eVar1,events";
			
			if(document.referrer != ""){
				previousDomain = document.referrer;
			}
			else{
				previousDomain = "undefined";
			}
			
			s.prop19 = "";
			s.prop26 = "";
			s.prop6 = "";
			s.events = "";
			s.prop27 = "";
			
			s.channel = mgp.tracking.translate(data);
		
			if ( data.campaign !== undefined) {
				s.campaign = data.campaign;
			}
		
			var level3 = "";
		
			if ( s.channel == 'registration') {
				level3 = "_ph1:step1"
				s.prop9 = s.prop13 + ":" + s.prop14 + ":" + s.channel + ":" + level3;
				s.prop10 = s.channel + ":" + level3;
			}
			
			if ( s.channel == 'brochure_registration') {
				level3 = ":step1"

			}
			
			s.pageName = s.prop11 + ":" + s.channel+level3;
			s.prop1 = s.pageName;		
			s.hier1 = s.pageName;
			s.prop16 = s.prop13 + ":" + s.prop14 + ":" + s.pageName;

			s.prop17 = previousDomain + ":" + s.prop14;
			
			if ( logged_in == "" ) {
				
				if ( !mgp.tracking.initialized ) {
					// erster seitenaufruf
					
					s.eVar7=previousDomain + ":" + s.prop14;
					
					// wird nur einmal aufgerufen
					mgp.tracking.initialized = true;
					
				}
				
			}

			if ( mgp.tracking.debug == "ALL" || mgp.tracking.debug == "PAGE" ) {
				console.warn("-----------------------------------------------------------");
				console.warn("pageTrack");
				console.warn("s.prop11: "+s.prop11);
				console.warn("s.prop12: "+s.prop12);
				console.warn("s.prop1: "+s.prop1);
				console.warn("s.pageName: "+s.pageName);
				console.warn("s.hier1: "+s.hier1);
				console.warn("s.channel: "+s.channel);
				console.warn("s.prop5: "+s.prop5);
				console.warn("s.prop6: "+s.prop6);
				console.warn("s.events: "+s.events);
				console.warn("s.prop14: "+s.prop14);
				console.warn("s.prop16: "+s.prop16);
				console.warn("s.prop17: "+s.prop17);
				console.warn("s.campaign: "+s.campaign);
				console.warn("-----------------------------------------------------------");
			}
					
			s.t();

		}
	},
	
	/** 
	 * standard clicktracking, used for <a>-tags which have tc (trackingcategory) and tn (trackingname) defined in html
	 * wrapper for _doClickTrack
	 * @method clickTrack
	 * @param {e} event
	 * @return {void}
	 */
	clickTrack: function(e) {

		if ( jQuery(this).metadata().tc != undefined && jQuery(this).metadata().tn != undefined) {
			
			var linktype = jQuery(this).hasClass("external") || jQuery(this).hasClass("share") ? "e" : "o";
			var linkname = jQuery(this).metadata().tc + ":" + jQuery(this).metadata().tn;
			var prop26 = jQuery(this).hasClass("share") ? "social_media_link" : jQuery(this).metadata().tc;
			var prop6 = jQuery(this).hasClass("share") ? "social_media_link" : "";
			
			var events = "";
			if(jQuery(this).metadata().tn == "shop"){
				var events = "event21";
			}
			if(jQuery(this).hasClass("share")){
				var events = "event6";
			}
			
			mgp.tracking._doClickTrack(this, linktype, linkname, "",prop6, prop26, events);
		
		}
		
	},
	
	/** 
	 * does the actual clicktracking, is called from clickTrack
	 * is called from all custom clicktrack methods 
	 * @method _doClickTrack
	 * @params el, linktype, linkname, prop4, prop6, prop26, events, prop20, prop2, prop3
	 * @return {void}
	 */
	_doClickTrack: function(el, linktype, linkname, prop4, prop6, prop26, events, prop20, prop2, prop3) {

			s.linkTrackEvents=events;

			s.prop19 = linkname;
			s.linkName = s.prop19;
			s.linkType = linktype;
			s.prop26 = prop26 || "";
			s.prop27 = s.channel || "";
			s.prop20 = prop20 || "";
			s.prop6 = prop6 || "";
			s.events = events || "";
			s.prop4 = mgp.tracking.removeSpecialChars(prop4) || "";
			s.prop2 = prop2 || "";
			s.prop3 = prop3 || "";
			s.campaign = "";
			
			s.prop11 = 'webspecial_motorsport_gp_2010';
			s.prop5 = logged_in;

			s.server = window.location.hostname;
			s.prop12 = "campaign_suite";
			s.prop7 = s.prop13 + ":" + s.prop14 + ":" + s.prop19;
			s.prop8 = s.prop13 + ":" + s.prop14 + ":" + s.prop26;
			
			s.linkTrackVars = "events,prop19,prop26,prop27,prop7,prop8";
			s.tl(el, linktype, s.prop19);
			
			if ( mgp.tracking.debug == "ALL" || mgp.tracking.debug == "LINK" ) {
				console.warn("-----------------------------------------------------------");
				console.warn("_doClickTrack");
				console.warn("Link type: ", linktype);
				console.warn("Link name: ", linkname);
				console.warn("Link name (s.prop19): "+s.prop19);
				console.warn("s.prop26: "+s.prop26);
				console.warn("channel (s.prop27): "+s.prop27);
				console.warn("s.prop20: "+s.prop20);
				console.warn("s.prop6: "+s.prop6);
				console.warn("s.prop7: "+s.prop7);
				console.warn("s.prop8: "+s.prop8);
				console.warn("Headline (s.prop4): "+s.prop4);
				console.warn("Searchterm (s.prop2): "+s.prop2);
				console.warn("Searchterm verundungen (s.prop3): "+s.prop3);
				console.warn("s.events: "+s.events);
				console.warn("-----------------------------------------------------------");
			}
			
		
		
	},
	
	/** 
	 * string helper function
	 * @method removeSpecialChars
	 * @params str
	 * @return {void}
	 */
	removeSpecialChars: function(str) {
		return str.split("ä").join("ae").split("ü").join("ue").split("ö").join("oe").split(":").join("_").split(" ").join("_").toLowerCase();
	},
	
	/** 
	 * tracking for news articles, gets called from mgp.expander
	 * @method removeSpecialChars
	 * @params $el
	 * @return {void}
	 */
	trackExpandNews: function($el) {

		mgp.tracking._doClickTrack($el.find("a.more"), "o", "n1_basic_news:expand", $el.find("h2").first().text(), "", "expand_box", "event15");
		
	},
	
	/** 
	 * tracking for news articles, gets called from mgp.expander
	 * @method trackCollapseNews
	 * @params $el
	 * @return {void}
	 */
	trackCollapseNews: function($el) {
		
		mgp.tracking._doClickTrack($el.find("a.more"), "o", "n1_basic_news:collapse", $el.find("h2").first().text(), "", "collapse_box", "");
		
	},
	
	/** 
	 * tracking for galleries, gets called from mgp.expander
	 * @method trackExpandGallery
	 * @params $el
	 * @return {void}
	 */
	trackExpandGallery: function($el) {

		mgp.tracking._doClickTrack($el.find("a.more"), "o", "g1_basic_pic_gallery:expand", $el.find("h2").text(), "", "expand_box", "");
		
	},
	
	/** 
	 * tracking for galleries, gets called from mgp.expander
	 * @method trackCollapseGallery
	 * @params $el
	 * @return {void}
	 */
	trackCollapseGallery: function($el) {
		
		mgp.tracking._doClickTrack($el.find("a.more"), "o", "g1_basic_pic_gallery:collapse", $el.find("h2").text(), "", "collapse_box", "");
		
	},
	
	/** 
	 * tracking for gallery images, gets called from mgp.gallery
	 * @method trackGalleryThumbClick
	 * @params el, headline, no
	 * @return {void}
	 */
	trackGalleryThumbClick: function(el, headline, no) {

		if ( no < 10 ) no = "0"+no;

		mgp.tracking._doClickTrack(el , "o", "g1_basic_pic_gallery:show_picture:"+no, headline, "", "show_picture", "", "");
		
	},
	
	/** 
	 * tracking for tabs, is called from mgp.tabs (e.g. latest results)
	 * @method trackTabClick
	 * @params $el
	 * @return {void}
	 */
	trackTabClick: function($el) {

		mgp.tracking._doClickTrack($el , "o", $el.metadata().n3_tc + ":" + $el.metadata().n3_tn, "", "", "flag", "");
		
	},
	
	/** 
	 * Older Entries Tracking, is called from mgp.olderEntries
	 * @method trackShowMore
	 * @params $el
	 * @return {void}
	 */
	trackShowMore: function($el) {
		
		mgp.tracking._doClickTrack($el, "o", "older_entries", "", "", "older_entries", "");
		
	},
	
	/** 
	 * Basic Form Tracking, is called whenever a form is submitted
	 * @method formTrack
	 * @params e
	 * @return {void}
	 */
	regformTrack: function(e) {
		
		//if ( s.channel == 'registration') {
			
			if ($('#newsletter_checkbox').attr('checked')) {
				s.events = 'event22,event3';
			}
			else{
				s.events = 'event3';
			}
			
			s.pageName = s.prop11 + ":" + s.channel + "_ph1:thank_you";
			s.prop1 = s.pageName;		
			s.hier1 = s.pageName;
			s.prop16 = s.prop13 + ":" + s.prop14 + ":" + s.pageName;
			s.t();
		//}
	},
	
	/** 
	 * special tracking to track different steps in crm form
	 * @method crmTrack
	 * @params site
	 * @return {void}
	 */
	crmTrack: function(site) {
		if ( s.channel == 'brochure_registration') {
			s.pageName = s.prop11 + ":" + s.channel+ ":" +site;
			s.prop1 = s.pageName;		
			s.hier1 = s.pageName;
			s.prop16 = s.prop13 + ":" + s.prop14 + ":" + s.pageName;
			
			s.prop9 = s.prop13 + ":" + s.prop14 + ":" + s.channel + ":" + site;
			s.prop10 = s.channel + ":" + site;
			
			if(site == "thank_you"){
				s.events = 's.event25';
			}
			
			s.t();
		}
	},
	
	/** 
	 * @method loginTrack
	 * @params e
	 * @return {void}
	 */
	loginTrack: function(e) {

		mgp.tracking._doClickTrack(null, "o", "metanav" + ":" + "login_successful", "", "login", "metanav", "event1");
		
	},
	
	/** 
	 * tracking for Follow me on twitter link
	 * @method trackFollowTwitter
	 * @params el, headline
	 * @return {void}
	 */
	trackFollowTwitter: function(el, headline) {

		mgp.tracking._doClickTrack(el , "e", "n2_twitter_ticker:follow_twitter", headline, "", "follow_twitter", "", "n2_twitter_ticker");
		
	},
	
	/** 
	 * tracking for go to flickr group link
	 * @method trackFlickrGroupClick
	 * @params el, headline
	 * @return {void}
	 */
	trackFlickrGroupClick: function(el, headline) {

		mgp.tracking._doClickTrack(el , "e", "u2_visit_flickr_group:textlink", headline, "", "visit_flickr_group", "", "");
		
	},
	
	/** 
	 * tracking for search function
	 * @method trackSearch
	 * @params searchterms
	 * @return {void}
	 */
	trackSearch: function(searchterms) {
	
		var lastsearchterm = searchterms[searchterms.length-1].toLowerCase();
	
		if ( searchterms.length <= 1 ) {
			mgp.tracking._doClickTrack(null , "o", "searchnav:search_text", "", "", "searchnav", "", "", "text_"+lastsearchterm);
		} else {
			mgp.tracking._doClickTrack(null , "o", "searchnav:search_filter", "", "", "searchnav", "", "", "text_"+lastsearchterm, "filter:"+searchterms.join(":").toLowerCase());
		}
		
	},
	
	/** 
	 * gets called from flash
	 * @method getChannel
	 * @params
	 * @return {str}
	 */
	getChannel: function () {
		return s.channel;
	},
	
	/** 
	 * applies clickTracking to all links on the site
	 * @method initClickTracking
	 * @params
	 * @return {str}
	 */
	initClickTracking: function() {
		
		jQuery("a").live("click", mgp.tracking.clickTrack);
		
	},
	
	debug: "offline",
	initialized: false
}


// EVENTS:

// document is ready, initialize clicktracking
jQuery(document).ready(mgp.tracking.initClickTracking);

// ajaxFormSuccess is triggered whenever a form is successfully submitted
jQuery(document).bind("ajaxRegFormSuccess", mgp.tracking.regformTrack);

// loginSuccess is triggered after successful login
jQuery(document).bind("loginSuccess", mgp.tracking.loginTrack);

// ajaxContentLoad is the page load indicator
jQuery(document).bind("ajaxContentLoad", mgp.tracking.pageTrack);

