function initNavReq()
{
	var xmlHttp = null;
	
	if (window.XMLHttpRequest)
	  xmlHttp = new XMLHttpRequest();
	else if (window.ActiveXObject)
		 xmlHttp = new ActiveXObject('MSXML2.XMLHTTP.3.0');
	else
		alert('No XMLHTTP');
		 
	return xmlHttp;
}

function dispErrorDiv(divname, errorcode) 
{
	div = document.getElementById(divname);
	switch(errorcode) {
		case 0:
			div.innerHTML = "<div class=\"ajaxerror\">Timeout connection.</div>";
			break;
		case 500:
			div.innerHTML = "<div class=\"ajaxerror\">La page comporte des erreurs.</div>";
			break;
		case 404:
			div.innerHTML = "<div class=\"ajaxerror\">Fichier introuvable.</div>";
			break;
		case 'baspass':
			div.innerHTML = "<div class=\"ajaxerror\">Login et/out mot de passe incorrect.</div>";
			break;
		default :
			div.innerHTML = "<div class=\"ajaxerror\">Erreur.</div>";
			break;
	}
}

function getData(form) {
	var req = null; 

	formName = document.getElementById(form);
	req = initNavReq();
	req.onreadystatechange = function() { 
		if(req.readyState == 4) {
			if(req.status == 200) {
				respTxt = req.responseText;
				delete req;
			} else {
				respTxt = "Error " + req.status;
			}
		} else
			respTxt = 'wait';
	};
	data = getDataForm(formName);
	req.open("POST", "/ajax.php", true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	req.send(data);
}

function getDataDiv(form, div)
{ 
	var req = null; 
	
	divName = document.getElementById(div);
	formName = document.getElementById(form);
	
	req = initNavReq();

	var timeout = wait('dispErrorDiv(\''+ div +'\', 0)', 2000);
	req.onreadystatechange = function() { 
		divName.innerHTML="<div class=\"loading\">&nbsp</div>";
		if(req.readyState == 4) {
			if(req.status == 200) {
				divName.innerHTML = req.responseText;
				window.clearTimeout(timeout);
				delete req;
				menuAjax('POST', document.getElementById('idpage').value, "menuofpage");
			} else {
				dispErrorDiv(div, req.status);
				window.clearTimeout(timeout);
			}
		} else {
			divName.innerHTML="<div class=\"loading\">&nbsp</div>";	
		}
	};
	data = getDataForm(formName);
	req.open("POST", "/ajax.php", true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	req.send(data);

}

function getDataDivGet(url, div) {
	var req = null;

	divName = document.getElementById(div);
	req = initNavReq();

	var timeout = wait('dispErrorDiv(\''+ div +'\', 0)', 2000);
	req.onreadystatechange = function() { 
		divName.innerHTML="<div class=\"loading\">&nbsp</div>";
		if(req.readyState == 4) {
			if(req.status == 200) {
				divName.innerHTML = req.responseText;
				window.clearTimeout(timeout);
				delete req;
				menuAjax('GET', url, "menuofpage");
			} else {
				divName.innerHTML="Error" + req.status;
			}
		} else {
			divName.innerHTML="<div class=\"loading\">&nbsp</div>";	
		}
	};
	this.document.title = "LERIA ";
	req.open("GET", "/ajax.php?"+url, true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	req.send(null);
}

function menuAjax(method, idpage, div) {
	var req = null; 
	var idp = -2;
	
	if (method == 'GET') {
		var vectData = idpage.split("&");
		for (u = 0; u < vectData.length; u++) {
			vectDataC = vectData[u].split("=");
			if (vectDataC[0] == 'mp') {
				idp = vectDataC[1];
				break;
			}
		}
	} else if (method == 'POST') {
		idp = idpage
	} else {
		return -1;
	}
	
	divName = document.getElementById(div);
	reqm = initNavReq();
	
	reqm.onreadystatechange = function() { 
		divName.innerHTML="&nbsp";
		if(reqm.readyState == 4) {
			if(reqm.status == 200) {
				divName.innerHTML = reqm.responseText;
				delete reqm;
			} else	
				divName.innerHTML="Error load menu..." + reqm.status;
		} else {
			divName.innerHTML="&nbsp";
		}
	};
	
	reqm.open("GET", "/ajax.php?viewmenu="+ idp, true);
	reqm.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	reqm.send(null);
}

function getDataMultipleInput(element) {
	var data = '';
	var key=0;

	for (key=0;key<element.length;key++) {
		if ( (element[key].checked == true) || (element[key].selected == true) )
			data += escape(element[key].value)+';';
	}

	data = data.substr(0, data.length-1);
	return data;
}


function getDataForm(formName) {
	
	var data="";
    var key=0;
    for (key=0;key<formName.elements.length;key++) {
		//alert(formName.elements[key].name +' -> '+formName.elements[key].type +' = '+ formName.elements[key].checked);
		if (formName.elements[key].type == 'checkbox') {
			//alert(formName.elements[key].checked);
			if (formName.elements[key].checked == true)
				data+=escape(formName.elements[key].name)+"=1&";
		} else if (formName.elements[key].type == 'select-multiple') {
			data +=escape(formName.elements[key].name)+"="+getDataMultipleInput(formName.elements[key])+"&";
		} else {
			data+=escape(formName.elements[key].name)+"="+escape(formName.elements[key].value)+"&";
		}
    }
	//alert(data);
    return data.substr(0, data.length-1);
}

function ajaxPage(mode, id, divname) {
	if (mode == "POST") {
		document.getElementById('idpage').value = id;
		getDataDiv("menuForm", divname);
	} else if (mode == "GET") {
		getDataDivGet(id, divname);
	}
}

function loginAjax(init) {
	if (init == 0) {
		getData('loginForm');
		document.getElementById('idpage').value = -1;
	}
	if (respTxt == "wait") {
		wait("loginAjax(1)", 100);
		return 0;
	}
	
	if (strstr(respTxt, 'OK', false))
		ajaxPage('GET', '/index.php?mp=-1', 'pagedoc');
	else
		getDataDiv('loginForm', 'messageHandler');
}

function wait(execFunc, time){
   timeoutID = window.setTimeout(execFunc, time);
   return timeoutID;
}

function strstr(haystack, needle, bool ) {
    var pos = 0;
 
    pos = haystack.indexOf( needle );
    if( pos == -1 ){
        return false;
    } else{
        if( bool ){
            return haystack.substr( 0, pos );
        } else{
            return haystack.slice( pos );
        }
    }
}