// ==UserScript==
// @name           GAREnhancer
// @namespace      roirevolution.com
// @description    Adds additional columns and segments to Google Analytics Reports
// @include        http://www.google.com/analytics/*
// @include        https://www.google.com/analytics/*
// @include	   	 https://adwords.google.com/analytics/*
// ==/UserScript==

var domType="DOMNodeInserted";
var numInserted = 0;
var lastCount = 0;
var interval;
var stopped = true;
var state_total = [];
var visit_total = [];
var currentURL = location.href.split("#")[0].replace(/&trows=[^&]*/,"") + "&trows=100";
var scriptElement;
var scriptUpdated = false;
var maxSegs = 4;

function insertLogo() {
	var logo = document.getElementById('logo') || document.getElementById('aw-adwords-logo');
	var newTd = new Array();
	
	try { 
		if(logo.parentNode.parentNode.width=="231") {
			logo = logo.parentNode;
			logo.parentNode.width = "260";
		} else {
			logoImage = document.getElementsByTagName('img');
			for(i=0;i<logoImage.length;i++) {
				if(logoImage[i].src.match("images/logo_gwo.gif")) {
					for(j=1;j>=0;j--) {
						newTd[j] = document.createElement('td');
						newTd[j].width = "1%";
						logoImage[i].parentNode.parentNode.insertBefore(newTd[j],logoImage[i].parentNode.nextSibling.nextSibling);
					}
				}
			}
		}
		document.removeEventListener(domType, insertLogo, false);
		var newLogo = new Array();
		newLogo[0] = document.createElement('p');
		newLogo[0].id = "logo2";
		newLogo[0].innerHTML = '<a href="http://www.roirevolution.com/blog">with ROI Revolution Report Enhancer</a>';
		newLogo[1] = document.createElement('p');
		newLogo[1].id = "updateGARE";
		newLogo[1].innerHTML = '<a href="http://www.roirevolution.com/script/GAREnhancer.user.js">Update</a>';

		if(newTd[0]){
			newTd[0].appendChild(newLogo[0]);
			newTd[1].appendChild(newLogo[1]);
		} else {
			logo.parentNode.insertBefore(newLogo[1], logo.nextSibling);
			logo.parentNode.insertBefore(newLogo[0], logo.nextSibling);
		}
	
		var myStyles = document.createElement("style");
		myStyles.type = "text/css";
		myStyles.innerHTML = 	'.admin_container #logo2 { padding: 0; }<br />' +
					'.admin_container #updateGARE { padding: 0; }' +
					'#logo2 { display: inline; float: left; margin: 0 0 0 10px; }' +
					'#logo2 a { background:transparent url(http://www.roirevolution.com/images/greasemonkey/roi_logo.gif) no-repeat scroll 0 0; display:block; height:0; overflow:hidden; padding:35px 0 0; text-indent:-5000px; width:182px; }' + 
					'#updateGARE { display: inline; float: left; margin: 0 0 0 10px; }' +
					'#updateGARE a { background:transparent url(http://www.roirevolution.com/_images/greasemonkey/update4.gif) no-repeat scroll 0 0; display:block; height:0; overflow:hidden; padding:35px 0 0; text-indent:-5000px; width:50px; }';
		document.getElementsByTagName("head")[0].appendChild(myStyles);
	} catch(e) {}
}

var idRegex = new RegExp(/reporting\/.*[?&]id=([^&]*)/);
try {
	var myId = idRegex.exec(location.href)[1];
	var myAnalyticsLink = document.getElementById("settings_link");
	myAnalyticsLink.href = "/analytics/settings/profile_summary?id=" + myId;
} catch(e) {}


function uncheckAllVisits(seg) {
	allSeg.checked = checked[-1];
	checked[seg.value] = !checked[seg.value];
	seg.checked = checked[seg.value];
	allSeg.disabled = false;
	allSeg.enabled = true;
}

try {
	var allSeg = document.getElementById("segment_id_-1");
	allSeg.disabled = false;
	allSeg.enabled = true;
	var checked = new Array();
	var advSeg = document.getElementById("seg_dropbox_data");
	var eachSeg = advSeg.getElementsByTagName("input");
	for(i=0;i<eachSeg.length;i++) {
		eachSeg[i].addEventListener("click", function() { uncheckAllVisits(this); }, true);
		checked[eachSeg[i].value] = eachSeg[i].checked
	}
} catch(e) {}

var dashboards = document.getElementsByClassName("dashboard_module");
var mod_link_regex = new RegExp(/&q=([^&]*)&qtyp=([^&]*)/);

if(dashboards) {
	for(i=0;i<dashboards.length;i++) {
		try {
			var mod_id = dashboards[i].parentNode.id
			var module_link = document.getElementById(mod_id + "_view_report");
			var mod_link_matched = mod_link_regex.exec(module_link.href);
			var mod_desc = (mod_link_matched[2] === "1" ? "Excluding: " : "Containing: ") + unescape(mod_link_matched[1] + " ");
			var mod_span = document.getElementById(mod_id + "_title");
			mod_span.innerHTML = mod_span.innerHTML + mod_desc;	
		} catch(e) {}
	}
}		

var accountNumber, domainList, domainOptions, newDomain, newDomainText, activeGoal, activeGoalDiv, websiteOptimizer, continue_button;
accountNumber = /\/settings\/add_profile.*(?:\?|&)scid=([0-9]+)/.exec(location.href);
if(accountNumber) {
	domainList = document.getElementsByName("uswe_id");
	if(domainList) {
		domainOptions = domainList[0].getElementsByTagName("option");
		if(domainOptions){
			for(i=1;i<=domainOptions.length;i++) {
				domainOptions[i-1].innerHTML+= " (UA-" + accountNumber[1] + "-" + i + ")";
			}
			newDomain=document.getElementsByName("ucpr_url");
			if(newDomain) {
				newDomainText = document.createTextNode(" UA-" + accountNumber[1] + "-" + i);
				newDomain[0].appendChild(newDomainText); 
			}
		}
	}
}

activeGoal = /\/settings\/edit_goal\?id=[0-9]+&goalNumber=[1-4]/.exec(location.href);
if(activeGoal) {
	activeGoalDiv = document.getElementById("ubgo_activeErrorBox");
	if(activeGoalDiv) {
		activeGoalDiv.innerHTML='<input type="radio" name="ubgo_active" checked value="true"> On <input type="radio" name="ubgo_active" value="false"> Off <div class="errormsg-group" id="ubgo_activeErrorMessage"></div>';
	}
}

var checkStatus = /\/settings\/check_status(_profile)?_handler/.exec(location.href);
if(checkStatus) {
	var codeTracking = new Array();					
	var subDomainRegex = new RegExp(/([^\.]*\.([a-z]{3}|[a-z]{2}\.[a-z]{2}))(\/|$)/);
	var subTd = document.getElementsByClassName("admin_input_name");
	var subDomain;
	for(i=0;i<subTd.length;i++) {
		if(subTd[i].innerHTML=="Website URL:") {
			subDomain = subDomainRegex.exec(subTd[i].nextSibling.nextSibling.innerHTML)[1];
		}
	}
	
	var topCode = new Array();						// These six arrays will hold the pieces of the
	var subDom = new Array();						// urchin.js and ga.js Google Website Optimizer code
	var multiHash = new Array();
	var multiLink = new Array();
	var multiNone = new Array();
	var endCode = new Array();
	
	var newTracking = document.getElementById("new_tracking_code");
	codeTracking["ga"] = newTracking.getElementsByTagName("textarea")[0];
	codeTracking["ga"].style.height = "15em";					// Make entire text area visible
	codeTracking["ga"].style.width = "78em";					
	var newCode = codeTracking["ga"].value;
	newMid = newCode.indexOf("pageTracker._trackPageview();");
	topCode["ga"] = newCode.substring(0,newMid);
	endCode["ga"] = newCode.substring(newMid);

	var oldTracking = document.getElementById("old_tracking_code");
	codeTracking["urchin"] = oldTracking.getElementsByTagName("textarea")[0];
	codeTracking["urchin"].style.height = "15em";					// Make entire text area visible
	codeTracking["urchin"].style.width = "50em";
	oldCode = codeTracking["urchin"].value;
	oldMid = oldCode.indexOf("urchinTracker();");
	topCode["urchin"] = oldCode.substring(0, oldMid);
	endCode["urchin"] = oldCode.substring(oldMid);

	subDom["ga"] =		'pageTracker._setDomainName("' + subDomain + '");\n'
	multiHash["ga"] =	'pageTracker._setAllowHash(false);\n';
	multiLink["ga"] =	'pageTracker._setAllowLinker(true);\n';
	multiNone["ga"] = 	'pageTracker._setDomainName("none");\n';
	
	subDom["urchin"] = 	'_udn = "' + subDomain + '";\n';
	multiHash["urchin"] = 	'_uhash = "off";\n';
	multiLink["urchin"] =	'_ulink = 1;\n';
	multiNone["urchin"] = 	'_udn = "none";\n';
		
	function updateCodeGA() {
		if(multiButton.checked && !subButton.checked) {			// handle "none" style
			noneButton.disabled = false;
			noneText.style.color = "";
		} else {
			noneButton.disabled = true;
			noneText.style.color = "#CCC";
		}
		for(var version in codeTracking) {
			codeTracking[version].value = 	topCode[version] +		// Modify tracking scripts
						 		(subButton.checked ? subDom[version] : '') +
								(multiButton.checked ? 
								(noneButton.checked && !noneButton.disabled ? multiNone[version] : multiHash[version]) +
								multiLink[version] : '') +
								endCode[version];
		}	
	}
	
	var adminSectionOption = document.getElementsByClassName('admin_section_option')[0];
	var trackingDiv = document.createElement('div');
	trackingDiv.id = "checkboxes";
 	adminSectionOption.parentNode.insertBefore(trackingDiv, adminSectionOption.nextSibling);
		
	var subButton = document.createElement('input');			// This block adds the subdomain checkbox
	subButton.type = "checkbox";
	subButton.addEventListener("click", function() { updateCodeGA(); }, true);
	trackingDiv.appendChild(subButton);
	subText = document.createTextNode('Do you have subdomains?');
	trackingDiv.appendChild(subText);
	
	var multiButton = document.createElement('input');			// This block adds the multiple domain checkbox
	multiButton.type = "checkbox";
	multiButton.addEventListener("click", function() { updateCodeGA(); }, true);
	trackingDiv.appendChild(multiButton);
	multiText = document.createTextNode('Do you have multiple domains?');
	trackingDiv.appendChild(multiText);
	
	var noneButton = document.createElement('input');			// This block adds the domain "none" checkbox
	noneButton.type = "checkbox";
	noneButton.addEventListener("click", function() { updateCodeGA(); }, true);
	noneButton.disabled = true;
	trackingDiv.appendChild(noneButton);
	noneText = document.createElement('span');
	noneText.innerHTML = '"none" style?&nbsp;<img onmouseout="analytics.Menu.toggle(\'noneLink\', \'noneBubble\', analytics.MenuType.Nav); return false;" onmouseover="analytics.Menu.toggle(\'noneLink\', \'noneBubble\', analytics.MenuType.Nav); return false;" alt="" id="noneLink" src="/analytics/settings/images/icons/help.gif"/><div><div style="display: none;" id="noneBubble"><dl class="contextual_help"><dt><b>"none" style:</b></dt><dd><div>While using _uhash = "off" or pageTracker._setAllowHash(false); is preferred to track across domains, you can select this box to use the traditional _udn = "none" or pageTracker._setDomainNone("none"); instead.</div></dd></dl></div></div>';
	noneText.style.color = "#CCC";
	trackingDiv.appendChild(noneText);
}

var websiteOptimizer = /^\/analytics\/siteopt/.exec(location.pathname);		// auto-validation for A/B
var abOnly = /^\/analytics\/siteopt\/ab_installation_instructions/.exec(location.pathname);
if(websiteOptimizer) {
	if(abOnly) {
		continue_button = document.getElementById("continue-button");
		if(continue_button) {
			continue_button.removeAttribute("disabled");
			continue_button.setAttribute("enabled","enabled");
		}
	}
	
	acctSelect = document.getElementById("acctSelect");
	if(acctSelect) {
		var selector = acctSelect.getElementsByTagName("select")[0];
		var options = selector.getElementsByTagName("option");
		var selected = options[selector.selectedIndex].value;
		var acctNames = new Array();
		var sorted = new Array();
		for(i=0;i<options.length;i++){
			acctNames[i] = options[i].text + "*_*" + options[i].value;
		}
		acctNames = acctNames.sort(charOrdA);
		for(i=0;i<options.length;i++){
			sorted = acctNames[i].split("*_*");
			options[i].text = sorted[0];
			options[i].value = sorted[1]
			if(options[i].value==selected) {
				selector.selectedIndex = i;
			}
		}		
	}
	
	
	var textAreaWidth = "55em";						// default text area width
	var controlComment = "<!-- Google Website Optimizer Control Script -->\n";
	var codeControl = document.getElementById('code_control');		// text area containing control script
	codeControl.style.height = "20em";					// Make entire text area visible
	codeControl.style.width = textAreaWidth;				// Make entire text area visible
	var oldControl = codeControl.value;					// store original control script
	oldControl = oldControl.replace(controlComment, "");	
		
	var codeTracking = new Array();
	var numTracks = 1;							// number of tracking scripts on page (2 for A/B)
	codeTracking[0] = document.getElementById('code_tracking');		// text area containing tracking script
	if(!codeTracking[0]) {
		numTracks = 2;
		codeTracking[0] = document.getElementById('code_tracking_original');
		codeTracking[1] = document.getElementById('code_tracking_variants');
	}

	for (i=0;i<numTracks;i++) {
		codeTracking[i].style.height = "20em";				// Make entire text area visible
		codeTracking[i].style.width = textAreaWidth;			// Make entire text area visible
	}

	var oldTracking = codeTracking[0].value;				// store urchin.js version of tracking script
	var accountRegex = new RegExp(/(_uacct = '([^']*)';|_gat._getTracker\("([^"]*)"\);)/);			// regex to grab account#
	var testRegex = new RegExp(/(?:urchinTracker|(?:gwo|page)Tracker._trackPageview)\("([^"]*)"/);			// regex to grab test custom pageview
	var accountResults = accountRegex.exec(oldTracking);
	var account = accountResults[2] ? accountResults[2] : accountResults[3];	// account #		
	var test = testRegex.exec(oldTracking)[1];				// test custom pageview
	var codeConversion = document.getElementById('code_conversion');	// text area containing conversion script
	if(!codeConversion) {
		codeConversion = document.getElementById('code_tracking_conversion');
	}
	codeConversion.style.height = "20em";					// Make entire text area visible
	codeConversion.style.width = textAreaWidth;				// Make entire text area visible
	var oldConversion = codeConversion.value;				// store urchin.js version of conversion script
	var goalRegex = new RegExp(/(?:urchinTracker|(?:gwo|page)Tracker._trackPageview)\("([^"]*)"/);			// regex to grab goal custom pageview
	var goal = goalRegex.exec(oldConversion)[1];				// goal custom pageview

	var subDomainRegex = new RegExp(/([^\.]*\.([a-z]{3}|[a-z]{2}\.[a-z]{2}))(\/|$)/);
	var testDiv = document.getElementById("test_0_name");
	if(!testDiv) {
		testDiv = document.getElementById("original_0_name");
	}
	testLink = testDiv.getElementsByTagName("a")[0];
	var trackingSubDomain = subDomainRegex.exec(testLink.title)[1];			// root level domain for test page

	var conversionDiv = document.getElementById("conversion_0_name");
	conversionLink = conversionDiv.getElementsByTagName("a")[0];
	var conversionSubDomainRegex = new RegExp(/([^\.]*\.([a-z]{3}|[a-z]{2}\.[a-z]{2}))(\/|$)/);
	var conversionSubDomain = subDomainRegex.exec(conversionLink.title)[1];	// root level domain for conversion page

	var topCode = new Array();						// These eight arrays will hold the pieces of the
	var subTest = new Array();						// urchin.js and ga.js Google Website Optimizer code
	var subGoal = new Array();
	var multiHash = new Array();
	var multiLink = new Array();
	var multiNone = new Array();
	var testCode = new Array();
	var goalCode = new Array();
	
	topCode["ga"] =		'<!-- Google Website Optimizer Tracking Script -->\n' +
				'<script>\n' +
				'if(typeof(_gat)!=\'object\')document.write(\'<sc\'+\'ript src="\'+\n' +
				'\'http\'+(document.location.protocol==\'https:\'?\'s://ssl\':\'://www\')+\n' +
				'\'.google-analytics.com/ga.js\'+\'"></sc\'+\'ript>\')\n' +
				'</script>\n' +
				'<script type="text/javascript">\n' +
				'try {\n' +
				'var gwoTracker = _gat._getTracker("' + account + '");\n';

	subTest["ga"] =		'gwoTracker._setDomainName("' + trackingSubDomain + '");\n'
	subGoal["ga"] = 	'gwoTracker._setDomainName("' + conversionSubDomain + '");\n'
	multiHash["ga"] =	'gwoTracker._setAllowHash(false);\n';
	multiLink["ga"] =	'gwoTracker._setAllowLinker(true);\n';
	multiNone["ga"] = 	'gwoTracker._setDomainName("none");\n';
	
	testCode["ga"] =	'gwoTracker._trackPageview("' + test + '");\n';
	goalCode["ga"] =	'gwoTracker._trackPageview("' + goal + '");\n';
	
	topCode["urchin"] =	'<!-- Google Website Optimizer Tracking Script -->\n' +
				'<script>\n' +
				'if(typeof(urchinTracker)!=\'function\')document.write(\'<sc\'+\'ript src="\'+\n' +
				'\'http\'+(document.location.protocol==\'https:\'?\'s://ssl\':\'://www\')+\n' +
				'\'.google-analytics.com/urchin.js\'+\'"></sc\'+\'ript>\')\n' +
				'</script>\n' +
				'<script type="text/javascript">\n' +
			'try {\n' +
				'_uacct = "' + account + '";\n';

	subTest["urchin"] = 	'_udn = "' + trackingSubDomain + '";\n';
	subGoal["urchin"] = 	'_udn = "' + conversionSubDomain + '";\n';
	multiHash["urchin"] = 	'_uhash = "off";\n';
	multiLink["urchin"] =	'_ulink = 1;\n';
	multiNone["urchin"] = 	'_udn = "none";\n';

	testCode["urchin"] =	'urchinTracker("' + test + '");\n';
	goalCode["urchin"] = 	'urchinTracker("' + goal + '");\n';

	endCode = 		'} catch (err) { }\n' +				// This is the same for urchin.j and ga.js
				'</script>\n' + 
				'<!-- End of Google Website Optimizer Tracking Script -->';

	function updateCodeGWO(version) {						// This function updates all the code
		
		if(version) {							// version exists when switching between urchin.js and ga.js
			if(version == "urchin") {
				gaButton.className = "ga";
				gaButton.value = "Revert to urchin.js code";
			} else {
				gaButton.className = "urchin";
				gaButton.value = "Switch to ga.js code";
			}
		}
		version = gaButton.className;

		if(multiButton.checked && !subButton.checked) {			// handle "none" style
			noneButton.disabled = false;
			noneText.style.color = "";
		} else {
			noneButton.disabled = true;
			noneText.style.color = "#CCC";
		}

		if(subButton.checked || multiButton.checked) {			// Modify control script based on checkbox changes
			codeControl.value = 	controlComment + 
							'<script>\n' +
							(subButton.checked ? subTest["urchin"] : '') +
							(multiButton.checked ? 
							(noneButton.checked && !noneButton.disabled ? multiNone["urchin"] : multiHash["urchin"]) : 
							'') +
							'</script>\n' +
							oldControl;
		} else {
			codeControl.value = controlComment + oldControl;
		}
	
		for(i=0;i<numTracks;i++) {
			codeTracking[i].value = 	topCode[version] +		// Modify tracking script(s)
						 	(subButton.checked ? subTest[version] : '') +
							(multiButton.checked ? 
							(noneButton.checked && !noneButton.disabled ? multiNone[version] : multiHash[version]) +
							multiLink[version] : '') +
							testCode[version] + 
							endCode;
		}	
		codeConversion.value = 		topCode[version] +		// Modify conversion script
					 	(subButton.checked ? subGoal[version] : '') +
						(multiButton.checked ? 
						(noneButton.checked && !noneButton.disabled ? multiNone[version] : multiHash[version]) +
						multiLink[version] : '') +
						goalCode[version] + 
						endCode;
		codeConversion.value = codeConversion.value.replace(/ Tracking Script /g," Conversion Script ");
	}

	function modifyHelp() {							// Modify tooltip for "none" style
		loadDiv = document.getElementById("helpDiv");
		if(loadDiv && loadDiv.innerHTML.match('<br')) {
			loadDiv.innerHTML = 	'<div id="placeHolder"></div>Select this box if your Google Analytics Tracking Code uses the ' +
						'traditional _udn = "none" or pageTracker._setDomainNone("none"); ' +
						'in order to track across domains.';
			document.removeEventListener("DOMNodeInserted", modifyHelp, false);
		}
	}	
	
	firstCodeSection = document.getElementById('code_section_testpage');	// This block adds button to switch code between
	var tables = firstCodeSection.getElementsByTagName('table');		// urchin.js and ga.js
	i = 0;
	while(i<tables.length && !tables[i].innerHTML.match("View a sample source code")) {
		i++;
	}
	
	document.styleSheets[0].insertRule('.admin_toggle_option_on { background-color:#666666; border:1px solid #666666; color:#FFFFFF; cursor:default; font-size:135%; font-weight:bold; padding:5px 7px; text-decoration:none; outline-color:-moz-use-text-color; outline-style:none; outline-width:medium; }', 0);
	document.styleSheets[0].insertRule('.admin_toggle_option_off { background-color:#F7F7F7; border:1px solid #CCCCCC; color:#005FA3; font-size:135%; font-weight:bold; padding:5px 7px; outline-color:-moz-use-text-color; outline-style:none; outline-width:medium;}', 0);
	
	var controlSection = document.getElementById('control_section');
	var gaButton = document.createElement('div');
	gaButton.className = "urchin";
	gaButton.innerHTML = '<br><script type="text/javascript">function showCode(index) { var links = [ document.getElementById("new_tracking"), document.getElementById("old_tracking") ]; for (var i = 0; i < links.length; i++) { var thisLink = links[i]; if (i == index) { thisLink.className = "admin_toggle_option_on"; } else { thisLink.className = "admin_toggle_option_off"; } } } ' + (accountResults[3] ? 'showCode(0); ' : '') + '</script><div class="admin_section_option">&nbsp;<a href="#" id="new_tracking" class="admin_toggle_option_on" onclick="showCode(0); return false;">New Tracking Code (ga.js)</a><a href="#" id="old_tracking" class="admin_toggle_option_off" onclick="showCode(1); return false;">Legacy Tracking Code (urchin.js)</a></div><br>';
	controlSection.parentNode.insertBefore(gaButton, controlSection);
	document.getElementById('new_tracking').addEventListener("click", function() { updateCodeGWO("urchin"); }, false);

	document.getElementById('old_tracking').addEventListener("click", function() { updateCodeGWO("ga"); }, false);		

	var subButton = document.createElement('input');			// This block adds the subdomain checkbox
	subButton.type = "checkbox";
	subButton.addEventListener("click", function() { updateCodeGWO(); }, false);
	gaButton.appendChild(subButton);
	subText = document.createTextNode('Do you have subdomains?');
	gaButton.appendChild(subText);
	
	var multiButton = document.createElement('input');			// This block adds the multiple domain checkbox
	multiButton.type = "checkbox";
	multiButton.addEventListener("click", function() { updateCodeGWO(); }, false);
	gaButton.appendChild(multiButton);
	multiText = document.createTextNode('Do you have multiple domains?');
	gaButton.appendChild(multiText);
	
	var noneButton = document.createElement('input');			// This block adds the domain "none" checkbox
	noneButton.type = "checkbox";
	noneButton.addEventListener("click", function() { updateCodeGWO(); }, false);
	noneButton.disabled = true;
	gaButton.appendChild(noneButton);
	noneText = document.createElement('span');
	noneText.innerHTML = '"none" style?';
	noneText.style.color = "#CCC";
	gaButton.appendChild(noneText);
	
	var helpCell = document.createElement('span');				// This block adds the tooltip for "none" style
	helpCell.innerHTML = '<span onmouseover="GWO_tooltipOnMouseover(\'helpImg\', \'true\');GWO_tooltipLoader.loadContent(\'71362&amp;hl=en\',\'helpDiv\',\'helpSpan\');" onmouseout="GWO_tooltipOnMouseover(\'helpImg\', \'false\');GWO_tooltipLoader.hideContent(\'helpDiv\');" id="helpSpan" padding="0" border="0" onclick="GWO_tooltipOnMouseover(\'helpImg\', \'true\');GWO_tooltipLoader.loadContentDelayed(\'71362&amp;hl=en\',\'helpDiv\',\'helpSpan\');"><img height="14" border="0" width="13" id="helpImg" alt="Help" title="" class="tooltipImage" src="images/icon_question_mark.gif"/></span>';
	gaButton.appendChild(helpCell);
	var tooltipTable = document.createElement('table');
	tooltipTable.innerHTML = '<div id="helpDiv" class="tooltipPopup" align="ltr" onmouseover="GWO_tooltipOnMouseover(\'helpImg\', \'true\');GWO_tooltipLoader.loadContent(\'71362&hl=en\',\'helpDiv\',\'helpSpan\');" onmouseout="GWO_tooltipOnMouseover(\'helpImg\', \'false\');GWO_tooltipLoader.hideContent(\'helpDiv\');" style="display: block; visibility: hidden; left: 890px; top: 412px;"></div>';
	document.body.appendChild(tooltipTable);
	document.addEventListener("DOMNodeInserted", modifyHelp, false);
	updateCodeGWO("urchin");
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


function sortNumber(a,b) {
	a = a.replace(/,/g,"");
	a = a.replace("$","");
	a = a.substring(0,a.indexOf("&"));
	b = b.replace(/,/g,"");
	b = b.replace("$","");
	b = b.substring(0,b.indexOf("&"));
	return a - b;
}

function charOrdA(a, b) {
	a = a.toLowerCase(); 
	b = b.toLowerCase();
	if(a > b) { 
		return 1;
	} else if(a < b) {
		return -1;
	} else { 
		return 0; 
	}
}

function charOrdD(a, b) {
	a = a.toLowerCase(); 
	b = b.toLowerCase();
	if(a < b) { 
		return 1;
	} else if(a >b) { 
		return -1;
	} else {
		return 0; 
	}
}

function Sorting(colu, direc, advanced) {
	var 	dogs = document.getElementById("f_cell_0_0"),
		ecount = 0, 
		fcell = "", 
		frow = new Array(),
		rowings = 1, 
		cats, 
		trueList = new Array(),
		td1 = new Array(),
		newElement,
		golf,
		numCols = 100,
		msg = document.getElementById("f_message"); 
	if (!advanced) {
		colu = colu.substring(9);
		direc = direc.substring(0,4) !== "sort" ? "sort asc" : direc.substring(0, 8);
		while (dogs) {
			td1[ecount] = dogs.parentNode.firstChild.nextSibling.nextSibling.nextSibling.innerHTML;
			fcell = dogs.innerHTML;
			for(rowings=1;rowings<numCols;rowings++){
				cats = document.getElementById("f_cell_" + ecount + "_" + rowings);
				if(cats) {
					fcell+=";" + cats.innerHTML;
				} else {
					fcell+=";";
				}
			}
			frow[ecount]=fcell;
			trueList[ecount]=document.getElementById("f_cell_" + ecount + "_" + colu).innerHTML + "&" + ecount;
			ecount++; 
			dogs = document.getElementById("f_cell_" + ecount + "_0"); 
		}
		if(trueList[0].indexOf(":")>-1) {
			trueList=trueList.sort();
		} else {
			trueList=trueList.sort(sortNumber);
		}
		for(listing=0;listing<ecount;listing++) { 
			abner = direc === "sort asc" ? trueList[ecount - listing - 1] : trueList[listing];
			beanpole = abner.substring(abner.indexOf("&")+1);
			document.getElementById("f_cell_" + listing + "_0").parentNode.firstChild.nextSibling.nextSibling.nextSibling.innerHTML = td1[beanpole];
			frows=frow[beanpole].split(";");
			for(rowing=0;rowing<numCols;rowing++) { 
				hair = document.getElementById("f_cell_" + listing + "_" + rowing); 
				if(hair) {
					hair.setAttribute("class","");	
					hair.innerHTML = frows[rowing];	
				}
			} 
			document.getElementById("f_cell_" + listing + "_" + colu).setAttribute("class","sort"); 
		} 
		for(rowing=0;rowing<numCols;rowing++) { 
			golf = document.getElementById("f_column_" + rowing);
			if(golf) {
				golf.setAttribute("class","");
			}
		}
		newElement = document.getElementById("f_column_" + colu);
		if(direc === "sort asc") {
			newElement.setAttribute("class","sort");
		} else {
			newElement.setAttribute("class","sort asc");
		}
	}	
	function removeErrorMessage() {
		if(msg.style.display === "block") {
			msg.style.display = "none";
			msg.removeEventListener("DOMAttrModified", removeErrorMessage, false);
		}
	}
	msg.addEventListener("DOMAttrModified", removeErrorMessage, false);
}

function getStateTotals() {
	var state_pop = {
		"California": 36961664,
		"Florida": 18537969,
		"New York": 19541453,
		"North Carolina": 9380884,
		"Texas": 24782302,
		"Illinois": 12910409,
		"Massachusetts": 6593587,
		"Virginia": 7882590,
		"Georgia": 9829211,
		"Ohio": 11542645,
		"Pennsylvania": 12604767,
		"Washington": 6664195,
		"New Jersey": 8707739,
		"Colorado": 5024748,
		"Michigan": 9969727,
		"Tennessee": 6296254,
		"Minnesota": 5266214,
		"Maryland": 5699478,
		"Arizona": 6595778,
		"Connecticut": 3518288,
		"Oregon": 3825657,
		"Wisconsin": 5654774,
		"Missouri": 5987580,
		"Utah": 2784572,
		"District of Columbia": 599657,
		"South Carolina": 4561242,
		"Indiana": 6423113,
		"Kentucky": 4314113,
		"Nevada": 2643085,
		"Iowa": 3007856,
		"Oklahoma": 3687050,
		"New Hampshire": 1324575,
		"Kansas": 2818747,
		"Louisiana": 4492076,
		"Idaho": 1545801,
		"Rhode Island": 1053209,
		"Alabama": 4708708,
		"New Mexico": 2009671,
		"Maine": 1318301,
		"Nebraska": 1796619,
		"Mississippi": 2951996,
		"Vermont": 621760,
		"Arkansas": 2889450,
		"Hawaii": 1295178,
		"Delaware": 885122,
		"Montana": 974989,
		"North Dakota": 646844,
		"West Virginia": 1819777,
		"South Dakota": 812383,
		"Alaska": 698473,
		"Wyoming": 544270,
		"(not set)": 0
	},
		statePop,
		stateRegex;
	
	function doStatePopularity() {
		var passing = [], 
			mango, 
			king, 
			ecount = 0, 
			apple = document.getElementById("f_column_0"),
			banana,
			olds,
			newt,
			aver,
			dogs,
			jumping,
			newElement,
			newCell, 
			nope,
			pageViews = [],
			uniques = [],
			numSpans,
			colNum = 60,
			pageVisitHeader = document.getElementById("f_column_0") && document.getElementById("f_column_0").nextSibling,
			pageVisitCell,
			upOrDown,
			advanced = 0,
			i,
			tdDog = "",
			newDog,
			newClass = "",
			previous = 0,
			detailButton = document.getElementById("ZoomMenuControl_button");

		nope = document.getElementById("f_column_" + colNum)
		if (apple) {  
			banana=apple.innerHTML; 
			if (banana.match("Visits") && detailButton && detailButton.innerHTML.indexOf("Region") !== -1 && !nope) {
				if (!document.getElementById("NormalScore")) {
					olds = document.getElementById("f_scorecard_0");
					olds = olds.getElementsByTagName("td");
					newt = olds[0].cloneNode(true);
					newt.setAttribute("id","NormalScore");
					helping = newt.getElementsByTagName("div")[0];
					helping.innerHTML = helping.innerHTML.replace(/_0_0/g,"_0_" + colNum).replace("Visits","State Popularity");
					helping.getElementsByTagName("dd")[0].innerHTML = " The number of visits, normalized by state population ";
					newt.getElementsByTagName("span")[0].innerHTML = " State Popularity ";
					numSpans = olds[0].getElementsByTagName("span").length;
					
					try {
						if (document.getElementsByClassName("date_comparison")[0].innerHTML.indexOf("Previous") > -1) {
							previous = 1;
						}
					} catch (e) {}
						
					if (newt.getElementsByTagName("span")[2] && newt.getElementsByTagName("span")[2].className !== "comparison_value segments") {
						if (previous) {
							advanced = Math.max(4, numSpans);
						}
					} else {
						advanced = Math.max(4, numSpans);
					}
					olds[0].parentNode.insertBefore(newt,olds[1]);
				} else {
					olds = document.getElementById("f_scorecard_0").getElementsByTagName("td")[2].getElementsByTagName("span");
					if (!olds[1] || olds[1].className === "comparison_value segments") {
						advanced = Math.max(4, olds.length);
					}
				}
				newElement = document.createElement("th"); 
				newElement.setAttribute("id", "f_column_" + colNum); 
				newElement.innerHTML = '<div class="column_header"> State Popularity </div>';
				newElement.firstChild.addEventListener("click", function() { Sorting(newElement.id, newElement.className, advanced); }, false);  
				newElement.addEventListener("mouseover", function() { newElement.className = newElement.className + " goog-control-hover" }, false);
				newElement.addEventListener("mouseout", function() { newElement.className = newElement.className.replace(" goog-control-hover",""); }, false);
				pageVisitHeader.parentNode.insertBefore(newElement, pageVisitHeader); 
				
				goalSC = document.getElementById("f_scorecard_1");
				if (goalSC) {
					newElement = document.createElement("td");
					goalSC.insertBefore(newElement, goalSC.firstChild.nextSibling);
				}
				
				ecount = 0;
				i = 0;
				dogs = document.getElementById("f_cell" + (advanced ? "_0" : "") + "_0_0")
				
				if (advanced && !dogs) {
					advanced = 0;
					dogs = document.getElementById("f_cell_0_0");
				}
				
				pageVisitCell = document.getElementById("f_cell" + (advanced ? "_0" : "") + "_0_1"); 
		
				while (dogs) { 
					newClass = "";
					if(dogs.innerHTML === " ") {
						mango = " ";
					} else {
						jumping = document.getElementById("f_primary_segment" + ecount ).title; 
						if(!tdDog && i > 2) {
							if (previous) {
								upOrDown = (passing[2] > 0 ? (100 * (passing[1] - passing[2])) / passing[2] : passing[1] > 0 ? 100 : 0).toFixed(2);
							} else {
								upOrDown = (passing[1] > 0 ? (100 * passing[2]) / passing[1] : 0).toFixed(2);	
							}
							if(upOrDown < 0) { 
								newClass = "negative_comparison";
							} else if (upOrDown==0) {
								newClass = "neutral_comparison";
							} else {	
								newClass = "positive_comparison";
							}
							mango = upOrDown + "%";  						
						} else {
							jumping = state_pop[jumping];
							hopping = dogs.innerHTML.replace(/,/g,"");
							passing[i] = jumping ? hopping * visit_total[i] / jumping / state_total[i] : 0;
							mango = addCommas(passing[i].toFixed(0));
						} 
					}
					newCell = document.createElement("td"); 
					newCell.setAttribute("id", "f_cell_" + (advanced ? i + "_" : "") + ecount + "_" + colNum); 
					newCell.setAttribute("class", newClass); 
					newCell.innerHTML = mango;
					pageVisitCell.parentNode.insertBefore(newCell, pageVisitCell); 
					i++;
					if (i >= advanced) {
						i = 0;
						ecount++; 
					}
					newDog = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + ecount + "_0");
					if (i > 1 && !newDog) {
						tdDog = dogs.parentNode.nextSibling.nextSibling.getElementsByTagName("td");
						dogs = tdDog[2];
						pageVisitCell = tdDog[3]
					} else {
						dogs = newDog;
						pageVisitCell = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + ecount + "_1");  
						tdDog = "";
					}
				}
			}
		}
	}
	currentURL = document.getElementById("currentURL").getAttribute("currenturl");
	scriptUpdated = document.getElementById("currentURL").getAttribute("scriptupdated");
	
	if (state_total[0] && !scriptUpdated) {
		//doStatePopularity();
	} else {
		for (i = 0; i < 6; i += 1) {
			state_total[i] = 0;
			visit_total[i] = 0;
		}
		document.getElementById("currentURL").setAttribute("scriptupdated", false);
	
		GM_xmlhttpRequest({
			method: 'GET',
			url: currentURL,
			headers: {
				'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
				'Accept': 'application/atom+xml,application/xml,text/xml',
			},
			onload: function(responseDetails) {
				olddata = responseDetails.responseText;
				stateRegex = /title="([^"]*)".*?<td.*?> ([^<]*) </g;
				stateNames = stateRegex.exec(olddata);
				while (stateNames) {
					stateTotal = stateNames[2].replace(/,/g,"") * 1;
					statePop = state_pop[stateNames[1]];
					if (!isNaN(stateTotal) && stateNames[2] !== " " && statePop) {
						visit_total[0] += stateTotal;
						state_total[0] += stateTotal / state_pop[stateNames[1]];
						stateNames = stateRegex.exec(olddata);
					} else if (statePop && stateNames[2] === " ") {
						i = 1;
						stateNames = stateRegex.exec(olddata)
						while (stateNames && !state_pop[stateNames[1]]) {
							stateTotal = stateNames[2].replace(/,/g,"") * 1;
							if (!isNaN(stateTotal)) {
								visit_total[i] += stateTotal;	
								state_total[i] += stateTotal / statePop;
								i += 1;
							}
							stateNames = stateRegex.exec(olddata);
						} 
					} else {
						stateNames = stateRegex.exec(olddata);
					}
				}
				doStatePopularity();
			}
		});
	}
}

function doRefreshRate() {
	var passing = [], 
	    mango, 
	    king, 
	    ecount = 0, 
	    apple = document.getElementById("f_column_0"),
	    banana,
	    olds,
	    newt,
	    aver,
	    dogs,
	    jumping,
	    newElement,
	    newCell, 
	    nope,
	    pageViews = [],
	    uniques = [],
   	    numSpans,
	    colNum = 10,
	    avgTimeHeader = document.getElementById("f_column_2"),
	    avgTimeCell,
	    upOrDown,
	    advanced = 0,
	    i,
	    tdDog = "",
	    newDog,
	    newClass = "",
	    previous = 0; 	
	
	nope = document.getElementById("f_column_" + colNum)
	if (apple) {  
		banana=apple.innerHTML; 
		if (banana.match("Pageviews") && !nope) {
			if (!document.getElementById("RefreshScore")) {
				olds = document.getElementById("f_scorecard_0");
				olds = olds.getElementsByTagName("td");
				newt = olds[2].cloneNode(true);
				newt.setAttribute("id","RefreshScore");
				helping = newt.getElementsByTagName("div")[0];
				helping.innerHTML = helping.innerHTML.replace(/_0_3/g,"_0_" + colNum).replace("Avg. Time on Page","Refresh Rate");
				helping.getElementsByTagName("dd")[0].innerHTML = " The average number of times a given page is viewed during each visit. ";
				newt.getElementsByTagName("span")[0].innerHTML = " RefreshRate ";
				numSpans = olds[0].getElementsByTagName("span").length;
				for (i = 1 ; i < numSpans; i++) {
					pageViews[i] = olds[0].getElementsByTagName("span")[i].innerHTML.replace(/,/g,"");
					uniques[i] = olds[1].getElementsByTagName("span")[i].innerHTML.replace(/,/g,"");
					if (pageViews[i].indexOf("%") > -1) {
						pageViews[i] = 100 * pageViews[i - 1] / pageViews[i].substring(0,pageViews[i].indexOf("%"));
						uniques[i] = 100 * uniques[i - 1] / uniques[i].substring(0,uniques[i].indexOf("%"));
					}
				}
				for(aver = 1; aver < numSpans; aver ++) {
					passing[aver] = (pageViews[aver] / uniques[aver]);
					newt.getElementsByTagName("span")[aver].innerHTML = addCommas(passing[aver].toFixed(2));
				}
				
				try {
					if (document.getElementsByClassName("date_comparison")[0].innerHTML.indexOf("Previous") > -1) {
						previous = 1;
					}
				} catch (e) {}
					
				if (newt.getElementsByTagName("span")[3] && newt.getElementsByTagName("span")[3].className !== "comparison_value segments") {
					if (previous) {
						advanced = Math.max(4, numSpans);
					}
					upOrDown = (100 * (passing[1] - passing[2]) / passing[2]).toFixed(2);
					if(upOrDown < 0) { 
						newt.getElementsByTagName("span")[3].setAttribute("class","negative_comparison");
					} else if (upOrDown==0) {
						newt.getElementsByTagName("span")[3].setAttribute("class","neutral_comparison");
					} else {	
						newt.getElementsByTagName("span")[3].setAttribute("class","positive_comparison");
					}
					newt.getElementsByTagName("span")[3].innerHTML = " (" + upOrDown + "%) ";  
				} else {
					advanced = Math.max(4, numSpans);
				}
				olds[0].parentNode.insertBefore(newt,olds[2]);
			} else {
				olds = document.getElementById("f_scorecard_0").getElementsByTagName("td")[2].getElementsByTagName("span");
				if (!olds[3] || olds[3].className === "comparison_value segments") {
					advanced = Math.max(4, olds.length);
				}
			}
			newElement = document.createElement("th"); 
			newElement.setAttribute("id", "f_column_" + colNum);
			newElement.innerHTML = '<div class="column_header"> Refresh Rate </div>';
			newElement.firstChild.addEventListener("click", function() { Sorting(newElement.id, newElement.className, advanced); }, false);  
			newElement.addEventListener("mouseover", function() { newElement.className = newElement.className + " goog-control-hover" }, false);
			newElement.addEventListener("mouseout", function() { newElement.className = newElement.className.replace(" goog-control-hover",""); }, false);
			avgTimeHeader.parentNode.insertBefore(newElement, avgTimeHeader); 
			i = 0;
			
			dogs = document.getElementById("f_cell" + (advanced ? "_0" : "") + "_0_0");
			
			if (advanced && !dogs) {
				advanced = 0;
				dogs = document.getElementById("f_cell_0_0");
			}
			
			avgTimeCell = document.getElementById("f_cell" + (advanced ? "_0" : "") + "_0_2"); 	
			
			
			while (dogs) { 
				newClass = "";
				if(dogs.innerHTML === " ") {
					mango = " ";
				} else {
					if(tdDog) {
						jumping = tdDog[3].innerHTML;
					} else {
						jumping = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + ecount + "_1").innerHTML; 
					}
					if(!tdDog && i > 2) {
						if (previous) {
							upOrDown = (passing[2] > 0 ? (100 * (passing[1] - passing[2])) / passing[2] : passing[1] > 0 ? 100 : 0).toFixed(2);
						} else {
							upOrDown = (passing[1] > 0 ? (100 * passing[2]) / passing[1] : 0).toFixed(2);	
						}
						if(upOrDown < 0) { 
							newClass = "negative_comparison";
						} else if (upOrDown==0) {
							newClass = "neutral_comparison";
						} else {	
							newClass = "positive_comparison";
						}
						mango = upOrDown + "%";  						
					} else {
						jumping = jumping.replace(/,/g,"");
						hopping = dogs.innerHTML.replace(/,/g,"");
						passing[i] = jumping > 0 ? hopping / jumping : 0;
						mango = addCommas(passing[i].toFixed(2));
					} 
				}
				newCell = document.createElement("td"); 
				newCell.setAttribute("id", "f_cell_" + (advanced ? i + "_" : "") + ecount + "_" + colNum); 
				newCell.setAttribute("class", newClass); 
				newCell.innerHTML = mango;
				avgTimeCell.parentNode.insertBefore(newCell, avgTimeCell); 
				i++;
				if (i >= advanced) {
					i = 0;
					ecount++; 
				}
				newDog = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + ecount + "_0");
				if (i > 1 && !newDog) {
					tdDog = dogs.parentNode.nextSibling.nextSibling.getElementsByTagName("td");
					dogs = tdDog[2];
					avgTimeCell = tdDog[4]
				} else {
					dogs = newDog;
					avgTimeCell = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + ecount + "_2");  
					tdDog = "";
				}
			}
		}
	}
}

function doEntrances() {
	var passing = [],
            mango, 
	    ecount = 0,
            advanced, 
	    newDog, 
	    tdDog, 
	    newClass, 
	    pageViews = [],
            exitRate = [],
            i, 
	    numSpans, 
	    apple = document.getElementById("f_column_0"),
            newElement, 
	    newCell, 
	    numCols = 10,
            nope, 
	    newtVisit = new Array();
	    previous = 0;
        
	apple = document.getElementById("f_column_0");
        nope = document.getElementById("f_column_" + numCols);
	if(apple) {  
		banana=apple.innerHTML; 
		if(banana.match("Pageviews") && !nope) {
			if(!document.getElementById("EntranceScore")) {
				olds = document.getElementById("f_scorecard_0");
				olds = olds.getElementsByTagName("td");
				newt = olds[0].cloneNode(true);
				newt.setAttribute("id","EntranceScore");
				helping = newt.getElementsByTagName("div")[1];
				helping.innerHTML = helping.innerHTML.replace(/_0/g,"_" + numCols).replace("Pageviews","Approximate Visits");
				helping.getElementsByTagName("dd")[0].innerHTML = " The approximate number of visits to your site. ";
				newt.getElementsByTagName("span")[0].innerHTML = " Approximate Visits ";
				numSpans = olds[0].getElementsByTagName("span").length;
				advanced = Math.round(4, numSpans);
				try {
					if (document.getElementsByClassName("date_comparison")[0].innerHTML.indexOf("Previous") > -1) {
						previous = 1;
					}
				} catch (e) {}
				for (i = 1 ; i < numSpans; i++) {
					pageViews[i] = olds[0].getElementsByTagName("span")[i].innerHTML.replace(/,/g,"");
					exitRate[i] = olds[4].getElementsByTagName("span")[i].innerHTML.indexOf("%") / 100;
					if (pageViews[i].indexOf("%") > -1) {
						pageViews[i] = 100 * pageViews[i - 1] / pageViews[i].substring(0,pageViews[i].indexOf("%"));
						if (!previous) {
							advanced = 0;
						}
					}
				}
				for(aver = 1; aver < numSpans; aver ++) {
					passing[aver] = pageViews[aver] * exitRate[aver]
					if (aver === 3 && previous) {
						mango = (passing[2] === 0 ? 0 : 100 * (passing[1].toFixed(0) - passing[2].toFixed(0)) / passing[2].toFixed(0)).toFixed(2);
						if (mango > 0) {
							newt.getElementsByTagName("span")[aver].className = "positive_comparison";													
						} else if (mango < 0) {
							newt.getElementsByTagName("span")[aver].className = "negative_comparison";
						} else {
							newt.getElementsByTagName("span")[aver].className = "neutral_comparison";
						}
						mango = "(" + mango + "%)";
					} else if (advanced || aver == 1) {
						mango = addCommas(Math.round(passing[aver]));
					} else {
						mango = " " + (100 * passing[1] / passing[2]).toFixed(2) + "%";
					}
					newt.getElementsByTagName("span")[aver].innerHTML = mango;
				}
				olds[0].parentNode.insertBefore(newt,olds[0]);
			} else { 
				olds = document.getElementById("f_scorecard_0").getElementsByTagName("td")[0].getElementsByTagName("span");
				if (olds[2].innerHTML.indexOf("%") > -1) {
					advanced = 0;
				} else {
					advanced = Math.max(olds.length, 4);
				}
			}
			newElement = document.createElement("th"); 
			newElement.setAttribute("class", ""); 
			newElement.setAttribute("id", "f_column_" + numCols); 
			newElement.innerHTML = '<div class="column_header"> Approximate Visits </div>';
			newElement.addEventListener("click", function() { Sorting(this.id, this.className, advanced); }, false);
			newElement.addEventListener("mouseover", function() { newElement.className = newElement.className + " goog-control-hover" }, false);
			newElement.addEventListener("mouseout", function() { newElement.className = newElement.className.replace(" goog-control-hover",""); }, false);
			  
			apple.parentNode.insertBefore(newElement, apple); 
			i = 0;
			dogs = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + "0_0");
			
			if (advanced && !dogs) {
				advanced = 0;
				dogs = document.getElementById("f_cell_0_0");
			}
 	
			while (dogs) {
				newClass = "";
				if(dogs.innerHTML === " ") {
					mango = " ";
				} else {
					if(tdDog) {
						jumping = tdDog[6].innerHTML;
					} else {
						jumping = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + ecount + "_4").innerHTML; 
					}
					if(!tdDog && i > 2) {
						if (previous) {
							upOrDown = (passing[2] > 0 ? (100 * (passing[1] - passing[2])) / passing[2] : passing[1] > 0 ? 100 : 0).toFixed(2);
						} else {
							upOrDown = (passing[1] > 0 ? (100 * passing[2]) / passing[1] : 0).toFixed(2);	
						}
						if(upOrDown < 0) { 
							newClass = "negative_comparison";
						} else if (upOrDown==0) {
							newClass = "neutral_comparison";
						} else {	
							newClass = "positive_comparison";
						}
						mango = upOrDown + "%";  						
					} else {
						jumping = jumping.substring(0,jumping.indexOf("%")) / 100;
						hopping = dogs.innerHTML.replace(/,/g,"");
						passing[i] = Math.round(hopping * jumping)
						mango = addCommas(passing[i]);
					}
				}
				newCell = document.createElement("td"); 
				newCell.setAttribute("id", "f_cell_" + ecount + "_" + numCols); 
				newCell.setAttribute("class", newClass); 
				newCell.innerHTML = mango;
				dogs.parentNode.insertBefore(newCell, dogs); 
				i++;
				if (i >= advanced) {
					i = 0;
					ecount++; 
				}
				newDog = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + ecount + "_0");
				if (i > 1 && !newDog) {
					tdDog = dogs.parentNode.nextSibling.nextSibling.getElementsByTagName("td");
					dogs = tdDog[2];
				} else {
					dogs = newDog;
					tdDog = "";
				}
		 	}
		}
	}
}

function doGoals() {
	var visits = [], 
	    convRate = [], 
	    i, numSpans, 
	    symRegex, 
	    symSplit, 
	    upOrDown, 
	    myRegex, 
	    tdDog = "", 
	    newDog, 
	    newClass = "", 
	    advanced, 
	    jumping, 
	    passing = [], 
	    mango, 
	    ecount, 
	    anummy, 
	    numCols = 50, 
	    apple, 
	    firstly = 2, 
	    newElement, 
	    newCell, 
	    newtVisit = new Array(), 
	    th = document.getElementById("f_table_data"),
	    previous = 0,
	    scorecard = document.getElementById("f_scorecard_0");

	if (th) {
		th = th.getElementsByTagName("th");
		nummy = th.length - 1;
		apple = th[nummy];
		anummy = nummy + numCols;
		bnummy = nummy + numCols - 2;
		nope = document.getElementById("f_column_" + anummy); 
		noper = document.getElementById("f_scorecard_1");
		if(nummy > 0 && apple) { 
			banana=apple.innerHTML; 
			if((banana.match("Per Visit Goal Value") || banana.match("Per Search Goal Value")) && !nope) {
				if(!noper) {
					olds = document.getElementById("f_scorecard_0");
					newt = olds.cloneNode(true);
					newt.id = "f_scorecard_1";
					newts = newt.getElementsByTagName("td");
					numSpans = newts[0].getElementsByTagName("span").length;
					advanced = Math.max(4, numSpans);
					try {
						if (document.getElementsByClassName("date_comparison")[0].innerHTML.indexOf("Previous") > -1) {
							previous = 1;
						}
					} catch (e) {}
					for (i = 1; i < numSpans; i++) {
						visits[i] = newts[0].getElementsByTagName("span")[i].innerHTML.replace(/,/g,"");
						if(visits[i].indexOf("%") > -1) {
							if (!previous) {
								advanced = 0;
							}
							visits[i] = 100 * visits[i - 1] / visits[i].substring(0,visits[i].indexOf("%"));
						}
					}
					newts[0].innerHTML="";
					for (stic=1; stic < newts.length; stic++) { 
						for (i = 1; i < numSpans; i++) {
							convRate[i] = newts[stic].getElementsByTagName("span")[i].innerHTML.replace(/,/g,"");
						}
						for(aver = 1; aver < numSpans; aver ++) {
							doll = "";
							if(aver==1){
								if(stic==newts.length-2) { 
									newts[stic].getElementsByTagName("span")[0].innerHTML = " Goal Conversions";
								} else if(stic==newts.length-1) { 
									newts[stic].getElementsByTagName("span")[0].innerHTML = " Revenue ";
								} else {
									newts[stic].getElementsByTagName("span")[0].innerHTML+= "Conversions ";
								}
							} else if (!advanced) { 							
								if(newts[stic].getElementsByTagName("p")[1]) {
									newts[stic].getElementsByTagName("p")[1].innerHTML=newts[stic].getElementsByTagName("p")[1].innerHTML.replace("Site Avg:","% of Site Total:");
								}
							}
							if(newts[stic].getElementsByTagName("span")[aver]) {
								if(convRate[aver]!=" N/A " && convRate[aver]!= " - ") {
									if (convRate[aver].indexOf("%")>-1) { 
										convRate[aver] = convRate[aver].substring(0,convRate[aver].indexOf("%")) / 100
									}
									else {
										symRegex = RegExp(/^([^0-9]*)(.*)$/)
										symSplit = symRegex.exec(convRate[aver]);
										convRate[aver] = symSplit[2];
										doll = symSplit[1];
									}
									passing[aver] = visits[aver] * convRate[aver];
									if(aver === 2 && !advanced) {
										mango = " " + (passing[2]==0?0:100 * passing[1]/passing[2]).toFixed(2) + "%";
									} else if (aver ===3 && previous) {
										mango = (passing[2] === 0 ? 0 : 100 * (passing[1].toFixed(0) - passing[2].toFixed(0)) / passing[2].toFixed(0)).toFixed(2);
										if (mango > 0) {
											newts[stic].getElementsByTagName("span")[aver].className = "positive_comparison";													
										} else if (mango < 0) {
											newts[stic].getElementsByTagName("span")[aver].className = "negative_comparison";
										} else {
											newts[stic].getElementsByTagName("span")[aver].className = "neutral_comparison";
										}
										mango = "(" + mango + "%)";
									} else {
										mango = doll + addCommas(passing[aver].toFixed(doll ? 2 : 0));
									}
									newts[stic].getElementsByTagName("span")[aver].innerHTML = mango;
									
								}	
							}
						}
						newts[stic].getElementsByTagName("div")[1].innerHTML="";
						if(!advanced && newts[stic].getElementsByTagName("span")[3]) {
							newts[stic].getElementsByTagName("span")[3].innerHTML="";
						}				
					}
					olds.parentNode.insertBefore(newt, olds.nextSibling);
				} else if (scorecard) {
					olds = scorecard.getElementsByTagName("td")[0].getElementsByTagName("span");
					if (olds[2].innerHTML.indexOf("%") > -1) {
						if(!previous) {
							advanced = 0;
						}
					} else {
						advanced = Math.max(olds.length, 4);
					}
				}
				
				while (apple && apple.id != "f_column_0") {
					anummy = nummy + numCols;
					newElement = apple.cloneNode(true); 
					newElement.className = "";
					newElement.setAttribute("id", "f_column_" + anummy); 
					if (firstly==2) {
						pears = "Goal Revenue"
						firstly = 1;
					} else if (firstly==1) {
						pears = "Goal Conversions"
						firstly = 0;
					} else {
						myRegex = new RegExp(/<a[^>]+>([^>]*?)\s?<\/a>/);
						if(!myRegex(apple.innerHTML)) {
							myRegex = new RegExp(/<div[^>]+>([^>]*?)\s?<\/div>/);
						}
						pears = myRegex(apple.innerHTML)[1] + " Conversions";
					}
					newElement.innerHTML = '<div class="column_header"> ' + pears + '</div>';
					newElement.addEventListener("click", function() { Sorting(this.id, this.className, advanced); }, false);  
					newElement.addEventListener("mouseover", function() { newElement.className = newElement.className + " goog-control-hover" }, false);
					newElement.addEventListener("mouseout", function() { newElement.className = newElement.className.replace(" goog-control-hover",""); }, false);
					apple.parentNode.insertBefore(newElement, apple.nextSibling); 
					ecount = 0; 
					i = 0;
					dogs = document.getElementById("f_cell_0_" + (advanced ? i + "_" : "" ) + bnummy); 
					while(!dogs) {
						bnummy--;
						if (bnummy < 0) {
							bnummy = nummy + numCols - 2;
							advanced = advanced ? 0 : Math.max(4, numSpans);
						}
						dogs = document.getElementById("f_cell_0_" + (advanced ? i + "_" : "" ) + bnummy); 
					}
					while (dogs) {
						if(dogs.innerHTML === " ") {
							mango = " ";
						} else {
							doll = "";
							if(tdDog) {
								hopping = tdDog[2].innerHTML.replace(/,/g,"");
							} else {
								hopping = document.getElementById("f_cell_" + (advanced ? i + "_" : "" ) + ecount + "_0").innerHTML.replace(/,/g,""); 
							}
							if (hopping.indexOf("<") > -1) {
								hopping = hopping.substring(0,hopping.indexOf("<")-1);
							}
							jumping = dogs.innerHTML;
							if(jumping!= "-") {
								if(!tdDog && i > 2) {
									if (previous) {
										upOrDown = (passing[2] > 0 ? (100 * (passing[1] - passing[2])) / passing[2] : passing[1] > 0 ? 100 : 0).toFixed(2);
									} else {
										upOrDown = (passing[1] > 0 ? (100 * passing[2]) / passing[1] : 0).toFixed(2);	
									}
									if(upOrDown < 0) { 
										newClass = "negative_comparison";
									} else if (upOrDown==0) {
										newClass = "neutral_comparison";
									} else {	
										newClass = "positive_comparison";
									}
									mango = upOrDown + "%";   						
								} else {
									newClass = "";
									if (jumping.indexOf("%")>-1) {
										jumping = jumping.substring(0,jumping.indexOf("%")) / 100;
									} else {
										symRegex = RegExp(/^([^0-9]*)(.*)$/)
										symSplit = symRegex.exec(jumping);
										jumping = symSplit[2];
										doll = symSplit[1];
									}	
									passing[i] = (hopping * jumping).toFixed(doll ? 2 : 0);
									mango = doll + addCommas(passing[i]);
								}
							} else {
								mango = "-";
							}	
						}	
						newCell = document.createElement("td");
						newCell.setAttribute("id", "f_cell_" + (advanced ? i + "_" : "" ) + ecount + "_" + anummy); 
						newCell.setAttribute("class", newClass); 
						newCell.innerHTML = mango;
						dogs.parentNode.insertBefore(newCell, dogs.nextSibling);
						i++;	
						if (i >= advanced) {
							i = 0;
							ecount++; 
						}
						newDog = document.getElementById("f_cell_" + (advanced ? i + "_" : "" ) + ecount + "_" + bnummy); 
						if (i > 1 && !newDog) {
							tdDog = dogs.parentNode.nextSibling.nextSibling.getElementsByTagName("td");
							dogs = tdDog[bnummy + 2];
						} else {
							dogs = newDog;
							tdDog = "";
						} 
					}
					nummy--;
					bnummy--;
					apple = th[nummy];
				}
			}
		}
	}
}

var dimensionScript = function(text) {
	var that = {},
		addBefore = function (existingAttr, newAttributes) {
			var oldText = '{\\x22key\\x22:\\x22' + existingAttr + '\\x22}',
				newText,
				i;
				
			if (text.indexOf(oldText) === -1) {
				oldText = '{\\x22disabled\\x22:true,\\x22key\\x22:\\x22' + existingAttr + '\\x22}';
			}
			
			for (i = 0; i < newAttributes.length; i += 1) {
				newText = '\\x22key\\x22:\\x22' + newAttributes[i] + '\\x22}';
				if (text.indexOf(newText) === -1) {
					text = text.replace(oldText, '{' + newText + ',' + oldText);
				}
			}
		},
		addAfter = function (existingAttr, newAttributes) {
			var oldText = '{\\x22key\\x22:\\x22' + existingAttr + '\\x22}',
				newText,
				i;
			
			if (text.indexOf(oldText) === -1) {
				oldText = '{\\x22disabled\\x22:true,\\x22key\\x22:\\x22' + existingAttr + '\\x22}';
			}
			
			for (i = newAttributes.length - 1; i >= 0; i -= 1) {
				newText = '\\x22key\\x22:\\x22' + newAttributes[i] + '\\x22}';
				if (text.indexOf(newText) === -1) {
					text = text.replace(oldText, oldText + ',{' + newText);
				}
			}
		},
		addCategory = function (categoryName, addedAttributes) {
			var userDefined = '[{\\x22key\\x22:\\x22user_defined_value\\x22}]}';
			newCategory = '{\\x22name\\x22:\\x22' + categoryName + '\\x22,\\x22dimensions\\x22:[',
				i;
			
			if (text.indexOf(newCategory) === -1) {
				newCategory += '{\\x22key\\x22:\\x22' + addedAttributes[0] + '\\x22}]}';
				text = text.replace(userDefined, userDefined + "," + newCategory);
				addAfter(addedAttributes[0], addedAttributes.slice(1));
			}
		},
		getText = function() {
			return text;
		};
		
	text = text.replace(/"/g,"'");
	that.getText = getText;
	that.addBefore = addBefore;
	that.addAfter = addAfter;
	that.addCategory = addCategory;
	return that;
}

function doSegment() {
	var dimensionDropdown = ["SegmentControl","SegmentDropdown0","SegmentDropdown1","PivotDropdown0","PivotDropdown1"],
		segmentDiv, parentTH, oldSegmentScript, newScript, newSegmentScript, i;

	for (i = 0; i < dimensionDropdown.length; i += 1) {
		try {
			if (!document.getElementById("new" + dimensionDropdown[i] + "Script")) {
				segmentDiv = document.getElementById(dimensionDropdown[i]);
				parentTH = segmentDiv.parentNode;
				oldSegmentScript = parentTH.getElementsByTagName("script")[0];
				newSegmentScript = document.createElement("script");
				newSegmentScript.setAttribute("id", "new" + dimensionDropdown[i] + "Script");
				newSegmentScript.setAttribute("type", "text/javascript");
				newScript = dimensionScript(oldSegmentScript.innerHTML);
				
				newScript.addBefore("source",["source_medium"]);
				newScript.addAfter("keyword", ["referral_path"]);
				newScript.addAfter("region", ["dma"]);
				newScript.addAfter("browser", ["browser_version"]);
				newScript.addAfter("platform", ["platform_version","browser_platform"]);
				newScript.addAfter("request_uri_1", ["request_uri_2","request_uri_last"]);
	
				newScript.addCategory("Products",["product_name","product_code","product_variation","transaction_id"]);
				newScript.addCategory("Search",["internal_search_keyword","internal_search_type"]);
				newScript.addCategory("Time", ["hour","day_of_week","day","nth_day","nth_week","nth_month"]);
				newScript.addCategory("Custom Variable Keys",["custom_variables_key_1","custom_variables_key_2","custom_variables_key_3","custom_variables_key_4","custom_variables_key_5"]);
				newScript.addCategory("Custom Variable Values",["custom_variables_value_1","custom_variables_value_2","custom_variables_value_3","custom_variables_value_4","custom_variables_value_5"]);
				newScript.addCategory("AdWords",["ad_group","content","ad_network_type","match_type","query","content_domain","content_url","creative_ad_format","targeting_type","visible_url","destination_url"]);
				newScript.addAfter("transaction_id",["affiliation"]);
				
				newSegmentScript.innerHTML = newScript.getText();
				parentTH.insertBefore(newSegmentScript, oldSegmentScript.nextSibling);
			}
		} catch (e) {}
	}
}

function doTrueTime() {
	var ice, 
	    grate = false,
	    ecount = 0,
            avgTime = [],
            passing = [],
            bounceRate = [],
            advanced = 0,
            tdDog, 
  	    newDog, 
	    i, 
	    apple = document.getElementById("f_column_2"),
            newElement, 
	    numCols = 30,
            newCell, 
	    nope, 
	    newtVisit = new Array(),
            newtBounce = new Array(),
	    previous = 0,
	    prevVisit = new Array();
	
	nope = document.getElementById("f_column_" + numCols)
	if(apple) {  
		banana=apple.innerHTML; 
		if(banana.match("Avg. Time on Site") && !nope) {
			if(!document.getElementById("TrueTimeScore")) {
				olds = document.getElementById("f_scorecard_0");
				olds = olds.getElementsByTagName("td");
				newt = olds[2].cloneNode(true);
				newt.setAttribute("id","TrueTimeScore");
				helping = newt.getElementsByTagName("div")[0];
				helping.innerHTML = helping.innerHTML.replace(/_0_2/g,"_0_" + numCols).replace("Avg.","True").replace("a visit","a non-bounced visit");
				newt.getElementsByTagName("span")[0].innerHTML = " True Time on Site ";
				numSpans = newt.getElementsByTagName("span").length;
				for (i = 1 ; i < numSpans; i++) {
					avgTime[i] = olds[2].getElementsByTagName("span")[i].innerHTML;
					bounceRate[i] = olds[4].getElementsByTagName("span")[i].innerHTML
					bounceRate[i] = bounceRate[i].substring(0, bounceRate[i].indexOf("%")) / 100;
				}
				for(aver = 1; aver < numSpans; aver ++) {
					hopping = avgTime[aver].split(":");
					ice = Math.round(hopping[2]) + Math.round(hopping[1]) * 60 + Math.round(hopping[0]) * 3600; 
					newtVisit[aver] = ice;
					ice = (bounceRate[aver] ==1 ) ? 0 : Math.round(ice / (1 - bounceRate[aver])); 
					prevVisit[aver] = ice;
					king = Math.floor(ice/3600); 
					ice-=king*3600;
					logs = Math.floor(ice/60);
					ice-=logs*60;
					mango = (king<10?"0":"") + king + ":" + (logs<10?"0":"") + logs + ":" + (ice<10?"0":"") + ice + " ";				
					if(newt.getElementsByTagName("span")[aver].innerHTML!=" &gt; 00:00:00 ") {
						newt.getElementsByTagName("span")[aver].innerHTML = mango;
					} else {
						grate=true;
					}	
				}
				if(grate) {
					newtVisit[1] = (olds[2].getElementsByTagName("span")[3].innerHTML.replace(/\(|\)|%/g,"") / 100 * newtVisit[2] + newtVisit[2]) / (1 - newtBounce[1]);
					ice = Math.round(newtVisit[1]);
					jumping = newtBounce[1];
					ice = (jumping==1)?0:Math.round(ice/(1-jumping)); 
					if(ice>0) {
						king = Math.floor(ice/3600); 
						ice-=king*3600;
						logs = Math.floor(ice/60);
						ice-=logs*60;
						mango = (king<10?"0":"") + king + ":" + (logs<10?"0":"") + logs + ":" + (ice<10?"0":"") + ice + " ";
						newt.getElementsByTagName("span")[1].innerHTML = mango;
					}
					grate=false;	
				}
				
				try {
					if (document.getElementsByClassName("date_comparison")[0].innerHTML.indexOf("Previous") > -1) {
						previous = 1;
					}
				} catch (e) {} 

				if (newt.getElementsByTagName("span")[3] && newt.getElementsByTagName("span")[3].className !== "comparison_value segments") {		
					if (previous) {
						advanced = Math.max(4, numSpans);
						upOrDown = (prevVisit[2] == 0 ? 0 : 100 * (prevVisit[1] - prevVisit[2]) / prevVisit[2]).toFixed(2);
					} else {
						upOrDown = (100 * (newtVisit[1] - newtVisit[2]) / newtVisit[2]).toFixed(2);
					}
					if(upOrDown < 0) { 
						newt.getElementsByTagName("span")[3].setAttribute("class","negative_comparison");
					} else if (upOrDown==0) {
						newt.getElementsByTagName("span")[3].setAttribute("class","neutral_comparison");
					} else {	
						newt.getElementsByTagName("span")[3].setAttribute("class","positive_comparison");
					}
					newt.getElementsByTagName("span")[3].innerHTML = " (" + upOrDown + "%) ";  
				} else {
					advanced = Math.max(4, numSpans);
				}
				olds[2].parentNode.insertBefore(newt,olds[2].nextSibling);
			} else {
				olds = document.getElementById("f_scorecard_0").getElementsByTagName("td")[2].getElementsByTagName("span");
				if (!olds[3] || olds[3].className === "comparison_value segments") {
					advanced = Math.max(4, olds.length);
				}
			}
			newElement = apple.cloneNode(true);
			newElement.setAttribute("id", "f_column_" + numCols); 
			newElement.innerHTML = '<div class="column_header"> True Time On Site </div>';
			newElement.firstChild.addEventListener("click", function() { Sorting(newElement.id, newElement.className, advanced); }, false);  
			newElement.addEventListener("mouseover", function() { newElement.className = newElement.className + " goog-control-hover" }, false);
			newElement.addEventListener("mouseout", function() { newElement.className = newElement.className.replace(" goog-control-hover",""); }, false);
			apple.parentNode.insertBefore(newElement, apple.nextSibling); 
			i = 0;
			dogs = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + "0_2"); 

			if (advanced && !dogs) {
				advanced = 0;
				dogs = document.getElementById("f_cell_0_2");
			}
	
			while (dogs) { 
				newClass = "";
				if(dogs.innerHTML === " ") {
					mango = " ";
				} else if(dogs.innerHTML!="> 00:00:00 ") {
					if(tdDog) {
						jumping = tdDog[6].innerHTML;
					} else {
						jumping = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + ecount + "_4").innerHTML; 
					}
					if(!tdDog && i > 2) {
						if (previous) {
							upOrDown = (passing[2] > 0 ? (100 * (passing[1] - passing[2])) / passing[2] : passing[1] > 0 ? 100 : 0).toFixed(2);
						} else {
							upOrDown = (passing[1] > 0 ? (100 * passing[2]) / passing[1] : 0).toFixed(2);	
						}
						if(upOrDown < 0) { 
							newClass = "negative_comparison";
						} else if (upOrDown==0) {
							newClass = "neutral_comparison";
						} else {	
							newClass = "positive_comparison";
						}
						mango = upOrDown + "%";  						
					} else {
						hopping = dogs.innerHTML.split(":");
						ice = Math.round(hopping[2]) + Math.round(hopping[1]) * 60 + Math.round(hopping[0]) * 3600; 
						jumping = jumping.substring(0, jumping.indexOf("%")) / 100; 
						passing[i] = (jumping == 1) ? 0 : ice / (1 - jumping);
						ice = Math.round(passing[i]);
						king = Math.floor(ice / 3600); 
						ice -= king * 3600;
						logs = Math.floor(ice / 60);
						ice -= logs * 60;
						mango = (king < 10 ? "0" : "") + king + ":" + (logs < 10 ? "0" : "") + logs + ":" + (ice < 10 ? "0" : "") + ice + " ";
					}
				} else {
					mango = dogs.innerHTML;
				}
				newCell = document.createElement("td"); 
				newCell.setAttribute("id", "f_cell_" + (advanced ? i + "_" : "") + ecount + "_" + numCols); 
				newCell.setAttribute("class", newClass); 
				newCell.innerHTML = " " + mango + " ";
				dogs.parentNode.insertBefore(newCell, dogs.nextSibling); 
				i++;
				if (i >= advanced) {
					i = 0;
					ecount++; 
				}
				newDog = document.getElementById("f_cell_" + (advanced ? i + "_" : "") + ecount + "_2");
				if (i > 1 && !newDog) {
					tdDog = dogs.parentNode.nextSibling.nextSibling.getElementsByTagName("td");
					dogs = tdDog[4];
				} else {
					dogs = newDog;
					tdDog = "";
				} 
				
			}
		}
	}
}

function doDefault() {

	var defaultText = "Make Default",
	i, j, k, l,
	segmentDivs = ["profile_custom_adv_seg", "default_segments_toggle"],
	currentDiv,
	actionLink, 
	copyLink,
	copyParent, 
	defaultLink,
	vertTemp,
	vert1,
	accountNum,
	idmatch,
	id,
	femail = document.getElementById("f_email");
		
	idMatch = /id=(\d+)(&|$|#$)/.exec(location.href);

	if (idMatch) {
		id = idMatch[1];
		if (femail) {
			id = femail.innerHTML + id;
		}
	}

	if (!GM_getValue(id + "_segcount")) {
		GM_setValue(id + "_segcount", 0);
	}

	


	for (j = 0; j < segmentDivs.length; j += 1) {
		inserted = document.getElementById("inserted" + j);
		currentDiv = document.getElementById(segmentDivs[j]);
		
		if (currentDiv) {
			
			actionLink = currentDiv.getElementsByClassName("action"); 
			copyLink = currentDiv.getElementsByClassName("profile_asset_action");
			
			if (!inserted) {
				
				if (actionLink && actionLink.length) {
					for (i = 0; i < actionLink.length; i += 1) {
						actionLink[i].id = "inserted" + j;
						actionLink[i].innerHTML += "&nbsp;|&nbsp;" + defaultText;
					}
				}
		
				if (copyLink && copyLink.length) {
		
					vertTemp = document.createElement('div');
					vertTemp.className = "action_spacer";
					vertTemp.innerHTML = '|';
					for (i = 0; i < copyLink.length; i++) {
		
						vert1 = vertTemp.cloneNode(true);
						
						copyParent = copyLink[i].parentNode;
						defaultLink = copyLink[i].cloneNode(true);
		
						accountNum = copyLink[i].innerHTML.match(/'add_segment', &quot;segmentId\\x3d(.*?)&quot;/);
						if(accountNum) {
							accountNum = accountNum[1];
							defaultLink.innerHTML = "<input id = 'seg_" + accountNum + "' name='defaultSegments' type='checkbox'></input>";
							for (k = 0; k < maxSegs; k+= 1) {
								if (GM_getValue(id + "_seg" + k) === defaultLink.firstChild.id) {
									defaultLink.firstChild.checked = true;
								}
							}
							defaultLink.firstChild.addEventListener("change", function () { 
								if (this.checked) {
									if (GM_getValue(id + "_segcount") < maxSegs) { 
										GM_setValue(id + "_seg" + GM_getValue(id + "_segcount"), this.id); 
										GM_setValue(id + "_segcount", GM_getValue(id + "_segcount") + 1); 
									} else {
										this.checked = false;
										alert("You've reached the maximum number of segments");
									}
								} else {
									GM_setValue(id + "_segcount", GM_getValue(id + "_segcount") - 1);
									for (k = 0; k < maxSegs; k += 1) {
										if (GM_getValue(id + "_seg" + k) === this.id) {
									 		for(l = k; l < GM_getValue(id + "_segcount"); l += 1) {
												GM_setValue(id + "_seg" + l, GM_getValue(id + "_seg" + (l * 1 + 1)));
											}
											GM_deleteValue(id + "_seg" + GM_getValue(id + "_segcount"));
										}
									}
								}	
							}, true); 
							copyParent.appendChild(vert1);
							copyParent.appendChild(defaultLink);
						} 
					}
				} else {
					setTimeout(function() { doDefault(); }, 100);
				}
			}
		}
	}
}

function applyDefault() {
	var allLinks = document.getElementsByTagName("a"),
	i,
	id,
	idMatch,
	femail = document.getElementById("f_email"),
	segMatch,
	newHref,
	seg,
	segCount,
	profileForm = document.getElementById("account_profile_selector"),
	profiles = document.getElementById("profile"),
	options,
	newInput;

	if (location.pathname.indexOf("/analytics/settings/") !== -1) {
		for (i = 0; i < allLinks.length; i += 1) {
		newHref = allLinks[i].href
			if (newHref.indexOf("/reporting/") !== -1) {
				idMatch = /id=(\d+)(&|$|#$)/.exec(newHref);
				if (idMatch && newHref.indexOf("seg0=") === -1) {
					id = idMatch[1];
					if (femail) {
						id = femail.innerHTML + id;
					}
					segCount = 0;
					for (j = 0; j < maxSegs; j += 1) {
						seg = GM_getValue(id + "_seg" + j);	
						if (seg) {
							newHref += "&seg" + j + "=" + seg.substring(4);
							segCount += 1;
						}	
					}
					if (segCount > 0) {
						if (segCount > 1) {
							newHref += "&cmp=visit_segments";
						}
						allLinks[i].href = newHref;
					}
				}
			}
		}
	}
	
	

	if (profiles) {
		options = profiles.getElementsByTagName("option");
		if (options.length > 1) {
			profiles.removeAttribute("onchange");
			profiles.addEventListener("change", function defaultDrop() {
				id = profiles.value;
				if (femail) {
					id = femail.innerHTML + id;
				}
				segCount = 0;
				for (j = 0; j < maxSegs; j += 1) {
					seg = GM_getValue(id + "_seg" + j);	
					if (seg) {
						newInput = document.createElement("input");
						newInput.type = "hidden";
						newInput.name = "seg" + j;
						newInput.value = seg.substring(4);
						this.form.appendChild(newInput);	
						segCount += 1;
					}	
				}
				if (segCount > 0) {
					if (segCount > 1) {
						newInput = document.createElement("input");
						newInput.type = "hidden";
						newInput.name = "cmp"
						newInput.value = "visit_segments";
						this.form.appendChild(newInput);
					}
				}
				this.form.submit();
			}, false);	
		}
	}
}

function doProperCase() {
	var i = 0, 
		campaignName, 
		properDone0 = document.getElementById("proper_done0"),
		properDone1 = document.getElementById("proper_done1");
		dropdown0 = document.getElementById("SegmentDropdown0") && document.getElementById("SegmentDropdown0").firstChild.nextSibling.innerHTML,
		dropdown1 = document.getElementById("SegmentDropdown1") && document.getElementById("SegmentDropdown1").firstChild.nextSibling.innerHTML;
	
	if (!properDone0 && dropdown0 === " Campaign " || dropdown0 === " Ad Content ") {
		while (campaignName = document.getElementById("f_primary_segment" + i)) {
			if (i === 0) {
				campaignName.firstChild.nextSibling.id = "proper_done0";
			}
			campaignName.style.textTransform = "capitalize";
			i += 1;
		}
	}
	if (!properDone1 && dropdown1 === " Campaign " || dropdown1 === " Ad Content ") {
		while (campaignName = document.getElementById("f_primary_segment" + i)) {
			if (i === 0) {
				campaignName.parentNode.nextSibling.nextSibling.id = "proper_done1";
			}
			campaignName.parentNode.nextSibling.nextSibling.style.textTransform = "capitalize";
			i += 1;
		}
	}
}

function doTasks() {
	if (lastCount === numInserted) {
		stopped = true;
		clearInterval(interval);
	
		domType = "DOMNodeInserted";
		document.removeEventListener(domType, countInserted, false);
		document.removeEventListener(domType, doTasks, false);
		if(location.pathname.match("^/analytics/reporting/")) {
			if(location.href.match(/\/reporting\/content_detail_(sources|keywords)/)) {
				doEntrances();
			} else {
				doRefreshRate();
			}
			doGoals();
			doTrueTime();
			doSegment();
			getStateTotals();
			doProperCase();
		}
		if (location.href.indexOf("manage_profile_segments") !== -1) {
			doDefault();
		}
		applyDefault();
		document.addEventListener(domType, countInserted, false);
		document.addEventListener(domType, doTasks, false);
	} else {
		lastCount = numInserted;
	}
}

function countInserted() {
	numInserted += 1;
	if (stopped) {
		stopped = false;
		interval = setInterval(doTasks, 100);
	}
}

document.addEventListener(domType, countInserted, false);
document.addEventListener(domType, insertLogo, false);
scriptElement = document.createElement("script");
scriptElement.setAttribute("id","currentURL");
scriptElement.setAttribute("currenturl", currentURL);
scriptElement.setAttribute("scriptupdated", false);
scriptElement.setAttribute("type", "text/javascript");
scriptElement.innerHTML='(function (open) { XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { document.getElementById("currentURL").setAttribute("currenturl", location.protocol + "//" + location.hostname + url.replace(/&trows=[^&]*/,"") + "&trows=100"); document.getElementById("currentURL").setAttribute("scriptupdated", true); open.call(this, method, url, async, user, pass); }; })(XMLHttpRequest.prototype.open);';
document.body.appendChild(scriptElement);



