var DHTML = (document.getElementById || document.all || document.layers);
var objOverlay;
var ars;
var run = false;

function requiredPreload()
{
	objOverlay = MM_findObj('josOverlay');
	var objForOverlayMessage = MM_findObj('forOverlayMessage');
	var objOverlayMessage = MM_findObj('overlayMessage');
	//document.onclick = josEnd;
	//objOverlay.onclick = josEnd;
	//document.onkeypress = josEnd;
	//window.onresize = josEnd;
	
	if (objForOverlayMessage != undefined && objForOverlayMessage.innerHTML != '')
	{
		overlayMessageStart();
	}
}

function overlayMessageStart()
{
	var objForOverlayMessage = MM_findObj('forOverlayMessage');
	var objOverlayMessage = MM_findObj('overlayMessage');

	objOverlayMessage.innerHTML = objForOverlayMessage.innerHTML;
	objForOverlayMessage.innerHTML = '';
	objOverlayMessage.style.display = 'block';
	objOverlayMessage.style.visibility = 'visible';
	josStart();
}

function overlayMessageEnd()
{
	var objOverlayMessage = MM_findObj('overlayMessage');

	objOverlayMessage.innerHTML = '';
	objOverlayMessage.style.visibility = 'hidden';
	objOverlayMessage.style.display = 'none';
	josEnd();
}

function josShowHide (st)
{
	var tags = new Array("applet", "object", "iframe", "select");
	for (var k = tags.length; k > 0; )
	{
		var ar = document.getElementsByTagName(tags[--k]);
		var cc = null;
		for (var i = ar.length; i > 0;)
		{
			cc = ar[--i];
			cc.style.visibility = st;
		}
	}
}

function getPageScroll()
{
	var yScroll;
	if (self.pageYOffset)
	{
		yScroll = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
	{	// Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	}
	else if (document.body)
	{	// all other Explorers
		yScroll = document.body.scrollTop;
	}
	arrayPageScroll = new Array('',yScroll);
	return arrayPageScroll;
}

function getPageSize()
{
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY)
	{
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	}
	else if (document.body.scrollHeight > document.body.offsetHeight)
	{	// all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	}
	else
	{	// Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	var windowWidth, windowHeight;
	if (self.innerHeight)
	{	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
	{	// Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	}
	else if (document.body)
	{	// other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}
	if (yScroll < windowHeight)
	{
		pageHeight = windowHeight;
	}
	else
	{ 
		pageHeight = yScroll;
	}
	if (xScroll < windowWidth)
	{
		pageWidth = windowWidth;
	}
	else
	{
		pageWidth = xScroll;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return arrayPageSize;
}

function josStart()
{
	var ar = getPageSize();
	ars = getPageScroll();
	if (document.all)
	{
		objOverlay.style.width = ar[0] + "px";
	}
	else
	{
		objOverlay.style.width = "100%"; 
	}
	if ((document.all) && ars[1]>10)
	{
		objOverlay.style.height = (ar[1]+25) + "px";
	}
	else
	{
		objOverlay.style.height = ar[1] + "px";
	}
	objOverlay.style.display = "block";
	run = true;
	josShowHide("hidden");
}

function josEnd()
{
	if (run)
	{
		objOverlay.style.display = "none";
		objOverlay.style.width = "1px";
		objOverlay.style.height = "1px";
		josShowHide("visible");
	}
	run = false;
}

function MM_swapImgRestore()
{
	var i,x,a = document.MM_sr;
	for (i=0; a&&i<a.length && (x=a[i]) && x.oSrc; i++)
	{
		x.src=x.oSrc;
	}
}

function MM_preloadImages()
{
	var d=document;
	if (d.images)
	{
		if (!d.MM_p)
		{
			d.MM_p=new Array();
		}
		var i,j = d.MM_p.length, a = MM_preloadImages.arguments;
		for (i=0; i<a.length; i++)
		{
			if (a[i].indexOf("#")!=0)
			{
				d.MM_p[j] = new Image;
				d.MM_p[j++].src = a[i];
			}
		}
	}
}

function MM_findObj(n, d)
{
	var p,i,x;
	if (!d)
	{
		d=document;
	}
	if ((p=n.indexOf("?"))>0 && parent.frames.length)
	{
		d = parent.frames[n.substring(p+1)].document;
		n = n.substring(0,p);
	}
	if (!(x=d[n]) && d.all)
	{
		x = d.all[n];
	}
	for (i=0; !x && i<d.forms.length; i++)
	{
		x = d.forms[i][n];
	}
	for (i=0; !x && d.layers && i<d.layers.length; i++)
	{
		x = MM_findObj(n,d.layers[i].document);
	}
	if (!x && d.getElementById)
	{
		x = d.getElementById(n);
	}
	return x;
}

function MM_swapImage()
{
	var i,j = 0, x, a = MM_swapImage.arguments;
	document.MM_sr = new Array;
	for (i=0; i<(a.length-2); i+=3)
	{
		if ((x=MM_findObj(a[i]))!=null)
		{
			document.MM_sr[j++] = x;
			if (!x.oSrc)
			{
				x.oSrc = x.src;
			}
			x.src = a[i+2];
		}
	}
}

function getObj(name)
{
	if (document.getElementById)
	{
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	}
	else if (document.all)
	{
		this.obj = document.all[name];
		this.style = document.all[name].style;
	}
	else if (document.layers)
	{
		this.obj = document.layers[name];
		this.style = document.layers[name];
	}
}

function openurl(url)
{
	window.location.href=url;
}

function makeLoginHash()
{
	var loginobj = MM_findObj('login');
	var passwdobj = MM_findObj('passwd');
	var login = loginobj.value;
	var passwd = passwdobj.value;
	var phpsessid = getcookie('PHPSESSID');
	var token;
	token = getcookie('token');
	if (token == undefined)
	{
		token = MM_findObj('token').innerHTML;
	}
	var loginhashfromclient;
	var form = MM_findObj('authenticationform');
	var logindiv = MM_findObj('logindiv');
	var passwddiv = MM_findObj('passwddiv');
	var loginhashfromclientdiv = MM_findObj('loginhashfromclientdiv');

	passwd = hex_sha256(passwd);
	token = hex_sha256(token);

	loginhashfromclient = hex_sha256(phpsessid+login+passwd+token);

	logindiv.innerHTML='';
	passwddiv.innerHTML='';
	loginhashfromclientdiv.innerHTML='<input type="text" name="loginhashfromclient" id="loginhashfromclient" value="'+loginhashfromclient+'" />';
	form.submit();
}

function makeRenewHash(obj)
{
	var element = MM_findObj(obj);
	var phpsessid = getcookie('PHPSESSID');
	var token;
	token = getcookie('token');
	if (token == undefined)
	{
		token = MM_findObj('token').innerHTML;
	}
	var renewhashfromclient;

	token = hex_sha256(token);
	renewhashfromclient = hex_sha256(phpsessid+token);

	element.href += '&renewhashfromclient='+renewhashfromclient;
}

function setcookie(name, value, expire)
{
	var timestamp = new Date(expire);
	document.cookie = name + "=" + escape(value) + "; expires=" + timestamp.toGMTString();
}

function getcookie(name)
{
	var cookies = document.cookie.split(/;/);
	for (var i=0; i<cookies.length; i++)
	{
		var mycook = cookies[i].split(/=/);
		if (mycook[0]==name) return unescape(mycook[1]);
	}
}

function setMessage(divbox, message)
{
	div = document.getElementById(divbox);
	div.innerHTML = message;
}

function afficher(element)
{
	document.getElementById(element).style.display = 'block';
}

function afficherliste(elementsarray)
{
	for(i=0; elementsarray.length; i++)
	{
		afficher(elementsarray.pop());
	}
}

function cacher(element)
{
	document.getElementById(element).style.display = 'none';
}

function cacherliste(elementsarray)
{
	for(i=0; elementsarray.length; i++)
	{
		cacher(elementsarray.pop());
	}
}

function remplir(element, str, typevalue)
{
	if (typevalue == true)
	{
		document.getElementById(element).value = str;
	}
	else
	{
		document.getElementById(element).innerHTML = str;
	}
}

function vider(element)
{
	document.getElementById(element).innerHTML = '';
}

function viderliste(elementsarray)
{
	for(i=0; elementsarray.length; i++)
	{
		vider(elementsarray.pop());
	}
}

function remplirliste(elementsarray, str, typevalue)
{
	for(i=0; elementsarray.length; i++)
	{
		remplir(elementsarray.pop(), str, typevalue);
	}
}

function pointer(element)
{
	document.getElementById(element).focus();
}
