function ButtonTrackingObj(exp, titleName, cm, frame){
   this.VarTrivBtnTracking = new Variable( 'VarTrivBtnTracking', null, 0, cm, frame, exp, titleName, true );
   this.title = null;
}

ButtonTrackingObj.codeToStateMap =
{
	'N' : 'normalState',
	'O' : 'overState',
	'D' : 'downState',
	'A' : 'disabledState',
	'V' : 'visitedState',
	'S' : 'selectedState'
};
ButtonTrackingObj.stateToCodeMap = {};
for (var key in ButtonTrackingObj.codeToStateMap)
	ButtonTrackingObj.stateToCodeMap[ButtonTrackingObj.codeToStateMap[key]] = key;

ButtonTrackingObj.prototype.InitPageTracking = function ( )
{
	var THIS = this;
	var pageTrackData = this.VarTrivBtnTracking.getValue();
	var bDoInit = true;
	try {
	    if (pageTrackData && pageTrackData.length > 0 && pageTrackData != '~~~null~~~')
	    {
	        var topLevelSplit = pageTrackData.split('#');
	        if (topLevelSplit && topLevelSplit.length > 1)
            {
		        var arrIds = topLevelSplit[0].split(',');
		        var arrStatus = topLevelSplit[1].split(',');
		        for( var i=0; i<arrIds.length; i++ )
		        {
			        var id = parseInt( '0x' + arrIds[i] );
			        var status = arrStatus[i];
			        var node = this.FindNode( this.title, id );
			        if( node )
						node.v = ButtonTrackingObj.codeToStateMap[status] || status;
		        }
    		}
        }
    } catch (e) { }
}

ButtonTrackingObj.prototype.FindNode = function( node, id )
{
	if( node.id == id )
		return node;
	
	var match = null;
	if( typeof( node.c ) != 'undefined' ){
		for( var i=0; i<node.c.length; i++ ){
			match = this.FindNode( node.c[i], id );
			if( match != null )
				break;
		}
	}
	
	return match;
}

ButtonTrackingObj.prototype.InternalGetRangeStatus = function( node )
{
	if( node == null )
		return -1;
		
	if( typeof(node.c) == 'undefined' )
	{
		return node.v;
	}
	else
	{
		return 'normalState';
	}
}


ButtonTrackingObj.prototype.GetRangeStatus = function( id, bInit )
{
	var status = -1;
	if ( bInit ) 
		this.InitPageTracking();
	
	status = this.InternalGetRangeStatus( this.FindNode( this.title, id ) );

	return status;
}


ButtonTrackingObj.prototype.InternalSetRangeStatus=function( node, status )
{
	if( node == null )
		return;
	node.v = status;
	if( status == 0 && typeof(node.c)!='undefined')
	{
		for( var i=0; i<node.c.length; i++ )
			this.InternalSetRangeStatus( node.c[i], status ); 
	}
}

ButtonTrackingObj.prototype.SetRangeStatus = function( id, status /*0 or 1 or 2*/)
{
	this.InternalSetRangeStatus( this.FindNode(this.title, id), status );
	
	this.SavePageTracking();
}

ButtonTrackingObj.prototype.IterateTree = function( func )
{
	var stack = [];
	stack.push( this.title );
	var i = 0;
	while( stack.length > 0 )
	{
		var node = stack.shift();
		
		if( typeof(node.c) != 'undefined' )
			stack = node.c.concat(stack);
			
		//do the thing
		func( node, i, stack );
		i++;
	}	
}

ButtonTrackingObj.prototype.SavePageTracking = function()
{
	var fnIsSaveState = window.ObjButton && ObjButton.isSaveState || function () { return false; };
	var hexString = '';
	var arrayIds = [];
	var arrayStatus= [];
	
	this.IterateTree(function(node, i, stack){
		if (fnIsSaveState(node.v))
		{
			arrayIds.push(node.id);
			arrayStatus.push(node.v);
		}
	});
	
	for( var i=0; i<arrayIds.length; i++ )
		hexString += (i > 0 ? ',' : '') + arrayIds[i].toString(16);

	hexString += (arrayIds.length > 0 ? '#' : '');
	
	for (var i = 0; i < arrayStatus.length; i++)
		hexString += (i > 0 ? ',' : '') + (ButtonTrackingObj.stateToCodeMap[arrayStatus[i]] || arrayStatus[i]);

	//LD-8267 - Added a condition to avoid tracking null/empty data unnecessarily
	if (hexString.length > 0 || (myTop.suspendDataCache && myTop.suspendDataCache.indexOf('VarTrivBtnTracking') >= 0) || !this.VarTrivBtnTracking.bSCORM)
		this.VarTrivBtnTracking.set(hexString);
}

var trivBtnTracking = new ButtonTrackingObj(365,'comprehensive_meditech_for_nurses_and_therapists', 0, 'scorm2004');
trivBtnTracking.title={id:1,v:0,c:[{id:474918,v:'normalState'},{id:477339,v:'normalState'},{id:478032,v:'normalState'},{id:583906,v:'normalState'},{id:583799,v:'normalState'},{id:663437,v:'normalState'},{id:663421,v:'normalState'},{id:583865,v:'normalState'},{id:487758,v:'normalState'},{id:627261,v:'normalState'},{id:586042,v:'normalState'},{id:628293,v:'normalState'},{id:487902,v:'normalState'},{id:499905,v:'normalState'},{id:554601,v:'normalState'},{id:667619,v:'normalState'},{id:667629,v:'normalState'},{id:667889,v:'normalState'},{id:667639,v:'normalState'},{id:668658,v:'normalState'},{id:667650,v:'normalState'},{id:669560,v:'normalState'},{id:667661,v:'normalState'},{id:670108,v:'normalState'},{id:667672,v:'normalState'},{id:670701,v:'normalState'},{id:667683,v:'normalState'},{id:671387,v:'normalState'},{id:500322,v:'normalState'},{id:500516,v:'normalState'},{id:555286,v:'normalState'},{id:502415,v:'normalState'},{id:562414,v:'normalState'},{id:562791,v:'normalState'},{id:528506,v:'normalState'},{id:658348,v:'normalState'},{id:563708,v:'normalState'},{id:564286,v:'normalState'},{id:655630,v:'normalState'},{id:657896,v:'normalState'},{id:661684,v:'normalState'},{id:556583,v:'normalState'},{id:521242,v:'normalState'},{id:523480,v:'normalState'},{id:523264,v:'normalState'},{id:590391,v:'normalState'},{id:649297,v:'normalState'},{id:500960,v:'normalState'},{id:583978,v:'normalState'},{id:583986,v:'normalState'},{id:672312,v:'normalState'},{id:583997,v:'normalState'},{id:672885,v:'normalState'},{id:584008,v:'normalState'},{id:673450,v:'normalState'},{id:584019,v:'normalState'},{id:674381,v:'normalState'},{id:584030,v:'normalState'},{id:675087,v:'normalState'},{id:584041,v:'normalState'},{id:675865,v:'normalState'},{id:584052,v:'normalState'},{id:676412,v:'normalState'},{id:584062,v:'normalState'},{id:676995,v:'normalState'},{id:584071,v:'normalState'},{id:677645,v:'normalState'},{id:584395,v:'normalState'},{id:696493,v:'normalState'},{id:696506,v:'normalState'},{id:696516,v:'normalState'},{id:696527,v:'normalState'},{id:696537,v:'normalState'},{id:696548,v:'normalState'},{id:696558,v:'normalState'},{id:696569,v:'normalState'},{id:696579,v:'normalState'},{id:696590,v:'normalState'},{id:696600,v:'normalState'},{id:696611,v:'normalState'},{id:696621,v:'normalState'},{id:696632,v:'normalState'},{id:696642,v:'normalState'},{id:696653,v:'normalState'},{id:696663,v:'normalState'},{id:696674,v:'normalState'},{id:696684,v:'normalState'},{id:696695,v:'normalState'},{id:696705,v:'normalState'},{id:696716,v:'normalState'},{id:696726,v:'normalState'},{id:696737,v:'normalState'},{id:696747,v:'normalState'},{id:584605,v:'normalState'},{id:584276,v:'normalState'},{id:584295,v:'normalState'},{id:584636,v:'normalState'},{id:527880,v:'normalState'},{id:514224,v:'normalState'},{id:586304,v:'normalState'},{id:586424,v:'normalState'},{id:589389,v:'normalState'},{id:590596,v:'normalState'},{id:528256,v:'normalState'},{id:535029,v:'normalState'},{id:514737,v:'normalState'},{id:680309,v:'normalState'},{id:515004,v:'normalState'},{id:680936,v:'normalState'},{id:515309,v:'normalState'},{id:681479,v:'normalState'},{id:515730,v:'normalState'},{id:682070,v:'normalState'},{id:515953,v:'normalState'},{id:682684,v:'normalState'},{id:516565,v:'normalState'},{id:683193,v:'normalState'},{id:516633,v:'normalState'},{id:683712,v:'normalState'},{id:516575,v:'normalState'},{id:684301,v:'normalState'},{id:516192,v:'normalState'},{id:684907,v:'normalState'},{id:514705,v:'normalState'},{id:685441,v:'normalState'},{id:629177,v:'normalState'},{id:517329,v:'normalState'},{id:687225,v:'normalState'},{id:517784,v:'normalState'},{id:688078,v:'normalState'},{id:518270,v:'normalState'},{id:688569,v:'normalState'},{id:518950,v:'normalState'},{id:689140,v:'normalState'},{id:593063,v:'normalState'},{id:644518,v:'normalState'},{id:528709,v:'normalState'},{id:659813,v:'normalState'},{id:691390,v:'normalState'},{id:691401,v:'normalState'},{id:691412,v:'normalState'},{id:691423,v:'normalState'},{id:691434,v:'normalState'},{id:691779,v:'normalState'},{id:691770,v:'normalState'},{id:691761,v:'normalState'},{id:691752,v:'normalState'},{id:535257,v:'normalState'},{id:529376,v:'normalState'},{id:649413,v:'normalState'},{id:531254,v:'normalState'},{id:649460,v:'normalState'},{id:588019,v:'normalState'},{id:584746,v:'normalState'},{id:584771,v:'normalState'},{id:594737,v:'normalState'},{id:584872,v:'normalState'},{id:629405,v:'normalState'},{id:534281,v:'normalState'},{id:602701,v:'normalState'},{id:584947,v:'normalState'},{id:584971,v:'normalState'},{id:551087,v:'normalState'},{id:663158,v:'normalState'},{id:551315,v:'normalState'},{id:538468,v:'normalState'},{id:629707,v:'normalState'},{id:650806,v:'normalState'},{id:600401,v:'normalState'},{id:659877,v:'normalState'},{id:541044,v:'normalState'},{id:629895,v:'normalState'},{id:607324,v:'normalState'},{id:659955,v:'normalState'},{id:545464,v:'normalState'},{id:545964,v:'normalState'},{id:546898,v:'normalState'},{id:557321,v:'normalState'},{id:650958,v:'normalState'},{id:607519,v:'normalState'},{id:603279,v:'normalState'},{id:549207,v:'normalState'},{id:630099,v:'normalState'},{id:608886,v:'normalState'},{id:609989,v:'normalState'},{id:611206,v:'normalState'},{id:612416,v:'normalState'},{id:612769,v:'normalState'},{id:613000,v:'normalState'},{id:550790,v:'normalState'},{id:551700,v:'normalState'},{id:588334,v:'normalState'},{id:628933,v:'normalState'},{id:620989,v:'normalState'},{id:625546,v:'normalState'},{id:626648,v:'normalState'},{id:570117,v:'normalState'},{id:567018,v:'normalState'},{id:579504,v:'normalState'},{id:606517,v:'normalState'},{id:550934,v:'normalState'},{id:564770,v:'normalState'},{id:564490,v:'normalState'},{id:577398,v:'normalState'},{id:577514,v:'normalState'},{id:630355,v:'normalState'},{id:700632,v:'normalState'},{id:700612,v:'normalState'},{id:700600,v:'normalState'},{id:700827,v:'normalState'},{id:648810,v:'normalState'},{id:583249,v:'normalState'},{id:583266,v:'normalState'}]};
