// namespaces
var tru = new Object();
var dom = new Object();

// outils
dom = {
	addLoadEvent : function(func) {
		var oldonload = window.onload;
		if(typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				if(oldonload) {oldonload();}
				func();
			}
		}
	},
	support : {
		'id' : typeof document.getElementById,
		'tag' : typeof document.getElementsByTagName,
		'el' : typeof document.createElement,
		'txt' : typeof document.createTextNode
	},
	css : function(a,o,c1,c2){
		switch (a){
			case 'swap':
			o.className=!dom.css('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
			break;
			case 'add':
			if(!dom.css('check',o,c1)){o.className+=o.className?' '+c1:c1;}
			break;
			case 'remove':
			if(dom.css('check',o,c1)) {
				var rep=o.className.match(' '+c1)?' '+c1:c1;
				o.className=o.className.replace(rep,'');
			}
			break;
			case 'check':
			var found=false;
			var temparray=o.className.split(' ');
			for(var i=0;i<temparray.length;i++){
				if(temparray[i]==c1){found=true;}
			}
			return found;
			break;
		}
	},
	getByClassName : function (node, classname) {
		var a = [];
		var re = new RegExp('\\b' + classname + '\\b');
		var els = document.getElementsByTagName(node);
		for(var i=0,j=els.length; i<j; i++) {
			if(re.test(els[i].className)) {a[a.length] = els[i];}
		}
		return a;
	}
};

// showHide des enfants
tru.enfants = {
	init : function() {
		if(dom.support.id == 'undefined') {return;}
		var enfants = document.getElementById(datas.enfants.all);
		var changer = document.getElementById(datas.enfants.nbre);
		if(!enfants || !changer) {return;}
		dom.css('add', enfants, css.hide);
		if(Number(changer.value) > 0) {tru.enfants.exe(Number(changer.value));}
	},
	
	exe : function(n) {
		for(var i = 1; i <= datas.enfants.total; i++) {
			var o = document.getElementById(datas.enfants.id+i);
			if(!o) {continue;}
			i > n ? dom.css('remove', o, css.show) : dom.css('add', o, css.show);
		}
	}
};

// showHide carte Club (sur form carte famille nombreuse SNCF)
tru.carteClub = {
	init : function() {
		if(dom.support.id == 'undefined') {return;}
		tru.carteClub.target = document.getElementById(datas.carteClub.id);
		var form = dom.getByClassName('form', 'complexe');
		if(form.length < 1 || form.length > 1) {return;}
		var club = form[0].elements[datas.carteClub.club];
		if(!tru.carteClub.target || !club) {return;}
		club[0].checked ? dom.css('remove', tru.carteClub.target, css.hide) : dom.css('add', tru.carteClub.target, css.hide);
	},
	
	exe : function(o) {
		var verif = o.getAttribute('id');
		verif.indexOf(datas.carteClub.verif) != -1 ? dom.css('remove', tru.carteClub.target, css.hide) : dom.css('add', tru.carteClub.target, css.hide);
	}
};

// validation
tru.form = {
	init : function() {
		if(dom.support.id == 'undefined' || dom.support.el == 'undefined' || dom.support.txt == 'undefined') {return;}
		var f = document.forms.length > 0 ? document.forms : null;
		if(!f) {return;}
		for(var i = 0; i < f.length; i++) {
			if(f[i].elements.length < 1) {continue;}
			tru.form.checks(f[i].elements, 'direct');
			f[i].onsubmit = function() {
				if(!this.getAttribute('id')) {return true;}
				tru.form.valid = true;
				tru.form.checks(this.elements, 'submit');
				if(!tru.form.valid) {tru.form.inform(this);}
				return tru.form.valid;
			}
		}
	},

	checks : function(o, m) {
		if(datas.textFields) {
			for(var t in datas.textFields) {
				if(!o[t]) {continue;}
				m == 'submit' ? tru.form.text(o[t]) : o[t].onchange = function() {tru.form.text(this);};
			}
		}
		if(datas.listFields) {
			for(var l in datas.listFields) {
				if(!o[l]) {continue;}
				m == 'submit' ? tru.form.list(o[l]) : o[l].onchange = function() {
					if(datas.forms.multievent.indexOf(this.name) != -1) {tru.enfants.exe(Number(this.value));}
					tru.form.list(this);
				};
			}
		}
		if(datas.groupFields) {
			for(var g in datas.groupFields) {
				var grp = tru.form.boxes(g);
				if(!grp) {continue;}
				for(var i = 0; i < grp.length; i++) {
					grp[i].parent = g;
					m == 'submit' ? tru.form.group(grp[i]) : grp[i].onclick = function() {
						if(datas.forms.multievent.indexOf(this.name) != -1) {tru.carteClub.exe(this);}
						tru.form.group(this);
					};
				}
			}
		}
	},
	
	condition : function(c) {
		var o = document.getElementById(c.champ);
		if(!o) {return false;}
		var check = false;
		if(/^(radio|checkbox)$/i.test(o.type)) {
			check = o.checked ? true : false;
			return check;
		}
		if(o.value) {
			var v = typeof c.valeur == 'number' ? Number(o.value) : o.value;
			switch(c.type) {
				case '=' :
					check = v == c.valeur ? true : false;
					break;
				case '<' :
					check = v < c.valeur ? true : false;
					break;
				case '<=' :
					check = v <= c.valeur ? true : false;
					break;
				case '>' :
					check = v > c.valeur ? true : false;
					break;
				case '>=' :
					check = v >= c.valeur ? true : false;
					break;
			}
		}
		return check;
	},

	text : function(o) {
		var n = o.name;
		var v = o.value;
		var check = datas.textFields[n].condition ? tru.form.condition(datas.textFields[n].condition) : true;
		if(!check) {tru.form.flush(n); return;}
		if(datas.textFields[n].test1 == 'vide') {
			var e1 = datas.forms.vide.test(v);
			if(!e1) {
				if(datas.textFields[n].test2) {
					var e2 = datas.forms[datas.textFields[n].test2].test(v);
					!e2 ? tru.form.error(o, datas.textFields[n].msg2, n) : tru.form.flush(n);
				} else {
					tru.form.flush(n);
				}
			} else {
				tru.form.error(o, datas.textFields[n].msg1, n);
			}
		} else {
			if(v.length != 0) {
				var e1 = datas.forms[datas.textFields[n].test1].test(v);
				!e1 ? tru.form.error(o, datas.textFields[n].msg1, n) : tru.form.flush(n);
			} else {
				tru.form.flush(n);
			}
		}
	},
	
	list : function(o) {
		var n = o.name;
		var check = datas.listFields[n].condition ? tru.form.condition(datas.listFields[n].condition) : true;
		if(!check) {tru.form.flush(n); return;}
		o.value == datas.forms.list ? tru.form.error(o, datas.listFields[n].msg, n) : tru.form.flush(n);
	},
	
	group : function(o) {
		var n = o.parent;
		var check = datas.groupFields[n].condition ? tru.form.condition(datas.groupFields[n].condition) : true;
		if(!check) {tru.form.flush(n); return;}
		o = tru.form.boxes(n);
		var l = o.length;
		var c = 0;
		for(var i = 0; i < l; i++) {
			if(o[i].checked) {break;}
			c++;
		}
		c == l ? tru.form.error(o[0], datas.groupFields[n].msg, n) : tru.form.flush(n);
	},

	boxes : function(n) {
		var o = n.split(':');
		for(var i = 0; i < o.length; i++) {
			o[i] = document.getElementById(o[i]);
			if(!o[i]) {return null;}
		}
		return o;
	},

	error : function(o, m, n) {
		tru.form.valid = false;
		// jeu tortues ninja
		if(o.name == datas.tortuesNinja.name) {return;}
		var id = 'msg'+n;
		var el = document.getElementById(id);
		if(el) {
			el.firstChild.nodeValue = ' '+m;
			el.className = css.erreur;
		} else {
			el = document.createElement('em');
			el.appendChild(document.createTextNode(' '+m));
			el.setAttribute('id', id);
			el.className = css.erreur;
			var p = tru.form.get(o);
			p[1] == 'insertBefore' ? p[0].parentNode.insertBefore(el, p[0]) : p[0].appendChild(el);
		}
	},

	flush : function(n) {
		var id = 'msg' + n;
		var el = document.getElementById(id);
		if(el) {
			el.firstChild.nodeValue = ' ';
			el.className = '';
		}
	},

	get : function(o) {
		var how = 'appendChild';
		if(o.parentNode.nodeName.toLowerCase() == 'label') {
			o = o.parentNode;
			t = o.parentNode;
			if(t.nodeName.toLowerCase() == 'div' && t.className != 'field') {
				o = t;
			} else {
				how = 'insertBefore';
			}
		}
		while(o.previousSibling) {
			o = o.previousSibling;
			if(o.nodeType == 1) {
				if(/^(input|select|textarea)$/i.test(o.nodeName) || dom.css('check',o,datas.forms.hidden)) {continue} else {break};
			}
		}
		return o.nodeName.toLowerCase() == 'label' || o.nodeType == 3 ? [o, how] : [o, how];
	},

	inform : function(o) {
		var verif = document.getElementById('inform'+o.name);
		if(verif) {
			verif.focus();
			return;
		}
		var elt = document.createElement('p');
		// jeu tortues ninja
		if(o.name == datas.tortuesNinja.inscription) {
			var msg = datas.forms.informMSG.replace('en rouge', 'en jaune');
		} else if(o.name == datas.tortuesNinja.question) {
			var msg = datas.tortuesNinja.msg;
		} else {
			var msg = datas.forms.informMSG;
		}
		var txt = document.createTextNode(msg);
		elt.appendChild(txt);
		elt.className = datas.forms.informCLASS;
		elt.setAttribute('id','inform'+o.name);
		elt.setAttribute('tabIndex',-1);
		o.parentNode.insertBefore(elt,o);
		elt.focus();
	}
};

// IE : PNG
tru.iePNG = {
	init: function() {
		// test IE
		if(document.all != null && window.opera == null) {
			// test IE 6
			if(window.XMLHttpRequest == null && document.implementation != null && document.compatMode != null) {
				var img = document.getElementsByTagName('img');
				if(!img.length) {return;}
				for(var i = 0; i < img.length; i++) {
					if(/png$/i.test(img[i].src)) {
						var src = img[i].src;
						img[i].src = datas.iePNG.transparent;
						img[i].runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"',sizingMethod='image');";
					}			
				}
				var els = dom.getByClassName('div', 'inner');
				if(!els.length) {return;}
				for(var i = 0; i < els.length; i++) {
					var cur = els[i];
					var url = datas.iePNG[cur.parentNode.className];
					var off = cur.offsetHeight;
					var span = document.createElement('span');
					span.className = 'iePNG';
					span.style.height = off;
					span.style.marginBottom = '-'+off+'px';
					var img = document.createElement('img');
					img.className = 'headerIE';
					img.src = datas.iePNG.transparent;
					img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+url+"',sizingMethod='image');";
					img.alt = '';
					img.style.marginTop = off-1000+'px';
					span.appendChild(img);
					cur.parentNode.insertBefore(span, cur);
				}
			}
		}
	}
};

tru.colonne = {
	init: function() {
		
		var colonneDroite =0;
		if(document.getElementById('sideDivers')){
			/** focus rubriques a droite **/
			/*var htmlNavRapide = document.createElement("div");
			htmlNavRapide.innerHTML = '<ul id="siteDivFocus"><li class="infosConseils"><a href="http://www.babiesrus.fr/babies/catalogue.php">Le catalogue puériculture</a></li><li class="catalogue"><a href="http://www.babiesrus.fr/babies/infos-et-conseils.php">Infos et conseils</a></li><li class="listeNaissance"><a href="http://www.babiesrus.fr/babies/liste_naissance.php">Liste de naissance</a></li></ul>';
			document.getElementById('sideDivers').appendChild(htmlNavRapide);*/
			/** fin du focus **/
			 colonneDroite = parseInt(document.getElementById('sideDivers').offsetHeight) + parseInt(document.getElementById('sideMenus').offsetTop);
		}
		var colonneGauche =0;
		if(document.getElementById('sideMenus')){
			colonneGauche = parseInt(document.getElementById('sideMenus').offsetHeight) + parseInt(document.getElementById('sideMenus').offsetTop);
		}
		var plusGrandeTaille = colonneGauche;
		var centre = parseInt(document.getElementById('wrapper').offsetHeight);
		//console.log("wrapper :::  "+centre);
		//console.log("colonneGauche :::  "+centre);
		//console.log("colonneDroite :::  "+centre);
	//	alert("colonneDroite   :    "+colonneDroite);
		//alert("colonneGauche   :    "+colonneGauche);
		//alert("centre   :    "+centre);
		var aux = 0;
		//alert('colonneDroite   '+colonneDroite+'  colonneGauche    '+colonneGauche+'    plusGrandeTaille'+ plusGrandeTaille+'         document.getElementById("sideMenus").style.top   '+document.getElementById('sideMenus').offsetTop);
		if(colonneGauche < colonneDroite)
		{
			plusGrandeTaille = colonneDroite;
		}
		// Si la colonne centrale est plus grande on ne rajoute pas le top de side menus
		aux = plusGrandeTaille;
		if(plusGrandeTaille < centre)
		{
			plusGrandeTaille = centre;
			aux = plusGrandeTaille;
		}
		else{
			//aux = plusGrandeTaille + document.getElementById('sideMenus').offsetTop;
			
		}
		//alert("colonneDroite   :    "+colonneDroite);
		//alert("colonneGauche   :    "+colonneGauche);
		//alert("centre   :    "+centre);
		document.getElementById('wrapper').style.height=parseInt(aux)+ parseInt(20)-parseInt(157) + 155+'px';
		document.getElementsByTagName("body")[0].style.height=parseInt(aux)+ parseInt(20)-parseInt(157) + 155+'px';//129 pour le footer defilant babies
		//inserttion d'un footer
		/** supression footer **/
	//	var htmlFooterSalah ="<div id='footerNoel'><div id='maisonNoel'></div></div>";

		//var htmlFooterSalahNode = document.createElement("div");
		//htmlFooterSalahNode.id="footerNoel";
		//document.getElementsByTagName('body')[0].appendChild(htmlFooterSalahNode);
		/** fin de la supression **/
		setMargeTitre();
		centerTxt();
	}
};
// Pas de scroll si espace horizontal > taille du conteneur principal
tru.scroll = function(width) {
	var body = document.body;
	var html = document.getElementsByTagName('html')[0];
	if(body.offsetWidth > width) {
		if(document.all && !window.opera) {
			html.className = 'noscroll';
		} else {
			if(/(^|\s*)noscroll(\s*|$)/i.test(body.className)) {return;}
			body.className += body.className ? ' noscroll' : 'noscroll';
		}
	} else {
		if(document.all && !window.opera) {
			html.className = '';
		} else {
			if(!/(^|\s*)noscroll(\s*|$)/i.test(body.className)) {return;}
			var toReplace = body.className.match(' noscroll') ? ' noscroll' : 'noscroll';
			body.className = body.className.replace(toReplace,'');
		}
	}
};
/* gestion de la patate des titres */
	function setMargeTitre(){
		
		if(document.getElementById('flir'))
		{
			/** marge horisentale **/
			var largeur_temp = document.getElementById('flir').offsetWidth;
			var largeurLeft = 53;
			var largeurRight = 63;
			var largeurTitre = document.getElementById('titreH2').offsetWidth;
			
			var sousLargeur = largeurLeft+largeurRight+largeur_temp;
			var marge = (largeurTitre - sousLargeur) / 2;
			if(document.getElementById('spanLeft'))
				document.getElementById('spanLeft').style.marginLeft = marge+'px';
			/** marge Verticale **/
			var aux = document.getElementById('flir');
			
			var emxx = aux.getElementsByTagName('img')[0];
			if(emxx)
				var hauteurTemp = Math.round(document.getElementById('flir').offsetHeight);
			//alert(aux.getElementsByTagName('img')[0].style.filter);
			var hauteurTotale =60;
			
			var margeHaute =  hauteurTotale - hauteurTemp;
			var hauteurDuEm = hauteurTotale - (margeHaute/2);
			document.getElementById('flir').style.height = hauteurDuEm+'px';
			document.getElementById('flir').style.paddingTop = (margeHaute/2)+'px';
			document.getElementById('enGlobe').style.visibility="visible";
			if(document.getElementById('desCription')){
				document.getElementById('flir').style.width=document.getElementById('flir').offsetWidth+"px";
				//document.getElementById('enGlobe').style.paddingLeft = (document.getElementById('enGlobe').offsetWidth - largeur_temp) / 2 + 'px';
			}
		}
	}
	function centerTxt()
	{
		if(document.getElementById("flir"))
		{
			var largeur = document.getElementById("flir").offsetWidth;
			if(document.getElementById("flir").getElementsByTagName("img").length > 0)
				document.getElementById("flir").getElementsByTagName("img")[0].style.marginLeft = (largeur - document.getElementById("flir").getElementsByTagName("img")[0].offsetWidth) /2 +'px';
		}
		
	}
// chargement fonctions
dom.addLoadEvent(tru.form.init);
dom.addLoadEvent(tru.enfants.init);
dom.addLoadEvent(tru.carteClub.init);
//dom.addLoadEvent(tru.iePNG.init);
dom.addLoadEvent(tru.colonne.init);

