// *******************************************************************
// Page processing code for analytics
// ------------------------------------------------------------------
// Updated: 08-APR-2010 JAM
//
// *******************************************************************


// Process the categoryID pulled from Global Nav, if necessary
// *******************************************************************
	
	getPageID(currentURL);							// Get core_pageID from URL
	getRoleFromHeader();							// Get role name (string) from header info
	pv_a1 = core_userRole;							// For Explore, assigns this attribute to user's role
	// pv_a2 (user type) value assigned in footer
	// pv_a3 (user ID) value assigned in footer
	// pv_a4 (user Email) value assigned in footer
	pv_a1 = pv_a1 + "-_-" + pv_a2 + "-_-" + pv_a3 + "-_-" + pv_a4;	// For Explore, combine all attributes into one variable

	var getGlobalNav = document.getElementById("navGlobal");
	// Check for no header or header with no id="navGlobal"
	if (getGlobalNav == null) {
		setCategoryID(currentURL);
	}
	
	// Check if a document
	else if (currentURL.indexOf("/Research/Document/") != -1 || currentURL.indexOf("ER/Research/Report/") != -1) {
		setCategoryID(currentURL);
	}
	
	// Check if a JForum topic page
	else if (currentURL.indexOf("/forrforum/") != -1) {
		forrDiscussions();	
	}
	
	// Perform action based on currently selected Global Nav value 
	else {
		var globalNavItem = getGlobalNav.getElementsByTagName("td");
		
		for (i=0; i<globalNavItem.length; i++) {
			if (globalNavItem[i].className.indexOf("current") != -1) {
				core_categoryID = globalNavItem[i].firstChild.innerHTML;
			}
		}
	
		switch (core_categoryID) {
			case "Analysts":
				confirmAnalysts(currentURL,core_pageID,roleName);
				break;
			case "Teleconferences":
				confirmTeleconferences(currentURL,core_pageID);
				break;
			case "Events":
				confirmEvents(currentURL,core_pageID);
				break;
			case "Consumer Data":
				confirmConsumerData(currentURL,core_pageID);
				break;
			case "Business Data":
				confirmBusinessData(currentURL,core_pageID);
				break;
			case "Executive Programs":
				core_categoryID = "ExecutivePrograms";
				cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
				break;
			case "Consulting":
				cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
				break;
			case "About Forrester":
				confirmAboutForrester(currentURL,core_pageID);
				break;
			case "Employee Tools":
				core_categoryID = "EmployeeTools";
				cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
				break;
			default:
				//core_categoryID = null;
				setCategoryID(currentURL);
		}
	}
// *******************************************************************



// Determine pageID from URL
// *******************************************************************
	function getPageID(currentURL) {
		
		if (core_pageID != null) {
		}
		else {
			// If it's the contact form, the pageID is the title of the form
			// since all contact forms are: contact.jsp?id=xxx
			if (currentURL.indexOf("forr/reg/contact.jsp?") != -1) {
				return core_pageID; // value assigned in contactknown.jsp & contactunknown.jsp
			}
			else {
	
				// Default PageID pulled from URL (strips .com domain and parameters)
				var startPageID = (currentURL.indexOf(".com/") + 5);
				var endPageID;
	
				// Strips long URL parameters starting with a "?"
											   
				if (currentURL.indexOf("my/alerts/detail?") != -1 || +
				currentURL.indexOf("My/Bookmarks?") != -1 || +
				currentURL.indexOf("rb/Alert.jsp?") != -1 || +
				currentURL.indexOf("rb/search/results.jsp?") != -1 || +
				currentURL.indexOf("rb/search/preferences.jsp?") != -1 || +
				currentURL.indexOf("findresearch/alert/raOnlypopup?") != -1 || +
				currentURL.indexOf("findresearch/alert/popup?") != -1 || +
				// forrreg files
				currentURL.indexOf("forr/reg/loginreg.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/taxonomy_wizard.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/guestregform.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/tailorrole.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/tailorrole2.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/newsletters.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/regdone.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/campaignlogin.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/getpassword.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/rbwelcome_confirmation.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/Briefings.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/clientactivation.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/contactknown.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/contactunknown.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/Inquiry.jsp?") != -1 || +
				currentURL.indexOf("forr/reg/myprofile.jsp?") != -1 || +
				// Home Pages
				currentURL.indexOf("rb/research?") != -1 || +
				currentURL.indexOf("rb/generalist?") != -1 || +
				currentURL.indexOf("rb/app_dev?") != -1 || +
				currentURL.indexOf("rb/biz_process?") != -1 || +
				currentURL.indexOf("rb/cio?") != -1 || +
				currentURL.indexOf("rb/ea?") != -1 || +
				currentURL.indexOf("rb/ikm?") != -1 || +
				currentURL.indexOf("rb/it_infrastructure?") != -1 || +
				currentURL.indexOf("rb/srm?") != -1 || +
				currentURL.indexOf("rb/svm?") != -1 || +
				currentURL.indexOf("rb/cmr?") != -1 || +
				currentURL.indexOf("rb/cps?") != -1 || +
				currentURL.indexOf("rb/cxp?") != -1 || +
				currentURL.indexOf("rb/dm?") != -1 || +
				currentURL.indexOf("rb/ebiz_channel_strategy?") != -1 || +
				currentURL.indexOf("rb/im?") != -1 || +
				currentURL.indexOf("rb/ml?") != -1 || +
				currentURL.indexOf("rb/ar?") != -1 || +
				currentURL.indexOf("rb/b2bmr?") != -1 || +
				currentURL.indexOf("rb/tech_marketing?") != -1 || +
				currentURL.indexOf("rb/strategy?") != -1) { 
				
					endPageID = currentURL.indexOf("?");
				}
				
				// Strips long URL parameters starting with a ";"
				
				else if (currentURL.indexOf("forr/reg/loginreg.jsp;") != -1 || +
				currentURL.indexOf("forr/reg/Briefings.jsp;") != -1 || +
				currentURL.indexOf("forr/reg/clientactivation.jsp;") != -1 || +
				currentURL.indexOf("forr/reg/contactknown.jsp;") != -1 || +
				currentURL.indexOf("forr/reg/contactunknown.jsp;") != -1 || +
				currentURL.indexOf("forr/reg/Inquiry.jsp;") != -1 || +
				currentURL.indexOf("forr/reg/myprofile.jsp;") != -1 || +
				currentURL.indexOf("rb/research;") != -1) {
					
					endPageID = currentURL.indexOf(";");
				}
				else {
					endPageID = 255;
				}
				core_pageID = currentURL.substring(startPageID,endPageID);
			}
		}
		return core_pageID;
	}
// *******************************************************************



// Get user's role from header (core_userRole)
// *******************************************************************
	function getRoleFromHeader() {
		var getHeaderDiv = document.getElementById("header");

		if (getHeaderDiv != null) {
			var getRoleH1 = getHeaderDiv.getElementsByTagName("h1");
			var headerRole = getRoleH1[0].className;
			
			if (headerRole.indexOf("role_") != -1) {
				switch (headerRole) {
					case "role_-1":
						core_userRole = "Anonymous";
						break;
					case "role_2":
						core_userRole = "Security & Risk";
						break;
					case "role_4":
						core_userRole = "Interactive Marketing";
						break;
					case "role_5":
						core_userRole = "Direct Marketing";
						break;
					case "role_6":
						core_userRole = "Application Development & Program Management";
						break;
					case "role_7":
						core_userRole = "Business Process & Applications";
						break;
					case "role_8":
						core_userRole = "CIO";
						break;
					case "role_9":
						core_userRole = "Enterprise Architecture";
						break;
					case "role_10":
						core_userRole = "Information & Knowledge Management";
						break;
					case "role_11":
						core_userRole = "IT Infrastructure & Operations";
						break;
					case "role_12":
						core_userRole = "Sourcing & Vendor Management";
						break;
					case "role_13":
						core_userRole = "Customer Experience";
						break;
					case "role_14":
						core_userRole = "Channel Product Management";	// (eBusiness Channel Strategy)
						break;
					case "role_15":
						core_userRole = "Marketing Leadership";
						break;
					case "role_16":
						core_userRole = "Market Research";	// (post-split: B2B Market Research / Consumer Market Research)
						break;
					case "role_17":
						core_userRole = "Strategy";
						break;
					case "role_18":
						core_userRole = "Analyst Relations";
						break;
					case "role_19":
						core_userRole = "Technology Marketing";
						break;
					case "role_20":
						core_userRole = "Generalist";
						break;
					case "role_21":
						core_userRole = "B2B Market Research";
						break;
					case "role_22":
						core_userRole = "Consumer Market Research";
						break;
					case "role_23":
						core_userRole = "eBusiness & Channel Strategy";
						break;
					case "role_24":
						core_userRole = "Consumer Product Strategy";
						break;
					default:
						// if "role_" exists with unrecognized number or no number
						core_userRole = null;
				}
			}
			// If unrecognizable content is in "header" div
			else {
				core_userRole = null;
			}
		}
		// if no id="header" is present
		else {
			core_userRole = null;
		}
		return core_userRole;
	}
// *******************************************************************



// Convert role name to number to append to Coremetrics categoryID
// *******************************************************************
	function getRoleNumber(roleName) {
	
		switch (roleName) {
			case "Security &amp; Risk":
			case "Security & Risk":

				roleNumber = "_2";
				break;
			case "Interactive Marketing":
				roleNumber = "_4";
				break;
			case "Direct Marketing":
				roleNumber = "_5";
				break;
			case "Application Development &amp; Program Management":
			case "Application Development & Program Management":
				roleNumber = "_6";
				break;
			case "Business Process &amp; Applications":
			case "Business Process & Applications":
				roleNumber = "_7";
				break;
			case "CIO":
				roleNumber = "_8";
				break;
			case "Enterprise Architecture":
				roleNumber = "_9";
				break;
			case "Information &amp; Knowledge Management":
			case "Information & Knowledge Management":
				roleNumber = "_10";
				break;
			case "IT Infrastructure &amp; Operations":
			case "IT Infrastructure & Operations":
				roleNumber = "_11";
				break;
			case "Sourcing &amp; Vendor Management":
			case "Sourcing & Vendor Management":
				roleNumber = "_12";
				break;
			case "Customer Experience":
				roleNumber = "_13";
				break;
			case "Channel Product Management":
				roleNumber = "_14";	// (eBusiness Channel Strategy)
				break;
			case "Marketing Leadership":
				roleNumber = "_15";
				break;
			case "Market Research":
				roleNumber = "_16";	// (This is no longer in use post role split 2008)
				break;
			case "Strategy":
				roleNumber = "_17";
				break;
			case "Analyst Relations":
				roleNumber = "_18";
				break;
			case "Technology Marketing":
				roleNumber = "_19";
				break;
			case "Generalist":
				roleNumber = "_20";
				break;
			case "B2B Market Research":
				roleNumber = "_21";
				break;
			case "Consumer Market Research":
				roleNumber = "_22";
				break;
			case "eBusiness &amp; Channel Strategy":
			case "eBusiness & Channel Strategy":
				roleNumber = "_23";
				break;
			case "Consumer Product Strategy":
				roleNumber = "_24";
				break;
			default:
				roleNumber = "_noRoleSelected";
		}
		return roleNumber;
	}
// *******************************************************************









// Analysts
// *******************************************************************
	function confirmAnalysts(currentURL,core_pageID,roleName) {
	
		// if Inquiry or Briefing, change categoryID to "ContactForms"
		if (currentURL.indexOf("forr/reg/Inquiry.jsp") != -1 || currentURL.indexOf("forr/reg/Briefings.jsp") != -1) {
			core_categoryID = "ContactForms";
		}
		
		// if Analyst Profile page, get Analysts' primary role
		else if (currentURL.indexOf("rb/analyst/") != -1) {
			getRoleNumber(roleName);
			core_categoryID = "Analysts" + roleNumber;
		}
		else {
			core_categoryID = "Analysts";
		}
		cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
	}
// *******************************************************************


// Teleconferences
// *******************************************************************
	function confirmTeleconferences(currentURL,core_pageID) {
		core_categoryID = "Teleconferences"

		if (currentURL.indexOf("rb/search/results.jsp") != -1) {
			cmCreatePageviewTag(core_pageID, core_categoryID, core_searchTerm, core_searchResults, core_userRole, null, null, null, core_userType, pv_a1);
		}
		// Set Product View
		// Variables defined in VIGN: Events and Teleconferences > Events 2.0 > Events 2.0 - Event Details Component
		else if ((currentURL.indexOf("Teleconference/Overview/") != -1) || +
			(currentURL.indexOf("Teleconference/Previous/") != -1) || +
			// For new teleconference pages: April 2008
			(currentURL.indexOf("/rb/teleconference/teleconference.jsp?telid") != -1)) {
			
			cmCreateProductviewTag(core_productID, core_productName, core_categoryID);
		}
		
		// Set Page View
		else {
			cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
		}
	}
// *******************************************************************


// Events
// *******************************************************************
	function confirmEvents(currentURL,core_pageID) {
		core_categoryID = "Events"
		
		// Set Product View
		// Variables set in VIGN: Events and Teleconferences > Events 3.0 > Tabs Header
		if (currentURL.indexOf("events/eventdetail") != -1) {
			cmCreateProductviewTag(core_productID, core_productName, core_categoryID);
		}
		
		// Set Page View
		else {
			cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
		}
	}
// *******************************************************************


// About Forrester
// *******************************************************************
	function confirmAboutForrester(currentURL,core_pageID) {
	
		// Set Weekly Media Update form in About Forrester to ContactForms category ID
		if (currentURL.indexOf("Press/Media") != -1) {
			core_categoryID = "ContactForms";
		}
		
		// Press Releases
		else if (currentURL.indexOf("PressRelease") != -1) {
			core_categoryID = "PressReleases";
			core_pageID = "Press Releases (main page)";
		}
		else if (currentURL.indexOf("ER/Press/Release") != -1) {
			var comma = new Array();
			var commaCounter = currentURL;
			comma[0] = commaCounter.indexOf(",");
			
			for (i=1; i<=2; i++) {
				commaCounter = commaCounter.substring((comma[i-1]+1),200);
				comma[i] = (commaCounter.indexOf(",")+1);
			}
			
			var strStart = (comma[0] + comma[1])+1;
			var strEnd = (comma[0] + comma[1] + comma[2])+1;
			
			core_categoryID = "PressReleases";
			core_pageID = "Press Release " + (currentURL.substring(strStart,strEnd));
		}
		
		else {
			core_categoryID = "AboutForrester";
		}
		
		cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
	}
// *******************************************************************


// Consumer Data
// *******************************************************************
	function confirmConsumerData(currentURL,core_pageID) {
		if (currentURL.indexOf("rb/search/results.jsp") != -1) {
			setCategoryID(currentURL);
		}
		else {
			core_categoryID = "ConsumerData";
			cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
		}
	}
// *******************************************************************


// Business Data
// *******************************************************************
	function confirmBusinessData(currentURL,core_pageID) {
		if (currentURL.indexOf("rb/search/results.jsp") != -1) {
			setCategoryID(currentURL);
		}
		else {
			core_categoryID = "BusinessData";
			cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
		}
	}
// *******************************************************************


// Other Pages (When Global Nav = Research tab, popups, or no header/footer)
// *******************************************************************
	function setCategoryID(currentURL) {

		var isHomePage = document.getElementById("sniffHP");

		// Assign category to HomePages
		if (isHomePage) {
			var getHeaderDiv = document.getElementById("header");
			var getRoleH1 = getHeaderDiv.getElementsByTagName("h1");
			var roleClassName = getRoleH1[0].className;
			var roleNumber = roleClassName.substring(4,7);
			core_categoryID = "HomePages" + roleNumber;
		}
		
		// For blogs.forrester.com sites
		else if (currentURL.indexOf("blogs.forrester.com") != -1) {
			core_userRole = null;
			if (core_pageID == "" || core_pageID == null) {
				core_pageID = "blogs.forrester.com";
			}
		}		
		
		// Assign category to ContactForms
		else if (currentURL.indexOf("forr/reg/contact.jsp?") != -1 || +
		currentURL.indexOf("My/Contacts") != -1) {
			core_categoryID = "ContactForms";
		}
		
		// Assign category to AccountManagement
		else if (currentURL.indexOf("rb/myaccount/myaccount.jsp") != -1 || +
		currentURL.indexOf("my/alerts/list") != -1 || +
		currentURL.indexOf("rb/search/preferences.jsp") != -1 || +
		currentURL.indexOf("My/Bookmarks") != -1 || +
		currentURL.indexOf("my/alerts/detail") != -1 || +
		currentURL.indexOf("rb/Alert.jsp") != -1 || +
		currentURL.indexOf("findresearch/alert/popup?") != -1 || +
		currentURL.indexOf("findresearch/alert/popup/save") != -1 || +
		currentURL.indexOf("findresearch/alert/raOnlypopup?") != -1 || +
		currentURL.indexOf("findresearch/alert/raOnlypopup/save") != -1 || +
		currentURL.indexOf("alertsandnewsletters.jsp") != -1 || +
		currentURL.indexOf("forr/reg/") != -1) {
			core_categoryID = "AccountManagement";
		}
		
		// Assign category to Events
		else if (currentURL.indexOf("events/emailEvent") != -1 || +
		currentURL.indexOf("events/emailEventSave") != -1 || +
		currentURL.indexOf("Speaker_Bio/") != -1 || +
		currentURL.indexOf("events/agendabyday/print") != -1 || +
		currentURL.indexOf("events/agendabytrack/print") != -1 || +
		currentURL.indexOf("Events/Email/Popup") != -1 || +
		currentURL.indexOf("Events/Email/Save/Popup") != -1) {
			core_categoryID = "Events";
		}
		
		// Assign category to Teleconferences
		else if (currentURL.indexOf("Events/Email/Popup") != -1 || +
		currentURL.indexOf("Events/Email/Save/Popup") != -1) {
			core_categoryID = "Teleconferences";
		}
		
		// Assign category to AboutForrester
		else if (currentURL.indexOf("ER/Company/Locations") != -1 || +
		currentURL.indexOf("ER/Company/ExecProfiles") != -1 || +
		currentURL.indexOf("ER/Investor/FactSheet") != -1 || +
		currentURL.indexOf("ER/Investor/FactSheet/Email/Save") != -1 || +
		currentURL.indexOf("ER/Glossary") != -1 || +
		currentURL.indexOf("rb/copyright.jsp") != -1) {
			core_categoryID = "AboutForrester";
		}
		
		// Search Results Page 
		else if (currentURL.indexOf("rb/search/results.jsp") != -1) {
			core_categoryID = "Search";
		}
		
		// MiniSites
		else if (currentURL.indexOf("Groundswell") != -1) {
			core_categoryID = "Minisites_2";	
		}
		
		// Marketing Campaigns
		else if (currentURL.indexOf("Marketing/Campaign") != -1) {
			core_categoryID = "Campaign";
		}		
		
		// If no Category ID specified, set to null
		else {
			if (core_categoryID == "" || core_categoryID == null) {
				core_categoryID = "_noCategory";
			}
		}
		
		
		
		// DOCUMENTS ----
		// Doc meta ID (core_productID) and Doc title (core_productName) values are stated
		// in the document template
		
		// Throw tag for Product View if Doc Excerpt
		if (currentURL.indexOf("/Research/Document/Excerpt/") != -1 || currentURL.indexOf("ER/Research/Report/Summary/") != -1) {
			core_categoryID = "DocExcerpts_" + roleID;
			core_productName = "Excerpt: " + core_productName;
			cmCreateProductviewTag(core_productID, core_productName, core_categoryID);
		}
		// Check for permissioned Document
		else if (currentURL.indexOf("/Research/Document/") != -1 || currentURL.indexOf("ER/Research/Report/") != -1) {
			core_pageID = "Doc: " + core_productName + " (" + core_productID + ")";
			core_categoryID = "Documents_" + roleID;
			cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
		}
		// Check for Printer Friendly Document
		else if (currentURL.indexOf("/Research/Print/Document/") != -1 || currentURL.indexOf("ER/Print/Research/Report/") != -1) {
			core_pageID = "Print: " + core_productName + " (" + core_productID + ")";
			core_categoryID = "Documents_" + roleID;
			cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
		}
		
		
		// Check for error pages
		else if (document.getElementById("sniffError")) {
			core_categoryID = "Errors";
			cmCreatePageviewTag(core_pageID, core_categoryID, null, null, null, null, null, null, core_userType, pv_a1);
		}
		
		// Change pageID for campaignlogin.jsp Login and Profile pages (they share the same URL)
		else if (currentURL.indexOf("/forr/reg/campaignlogin.jsp") != -1) {
			// Login page
			if (document.getElementById("campaignregform")) {
				core_pageID = core_pageID + "(loginPage)"
			}
			// Profile page
			else if (document.getElementById("regform")) {	
				core_pageID = core_pageID + "(profilePage)"				
			}
			cmCreatePageviewTag(core_pageID, core_categoryID, null, null, null, null, null, null, core_userType, pv_a1);
		}
		

		// Throw default Page View tag
		else {
			cmCreatePageviewTag(core_pageID, core_categoryID, core_searchTerm, core_searchResults, core_userRole, null, null, null, core_userType, pv_a1);
		}
	}
// *******************************************************************



// For JForum (forrforum) Community Discussion Boards
// *******************************************************************
	function forrDiscussions() {	
	
		// Main Discussion Page (currently hidden from users 08-08)
		if (currentURL.indexOf("/forrforum/forums/list.page") != -1) {
			core_categoryID = "DiscussionBoard";
		}
		
		// Category page - forum_show.htm
		else if (currentURL.indexOf("/forums/show/") != -1) {
			core_pageID = core_categoryID + "(mainPage)";
		}
		
		// Topic page - post_show.htm
		else if (currentURL.indexOf("/posts/list/") != -1) {
		// do nothing - variables are value assigned in post_show.htm
		}
		cmCreatePageviewTag(core_pageID, core_categoryID, null, null, core_userRole, null, null, null, core_userType, pv_a1);
	}
// *******************************************************************
