
function eventHandler_(obj, eventType)
{
	this.addEventListener = function (handlerCode, handlerId)
	{
		this[handlerId] = function (event) { handlerCode(obj, event); };
		try
		{
			this.obj.addEventListener(this.eventType, this[handlerId], true);
		}
		catch(err)
		{
			this.obj.attachEvent('on' + this.eventType, this[handlerId]);
		}
	}
	
	this.removeEventListener = function (handlerId)
	{
		try
		{
			this.obj.removeEventListener(this.eventType, this[handlerId], true);
		}
		catch(err)
		{
			this.obj.detachEvent('on' + this.eventType, this[handlerId]);
		}
	}
	
	this.obj = obj;
	this.eventType = eventType;
	this.objectReference = new Object();
}

function tracker(instanceName, idUser, updateTime)
{
    //propriedades
    this.trackerPage = 'http://www.dontworrybeweb.com.br/tracker/tracker.aspx';
    this.url = location.href;
    this.referrer = document.referrer;
    this.instanceName = instanceName ? instanceName : '';
    this.idUser = idUser ? idUser : 0;
    this.idAccess = 0;
    this.updateTime = updateTime ? (updateTime * 1000) : 15000;
    
    //métodos
    this.track = function()
    {
        var params = '?action=track';
        params += '&url=' + encodeURIComponent(this.url);
        
        this.sendScriptMessage(this.trackerPage, params);
    };
    
	this.entry = function(url)
	{
		this.end();
		
		this.referrer = this.url;
		this.url = url;
		
		this.begin();
	}
	
    this.begin = function ()
    {
		var params = '?action=begin';
		params += '&instanceName=' + this.instanceName;
		params += '&url=' + encodeURIComponent(this.url);
		params += '&referrer=' + encodeURIComponent(this.referrer);
		params += '&color=' + encodeURIComponent(screen.colorDepth);
		params += '&resolution=' + encodeURIComponent(screen.width + 'x' + screen.height);
		params += '&userDate=' + encodeURIComponent(((new Date()).getMonth() + 1) + '/' + (new Date()).getDate() + '/' + (new Date()).getFullYear() + ' ' + (new Date()).getHours() + ':' + (new Date()).getMinutes() + ':' + (new Date()).getSeconds());
		params += '&idAccess=' + this.idAccess;
		params += '&idUser=' + this.idUser;
		
	    this.sendScriptMessage(this.trackerPage, params);
    };
	
	this.end = function()
	{
		clearInterval(this.navigationTime_update);
		if (document.getElementById('navigationTime_script')) document.body.removeChild(document.getElementById('navigationTime_script'));
		if (document.getElementById('scriptMessage')) document.body.removeChild(document.getElementById('scriptMessage'));
		this.idAccess = 0;
	}
    
    this.click = function(href)
    {
	    var params = '?action=click';
	    params += '&href=' + encodeURIComponent(href);
	    params += '&idAccess=' + this.idAccess;
	    
	    this.sendScriptMessage(this.trackerPage, params);
    };
    
    //funções internas
    this.sendScriptMessage = function(trackerPage, params)
    {
        if (document.getElementById('scriptMessage')) document.body.removeChild(document.getElementById('scriptMessage'));
        var scriptMessage = document.createElement('script');
        scriptMessage.id = 'scriptMessage';
        document.body.appendChild(scriptMessage);
        scriptMessage.src = trackerPage + params;
        scriptMessage = null;
    };
	
	this.navigationTime = function()
	{
	    var params = '?action=time';
	    params += '&idAccess=' + this.idAccess;
	    params += '&instanceName=' + this.instanceName;
	    params += '&add=' + this.updateTime;
	    
	    var trackerPage = this.trackerPage;
	    
	    var navigationTime_begin = function(trackerPage, params)
	    {
	        if (document.getElementById('navigationTime_script')) document.body.removeChild(document.getElementById('navigationTime_script'));
	        var navigationTime_script = document.createElement('script');
	        navigationTime_script.id = 'navigationTime_script';
	        document.body.appendChild(navigationTime_script);
            navigationTime_script.src = trackerPage + params;
            navigationTime_script = null;
	    }
	    
	    navigationTime_begin(trackerPage, params);
	    
	    this.navigationTime_update = setInterval(function(){navigationTime_begin(trackerPage, params)}, this.updateTime);
	};
    
	var clickHandlerCode = function (obj, event)
	{
		var target;
		if (window.ActiveXObject)
		{
			target = event.srcElement;
		}
		else
		{
			target = event.target;
		}
		
		if (target.tagName.toString().toUpperCase() == 'IMG' && target.parentNode.tagName.toString().toUpperCase() == 'A')
		{
			target = target.parentNode;
		}
		
		if (target.tagName.toString().toUpperCase() == 'A')
		{
			if (target.href)
			{
				obj.handleClick.objectReference['tracker'].click(target.href);
			}
		}
	};
	document.handleClick = new eventHandler_(document, 'click');
	document.handleClick.addEventListener(clickHandlerCode, 'clickGet');
	document.handleClick.objectReference = new Object();
	document.handleClick.objectReference['tracker'] = this;
}

var idUser = 0;
if (document.cookie.indexOf('idUser=') > -1)
    idUser = document.cookie.substring(document.cookie.indexOf('idUser='), document.cookie.length).replace('idUser=', '').split(';')[0];

var infoTracker = new tracker('infoTracker', idUser); infoTracker.begin();

