/*
 * plugin for tracking (omniture and GA)
 * depends on :
 * - jQuery
 * - existance of global js value "s_account"
 * - JS lib "s_code.js"
 */
;(function($){
	
	function getOmniAccount(){
		return s_gi(s_account);
	}
	function getKeyList(){
		var a = [];
		for( var i = 0 ; i < arguments.length ; i ++ ){
			for( var sKey in arguments[ i ] ){
				a.push( sKey );
			}
		}
		return a.toString();
	}
	function parseOmnitureEvents( events ){
		var aReturnValue = [];
		var aEvents 	= events.split(",");
		var aWorking	= [];
		for( var i = 0; i < aEvents.length ; i ++ )
		{
			aWorking = aEvents[ i ].split(":");
			aReturnValue.push( aWorking[0] );
		}
		return aReturnValue.toString();
	}
	
	$.extend({
		tracking: {
			omniture : function( values , desc , elem ){

				if( !elem ) elem = this;
				if( !desc || desc.length == 0 ) desc = '[undefined]';
				var s = getOmniAccount();
				s.linkTrackVars = getKeyList( values );
				s.linkTrackEvents = ( !values.events?"":parseOmnitureEvents(values.events) );
				if( s.linkTrackVars.length > 0 && s.linkTrackVars.toLowerCase() != 'none' ){
					
					for( var sKey in values )
					{
						s[ sKey ] = values[ sKey ];
					}

					s.tl( elem, 'o' , desc );
					s.linkTrackVars = 'None';
					s.linkTrackEvents = 'None';
				}
				
			}
			, omnitureFlash : function( data , desc ) {
				var aData 	= data.split("&");
				var values	= {};
				for( var i = 0 ; i < aData.length ; i ++ ){
					aData[ i ] = aData[ i ].split("=");
					values[ aData[i][0] ] = aData[i][1];
				}
				$.tracking.omniture( values , desc , this );
			}
			, getEventString : function(value){//for omniture event serializetion
		  		if(!value) value = "";      
		        var cbd = new Date();
		        var serialize = cbd.getUTCFullYear().toString() + cbd.getUTCMonth().toString() + cbd.getUTCDate().toString() + cbd.getUTCHours().toString() + cbd.getUTCMinutes().toString() + cbd.getUTCSeconds().toString() + Math.round(Math.random() * 100);
				var returnValue	= serialize + value; 
		        return returnValue.substr(0,20); 
		        
		    }
			
		}
	});
})( jQuery );
