/**
 * sets the product finding method cookie
 * @param sValue
 */
function setProductFindingMethod(sValue) {
	if(sValue && sValue != '') {
		setCookie('omnitureProductFindingMethod', sValue, 0, '/', getCookieDomain());
	}
}

function OmTransporter() {
}
OmTransporter.cookieName = 'omTransporter';

OmTransporter.setVar = function(sName, sValue) {
	var aParameters = OmTransporter.getAll();
	var bIsSet = false;
	for (var i = 0; i < aParameters.length; i++) {
		if (aParameters[i].name == sName) {
			aParameters[i].value = sValue;
			bIsSet = true;
		}
	}
	if(!bIsSet) {
		aParameters.push(new OmnitureParameter(sName, sValue));
	}
	OmTransporter.setAll(aParameters);
}

OmTransporter.getAll = function() {
	var sValueComplete = getCookie(OmTransporter.cookieName);
	if (sValueComplete != null) {
		var aKeyValues = sValueComplete.split(';');
		var aKeyValue;
		var aoParameters = new Array();
		for (var i = 0; i < aKeyValues.length; i++) {
			aKeyValue = aKeyValues[i].split(':');
			aoParameters.push(new OmnitureParameter(aKeyValue[0], aKeyValue[1]));
		}
		return aoParameters;
	}
	return new Array();
}

OmTransporter.setAll = function(aoParameters) {
	var aKeyValues = new Array();
	for (var i = 0; i < aoParameters.length; i++) {
		aKeyValues[i] = aoParameters[i].name + ':' + aoParameters[i].value;
	}

	var sKeyValues = aKeyValues.join(';');
	setCookie(OmTransporter.cookieName, sKeyValues, 0, '/', getCookieDomain());
}


/**
* Omniture Parameter
* @param string sName
* @param string sValue
*/
function OmnitureParameter(sName, sValue)
{
	this.name = sName;
	this.value = sValue;
}

/**
* Omniture Tracking Class
* 
* @param object oLinkArgument The Link object that should be tracked (if this is called in a onclick event, simply set it to 'this')
* @param string sLinkTitleArgument The Linkname (if not set Omniture takes it from oLinkArgument)
*/
function Omniture(oLinkArgument, sLinkTitleArgument) {
	this.oLink = false;
	this.sTitle;
	this.eLinkType = 'o';
	
	if(typeof(oLinkArgument) != 'undefined') {
		this.oLink = oLinkArgument;
	}
	
	if(typeof(sLinkTitleArgument) != 'undefined') {
		this.sTitle = sLinkTitleArgument;
	}
}

/**
* Is the data send? Use bForceSending in sencCall() to force sending
* @static
*/
Omniture.dataSend = false;

/**
* send the data to omniture. to overwrite existing parameters or add additional set an array containing a object for each parameter
* eg: new Array(
*		new OmnitureParameter('prop16', 'value for prop16'),
*		new OmnitureParameter('prop14', 'usefull value for prop14')
*	)
* @param aParameter array of OmnitureParameters
* @param bForceSending Set to true to send the call if it was allready send on this page
*/
Omniture.prototype.sendCall = function(aParameter, bForceSending)
{
	if(typeof(bForceSending) == 'undefined') {
		bForceSending = false;
	}
	
	if(Omniture.dataSend == false || bForceSending == true)
	{
		var aParameterNames = new Array();
		var aTempEvents = new Array();
		var s = s_gi(s_account);

		for(var i = 0; i < aParameter.length; i++)
		{
			var aParameterPair = aParameter[i];
			if(aParameterPair.name == 'events') {
				aTempEvents[aTempEvents.length] = aParameterPair.value;
			} else {
				s[aParameterPair.name] = aParameterPair.value;
			}
			aParameterNames[aParameterNames.length] = aParameterPair.name;
		}
		
		s.linkTrackVars = aParameterNames.join(',');
		if(aTempEvents.length > 0) {
			s.linkTrackEvents = aTempEvents.join(',');
			s.events = aTempEvents.join(',');
			//s.linkTrackVars += ',events';
		}
		
		s.tl(this.oLink, 'o', this.sTitle);
		Omniture.dataSend = true;		
	}
}