/*
 
 -----------------------------------------
   omniture.js
 -----------------------------------------

 * @version 0.1
 * @author LBi - http://www.lbi.com/en
 * @requires jQuery Core 1.3.2 - http://www.jquery.com/
*/


/**
 * Enables Omniture tracking of clicked links through class decoration of buttons and links
 * @namespace Enables Omniture tracking of clicked links through class decoration of buttons and links
 * e.g. JS_trackedLink(communityContentAdded,Topic)
 * @member BTT
 */
BTT.Omniture = {
	
	/*
	 * Passed an array called eventDetails in the format ['eventname', 'event property 1', 'event property 2' ...] parsed
	 * as comma seperated values from the class name.  Constructs an Omniture call for an event based on the event
	 * name with the parameters as appropriate.
	 */
	makeOmnitureCall: function(link, linkText, eventDetails)
	{
		if(linkText === ""){linkText="ts:"+eventDetails[0]+":"+eventDetails[1];}		
		// 's' is defined by s_code.js which is included in every page
		if ('search' === eventDetails[0]) {

			s.linkTrackVars='prop3,events';
			s.linkTrackEvents='event3';
			var searchQuery = $("#search").val();
			if(link.id === "globalSearchSubmit"){
				searchQuery = $("#globalSearchInput").val();
			}
			s.prop3=searchQuery;
			s.events='event3';
		}
		else if ('designUpdate' === eventDetails[0]) {
			if(linkText === ""){linkText="Search";}		
			s.linkTrackVars='prop4,eVar4,events';
			s.linkTrackEvents='event4';
			s.prop4=eventDetails[1];
			s.eVar4=s.prop4;
			s.events='event4';			
		}
		else if ('profileUpdate' === eventDetails[0]) {
			s.linkTrackVars='prop6,eVar6,events';
			s.linkTrackEvents='event5';
			s.prop6=eventDetails[1];
			s.eVar6=s.prop6;
			s.events='event5';
		}
		else if ('contentAdded' === eventDetails[0]) {
			s.linkTrackVars='prop7,eVar7,events';
			s.linkTrackEvents='event6';
			s.prop7=eventDetails[1];
			s.eVar7=s.prop7;
			s.events='event6';
		}
		else if ('communityContentAdded' === eventDetails[0]) {
			s.linkTrackVars='prop8,eVar8,events';
			s.linkTrackEvents='event7';
			s.prop8=eventDetails[1];
			s.eVar8=s.prop7;
			s.events='event7';			
		}
		else if ('communityCreated' === eventDetails[0]) {
			s.linkTrackVars='prop42,eVar42,events';
			s.linkTrackEvents='event8';
			s.prop42=eventDetails[1];
			s.eVar42=s.prop45;
			s.events='event8';			
		}
		else if ('emailSent' === eventDetails[0])	{
			s.linkTrackVars='prop44,eVar44,events';
			s.linkTrackEvents='event9';
			s.prop44=eventDetails[1];
			s.eVar44=s.prop44;
			s.events='event9';
		}
		else if ('shopCreated' === eventDetails[0])	{
			s.linkTrackVars='events';
			s.linkTrackEvents='event22';
			s.events='event22';
		}
		else if ('testimonialSubmitted' === eventDetails[0]) {
			s.linkTrackVars='events';
			s.linkTrackEvents='event14';
			s.events='event14';
		}
		else if ('paypalInitiated' === eventDetails[0]) {
			// EventDetails[1] = display name
			// EventDetails[2] = product name
			// EventDetails[3] = price
			s.linkTrackVars='events';
			s.linkTrackEvents='purchase,event16';
			s.events='purchase,event16';
			var quantity = $("#quantity").val();
			var totalPrice = eventDetails[3] * quantity;
			s.products="Sellersite:" + eventDetails[1] + ";" + eventDetails[1] + ":" + eventDetails[2] + ";" + quantity + ";" + totalPrice;
		}
		else if ('productViewed'  === eventDetails[0]) {
			// EventDetails[1] = display name
			// EventDetails[2] = product name
			s.linkTrackVars='events';
			s.linkTrackEvents='prodView';
			s.products="Sellersite:" + eventDetails[1] + ";" + eventDetails[1] + ":" + eventDetails[2] + ";;";
			s.events="prodView";
		}
		else if ('logIn' === eventDetails[0]) {
			s.linkTrackVars='events';
			s.linkTrackEvents='event2';
			s.events='event2';
		}
		else if ('createNews' === eventDetails[0]) {
			s.linkTrackVars='events';
			s.linkTrackEvents='event28';
			s.events='event28';
		}
		else if ('deleteNews' === eventDetails[0]) {
			s.linkTrackVars='events';
			s.linkTrackEvents='event29';
			s.events='event29';			
		}
		else if ('enableAnalytics' === eventDetails[0]) {
			s.linkTrackVars='events';
			s.linkTrackEvents='event25';
			s.events='event25';			
		}
		else if ('testimonialPublished' === eventDetails[0]) {
			s.linkTrackVars='events';
			s.linkTrackEvents='event15';
			s.events='event15';			
		}
		else if ('subdomainChanged' === eventDetails[0]) {
			s.linkTrackVars='events';
			s.linkTrackEvents='event27';
			s.events='event27';
		}
		else if ('bookingsActivated' === eventDetails[0]) {
			s.linkTrackVars='events';
			s.linkTrackEvents='event23';
			s.events='event23';
		}
		else if ('makeBooking' === eventDetails[0]) {
			s.linkTrackVars='events';
			s.linkTrackEvents='event24';
			s.events='event24';
		}
		else if ('getSat' === eventDetails[0]) {
            // Get the value of radioSatisfaction - if on is checked then register event
            if ($("input[@name='radioSatisfaction']:checked").val() === 'on') {
            	s.linkTrackVars='events';
				s.linkTrackEvents='event26';
				s.events='event26';
            }
            else {
                return;
            }
		} else if ('visitOurWebsite' == eventDetails[0]) {
            s.linkTrackVars='prop12,eVar12,events';
			s.linkTrackEvents='event12';
			s.prop12=eventDetails[1];
			s.eVar12=s.prop12;
			s.events='event12'
        }
		s.tl(link,'o',linkText);
		
		s.events = '';	// reset events variable so as not to interfere with click map events
	},
	
	/**
	 * Gets the variables from inside the JS_trackedLink() brackets
	 */
	getLinkParams : function(wholeString) {
		return BTT.Utilities.getVarsFromClassName(wholeString, 'JS_trackedLink' );
	},

	enableLinkTracking : function() {
		var trackedItems = $('*[class*=JS_trackedLink(]');
		trackedItems.each( function() {
			$(this).bind('click', function(){
				var linkParams = BTT.Omniture.getLinkParams(this.className);
				BTT.Omniture.makeOmnitureCall(this, $(this).text(), linkParams);
			});
		});
	},
	
	/**
	 * Will extract omniture information from html text and place it into the header to be executed.
	 * Returns true if succesful and false if unsuccesful
	 */
	omnitureInLightbox: function(htmlText) {
		var omnitureScript = null,
			omnitureRegExp = /<script[^>]*id="omnitureParams"[^>]*>[\s\S]*?<\/script>/mi,
			response = false;
		if( typeof htmlText !== "undefined") {
			omnitureScript = htmlText.match(omnitureRegExp);
			if ( (omnitureScript !== null) && (omnitureScript.length > 0) ) {
				$('head').append($(omnitureScript[0]));
				response = true;
			}
		}
		return response;
	},
	
	init : function() {
		this.enableLinkTracking();
	}
	
};



/* Initialise when the DOM is ready
-------------------------------- */
$(document).ready(function(){
	BTT.Omniture.init();
});

