var root = "http://www.nexee.com/";
var page_demandee;
var hash_actuel = "";


function entQuote(str){
	return str.replace(new RegExp("(')","gi"),"").replace(new RegExp('(")','gi'),'');
}

function empty(str){
	return (str.trim() && str.trim().length > 0) ?  false : true;
}

var classInClassName = function(cssClass, className){
	var tab_class = className.split(" ");
	
	for(var i=0; i < tab_class.length; i++){
		if(tab_class[i] == cssClass) return true;
	}
	
	return false;
};

var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

///// FONCTIONS AJAX \\\\\
function postuler(id){
	document.getElementById("candidature"+id).elements["referer"].value = document.location.href;
	document.getElementById("candidature"+id).submit();
	return false;
}

function validForm(formId){
	document.getElementById("global").className = "off";
	document.getElementById("loading").style.visibility = "visible";
	
	var r;
	var form = document.forms[formId];
	var elmt = form.elements;
	
	switch(formId){
	case "cv":
		var retour = "Les champs suivants sont obligatoires :\n";
		var retourLength = retour.length;
		
		if(empty(elmt["nom"].value)) retour += "\t- Nom ;\n";
		if(empty(elmt["prenom"].value)) retour += "\t- Pr\351nom ;\n";
		if(!isEmail(elmt["email"].value)) retour += "\t- Email ;\n";
		if(!isTelephone(elmt["telephone"].value)) retour += "\t- T\351l\351phone ;\n";
		if(empty(elmt["poste"].value)) retour += "\t- Poste Recherch\351 ;\n";
		if(!isNum(elmt["experience"].value)) retour += "\t- Exp\351rience ;\n";
		if(empty(elmt["langues"].value)) retour += "\t- Langues ;\n";
		if(elmt["ch"].checked === false && elmt["eu"].checked === false) retour += "\t- Mobilit\351 ;\n";
		if(!isDate(elmt["dispo"].value) && !isNum(elmt["preavis"].value)) retour += "\t- Disponibilit\351 ou Pr\351avis ;\n";
		if(empty(elmt["commentaire"].value)) retour += "\t- Commentaire ;\n";
		if(empty(elmt["cv"].value)) retour += "\t- Fichier \340 joindre ;\n";
		
		if(retour.length > retourLength){ alert(retour); r = false; }
		else r = true;
		
		break;
	
	case "offre":
		var retour = "Les champs suivants sont obligatoires :\n";
		var retourLength = retour.length;
		
		if(empty(elmt["nom_entreprise"].value)) retour += "\t- Nom de l'entreprise ;\n";
		if(empty(elmt["nom_interlocuteur"].value)) retour += "\t- Nom de l'interlocuteur ;\n";
		if(!isEmail(elmt["email"].value)) retour += "\t- Email ;\n";
		if(!isTelephone(elmt["telephone"].value)) retour += "\t- T\351l\351phone ;\n";
		if(empty(elmt["adresse"].value)) retour += "\t- Adresse ;\n";
		if(empty(elmt["metier"].value)) retour += "\t- M\351tier / Qualification ;\n";
		if(empty(elmt["langues"].value)) retour += "\t- Langues ;\n";
		if(elmt["lse"].checked === false && elmt["cdd"].checked === false && elmt["cdi"].checked === false) retour += "\t- Type de Contrat ;\n";
		if(!isNum(elmt["duree"].value)) retour += "\t- Dur\351e ;\n";
		if(empty(elmt["descr"].value)) retour += "\t- Description ;\n";
		if(empty(elmt["annonce"].value)) retour += "\t- Fichier \340 joindre ;\n";
		
		if(retour.length > retourLength){ alert(retour); r = false; }
		else r = true;
		
		break;
	
	default: r = true;
	}
	
	if(r === false){
		document.getElementById("loading").style.visibility = "hidden";
		document.getElementById("global").className = "on";
	}
	
	return r;
}

function getXHR(){
	var xhr = false;
	try{ xhr = new ActiveXObject('Microsoft.XMLHTTP');}
	catch(a){
		try{ xhr = new ActiveXObject('Msxml2.XMLHTTP');}
		catch(e){
			try{ xhr = new XMLHttpRequest();}
			catch(i){
				xhr = false;
			}
		}
	}
	return xhr;
}

function getFile(e){
	if(!e) e = window.event;
	//alert(e.type); return false;
	var item;
	var requestedFile;
	var f = false;
	
	if(typeof(e) == "string"){
		tab_items = document.getElementsByTagName("a");
		for(var i=0; i<tab_items.length; i++){
			if(strpos(tab_items[i].pathname,e) !== false) item = tab_items[i];
		}
		tab_items = false;
		requestedFile = e;
	}
	else{
		if(e.type == "click"){
			item = this;
			if(item.pathname.charAt(0) == "/") deb = 1; else deb = 0;
			requestedFile = item.pathname.substring(deb,item.pathname.indexOf("."))+item.search;
			//document.location.href.substr(0,loc.indexOf('#')).substr(0,baseLoc.lastIndexOf('/')+1);
		}
		else{
			var action = this.action.replace(root,"");
			requestedFile = action.substr(0,action.indexOf("."));
			f = "";
			
			if(v = validForm(this.id)){
				for(var i=0; i<this.elements.length; i++){
					f += "&"+this.elements[i].name+"="+this.elements[i].value;
				}
			}
			else return false;
		}
	}
	
	//alert(requestedFile); return;
	if(!requestedFile) document.location.href = "index.php";
	document.getElementById("global").className = "off";
	document.getElementById("loading").style.visibility = "visible";
	
	var xhrFile = false;
	var hsetter = false;
	var data = null;
	
	xhrFile = new getXHR();
	
	if(!xhrFile){
		//alert("no XHR");
		if(requestedFile.charAt(0) == "&") document.location.search += requestedFile;
		else if(requestedFile.indexOf("?") == 0) document.location.search = requestedFile;
		else{
			redirection = (requestedFile.indexOf("?") > 0) ? requestedFile.replace(new RegExp("[?]","g"),".php?") : requestedFile+".php";
			document.location.href = redirection;
		}
	}
	
	contextOpen = null;
	
	xhrFile.onreadystatechange = function(){
		if(xhrFile.readyState == 4 && xhrFile.status == 200){
			document.getElementById("main").innerHTML = xhrFile.responseText;
			loadGetFile(1);
			
			var ongletMenu = false;
			var tab_menuBox = getElementsByClassName("menuBox");
			
			if(item !== undefined && item.parentNode !== null && item.parentNode.parentNode !== null){
				if(item.parentNode.parentNode.className == "menuBox" || item.parentNode.parentNode.className == "menuBox in") ongletMenu = item.parentNode.parentNode;
				else if(item.parentNode.parentNode.parentNode.className == "menuBox" || item.parentNode.parentNode.parentNode.className == "menuBox in") ongletMenu = item.parentNode.parentNode.parentNode;
				else if(item.parentNode.id == "footer") ongletMenu = document.getElementById("contact");
			}
			
			if(ongletMenu){
				for(var i=0; i<tab_menuBox.length; i++) tab_menuBox[i].className = "menuBox";
				ongletMenu.className = "menuBox in";
			}
			
			//alert(hsetter+" - "+requestedFile);
			document.location.hash = hsetter;
			hash_actuel = hsetter;
			document.getElementById("loading").style.visibility = "hidden";
			document.getElementById("global").className = "on";
		}
	};
	
	h = document.location.hash;
	
	switch(requestedFile.charAt(0)){
		case "?":
			file_to_include = (h.indexOf("?") > -1) ? h.substring(1,h.indexOf("?")) : h.substring(1);
			qsa = requestedFile.substring(1);
			
			break;
		
		case "&":
			file_to_include = h.substring(1,h.indexOf("?"));
			qsa = (h.indexOf("?") > -1) ? h.substring(h.indexOf("?")+1)+requestedFile : requestedFile.substring(1);
			
			break;
		
		default:
			file_to_include = (requestedFile.indexOf("?") > -1) ? requestedFile.substring(0,requestedFile.indexOf("?")) : requestedFile;
			qsa = (requestedFile.indexOf("?") > -1) ? requestedFile.substring(requestedFile.indexOf("?")+1) : false;
	}
	
	data = (qsa) ? "requestedFile="+file_to_include+"&"+qsa : "requestedFile="+requestedFile;
	hsetter = (qsa) ? file_to_include+"?"+qsa : file_to_include;
	if(f) data += f;
	
	//alert(data);
	xhrFile.open('POST','ajax.php',true);
	xhrFile.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	xhrFile.send(data);
	
	return false;
}

function checkHash(){
	if((document.location.hash.length>1 || hash_actuel.length>1) && document.location.hash.substring(1) != hash_actuel) getFile(document.location.hash.substring(1));
	//else alert(document.location.hash+" - "+hash_actuel);
	//window.setTimeout("checkHash()",100);
}
///// FIN FONCTIONS AJAX \\\\\

function loadGetFile(a){
	tab_link = document.getElementsByTagName("a");
	for(var j=0; j<tab_link.length; j++){
		
		if(!classInClassName("njx",tab_link[j].className)) tab_link[j].onclick = getFile; //seul les liens de class 'njx' restent en HTTP direct
		
	}
	
	for(var j=0; j<document.forms.length; j++){
		//alert(document.forms[j].id);
		if(!classInClassName("njx",document.forms[j].className)) document.forms[j].onsubmit = getFile;
	}
	
	if((!a || a.type == "load") && document.location.href.indexOf("#") > -1){
		getFile(document.location.href.substr(document.location.href.indexOf("#")+1));
		return false;
	}
	
	document.getElementById("global").className = "on";
	document.getElementById("loading").style.visibility = "hidden";
}

window.onload = loadGetFile;
