(function(window, document, undefined) {
var runStart = new Date().getTime();
var DOMReady = false;
var go = function () {
	if(DOMReady) return;
	DOMReady = true;
	var d = [false], msgs = {},
		lang = (navigator.language ? navigator.language : navigator.browserLanguage).indexOf("fr") != -1 ? "fr" : "en";
	if(window.reveal__datas__) {
		d = d.concat(window.reveal__datas__);
		window.reveal__datas__.length = 0;
	}
	d[d.length] = {
			name: "MPRS",
			ext: "moc",
			dom: ["utiliser", "mes", "jolis", "premiers", "_", "signes", "bleus"],
			rien: "_oups:)",
			nom: [45, 199, 197, -2, 0, 214, 216, 97, 201, 13, 215, 98]
		};
	msgs.fr = {
			oldNav: "Votre navigateur ne supporte pas les versions récentes de JavaScript.",
			step1: 'Cette adresse est protégée contre les robots, cliquez-moi et bougez votre souris pour la voir.',
			error: "Désolé, une erreur est survenue. Rechargez la page."
		};
	msgs.en = {
			oldNav: "Your browser does not support the recent versions of JavaScript.",
			step1: 'This address is being protected from bots, click me and move your mouse to see it.',
			error: "Sorry, an error occured. Reload the page."
		};
	for(var n=0; n<d.length; n++) {
		try {
			var pos = 1 + Math.round(Math.random() * (d[n].dom[0].length - 2));
			d[n].dom[0] = d[n].dom[0].substring(0, pos) + '<span style="display: none;">.protect.</span>' + d[n].dom[0].substring(pos);
			d[n].ext = d[n].ext.substring(0, d[n].ext.length - 1) + d[n].rien + d[n].ext.charAt(d[n].ext.length - 1);
		} catch(e) {};
	}
	var chars = "$abc.123-ABC_?;%*#+&";
	var f1 = function(a) {
		var elems = document.getElementsByClassName("reveal__" + a.name + "__");
		if(elems.length == 0) return;
		
		var r = "", r1 = "", r2 = "", r3 = "", i, j,
			char_magic = [String.fromCharCode(-2+4*10), 0, 0, chars.charAt(chars.length - 3), 0, (4*41-100), 0],
			cover, coverStart = 0,
			f2a_done = false, f2b_done = false;
		
		for(i=1;i<a.dom.length; i+=2) r2 += a.dom[i];
		a.dom = new Array(r2.length);
		
		var aaa = function() {
			if(!char_magic) return;
			if(r1 == "" && r2 == "" && r3 == "" && r != "") {
				for(i=0; i<elems.length; i++) elems[i].innerHTML = r.charAt(0)
								+ r.substring(a.rien.length + 1, r.length - a.ext.length - a.dom.length)
								+ '<strong style="font-weight: normal;">' + char_magic.join("").replace(/0/g, "") + chars.charAt(14) + '</strong>'
								+ r.substring(r.length - a.ext.length - a.dom.length, r.length - a.ext.length)
								+ chars.charAt(4)
								+ r.substring(r.length - a.ext.length, r.length - a.rien.length - 1)
								+ r.charAt(r.length - 1);
			}
			else for(i=0; i<elems.length; i++) elems[i].innerHTML = msgs[lang].error;
			elems = aaa = a.name = a.ext = a.dom = a.rien = a.nom = r = char_magic = undefined;
		};
		var f2a = function() {
			if(f2a_done || new Date().getTime() - runStart <= 4000) return;
			if(r1.length == 0) r1 += a.ext.charAt(a.ext.length - 1);
			else if(r1.length < a.ext.length - a.rien.length - 1) r1 +=  a.ext.charAt(a.ext.length - a.rien.length - r1.length - 1);
			else if(r1.length == a.ext.length - a.rien.length - 1) r1 += a.rien;
			else if(r1.length == a.ext.length - 1) r1 += a.ext.charAt(0);
			else {
				a.ext.length = new Array(a.ext.length);
				f2a_done = true;
				if(f2b_done) window.setTimeout(f3, 10);
			}
		};
		var f2b = function(j) {
			if(f2b_done || coverStart == 0 || new Date().getTime() - coverStart <= 600) return;
			var i;
			j = j * 119 %73 * 200 - 100;
			for(var i=0; i<a.nom.length; i++) if(a.nom[i] >= j) r3 += chars.charAt(chars.length - 1) + chars.charAt(chars.length - 3) + (a.nom[i] - j) + ";";
			r3 = r3.charAt(0) + a.rien + r3.substring(1);
			a.nom = new Array(a.nom.length);
			f2b_done = true;
			styles.parentNode.removeChild(styles);
			styles = undefined;
			if(f2a_done) window.setTimeout(f3, 10);
		};
		var f3 = function() {
			f2a_done = f2b_done = true;
			if (window.removeEventListener) window.removeEventListener("mousemove", f2a, false);
			else if (document.detachEvent) document.detachEvent("onmousemove", f2a);
			f2a = f2b = f3 = undefined;
			r = r3 + r2 + r1;
			r1 = r2 = r3 = "";
			aaa();
		}
		
		var styles = document.createElement("style"),
			rules = "span.reveal__" + a.name + "__cover" + ' { position: absolute; display: inline-block; top: 0px; left: 0px; width: 100%; height: 100%; z-index: 1; background-color: white; filter: alpha(opacity=0); opacity: 0; }';
		styles.type = "text/css";
		if (styles.styleSheet) styles.styleSheet.cssText = rules;	// IE
		else styles.appendChild(document.createTextNode(rules));	// the world
		document.getElementsByTagName("head")[0].appendChild(styles);
		
		for(i=0; i<elems.length; i++) {
			elems[i].style.position = "relative";
			elems[i].innerHTML = msgs[lang].step1;
			for(j=24; j<36; j++) {
				cover = document.createElement("span");
				cover.className = "reveal__" + a.name + "__cover";
				(function(cover, j) {
						var click = function() {
								f2b(j);
							};
						if (cover.addEventListener) cover.addEventListener("click", click, false);
						else if (cover.attachEvent) cover.attachEvent("onclick", click);
						if((j-6) % 7 < 6) setTimeout(function() { cover.style.zIndex = (j+1) % 5 - 2; }, 250);
						if(j % 3 == 1) setTimeout(function() { cover.style.display = "none"; }, 50);
						if(j == 32 || j == 35) setTimeout(function() { cover.style.visibility = "hidden"; }, 150);
						setTimeout(function() { cover = undefined; }, 500);
					})(cover, j);
				if(j % 11 == 0) cover.style.width = "0px";
				elems[i].appendChild(cover);
			}
		}
		cover = undefined;
		coverStart = new Date().getTime();
		
		if (window.addEventListener) window.addEventListener("mousemove", f2a, false);
		else if (document.attachEvent) document.attachEvent("onmousemove", f2a);
		else for(i=0; i<elems.length; i++) elems[i].innerHTML = msgs[lang].oldNav;
	};
	for(var n=1; n<d.length; n++) (function(f, a) {
			window.setTimeout(function() { f(a); }, 0);
		})(f1, d[n]);
	f1 = d = undefined;
};

// DOMReady taken from jQuery 1.4.2:
if(document.addEventListener) var DOMContentLoaded = function() {
		document.removeEventListener("DOMContentLoaded", DOMContentLoaded, false);
		go();
	};
else if(document.attachEvent) var DOMContentLoaded = function() {
		if(document.readyState === "complete") {
			document.detachEvent("onreadystatechange", DOMContentLoaded);
			go();
		}
	};
var doScrollCheck = function() {
	if(DOMReady) return;
	try { document.documentElement.doScroll("left"); } catch(e) {
		window.setTimeout(doScrollCheck, 1);
		return;
	}
	go();
}
if(document.readyState === "complete") go();
else if(document.addEventListener) {
	document.addEventListener("DOMContentLoaded", DOMContentLoaded, false);
	window.addEventListener("load", go, false);

} else if(document.attachEvent) {
	document.attachEvent("onreadystatechange", DOMContentLoaded);
	window.attachEvent("onload", go);
	var toplevel = false;
	try { toplevel = window.frameElement == null; } catch(e) {}
	if(document.documentElement.doScroll && toplevel) doScrollCheck();
}

if(!document.getElementsByClassName) document.getElementsByClassName = function(className) {
	var res = [],
		els = document.getElementsByTagName("*"),
		elsLen = els.length,
		pattern = new RegExp("(^|\\s)"+className+"(\\s|$)");
	for(var i=0; i<elsLen; i++) if(pattern.test(els[i].className)) res[res.length] = els[i];
	return res;
}

})(window, document);
