(function($){
    if($)
    {
        var _img, _imgSrc, _ternairId;
        
        $.tracer = function(imgSrc, extra){
        
            if(!imgSrc)return;

            try {
                // Init 
                _img = new Image();
                _imgSrc = imgSrc;
                
                var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
                for(var i = 0; i < hashes.length; i++)
                {
                    var hash = hashes[i].split('=');
                    if (hash[0] == 'ternairid') {
                        _ternairId = hash[1];
                    }
                }
                
                if (_ternairId) {
                    // remove cookie.
                    document.cookie = 'ternairid=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
                    // write ternairid cookie.
                    var expirydate = new Date();
                    expirydate.setDate(expirydate.getDate() + 365);
                    document.cookie = 'ternairid=' + escape(_ternairId) + ';expires=' + expirydate.toGMTString() + ';path=/';
                } else {
                    // try retrieving ternair id cookie.
                    if (document.cookie != '') {
                        var ck = document.cookie.split('; ');
                        for (var i=ck.length - 1; i>= 0; i--) {
                            var cv = ck[i].split('=');
                            if (cv[0] == 'ternairid'){
                                _ternairId = cv[1];
                                break;            
                            }
                        }
                    }
                }
                       
                // Register start url.
                var loadQuery = '?LOAD'
                if (_ternairId && _ternairId.length > 0) {
                    loadQuery += '&ternairid=' + _ternairId;
                }
                loadQuery += '&href=' + escape(window.location.href);
                if (extra && extra.length > 0) {
                    loadQuery += ('&' + extra);
                }
                    
                loadQuery += '&ts=' + (new Date()).getTime();
                _img.src = _imgSrc + loadQuery;;
            }
            catch(ex){} // Silent fail.
            
            // Register a and submit clicks.
            $('a, input[type=submit]').click(function(){
                try
                {
                    // Tag type 
                    var query = '?CLICK';
                    
                    if (_ternairId && _ternairId.length > 0) {
                        query += '&ternairid=' + _ternairId;
                    }
                
                    query += '&type=' + this.tagName;
                    
                    // Anchor href
                    if($(this).is('a')) query += ('&href=' + escape($(this).attr('href')));
                    // Form action
                    else
                    {
                        var form = $(this).parents('form:eq(0)');
                        if(!form)return;
                        query += ('&href=' + escape(form.attr('action')));
                    }               

                    // Username
                    if (extra && extra.length > 0) {
                        query += ('&' + extra);
                    }

                    // Timespan to bypass browser cache.
                    query += ('&ts=' + (new Date()).getTime());

                    // Register                
                    _img.src = _imgSrc + query;
                }
                catch(ex){} // Silent fail.
            });  
        };
    }
})(jQuery);

// Example:

//$(function() {

//    var name = $("a:contains('Welcome ')").text();
//    name = (name) ? name.replace(/Welcome /, '') : '';
//    
//    $.tracer('https://myDomain/__myImage.gif', name);    
     
//});
