/**
 *  CODE EXAMPLE:
 * 
 * 	var omnitureVars = {'event': 22, 'eVar40': $('dr_betabar_intStarRating').value, 'eVar41': $('dr_betabar_strMessage').value};
 *	var linkObj 	 = $('dr_betabar_sendbtn');
 *	var linkName 	 = "Send";
 *	var eventType	 = "o";
 *
 *	Omniture.trackLink(linkObj, linkName, eventType, omnitureVars);
 *
 */

Omniture = {
	trackLink: function(linkObject, linkName, eventType, omnitureVars) {
		if(Omniture.detectOmniture()) {
			var arTrackVars    = [];
			var arTrackEvents  = [];
			var arTrackProps   = [];
			
			//fill prop11 with the page name
			omnitureVars['prop11'] = s.pageName;
			
			for (var key in omnitureVars) {
				var value = omnitureVars[key];
				
				if(key == "event") {
					if(value instanceof Array) {
						//multiple events passed in...
						for(i = 0; i < value.length; i++) {
							var eventNum = value[i];
							arTrackEvents.push("event" + eventNum);
						}
					}else{
						arTrackEvents.push("event" + value);
					}
				}
				
				
				if(key.indexOf('eVar') == 0 || key.indexOf('prop') == 0) {
					arTrackVars.push(key);
					
					//replace potential "bad" characters that might break the eval statement
					value    = value.replace( /"/gi, '\\"' );
					value	 = value.replace(/\n/gi, "\\n");
					
					var code = 's.' + key + ' = "'+ value +'";';
					eval(code);
				}
			}

			if(arTrackEvents.length > 0) {
				arTrackVars.push("events");
				
				/**
 				* Omniture counter variables:
 				* Add eVar51, eVar52, and prop19 for every event. 
 				*/ 
				try {
					arTrackVars.push("eVar51");
					eval('s.eVar51 = "+1";');
					arTrackVars.push("eVar52");
					eval('s.eVar52 = "+1";');
					arTrackVars.push("prop19");
					var code = 's.prop19 = "' + arTrackEvents.join(",") + '";';
					eval(code);
				} catch(err) {
					/**
					 * Don't handle err - just prevent the above from 
					 * disrupting other tracking. 
					 */
				}
			}

			s.linkTrackVars = arTrackVars.join(",");
			s.linkTrackEvents = arTrackEvents.join(",");
			s.events = arTrackEvents.join(",");
			s.tl(linkObject,eventType,linkName);
		
		}else{
			//hmm, fail gracefully
		}			
	},
	
	detectOmniture: function() {
		if(typeof(s_gi) == "function" && typeof(s_account) != "undefined"  && typeof(s) != "undefined") {
			return true;
		}else{
			return false;
		}
	}
}
