function MvSystem() {
	
	this.windows = new Array();
	this.windowsCoords = new Array();
	
	this.x = 0;
	this.y = 0;
	
	this.current = "";
	this.next = "";
	this.sonnette = "";
	
	this.last = -1;
	
	this.compteur = -1;
	
	this.init = function() {
		var mvs = this;
		if (!document.getElementById("fond")) {			
			setTimeout(function () {mvs.init();}, 100);
		}
		else {			
			var w = document.getElementById("fond").getElementsByTagName("a");
			for (var i = 0; i < w.length; i++) {
				if (w[i].className.indexOf("mv ") !== -1 && w[i].className.indexOf(" mail") == -1) {
					w[i].href = "#" + (w[i].href.split("?song=")[1]);
					w[i].onclick = function() {sonnette(this);};
					
					w[i].style.opacity = "0.0";
					
					this.windows.push(w[i]);
					
					this.windowsCoords.push(new Array(w[i].offsetLeft + w[i].offsetWidth/2, w[i].offsetTop + w[i].offsetHeight/2));
					
				}
				else if (w[i].className.indexOf(" mail") != -1) {
				
					window["mail"] = w[i];
				
					/*if (w[i].offsetHeight > 0) {				
						w[i].style.fontSize = Math.round(w[i].offsetHeight*(24/41)) + "px";
					}
					else {*/
						setInterval(function() {
							var size = Math.round(window["mail"].offsetHeight*(24/41)) + "px";
							if (window["mail"].offsetHeight > 0 && window["mail"].style.fontSize != size) {								
								window["mail"].style.fontSize = size;								
							}
						}, 100);
					//}
				}
			}
			
			setInterval(function() {mvs.robot();}, 100);
			
			this.current = document.getElementById("song_id").value;
			this.sonnette = document.getElementById("son_id").value;
			
			document.onmousemove = function(event) {
				if (!event) {
					event = window.event;
				}
				mvs.x = event.clientX;
				mvs.y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
			};
		}				
	};
	
	this.robot = function() {
		
		var st = "";
		
		for (var i = 0; i<this.windows.length; i++) {
			var w = this.windows[i];
			
			if (!this.compteur || this.compteur == -1) {
				var wx = this.windowsCoords[i][0];
				var wy = this.windowsCoords[i][1];
			
				var xx = this.x - wx;
				var yy = this.y - wy;
			
				var dist = Math.sqrt(xx*xx + yy*yy);
			
				var maxx = Math.sqrt(document.body.offsetWidth*document.body.offsetWidth + document.body.offsetHeight*document.body.offsetHeight);
			
				var distpc = dist / maxx;
			
				st += w.className + " : " + distpc+"\n";
			
			
			
				if (dist > 30) {
					var op = ((1 - distpc)*(1 - distpc));
					if (op < 0.3) {
						op = "0.0";
					}
					w.style.opacity = "" + op;
				
				}
				else {
					w.style.opacity = "1.0";
				}
			}
			else {
				w.style.opacity = "" + Math.floor(Math.random()*101)/100;
			}
			
		}
		
		
		var img = document.getElementById("fond_img");
		var lums = document.getElementById("lumieres").getElementsByTagName("div");
		
		if ((this.current.indexOf("MV0") != -1) && (Math.floor(this.compteur) < 97)) {
		
			var player = document.getElementById("player");
		
			if (player.nodeName.toLowerCase() != "audio") {
				if (this.compteur == -1) {
					this.compteur = 0;
				}
				else {
					this.compteur += 0.1;
				}
			}
			else {
				this.compteur = player.currentTime;
			}
		
			var minLum = 0.15;
			var finJour = 30;
			var debJour = 60;
			var finPiste = 97;
			
			if (this.compteur <= finJour) {
				op = minLum + (1-minLum)*(finJour-this.compteur)/finJour;
				img.style.opacity = "" + op;
			}
			else if (this.compteur >= debJour) {
				op = minLum + (1-minLum)*(this.compteur-debJour)/(finPiste-debJour);
				img.style.opacity = "" + op;
			}
			else {
				img.style.opacity = "" + minLum;
			}
						
			
			if (this.compteur > finJour -10 && this.compteur < debJour + 20 && (this.last > this.compteur || this.last == -1 || this.compteur-this.last > 1)) {
				
				this.last = this.compteur;			
			
				for (var i = 0; i<lums.length; i++) {
				
					var lumCont = lums[i];
					
					lumCont.onclick = function() {alert(window["mvs"].compteur);};					
									
					lumCont.style.display = "inline-block";
				
					var lum = lumCont.getElementsByTagName("span")[0];
				
					var size = randInt(10, 200);
				
					var x = randInt(0, document.body.offsetWidth-size);
					var y = randInt(0, document.body.offsetHeight-size);
				
					var shadowColor = randomColor();
					var blurColor = randomColor();
					//var color = randomColor();
				
					lumCont.style.left = x +"px";
					lumCont.style.top = y +"px";
				
					lum.style.width = lum.style.height = size + "px";
				
					var m = Math.floor(size/4);
				
					lum.style.boxShadow = "inset " + randInt(-m, m) +"px " + randInt(-m, m) +"px " + randInt(1, m) +"px " + blurColor;
				
					lumCont.style.boxShadow = randInt(-m, m) +"px " + randInt(-m, m) +"px " + randInt(1, m) +"px " + shadowColor;
				
					//lum.style.backgroundColor = color;
				
				}
			}
			else if (this.compteur <= finJour -10 || this.compteur >= debJour + 20) {
				for (var i = 0; i<lums.length; i++) {				
					var lumCont = lums[i];				
					lumCont.style.display = "none";
				}
			}
			
		}
		else if (this.current.indexOf("MV0") == -1 && this.compteur != -1) {
			if (!img.style.opacity || img.style.opacity != "1.0") {
				img.style.opacity = "";
			}
						
			for (var i = 0; i<lums.length; i++) {				
				var lumCont = lums[i];				
				lumCont.style.display = "none";
			}
			
			this.last = this.compteur = -1;
		}
		
	};
	
	this.init();
	
}

window["mvs"] = new MvSystem();

function randInt(min, max) {
	return min+Math.floor(Math.random() * (max-min+1));
}

function randomColor() {	
	return "rgba(" + randInt(0,255)+"," + randInt(0,255)+"," + randInt(0,255)+"," + (Math.floor(101*Math.random())/100) + ")";
}

function sonnette(obj) {

	var player = document.getElementById("player");
	
	document.getElementById("title_mp3").innerHTML = "...";
	
	if (player.nodeName.toLowerCase() == "audio") {
		player.src = "nothing.mp3";
	}
	else {
		player.innerHTML = player.innerHTML.replace("/"+window["mvs"].current, "/nothing.mp3");
	}


	window["mvs"].next = "mv/" + obj.href.split("#")[1] + ".mp3";
	
	var son = "sonnettes/son" + (1+Math.floor(Math.random()*5)) + ".mp3";

	var sonnette = document.getElementById("sonnette");
	
	if (sonnette.nodeName.toLowerCase() == "audio") {
		sonnette.src = son;
	}
	else {
		sonnette.innerHTML = sonnette.innerHTML.replace("/"+window["mvs"].sonnette, "/"+son);
	}
	
	window["mvs"].sonnette = son;
	
	
	var player = document.getElementById("player");
	
	if (player.nodeName.toLowerCase() == "audio") {
			
		onEnd(sonnette);			
		
	}
	else {
		setTimeout(function() {
	
			var player = document.getElementById("player");
						
			player.innerHTML = player.innerHTML.replace("/nothing.mp3", "/"+window["mvs"].next);					
		
		
			var xhr_request = null;			
	
			if(window.XMLHttpRequest) {// Firefox
				xhr_request = new XMLHttpRequest();
			}
			else if(window.ActiveXObject) {// Internet Explorer
				xhr_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			if (xhr_request != null) {
				var req = encodeURI("tag_reader.php?req=Title&song="+window["mvs"].next);
				xhr_request.open("GET", req, true);			
				xhr_request.send(null);
			}
			xhr_request.onreadystatechange = function() {
				if(this.readyState == 4) {
					document.getElementById("title_mp3").innerHTML = this.responseText;
				}
			};
		
		
			window["mvs"].current = window["mvs"].next;
		
	
		}, 500 + 500 * Math.random()*4);
		
	}
}


function onEnd(sonnette) {

	//alert(sonnette.position + "/" + sonnette.duration);

	if (sonnette.duration && sonnette.currentTime && !isNaN(sonnette.duration) && !isNaN(sonnette.currentTime) && sonnette.currentTime >= sonnette.duration) {
		
		var player = document.getElementById("player");
		
		player.src = window["mvs"].next;
			
			
		var xhr_request = null;			

		if(window.XMLHttpRequest) {// Firefox
			xhr_request = new XMLHttpRequest();
		}
		else if(window.ActiveXObject) {// Internet Explorer
			xhr_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		if (xhr_request != null) {
			var req = encodeURI("tag_reader.php?req=Title&song="+window["mvs"].next);
			xhr_request.open("GET", req, true);			
			xhr_request.send(null);
		}
		xhr_request.onreadystatechange = function() {
			if(this.readyState == 4) {
				document.getElementById("title_mp3").innerHTML = this.responseText;
			}
		};
	
		window["mvs"].current = window["mvs"].next;
	}
	else {
		setTimeout(function() { onEnd(sonnette);}, 50);
	}
}


