
// 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();
			if (oData.title == undefined) {
				oData.title = oData["WT.ti"];
			}
			if (oData.uri == undefined) {
				oData.uri = oData["DCS.dcsuri"];
			}
			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.toLowerCase().indexOf("home") != -1 && oData.title.toLowerCase().indexOf("viewed") != -1) {
				trackObj.name = "TVSpot";
				trackObj.campaign = "None";
				trackObj.channel = "Home";
				trackObj.contenttype = "Commercial";
				trackObj.action = "View";
			}
			if (oData.title.toLowerCase().indexOf("catalog") != -1 && oData.title.toLowerCase().indexOf("viewed") != -1) {
				trackObj.name = "TVSpot";
				trackObj.campaign = "None";
				trackObj.channel = "ShopForToys";
				trackObj.contenttype = "Commercial";
				trackObj.action = "View";
			}
			if (oData.uri.toLowerCase().indexOf("play.ftrk") != -1) {
				trackObj.name = "Make-A-Mag";
				trackObj.campaign = "None";
				trackObj.channel = "Games";
				trackObj.contenttype = "Activity";
				trackObj.action = "Play";
			}
			if (oData.title.toLowerCase().indexOf("mag-print") != -1) {
				trackObj.name = "Make-A-Mag";
				trackObj.campaign = "None";
				trackObj.channel = "Games";
				trackObj.contenttype = "Activity";
				trackObj.action = "Print";
			}
			if (oData.uri.toLowerCase().indexOf("print.ftrk") != -1 && oData.title.toLowerCase().indexOf("catalog") != -1) {
				trackObj.name = Tracker.campaign + " Wishlist";
				//trackObj.campaign = "None";
				trackObj.channel = "ShopForToys";
				trackObj.contenttype = "Wishlist";
				trackObj.action = "Print";
			}
			if (trackObj.name != undefined) {
				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;
		
		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;
	}