var concatChar = s.pathConcatDelim;
var site = "bb";
var region = "ww";

/**
 * Main function that is called from the page
 */
function buildPageHierarchy(){
	var urlString = s.getPageName();
	//urlString = urlString.replace(/\//g,concatChar); // Replace the "/" with the concatChar
	
	var parsedURL = urlString.split(concatChar);
	
	// Get region
	region = getRegion();
	
	// Populate prop3 and prop4 with product infomation
	getProductPage(parsedURL);
	
	var level1 = getLevel(parsedURL,1);
	var level2 = getLevel(parsedURL,2);
	
	s.channel = concatStrings([region,site,level1]);
	if(level2 == "")
		s.prop1 = s.channel;
	else
		s.prop1 = concatStrings([s.channel,level2]);
		
	s.pageName = rewritePageName(parsedURL);
	
	
}

function concatStrings(array){
	return array.join(concatChar);
}

/**
 * Populate the prop3 and prop4  variables when a product page is displayed
 */
function getProductPage(parsedURL){
	// Check if product page
	if(parsedURL[1] == "products"){
		if(parsedURL[3]!=null && parsedURL[3].indexOf('blackberry')>-1){
			s.prop4 = parsedURL[3];
			if(parsedURL[4]!="")
				s.prop3 = concatStrings([s.prop4,getTitle().strip()]);
		}
	}
}

function getTitle() {
	if( (document.getElementsByTagName('h1'))[1] != null ) {
		return (document.getElementsByTagName('h1'))[1].innerHTML;
	}
	return (document.getElementsByTagName('h1'))[0].innerHTML;	
}

/**
 * Get the specified level from the url string
 * Example:
 * http://www.blackberry.com/ap/devices/handhelds
 * Level 1 - devices
 * Level 2 - Handhelds
 */
function getLevel(parsedURL, level){
	var levels = parsedURL.length-1;

	if(levels > 1)
		if(parsedURL[0].length == 2)
			return parsedURL[level>=levels ? levels-1 : level];
		else if(parsedURL[1].length == 2){
			if(level == 1)
				return parsedURL[0];
			else
				return parsedURL[2];	
		}
		else if(parsedURL[0] == "select"){
			if(level == 1)
				return parsedURL[0];
			else
				return parsedURL[1];
		}
		
	if(levels == 1 && level == 1)
		return parsedURL[0];
	
	if(level == 1)
		return parsedURL[levels]; 

	return "";
	
}



// Add the site code.
function addSite(){
	return concatChar.concat(site);
}

/**
 * Using the url and the prop1 value create the page name.
 * s.PageName = s.prop1 + any other unique values
 */
function rewritePageName(parsedURL){
	
	var subsections = s.prop1.split(concatChar);
	var l = subsections.length;
	var newPageName = subsections;
	
	var start = l>parsedURL.length ? parsedURL.length : l; // The start value is the lesser of the two array sizes
	
	if(start>1) // Only run if the start value is greater then 1 (won't run on http://www.blackberry.com/blackberrycurve.shtml
		for (i=start-1; i<parsedURL.length; i++){
			newPageName[l] = parsedURL[i];
			l++;
		}
	
	return newPageName.join(concatChar);
	
}

/* OMNITURE RELATED */

//sends the omniture carrier event from a device selection drop-down onchange
function doOmnitureCarrierEventFromSelect(p_select) {
	doOmnitureCarrierEvent(p_select.options[p_select.selectedIndex].text);
}

//sends the omniture carrier event from a carrier A tag link
function doOmnitureCarrierEventFromA(p_a) {
	doOmnitureCarrierEvent(p_a.innerHTML);	
}

//sends the omniture carrier event from a carrier A tag link using the REL property
function doOmnitureCarrierEventFromARel(p_a) {
	doOmnitureCarrierEvent(p_a.rel);	
}


//send the omniture carrier event (used by other JS functions in this file)
function doOmnitureCarrierEvent(p_carrierString) {
	if (p_carrierString.toLowerCase() != "select an option" && typeof(s_account) != "undefined") {
		p_carrierString = p_carrierString.substring(p_carrierString.search(/[A-Z,a-z,0-9]/));
		
		var p_carrierStringTruncated = p_carrierString;
		if (p_carrierString.indexOf("(") > -1) {
			p_carrierStringTruncated = p_carrierString.substring(0, p_carrierString.indexOf("("));

			if (p_carrierStringTruncated.substring(p_carrierStringTruncated.length - 1).search(/[a-zA-Z0-9]/g) == -1) {
				p_carrierStringTruncated = p_carrierStringTruncated.substring(0, p_carrierStringTruncated.length - 1);
			}
		}
		
		var s =				s_gi(s_account);

		s.linkTrackVars =	'eVar6,events';
		s.linkTrackEvents =	'event6,event28';
		s.eVar6 =			p_carrierStringTruncated;
		s.events =			'event6,event28';

		void(s.tl(this,'o', p_carrierString));
	}
}

/* /OMNITURE RELATED */