var cookieName = "IPTuid";
var cookieDomain = ".investidorprofissional.com.br";
var trackerDomain = "http://www.investidorprofissional.com.br";
//var trackerDomain = "http://devel.investidorprofissional.com.br";
var trackerURL = trackerDomain + "/IPtracker";

/********
 * Incluir JQuery
 ********/
//var script = document.createElement('script');
//script.src = 'http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js';
//script.type = 'text/javascript';
//document.getElementsByTagName('head')[0].appendChild(script);

//document.write("<script language='javascript' src='/jquery/jquery-1.6.min.js'></script>");

/********
 * Outros includes
 ********/
$.ajaxSetup({async: false});
$.getScript(trackerDomain + "/jquery/jquery.cookie.js");
$.ajaxSetup({async: true});

/********
 * Funcoes auxiliares
 ********/

function debugmessage(msg) {
	if (window.console) {
		window.console.log(msg);
	}
}

function parseUri (str) {
	var	o   = parseUri.options,
		m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
		uri = {},
		i   = 14;

	while (i--) uri[o.key[i]] = m[i] || "";

	uri[o.q.name] = {};
	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
		if ($1) uri[o.q.name][$1] = $2;
	});

	return uri;
};

parseUri.options = {
	strictMode: false,
	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
	q:   {
		name:   "queryKey",
		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
	},
	parser: {
		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
	}
};

function setIPTrackerCookie(uid) {
	debugmessage("Setando cookie: " + uid);
	$.cookie(cookieName, uid, {
		domain: cookieDomain,
		path: "/",
		expires: 365*10, //10 anos
		secure: false }
		);
}

function getQueryVariable( variable ) { 
  var query = window.location.search.substring(1); 
  var vars = query.split("&"); 
  for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable) { 
      return pair[1]; 
    } 
  } 
  return null;
} 

function IPlog() {
	uid = encodeURIComponent($.cookie(cookieName));
	referrer = encodeURIComponent(document.referrer);
	sessionid = encodeURIComponent($.cookie("PHPSESSID"));
	uri = parseUri(document.location)
	// Variáveis que podem ser setadas na página que chama o check.js
	site = encodeURIComponent( typeof(IPTsite) != "undefined" ? IPTsite : uri["host"] );
	page = encodeURIComponent( typeof(IPTpage) != "undefined" ? IPTpage : uri["path"] );
	params = encodeURIComponent( typeof(IPTparams) != "undefined" ? IPTparams : uri["query"] );
	
	$.getJSON(	trackerURL + "/log.php?callback=?", 
				"IPTuid=" + uid + "&site=" + site + "&page=" + page +
				"&params=" + params + "&referrer=" + referrer + "&sessionid=" + sessionid
	);
}

function TrackAndLog() {
	urlUID = getQueryVariable(cookieName);
	
	if( urlUID != null ) { // Recebi o UID na URL
		if( urlUID == $.cookie(cookieName) ) { //É igual o que eu já tenho
			debugmessage("Recebi na URL igual o que já tenho => renovar cookie:" + urlUID);
		} else {
			debugmessage("Recebi na URL DIFERENTE do que já tenho => atualizar log: " + urlUID + " = " + $.cookie(cookieName) );
			$.getJSON(	trackerURL + "/updateUID.php?callback=?", 
						"oldUID=" + encodeURIComponent($.cookie(cookieName)) + "&newUID=" + encodeURIComponent(urlUID)
			);
		}
		setIPTrackerCookie(urlUID);
		IPlog();
	} else if( $.cookie(cookieName) == null ) { //Ainda não tem cookie
		debugmessage("Não tem cookie => buscar um novo");
		$.getJSON(	trackerURL + "/newUID.php?callback=?", 
					function (data) {
						uid = data["uid"];
						debugmessage("Recebi cookie " + uid);
						setIPTrackerCookie(uid);
						IPlog();
					}
		);
	} else {
		debugmessage("Ja tenho cookie (" + $.cookie(cookieName) + ") => verificar se preciso atualizar");
		$.getJSON(	trackerURL + "/checkUID.php?callback=?", 
					"currentUID=" + encodeURIComponent($.cookie(cookieName)),
					function (data) {
						uid = data["uid"];
						debugmessage("Vou setar = " + uid);
						setIPTrackerCookie(uid);
						IPlog();
					}
		);
	}
}

/********
 * Codigo Principal
 ********/

$(document).ready( TrackAndLog );
