var _gaq = _gaq || [];

GA_Core = (function(){
	var tmpReferrer,
        tmpReferrerStripped,
		page;

	function getCookie( cookie_name ) {
        var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');
        if ( results ) {
            return ( unescape( results[2] ) );
        } else {
            return null;
        }
    }

    function deleteCookie( cookie_name ) {
        var cookie_date = new Date();
        cookie_date.setTime( cookie_date.getTime() - 1 );
        document.cookie = cookie_name += "=; path=/; expires=" + cookie_date.toGMTString();
    }

	function getProfile() {
		// dev = UA-331194-8
		// stage = UA-331194-8
		// prod = UA-331194-1
		var profile,
			hostname = location.hostname;

		if ( hostname === 'www.emusic.com' ) {
			profile = 'UA-331194-1';
		} else {
			profile = 'UA-331194-8';
		}

		return profile;
	}

	function getFrefVal() {
		var frefVal,
			sugar,
			firstTimeUser,
			guestMember,
			inFraudDelay,
			oatmeal,
			fref;

		sugar = new Cookie({
            name : 'sugar',
            path : '/',
            pairDelimiter : '&',
            keyValueDelimiter : '='
        });
    	sugar.read();

		firstTimeUser = sugar.get('ftu');
		guestMember = sugar.get('gm');
		inFraudDelay = sugar.get('fd');

		oatmeal = new Cookie({
            name : 'oatmeal',
            path : '/',
            pairDelimiter : '&',
            keyValueDelimiter : '='
        });
    	oatmeal.read();

		fref = oatmeal.get('t');

		if ( firstTimeUser ) {
			frefVal = fref;
		} else if ( guestMember ) {
			frefVal = 'MemberFree';
		} else if ( inFraudDelay ) {
			frefVal = 'MemberFirstDay';
		} else {
			frefVal = 'Member';
		}

		return frefVal;
	}

	function calculateTmpReferrer() {
		tmpReferrer = getCookie('ga_tmp_referrer');
        if (tmpReferrer) {
            tmpReferrerStripped = tmpReferrer.split('?');
            tmpReferrerStripped = tmpReferrerStripped[0];

            if ( tmpReferrerStripped.indexOf('emusic.com') == -1 && tmpReferrerStripped.indexOf('emusic-test.com') == -1 ){
                _gaq.push([ '_setReferrerOverride', tmpReferrer ]);
            }
        }
		deleteCookie('ga_tmp_referrer');
	}

	function calculatePage() {
		var href = location.href.toString(),
			listen = href.split('/listen/#'),
			pageListen;

		if ( listen[1] ) {
			pageListen = listen[1];
			page = pageListen.replace(':', '');
		} else {
			page = location.pathname;
		}
	}

	function init() {
		_gaq.push( [ '_setAccount', getProfile() ], [ '_setVar', getFrefVal() ] );

		calculateTmpReferrer();

		calculatePage();
		_gaq.push([ '_trackPageview', page ]);

		(function () {
			var ga = document.createElement('script');
			ga.type = 'text/javascript';
			ga.async = true;
			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';

			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
		}());
	}

    if ( location.href.toString().indexOf('log-in.php') != -1 ) {
        init();
    }

	EMUSIC_GLOBAL.toggleContainer(init, 'ga-core.js', 'PAGEJS', true);

	return {
		init: init
	}
})();
