
// Normal link tracking and cusotm page view functions:
function trackLinkClick(linkType, itemName)
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;	// There is an invisible <div> element in /omniture/commonTags.jsp
	variableString+='|'+ linkType +'|'+ itemName;
	
	s.tl(this,'o',variableString);	// Tracks a link click as such
}

function trackLinkClickAsPageView(linkType, itemName)
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|'+ linkType +'|'+ itemName;
	
	s.t();	// Tracks a link click as a page view (for actions that do not refresh the page/route users)
}

function trackVirtualPageView(virtualPageName, linkType, itemName)
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString += ':'+virtualPageName+'|'+ linkType +'|'+ itemName;
	
	s.t();	// Tracks a link click as a page view (for actions that do not refresh the page/route users)
}

function trackLinkDetailsTabClick(linkType, itemName, productId)
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|'+ linkType +'|'+ itemName;
	
	s.linkTrackVars='events,products';
	s.linkTrackEvents='event23';
	s.events='event23';
	s.products=';' + productId;
	
	s.tl(this,'o',variableString);	// Tracks a link click as such
}
//=================================================================================================

// Cross-sell tracking
function trackCrossSellLinkClick(moduleType, moduleLocation, itemName)
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|'+ moduleType +'|'+ moduleLocation +'|'+ itemName;
	
	s.linkTrackVars='prop21,eVar10,eVar42';
	s.prop21=variableString;
	s.eVar10=moduleType;
	s.eVar42=variableString;
	
	s.tl(this,'o',variableString);
}

function trackCrossSellArrowLinkClick(moduleType, direction)	// Product page X-sell scrolling
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|'+ moduleType +'|'+ direction;
	
	s.tl(this,'o',variableString);
}
// END Cross-sell tracking=========================================================================

// Add/Remove from cart tracking
function trackAddToCart(productID, skuID, cartIsEmpty)	// Normal, vanilla add to cart
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Add to Cart|' + productID;
	
	s.linkTrackVars='events,products';
	
	if (skuID == '' || skuID == null) {
		s.products = ';' + productID;
	}
	else {
		s.products = ';' + productID + ';;;;eVar45=' + skuID;
		s.eVar45 = skuID;
		s.linkTrackVars+=',eVar45'
	}
	
	if (cartIsEmpty == 'true') {
		s.events = 'scAdd,scOpen';
	}
	else {
		s.events = 'scAdd';
	}
	
	s.t();
}

function trackMultiAddToCart(cartIsEmpty)	// For PD pages that let you add multiple products to the cart (familyProductDetail.jsp)
{
	var s=s_gi(s_account);
	
	var productList='';
	var OMNIproductListAddToCart = new Array();
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Add to Cart|';
	
	s.linkTrackVars='events';
	
	// Build the array of product being added from the array constructed in /browse/multiAddProductListContainer.jsp
	for(i=0; i<OMNIproductList.length; i++) {
		if(document.getElementById('CartFormHandler.items[' + OMNIproductList[i] + '].addToCartFlag').checked) {
			OMNIproductListAddToCart.push(OMNIproductListIDs[i]);	// OMNIproductListIDs is an array of the web IDs; used instead of ATG IDs
		}
	}
	
	for(i=0; i<OMNIproductListAddToCart.length; i++) {
		if(i == (OMNIproductListAddToCart.length - 1)) {
			productList+=';' + OMNIproductListAddToCart[i];
			variableString+=OMNIproductListAddToCart[i];
		}
		else {
			productList+=';' + OMNIproductListAddToCart[i] + ',';
			variableString+=OMNIproductListAddToCart[i] + ' -- ';
		}
	}
	
	if (cartIsEmpty == 'true') {
		s.events = 'scAdd,scOpen';
	}
	else{
		s.events = 'scAdd';
	}
	
	s.products=productList;
	
	s.t();
}

function trackGiftListAddToCart (cartIsEmpty)
{
	var s=s_gi(s_account);
	
	var productList='';
	var OMNIproductListAddToCart = new Array();
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Add to Cart|';
	
	s.linkTrackVars='events';
	
	// Build the array of product being added from the array constructed in /giftlists/gadgets/giftListShop.jsp
	for(i=0; i<OMNIskuList.length; i++) {
		if(document.getElementById('atg_b2cblueprint_quantity_' + OMNIskuList[i]).value > 0) {
			OMNIproductListAddToCart.push(OMNIproductListIDs[i]);	// OMNIproductListIDs is an array of the web IDs; used instead of ATG IDs
		}
	}
	
	for(i=0; i<OMNIproductListAddToCart.length; i++) {
		if(i == (OMNIproductListAddToCart.length - 1)) {
			productList+=';' + OMNIproductListAddToCart[i];
			variableString+=OMNIproductListAddToCart[i];
		}
		else {
			productList+=';' + OMNIproductListAddToCart[i] + ',';
			variableString+=OMNIproductListAddToCart[i] + ' -- ';
		}
	}
	
	if (cartIsEmpty == 'true') {
		s.events = 'scAdd,scOpen';
	}
	else{
		s.events = 'scAdd';
	}
	
	s.products=productList;
	
	s.t();
}

function trackQuickShopAddToCart(cartIsEmpty)	// For shop by catalog results page add-to-carts (multiple products potentially)
{
	var s=s_gi(s_account);
	
	var productList='';
	var OMNIproductListAddToCart = new Array();
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Add to Cart|';
	
	s.linkTrackVars='events,products';
	
	for(i=0; i<OMNIproductListQuickShop.length; i++) {	// OMNIproductListQuickShop is a list of the products being displayed on the page
		if(!OMNIArrayContains(OMNIproductListQuickShop[i], OMNIproductListQuickShopNA)) {	// OMNIproductListQuickShopNA is an array of products that are not available; constructed in /browse/gadgets/quickShopProductAttributes_body.jsp
			// If the product is in the list of unavailable products, do NOT add it to the list of products being added to the cart
			OMNIproductListAddToCart.push(OMNIproductListQuickShop[i]);
		}
	}
	
	for(i=0; i<OMNIproductListAddToCart.length; i++) {
		if(i == (OMNIproductListAddToCart.length - 1)) {
			productList+=';' + OMNIproductListAddToCart[i];
			variableString+=OMNIproductListAddToCart[i];
		}
		else {
			productList+=';' + OMNIproductListAddToCart[i] + ',';
			variableString+=OMNIproductListAddToCart[i] + ' -- ';
		}
	}
	
	if (cartIsEmpty == 'true') {
		s.events = 'scAdd,scOpen';
	}
	else{
		s.events = 'scAdd';
	}
	
	s.products=productList;
	
	s.t();
}

function trackRemoveFromCartClick(productName)
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Remove from Cart|' + productName;
	
	s.linkTrackVars='eVar38';
	s.eVar38=productName;
	
	s.tl(this,'o',variableString);
}

function OMNIArrayContains(element, array)	// Helper method to determine whether or not a quick shop product is actually being added to the cart
{
	for (j=0; j<array.length; j++) {
		if (array[j] == element) {
			return true;
		}
	}
	return false;
}
// END Add/Remove from cart tracking ==============================================================

// Registration/login tracking
function trackLogin(whereFrom)
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|User Login|' + whereFrom;
	
	s.linkTrackVars='events';
	s.linkTrackEvents='event25';
	s.events='event25';
	
	setTimeout( function(){s.tl(this,'o',variableString)}, 1000);
}

function trackNewUserRegistration()	// Register from the 'My Account' registration page
{
	var s=s_gi(s_account);
	
	s.linkTrackEvents='';
	s.events='';
	
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Registration|' + 'Normal';
	
	var userInfoString = '';
	
	if(document.getElementById('atg_b2cblueprint_profileMagazineSubscriber') !=null && document.getElementById('atg_b2cblueprint_registerGender') != null && document.getElementById('atg_b2cblueprint_registerCountry') !=null) {
		var isMagSubscriber = document.getElementById('atg_b2cblueprint_profileMagazineSubscriber').checked;	// Is a magazine subscriber
		var gender = document.getElementById('atg_b2cblueprint_registerGender').value;							// User's gender
		var country = document.getElementById('atg_b2cblueprint_registerCountry').value;						// User's country
		
		var productInterests = '';
		var isFirstProductInterests = true;
		
		for (i=1; i<=OMNIFavoriteProductFeaturesCount; i++) {	// OMNIFavoriteProductFeaturesCount is the number of product features listed on the register page (/myaccount/gadgets/favoriteProductFeaturesPicker.jspf)
			var currOMNIAtg_b2cblueprint_profileMyInfoEditFavProduct = 'atg_b2cblueprint_profileMyInfoEditFavProduct' + i;
			if (document.getElementById(currOMNIAtg_b2cblueprint_profileMyInfoEditFavProduct).checked) {	// Check to see if they've checked this feature as one of their favorites
				if (isFirstProductInterests) {
					productInterests += document.getElementById(currOMNIAtg_b2cblueprint_profileMyInfoEditFavProduct).value;
					isFirstProductInterests = false;
				}
				else {
					productInterests += ' -- ' + document.getElementById(currOMNIAtg_b2cblueprint_profileMyInfoEditFavProduct).value;
				}
			}
		}
		
		if (isMagSubscriber) {	// Check to see if they're a magazine subscriber
			userInfoString += 'member';
			s.eVar49 = 'member';
		}
		else {
			userInfoString += 'non member';
			s.eVar49 = 'non member';
		}
		userInfoString += ':' + gender + ':' + country;
		
		if (productInterests == '') { userInfoString += ':no interests'; }
		else { userInfoString += ':' + productInterests; }
	}
	userInfoString += ':email opt-in';
	s.linkTrackEvents+='event13,';
	s.events+='event13,';
	s.linkTrackVars='events,prop34,eVar49';
	s.linkTrackEvents+='event14';
	s.events+='event14';
	
	s.prop34 = userInfoString;
	
	setTimeout( function(){s.tl(this,'o',variableString)}, 1000);
}

function trackPostRegistrationLinkClick()	// Register after a purchase
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|'+ 'Post Purchase Registration' +'|'+ 'Save';
	
	s.linkTrackVars='events';
	s.linkTrackEvents='event1';
	s.events='event1';
	
	if (document.getElementById('atg_b2cblueprint_signUpInput').checked) {	// Check to see if they've opted-in to emails
		s.linkTrackEvents+=',event13';
		s.events+=',event13';
	}
	
	setTimeout( function(){s.tl(this,'o',variableString)}, 1000);
}
// END Registration/login tracking ================================================================

function trackCheckoutButtonClick(checkoutType)	// Track 'Begin Checkout'
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Begin Checkout|' + checkoutType;
	
	var productList='';
	for(i=0; i<OMNIProductList.length; i++) {	// OMNIProductList is an array of product IDs constructed in /cart/gadgets/cartItems.jsp
		if(i == (OMNIProductList.length - 1)) {
			productList+=";" + OMNIProductList[i];
		}
		else {
			productList+=';' + OMNIProductList[i] + ',';
		}
	}
	s.products=productList;
	
	s.linkTrackVars='events,products,prop36,eVar27';
	s.linkTrackEvents='scCheckout';
	s.events='scCheckout';
	
	s.prop36=checkoutType;
	s.eVar27=checkoutType;
	
	s.tl(this,'o',variableString);
}

function trackNextPrevProdLinkClick(direction, itemName)	// PD page Prev/Next product links
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|'+ direction +'|'+ itemName;
	
	s.tl(this,'o',variableString);
}

function trackMoreDetailsLinkClick(productID)	// View Details links, quick look/quick shop pages
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|More Details|' + productID;
	
	//s.linkTrackVars='events,products';
	//s.linkTrackEvents='event23';
	//s.events='event23';
	
	//s.products=';' + productID;
	
	s.tl(this,'o',variableString);
}

function trackCatalogRequestLinkClick()	// Request a catalog form submission
{
	var s=s_gi(s_account);
	
	var emailAddress = document.getElementsByName('/atg/ngs/commerce/profile/catalog/CatalogRequestFormHandler.value.email').item(0).value;	// Get the user's email address
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Catalog Request|' + emailAddress;
	
	s.linkTrackVars='events';
	s.linkTrackEvents='event24';
	s.events='event24';
	/* This object does not exist on the page, which is causing JS Errors to be thrown
	if (document.getElementsByName('/atg/ngs/commerce/profile/catalog/CatalogRequestFormHandler.value.optIn').item(0).checked) {	// Check to see if they're signing up for emails
		s.linkTrackEvents+=',event13';
		s.events+=',event13';
	}
	*/
	s.tl(this,'o',variableString);
}

function trackViewCatalogLinkClick(catalog)	// View Scene7 catalog popup
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|View Catalog|' + catalog;
	
	s.linkTrackVars='events,eVar1';
	s.linkTrackEvents='event26';
	s.events='event26';
	
	s.tl(this,'o',variableString);
}

function trackAddToFavoritesClick(productName)	// Add to favorites links, PD page, cart page
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Add to Favorites|' + productName;
	
	s.linkTrackVars='events,prop3';
	s.linkTrackEvents='event15';
	s.events='event15';
	
	s.prop3=variableString;

	s.tl(this,'o',variableString);
}

function trackAddToGiftListClick(productName)	// Add to gift list links, PD page
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Add to Gift List|' + productName;
	
	s.linkTrackVars='events,prop20';
	s.linkTrackEvents='event21';
	s.events='event21';
	
	s.prop20=productName;

	s.tl(this,'o',variableString);
}

function trackSearchClick()	// Track searches
{
	var s=s_gi(s_account);
	
	var searchTerm = document.getElementById('atg_b2cprint_searchInput').value;
	if (searchTerm == '') {
		return;
	}
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Top-Nav Search|' + searchTerm;
	
	s.linkTrackVars='events,prop2,eVar5';
	s.linkTrackEvents='event2';
	s.events='event2';
	
	s.prop2=searchTerm;
	s.eVar5=searchTerm;
	
	s.tl(this,'o',variableString);
}

function trackEmailSignUpClick()	// Email signup form submission
{
	var s=s_gi(s_account);
	
	var emailAddress = document.getElementById('atg_b2cblueprint_registerEmailAddress').value;
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Email SignUp|' + emailAddress;
	
	s.linkTrackVars='events';
	s.linkTrackEvents='event13';
	s.events='event13';
	
	s.tl(this,'o',variableString);
}

function trackEmailAFriendClick(productId)	// Email a friend form submission
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Email A Friend|' + productId;
	
	s.linkTrackVars='events';
	s.linkTrackEvents='event22';
	s.events='event22';
	
	s.tl(this,'o',variableString);
}

function trackDidYouMeanClick(keyWord)	// Did you mean? clicks, search results with questionable search term (e.g. shrti instead of shirt)
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Did You Mean|' + keyWord;
	
	s.linkTrackVars='events';
	s.linkTrackEvents='event10';
	s.events='event10';
	
	s.tl(this,'o',variableString);
}

function trackContactUsClick()	// Contact us form submission
{
	var s=s_gi(s_account);
	
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	
	var contactTypeValue = document.getElementsByName('/atg/ngs/service/EmailFormHandler.subject').item(0).value;
	var contactType = '';
	
	switch(contactTypeValue){
		case 'merchandiseinquiry':
			contactType = 'Merchandise Order Inquiry';
			break;
		case 'magazineinquiry':
			contactType = 'Magazine Order Inquiry';
			break;
		case 'returns':
			contactType = 'Returns or Exchanges';
			break;
		case 'orderstatus':
			contactType = 'Order Status';
			break;
		case 'account':
			contactType = 'My Account';
			break;
		case 'comments':
			contactType = 'Site Comments';
			break;
		case 'gifts':
			contactType = 'Corporate Gifts';
			break;
		case 'other':
			contactType = 'Other';
			break;
	}
	
	variableString+='|Contact Us|' + contactType;
	
	s.linkTrackVars='events,eVar7';
	s.linkTrackEvents='event18';
	s.events='event18';
	
	s.eVar7 = contactType;
	
	s.tl(this,'o',variableString);
}

function trackFullSiteClick() // Tracks clicks from Mobile site to Full Site 
{ 
	 var s=s_gi(s_account); 
	
	 var variableString; 
	 variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML; 
	 variableString+='|Footer|View Full Site|'; 
	    
	 var pN = document.getElementById("OMN.PageName"); 
	
	    if(pN != null) 
	
	 var pName = pN.content.toLowerCase(); 
	
	 s.linkTrackVars='prop51,prop52,eVar51,eVar52,events'; 
	 s.linkTrackEvents='event44' 
	    
	s.prop51 = "view full site"; 
	s.eVar51 = "view full site"; 
	s.prop52 = pName+">view full site"; 
	s.eVar52 = pName+">view full site"; 
	s.events= 'event44'; 
	
	s.tl(this,'o',variableString); 
}

// The form error array is generated on the following pages:
//	../myaccount/gadgets/myAccountErrorMessage.jsp
//	../myaccount/gadgets/passwordEditErrorMessage.jsp
//	../myaccount/gadgets/giftListAdd.jsp
//	../myaccount/gadgets/profilePasswordForgot.jsp
//	../giftlist/gadgets/errorMessage.jsp
//	../checkout/gadgets/checkoutErrorMessages.jsp
function trackFromError(errorMsgs)
{
	var s=s_gi(s_account);
	
	s.linkTrackVars='events,prop30';
	s.linkTrackEvents='event17';
	s.events='event17';
	
	s.prop30 = '';
	for (i=0; i<errorMsgs.length; i++) {
		if (i == errorMsgs.length - 1) {
			s.prop30 += errorMsgs[i];
		}
		else {
			s.prop30 += errorMsgs[i] + '+';
		}
	}
	
	var variableString;
	variableString = variableString=document.getElementById('OMNIPageNameVar').innerHTML;
	variableString+='|Form Error|' + s.prop30;

	//s.tl(this,'o',variableString);	NGS-1222
}

