function getById(el) {
	return document.getElementById(el);
}

function getByTag(par,el) {
	var par = (par == '') ? document.body : par;
	return par.getElementsByTagName(el);
}

function addClass(obj,newClass) {
	if(!obj.className.match(new RegExp(newClass)))
		obj.className+=(obj.className.length>0? " ": "") + newClass;
}
	
function removeClass(obj,oldClass) {
	obj.className=obj.className.replace(new RegExp("( ?|^)"+oldClass+"\\b"), "");
}

function getByClass(cla,par,el) {
	var par = (par == '') ? document.body : par;
	var el = (el == '') ? '*' : el;
	if(/.*native code.*/.test(document.getElementsByClassName)) {
		return par.getElementsByClassName(cla);
	}
	else {
		var tagColl = par.getElementsByTagName(el);
		trimedColl = new Array;
		for (var i = 0; tagColl[i]; i++) {
			if(tagColl[i].className.match(new RegExp(cla))) {
				trimedColl[trimedColl.length]=tagColl[i];
			}
		}
		return trimedColl;
	}
}

var addEvent = function() {
  if (window.addEventListener) {
    return function(el, type, fn) {
      el.addEventListener(type, fn, false);
    };
  } else if (window.attachEvent) {
    return function(el, type, fn) {
      var f = function() {
        fn.call(el, window.event);
      };
      el.attachEvent('on' + type, f);
    };
  }
}();

function getStyle(obj,cssRule) {
	var cssVal = "";
	if (document.defaultView && document.defaultView.getComputedStyle) {
		cssVal = document.defaultView.getComputedStyle(obj, "").getPropertyValue(cssRule);
	}
	else if (obj.currentStyle) {
		cssVal = cssRule.replace(/\-(\w)/g, function (match, p1) {
			return p1.toUpperCase();
		});
		cssVal = obj.currentStyle[cssVal];
	}
	return cssVal;
}


var dimx,dimy,xPos,yPos,featur,xEcran=800,yEcran=600;
if(screen.width && screen.height){
	xEcran = screen.width;
	yEcran = screen.height;
}

function setLinks(linkTags){
	var linkCollection = [];
	for (var j = 0; linkTags[j]; j++) {
		linkCollection[j] = getByTag('',linkTags[j]);
		for (var i = 0; linkCollection[j][i]; i++) {
			if(/bookmark|external|corporate|sponsor|download|help|visit|partners/.test(linkCollection[j][i].getAttribute('rel'))) {
				linkCollection[j][i].onclick = function(e) {
					if (!e) var e = window.event;
					if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey)
						return true;
					if(/visit/.test(this.rel)) {
						dimx=450; dimy=300;
						xPos=(xEcran - dimx)/2; yPos=(yEcran - dimy)/2;
					featur = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,screenX="+xPos+",left="+xPos+",screenY="+yPos+",top="+yPos+",width="+ dimx + ",height=" + dimy + "";
						var zoom = window.open(this.href,'Zoom',featur);
						if (window.focus && zoom) zoom.focus();
					}
					else
						window.open(this.href);
					return false;
				}
			}
		}
	}
}

function setFancyFields(){
	var labelColl = getByTag(getById('page'),'label');
	for(var i = 0; i < labelColl.length; i++) {
		if(/fancy/.test(labelColl[i].className)) {
			var spanI = getByTag(labelColl[i],'span')[0];
			var fieldI = getByTag(labelColl[i],'input')[0];
			if( spanI && fieldI ){
				fieldI.value = fieldI.title = spanI.childNodes[0].nodeValue;
				addEvent(fieldI, 'focus', function(e) {
					if(this.value==getByTag(this.parentNode,'span')[0].childNodes[0].nodeValue)
						this.value='';
						addClass(this,'straight');
				});
			}
		}
	}
}

function testNewsForm(nForm) {
	
	var subscriber = getById('subscriber_name').value;
	var label = getById('subscriberLabel').childNodes[0].nodeValue;
	
	var email = getById('lm_email').value;

	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (filter.test(email)) {

	} else {
		alert("Veuillez saisir une adresse email correcte.");
		getById('lm_email').select();
		return false;
	}

	if((subscriber=='') || (subscriber == label)) {
		alert("Veuillez entrer un nom de souscription");
		getById('subscriber_name').select();
		return false;
	}
	getById('newsForm').target = "_blank";
	nForm.submit();
}

function initNewsForm() {
	var nForm = getById('newsForm');
	var nBtn = getById('newsletterGo');
	if(!nForm || !nBtn) return;
	nBtn.onclick = function() {
		testNewsForm(nForm);
		return false;
	}
}

function fixIE() {
	var ulColl = getByTag(getById('header'),'ul');
	for(var i = 0; ulColl[i]; i++) {
		var liColl = getByTag(ulColl[i],'li');
		for(var j = 1; liColl[j]; j++) {
			liColl[j].innerHTML = ' / ' + liColl[j].innerHTML;
		}
	}
}

function fixLowIE() {
	var ulColl = getByTag(getById('page'),'ul');
	for(var i = 0; ulColl[i]; i++) {
		var liColl = getByTag(ulColl[i],'li');
		if(liColl[0])
			addClass(liColl[0],'first-child');
	}
}

function initPhotos() {
	var photoZone = getById('photoZone');
	if(!photoZone || !/photos/.test(photoZone.className) || getStyle(photoZone,'position')!='relative') return;
	new Diapo(photoZone);
}

function Diapo(container) {
	this.container = container;
	var c = this.container.className;
	c = c.split(' ');
	this.photos = c[1].split('photos-')[1].split('-');
	this.photos.unshift(c[0].split('photo')[1]);
	this.currentKey = 0;
	var pc = getById('photoCalls');
	if(!pc) {
		this.callContainer = document.createElement('div');
		this.callContainer.id = 'photoCalls';
	}
	else {
		this.callContainer = getById('photoCalls');
	}
	this.callContainer.innerHTML = '<a id="photoCallPrevious" class="hidden">&laquo;</a> <span>Plus d\'images</span> <a id="photoCallNext" class="hidden">&raquo;</a>';
//	this.container.innerHTML = '';
	if(!pc)
		this.container.appendChild(this.callContainer);
	this.prev = getById('photoCallPrevious');
	this.nxt = getById('photoCallNext');
	this.prev.onclick = function (that) {
		return function () {
			that.shift(that.currentKey-1);
		}
	}(this);
	this.nxt.onclick = function (that) {
		return function () {
			that.shift(that.currentKey+1);
		}
	}(this);
	this.prev.onfocus = function (that) {
		return function () {
			that.shift(that.currentKey-1);
		}
	}(this);
	this.nxt.onfocus = function (that) {
		return function () {
			that.shift(that.currentKey+1);
		}
	}(this);
	this.shift(this.currentKey);
}

Diapo.prototype.shift = function (key) {
	if((key-1)>-1)
		removeClass(this.prev,'hidden');
	else
		addClass(this.prev,'hidden');
	if((key+1)<this.photos.length)
		removeClass(this.nxt,'hidden');
	else
		addClass(this.nxt,'hidden');
	this.container.className = "photo"+this.photos[key];
	this.currentKey = key;
}

function initFaqs() {
	var faqs = getById('faqs');
	if(!faqs) return;
	new Faqs(faqs);
}

function Faqs(container) {
	this.container = container;
	this.displayer = document.createElement('div');
	this.displayer.id = 'answers';
	this.container.parentNode.appendChild(this.displayer);
	this.callers = getByTag(this.container,'h3');
	this.cId = 0;
	for(var i = 0; this.callers[i]; i++) {
		this.callers[i].a=getByTag(this.callers[i],'a')[0];
		this.callers[i].tgt = getById(this.callers[i].a.href.split("#")[1]);
		this.callers[i].a.cId = i;
		this.callers[i].a.href="#answers";
		this.callers[i].a.onclick = function (that) {
			return function () {
				that.show(this.cId);
			}
		}(this);
	}
	this.show(0);
}

Faqs.prototype.show = function(cId) {
	this.displayer.innerHTML = this.callers[cId].tgt.innerHTML;
	removeClass(this.callers[this.cId],'active');
	addClass(this.callers[cId],'active');
	this.cId = cId;
}

/* Avancement
---------------------- */
function initAdvancement() {
	var advTables = getByClass('works',getById("content"),'table');
	if(advTables && advTables.length > 1) new Advancements(advTables);
}

function Advancements(advTables) {
	this.tables = advTables;
	this.prt = advTables[0].parentNode;
	this.prt.id = "section";
	this.currentId = 0;
	this.pagers = [];
	for (var i = 0; this.tables[i]; i++) {
		this.tables[i].cId = i;
		this.tables[i].id = "section_" + i;
		if(i>0) addClass(this.tables[i],'hiddenTable');
	}
	var div = document.createElement('div');
	div.className = 'block';
	var p = document.createElement('p');
	p.className = 'pager';
	p.id = 'tablePager';
	
	
	this.prev = document.createElement('a');
	this.prev.cId = 0;
	this.prev.id = "prevTab";
	this.prev.href="#section";
	this.prev.className = 'hidden';
	this.prev.innerHTML = '&laquo;';
	this.prev.onclick = function (that) {
		return function () {
			that.show(this.cId);
		}
	}(this);
	p.appendChild(this.prev);
	for(var i = 0; i < this.tables.length; i++) {
		this.pagers[i] = document.createElement('a');
		this.pagers[i].href="#section";
		this.pagers[i].id = "pager_"+i;
		this.pagers[i].cId = i;
		this.pagers[i].innerHTML = i+1;
		this.pagers[i].onclick = function (that) {
			return function () {
				that.show(this.cId);
			}
		}(this);
		if(i==0) this.pagers[i].className = 'current';
		
		p.appendChild(this.pagers[i]);
	}
	this.nxt = document.createElement('a');
	this.nxt.cId = 1;
	this.nxt.id = "nxtTab";
	this.nxt.href="#section";
	this.nxt.innerHTML = '&raquo;';
	this.nxt.onclick = function (that) {
		return function () {
			that.show(this.cId);
		}
	}(this);
	p.appendChild(this.nxt);
	div.appendChild(p);
	var n = this.prt.nextSibling;
	if(n)
		this.prt.parentNode.insertBefore(div,n);
	else
		this.prt.appendChild(div);
}

Advancements.prototype.show = function(cId) {
	if(this.currentId == cId) return;

	addClass(this.tables[this.currentId],'hiddenTable');
	removeClass(this.tables[cId],'hiddenTable');

	removeClass(this.pagers[this.currentId],'current');
	addClass(this.pagers[cId],'current');
	this.currentId = cId;
	if(this.currentId>0) {
		this.prev.cId = this.currentId - 1;
		removeClass(this.prev,'hidden');
	}
	else {addClass(this.prev,'hidden');}
	if(this.currentId<this.tables.length-1) {
		this.nxt.cId = this.currentId + 1;
		removeClass(this.nxt,'hidden');
	}
	else {addClass(this.nxt,'hidden');}
}

/* Tarifs
---------------------- */
function initTarifs() {
	var pricesTables = getByClass('prices',getById("content"),'table');
	if(pricesTables && pricesTables.length > 2) new Prices(pricesTables);
}

function Prices(pricesTables) {
	this.tables = pricesTables;
	this.prt = pricesTables[0].parentNode;
	this.prt.id = "section";
	this.currentId = 1;
	this.pagers = [];
	var k = 0;
	this.pairs = [];
	for (var i = 0; this.tables[i]; i++) {
		this.tables[i].cId = i;
		this.tables[i].id = "section_" + i;
		if(i>1) addClass(this.tables[i],'hiddenTable');
		if(i%2==0){
			k++;
			this.pairs[k] = [this.tables[i]];
		}
		else {this.pairs[k][1] = this.tables[i];}
	}
	var div = document.createElement('div');
	div.className = 'block';
	var p = document.createElement('p');
	p.className = 'pager';
	p.id = 'tablePager';
	this.prev = document.createElement('a');
	this.prev.cId = 1;
	this.prev.id = "prevTab";
	this.prev.href="#section";
	this.prev.className = 'hidden';
	this.prev.innerHTML = '&laquo;';
	this.prev.onclick = function (that) {
		return function () {
			that.show(this.cId);
		}
	}(this);
	p.appendChild(this.prev);
	for(var i = 1; i < this.pairs.length; i++) {
		this.pagers[i] = document.createElement('a');
		this.pagers[i].href="#section";
		this.pagers[i].id = "pager_"+i;
		this.pagers[i].cId = i;
		this.pagers[i].innerHTML = i;
		this.pagers[i].onclick = function (that) {
			return function () {
				that.show(this.cId);
			}
		}(this);
		if(i==1) this.pagers[i].className = 'current';
		
		p.appendChild(this.pagers[i]);
	}
	this.nxt = document.createElement('a');
	this.nxt.cId = 2;
	this.nxt.id = "nxtTab";
	this.nxt.href="#section";
	this.nxt.innerHTML = '&raquo;';
	this.nxt.onclick = function (that) {
		return function () {
			that.show(this.cId);
		}
	}(this);
	p.appendChild(this.nxt);
	div.appendChild(p);
	var n = this.prt.nextSibling;
	if(n)
		this.prt.parentNode.insertBefore(div,n);
	else
		this.prt.appendChild(div);
	
}

Prices.prototype.show = function(cId) {
	if(this.currentId == cId) return;
	for (var i = 0; i < 2; i++) {
		if(this.pairs[this.currentId][i])
			addClass(this.pairs[this.currentId][i],'hiddenTable');
		if(this.pairs[cId][i])
			removeClass(this.pairs[cId][i],'hiddenTable');
	}
	removeClass(this.pagers[this.currentId],'current');
	addClass(this.pagers[cId],'current');
	this.currentId = cId;
	if(this.currentId>1) {
		this.prev.cId = this.currentId - 1;
		removeClass(this.prev,'hidden');
	}
	else {addClass(this.prev,'hidden');}
	if(this.currentId<this.pairs.length-1) {
		this.nxt.cId = this.currentId + 1;
		removeClass(this.nxt,'hidden');
	}
	else {addClass(this.nxt,'hidden');}
}

/* 
---------------------- */
function initMapExtra() {
	var ac = getById('access');
	var me = getById('mapExtra');
	if(!ac || !me) return;
	ac.onmouseover = function () {
		addClass(getById('mapExtra'),'rolled');
	}
	ac.onmouseout = function () {
		removeClass(getById('mapExtra'),'rolled');
	}
	var a = getByTag(ac,'a')[0];
	if(a) {
		me.onclick = function () {
			document.location.href= a.href;
		}
	}
}

/* Init
-------------------- */
var init = function() {
	if (arguments.callee.done) return;
	arguments.callee.done = true;
	if(!document.getElementsByTagName)
		return;
	addClass(getById('page'),'scripted');
	setLinks(['a','area']);
	setFancyFields();
	initMapExtra();
	initPhotos();
	initNewsForm();
	initFaqs();
	initTarifs();
	initAdvancement();
	/*@cc_on @*/
	/*@if (@_win32)
		var ua = navigator.userAgent;
		var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec(ua) != null) {
			rv = parseFloat( RegExp.$1 );
			if(rv < 7) fixLowIE();
			if(rv < 8) fixIE();
		}
	/*@end @*/
}

if (/WebKit/i.test(navigator.userAgent)) {
	var _timer = setInterval(function() {
		if (/loaded|complete/.test(document.readyState)) {
			clearInterval(_timer);
			init();
		}
	}, 10);
}

else if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", init, null);
}

else {
	/*@cc_on @*/
	/*@if (@_win32)
	document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
	var script = document.getElementById("__ie_onload");
	script.onreadystatechange = function() {
		if (this.readyState == "complete") {
			init();
		}
	};
	/*@end @*/
	window.onload = init;
}