/*******************************************************************\
* NUVIGIL.com Google Analytics Tracking                             *
* ----------------------------------------------------------------- *
* Copyright © 2009 Draftfcb Healthcare, Inc. All rights reserved.   *
\*******************************************************************/

/*==[ Set Up Global Variables ]====================================*/
var gaJsHost        = ("https:" == document.location.protocol) ? "https://ssl." : "http://www.";
var gaJsSrc         = gaJsHost + "google-analytics.com/ga.js";
var gaDomain        = "www.nuvigil.com";
var gaSegment       = null;
var _gaq         = null;
var gaTracker       = null;
var dummyTracker    = null;
var gaCookie        = null;
var gaRefCookie     = null;
var gaFirstReferrer = null;
var gaLastReferrer  = null;

var gaSearchEngines = new Array();
gaSearchEngines["about"] = "terms";
gaSearchEngines["alice"] = "qs";
gaSearchEngines["alltheweb"] = "q";
gaSearchEngines["altavista"] = "q";
gaSearchEngines["aol"] = "query";
gaSearchEngines["aol"] = "q";
gaSearchEngines["aol"] = "encquery";
gaSearchEngines["ask"] = "q";
gaSearchEngines["baidu"] = "wd";
gaSearchEngines["bing"] = "q";
gaSearchEngines["club-internet"] = "query";
gaSearchEngines["cnn"] = "query";
gaSearchEngines["daum"] = "q";
gaSearchEngines["ekolay"] = "q";
gaSearchEngines["eniro"] = "search_word";
gaSearchEngines["gigablast"] = "q";
gaSearchEngines["google"] = "q";
gaSearchEngines["google.interia"] = "q";
gaSearchEngines["images.google"] = "q";
gaSearchEngines["kvasir"] = "searchExpr";
gaSearchEngines["kvasir"] = "q";
gaSearchEngines["live"] = "q";
gaSearchEngines["looksmart"] = "qt";
gaSearchEngines["lycos"] = "query";
gaSearchEngines["mama"] = "query";
gaSearchEngines["mamma"] = "query";
gaSearchEngines["msn"] = "q";
gaSearchEngines["mynet"] = "q";
gaSearchEngines["najdi"] = "q";
gaSearchEngines["naver"] = "query";
gaSearchEngines["netscape"] = "query";
gaSearchEngines["netsprint"] = "q";
gaSearchEngines["nostrum"] = "query";
gaSearchEngines["onet"] = "qt";
gaSearchEngines["ozu"] = "q";
gaSearchEngines["pchome"] = "q";
gaSearchEngines["rambler"] = "words";
gaSearchEngines["search"] = "q";
gaSearchEngines["search.ilse"] = "search_for";
gaSearchEngines["sesam"] = "q";
gaSearchEngines["seznam"] = "q";
gaSearchEngines["szukacz"] = "q";
gaSearchEngines["terra"] = "query";
gaSearchEngines["virgilio"] = "qs";
gaSearchEngines["voila"] = "rdata";
gaSearchEngines["wp"] = "szukaj";
gaSearchEngines["yahoo"] = "p";
gaSearchEngines["yam"] = "k";
gaSearchEngines["yandex"] = "text";


/*==[ Include Additional Source Files ]============================*/
var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-9022327-1']);
  _gaq.push(['_setDomainName', '.nuvigil.com']);
  _gaq.push(['_trackPageview']);

(function()
{
	var ga = document.createElement('script');
	ga.type = 'text/javascript';
	ga.async = true;
	ga.src = gaJsSrc;
	var s = document.getElementsByTagName('script')[0];
	s.parentNode.insertBefore(ga, s);
})();

/*==[ Referrer Tracking ]==========================================*/
try
{
	// Pull in relevant cookies
	gaCookie    = ga_get_cookie('__utmz', true);
	gaRefCookie = ga_get_cookie("gaRefCookie", false);

	// Get latest referrer
	gaLastReferrer  = ga_get_referrer();

	// Get the first referrer, or set it and a cookie to the last referrer
	if(gaRefCookie.length > "0")
	{
		gaFirstReferrer = gaRefCookie;
	}
	else
	{
		gaFirstReferrer = gaLastReferrer;
		ga_set_cookie("gaRefCookie", gaLastReferrer, 182);
	}

	// Add additional organic search domains
	_gaq.push(['_addOrganic', 'search.twitter.com', 'q']);

	// Set Custom Variables
	if(gaSegment != null)       { _gaq.push(['_setCustomVar', 1, 'User_Segmentation', gaSegment, 1]); }
	if(gaFirstReferrer != null) { _gaq.push(['_setCustomVar', 2, 'First_Referrer', gaFirstReferrer, 1]); }
	if(gaLastReferrer != null)  { _gaq.push(['_setCustomVar', 3, 'Last_Referrer', gaLastReferrer, 1]); }
}
catch(err) {}


/*==[ Page Tracking Function ]=====================================*/
function ga_track_page(page)
{
	if (page != null && page != 'undefined')
	{
	   _gaq.push(['_trackPageview', page]);
 	}
 	else
 	{
		_gaq.push(['_trackPageview']);
	}
}


/*==[ Function to Track Form Fields as Events ]====================*/
function ga_track_form_field(field)
{
	var page  = document.location.href;
	var slash = page.indexOf("/", 7);
	page      = page.substr(slash);

	if(field.value != '')
	{
		_gaq.push(['_trackEvent', 'Forms', page, field.name]);
	}
}


/*==[ Function to Track Custom Events ]============================*/
function ga_track_event(event_type, event_string)
{
	var page  = document.location.href;
	var slash = page.indexOf("/", 7);
	page      = page.substr(slash);

	_gaq.push(['_trackEvent', event_type, page, event_string]);
}


//==[ Function to Return Referrer From __utmz Cookie ]=============*/
function ga_get_referrer()
{
	if (gaCookie.length > "0")
	{
		var gaClientID    = ga_match_regex("utmgclid");
		var gaMedium      = ga_match_regex("utmcmd");
		var gaSource      = ga_match_regex("utmcsr");
		var gaKeyword     = ga_match_regex("utmctr");

		// Return "direct" if document.referrer is empty
		if(document.referrer == "") { return "direct"; }

		switch(gaMedium)
		{
			case "(none)":
				if (gaSource == "(direct)") { return "direct"; }
				break;

			// CASE: Site Referral
			case "referral":
				return "referral (" + gaSource + ")";
				break;

			// CASE: Organic Search or Pay Per Click (Adwords)
			case "organic":
			case "cpc":
			case "ppc":

				if(gaMedium == "ppc") { gaMedium = "cpc"; }
				if (typeof gaClientID != null) { gaSource = "google"; }

				var gaQueryParam = gaSearchEngines[gaSource];
				var Pattern      = new RegExp("https?://.*"+gaSource+".*[?&]"+gaQueryParam+"=.*");
				var refPattern   = new RegExp("https?://([^/]*)/?");
				var gaRefDomain  = refPattern.exec(document.referrer);

				if(result = Pattern.exec(document.referrer))
				{
					return gaSource + " (" + gaMedium + ") (" + gaKeyword + ")";
				}
				else
				{
					if (gaRefDomain[1] != gaDomain)
					{
						return "referral (" + gaRefDomain[1] + ")";
					}
				}
				break;
		}
	}
	else
	{
		return null;
	}
}


//==[ Support Function to Regex Against __utmz Cookie ]============*/
function ga_match_regex(regex)
{
	var patt = new RegExp(regex + "=([^|]+)");

	if(result = patt.exec(gaCookie))
	{
		return result[1];
	}
	return null;

}

//==[ Support Function to Create a Cookie ]========================*/
function ga_set_cookie(c_name, value, expiredays)
{
	var exdate= new Date();
	exdate.setDate(exdate.getDate() + expiredays);
	document.cookie = c_name + "=" + value + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}


//==[ Support Function to Retrieve a Cookie ]======================*/
function ga_get_cookie(c_name, special)
{
	if (document.cookie.length>0)
	{
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1)
		{
			c_start=c_start + c_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;

			var cookie_to_use = unescape(document.cookie.substring(c_start,c_end));
			if (special)
			{
				return cookie_to_use.toLowerCase();
			}
			return cookie_to_use;
	    }
	}
	return "";
}

