var fb2SideBarReport = function () {

	var initContainerOnClickHandler = function(){
    	//alert("in init");
    	YAHOO.util.Event.on("retailMenu", "click", documentClickHandler); 
    	YAHOO.util.Event.on("rightSidebar", "click", documentClickHandler); 
    	YAHOO.util.Event.on("footer", "click", documentClickHandler); 
    };
    
    var documentClickHandler = function(event){
		var eventTarget = YAHOO.util.Event.getTarget(event);
		//alert("target = " + eventTarget + " id=" + eventTarget.id);
	    webMetrics.generateMetrics(eventTarget);
	    wtaClickEventDispatch.dispatch(eventTarget);
    };

	return{

		pageInit:function(){
			//alert("hi");
			initContainerOnClickHandler();
		}
	};
}();

webMetrics = function(){
  
  		
  		var NavIdPlacement = {
  			"ssmenu":"TN",
  			"tmenu0":"TN",
  			"tmenu1":"TN",
  			"tmenu2":"TN",
  			"tmenu3":"TN",
  			"tmenu4":"TN",
  			"leftNavLink":"LN",
  			"breadcrumbLink":"BRD",
  			"footerLink":"FTR",
  			"rightSideBarLink":"RN",
  			"globalUtilityLink":"HDR",
  			"jsExternalUrl":"FTR",
  			"log_in":"HDR"
  		};
  		
  		var UtilityIdPlacement = {
  			"pageUtilityLink":"HDR",
  			"myTextSize":"HDR"
   		};
  		
  		var setDispatchProperties = function(eventTarget){
  			
  			//alert("set dispatch props");
  		//need to grab the image from document handler
  		
			//vrtPage.logger(" webMetrics setDispatchProperties");
			
		 	//prevents double reporting when hardcoded onclick handlers handle reporting. see showPage
		 	//vrtPage.logger("metricsReportedOn = " + vrtPage.properties.metricsReportedOn);
			//if(vrtPage.properties.metricsReportedOn) return;
		 	  						
			var linkPlacement = NavIdPlacement[eventTarget.id];
							
			if(linkPlacement == undefined) linkPlacement = UtilityIdPlacement[eventTarget.id];
			
			//if(jvl.validation.isEmpty(linkPlacement)) linkPlacement = "CONTENT";
			
			wtaClickEventDispatch.dispatchControl.linkPlacement = linkPlacement;

			
			if (eventTarget.tagName.toLowerCase() == 'a') { 
				wtaClickEventDispatch.dispatchControl.linkName= getLinkName(eventTarget);
			}

			/*
			if (eventTarget.tagName.toLowerCase() == 'img') { 

				var name =  eventTarget.parentNode.getElementsByTagName('img')[0].alt;

				if(jvl.validation.isEmpty(name))
					name = eventTarget.parentNode.getElementsByTagName('img')[0].title;
				
				vrtPage.logger("processing image with name of " + name);
				
				wtaClickEventDispatch.dispatchControl.linkName= name;
			}
			*/
			
			var targetHref;
			
			if (eventTarget.tagName.toLowerCase() == 'img') { 

				targetHref = String(eventTarget.parentNode);
				//vrtPage.logger("processing image with target href of " + targetHref);
			}
			else targetHref = eventTarget.href;

			wtaClickEventDispatch.dispatchControl.linkType= getLinkType(targetHref);						

			wtaClickEventDispatch.dispatchControl.targetHref= targetHref;
	
  		};
		//not defined when clicking on image  
	    var getLinkType = function(targetHref)
		{
			
			if(targetHref == undefined) return "unknown";
			
			//vrtPage.logger("getLinkType href = " + targetHref);
			
			var linkType = "internal"
			
			if(targetHref.indexOf("brightcove") != -1)
				linkType = "external";
			
			/*
			alert("*** HREF = " + targetHref);
			if((targetHref.indexOf("public/Retail") != -1)  || (targetHref.indexOf("javascript:void(0)") != -1) ||  (targetHref.indexOf("displayUtility") != -1)
				|| (targetHref.indexOf("aawebl") != -1) || (targetHref.indexOf("retailtools") != 1))
			{
				alert("*** setting to internal");
				linkType = "internal"; 
			}			
			*/
			
			//alert("link type=" + linkType);
			
			if(targetHref.indexOf("javascript") != -1)
			{
				wtaClickEventDispatch.dispatchControl.linkProtocol= "javascript";
			}
			
					
			return linkType;
		};

		var getLinkName = function(eventTarget)
		{
			var linkName = eventTarget.innerHTML;
				
			var imageInAnchor = YAHOO.util.Dom.getElementsBy(function(){return true;},"img",eventTarget); //footer
			
			//vrtPage.logger(" imageInAnchor = " + imageInAnchor + " length =" + imageInAnchor.length);
			
			if(imageInAnchor.length > 0) //ie bug
			{
				var imageTag = imageInAnchor[0];
				//vrtPage.logger("image alt attribute text =  " + imageTag.alt);
				//if(!jvl.validation.isEmpty(imageTag.alt)) linkName = imageTag.alt;
				//vrtPage.logger("image title attribute text =  " + imageTag.title);
				//if(!jvl.validation.isEmpty(imageTag.title)) linkName = imageTag.title;
				
			}

			return linkName;
		 };
			
  		return{
  			
  			properties:{
  				htmlElement:""
  			},
  			
  			generateMetrics:function(eventTarget){
  				//alert("generate metrics");
  				setDispatchProperties(eventTarget);
  			}
  			
  		};
  }();
  
wtaClickEventDispatch = function(){
  		
  		var clearDispatchControl = function(props){
			props.targetHref ="";
  			props.eventTarget ="";
  			props.linkName="";
  			props.linkPlacement="CONTENT";
  			props.linkType="";
  			props.linkProtocol="http";
			props.leavingBankingServices=false;
			props.bankingServicesDisclaimer="";
  		};
  		
  		var completeEventRequest = function(eventTarget){

  			var props = wtaClickEventDispatch.dispatchControl;
  			//alert("in complete event, linkType = " + props.linkType);
  			//alert("in complete event, targetHREF = " + props.targetHref);
  			//alert("in complete event, eventTarget = " + eventTarget.id);
  			//alert("in complete event, linkPlacement = " + props.linkPlacement);  			  			
  			//alert("in complete event, linkProtocol = " + props.linkProtocol);
  			  			  			  			  			  			  			
  			var linkEvent = "link";
  			if(props.linkPlacement != null && props.linkPlacement != 'undefined')
  			{	
	  			//if(props.linkType.indexOf("internal") != -1)
	  			//{
	  				//alert("internal WTA");
		  		//	WTA.utils.tags.sendretaillinkp(linkEvent,props.linkName, props.linkPlacement);
	  			//}
	  			if(props.linkType == "external" && props.linkProtocol == "javascript")
  				{
	  				//alert("external JS WTA");
		  			WTA.utils.tags.sendretailexitjs(eventTarget,'link', props.linkName, props.linkPlacement);
		  			clearDispatchControl(props);
	
		  			return;
	  			}
				if(props.linkType == "external" && props.linkProtocol == "http")
	  			{
	 				//alert("external WTA URL");
		  			
	  				WTA.utils.tags.sendretailexiturl(eventTarget,'link', props.linkName, props.linkPlacement);
		  			clearDispatchControl(props);
	
	  				return;
	  			}
	  			//check for a PDF
	  			if(props.targetHref.indexOf(".pdf") != -1)
	  			{
		  			WTA.utils.tags.sendretaillinkp(linkEvent,props.linkName, props.linkPlacement);
		  			clearDispatchControl(props);
		  			return;	
	  			}
	  			
	  			//all other links will be assumed internal, and change the URL to add paramters so its picked up on next page
	  			//per Narinder this is how they woulld like it done

				//make sure javascript isn't in href, leave these alone
				if(props.targetHref.indexOf("javascript:") != -1) return;
				
				var metricsHref;
				
	  			//check url for query string already
	  			if(props.targetHref.indexOf("?") == -1)
	  				metricsHref = props.targetHref + "?";
	  			else
	  				metricsHref = props.targetHref + "&";	

	  			metricsHref = metricsHref + "v_linkcomp=link&v_linkplmt=" + props.linkPlacement  + "&v_link=" + escape(props.linkName);
  				clearDispatchControl(props);  			

	  			var element = YAHOO.util.Dom.get(eventTarget);
  				element.href = "#";
  				element.href = metricsHref;
	  			
			}
			else
			{
				//alert("not reporting - no placement found");
			}  				
  			
  			/*
  			
  			if(props.linkType.indexOf("onchange") != -1) linkEvent = "onchange";
  			
  			if(props.linkType.indexOf("internal") != -1 && props.linkProtocol == "javascript")
  			{
	  			//vrtPage.logger("reporting internal " + linkEvent + " " + props.linkName + " " +props.linkPlacement);
	  			WTA.utils.tags.sendretaillinkp(linkEvent,props.linkName, props.linkPlacement);
	  			clearDispatchControl(props);

	  			return;
	  		}
	  		
	  		if(props.linkType.indexOf("internal") != -1  && props.linkPlacement == "CONTENT")
  			{
	  			//vrtPage.logger("reporting internal " + linkEvent + " " + props.linkName + " " +props.linkPlacement);
	  			WTA.utils.tags.sendretaillinkp(linkEvent,props.linkName, props.linkPlacement);
	  			clearDispatchControl(props);

	  			return;
	  		}
	  			
  			if(props.linkType == "external" && props.linkProtocol == "javascript")
  			{
	  			//vrtPage.logger("reporting external javascript link " + props.linkName + " " +props.linkPlacement);
	  			WTA.utils.tags.sendretailexitjs('link', props.linkName, props.linkPlacement);
	  			clearDispatchControl(props);

	  			return;
	  		}
	  			
  			if(props.linkType == "external" && props.linkProtocol == "http")
  			{
	  			//vrtPage.logger("reporting external http link " + props.linkName + " " +props.linkPlacement);
	  			
  				WTA.utils.tags.sendretailexiturl('link', props.linkName, props.linkPlacement);
	  			clearDispatchControl(props);

  				return;
  			}
  			

  			var metricsHref = props.targetHref + "?v_linkcomp=link&v_linkplmt=" + props.linkPlacement  + "&v_link=" + escape(props.linkName);
  			clearDispatchControl(props);  			

  			//vrtPage.logger("reporting on qstring click dispatch metricsHref = " + metricsHref);

  			var element = YAHOO.util.Dom.get(eventTarget);
  			element.href = "#";
  			element.href = metricsHref;
  			//pending xbrowser testing
  			//eventTarget.href = "http://www.google.com";
  			
  			*/
  		};
  		
  		return{
  			
			dispatchControl:{
				leavingBankingServices: false,
				bankingServicesDisclaimer: "",
				sentPageDot: false,  //may not need
				targetHref: "",
				linkComponent: "link",
				linkName :"",
				linkPlacement:"CONTENT", //default
				linkType:"",
				linkProtocol:"http"
			},
			
			dispatch: function(eventTarget){
				completeEventRequest(eventTarget);
			},
			
			dispatchEmbeddedJsMertic: function(type, name, placement){
			//if !vrtPage.properties.isInPreview
				WTA.utils.tags.sendretaillinkp(type, name, placement);
			},
			
			reportAndReplace: function(url, type, name, placement){
				//vrtPage.logger(" replace and replace  this url " + url);
				//vrtPage.logger(" reporting " + type + " " + name + " " + placement);
				WTA.utils.tags.sendretaillinkp(type, name, placement);
				top.location.href=url;
			}
			
  		};
  }();

  