
// 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 = __FlashTrack;				// Handles deprecated FlashTrack calls
	// removed MM: generating errors, no deprecated calls in the PoshLife area
	
	/*
	var FTDepFlashTrackRedir = __FlashTrackRedir;			// Handles deprecated FlashTrackRedir calls
	var FTDepFlashTrackRedirPopup = __FlashTrackRedirPopup;		// Handles deprecated FlashTrackRedirPopup calls
	var FTDepFlashTrackRedirParent = __FlashTrackRedirParent;		// 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
		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 );
	}
	
	
//******** 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;
	}