function fireTag(id,dv) {
	var tagvars=null;
	var newVar=null;
	try { 
		var json = eval("taglist.F"+String(id).replace(".","X")); 
		for(var p in json){
			newVar=json[p];
			for(var q in dv){
			  // Addding final validation for Toyota Racing
			  dv[q] = extraValidation(q, dv[q]);
			  // End of validation, resuming original tag replacement
			  
				if(json[p].indexOf(q)!=-1){
					if(newVar==json[p]){newVar = json[p].replace(q,dv[q]);}else{newVar = newVar.replace(q,dv[q]);}
				}
			}
			eval("s."+p+"=\""+newVar+"\"");
			if(tagvars==null){tagvars="s."+p+" = "+newVar;}else{tagvars=tagvars+"\ns."+p+" = "+newVar;}
		}
		if(tagvars!=null){
			baker("codeblock "+id+" found to contain:\n"+tagvars);
				
			if (s.linkType){
				try { s.tl(this, s.linkType, s.linkName); } catch(err) { baker("error: codeblock "+id+" was not sent"); }
			}else{
				try { s.t(); } catch(err) { baker("error: codeblock "+id+" was not sent"); }
			}
			baker("codeblock "+id+" Sent");	
			
			var tagvars=null;
			for(var p in json){
				eval("s."+p+"=''");
				if(tagvars==null){tagvars="s."+p+" = null";}else{tagvars=tagvars+"\ns."+p+" = null";}
			}
		} else {
			var dynamics="";
			if(dv){
				dynamics=", with dynamic variables ";
				for(var q in dv){
					dynamics=dynamics+" "+q+":"+dv[q]+" ";
				} 
			}
			baker("error: codeblock "+id+" is set to fire"+dynamics+", but it does not exist within the included JSON file");	
		}
	} catch(err){
		if(document.body.innerHTML.indexOf("/lexus-share/js/tracking_omn/JSON/")!=-1) {
			baker("error: Included JSON file does not contain codeblock "+id);
		} else {
		   baker("error: JSON file not included");
		}
	}
}

//The following functions are used for ad hoc changes as needed by analytics
function extraValidation(property, propVal)
{
   if(property.indexOf('<series>') != -1) return seriesPass(propVal);
   if(property.indexOf('<category') != -1) return categoryPass(propVal);
   
   return propVal;
}

function categoryPass(checkProp)
{
   var hist35 = "35th Rolex Monterey";
   var hist34 = "34th Rolex Monterey";
   
   switch(checkProp)
   {
   case 'historic07':
   return hist34;
   break;
   case 'historic08':
   return hist35;
   break;
   default:
   return checkProp;
   }

return checkProp;   
}


function seriesPass(valToChange)
{
	var newVal = valToChange;

	switch(valToChange)
	{
	case 'nscs':
	case 'nextel':
	newVal = 'Sprint Cup';
	break;
	case 'nns':
	case 'busch':
	newVal = 'Nationwide';
	break;
	case 'ncwts':
	case 'ncts':
	newVal = 'Camping World';
	break;
	case 'nhra':
	newVal = 'NHRA';
	break;
	case 'offroad':
	newVal = 'Off Road';
	break;
	case 'jgrmx':
	newVal = 'Joe Gibbs';
	break;
	case 'bmr':
	newVal = 'Bill McAnally';
	break;
	case 'midget':
	newVal = 'Midget';
	break;
	case 'pro_celeb':
	newVal = 'Pro Celeb';
	break;
	case 'special_events':
	newVal = 'Special Events';
	break;
	case 'nchamp':
	newVal = 'Night of Champions';
	break;
	case 'historic07':
	newVal = '34th Rolex Monterey';
	break;
	case 'historic08':
	newVal = '35th Rolex Monterey';
	break;
	}

return newVal;
}



MediaTrack = function(x,y,z){
	//baker("MediaTrack("+x+","+y+","+z+")");
	try{
		var mediaName = x;
		if (!(/[^0-9|.]/gi.test(x))) { mediaName = eval("taglist.F"+String(x).replace(".","X")+".mediaTitle").toString(); }
		if(y=="MediaOpen"){ 
			baker("open:"+mediaName); 
			try{
				s.Media.open(mediaName,z,"LexusPlayer"); 
				baker("MediaOpen Tracked!");
			} catch(err){
				baker("error: Did not track MediaOpen.");
			}
		} 
		else if (y=="MediaPlay"){ 
			baker("play:"+mediaName); 
			try{
				s.Media.play(mediaName,z);  
				baker("MediaPlay Tracked!");
			} catch(err){
				baker("error: Did not track MediaPlay.");
			}
		}
		else if (y=="MediaStop"){ 
			baker("stop:"+mediaName); 
			try{
				s.Media.stop(mediaName,z);  
				baker("MediaStop Tracked!");
			} catch(err){
				baker("error: Did not track MediaStop.");
			}
		}
		else if (y=="MediaClose"){ 
			baker("end:"+mediaName); 
			try{
				s.Media.stop(mediaName,z);
				s.Media.close(mediaName);  
				baker("MediaEnd Tracked!");
			} catch(err){
				baker("error: Did not track MediaEnd.");
			}
		}
	} 
	catch (err) { 
		baker("error: Codeblock not found."); 
	}
}
baker = function (message) {
	if(document.all) {if(window.Logger){Logger.debug(message)}return;}
	else if (navigator.userAgent.toLowerCase().indexOf('safari') > -1){window.console.log("DEBUG: " + message);}
	else if(window.console){console.debug.apply(window, arguments);}
}