
// MATTEL ONLINE
// Copyright 2007 Mattel, Inc. All Rights Reserved.
// This file is proprietary; unauthorized use or redistribution is prohibited.


/**
* Mattel FlashTrack API
* 
* @author Scott Jeppesen
* @author Scott Delamater
* @author Chris Cutler
* @created 2/17/2006
* @modified 3/24/2006
* @modified 1/25/2007 - CC
* @version 2.1 ALPHA
* 
* Added support for Mattel Tracker v1.0
*/


// ::: CONFIGURATION

var minVersion = 2.0;										// The minimum required FlashTrack class version
var FTExcludeTags = ["redirectLink", "popupName", "popupProps"];			// The following properties will be *not* be treated as tracking-specific variables
var defaultPopupName = "_blank";							// The default name for popup windows, used by FlashTrackRedirPopup


// ::: IMPLEMENTATION

/*
REMOVED THREE FLASH-TRACK CALLS TO DISABLE WT6 20080311
var FTDepFlashTrack = __FlashTrack;				// Handles deprecated FlashTrack calls
var FTDepFlashTrackRedir = __FlashTrackRedir;			// Handles deprecated FlashTrackRedir calls
var FTDepFlashTrackRedirPopup = __FlashTrackRedirPopup;		// Handles deprecated FlashTrackRedirPopup calls   
*/
//var FTDepFlashTrackRedirParent = __FlashTrackRedirParent;		// Handles deprecated FlashTrackRedirParent calls

function handleTracking(oData) {
	//alert("handleTracking:\n" + enum(oData));
	
	// WebTrends 6.0 collection
	if (typeof dcs_TAG != "undefined") {
		ClearCG();
		WT.ti = oData.title;
		DCS.dcsuri = oData.uri;
		DCS.dcsdat = (new Date()).getTime();
		
		var TagPath = dcsADDR;
		if (oData.dcsID != "" && oData.dcsID != null) {
			dcsID = oData.dcsID;
		}
		if (dcsID != "" && dcsID != null) {
			TagPath += "/" + dcsID;
		}

		//dcs_TAG(TagPath);
	}
	
	// Mattel Tracker v1.0
	if (typeof MATTEL.tracker.Tracker.track != "undefined") {
		MATTEL.tracker.Tracker.enableShortCuts();
		//MATTEL.tracker.Tracker.debug = true;
		//MATTEL.tracker.Tracker.simulate = true;
		var trackObj = {};
		// EXAMPLE Syntax:
		/*
		if (oData.uri.indexOf("FlashTrackName.ftrk") != -1) {
			trackObj.name = "Game Name";
			trackObj.channel = CHANNEL.GAMES;
			trackObj.campaign = CAMPAIGN.NONE;
			trackObj.contenttype = CONTENTTYPE.GAME;
			trackObj.action = ACTION.PLAY;
		}		
		*/
		if (typeof oData.title !="undefined") {
			// Points Party Specific Tracking
			if (oData.title.indexOf("EG Popover Displayed") != -1) {
				trackObj.name = Tracker.name + " - EG Popover Displayed";
				trackObj.channel = Tracker.channel;
				trackObj.campaign = CAMPAIGN.POINTSPARTY;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.VIEW;
			}
			if (oData.title.indexOf("EG Overlay Popup Declined") != -1) {
				trackObj.name = Tracker.name + " - EG Popover Declined";
				trackObj.channel = Tracker.channel;
				trackObj.campaign = CAMPAIGN.POINTSPARTY;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.title.indexOf("EG User Join ClickThru") != -1) {
				trackObj.name = Tracker.name + " - EG User Join";
				trackObj.channel = Tracker.channel;
				trackObj.campaign = CAMPAIGN.POINTSPARTY;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.title.indexOf("EG User Log In ClickThru") != -1) {
				trackObj.name = Tracker.name + " - EG User Log In";
				trackObj.channel = Tracker.channel;
				trackObj.campaign = CAMPAIGN.POINTSPARTY;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.title.indexOf("EG User wPoints Continue To Party ClickThru") != -1) {
				trackObj.name = Tracker.name + " - EG User With Points Continue To Party";
				trackObj.channel = Tracker.channel;
				trackObj.campaign = CAMPAIGN.POINTSPARTY;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.title.indexOf("EG User With Points Declined Click") != -1) {
				trackObj.name = Tracker.name + " - EG User With Points Declined";
				trackObj.channel = Tracker.channel;
				trackObj.campaign = CAMPAIGN.POINTSPARTY;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.title.indexOf("EG User Max Points Today Declined Click") != -1) {
				trackObj.name = Tracker.name + " - EG User Max Points Today Declined";
				trackObj.channel = Tracker.channel;
				trackObj.campaign = CAMPAIGN.POINTSPARTY;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.title.indexOf("EG User View charm ClickThru") != -1) {
				trackObj.name = Tracker.name + " - EG User View Charm";
				trackObj.channel = Tracker.channel;
				trackObj.campaign = CAMPAIGN.POINTSPARTY;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.title.indexOf("EG User Completed Points Party") != -1) {
				trackObj.name = Tracker.name + " - EG User Completed Points Party";
				trackObj.channel = Tracker.channel;
				trackObj.campaign = CAMPAIGN.POINTSPARTY;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.VIEW;
			}
			if (oData.title.indexOf("EG User With Charm Declined Click") != -1) {
				trackObj.name = Tracker.name + " - EG User With Charm Declined";
				trackObj.channel = Tracker.channel;
				trackObj.campaign = CAMPAIGN.POINTSPARTY;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.CLICK;
			}
		}
		if (typeof oData.uri != "undefined") {
			if (oData.uri.indexOf("PollyPocket_DressNDrive_Play.ftrk") != -1) {
				trackObj.name = "Drive N Style";
				trackObj.channel = CHANNEL.PARK;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.GAME;
				trackObj.action = ACTION.PLAY;
			}
			if (oData.uri.indexOf("wackywardrobeplay.ftrk") != -1) {
				trackObj.name = "Wacky Wardrobe";
				trackObj.channel = CHANNEL.MALL;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.GAME;
				trackObj.action = ACTION.PLAY;
			}
			if (oData.uri.indexOf("PollyPocket_HairSalon_Play.ftrk") != -1) {
				trackObj.name = "Hair Stylin Salon";
				trackObj.channel = CHANNEL.MALL;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.GAME;
				trackObj.action = ACTION.PLAY;
			}
			if (oData.uri.indexOf("PollyPocket_BeautifulBedroom_Play.ftrk") != -1) {
				trackObj.name = "Beautiful Bedroom";
				trackObj.channel = CHANNEL.MANSION;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.GAME;
				trackObj.action = ACTION.PLAY;
			}
			if (oData.uri.indexOf("Cool Creatures Play.ftrk") != -1) {
				trackObj.name = "Cool Creatures";
				trackObj.channel = CHANNEL.LAGOON;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.GAME;
				trackObj.action = ACTION.PLAY;
			}
			if (oData.uri.indexOf("Cool Creatures Print.ftrk") != -1) {
				trackObj.name = "Cool Creatures";
				trackObj.channel = CHANNEL.LAGOON;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.GAME;
				trackObj.action = ACTION.PRINT;
			}
			if (oData.uri.indexOf("PollyPocket_JewelHunt_FirstJewel.ftrk") != -1) {
				trackObj.name = "Jewel Hunt First Jewel";
				trackObj.channel = CHANNEL.JEWELHUNT;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.ACTIVITY;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.uri.indexOf("PollyPocket_JewelHunt_Payoff.ftrk") != -1) {
				trackObj.name = "Jewel Hunt Payoff";
				trackObj.channel = CHANNEL.JEWELHUNT;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.ACTIVITY;
				trackObj.action = ACTION.COMPLETED;
			}
			if (oData.uri.indexOf("PollyPocket_JewelHunt_Payoff.ftrk") != -1) {
				trackObj.name = "Jewel Hunt Payoff";
				trackObj.channel = CHANNEL.JEWELHUNT;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.ACTIVITY;
				trackObj.action = ACTION.COMPLETED;
			}
			if (oData.uri.indexOf("ShopFooterDemoSkuJ1681.ftrk") != -1) {
				trackObj.name = "Footer Rocking Theme Park Product J1681";
				trackObj.channel = CHANNEL.PARK;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.INT_AD_BUTTON;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.uri.indexOf("PolyPocket_DressNDrive_ZazzleClick.ftrk") != -1) {
				trackObj.name = "Zazzle - Drive N Style";
				trackObj.channel = CHANNEL.PARK;
				trackObj.campaign = CAMPAIGN.POLLYWORLD;
				trackObj.contenttype = CONTENTTYPE.EXT_AD_OVERLAY;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.uri.indexOf("RockStarMakeoverNewGameBurst/click.ftrk") != -1) {
				trackObj.name = "Homepage New Game Burst - Rockstar Makeover";
				trackObj.channel = CHANNEL.HOME;
				trackObj.campaign = CAMPAIGN.POLLYWORLD;
				trackObj.contenttype = CONTENTTYPE.INT_AD_OVERLAY;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.uri.indexOf("MallLandingDemoSkuJ1659.ftrk") != -1) {
				trackObj.name = "Limo Product Redirect Product J1659";
				trackObj.channel = CHANNEL.MALL;
				trackObj.campaign = CAMPAIGN.POLLYWORLD;
				trackObj.contenttype = CONTENTTYPE.REDIRECT;
				trackObj.action = ACTION.REDIRECT;
			}
			if (oData.uri.indexOf("video_click_cruiseship.ftrk") != -1) {
				trackObj.name = "CruiseShip";
				trackObj.channel = CHANNEL.HOME;
				trackObj.campaign = CAMPAIGN.POLLYWORLD;
				trackObj.contenttype = CONTENTTYPE.COMMERCIAL;
				trackObj.action = ACTION.SEETOYS;
			}
			if (oData.uri.indexOf("/park/fashions/play.ftrk") != -1) {
				trackObj.name = "Rockstar Makeover";
				trackObj.channel = CHANNEL.PARK;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.GAME;
				trackObj.action = ACTION.PLAY;
			}
			if (oData.uri.indexOf("/park/fashions_payoff.ftrk") != -1) {
				trackObj.name = "Rockstar Makeover";
				trackObj.channel = CHANNEL.PARK;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.GAME;
				trackObj.action = ACTION.COMPLETED;
			}
			if (oData.uri.indexOf("/park/fashions/shop_click.ftrk") != -1) {
				trackObj.name = "Rockstar Makeover";
				trackObj.channel = CHANNEL.PARK;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.GAME;
				trackObj.action = ACTION.SEETOYS;
			}
			if (oData.uri.indexOf("ShopFooterDemoSkuJ1659.ftrk") != -1) {
				trackObj.name = "Footer Limo Product J1659";
				trackObj.channel = CHANNEL.PARK;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.INT_AD_BUTTON;
				trackObj.action = ACTION.CLICK;
			}
			
			if (oData.uri.indexOf("rockstarmakeover/click.ftrk") != -1) {
				trackObj.name = "Rockstar Makeover";
				trackObj.channel = CHANNEL.NONE;
				trackObj.campaign = CAMPAIGN.POLLYWORLD;
				trackObj.contenttype = CONTENTTYPE.INT_AD_BANNER;
				trackObj.action = ACTION.CLICK;
			}				
			if (oData.uri.indexOf("PixelHamsterJam/click.ftrk") != -1) {
				trackObj.name = "Hamster Jam";
				trackObj.channel = CHANNEL.NONE;
				trackObj.campaign = CAMPAIGN.PIXELCHIX;
				trackObj.contenttype = CONTENTTYPE.EXT_AD_BANNER;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.uri.indexOf("PollyWorldDVD03/click.ftrk") != -1) {
				trackObj.name = "PollyWorld DVD 03";
				trackObj.channel = CHANNEL.NONE;
				trackObj.campaign = CAMPAIGN.POLLYWORLD;
				trackObj.contenttype = CONTENTTYPE.INT_AD_BANNER;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.uri.indexOf("zazzle/click.ftrk") != -1) {
				trackObj.name = "Zazzle";
				trackObj.channel = CHANNEL.NONE;
				trackObj.campaign = CAMPAIGN.ZAZZLE;
				trackObj.contenttype = CONTENTTYPE.EXT_AD_BANNER;
				trackObj.action = ACTION.CLICK;
			}
			if (oData.uri.indexOf("/pollywheels/view.ftrk") != -1) {
				trackObj.name = "PollyWheels - Coming Soon";
				trackObj.channel = CHANNEL.GARDEN;
				trackObj.campaign = CAMPAIGN.POLLYWHEELS;
				trackObj.contenttype = CONTENTTYPE.OVERLAY;
				trackObj.action = ACTION.VIEW;
			}
			if (oData.uri.indexOf("/MyScene_RollerGirls/click.ftrk") != -1) {
				trackObj.name = "My Scene RollerGirls";
				trackObj.channel = CHANNEL.NONE;
				trackObj.campaign = CAMPAIGN.MYSCENE;
				trackObj.contenttype = CONTENTTYPE.EXT_AD_BANNER;
				trackObj.action = ACTION.CLICK;
			}
				if (oData.uri.indexOf("/banners/MyScene/click.ftrk") != -1) {
				trackObj.name = "My Scene Friends";
				trackObj.channel = CHANNEL.NONE;
				trackObj.campaign = CAMPAIGN.MYSCENE;
				trackObj.contenttype = CONTENTTYPE.EXT_AD_BANNER;
				trackObj.action = ACTION.CLICK;
			}
			
			if (oData.uri.indexOf("banners/PollyWheels/click.ftrk") != -1) {
				trackObj.name = "PollyWheels Cars";
				trackObj.channel = CHANNEL.NONE;
				trackObj.campaign = CAMPAIGN.POLLYWHEELS;
				trackObj.contenttype = CONTENTTYPE.INT_AD_BANNER;
				trackObj.action = ACTION.CLICK;
			}
			
			if (oData.uri.indexOf("sendecard.asp") != -1) {
				trackObj.name = "MailBox";
				trackObj.channel = CHANNEL.GARDEN;
				trackObj.campaign = CAMPAIGN.NONE;
				trackObj.contenttype = CONTENTTYPE.EMAIL;
				trackObj.action = ACTION.SEND;
			}
		}
		if (trackObj.name == undefined) trackObj.name = oData.title;
		if (trackObj.name == undefined) trackObj.name = oData.uri;
		MATTEL.tracker.Tracker.track(trackObj);
	}
}


//******** Do not modify below this line. ********//

// ::: INTERNAL PROPERTIES

var FTTarget = this;
var FTMap = {"DCS.dcsuri":"uri", "WT.ti":"title", "WT.lo":"redirectLink", "WT.pr":"popupProps"};

// ::: FLASH INTERFACE METHODS

function FlashTrack() {
	/*
	alert("FlashTrack:\n" + enum(arguments));
	if (handleDeprecated(arguments, "FlashTrack")) {
		return;
	}
	*/
	var oData = parseTrackingData(arguments);
}

function FlashTrackRedir() {
	/*
	alert("FlashTrackRedir:\n" + enum(arguments));
	if (handleDeprecated(arguments, "FlashTrackRedir")) {
		return;
	}
	*/
	var oData = parseTrackingData(arguments);		
	window.location = oData.redirectLink;
}

function FlashTrackRedirPopup() {
	/*
	alert("FlashTrackRedirPopup:\n" + enum(arguments));
	if (handleDeprecated(arguments, "FlashTrackRedirPopup")) {
		return;
	}
	*/
	var oData = parseTrackingData(arguments);
	if (oData.popupName == null) {
		oData.popupName = defaultPopupName;
	}
	if (oData.popupProps == null) {
		oData.popupProps = "";
	}
	window.open(oData.redirectLink, oData.popupName, oData.popupProps);
}

function FlashTrackRedirParent () {
	/*
	alert("FlashTrackRedirParent:\n" + enum(arguments));
	if (handleDeprecated(arguments, "FlashTrackRedirParent")) {
		return;
	}
	*/
	var oData = parseTrackingData(arguments);
}

// :::  INTERNAL API METHODS

function parseTrackingData(aArgs) {	
	var oData = new Object();
	var oTrackingData = new Object();
	var i, iLen = aArgs.length;
	var sName, sValue;
	
	for (var i=0; i<aArgs.length; i++) {
		for (var map in FTMap) {
			var param = FTMap[map];
			if (aArgs[i] == map) {
				aArgs[i] = param;
			}
		}
	}
	
	for (var i=0; i<iLen; i+=2) {
		sName = aArgs[i];
		sValue = aArgs[i+1];
		oData[sName] = sValue;
		oTrackingData[sName] = sValue;
	}
	
	iLen = FTExcludeTags.length;
	
	for (var i=0; i<iLen; i++) {
		sName = FTExcludeTags[i];
		if (oTrackingData[sName] != undefined) {
			delete oTrackingData[sName];
		}
	}

	handleTracking(oTrackingData);
	return oData;
}

function handleDeprecated(aArgs, sCallType) {
	var noVersion = aArgs[0] != "version";
	var lowVersion = aArgs[0] == "version" && Number(aArgs[1]) < minVersion;
			
	if (noVersion || lowVersion) {
		switch (sCallType) {
			case "FlashTrackRedir":
				FTDepFlashTrackRedir.apply(FTTarget, aArgs);
				break;
			case "FlashTrackRedirPopup":
				FTDepFlashTrackRedirPopup.apply(FTTarget, aArgs);
				break;
			case "FlashTrackRedirParent":
				FTDepFlashTrackRedirParent.apply(FTTarget, aArgs);
				break;
			default:
				FTDepFlashTrack.apply(FTTarget, aArgs);
				break;
		}
		return true;
	}
	return false;
}

// :::  HELPER FUNCTIONS
/*
function enum(obj) {
	var str = "";
	for (var n in obj) {
		str += (n + " = " + obj[n] + "\n");
	}
	return (str == "") ? list(obj) : str;
}

function list(arr) {
	var str = "";
	for (var i=0; i<arr.length; i++) {
		str += (i + " = " + arr[i] + "\n");
	}
	return str;
}
*/