var pageTracker = null;

var QA_DOMAIN = "maui.jooners.com";
var STAGING_DOMAIN = "staging.jooners.com";
var DEV_DOMAIN = "localhost";
var PROD_DOMAIN = "www.jooners.com";
var currentDomain = document.domain;

var GA_ACTION_HOME_PAGE = "home_page";
var GA_ACTION_LEARN_MORE = "learn_more";
var GA_ACTION_HELP = "help";
var GA_ACTION_FAQ = "faq";
var GA_ACTION_ABOUT_US = "about_us";

var GA_ACTION_START_LOGIN = "start_login";
var GA_ACTION_SUCCESSFUL_LOGIN = "/user/successful-login"; // inconsistent label due to existing code

var GA_ACTION_START_REGISTRATION = "start_registration"
var GA_ACTION_SUCCESSFUL_REGISTRATION = "/user/successful-registration"; // inconsistent label due to existing code

var GA_ACTION_SUCCESSFUL_SUBSCRIPTION = "/user/successful-subscription"; // inconsistent label due to existing code

var GA_ACTION_START_TELL_A_FRIEND = "start_tell_a_friend";
var GA_ACTION_SUCCESSFUL_TELL_A_FRIEND = "successful_tell_a_friend";

var GA_ACTION_HOME_TAB = "home_tab";
var GA_ACTION_SIGNUPS_AND_INVITATIONS_TAB = "signups_and_invitations_tab";
var GA_ACTION_OUR_CALENDAR_TAB = "our_calendar_tab";
var GA_ACTION_FRIENDS_AND_FAMILY_TAB = "friends_and_family_tab";
var GA_ACTION_IN_AROUND_TOWN_TAB = "in_around_town_tab";
var GA_ACTION_GALLERY_TAB = "gallery_tab";

var GA_ACTION_FEATURED_CAMPS_SUBTAB = "featured_camps_subtab";
var GA_ACTION_HOLIDAY_SUBTAB = "holiday_subtab";
var GA_ACTION_COMMUNITY_CALENDARS_SUBTAB = "community_calendars_subtab";
var GA_ACTION_COMMUNITY_RESOURCES_SUBTAB = "community_resources_subtab";
var GA_ACTION_IN_THE_KNOW_SUBTAB = "in_the_know_subtab";
var GA_ACTION_SIHP = "signed_in_home_page";

var GA_ACTION_REQUEST_MORE_PEOPLE = "request_help_from_more_people";

var GA_ACTION_DO_I_NEED_JOONERS = "do_I_need_jooners";

var calendarEventTracker;

// Function to include javascripts that depend on the environment in which the server is running
function includeEnvSpecificJavascripts() {
						
	if (currentDomain == null || currentDomain == PROD_DOMAIN) {
		includeExternalGoogleAnalyticsJavascript();
		includeExternalYUIHistoryMgrJavascript();
	} else if (currentDomain == QA_DOMAIN) {
		includeExternalGoogleAnalyticsJavascript();
		includeExternalYUIHistoryMgrJavascript();
	} else if (currentDomain == STAGING_DOMAIN) {
		includeExternalGoogleAnalyticsJavascript();
		includeExternalYUIHistoryMgrJavascript();
	} else { // assume dev environment
		includeLocalGoogleAnalyticsJavascript();
		// includeExternalYUIHistoryMgrJavascript();
	}
};

function includeExternalGoogleAnalyticsJavascript() {
	var gaJsHost = (("https:" == document.location.protocol)?"https://ssl.":
						"http://www.")+"google-analytics.com";
	injectJS("ga.js", gaJsHost);
};

function includeExternalYUIHistoryMgrJavascript() {
	injectJS("yahoo-min.js", "http://yui.yahooapis.com/2.5.1/build/yahoo");
	injectJS("event-min.js", "http://yui.yahooapis.com/2.5.1/build/event");
	injectJS("history-min.js", "http://yui.yahooapis.com/2.5.1/build/history");
};

function includeLocalGoogleAnalyticsJavascript() {
	injectJS("ga.js", "ga");
};

function includeLocalYUIHistoryMgrJavascript() {
	injectJS("yahoo-min.js", "yui");
	injectJS("event-min.js", "yui");
	injectJS("history.js", "yui");
};

function configGoogleAnalyticsEnv() {
    if (pageTracker != null) {
        // already initialized
        return;
    }
	if (currentDomain == null || currentDomain == PROD_DOMAIN) {
		_uacct = "UA-2650423-1";
	} else if (currentDomain == QA_DOMAIN) {
		_uacct = "UA-2650423-4";				
	} else if (currentDomain == STAGING_DOMAIN) {
		_uacct = "UA-2650423-3";		
	} else { // assume dev environment
		_uacct = "ignore";
	}
	if (typeof _gat != 'undefined' && _gat != null) {
		pageTracker = _gat._getTracker(_uacct);
	}

	if (pageTracker == null) {
		return;
	}
	try {
		// segment based on the referrer
		// first check the URL parameter for value of the referrer site
		var referrerToken = "referrerSite";
		var qs = new QueryString();
		var referrer = qs.get(referrerToken);
		
		// next check cookies for value of the referrer site
		var nameEQ = referrerToken + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) 
				referrer = c.substring(nameEQ.length, c.length);
		}
	
		if (referrer != null) {
			pageTracker._setVar(referrerToken + " : " + referrer);
		}
	} catch (ex) {
		if (currentDomain != PROD_DOMAIN && currentDomain != STAGING_DOMAIN) {
			alert("configGoogleAnalyticsEnv:failure in calling pageTracker.setVar\n\n"+ex.message);
		}
	}
};

function GATrackAction(actionName)
{
	if (pageTracker == null) {
        configGoogleAnalyticsEnv();
    }
	if (pageTracker == null) {
		return;
	}
	try {
	    if (actionName != null) {
	    	pageTracker._trackPageview(actionName);
	    } else {
	    	pageTracker._trackPageview();
	    }
	} catch (ex) {
		if (currentDomain != PROD_DOMAIN && currentDomain != STAGING_DOMAIN) {
			alert("GATrackAction:failure in calling pageTracker._trackPageview\n\n" + ex.message);
		}
	}
};

function GATrackEvent(event) {
	if (event == null) {
		return;
	}
	if (pageTracker == null) {
		configGoogleAnalyticsEnv();
	}
	if (pageTracker == null) {
		return;
	}
	try {
	  pageTracker._trackEvent(event);
	} catch (ex) {
		if (currentDomain != PROD_DOMAIN && currentDomain != STAGING_DOMAIN) {
			alert("GATrackEvent: failure in calling pageTracker._trackEvent\n\n" + ex.message);
		}
	}
};

function configEnv() {
	configGoogleAnalyticsEnv();
};

function injectJS (fileName, jsbase){
	var src = jsbase + '/' + fileName;
	var ipts = document.getElementsByTagName("script");
	for (i=0; i < ipts.length; i++)	{
		var type = ipts[i].src;
		if (type.indexOf(fileName) != -1){
			return; // do not want to include the script more than once
		}
	}
	var headID = document.getElementsByTagName("head")[0];        
	var newScript = document.createElement('script');
	newScript.type = 'text/javascript';
	newScript.src = src;
	headID.appendChild(newScript);        
 }; 

// load environment-specific javascript files before other functions are called.
// includeEnvSpecificJavascripts();
