var ctracker = new CTracker();
ctracker.init();

function CTracker()
{
	var CTRACKER_HOME = 'http://www.mediatraks.com/ctracker/';
	var CT_TYPE_SIMPLE = 0;
	var CT_TYPE_REPLACE = 1;
	var CT_TYPE_GENERIC = 2;
	var CT_TYPE_CUSTOM = 3;
	
	var TRACKER_WIDTH = 400;
	var TRACKER_HEIGHT = 60;
	
	var message = "";
	var tcInfo;
	var tracker_id = '';
	var srcSound = '';
	var tcInfo = {'source':'','type':1, 'target': '', 'keyword': '', 'message': '', 'phone':''};
	
	this.tcInfo = tcInfo;
	
	function init()
	{		
		var ver = parseInt(navigator.appVersion);
		
		var ie4 = ((ver > 3  && navigator.appName != "Netscape") ? 1 : 0);
		var ns4 = ((ver > 3  && navigator.appName == "Netscape") ? 1 : 0);
		var ns3 = ((ver == 3 && navigator.appName == "Netscape") ? 1 : 0);
		
		try
		{
		    getTrackerID();  
		    
		    if(tracker_id != '')    
		    {
		        var placeHolder = document.createElement('div');
		        placeHolder.id = 'ctracker';
		        		        
		        var src = CTRACKER_HOME + "cftracker.cfm?id=" + tracker_id;
		        		        
		        srcSound = CTRACKER_HOME + "sound/blocked.wav";
		        
		        if(ie4)
		        {		        	
		        	var  scriptTag = document.getElementById("ctracker_src"); 
		        	
		        	if((null != scriptTag) && (null != scriptTag.parentElement))
		        	{		        		
			        	var container = scriptTag.parentElement;
			        	container.appendChild(placeHolder);
			        	document.write("<script type='text/javascript' src='" + src + "'></script>");
			        	document.write('<bgsound id="ctracker_sound" loop=1 src="' + srcSound + '">');
		        	}		        	
		        }
		        else
		        {
		        	document.body.appendChild(placeHolder);
		        	document.write("<script type='text/javascript' src='" + src + "'></script>");	
		        }
		
		        if (document.addEventListener) 
		        { 
		            document.addEventListener("DOMContentLoaded", doTrack, false);
		        }
		        else
		        {
		            window.attachEvent('onload', doTrack);
		        }
		    }
		}
		catch(e){}
	}
	
	this.init = init;
	
	function getTrackerID()
	{
	    var items = window.location.search.split('&');        
	    
	    for(var i = 0; i < items.length; i++)
	    {
	        var token = items[i].split('=');
	        
	        if(token.length == 2)
	        {
	            if(token[0].indexOf('ctracker_id') >= 0)
	            {
	                tracker_id = token[1];
	                break;
		        }
		    }
		}
				
		tracker_id = checkCookie('tracker_id', tracker_id);
	}
	
	//Start cookie support	
	function setCookie(cookieName,value,expiredays)
	{
		var exdate=new Date();
		exdate.setDate(exdate.getDate() + expiredays);
		
		document.cookie= cookieName + "=" + escape(value) +
						((expiredays==null) ? "" : ";expires=" + 
						exdate.toGMTString());
	}
	
	function getCookie(cookieName)
	{
		if (document.cookie.length>0)
		{
			c_start = document.cookie.indexOf(cookieName + "=");
			
			if (c_start != -1)
			{
				c_start = c_start + cookieName.length + 1;
				c_end = document.cookie.indexOf(";", c_start);
				
				if (c_end == -1) 
				{
					c_end = document.cookie.length;
				}
				
	    		return unescape(document.cookie.substring(c_start,c_end));
	    	}
		}
		
		return "";
	}
	
	function checkCookie(cookieName, cookieValue)
	{
		cookie = getCookie(cookieName);

		if((cookie == null) || (cookie == ""))
		{
			setCookie(cookieName, cookieValue, 1);			
			cookie = cookieValue;
		}
		
		if(cookie == null)
		{
			cookie = '';			
		}
		
		return cookie;
	}
	
	//End
	function doTrack()
	{	
	    if(null != tcInfo)
	    {
	        processTrackerInfo();
	    }
	}
	
	function processTrackerInfo()
	{
	    try
	    {        
	        switch(tcInfo.type)
	        {
	            case CT_TYPE_SIMPLE:
	                simpleTracker();
	                break;
	            case CT_TYPE_REPLACE:
	                trackerReplace();
	                break;                
	            case CT_TYPE_GENERIC:
	                var tarckerContent = document.getElementById('ctracker'); 
	                trackerX = (GetWindowWidth() - TRACKER_WIDTH)/2;
	                trackerY = (GetWindowHeight() - TRACKER_HEIGHT)/2;
	                tarckerContent.align = "center";
	                genericTracker();
	                break;
	            case CT_TYPE_CUSTOM:
	                customTracker(tcInfo);
	                break;
	        }
	    }
	    catch(e){}
	}
	
	////Simple Tracker
	function simpleTracker()
	{
	                message = tcInfo.message + "(" + tcInfo.phone.substr(0,3) + ") " + tcInfo.phone.substr(3,3) + "-" + tcInfo.phone.substr(6,4);
	                var content = "<table id='infobar' border='0' width='100%' align='center' cellpadding='0' cellspacing='0'><tr>" +
				                  "<td id='notif_img' height='20' width='16' style='padding:0px 5px 0px 5px'>" +
				                  "<img id='icon_notification' src='" + CTRACKER_HOME + "images/phone.gif' height='16' width='16'/></td><td>" +
				                  "<a id='ctracker_msg' title='Click to hide message.' style=\"font-family:verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif\" href=\"javascript:ctracker.closeSimpleTracker();\">" + message + "</a>" +
				                  "</td></tr></table><br style='margin-top:15px'>";
				   var tarckerContent = document.getElementById('ctracker');
				   tarckerContent.innerHTML = content;
				   trackerType();
	}
	
	function closeSimpleTracker()
	{
	    document.getElementById('ctracker').style.display = 'none';
	}
	
	this.closeSimpleTracker = closeSimpleTracker;
	
	//Generic Tracker
	function genericTracker()
	{
	    message = tcInfo.message + "(" + ctracker.tcInfo.phone.substr(0,3) + ") " + ctracker.tcInfo.phone.substr(3,3) + "-" + ctracker.tcInfo.phone.substr(6,4);
	    var tarckerContent = document.getElementById('ctracker');
	    tarckerContent.className = "generic";
	    tarckerContent.style.left = trackerX + 'px';
	    tarckerContent.style.top = trackerY + 'px';
	    tarckerContent.innerHTML = message;
	    tarckerContent.title = "Click to hide message.";
	    tarckerContent.onclick = closeSimpleTracker;
	    trackerType();
	}
	
	//Replace Page Content
	function trackerReplace()
	{   	
		var spanTags = document.getElementsByTagName("span");     
	    var trackingNumbers = tcInfo.phone.split('|');
		var targetNumbers = tcInfo.target.split('|');

	    for(var i = 0; i < spanTags.length; i++)
	    {
	    	var currentSpan = spanTags[i];
	
			if(currentSpan.className == "tel")
			{
				var tagNumber = currentSpan.innerHTML;
			  
			  	if(trackingNumbers.length == 1)
			  	{
					var trackingNumber = trackingNumbers[0];
					trackingNumber = "(" + trackingNumber.substr(0,3) + ") " + trackingNumber.substr(3,3) + "-" + trackingNumber.substr(6,4);

					for(var j = 0; j < targetNumbers.length; j++)
					{
						var targetNumber = targetNumbers[j];

						if(tagNumber.indexOf(targetNumber) >= 0)
						{
							if(trackingNumber.indexOf('()') < 0)
							{

								var html = currentSpan.innerHTML.replace(tagNumber, trackingNumber);
								currentSpan.innerHTML = html;
							}
							break;
						}
					}
				}
				else if(trackingNumbers.length == targetNumbers.length)
				{
					for(var j = 0; j < targetNumbers.length; j++)
					{
						var targetNumber = targetNumbers[j];
						var trackingNumber = trackingNumbers[j];
						trackingNumber = "(" + trackingNumber.substr(0,3) + ") " + trackingNumber.substr(3,3) + "-" + trackingNumber.substr(6,4);

						if(tagNumber.indexOf(targetNumber) >= 0)
						{
							if(trackingNumber.indexOf('()') < 0)
							{
								var html = currentSpan.innerHTML.replace(tagNumber, trackingNumber);
								currentSpan.innerHTML = html;
							}
							break;
						}
					}
				}
			}
	    }
	}
	
	//Common Functions
	var trackerInterval = 60;
	var tackerCount = 0;
	var tackerTypingBuffer = "";
	
	function trackerType()
	{
	        var container = "ctracker";
	        switch(tcInfo.type)
	        {
	            case CT_TYPE_SIMPLE:
	                container = "ctracker_msg"
	                break;
	            case CT_TYPE_GENERIC:
	                container = "ctracker";
	                break;
	        }
	        
	        var tarckerContent = document.getElementById(container); 
	        
	        if(tackerCount < message.length)
	        {
	                tackerTypingBuffer += message.charAt(tackerCount);
	                tarckerContent.innerHTML = tackerTypingBuffer;
	                tackerCount++;
	                setTimeout("ctracker.trackerType()", trackerInterval);
	        }
	}
	
	this.trackerType = trackerType;
	
	function GetWindowWidth()
	{
	        var x = 0;
	        if (self.innerHeight)
	        {
	                x = window.innerWidth;
	        }
	        else if (document.documentElement && document.documentElement.clientHeight)
	        {
	                x = document.documentElement.clientWidth;
	        }
	        else if (document.body)
	        {
	                x = document.body.clientWidth;
	        }
	
	        return Math.round(x);
	}
	 
	function GetWindowHeight()
	{
	        var y = 0;
	        if (self.innerHeight)
	        {
	                y = window.innerHeight;
	        }
	        else if (document.documentElement && document.documentElement.clientHeight)
	        {
	                y = document.documentElement.clientHeight;
	        }
	        else if (document.body)
	        {
	                y = document.body.clientHeight;
	        }
	
	        return Math.round(y);
	}
}