
// MATTEL ONLINE
// Copyright 2006 Mattel, Inc. All Rights Reserved.
// This file is proprietary; unauthorized use or redistribution is prohibited.


/**
* Mattel FlashTrack API
* 
* @author Scott Jeppesen
* @author Scott Delamater
* @created 2/17/2006
* @modified 3/24/2006
* @version 2.0 ALPHA
*
*/


// ::: CONFIGURATION

	var minVersion = 2.0;										// The minimum required FlashTrack class version
	var FTExcludeTags = [ "redirectLink","popupName" ];			// 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

	var FTDepFlashTrack = (typeof __FlashTrack != "undefined") ? __FlashTrack : null;				// Handles deprecated FlashTrack calls
	var FTDepFlashTrackRedir = (typeof __FlashTrackRedir != "undefined") ? __FlashTrackRedir : null;			// Handles deprecated FlashTrackRedir calls
	var FTDepFlashTrackRedirPopup = (typeof __FlashTrackRedirPopup != "undefined") ? __FlashTrackRedirPopup : null;		// Handles deprecated FlashTrackRedirPopup calls
	var FTDepFlashTrackRedirParent = (typeof __FlashTrackRedirParent != "undefined") ? __FlashTrackRedirParent : null;		// Handles deprecated FlashTrackRedirParent calls

	function handleTracking ( oData )
	{
		/**** Sample implementation: ****/
		
		var dCurrent = new Date();

		// HitBox page view collection
		// _hbPageView(oData.uri);
		
		// WebTrends 7.0 collection
		// dcsTag();
		
		// WebTrends 6.0 collection
		if (typeof dcs_TAG != "undefined") {
			ClearCG();
			WT.ti = oData.title;
			DCS.dcsuri = oData.uri;
			DCS.dcsdat = dCurrent.getTime();
			
			var TagPath = dcsADDR;
			
			if ( oData.dcsID!="" && oData.dcsID!=null )
				dcsID = oData.dcsID;
	
			if ( dcsID != "" && dcsID != null )
				TagPath += "/"+dcsID;
	
			dcs_TAG( TagPath );
		}
		/*
		var cc="";
		for (var s in oData) {
			cc += (s + "=" + oData[s] + "\n");
		}
		alert(cc)
		*/
		// Mattel Tracker v1.0
		if (typeof MATTEL.tracker.Tracker.track != "undefined") {		
			var trackObj = {};
			
			if (oData.title == "home") {
				if (oData.uri.toLowerCase().indexOf("duplex") != -1) {
					trackObj.name = "Purple_Duplex";
					trackObj.campaign = "Duplex";
					trackObj.contenttype = "Product";
					trackObj.action = "View";
				}
				if (oData.uri.toLowerCase().indexOf("petshop") != -1) {
					trackObj.name = "PetShop-Salon_Mall";
					trackObj.campaign = "Mall";
					trackObj.contenttype = "Product";
					trackObj.action = "View";
				}
				if (oData.uri.toLowerCase().indexOf("boutique") != -1) {
					trackObj.name = "Boutique-FoodCourt_Mall";
					trackObj.campaign = "Mall";
					trackObj.contenttype = "Product";
					trackObj.action = "View";
				}
				if (oData.uri.toLowerCase().indexOf("hamster") != -1) {
					trackObj.name = "Jammin Hamster";
					trackObj.campaign = "Pets";
					trackObj.contenttype = "Product";
					trackObj.action = "View";
				}
				if (oData.uri.toLowerCase().indexOf("puppy") != -1) {
					trackObj.name = "Rockin Puppy";
					trackObj.campaign = "Pets";
					trackObj.contenttype = "Product";
					trackObj.action = "View";
				}
				if (oData.uri.toLowerCase().indexOf("car") != -1) {
					trackObj.name = "Purple_Car";
					trackObj.campaign = "Car";
					trackObj.contenttype = "Product";
					trackObj.action = "View";
				}
	
				if (oData.uri.toLowerCase().indexOf("house") != -1) {
					trackObj.name = oData.uri.substring(oData.uri.lastIndexOf("/") + 1, oData.uri.lastIndexOf("."));
					trackObj.campaign = "House";
					trackObj.contenttype = "Product";
					trackObj.action = "View";
				}
				if (oData.uri.toLowerCase().indexOf("babyproduct") != -1) {
					trackObj.name = "Babysitter";
					trackObj.channel = "Shop";
					trackObj.campaign = "Babysitter";
					trackObj.contenttype = "Product";
					trackObj.action = "View";
				}
			}
			if (oData.uri.toLowerCase().indexOf("desktop") != -1) {
				trackObj.name = "Desktop Download";
				trackObj.action = "Click";
				trackObj.contenttype = "Download";
			}
			if (oData.uri.toLowerCase().indexOf("wallpaper") != -1) {
				trackObj.name = "Wallpaper";
				trackObj.action = "Click";
				trackObj.contenttype = "Download";
			}
			if (oData.uri.toLowerCase().indexOf("shop") != -1) {
				var title = oData.uri.substring(oData.uri.lastIndexOf("/") + 1, oData.uri.lastIndexOf("."));
				var campaign = oData.uri.substring(oData.uri.lastIndexOf("_") + 1, oData.uri.lastIndexOf("."));
				trackObj.name = title;
				trackObj.campaign = campaign;
			}
			if (oData.uri.toLowerCase().indexOf("print") != -1) {
				trackObj.action = "Print";
			}
			if (oData.uri.toLowerCase().indexOf("video") != -1) {
				var title = oData.uri.substring(oData.uri.lastIndexOf("/") + 1, oData.uri.lastIndexOf("_"));
				trackObj.action = "View";
				trackObj.contenttype = "Commercial";
				trackObj.campaign = (title == "Hamster" || title == "Puppy") ? "Pets" : title;
				trackObj.name = title;
			}
			if (oData.uri.toLowerCase().indexOf("secretcodes") != -1) {
				trackObj.action = "Completed";
				trackObj.contenttype = "Activity";
				trackObj.campaign = "Pets";
				trackObj.name = oData.uri.substring(oData.uri.lastIndexOf("/") + 1, oData.uri.lastIndexOf(".ftrk"));
			}
			//Babysitter code
				if (oData.uri.toLowerCase().indexOf("payoffbaby") != -1) {
				trackObj.action = "Completed";
				trackObj.contenttype = "Activity";
				trackObj.campaign = "Babysitter";
				trackObj.name = oData.uri.substring(oData.uri.lastIndexOf("/") + 1, oData.uri.lastIndexOf(".ftrk"));
			}
				
			if (oData.uri.toLowerCase().indexOf("enterbaby") != -1) { 
				trackObj.action = "Entercode";
				trackObj.contenttype = "Activity";
				trackObj.campaign = "Babysitter";
				trackObj.name = entercode;
			}
			
			if (oData.uri.toLowerCase().indexOf("printbaby") != -1) {
				trackObj.action = "Print";
				trackObj.contenttype = "Activity";
				trackObj.campaign = "Babysitter";
				trackObj.name = oData.uri.substring(oData.uri.lastIndexOf("/") + 1, oData.uri.lastIndexOf(".ftrk"));
			}
		
			//
			if (oData.uri.toLowerCase().indexOf("play") != -1) {
				if (oData.uri.toLowerCase().indexOf("hamster") != -1) {
					trackObj.campaign = "Pets";
				}
				trackObj.action = "Play";
				trackObj.contenttype = "Game";
			}
			if (oData.uri.toLowerCase().indexOf("seetoys") != -1) {
				trackObj.campaign = "Pets"
				trackObj.name = "Go to the Shop"
				trackObj.action = "Click";
			}
			if (trackObj.name == undefined) trackObj.name = oData.title;
			MATTEL.tracker.Tracker.track(trackObj);
		}
	}
	
	
//******** Do not modify below this line. ********//


// ::: INTERNAL PROPERTIES

	var FTTarget = this;
	

// ::: FLASH INTERFACE METHODS

	function FlashTrack ()
	{
		if ( handleDeprecated( arguments,"FlashTrack" ) )
			return;
			
		// alert( "FlashTrack" );
		
		parseTrackingData( arguments );
	}
	
	function FlashTrackRedir ()
	{
		if ( handleDeprecated( arguments,"FlashTrackRedir" ) )
			return;
		
		var oData = parseTrackingData( arguments );
		
		// alert( "FlashTrackRedir -> redirectLink: "+oData.redirectLink );
		
		window.location = oData.redirectLink;
	}
	
	function FlashTrackRedirPopup ()
	{		
		if ( handleDeprecated( arguments,"FlashTrackRedirPopup" ) )
			return;
			
		var oData = parseTrackingData( arguments );
		if ( oData.popupName==null )
		{
			oData.popupName = defaultPopupName;
		}
		if ( oData.popupProps==null )
		{
			oData.popupProps = "";
		}
		
		// alert( "FlashTrackRedirPopup -> redirectLink: "+oData.redirectLink+", popupName: " + oData.popupName );
		
		window.open( oData.redirectLink,oData.popupName,oData.popupProps );
	}
	
	function FlashTrackRedirParent ()
	{		
		if ( handleDeprecated( arguments,"FlashTrackRedirParent" ) )
			return;
		
		// alert( "FlashTrackRedirParent" );
			
		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 ( i=0; i<iLen; i+=2 )
		{
			sName = aArgs[i];
			sValue = aArgs[i+1];
			oData[ sName ] = sValue;
			oTrackingData[ sName ] = sValue;
		}
		
		iLen = FTExcludeTags.length;
		
		for ( 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;
	}