/**
*@author Ibrahim Bediz
* This js tracks which page, which zone and which country clicked links come from  
*/

var OmnitureZoneTracker = Class.create();
OmnitureZoneTracker.prototype = {
	TRACKING_VALUES : "eVar19",
	suspendZoneTrack : false, //used to disable zone tracking for one event, for ex. closing wep pane clicking on wep buttons
	/*
	*	this function finds all the links under divs which have tracking attribute
	*	and registers click event where omniture tracking function is called. 
	*/
	trackZones: function (divObjId){
		if(isZoneTrackingEnabled!=null && isZoneTrackingEnabled==true){
			var zoneDivs = new Array();
	
			if(divObjId) {
				var parentDiv = $(divObjId);
				var childElements = parentDiv.childNodes;
				
				this.findChildTrackingDivs(childElements, zoneDivs);
			}
			else {
				zoneDivs = $$('div.tracking');
			}
			
			var pageName = s.eVar17;
			var countryCode = s.prop2;
			for (var i=0; i < zoneDivs.length; i++){
				var zoneName = zoneDivs[i].getAttribute('tracking');
				var trackingExpression = pageName + "| Area | " + zoneName;
				var trackingExpressionForCustomLinks = pageName + " | " + zoneName + " | " + countryCode;
				var divId = zoneDivs[i].id;
				if ((divId==null)||(divId=="")){
					zoneDivs[i].id = zoneName + "-tracking-" +i;
				}
				var linksSelectExpression = "#"+zoneDivs[i].id+" a";
				this.makeTrackable(linksSelectExpression, trackingExpression, trackingExpressionForCustomLinks);
				
				//get the divs which have onClick attribute, register a new click event to these divs for tracking these 
				var clickableDivsSelectExpression =  "#"+zoneDivs[i].id+" div[onclick]";
				this.makeTrackable(clickableDivsSelectExpression, trackingExpression, trackingExpressionForCustomLinks);				
			}
		}
	}
	,
	initialize: function(){
	 
	},
	
	track: function(clickedObj){
		if (!this.suspendZoneTrack){
			customZoneTracker(clickedObj);
		}else{
			this.suspendZoneTrack = false;
		}
	},
	
	makeTrackable: function(linksSelectExpression, trackingExpression, trackingExpressionForCustomLinks){
		var linksInZone = $$(linksSelectExpression);
		if (linksInZone){
			for (var j=0; j<linksInZone.length; j++){
				var link = linksInZone[j];
				var trackingExpressionWithLink = null;
				if ((link.href)&&(link.href!="")&&(link.rel.indexOf("notrack")==-1)){
					trackingExpressionWithLink = trackingExpressionForCustomLinks + " | " +link.href;
					//link.target = "_blank";  //This stands for testing only, if you want to test comment this line out.
				}
				link.trackingExpression = trackingExpression;
				link.trackingExpressionForCustomLinks = trackingExpressionWithLink ? trackingExpressionWithLink : trackingExpressionForCustomLinks;
				Event.observe(link, 'click',function(){
					omTracker.track(this);
				}.bind(link));
			}
		}
		
	},
	
	findChildTrackingDivs: function(childElements, zoneDivs) {
		for(var i=0; i < childElements.length; i++) {
			if(childElements[i].nodeName=='DIV') {
				if(childElements[i].getAttribute('tracking') != null) {
					zoneDivs[zoneDivs.length] = childElements[i];
				}
				else {
					this.findChildTrackingDivs(childElements[i].childNodes, zoneDivs);
				}
			}
		}
	}
	
}

var omTracker = null;

Event.observe(window, 'load', function() {
	omTracker = new OmnitureZoneTracker();
	omTracker.trackZones();
});



