window.onload = init;

var linksTab = document.getElementsByTagName("a");
var dts = document.getElementsByTagName("dt");
var startName = document.URL.lastIndexOf("/")+1;
var stopName = document.URL.lastIndexOf(".");
var nom = document.URL.substring(startName,stopName);

function init() {
// 	document.getElementById("logo").onmouseover = toggleMenu;
	document.getElementById("title").onmouseover = toggleMenu;
	document.getElementById("content").onmouseover = toggleMenu;
	if (document.getElementById("image")) {document.getElementById("image").onmouseover = toggleMenu;}
	if (document.URL.indexOf("index.php") == -1 && document.URL.indexOf("php") > -1) {
		document.title +=" | " + nom;
	}
	for (var i=0; i < dts.length; i++) {
		dts[i].onmouseover = toggleMenu;
		if (dts[i].innerHTML == nom) {
			dts[i].style.background = "#DDDF48";
			dts[i].style.color = "#000";
		}	
	}
	for (var i=0; i < linksTab.length; i++) {
		if (linksTab[i].innerHTML == nom && linksTab[i].parentNode.id.indexOf("dt") > -1) {
			linksTab[i].parentNode.style.background = "#DDDF48";
			linksTab[i].style.color = "#000";
		}
		if (linksTab[i].href == document.URL && linksTab[i].parentNode.id == "choixImages") {
			var re = /^[0-9]+[ ]{1}$/;
			if (re.test(linksTab[i].innerHTML)) {linksTab[i].style.color = "#DDDF48";}
		}
	}
	if (document.getElementById("thumbnails") || document.getElementById("uniqThumbnail") || document.getElementById("twoThumbnails")) {
		document.getElementById("overTitle").style.width = document.getElementById("overTitle").parentNode.style.width;
		var allImages = document.getElementsByTagName("img");
		for (var i=0; i<allImages.length; i++) {
			if (allImages[i].className == "preview") {
				setupRollover(allImages[i]);
			}
		}
	}
	for (var i=0; i< document.forms.length; i++) {
		document.forms[i].onsubmit = function() {return validForm();}
	}
}

function toggleMenu() {
	for (var i=0; i < dts.length; i++) {
		if (dts[i].parentNode.id.indexOf("menu") > -1 && dts[i].innerHTML != nom ) {
			dts[i].style.color = "#000";
			dts[i].style.background = "#fff";
		}
		else if (dts[i].parentNode.id.indexOf("menu") > -1 && dts[i].innerHTML == nom ) {
			dts[i].style.color = "#000";
			dts[i].style.background = "#DDDF48";
		}
	}
	if (this.id.indexOf("dt") > -1) {
		var start = this.id.lastIndexOf("t") + 1;
		var n = this.id.substring(start);
		var d = document.getElementById("smenu"+n);
	}
	for (var i = 1; i<=10; i++) {
		if (document.getElementById("smenu"+i)) {
			document.getElementById("smenu"+i).style.display="none";
		}
	}
	if (d) {
		if (this.innerHTML != nom) { 
			this.style.color = "#fff";
			this.style.background = "#DDDF48";
		}
		d.style.display="block";
	}
}

function setupRollover(thisImage) {
	var tableName = thisImage.parentNode.className;
	thisImage.outImage = new Image();
	thisImage.outImage.src = thisImage.src;
	thisImage.onmouseout = rollOut;
 	thisImage.overImage = new Image();
 	switch (tableName) {
 		case "perso_travaux":
			thisImage.overImage.src = "./mini/" + thisImage.id + "_on.jpg";
			break;
		case "editions":
			thisImage.overImage.src = "./editions_mini/" + thisImage.id + "_on.jpg";
			break;
		default:
 	}
	thisImage.onmouseover = rollOver;
}

function rollOver() {
	var startTitle = this.alt.lastIndexOf("_") + 1;
	var titre = this.alt.substring(startTitle);
	document.getElementById("overTitle").innerHTML = titre;
	document.getElementById("overTitle").style.display = "block";
	this.src = this.overImage.src;
}


function rollOut() {
	this.src = this.outImage.src;
	document.getElementById("overTitle").style.display = "none";
}

function validForm() {
	var allGood = true;
	var allTags = document.getElementsByTagName("*");

	for (var i=0; i<allTags.length; i++) {
		if (!validTag(allTags[i])) {
			allGood = false;
		}
	}
	return allGood;

	function validTag(thisTag) {
		var outClass = "";
		var allClasses = thisTag.className.split(" ");
	
		for (var j=0; j<allClasses.length; j++) {
			outClass += validBasedOnClass(allClasses[j]) + " ";
		}
	
		thisTag.className = outClass;
	
		if (outClass.indexOf("invalid") > -1) {
			invalidLabel(thisTag.parentNode);
			thisTag.focus();
			if (thisTag.nodeName == "INPUT") {
				thisTag.select();
			}
			return false;
		}
		return true;
		
		function validBasedOnClass(thisClass) {
			var classBack = "";
		
			switch(thisClass) {
				case "":
				case "invalid":
					break;
				case "email":
					if (allGood && !validEmail(thisTag.value)) classBack = "invalid ";
				default:
					classBack += thisClass;
			}
			return classBack;
		}
				
		function validEmail(email) {
			var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
			return re.test(email);
		}
		
		function invalidLabel(parentTag) {
			if (parentTag.nodeName == "LABEL") {
				parentTag.className += " invalid";
			}
		}
	}
}
		