
var dall;
var geid;
var offsetxpoint=0
var offsetypoint=20
var infosDisplayed = false;

document.onmousemove=mousePosition;

function hide(element_id){
	var div = document.getElementById(element_id);
	div.style.display = 'none';
}


function load(element_id,url,message,ouvrir)
{
	
	if( !message ) message = '<div class="tnChargement">Chargement en cours...</div>';
	var req = null; 
	var div = document.getElementById(element_id);
	var memoire = div.innerHTML;
	
	
	div.innerHTML=message;
	if(window.XMLHttpRequest)
		req = new XMLHttpRequest(); 
	else if (window.ActiveXObject)
		req  = new ActiveXObject("Microsoft.XMLHTTP"); 
	
	req.onreadystatechange = function()
	{ 
		div.innerHTML=message;
		if(req.readyState == 4)
		{
			switch( req.status ){
				case 12029: // Erreurs de proxy ou firewall, on reessaie la requete 3 fois
			    case 12030:
			    case 12031:
			    case 12152:
			    case 12159:
			    	div.innerHTML = '<div class="tnChargement">Vous rencontrez des probl&egrave;mes de connexion &agrave; cause d\'un proxy ou d\'un par-feu. <br/>Pour plus de renseignement, contactez votre administrateur ou Tehms &agrave; l\'adresse contact@tehms.com</div>';
			    break;
			    
			    case 200: // Reponse positive
			    	
		    		var header_debut = req.responseText.substring(0,47);
		    		
		    		if( header_debut == "<div class=\"tehmsheader\" style=\"display:none;\">" ){
			    		var header_fin = req.responseText.substring(47).indexOf("</div>\n\n\n\n") + 47;
			    		var header_contenu = req.responseText.substring(47,header_fin);
			    		var header_text = req.responseText.substring(51,header_fin);
						var page_html = req.responseText.substring(header_fin + 9);
		    			var code = header_contenu.substring(0,4);
						code = parseInt(code,10);
						switch( code ){
					    	case 201: // Execution automatique d'un script
						    	div.innerHTML=page_html;
						    	eval(header_text);
						    break;
						    case 3001: // LOGIN
						    	document.location.href="/";
						    break;
						   	default:	// Autre code d'erreur, on affiche le formulaire de retour de bug
						    	div.innerHTML = memoire;
						    break;
						}
		    		}else{
		    			div.innerHTML=req.responseText;
		    		}
		    		if( ouvrir ) div.style.display = 'block';
			    break;
			    
			    
				default: 	// Autre code d'erreur, on affiche le formulaire de retour de bug
			    	div.innerHTML = '<div class="tnChargement">Erreur ' + req.status + ' : ' + req.statusText + '<br/><a href="#" onclick="popup(\'erreur\',\'index.php5?module=portail&amp;page=saisie_erreur&amp;libelle='+(req.status + ' : ' + encodeURIComponent(req.statusText).replace(/\'/g,'\\\''))+'&url='+encodeURIComponent(url)+'\');return false;">Signaler l\'erreur</a></div>';
			    break;
			}

		}
	};
	
	
	 
	req.open("GET", url, true); 
	req.setRequestHeader("Pragma","no-cache");
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	req.send(null);
} 


function submit_form(f,element_id,redirect_url,essai,message)
{
	
	var div = document.getElementById(element_id);
	if (!div) div = divDetail;
	//var basket = document.getElementById("tnDivBasket");
	
	var memoire = div.innerHTML;
	
	// Recuperation des valeurs du formulaire
	inputList = f.getElementsByTagName('input');
	var queryComponents = new Array();
	for( i=0 ; i < inputList.length ; i++ )
	{
		myInput = inputList.item(i);
		
		if( myInput.widgEditorObject ){
			myInput.widgEditorObject.updateWidgInput();
		}
		
		if( myInput.type == 'file' ) return true;
		if( myInput.name ){
			if( myInput.type == 'hidden' || myInput.type == 'text' || myInput.type == 'password' || (myInput.type == 'radio' && myInput.checked==true) || (myInput.type == 'checkbox' && myInput.checked==true) ){
				//alert(encodeURIComponent(myInput.name) + "=" + encodeURIComponent(myInput.value));
				if( myInput.value == "" ) myInput.value = " ";
				queryComponents.push( encodeURIComponent(myInput.name) + "=" + encodeURIComponent(myInput.value) );
	        }
		}
	}
	
	areaList = f.getElementsByTagName('textarea');
	for( i=0 ; i < areaList.length ; i++ )
	{
		myArea = areaList.item(i);
		if( myArea.name )
		{
			if( myArea.value == "" ) myArea.value = " ";
			queryComponents.push(
        	  encodeURIComponent(myArea.name) + "=" + 
        	  encodeURIComponent(myArea.value) );
		}
	}
	
	selectList = f.getElementsByTagName('select');
	for( i=0 ; i < selectList.length ; i++ )
	{
		mySelect = selectList.item(i);
		if( mySelect.name )
		{
			queryComponents.push(
        	  encodeURIComponent(mySelect.name) + "=" + 
        	  encodeURIComponent(mySelect.value) );
       	}
	}
	
	
	var post_vars = queryComponents.join("&");
	var action = f.attributes['action'].value;
	
	
	// Requete AJAX
	if(!message || message == null || message == ''){
		div.innerHTML='<div class="tnChargement">Traitement en cours...</div>';
	}else if( message.substring(0,1) == "<" ) {
		div.innerHTML= message;
	}else{
		div.innerHTML='<div class="tnChargement">' + message + '</div>';
	}
	
	if(window.XMLHttpRequest)
		req = new XMLHttpRequest(); 
	else if (window.ActiveXObject)
		req  = new ActiveXObject("Microsoft.XMLHTTP"); 
	
	req.onreadystatechange = function()
	{ 
		if(!message || message == null || message == ''){
			div.innerHTML='<div class="tnChargement">Traitement en cours...</div>';
		}else if( message.substring(0,1) == "<" ) {
			div.innerHTML= message;
		}else{
			div.innerHTML='<div class="tnChargement">' + message + '</div>';
		}
		if(req.readyState == 4)
		{
			switch( req.status ){
				
				case 12029: // Erreurs de proxy ou firewall, on r?essaie la requ?te 3 fois
			    case 12030:
			    case 12031:
			    case 12152:
			    case 12159:
			    	if( essai <= 4 ) this.submit_form(f,element_id,redirect_url,essai+1,message);
			    	else div.innerHTML = '<div class="tnChargement">Vous rencontrez des probl&egrave;mes de connexion &agrave; cause d\'un proxy ou d\'un par-feu. ('+req.status+ '-'+essai+') <br/>Pour plus de renseignement, contactez votre administrateur ou Tehms &agrave; l\'adresse contact@tehms.com</div>';
			    break;
			    case 200: // Reponse positive
			    
			    	var header_debut = req.responseText.substring(0,47);
		    		
		    		if( header_debut == "<div class=\"tehmsheader\" style=\"display:none;\">" ){
			    		var header_fin = req.responseText.substring(47).indexOf("</div>\n\n\n\n") + 47;
			    		var header_contenu = req.responseText.substring(47,header_fin);
			    		var header_text = req.responseText.substring(51,header_fin);
						var page_html = req.responseText.substring(header_fin + 9);
		    			var code = header_contenu.substring(0,4);
						code = parseInt(code,10);
						switch( code ){
					    	case 201: // Execution automatique d'un script
					    		if( redirect_url.length > 0 ){
									//basket.innerHTML=page_html;
									load(element_id,redirect_url,message);
								}else{
									div.innerHTML=page_html;	
								}
						    	eval(header_text);
						    break;
						    case 3001: // LOGIN
						    	document.location.href="index.php5";
						    break;
						   	default:	// Autre code d'erreur, on affiche le formulaire de retour de bug
						    	document.tehms.popup('<div class="tnChargement">' + header_text + '<br/><br/><a href="#" onclick="popup(\'erreur\',\'index.php5?module=portail&amp;page=saisie_erreur&amp;libelle='+(code + ' : ' + header_text.replace(/\'/g,'\\\''))+'&url='+encodeURIComponent(action)+'\');return false;" style="font-style:italic;font-size:11px;">Cette erreur vous semble anormale ? <br/>Contactez le support technique en cliquant ici</a></div>','');
						    	div.innerHTML = memoire;
						     	//div.innerHTML = '<div class="tnChargement">Erreur ' + code + ' : ' + text + '<br/><a href="#" onclick="popup(\'erreur\',\'index.php5?module=portail&amp;page=saisie_erreur&amp;libelle='+(req.status + ' : ' + encodeURIComponent(req.statusText).replace(/\'/g,'\\\''))+'&url='+encodeURIComponent(action)+'\');return false;">Signaler l\'erreur</a></div>';
						    break;
						}
		    		}else{
		    			if( redirect_url.length > 0 ){
							load(element_id,redirect_url,message);
						}else{
							div.innerHTML=req.responseText;	
						}
		    		}
		    		
		    		
			    break;
			    
			    default:
			    	div.innerHTML = '<div class="tnChargement">Erreur ' + req.status + ' : ' + req.statusText + '<br/><a href="#" onclick="popup(\'erreur\',\'index.php5?module=portail&amp;page=saisie_erreur&amp;libelle='+(req.status + ' : ' + encodeURIComponent(req.statusText).replace(/\'/g,'\\\''))+'&url='+encodeURIComponent(action)+'\');return false;">Signaler l\'erreur</a></div>';
			    break;
			}

		} 
	};
	
	req.open("POST", action, true); 
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	req.send(post_vars);
	
	
	return false;
}


function limitWidthName( element_name, widthPx ){
	var elements = document.getElementsByName(element_name);
	var testDiv = document.getElementById("tnDivTestWidth");
	for( var e=0; e<elements.length; e++ ){
		var element = elements[e];
		var length = element.getAttribute('length');
		if( !length ) length = widthPx;
		var positif = true;
		if( length < 0 ){
			positif = false;
			length = -length;
		}
		var i=0;
		var step = 1;
		testDiv.innerHTML = element.innerHTML;
		var initial_text = element.innerHTML;
		
		var fill = (element.getAttribute('fill') && element.getAttribute('fill')=='fill')?true:false;
		
		while( testDiv.offsetWidth > length && i<100 ){
			var taille_dernier = testDiv.innerHTML.length;
			
			if( positif ){
				if( testDiv.innerHTML.substring(testDiv.innerHTML.length-3-5,testDiv.innerHTML.length-3) == "&amp;" ) step += 5;
				testDiv.innerHTML = (testDiv.innerHTML.substring(0,testDiv.innerHTML.length-3-step)+"...");
				element.innerHTML = testDiv.innerHTML;//(element.innerHTML.substring(0,element.innerHTML.length-3-step)+"...");
				if( testDiv.innerHTML.length >= taille_dernier ){
					step += (testDiv.innerHTML.length - taille_dernier) + 1;
				}else{
					step = 1;
				}
			}else{
				
				if( testDiv.innerHTML.substring(3,8) == "&amp;" ) step += 5;
				testDiv.innerHTML = ("..."+testDiv.innerHTML.substring(3+step,testDiv.innerHTML.length));
				element.innerHTML = testDiv.innerHTML;//(element.innerHTML.substring(0,element.innerHTML.length-3-step)+"...");
				if( testDiv.innerHTML.length >= taille_dernier ){
					step += (testDiv.innerHTML.length - taille_dernier) + 1;
				}else{
					step = 1;
				}
			}
			
			i++;
		}
		
		if( i > 0 ){
			//onmouseover="document.tehms.displayInfos('{$infos}');" onmouseout="document.tehms.hideInfos();"
			element.initial_text = initial_text;
			element.onmouseover = function(){displayInfos(this.initial_text);};
			element.onmouseout = function(){hideInfos();};
		}
		
		i=0;
		if( fill ){
		
			//alert( testDiv.offsetWidth );
			while( testDiv.offsetWidth < (length-3) && i<100 ){
				
				if( positif ){
					testDiv.innerHTML = testDiv.innerHTML + ".";
					element.innerHTML = testDiv.innerHTML;
				}else{
					testDiv.innerHTML = "." + testDiv.innerHTML;
					element.innerHTML = testDiv.innerHTML;
				}
				
				i++;
			}
			
		}
		
	}
}

function displayInfos( text, cssClass ){
	
	var divInfos = document.getElementById("tnDivInfos");
	if( !cssClass ) cssClass = "tnDivInfos";
	divInfos.className = cssClass;
	divInfos.innerHTML = text;
	infosDisplayed = true;
	divInfos.style.visibility = 'visible';
	
	
}
function hideInfos(){
	var divInfos = document.getElementById("tnDivInfos");
	divInfos.style.visibility = 'hidden';
	infosDisplayed = false;
	divInfos.style.top = -50;
}

	
function mousePosition(e){
	
	var divInfos = document.getElementById("tnDivInfos");
	
	curX=(geid)?e.pageX : e.clientX + truebody().scrollLeft;
	curY=(geid)?e.pageY : e.clientY + truebody().scrollTop;
	
	if (infosDisplayed)
	{
		
		//Find out how close the mouse is to the corner of the window
		var rightedge = dall&&!window.opera? truebody().clientWidth-e.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20
		var bottomedge = dall&&!window.opera? truebody().clientHeight-e.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20
		var topedge = dall&&!window.opera? event.clientY+offsetypoint : e.clientY+offsetypoint-20
		
		var leftedge = (offsetxpoint<0)? offsetxpoint*(-1) : -1000
		
		//if the horizontal distance isn't enough to accomodate the width of the context menu
		if (rightedge < divInfos.offsetWidth)
		{
			//move the horizontal position of the menu to the left by it's width
			divInfos.style.left=dall? truebody().scrollLeft + event.clientX - divInfos.offsetWidth+"px" : window.pageXOffset+e.clientX - divInfos.offsetWidth+"px"
		}
		else if (curX < leftedge)
		{
			divInfos.style.left="5px"
		}
		else
		{
			//position the horizontal position of the menu where the mouse is positioned
			divInfos.style.left = curX + offsetxpoint + "px"
		}

		//same concept with the vertical position
		if (bottomedge < divInfos.offsetHeight)
		{
			divInfos.style.top = dall? truebody().scrollTop + event.clientY - divInfos.offsetHeight - offsetypoint+"px" : window.pageYOffset + e.clientY - divInfos.offsetHeight - offsetypoint+"px"
		}
		else
		{
			divInfos.style.top = curY+offsetypoint + "px"
		}

	}
}


function truebody(){
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
