/* s_cacomniscript.js - code version: 1.1
maj : 2010-01-21
Copyright 2010 Clubatcost
http://www.clubatcost.fr
-------------------------------------------------------------------------------------------------
Script de génération des tags omniture à partir des paramètre passées
à la fonction :  OmniStart(_pageName,_channel,_prop1).
- L'appel de cette fonction déclenche la propagation du paramètre GET "CID" si nécessaire,
sur toutes les balises anchor (<a>) marquées par la class "internaLink"
(<a class="internaLink" href="..."></a>).
- L'appel de cette fonction déclenche la propagation du paramètre GET "test" si nécessaire (test=1),
sur toutes les balises anchor (<a>) marquées par la class "internaLink".
------------------------------------------------------------------------------------------------- */

var cos_isTest = false;
var cos_cid = "";
var cos_classNameCacLinks = "internaLink";


/* Ecriture du tag omniture
	_pageName =  Nom complet de la page dans Omniture. Ex : "Pages externes:qui sommes-nous:le concept"
	_channel = Niveau 1 du groupe de pages. Ex : "Pages externes", "eBoutique", "Mon compte",...
	_prop1 = Niveau 2 du groupe de pages. Ex : "qui sommes-nous"  */
function OmniStart(_pageName,_channel,_prop1){	
	s.server = document.domain;
	s.channel = _channel;
	s.pageName = _pageName;
	s.prop1 = _prop1;
	var s_code=s.t();
	if(s_code)
		document.write(s_code);
		

	
	SpreadCID();
}

// Propagation du CID
function SpreadCID(){
	var urlvars = extractUrlParams();
	
	// si l'url contient le paramètre test avec la valeur 1
	if (urlvars['test']!=undefined && urlvars['test'] == 1)
		cos_isTest = true;
	
	// si l'url contient un CID :
	if (urlvars['CID']!=undefined && urlvars['CID']!='') 
		cos_cid = urlvars['CID'] ;
	
	// s'il y a des parametres à propager aux liens de la page
	if (cos_isTest || cos_cid != "")
		SetLinksByClassName(cos_classNameCacLinks);
}

/* Parametrage des liens internes CAC :
	_className =  Nom de la classe des liens à paramètrer */
function SetLinksByClassName(_className){	
	var links = cacGetElementsByClassName(_className);	
	for (var i=0;i<links.length;i++)	{		
		//si la balise possède l'attribut href
		if((links[i].getAttribute("href"))!=null) 	{	
			var newValue = links[i].getAttribute("href");				
			// 1. Si id de campage :
			if (cos_cid != "") 			{
				//si autres params
				if (newValue.indexOf("?",0) > -1)	{	
					// si ancre				
					if (newValue.indexOf("#",0) > -1)	{
						var elem = newValue.split('#');
						if (elem.length == 2)
							newValue = elem[0] + "&CID=" + cos_cid + "#" + elem[1];
					}
					// pas d'ancre
					else	{
						newValue =  newValue + "&CID=" + cos_cid;
					}
				}
				//pas d'autres params
				else 	{
					// si ancre				
					if (newValue.indexOf("#",0) > -1)	{
						var elem = newValue.split('#');
						if (elem.length == 2)
							newValue = elem[0] + "?CID=" + cos_cid + "#" + elem[1];
					}
					// pas d'ancre
					else	{					
						newValue =  newValue + "?CID=" + cos_cid;
					}
				}				
				//Si test :
				if(cos_isTest) 	{
					var iConcept = newValue.indexOf("ConceptScreen.aspx",0);
					//Si conceptscreen :
					if( iConcept >-1) 	{
						iAmp = newValue.indexOf("&",(iConcept+18));
						// si autres params
						if(iAmp > -1) {
							newValue = newValue.substring(0,(iConcept+18)) + "?p=c3e7f835-1ecc-4614-98bc-3c8833c985bc" + newValue.substring(iAmp,(newValue.length));
						}
						//pas d'autres params
						else {
							newValue = newValue.substring(0,(iConcept+18)) + "?p=c3e7f835-1ecc-4614-98bc-3c8833c985bc";
						}
					}
					// si ancre				
					if (newValue.indexOf("#",0) > -1)	{
						var elem = newValue.split('#');
						if (elem.length == 2)
							newValue = elem[0] + "&test=1#" + elem[1];
					}
					// pas d'ancre
					else	{
						newValue = newValue + "&test=1";
					}
					var element = newValue.split('www');				
					if (element.length == 2) newValue = element[0] + 'preprod' + element[1];					
				}
			}			
			// 2. Sinon test seulement :
			else if (cos_isTest) 	{
				//si autres params
				if (newValue.indexOf("?",0) > -1) 	{					
					// si ancre				
					if (newValue.indexOf("#",0) > -1)	{
						var elem = newValue.split('#');
						if (elem.length == 2)
							newValue = elem[0] + "&test=1#" + elem[1];
					}
					// pas d'ancre
					else	{
						newValue =  newValue + "&test=1";
					}					
				}
				//pas d'autres params
				else	{
					// si ancre				
					if (newValue.indexOf("#",0) > -1)	{						
						var elem = newValue.split('#');
						if (elem.length == 2)
							newValue = elem[0] + "?test=1#" + elem[1];
					}
					// pas d'ancre
					else	{					
						newValue = newValue + "?test=1";
					}
				}				
				var iConcept = newValue.indexOf("ConceptScreen.aspx",0);
				//Si conceptscreen :
				if( iConcept >-1) 	{
					iAmp = newValue.indexOf("&",(iConcept+18));
					// si autres params
					if(iAmp > -1) {
						newValue = newValue.substring(0,(iConcept+18)) + "?p=c3e7f835-1ecc-4614-98bc-3c8833c985bc" + newValue.substring(iAmp,(newValue.length));
					}
					//pas d'autres params
					else {
						newValue = newValue.substring(0,(iConcept+18)) + "?p=c3e7f835-1ecc-4614-98bc-3c8833c985bc";
					}
				}				
				var element = newValue.split('www');
				if (element.length == 2) newValue = element[0] + 'preprod' + element[1];		
			}			
			links[i].setAttribute("href",newValue);
		}
	}
}

/* Fonction de récupération des paramètres GET de la page
	@return Array Tableau associatif contenant les noms et valeurs des paramètres GET */
function extractUrlParams(){
	var t = location.search.substring(1).split('&');
	var f = [];
	for (var i=0; i<t.length; i++){
		var x = t[ i ].split('=');		
		f[x[0]]=x[1];
	}
	return f;
}

/* Fonction de récupération de tout les élements d'une classe
passée en paramètre (tag et elm optionnels)*/
function cacGetElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}