var $ = function (str){
	return document.getElementById(str);
}

function toggleNewProg() {
    var faqs = document.getElementsByTagName('h3');
    var itemFound = false;
    var newProgTitle = 'Futur programme de fidélité SNCF';
    var i = 0;
    var itemTitle;
    while (itemFound == false && i < faqs.length) {
        itemTitle = faqs[i].innerHTML;
        if (itemTitle == newProgTitle) 
        {
            itemFound = true;
        }
        i++;
    }
    if (itemFound == true) {
        switchFaq(faqs[i - 1]);
    }
    return false;
}
function isNewProgPage() {
    if (window.location.href.indexOf('?') > 0) {
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        if (hashes[0].length > 0) {
            var isNewProg = hashes[0].split('=');
            if (isNewProg.length == 2) {
                if (isNewProg[1] == 'true') {
                    toggleNewProg();
                }
            }
        }
    }
}
function whileLoad() {
    if (document.body) {
		document.body.className+=" hasJS";
	} else {
		setTimeout("whileLoad()",10);
	}
}
whileLoad();

function switchFaq(obj) {
	if(!obj) return;
	var grandparent=obj.parentNode.parentNode;
	var parent=obj.parentNode;
	var node=grandparent.childNodes;
	for (var i=0,n=node.length;i<n;i++) {
		var x=node[i];
		if(x.nodeType==1 && x.nodeName=='DIV') {
			x.className = x.className.replace(/\bblk_faq\b/g, 'blk_faq_x');
			if(x==parent) {
				x.className = x.className.replace(/\bblk_faq_x\b/g, 'blk_faq');
			}
		}
	}
}

function switchitem(obj, autoclose) {
	if(!obj) return;
	var root=obj.parentNode.parentNode; /*UL*/
	var parent=obj.parentNode; /*LI*/
		
	if (autoclose) {
		var str = parent.className;
		parent.className = str.match(/\bactive\b/) ? str.replace(/\bactive\b/i,'') : str+' active';
	} else {
		var Lis=root.childNodes; /*LIs*/
		
		for (var i=0,n=Lis.length;i<n;i++) {
			var x = Lis[i];	
			if(x.nodeType==1 && x.nodeName=='LI') {
				x.className = x.className.replace(/\bactive\b/i, '');
				if(x==parent) {
					x.className +=  ' active';
				}
			}
		}
	}
}

function switchSsFaq(obj, autoclose) {
	if(!obj) return;
	var root=obj.parentNode.parentNode.parentNode; /*UL*/
	var parent=obj.parentNode.parentNode; /*LI*/
	
	
	if (autoclose) {
		var str = parent.className;
		parent.className = str.match(/\bactive\b/) ? str.replace(/\bactive\b/i,'') : str+' active';
	} else {
		var Lis=root.childNodes; /*LIs*/
		
		for (var i=0,n=Lis.length;i<n;i++) {
			var x = Lis[i];	
			if(x.nodeType==1 && x.nodeName=='LI') {
				x.className = x.className.replace(/\bactive\b/i, '');
				if(x==parent) {
					x.className +=  ' active';
				}
			}
		}
	}
}

function switchOpe(obj) {
	if(!obj) return;
	var grandparent=obj.parentNode.parentNode;
	var x=obj.parentNode;
	if (x.className.match(/\bblk_ope_x\b/)) {
		x.className = x.className.replace(/\bblk_ope_x\b/g, "blk_ope");
	} else {
		x.className = x.className.replace(/\bblk_ope\b/g, "blk_ope_x");
	}
}


function switchCpt(obj) {
	var par = document.getElementById("ctn_main_blk");
	var tr = par.getElementsByTagName("tr");
	for (var i=0;i<tr.length;i++) {
		var x= tr[i];
		if (x.className.match(/\bblk_cpt_x\b/)) {
			x.className = x.className.replace(/\bblk_cpt_x\b/g, "blk_cpt");
		}
		else {
			x.className = x.className.replace(/\bblk_cpt\b/g, "blk_cpt_x");
		}
	}
}

// getStyle : retourne la valeur d'une propriete CSS appliquee ?  un element
function getStyle(oElm, strCssRule){
   var strValue = "";
   if(document.defaultView && document.defaultView.getComputedStyle) {
	   try{ strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); }
	   catch(e) { strValue = ""; }
   }
   else if(oElm.currentStyle) {
	   try{
		   strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
			   return p1.toUpperCase();
		   });
		   strValue = oElm.currentStyle[strCssRule];
	   } catch(e) {
		   strValue = "";
	   }
   }
   return strValue;
}

/*retourne la valeur entiere d'un style*/
function intStyle(oElm, strCSSRule) {
   var val = parseInt(getStyle(oElm, strCSSRule));
   if (isNaN(val)) val=0;
   return val;
}
function floatStyle(oElm, strCSSRule) {
   var val = parseFloat(getStyle(oElm, strCSSRule));
   if (isNaN(val)) val=0;
   return val;
}

var IS_IE = document.all && window.print && !window.opera;
function initNavFunctionnality() {
    isNewProgPage();
    document.body.className += " hasJS";
	var blk_nav = document.getElementById("blk_nav");
	if (!blk_nav) return;
	var li = blk_nav.getElementsByTagName("li");
	var licurrent = null;
	for (var i=0; i<li.length; i++) {
		if (li[i].className.match(/\bactive\b/)) {
			licurrent=li[i];
			break;
		}
	}
	if (licurrent) {
		var divSSNav = licurrent;
		while(divSSNav.nodeName!="DIV" || !divSSNav.className.match(/\bssNav\b/)) divSSNav = divSSNav.parentNode;
		var navid=divSSNav.parentNode.id;
	} else {
			var navid="ctn_nav";
	}
	showNav(navid,1, true, "btn_nav" );

	//ssNav
	//showNav('ctn_nav',1, true, "btn_nav" );
}
addEvent(window, "load", initNavFunctionnality);
var tmpNav=null;
var tmpNav2=null;
var currentNavId="ctn_nav";

function showNav(elmId, sens, forceLoad, makeState) {
	if (!forceLoad && elmId==currentNavId) return;
	var blkNavLeft = document.getElementById("blk_navLeft");
	var insideNavContainer = document.getElementById("insideNavContainer");
	//var blk_srch = document.getElementById("blk_srch");
	if (!blkNavLeft.alreadyInit) {
		var tmpBodySize = getStyle(document.body,"font-size");
		var bodySize = parseFloat(tmpBodySize)*(tmpBodySize.match(/em/) ? 16 : 1);
	
		var tmp = document.createElement("div");
		tmp.id="tmpNav2";
		tmpNav2 = insideNavContainer.insertBefore(tmp, insideNavContainer.firstChild);
		with(blkNavLeft.style) {
			height = (blkNavLeft.offsetHeight/bodySize)+7.5+"em";
			width = blkNavLeft.offsetWidth+"px";
		}
		with(tmpNav2.style) {
			cssFloat="left";
			styleFloat="left";
			width = blkNavLeft.style.width;
			height = blkNavLeft.style.height;
			position = "relative";
		}
		tmpNav = insideNavContainer.insertBefore(tmpNav2.cloneNode(true), tmpNav2);
		tmpNav.id = "tmpNav"
		with(insideNavContainer.style) {
			width = blkNavLeft.offsetWidth*3+"px";
			position = "absolute"; 
			top = "0";
		}
		blkNavLeft.alreadyInit = true;
	}
	if (forceLoad) document.getElementById("ctn_nav").style.display="none";
	if (currentNavId=="blk_srch" && elmId=="ctn_nav") sens=-1;
//	if (currentNavId=="ctn_nav" && elmId=="blk_srch") sens=-1;
	if (sens<0) {
		insideNavContainer.style.left = 0;
		if (currentNavId=="blk_srch") {
			document.getElementById("blk_srch").innerHTML = tmpNav.innerHTML;
		}
		tmpNav.innerHTML=document.getElementById(currentNavId).innerHTML;
		tmpNav2.innerHTML = document.getElementById(elmId).innerHTML;
		insideNavContainer.style.left = 0;
		tweenX(insideNavContainer, 0, -blkNavLeft.offsetWidth, -1);
		duplicateEvents(tmpNav2);
	} else {
		insideNavContainer.style.left = "-"+blkNavLeft.offsetWidth+"px";
		if (currentNavId=="blk_srch") {
			document.getElementById("blk_srch").innerHTML = tmpNav.innerHTML;
		}
		tmpNav.innerHTML = document.getElementById(elmId).innerHTML;
		tmpNav2.innerHTML=document.getElementById(currentNavId).innerHTML;
		if (!forceLoad) insideNavContainer.style.left = "-"+blkNavLeft.offsetWidth+"px";
		else insideNavContainer.style.left=0;
		var currentNav = document.getElementById(elmId);
		tmpNav.innerHTML = currentNav.innerHTML;
		if (!forceLoad) tweenX(insideNavContainer, -blkNavLeft.offsetWidth, 0, 1);
		duplicateEvents(tmpNav);
	}
	var navblk = document.getElementById("blk_alt_nav");
	
	if (makeState) {
		var a = navblk.getElementsByTagName("a");
		for (var i=0; i<a.length; i++) {
			a[i].className = a[i].className.replace(/\bactive\b/g,'');
		}
		var btn = typeof(makeState)=="string" ? document.getElementById(makeState) : makeState;
		btn.className+=" active";
		btn.blur();
	}
	currentNavId = elmId;
}

var globalCurrentDiv = null;
var globalNextdiv = null;
var swapsrcUpdate = false;
function swapSrc(elm) {
	if (swapsrcUpdate) return;
	var div = elm.parentNode.parentNode;
	var h2 = elm.parentNode;
	var nextDiv = elm.parentNode;
	var allH2 = div.getElementsByTagName("h2");
	for (var i=0; i<allH2.length; i++) {
		var x = allH2[i];
		x.className = x.className.replace(/\bactive\b/g,'');
	}
	h2.className+=" active";
	while(nextDiv.nodeName && nextDiv.nodeName!="DIV") {
		nextDiv = nextDiv.nextSibling;
	}
	if (nextDiv.className.match(/\bcurrent\b/)) return;
	var child = div.childNodes;
	for (var i=0; i<child.length; i++) {
		var x = child[i];
		if (x.nodeType==1 && x.className.match(/\bcurrent\b/)) {
			currentDiv = x;
			break;
		}
	}
	nextDiv.style.display="block"; nextDiv.style.height=0;
	
	globalNextdiv = nextDiv;
	globalCurrentDiv = currentDiv;
	swapsrcUpdate = true;
	tweenY2(
			nextDiv, 0, nextDiv.scrollHeight, 1, function() {globalNextdiv.className+=" current"; swapsrcUpdate=false;},
			currentDiv, currentDiv.scrollHeight ,0, -1, function() {globalCurrentDiv.className = globalCurrentDiv.className.replace(/\bcurrent\b/g,''); swapsrcUpdate=false;  } 
			);
	currentLink = elm;
	elm.blur();
}

function tweenY(elm, start, end, sens, f) {
	start = start+(sens*8);
	if ((sens>0 && start>=end) || (sens<0 && start<=end)) {
		start=end;
	}
	elm.style.height = start+"px";
	if ((sens>0 && start<end) || (sens<0 && start>end)) { 
		setTimeout(function() {tweenY(elm, start, end, sens, f) }, 10);
	} else {
		f();
	}
}
var speedTween = 10;
if (IS_IE) speedTween=5;
var timeTween = 5;
if (IS_IE) timeTween=15;

function tweenY2(elm, start, end, sens, f, elm2, start2, end2, sens2, f2) {
	start = start+(sens*speedTween);
	if ((sens>0 && start>=end) || (sens<0 && start<=end)) {
		start=end;
	}
	elm.style.height = start+"px";
	
	start2 = start2+(sens2*speedTween);
	if ((sens2>0 && start2>=end2) || (sens2<0 && start2<=end2)) {
		start2=end2;
	}
	elm2.style.height = start2+"px";
	
	if ((sens>0 && start<end) || (sens<0 && start>end) && (sens2>0 && start2<end2) || (sens2<0 && start2>end2) ) { 
		setTimeout(function() {tweenY2(elm, start, end, sens, f, elm2, start2, end2, sens2, f2) }, timeTween);
	} else {
		f(); f2();
	}
}

function tweenX(elm, start, end, sens) {
	start = start+(sens*speedTween);
	if ((sens>0 && start>=end) || (sens<0 && start<=end)) {
		start=end;
	}
	elm.style.left = start+"px";
	if ((sens>0 && start<end) || (sens<0 && start>end)) setTimeout(function() {tweenX(elm, start, end, sens) }, timeTween);
}

function checkField(fieldId){
	var error = false;
	for (var i=0; i<fieldId.length; i++) {
		var f = document.getElementById(fieldId[i]);
		f.isChecking=true;
		if(f.onfocus) f.onfocus();
		f.isChecking=false;
		switch(f.type) {
			case "text" : 
				if (f.value=='' || f.value==f.oldValue) error=true; 
				if (f.getAttribute('rel')=="date") {
					 if (!/([012]\d|3[01])\/(0\d|1[012])\/(200[789]|20[123][0\d])/.test(f.value)) {
					 	error=true;
					 }
				}
				break;
			case "select-one":
			case "select-multiple":
				if (f.value==-1) error=true;
				break;
		}
	}
	findErrorMsg(f).style.display= error ? '' : 'none';
	return !error;
}

var duplicateEvents = function(coll) {
	var from = document.getElementById("ctn_nav").getElementsByTagName("a")
	var to = coll.getElementsByTagName("a")
	for(var i=0,l=from.length;i<l;i++){
		if(!to[i]) continue;
		if(to[i].parentNode.tagName == "H2") {
			var fn = function (){
				swapSrc(this); 
				return false;
			}
			to[i].onclick = fn
		}
		else if(!/ssNav/.test(to[i].parentNode.parentNode.className)){
			var fn = function (index){
				return function (){
					from[index].onclick();
					return false;
				}
			}(i);
			to[i].onclick = fn
		}
	}
	var tmp = document.getElementById("tmpNav2");
	if(tmp.getElementsByTagName("div") && tmp.getElementsByTagName("div")[0]){
		var p = tmp.getElementsByTagName("div")[0].getElementsByTagName("p")[0].getElementsByTagName("a")[1];
		p.onclick = function (e){
			showNav('ctn_nav', 1, null, 'btn_nav'); 
			return false
		}
	}
	
	
}


function findErrorMsg(elm) {
	var div = elm; 
	while(div.nodeName!='DIV') div=div.parentNode;
	var span = div.getElementsByTagName('span');
	for (var i=0; i<span.length; i++) {
		if (span[i].className.match(/\berror\b/)) return span[i];
	}
}

function inputValue(elm, state) {
	elm.oldValue=elm.value;
	elm.onfocus=function() {
		if (!this.isChecking && this.value==this.oldValue) this.value='';			
	}
	elm.onblur=function() {
		if(this.value=='') this.value=this.oldValue;
	}
	if (!elm.isChecking) elm.onfocus();
}


function Sezame(page,larg,haut,scraul){
		var posXpop = (screen.availWidth-larg)/2
		var posYpop = (screen.availHeight-haut)/2
		param = "width="+larg+",height="+haut+",left="+posXpop+",top="+posYpop+",scrollbars="+scraul
		popup = window.open(page,"pop",param)
	}
