// fichier corrélant les dev de cap avec ceux de seaware.


var AppliCap = {
	
	Config : {
		domaine   : "unset",
		rootUrl   : "unset",
		rootUrlSW : "unset",
		URIHome   : "unset",
		URIResa   : "unset",
		URIEdito  : "unset", 
		nomCookie : "ss_sncm_langue"
	 },
	
	Init : {
		loadPageHome : function (headerId,homePub1Id,homePub2Id,homePub3Id,footerId) {
			erreurs = AppliCap.Init.checkAppliCorrectementParametree();
			if (erreurs != "")
				alert("Attention l'application n'a pas été correctement paramétrée :\n" + erreurs);
			
			// récupération de la langue 
			var ssLang = "";
			
			
			var langue = AppliCap.Utils.getAndSaveLangue();

			
			if (langue != "fr")
				ssLang = "/" + langue;
			var reseau = AppliCap.Utils.getUrlParamValue(window.location.href,"reseau");
			if (reseau == "" || reseau == "undefined"|| reseau == null)
				reseau = "CSC";
			reseau = "/"+reseau;
			// récupération du type de site (brouillon ou public)
			var stage = AppliCap.Utils.getUrlParamValue(window.location.href,"stage");
			if (stage == "" || stage == "undefined"|| stage == null)
				stage = "Live";
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/header?stage=" + stage + "&uriHome="+AppliCap.Config.rootUrlSW+AppliCap.Config.URIHome+"&lang="+langue,MyAjax.INNER_DIV,headerId);
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/homepage-haut"+reseau+"?stage=" + stage + "&lang="+langue,MyAjax.INNER_DIV,homePub1Id);
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/homepage-droite"+reseau+"?stage=" + stage + "&lang="+langue,MyAjax.INNER_DIV,homePub2Id);
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/homepage-bas"+reseau+"?stage=" + stage + "&lang="+langue,MyAjax.INNER_DIV,homePub3Id);
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/footer?stage=" + stage + "&lang="+langue,MyAjax.INNER_DIV,footerId);
		},
		loadPageEdito: function (headerId,pubId,footerId) {
			//MyAjax.enableDebugMode();
			erreurs = AppliCap.Init.checkAppliCorrectementParametree();
			if (erreurs != "")
				alert("Attention l'application n'a pas été correctement paramétrée :\n" + erreurs);
			// récupération de la langue (par défaut par l'url, et si forcé dans la signature de la méthode)
			var ssLang = "";
			
			var langue = AppliCap.Utils.getAndSaveLangue();
				
			if (langue != "fr")
				ssLang = "/" + langue;
			// récupération du type de site (brouillon ou public)
			var stage = AppliCap.Utils.getUrlParamValue(window.location.href,"stage");
			if (stage == "" || stage == "undefined"|| stage == null)
				stage = "Live";
			// chargement des fragments
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/header?stage=" + stage + "&uriHome="+AppliCap.Config.rootUrlSW+AppliCap.Config.URIHome+"&lang="+langue,MyAjax.INNER_DIV,headerId);
			var rub = AppliCap.Utils.getUrlParamValue(document.location.href,"rub");
			rub = AppliCap.Utils.replaceWord(rub,AppliCap.Config.rootUrl,"");
			if (rub != null)
				MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + rub + "?stage=" + stage + "&lang="+langue,MyAjax.INNER_DIV,pubId);
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/footer?stage=" + stage + "&lang="+langue,MyAjax.INNER_DIV,footerId);
		},
		loadPageResa: function (headerId,resaPubHautId,resaPubBasId,footerId) {
			erreurs = AppliCap.Init.checkAppliCorrectementParametree();
			if (erreurs != "")
				alert("Attention l'application n'a pas été correctement paramétrée :\n" + erreurs);
			// récupération de la langue (par défaut par l'url, et si forcé dans la signature de la méthode)
			var ssLang = "";
			
			var langue = AppliCap.Utils.getAndSaveLangue();
			
			if (langue != "fr")
				ssLang = "/" + langue;
			// récupération du type de site (brouillon ou public)
			var stage = AppliCap.Utils.getUrlParamValue(window.location.href,"stage");
			if (stage == "" || stage == "undefined"|| stage == null)
				stage = "Live";
			// chargement des fragments
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/header?stage=" + stage + "&uriHome="+AppliCap.Config.rootUrlSW+AppliCap.Config.URIHome+"&lang="+langue,MyAjax.INNER_DIV,headerId);
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/resapubhaut?stage=" + stage + "&lang="+langue,MyAjax.INNER_DIV,resaPubHautId);
			// désactivé a la demande de versionix/sncm MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/resapubdroite?stage=" + stage + "&lang="+langue,MyAjax.INNER_DIV,resaPubDroiteId);
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/resapubbas?stage=" + stage + "&lang="+langue,MyAjax.INNER_DIV,resaPubBasId);
			MyAjax.makeRequest("http://" + AppliCap.Config.domaine + AppliCap.Config.rootUrl + ssLang + "/footer?stage=" + stage + "&lang="+langue,MyAjax.INNER_DIV,footerId);
		},
		checkAppliCorrectementParametree : function () {
			var erreurs = "";
			if (AppliCap.Config.rootUrl == "unset")
				erreurs += "- rootUrl non définit\n";
			if (AppliCap.Config.domaine == "unset")
				erreurs += "- domaine non définit\n";
			if (AppliCap.Config.URIHome == "unset")
				erreurs += "- URIHome non définit\n";
			if (AppliCap.Config.URIEdito == "unset")
				erreurs += "- URIEdito non définit\n";
			if (AppliCap.Config.URIResa == "unset")
				erreurs += "- URIResa non définit\n";
			if (AppliCap.Config.domaine != document.domain)
				erreurs += "- le domaine définit ne correspond pas au domaine de l'application conteneur\n";
			// autres tests ici
			// ...
			return erreurs;
		}
	},

	Menu : {
		afficheSousMenu : function (id) {
			document.getElementById(id).style.display = "block";
		},
		masqueSousMenus : function (id) {
			document.getElementById(id).style.display = "none";
		}
	},
	
	Lien : {
		changementDeConteneurNecessaire : function (url) {
			// NTN: SNCM VEUT UN RECHARGEMENT SYSTEMATIQUE
			return true;
			/* anciennement:
			// pour l'instant on se contente de dire non seulement
			// quand on est déja sur une page edito et qu'on ne demande que des urls edito
			var isUrlEnCoursEdito = AppliCap.Lien.isUrlEdito(document.location.href);
			var isUrlDemandee = AppliCap.Lien.isUrlEdito(url);
			return !isUrlEnCoursEdito && isUrlDemandee || isUrlEnCoursEdito && !isUrlDemandee;*/
		},
		isUrlEdito : function (url) {
			var uri = AppliCap.Utils.extractURI(url);
			var domaine = AppliCap.Utils.extractDomaine(url);
			return uri != AppliCap.Config.URIHome && uri != "/" && uri != AppliCap.Config.URIResa && (domaine == AppliCap.Config.domaine || domaine == "");
		},
		isUrlHome : function (url) {
			var uri = AppliCap.Utils.extractURI(url);
			var domaine = AppliCap.Utils.extractDomaine(url);
			return (uri == AppliCap.Config.URIHome || uri == "/") && (domaine == AppliCap.Config.domaine || domaine == "");
		},
		isUrlResa : function (url) {
			var uri = AppliCap.Utils.extractURI(url);
			var domaine = AppliCap.Utils.extractDomaine(url);
			return uri == AppliCap.Config.URIResa && (domaine == AppliCap.Config.domaine || domaine == "");
		},
		url : function (url,demandeForceReload) {
			var rawUrl = url;
			url = AppliCap.Utils.supprimeAncre(url);
			// l'url doit commencer par /
			if (url.length>0 && url.charAt(0)!="/")
					url = "/" + url;
			var ssLang = "";		
				
			var langue = AppliCap.Utils.getAndSaveLangue();
			
			if (langue != "fr")
				ssLang = "/" + langue;
			// insertion de la locale dans l'url
			var urlSansrootUrl = AppliCap.Utils.replaceWord(url,AppliCap.Config.rootUrl,"");
			url = AppliCap.Config.rootUrl + ssLang + urlSansrootUrl;
			var forceReloadPage = AppliCap.Utils.getUrlParamValue(url,"forceReloadPage")=="1"?true:false;
			if (AppliCap.Lien.changementDeConteneurNecessaire(url) || forceReloadPage || demandeForceReload) {
				if (AppliCap.Lien.isUrlHome(rawUrl))
					document.location = "http://"+AppliCap.Config.domaine + AppliCap.Config.rootUrlSW + AppliCap.Config.URIHome + "?lang=" + langue;
				else if (AppliCap.Lien.isUrlResa(rawUrl))
					document.location = "http://"+AppliCap.Config.domaine + AppliCap.Config.rootUrlSW + AppliCap.Config.URIResa + "?lang=" + langue;
				else 
					document.location = "http://"+AppliCap.Config.domaine + AppliCap.Config.rootUrlSW + AppliCap.Config.URIEdito + "?rub=" + url + "&lang=" + langue;
			}
			else {
				MyAjax.makeRequest("http://"+AppliCap.Config.domaine + url,MyAjax.INNER_DIV,"pub");
			}
		}
	},
	
	Utils : {
		getSplitedStrAtIndex : function (chaine,separateurs,index) { // séparateurs est en ensemble de caractères concaténés. ex: ";,?/"
			var reg = new RegExp("["+separateurs+"]+", "g");
			var tabSplit = chaine.toString().split(reg);
			return tabSplit[index];
		},
		replaceWord : function (chaine,motAChercher,motDeRemplacement) { // séparateurs est en ensemble de caractères concaténés. ex: ";,?/"
			var reg = new RegExp("("+motAChercher+")", "g");
			return chaine.toString().replace(reg,motDeRemplacement);
		},
		getUrlParamValue : function (url,param) {
			var u = url.toString();
		    if (u.indexOf("?",0)>=0) {
				var reg = new RegExp('(\\?|&|^)'+param+'=(.*?)(&|$)');
				matches = u.match(reg);
				if (matches != null)
					return matches[2] != undefined ? decodeURIComponent(matches[2]).replace(/\+/g,' ') : '';
				else
					return "";
			}
			else
				return "";
		},
		extractURI : function (url) {
			var uri = url;
			if (url.indexOf("?",0)>=0)
				uri = AppliCap.Utils.getSplitedStrAtIndex(url,"?",0);
			uri = AppliCap.Utils.replaceWord(uri,"http://","");
			uri = AppliCap.Utils.replaceWord(uri,AppliCap.Config.domaine,"");
			uri = AppliCap.Utils.replaceWord(uri,AppliCap.Config.rootUrl,"");
			return uri;
		},
		extractDomaine : function (url) {
			var uri = AppliCap.Utils.extractURI(url);
			var domaine = url;
			if (url.indexOf("?",0)>=0)
				domaine = AppliCap.Utils.getSplitedStrAtIndex(url,"?",0);
			domaine = AppliCap.Utils.replaceWord(domaine,"http://","");
			domaine = AppliCap.Utils.replaceWord(domaine,AppliCap.Config.rootUrl,"");
			domaine = AppliCap.Utils.replaceWord(domaine,uri,"");
			return domaine;
		},
		supprimeAncre : function (url) {
			return AppliCap.Utils.getSplitedStrAtIndex(url,"#",0);
		},
		getCookie : function (nom){
	        deb = document.cookie.indexOf(nom + "=");
	        if (deb >= 0) {
	            deb += nom.length + 1;
	            fin = document.cookie.indexOf(";",deb);
	            if (fin < 0) 
	              fin = document.cookie.length;
	             return (unescape(document.cookie.substring(deb,fin)));  
	        }
	        else{
	              return null;
	        }
		},
		
		getAndSaveLangue : function () {
			// Recuperation de la langue dans l'URL
			var langue = AppliCap.Utils.getUrlParamValue(window.location.href,"lang");
			langue = AppliCap.Utils.supprimeAncre(langue);
				  
			// Si pas de langue dans l'URL, lire le cookie
			if (langue == "" || langue == "undefined" || langue == null){
				langue = AppliCap.Utils.getCookie(AppliCap.Config.nomCookie);
				    
				      // Si le cookie n'existe pas ou est vide, on charge la langue par defaut et on cree le cookie
				      if(langue == "" || langue == "undefined" || langue == null){
				        langue = "fr";
				        document.cookie = AppliCap.Config.nomCookie + '=' + escape(langue);
				      }
				  }
				  else{
				        // Creation du cookie de gestion de la langue
					     document.cookie = AppliCap.Config.nomCookie + '=' + escape(langue);
				  }
				  return langue;
				},
				
		getLangueID : function (lang){
			if (lang == "fr"){
				return "433663";
			}
			else if (lang == "en"){
				return "442438";
					}
			else if (lang == "de"){
				return "442435";
					}
			else if (lang == "it"){
				return "442437";
					}
			else {
				return "433663";
			}
		}
		
	}
	
}


