/* analytics.js
* v 0.1
*	
* Implentation of Coremetrics & Google wrapper.
--------------------------------------------------------------------------------------- */

var _gaq = _gaq || [];

GUCCI.GoogleAnalytics = {
	enabled: true,
	phase2enabled: false,
	phase3enabled: false,

	trackerNames: [],
	trackerIds: [],
	panelPosition: "",
	widgetPosition: "",
	gender: "",
	category: "",
	pageName: "",
	isLogged: "false",
	imageNumber: 1,

	//	googRegionName: "grNA"
	//	googCountryName: "gUS"
	//	countryName: "", // "us"
	// 	googAcctID: "UA-25752986"
	//	googWebPropID: "15"
	//	googRegionalWebPropID: "3"
	//	rollupRegion: "true"
	//	rollupGlobal: "true"

  initialize: function(goog_vars) {
  		// goog_vars is passed in as Object in Partial: _google_analytics.html.erb

		if (!GUCCI.GoogleAnalytics.enabled) return;

		GUCCI.GoogleAnalytics.googCountryName = goog_vars.googCountryName;
		GUCCI.GoogleAnalytics.googRegionName = goog_vars.googRegionName;
		GUCCI.GoogleAnalytics.countryName = goog_vars.countryName;

		// set country/region/global webproperty id
		GUCCI.GoogleAnalytics.trackerNames = [goog_vars.googCountryName];
		GUCCI.GoogleAnalytics.trackerIds = [goog_vars.googWebPropID];
		
		if (goog_vars.rollupRegion == "true") {
			GUCCI.GoogleAnalytics.trackerNames.push(goog_vars.googRegionName);
			GUCCI.GoogleAnalytics.trackerIds.push(goog_vars.googRegionalWebPropID);
		}
		if (goog_vars.rollupGlobal == "true") {
			GUCCI.GoogleAnalytics.trackerNames.push('gGlobal');
			GUCCI.GoogleAnalytics.trackerIds.push('1');
		}
		
		for (var i=0; i<GUCCI.GoogleAnalytics.trackerIds.length; i++) {
			tracker_id = GUCCI.GoogleAnalytics.trackerIds[i];
		
			_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._setAccount', goog_vars.googAcctID + '-' + GUCCI.GoogleAnalytics.trackerIds[i]]);
			
			if (goog_vars.isProduction == "true") {
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._setDomainName', 'gucci.com']);
			}
			else {
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._setDomainName', 'qa1.regiongold.com']);
			}

			_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._setCampaignCookieTimeout',2592000000]);

			_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._addIgnoredRef','gucci.com']);
			
			// add "nate", the korean search engine so it doesn't get lumped into "other"
			_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._addOrganic', 'nate.com', 'q', true, 'nate']);
			
			// hash is interpreted as question mark for purpose of delimiting the query string
			_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._setAllowAnchor', true]);
			
		}
		
		// set country path i.e. /it/ . This is only done for country tracker
		_gaq.push([GUCCI.GoogleAnalytics.googCountryName + '._setCookiePath', '/' + goog_vars.countryName + '/']);

		// turn on trackers for country/region/global
		for (var i=0; i<GUCCI.GoogleAnalytics.trackerNames.length; i++) {
			
			if (GUCCI.GoogleAnalytics.isLogged == true) {
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._setCustomVar', 1, 'isLogged', GUCCI.GoogleAnalytics.isLogged.toString(), 2]);
			}
			if (GUCCI.GoogleAnalytics.category != undefined && GUCCI.GoogleAnalytics.category != "") {
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._setCustomVar', 2, 'Category', GUCCI.GoogleAnalytics.category, 3]);
			}
			if ((GUCCI.GoogleAnalytics.subcategory != undefined) && (GUCCI.GoogleAnalytics.subcategory != GUCCI.GoogleAnalytics.category)) {
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._setCustomVar', 3, 'Sub-Category', GUCCI.GoogleAnalytics.subcategory, 3]);
			}
			if (GUCCI.GoogleAnalytics.jdaDept != undefined) {
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._setCustomVar', 4, 'JDA department', GUCCI.GoogleAnalytics.jdaDept, 3]);
			}
			
			if (goog_vars.httpStatusCode == '404') {
				var url404 = '/' + goog_vars.countryName + '/404?loc=' + document.referrer;
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._trackPageview', url404]);
			}
			else if (goog_vars.httpStatusCode == '500') {
				var url500 = '/' + goog_vars.countryName + '/500?loc=' + document.referrer;
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._trackPageview', url500]);
			}
			else if (GUCCI.pageClass.indexOf("styles") >= 0) {
				// we are on a style page.  reformat the style.id for the pageview...
				var urlProduct = '/' + goog_vars.countryName + '/styles/';
				var tmp_url = document.location.href.split('/');
				var styleid = tmp_url.pop();
				styleid = styleid.split('#');
				styleid = styleid[0];
				styleid = GUCCI.GoogleAnalytics.makeProductID(styleid, '', GUCCI.GoogleAnalytics.pageName);
				urlProduct += styleid;
				
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._trackPageview', urlProduct]);
				
			}
			else {
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._trackPageview']);
			}
			
		}
		
		(function() {
			var ga = document.createElement('script');
			ga.type ='text/javascript';
			ga.async = true;
			if (goog_vars.isProduction == "true") {
				ga.src = ('https:' == document.location.protocol ? 'https://ssl' :'http://www') + '.google-analytics.com/ga.js';
			}
			else {
				ga.src = ('https:' == document.location.protocol ? 'https://ssl' :'http://www') + '.google-analytics.com/u/ga_debug.js';
			}
			var s = document.getElementsByTagName('script')[0];
			s.parentNode.insertBefore(ga, s);
		})();
		
	},
	
	// sorts
	trackSortsClick: function(self) {
		var link_href = self.attr("href");
		var category_name = 'subcategories';
		var action_name = "click";
		var anchor_name = GUCCI.GoogleAnalytics.category;
		var label_name = self.html();

		link_href = link_href.replace(document.location.protocol + "//" + document.location.hostname, '');
		link_href = link_href.replace("#", "/");

		for(var i=0; i<GUCCI.GoogleAnalytics.trackerNames.length; i++) {
			_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._setCustomVar', 3, 'Sub-Category', label_name, 3]);
			_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._trackPageview', link_href]);
		}

		//GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name + ' ' + anchor_name, label_name);

	},

	// looks
	trackLooksClick: function(self) {
		var category_name = "category";
		var action_name = "click"
		var anchor_name = GUCCI.GoogleAnalytics.category;
		var label_name = self.attr('id');

		// the commented bit is a backend ajax call that returns some partial.
		// the one we're actually using is just a nicely formatted URL that takes the user nowhere.
		//	it is this way because having the hash in the URL does not track properly.
		//		var link_href = self.find('.look_url').attr('href');
		var link_href = GUCCI.Category.createLookURL([label_name]);
		link_href = link_href.replace(document.location.protocol + "//" + document.location.hostname, '')
		link_href = link_href.replace("#", "/");

		for(var i=0; i<GUCCI.GoogleAnalytics.trackerNames.length; i++) {
			_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._trackPageview', link_href]);
		}

		//GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name + ' ' + anchor_name, label_name);

	},
	
	// variations
	trackVariationsClick: function(styleid) {
		var category_name = "product page";
		var action_name = "click"
		var anchor_name = "";
		var label_name = "";
		
		var tmp_url = document.location.href.split('/');
		tmp_url.pop();
		var link_href = tmp_url.join('/');
		link_href = link_href.replace(document.location.protocol + "//" + document.location.hostname, '')
		styleid = GUCCI.GoogleAnalytics.makeProductID(styleid, '', GUCCI.GoogleAnalytics.pageName);
		link_href = link_href + '/' + styleid;
		
		GUCCI.GoogleAnalytics.recordVirtualPageView(link_href);

		//GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name + ' ' + anchor_name, label_name);

	},

	trackPrintClick: function() {
		var link_href = "";
		var category_name = "engagement";
		var action_name = "click print";

		var style_id = GUCCI.Product.dynamic_content.style_id;
		var descrip = GUCCI.GoogleAnalytics.pageName;
		var style_size = "";
		var label_value = "";

		label_value = GUCCI.GoogleAnalytics.makeProductID(style_id, style_size, descrip);

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_value);
		
	},
	
	// product page: add to shopping bag
	trackAddToShoppingBag: function() {
		var link_href = GUCCI.GoogleAnalytics.countryName + "/vpv/addtocart";
		var category_name = "product page";
		var action_name = "click: add to shopping bag";

		var style_id = GUCCI.Product.dynamic_content.style_id;
		var style_size = "";
		var label_value = "";
		if (GUCCI.Product.dynamic_content.has_sizes) {
			style_size = $('#style_wrapper_dropdown option:selected').text();
		}

		label_value = GUCCI.GoogleAnalytics.makeProductID(style_id, style_size, GUCCI.GoogleAnalytics.pageName);

		//GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_value);

		GUCCI.GoogleAnalytics.recordVirtualPageView(link_href);

	},
	
	trackPersonalShopperClick: function(self) {
		var link_href = "";
		var category_name = "engagement";
		var action_name = "personal shopper: Access";

		var style_id = GUCCI.Product.dynamic_content.style_id;
		var descrip = GUCCI.GoogleAnalytics.pageName;
		var style_size = "";
		var label_value = "";

		label_value = GUCCI.GoogleAnalytics.makeProductID(style_id, style_size, descrip);

		link_href = GUCCI.GoogleAnalytics.countryName + "/vpv/consult_personal_shopper_form";
		GUCCI.GoogleAnalytics.recordVirtualPageView(link_href);
		
		//GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_value);
		
	},

	trackPersonalShopperSubmit: function(self, subject) {
		var link_href = "";
		var category_name = "engagement";
		var action_name = "personal shopper: Submitted";

		var style_id = GUCCI.Product.dynamic_content.style_id;
		var descrip = GUCCI.GoogleAnalytics.pageName;
		var style_size = "";
		var label_value = "";

		label_value = GUCCI.GoogleAnalytics.makeProductID(style_id, style_size, descrip);
		label_value = label_value + " " + subject;

		link_href = GUCCI.GoogleAnalytics.countryName + "/vpv/consult_personal_shopper_submitted";
		GUCCI.GoogleAnalytics.recordVirtualPageView(link_href);
		
		//GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_value);		
		
	},


	trackLoveClick: function() {
		var link_href = "";
		var category_name = "engagement";
		var action_name = "click love it";

		var style_id = GUCCI.Product.dynamic_content.style_id;
		var descrip = GUCCI.GoogleAnalytics.pageName;
		var style_size = "";
		var label_value = "";

		label_value = GUCCI.GoogleAnalytics.makeProductID(style_id, style_size, descrip);

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_value);
		
		GUCCI.GoogleAnalytics.recordSocialEvent("Love-it", "click on love-it", label_value);
		
	},
	
	trackEmailShare: function(self) {
		var style_id = "";
		if (GUCCI.Product) {
			style_id = GUCCI.Product.dynamic_content.style_id;
		}
		var style_size = "";
		var label_value = "";

		label_value = GUCCI.GoogleAnalytics.makeProductID(style_id, style_size, GUCCI.GoogleAnalytics.pageName);
		
		link_href = GUCCI.GoogleAnalytics.countryName + "/vpv/email_submitted/" + label_value;
		GUCCI.GoogleAnalytics.recordVirtualPageView(link_href);
		//GUCCI.GoogleAnalytics.recordSocialEvent("Email share", "share via email", label_value);
	},
	
	trackSocialNetworkClick: function(self) {
		var network = "";
		var socialAction = "share";
		var style_id = "";
		if (GUCCI.Product) {
			style_id = GUCCI.Product.dynamic_content.style_id;
		}
		var style_size = "";
		var label_value = "";
		
		label_value = GUCCI.GoogleAnalytics.makeProductID(style_id, style_size, GUCCI.GoogleAnalytics.pageName);
		
		if (self.context.hostname == "www.facebook.com") {
			network = "Facebook";
		}
		else if (self.context.pathname.indexOf("twitter") > 0) {
			network = "Twitter";	
		}
		else if (self.attr('class') == 'email_friend_link') {
			network = "Email share";
			socialAction = "share via email";
			
			link_href = GUCCI.GoogleAnalytics.countryName + "/vpv/email_form/" + label_value;
			GUCCI.GoogleAnalytics.recordVirtualPageView(link_href);
		}
		else {
			network = "[unknown]";
		}

		GUCCI.GoogleAnalytics.recordSocialEvent(network, socialAction, label_value);
		
	},
	
	trackProductZoom: function(self) {
		var link_href = "";
		var category_name = "product page";
		var action_name = "click zoom";

		var style_id = GUCCI.Product.dynamic_content.style_id;
		var style_size = "";
		var label_value = "";
		if (GUCCI.Product.dynamic_content.has_sizes) {
			style_size = $('#style_wrapper_dropdown option:selected').text();
		}

		label_value = GUCCI.GoogleAnalytics.makeProductID(style_id, style_size, GUCCI.GoogleAnalytics.pageName);

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_value);
		
	},
	
	trackProductZoomImage: function(self) {
		var link_href = "";
		var category_name = "product page";
		var action_name = "click on zoom for image " + (GUCCI.GoogleAnalytics.imageNumber);

		var style_id = GUCCI.Product.dynamic_content.style_id;
		var style_size = "";
		var label_value = "";
		if (GUCCI.Product.dynamic_content.has_sizes) {
			if ($('#style_wrapper_dropdown option:selected').attr('id') != '') {
				style_size = $('#style_wrapper_dropdown option:selected').text();
			}
		}

		label_value = GUCCI.GoogleAnalytics.makeProductID(style_id, style_size, GUCCI.GoogleAnalytics.pageName);

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_value);
		
	},

	trackProductZoomAlt: function(self) {
		var link_href = "";
		var category_name = "product page";
		GUCCI.GoogleAnalytics.imageNumber = self.index() + 1;
		var action_name = "click on other views image " + (GUCCI.GoogleAnalytics.imageNumber);

		var style_id = GUCCI.Product.dynamic_content.style_id;
		var style_size = "";
		var label_value = "";
		if (GUCCI.Product.dynamic_content.has_sizes) {
			if ($('#style_wrapper_dropdown option:selected').attr('id') != '') {
				style_size = $('#style_wrapper_dropdown option:selected').text();
			}
		}

		label_value = GUCCI.GoogleAnalytics.makeProductID(style_id, style_size, GUCCI.GoogleAnalytics.pageName);

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_value);
		
	},
	
	// GUCCI main logo
	trackHeaderLogoClick: function(self) {
		if (!GUCCI.GoogleAnalytics.phase3enabled) return;
		
		var link_href = self.attr("href");
		var category_name = 'top navigation';
		var action_name = "click gucci";
		var label_value = "gucci";
		
		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_value);
		
	},

	// home page: mainfeature
	trackHomePageMainFeature: function(self) {
		if (!GUCCI.GoogleAnalytics.phase2enabled) return;
		
		var link = self.parent('a');
		var link_href = link.attr("href");
		var category_name = 'homepage';
		var action_name = "click HP main space"
		var position = link.closest('#mainfeature').find('.active').index();
		var label_name = link.parent('.feature').find('h2').text() + ": " + link.text();

		if (self.has('img')) {
			label_name = "icon";
		}
		if (position == "") {
			position = self.attr('alt');
		}

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name + ' ' + position, label_name);

	},

	
	// home page: mainfeature
	trackHomePageMainFeatureImage: function(self) {
		var link_href = self.attr("href");
		var category_name = 'homepage';
		var action_name = "click HP main space";
		//action_name = action_name + " " + self.index();
		var label_name = self.closest('.feature').find('h2').text();

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_name);

	},

	// home page: sidebar
	trackHomePageSidebar: function(self) {

		var link_href = "";
		var category_name = 'homepage';
		var action_name = "click HP feature";
		var anchor_name = (self.index() + 1);
		var label_name = "feature name: " + $.trim(self.text());

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name + ' ' + anchor_name, label_name);
		
	},

	// NOTWORKING: need to bind to the mouseenter event for the panel so we can set the panelPosition and widgetPosition
	// category page (quickview)
	trackCategoryQuickview: function(self) {
		if (!GUCCI.GoogleAnalytics.phase2enabled) return;
		
		var link_href = "";

		var category_name = "category";
		var action_name = "quickview " + GUCCI.GoogleAnalytics.gender + " " + GUCCI.GoogleAnalytics.category;

		var anchor_name = GUCCI.GoogleAnalytics.panelPosition + GUCCI.GoogleAnalytics.widgetPosition;

		var self_img = self.find('img');
		var label_value = self_img.attr('id') + "_" + $(self_img.attr("rel")).find('a:first').text().replace(/["']/g, '');

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name + ' ' + anchor_name, label_value);

	},

	// mega menu
	trackMegaMenuClick: function(self) {
		var link_href = "";
		var category_name = 'top navigation';
		var action_name = "click";
		var anchor_name = "";
		var label_name = self.text();

		if (self.closest('.mega_menu').length > 0) {
			// "normal" mega menu (not quicklink)
			anchor_name = self.closest('.mega_menu').find('.mega_link').text();
			
			// for the promo image
			if (self.closest(".mega_promo").length > 0) {
				if (self.find('img').length > 0) {
					// the commented one includes the text caption
					//label_name = "promo feature: " + self.find('img').attr('alt');
					label_name = "promo feature";
				} else {
					// the commented one includes the text caption
					//label_name = "promo link: " + label_name;
					label_name = "promo link";
				}
			}
		} else {
			anchor_name = "quicklink"
		}

		if (self.hasClass('mega_promo_caption')) {
			// for the promo image caption
			link_href = self.siblings('a:first').attr("href");
		}
		else {
			link_href = self.attr("href");
		}

		
		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name + ' ' + anchor_name, label_name);
		
	},

	// sign in / create account / shopping bag / etc...
	trackUserbuyflowClick: function(self) {
		if (!GUCCI.GoogleAnalytics.phase2enabled) return;
		
		var link_href = self.attr("href");
		var category_name = 'top navigation';
		var action_name = "click";
		var anchor_name = self.text();
		var label_name = "";
		
		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name + ' ' + anchor_name, label_name);
		
	},
	
	// footer
	trackFooterClick: function(self) {
		var link_href = self.attr("href");
		var category_name = 'footer';
		var action_name = "click";
		var anchor_name = self.text();
		var label_name = "";

		if (self.attr('id') == 'countries_link') {
			// ignore this... only track the overlay click
			return;
		}
		else if (self.closest("#footer_promo").length > 0) {
			action_name = action_name + " promo link " + (self.closest('li').index() + 1);
		}
		else if (link_href.length > 0 && link_href.indexOf('//www.facebook.com/') != -1 ) {
			label_name = "facebook";
		}
		else if (link_href.length > 0 && link_href.indexOf('//twitter.com/') != -1) {
			label_name = "twitter";
		}
		else if (self.attr('id') == 'email_signup') {
			label_name = "email signup";
		}
		else {
			label_name = "";
		}

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name + ' ' + anchor_name, label_name);
		
	},

	// change country overlay 
	trackCountryClick: function(self) {
		var link_href = self.attr("href");
		var category_name = 'footer';
		var action_name = "click";
		var anchor_name = "change site";
		var label_name = self.text();

		GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name + ' ' + anchor_name, label_name);
		
	},

	trackFlowplayer: function(videoID) {
		if (typeof flowplayer != 'function') return;

		// send event at every 20%
		var cuepointFrequency = 20;

		var player = flowplayer(videoID);
		var video = player.getClip(0);
		var category_name = "world of gucci - videos";
		var action_name = "";
		var label_name = $("#worldofgucci_sidebar h2").text();
		var link_href = "";

		video.onStart(function() {
			var numCuepoints = 100 / cuepointFrequency;
			var totalDuration = video.fullDuration * 1000;
			var cuepointDuration = totalDuration / numCuepoints;
			
			for(var i=0; i<numCuepoints; i++) {
				player.onCuepoint(
					function(num, clip) {
						//alert("set cuepoint at "+ cuepointFrequency * num +"%");
						return Math.floor(cuepointDuration * num);
					}(i),
					function(clip, cuepoint) {
						var pct = GUCCI.GoogleAnalytics.cuepointToPercentage(cuepoint, totalDuration);
						//alert("cuepoint at "+ pct +"% reached");
						action_name = "play a video: " + pct + "%";
						GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_name);
					}
				);
			}
		});
		video.onFinish(function() {
			action_name = "play a video: 100%";
			GUCCI.GoogleAnalytics.recordLinkEvent(link_href, category_name, action_name, label_name);
		});
	},
	
	// cuepoint is the clip's current position in milliseconds
	// totalDuration is also in ms
	cuepointToPercentage: function(cuepoint, totalDuration) {
		// only care about the tens digit.
		return (Math.round(cuepoint / totalDuration * 10) * 10);
	},
	
	recordVirtualPageView: function(link_href) {
		if (!GUCCI.GoogleAnalytics.enabled) return;
		
		for(var i=0; i<GUCCI.GoogleAnalytics.trackerNames.length; i++) {
			_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._trackPageview', link_href]);
		}
	},
	
	// network (required) – A string representing the social network being tracked (e.g. Facebook, Twitter, LinkedIn)
	// socialAction (required) – A string representing the social action being tracked (e.g. Like, Share, Tweet)
	// opt_target (optional) – A string representing the URL (or resource) which receives the action. if this parameter is undefined or omitted, the tracking code defaults to using document.location.href.
	// opt_pagePath (optional) – A string representing the page by path (including parameters) from which the action occurred.
	recordSocialEvent: function(network, socialAction, opt_target) {
		if (!GUCCI.GoogleAnalytics.enabled) return;
		
		for(var i=0; i<GUCCI.GoogleAnalytics.trackerNames.length; i++) {
			_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._trackSocial', network, socialAction, opt_target, document.location.href]);
		}
	},

	recordLinkEvent: function(link, category, action, label) {
		if (!GUCCI.GoogleAnalytics.enabled) return;

		var uri = "";
		
		// 65 chars max
		label = label.substring(0, 65);
		
		try {
			uri = GUCCI.GoogleAnalytics.parseURI(link);
			if (uri.hostname != "" && uri.hostname != document.domain) {
				action = "(outbound) " + action;
			}
			
			// if (link != "" && link != "#" && link.indexOf(document.domain) < 0) {
			// 	action = "(outbound) " + action;
			// }
			
			for(var i=0; i<GUCCI.GoogleAnalytics.trackerNames.length; i++) {
				_gaq.push([GUCCI.GoogleAnalytics.trackerNames[i] + '._trackEvent', category, action, label]);
			}
			
			// if (link != "") {
			// 	setTimeout('document.location = "' + link + '"', 100);
			// }
			
		} catch(err) { }
		
	},

	makeProductID: function(styleId, styleSize, descrip) {
		var productId = styleId || "";
		if (styleSize.length > 0) {
			productId = productId + "_" + styleSize;
		}
		if (productId.length > 0) {
			productId = productId + "_";
		} 
		productId = productId + descrip.replace(/["']/g, '');
		productId = productId.substring(0, 65);
		return productId;
	},

	parseURI: function(url) {
		// https://gist.github.com/1088850
		
	  var m = String(url).replace(/^\s+|\s+$/g, '').match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);
	
	  // authority = '//' + user + ':' + pass '@' + hostname + ':' port
	  return (m ? {
	    href : m[0] || '',
	    protocol : m[1] || '',
	    authority: m[2] || '',
	    host : m[3] || '',
	    hostname : m[4] || '',
	    port : m[5] || '',
	    pathname : m[6] || '',
	    search : m[7] || '',
	    hash : m[8] || ''
	  } : null);
	
	}
	
};



GUCCI.Analytics = {
    PRODUCT_SEGMENT: 'PRO',
    connection: false,
    production: false,
    region: '',
    country: '',
    language: '',
    promo: '',
    sendToCoremetrics: function() { return GUCCI.Analytics.connection && GUCCI.Analytics.region && GUCCI.Analytics.country && GUCCI.Analytics.language; },
    prefix: '',
    attributeString: '',
    formatValue: function(value) { return value.replace(/-/g,'').replace(/_/g,'').replace(/'/g,''); },
    initialize: function(region,country,language,production) 
    {
        if (typeof cmCreatePageviewTag != 'function' || region == null || country == null || language == null) return;
        GUCCI.Analytics.region = region;
        GUCCI.Analytics.country = country;
        GUCCI.Analytics.language = language;

        if (production != null)
            GUCCI.Analytics.production = production;
            
        if ((document.location.href.indexOf('www.gucci.com') > -1) || (document.location.href.indexOf('presale.gucci.com') > -1))
            GUCCI.Analytics.production = true;
            
        if (GUCCI.Analytics.production)
            cmSetClientID("90253055",true,"data.coremetrics.com","gucci.com");
        else
            cmSetClientID("60253055",false,"testdata.coremetrics.com","gucci.com");
            
        GUCCI.Analytics.prefix = (region + ':' + country + ':' + language).toUpperCase();
                
        //TODO: Add reference to pull final defined promotional cookie as available.
        GUCCI.Analytics.attributeString = GUCCI.Analytics.promo+"-_-"+GUCCI.viewport.width()+"x"+GUCCI.viewport.height();
    },
    pageView: function(name,segment)
    {
			if (!GUCCI.Analytics.sendToCoremetrics || name == null) return;
			name = GUCCI.Analytics.formatValue(name);
			if (typeof segment == 'string' && segment.length > 0) 
			{
			    segment = GUCCI.Analytics.formatValue(segment);
				cmCreatePageviewTag(GUCCI.Analytics.prefix + ':' + segment.toUpperCase() + ':' + name.toUpperCase(),null,null,null,GUCCI.Analytics.attributeString);
	             // console.log("create pageview tag: " + GUCCI.Analytics.prefix + ':' + segment.toUpperCase() + ':' + name.toUpperCase() + " attr:" + GUCCI.Analytics.attributeString);
			}
			else 
			{
				cmCreatePageviewTag(GUCCI.Analytics.prefix + ':' + name.toUpperCase(),null,null,null,GUCCI.Analytics.attributeString);
	            // console.log("create pageview tag: " + GUCCI.Analytics.prefix + ':' + name.toUpperCase() + " attr:" + GUCCI.Analytics.attributeString);
			}
    },
    
    rtwView: function(look)
   	{
   		if (!GUCCI.Analytics.sendToCoremetrics|| look == null) return;
   		    cmCreatePageviewTag(GUCCI.Analytics.prefix + ':' + GUCCI.Analytics.PRODUCT_SEGMENT + ":RTW LOOK" + look,null,null,null,GUCCI.Analytics.attributeString);
            //console.log("create rtwview tag: " + GUCCI.Analytics.prefix + ':' + GUCCI.Analytics.PRODUCT_SEGMENT + ":RTW LOOK" + look,null,null,null,GUCCI.Analytics.attributeString);
   	},
    
    productView: function(style)
	{
		if (!GUCCI.Analytics.sendToCoremetrics|| style == null) return;
		if (style.indexOf(' ') == -1 && style.length == 15)
			style = style.substring(0,6) + ' ' + style.substring(6,11) + ' ' + style.substring(11,15);
		cmCreatePageviewTag(GUCCI.Analytics.prefix + ':' + GUCCI.Analytics.PRODUCT_SEGMENT + ":" + style,null,null,null,GUCCI.Analytics.attributeString);
         //console.log("create productview tag: " + GUCCI.Analytics.prefix + ':' + GUCCI.Analytics.PRODUCT_SEGMENT + ':' + style + " attr:" + GUCCI.Analytics.attributeString);
	},
	
	order: function(orderid,ordertotal,ordershipping,customerid,customercity,customerstate,customerpostalcode,ccnumber,currency) 
	{

		if (!GUCCI.Analytics.sendToCoremetrics || typeof orderid != 'string' || typeof ordertotal != 'string' || typeof ordershipping != 'string' || typeof customerid != 'string') return;
         // if (typeof ccnumber == 'string' && ccnumber == '5262444444444444') return;
		
		if (!customercity)				
			cmCreateOrderTag(orderid,ordertotal,ordershipping,customerid,null,null,null,currency,GUCCI.Analytics.country + ":" + GUCCI.Analytics.language);
		else		
			cmCreateOrderTag(orderid,ordertotal,ordershipping,customerid,customercity,customerstate,customerpostalcode,currency,GUCCI.Analytics.country + ":" + GUCCI.Analytics.language);
            // console.log("create thank you tag: " + orderid,ordertotal,ordershipping,customerid,customercity,customerstate,customerpostalcode,currency+"-_-"+GUCCI.Analytics.country);
	},

	searchResult: function(progression, criteria, resultnum)
	{
		// user has to set the progression, terms in above method first at least
		if (progression.length > 0 && criteria.length > 0) 
		{
			progression = GUCCI.Analytics.formatValue(progression);
			criteria = GUCCI.Analytics.formatValue(criteria);
			resultnum = GUCCI.Analytics.formatValue(resultnum);
		    // if (resultnum == 0)
		  //          progression += ' UNSUCC';
			cmCreatePageviewTag(GUCCI.Analytics.prefix +  ":SEA:" + progression,null,criteria,resultnum,null,null,null,GUCCI.Analytics.attributeString);
            // console.log("create search tag:" + GUCCI.Analytics.prefix +  ":SEA:" + progression,null,criteria,resultnum,null,null,null,GUCCI.Analytics.attributeString)
		}
	}
};




$(document).ready(function() {

});

