ShowImage = function(image)
{
var imageControl = document.getElementById("ImagePrincipale");
imageControl.src = image.src;
};var NumericBox = new NumericBox();

function NumericBox()
{
	this.Verify = function(control,exp,message)
	{
		var Expression = new RegExp(exp);
		if(!Expression.test(control.value))
			alert(message);
	};
};
/* 2011/11/02 : Modifié par Benoit */
function FitToContent(id, maxHeight)
{
   var text = id && id.style ? id : document.getElementById(id);
   if ( !text )
      return;

   var adjustedHeight = text.clientHeight;
   if ( !maxHeight || maxHeight > adjustedHeight )
   {
      adjustedHeight = Math.max(text.scrollHeight, adjustedHeight);
      if ( maxHeight )
         adjustedHeight = Math.min(maxHeight, adjustedHeight);
      if ( adjustedHeight > text.clientHeight )
         text.style.height = adjustedHeight + "px";
   }
}
var TelBox = new TelBox();

function TelBox()
{
	this.Verify = function(control,exp,message)
	{
		var Expression = new RegExp(exp);
		if(!Expression.test(control.value))
			alert(message);
	};
};var DateBox = new DateBox();

function DateBox()
{
	this.Verify = function(control,exp,message)
	{
		var Expression = new RegExp(exp);
		if(control.value.length!=0 && !Expression.test(control.value))
			alert(message);
	};
};var DateTimeBox = new DateTimeBox();

function DateTimeBox()
{
	this.Verify = function(control,exp,message)
	{
		var Expression = new RegExp(exp);
		if(!Expression.test(control.value))
			alert(message);
	};
};var EmailBox = new EmailBox();

function EmailBox()
{
	this.Verify = function(control,exp,message)
	{
		var Expression = new RegExp(exp);
		if(control.value.length!=0 && !Expression.test(control.value))
			alert(message);
	};
};var TabStrip = new TabStrip();


function TabStrip()
{
	//Affichage d'un onglet
	this.ShowTab = function(onglet, prefix, tabId, nbOnglet)
	{
		//reinitialisation de tous les onglets
		for(i=0;i<nbOnglet;i++)
		{
		 tabs=document.getElementById(prefix + 'tab_'+i);
		 tabs.style.height='0px';
		 tabs.style.display = 'none';

		 index=document.getElementById(prefix + 'index_'+i);
		 index.className ="TabStripDisabled";
		}
		onglet.className ="TabStripEnabled";
		tab=document.getElementById(prefix + tabId);
		tab.style.height='auto';
		tab.style.display = 'block';
	}
}var UserActionColumn=new UserActionColumn();

function UserActionColumn()
{
	this.DoAction = function (UserAction, sender, id)
	{
		document.forms[sender].UserAction.value = UserAction;
		document.forms[sender].IdEntity.value = id;
	    document.forms[sender].submit();
	};
}var MenuV = new MenuV();

function MenuV()
{
	this.openSubMenu = function(element)
	{

	   var submenu=document.getElementById(element);

	   if(submenu != null)
		{
		//submenu.style.height ="100px"; // Supprimé par Benoit
		submenu.style.overflow ="visible";
		submenu.style.visibility ="visible";
		}

	}

	this.CloseSubMenu= function(element)
	{
		var submenu=document.getElementById(element);

		if(submenu != null)
		{

		//submenu.style.height ="0px"; // Supprimé par Benoit
		submenu.style.overflow ="hidden";
		submenu.style.visibility ="hidden";
		}
	}
};
function ToolTip(control)
{
	this.data = "";
	this.url="";
	this.control = control;


	this.Open=function()
	{
		this.page = "Ajax.php";

		this.core = document.createElement('div');
		this.core.style.position='absolute';
		this.core.style.width= "650px";
		this.core.style.height="300px";
	    this.core.style.overflow="auto";
	    this.core.style.border='1px solid black';
	    this.core.style.left="400px";
   		this.core.style.top="300px";
   		this.core.style.backgroundColor="ebebeb";
   		this.core.innerHTML="<table  style='width:100%;' class='titre'><tr><td  style='text-align:left;' ></td><td style='text-align:right;'><img src='Images/delete.png' alt='' title='Fermer' onclick='CloseTool(this)'></td><td style='width:15px'></td></tr></table>";

		document.body.appendChild(this.core);

		this.core.innerHTML += this.Send();
		this.data = "";
	}


	this.Send=function()
	{
	  var JAjax = new ajax();
	  JAjax.data = this.data;
	  return JAjax.GetRequest(this.page);
	}
}

	CloseTool = function(control)
	{
	control.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(control.parentNode.parentNode.parentNode.parentNode.parentNode);
	}
var AutoCompleteBox = new AutoCompleteBox();

function AutoCompleteBox()
{
	this.Search = function(control, classe, methode, startAt)
	{
		var span = document.getElementById('sp'+control.id);

		if(control.value.length >= startAt)
		{
		//determine les positions du control par rapport a ces parent
		var obj = span;
		var posX = obj.offsetLeft;
		var posY = obj.offsetTop;

		while(obj.offsetParent)
		{
			if(obj ==document.getElementsByTagName('body')[0])
			{
			break
			}
		    else
		    {
				posX=posX+obj.offsetParent.offsetLeft;
				posY=posY+obj.offsetParent.offsetTop;
				obj=obj.offsetParent;
			}
	 	}

		//Definir la position en dessous de la textBox
		var divResult = document.getElementById("divResult");

		if(divResult == null)
		{
			//Creation de la div de resultat.
			var divResult = document.createElement('div');
			divResult.id = "divResult";
			divResult.style.position='absolute';
		    divResult.style.left = posX + "px";
		    divResult.style.top = posY + 25 + "px";
		    divResult.style.width = control.style.width;
		    divResult.style.height = "200px";
		    divResult.style.overflow = "auto";

		    divResult.style.opacity="0.80";
		    divResult.style.filter = "alpha(opacity='80')";
		    divResult.style.border='1px solid black';
		    divResult.style.backgroundColor = "white";

		    divResult.innerHTML = "<center><br /><br /><img src='Images/loader50.gif' alt='Wait' title='wait' /></center>";
			document.body.appendChild(divResult);
		}

		//Appele de la fonction ajax D'autocompletion
		 var JAjax = new ajax();
		 JAjax.data = "Class="+classe+"&Methode="+methode;
		 JAjax.data +="&sourceControl="+control.value;
		 JAjax.data +="&sourceControlId="+control.id;
		 JAjax.mode = "A";
	  	 JAjax.Control = divResult;

 		return JAjax.GetRequest("Ajax.php");

		}
 		else
 		{
 			//fermeture de la div
 			var divResult = document.getElementById("divResult");
			if(divResult != null)
			{
				document.body.removeChild(divResult);
			}
 		}
	};

	this.SetResult = function(control, controlId)
	{
		//Recuperation de la textBox
		var ctr = document.getElementById(controlId);
		ctr.value = control.id;

		//Recuperation de la div
		var divResult = document.getElementById("divResult");
		document.body.removeChild(divResult);
	}
};var LogBlock=new LogBlock();

function LogBlock()
{
	this.Delete	= function()
	{

		this.data = "Action=Delete";
		this.Send();
	};

	this.Send=function()
	{
	  var ajax=new XMLHttpRequest();
	  ajax.open('POST','Ajax.php',false)
	  ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	  ajax.send(this.data);

	  return ajax.responseText;
	};
}function PopUp(propriete, argument, action, sourceControl)
{
	//Deserialisation
	property=new Array();
	property = serialization.Decode(propriete);

	arg=new Array();
	arg = serialization.Decode(argument);

    actions = new Array();
	actions = serialization.Decode(action);

	sourceControls = new Array();
	sourceControls = serialization.Decode(sourceControl);

	//Propriete
	this.core="";
	this.page = "Ajax.php";
	this.idEntity=arg["idEntity"];

	this.data +="&Arg="+argument;

	for(ar in arg)
	{
		 this.data += "&"+ar+"="+arg[ar];
	}

	//ajout des control source
	for(control in sourceControls)
	{
		if(control != "")
		{
			var ctr = document.getElementById(control);

			if(ctr != null)
			{
				this.data += "&"+ control + "=" + ctr.value;
			}
		}
	}

	this.Open=function()
	{


	// Ajout d'un div Grise
	this.backGround = document.createElement('div');
	this.backGround.style.height = document.body.parentNode.scrollHeight + "px";
	this.backGround.id = "back";

	document.body.appendChild(this.backGround);

	this.core = document.createElement('div');


	var i=0;
	while(document.getElementById(property['Name']+i) != null)
	{
		i++;
	}

	this.core.id = property['Name']+i;
	this.core.className = "popup";
	this.core.style.width= property["Width"]+"px";
	this.core.style.height=property["Height"]+"px";

    //centrage de la fenetre
    if(property["Left"] != "")
    {
     this.core.style.left=property["Left"];
    }
    else
    {
     //this.core.style.left = ( 625  -  (property["Width"] / 2 )) + "px";
	 this.core.style.left = "50%";
	 if(property["Width"].indexOf("px") != '-1') width = property["Width"].slice(0, -2); else width = property["Width"];
	 this.core.style.marginLeft = "-" + Math.floor(width / 2) + "px";
    }

	if(property["Top"] != "")
	{
	// this.core.style.top = document.body.scrollTop + document.documentElement.scrollTop + 10 +"px";
	 this.core.style.top = property["Top"];
	}
	else
	{
    	//this.core.style.top = (300 - property["Height"] / 2 ) + document.body.scrollTop + document.documentElement.scrollTop +"px";
		this.core.style.top = "50%";
		if(property["Height"].indexOf("px") != '-1') height = property["Height"].slice(0, -2); else height = property["Height"];
		height = (-Math.floor(height / 2)) + document.documentElement.scrollTop;
		this.core.style.marginTop = Math.floor(height) + "px";
	}
	//this.core.style.overflow="auto";
    //this.core.style.opacity=property["Opacity"];
    //this.core.style.border='1px solid black';
	this.Classe = property["Class"];
	this.RefreshPage = property["RefreshPage"];

    //Remplacement des caracteres
    if(actions["OnClose"] != null)
    {
     var i=0;var b='"';
      while (i!=-1)
       {
         i=actions["OnClose"].indexOf("*",i);
         if (i>=0) {
            actions["OnClose"]=actions["OnClose"].substring(0,i)+b+actions["OnClose"].substring(i+"*".length);
            i+=b.length;
         }
      }
    this.onClose = actions["OnClose"];
   }
   else
   {
    this.onClose ="";
   }
	tool=document.createElement('div');
    this.core.appendChild(tool);

    //tool.innerHTML="<table  style='width:100%;' class='titre'><tr><td  style='text-align:left;' >"+property["Title"]+"</td><td style='text-align:right;'><img src='Images/maximize.png' alt='' title='Fermer' onclick='Maximize(\""+this.core.id+"\")' ><img src='Images/delete.png' alt='' title='Fermer' onclick='Close(\""+this.core.id+"\",\""+this.Classe+"\",\""+this.RefreshPage+"\");"+this.onClose+"' ></td><td style='width:15px'></td></tr></table>";

	 // Modifié par Benoit
	 tool.innerHTML="<span class='title'>"+property["Title"]+"</span><span class='close' title='Fermer' onclick='Close(\""+this.core.id+"\",\""+this.Classe+"\",\""+this.RefreshPage+"\");"+this.onClose+"'></span>";

	 this.page +="?idEntity="+this.idEntity;

	 this.frame=document.createElement('iframe');
	 this.frame.style.width=property["Width"];
	 this.frame.style.height=property["Height"];

	 if(arg["Url"] =="")
   	 {
   	   	 this.core.innerHTML +="<span id='Fermer' onclick='document.body.removeChild(this.parentNode);' ></span>"+this.Send();
	 }
	 else
	 {
	 	 if(this.idEntity != undefined)
		 {
		 	if(arg["Url"].indexOf('?')>0)
	 		{
		 		this.frame.src = arg["Url"]+"&idEntity="+this.idEntity+this.data;
	 		}
		 	else
		 	{
	 			this.frame.src = arg["Url"]+"?idEntity="+this.idEntity+this.data;
			}
		 }
		 else
		 {
		 	if(arg["Url"].indexOf('?')>0)
	 		{
		 		this.frame.src = arg["Url"]+"&"+this.data;
			}
		 	else
		 	{
	 			this.frame.src = arg["Url"]+"?"+this.data;
			}
		 }

		 	this.core.appendChild(this.frame);
	 }

    document.body.appendChild(this.core);

	}

	this.Close=function()
	{
  		document.body.removeChild(block);
  	}

	this.Send=function()
	{
	  var JAjax = new ajax();
	  JAjax.data = this.data;
	  return JAjax.GetRequest(this.page);
	}
};

function Maximize(popup)
{

   po=document.getElementById(popup);
   fr=po.getElementsByTagName("iframe");

	if(po.style.width == "1000px")
	{
		po.style.width = "300px";
		po.style.height ="40px";
		fr[0].style.width = "300px";
		fr[0].style.height ="20px";
	}
	else
	{
		po.style.width = "1000px";
		po.style.height ="800px";
		fr[0].style.width = "1000px";
		fr[0].style.height ="800px";
	}
}

function Close(popup,classe,url)
{
 	po=document.getElementById(popup);
    document.body.removeChild(po);

    backGround = document.getElementById("back");
    document.body.removeChild(backGround);
}

function ClosePopUp(popup)
{
	po=document.getElementById("popup0");
    document.body.removeChild(po);

    backGround = document.getElementById("back");
    document.body.removeChild(backGround);
}var JUserAction=new UserAction();

function UserAction()
{
	this.DoAction = function (UserAction, Arg, sender)
	{

		if(sender.form != null)
		{
	 	sender.form.UserAction.value = UserAction;
	    sender.form.Arg.value = Arg;

		if(sender.form.Sender != null)
			{sender.form.Sender.value = sender.value;}

		sender.form.submit();
		}
		else
		{
		//recuperation du formulaire
		var formBlock = sender.parentNode;
		while(formBlock.nodeName != "FORM")
		{
			formBlock = formBlock.parentNode;
		}

		formBlock.UserAction.value = UserAction;
		formBlock.Arg.Value = Arg;
		formBlock.Sender.Value = sender.value;
		formBlock.submit()
		}
	};
}function Jax(propriete, argument)
{
	var Action = new AjaxAction(propriete, argument);
	Action.DoAction();
}

function AjaxAction(propriete, argument)
{
		//Deserialisation
		property=new Array();
		property = serialization.Decode(propriete);

		arg=new Array();
		arg = serialization.Decode(argument);

		var asyncrhone = arg["Asynchrone"];

		//Propriete
		this.page = "Ajax.php";

		this.data +="&Arg="+argument;

		for(ar in arg)
		{
  			this.data += "&"+ar+"="+arg[ar];
		}

		this.DoAction = function (propriete, argument)
		{
			var sourceControl = document.getElementById(property["SourceControl"]);
			var ChangedControl= document.getElementById(property["ChangedControl"]);

			if(sourceControl != null)
			{
				this.data +="&sourceControl="+sourceControl.value;
			}

			//Recuperation des controles
			var sourceControls = property["SourceControls"].split("-");
			for(i=0;i<sourceControls.length;i++)
			{
				control = document.getElementById(sourceControls[i]);

				if(control != null)
				{
					if(control.type == "checkbox")
						this.data += "&"+sourceControls[i]+"="+control.checked;
					else
						this.data += "&"+sourceControls[i]+"="+control.value;
				}
			}

			//Si c'est un div on supprime et on recre
			if(ChangedControl.nodeName == "DIV")
			{
				var parent = ChangedControl.parentNode;
        		var NdivWait = document.createElement("div" );
              	NdivWait.id = ChangedControl.id;
				NdivWait.innerHTML = "<center><img src='Images/loader50.gif' alt='Wait' title='wait' /></center>";

              	parent.removeChild(ChangedControl);
	            parent.appendChild(NdivWait);

	            //Creation de la nouvelle div
	            var Ndiv = document.createElement("div" );
	            Ndiv.id = NdivWait.id;
	            if(asyncrhone == 1)
	            {
	            	this.Send(Ndiv.innerHTML);
	            }
	            else
	            {
	            	Ndiv.innerHTML = this.Send();
	            }

	            parent.removeChild(NdivWait);
	            parent.appendChild(Ndiv);
			}
			else
			{
				if(asyncrhone == 1)
				{
					this.Send(ChangedControl.parentNode);
				}
				else
				{
					ChangedControl.parentNode.innerHTML = this.Send();
				}
			}

			//Si demande de fermeture de popup
			if(property["ClosePopup"] == true)
			{
				ClosePopUp();
			}
		};

	this.Send=function(control)
	{
	  var JAjax = new ajax();
	  JAjax.data = this.data;

	  if(asyncrhone == 1)
	  {
	  	JAjax.mode = "A";
	  	JAjax.Control = control;
	  }

	  return JAjax.GetRequest(this.page);
	}
}

//********************Objet Ajax **********************

ajax = function()
  {
  //propriétes
   var requete='';
   this.method='post';
   this.mode='s';
   this.data="";
   this.RetunData="";
   this.Control ="";

   //creation de la requete
   this.CreateRequete=function()
	  {
	    if (window.XMLHttpRequest)
	    {
	         requete = new XMLHttpRequest();
	    }
	    else if (window.ActiveXObject)
	    {
	          requete = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    else
	    {
	         requete = new ActiveXObject("Microsoft.XMLHTTP");
	    }
	  }

	//envoi de la requete
	this.GetRequest=function(fichier)
  	{

  		this.CreateRequete();
  		typef = fichier.substring(fichier.indexOf("."));

		//selection du type de methode
    	if(this.method=='get')
		{
			methode="GET";
			donnees=null;
	    }
    	else
      	{
	    	  methode="POST";
			      donnees=this.datas;
     	}
		//selection du mode
	    if (this.mode=='s')
	    {
	    	modes=false;
	    }
	    else
	    {
	    	modes=true;
	    }

	//envoi de la requete
  	requete.open(methode,fichier,modes);

	//affichage en fonction du mode
  	if (this.mode=='s')
    {
   		requete.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   		requete.send(this.data);
  		return select();
    }
    else
    {
    	//alert(this.Control);
    	requete.control = this.Control;

   		requete.onreadystatechange = function ()
   		{
			if(requete.readyState==4)
		      {
		        if(requete.status !=500 && requete.status !=400)
		        {
		    	  	requete.control.innerHTML = select();
		        }
		      }
   		}
   		requete.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   		requete.send(this.data);
    }


	this.test = function ()
	{

	alert('ok');
	}

	//action appele en most asychrone
	this.actionrequete = function()
	{
		if(requete.readyState==4)
		      {
		        if(requete.status !=500 && requete.status !=400)
		        {
		        	alert('retour');
		        	block.innerHTML=select();
		        }
		      }

	    }
 	function select()
 	{
            if (typef=='.xml')
            {
            	type=requete.responseXML;
            }
            else
             {
            	type=requete.responseText;
             }
 		return type;
 	}
  }

  this.Refresh = function(url,classe,methode)
  {
  	control = new Array();

  	if(url.indexOf('?')>0)
 	{
		controls = serialization.Decode32(this.GetRequest(url+"&CallType=Ajax&Action="+methode));
	}
	else
	{
		controls = serialization.Decode32(this.GetRequest(url+"?CallType=Ajax&Action="+methode));
	}

	for(control  in controls)
	{
		var ctr = document.getElementById(control);

		if(ctr != null)
		{
			var parent = ctr.parentNode;
			var Ndiv = document.createElement("div" );
			Ndiv.id = control;
            Ndiv.innerHTML = controls[control];
            parent.removeChild(ctr);
            parent.appendChild(Ndiv);
		}
	}
  }

  this.RefreshModule = function(classe,methode,argument)
  {
     arg=new Array();
	 arg = serialization.Decode(argument);

	 var JAjax = new ajax();
	 JAjax.data = "Class="+classe+"&Methode="+methode;
	 JAjax.data +="&Type=Module";

	 for(ar in arg)
     {
  		 this.data += "&"+ar+"="+arg[ar];
	 }

	 controls = serialization.Decode32(JAjax.GetRequest("Ajax.php?"+argument));

	for(control  in controls)
	{
		var ctr = document.getElementById(control);

		if(ctr != null)
		{
			var parent = ctr.parentNode;
			var Ndiv = document.createElement("div" );
            Ndiv.innerHTML = controls[control];
            parent.removeChild(ctr);
            parent.appendChild(Ndiv);
		}
	}
  }
}
function JVerify(propriete, argument)
{
	var Action = new VerifyAction(propriete, argument);
	Action.DoAction();
}

function VerifyAction(propriete, argument)
{
	//Deserialisation
	property=new Array();
	property = serialization.Decode(propriete);

	arg=new Array();
	arg = serialization.Decode(argument);

	//Propriete
	this.page = "Ajax.php";

	this.data +="&Arg="+argument;

	for(ar in arg)
	{
 		 this.data += "&"+ar+"="+arg[ar];
	}

	this.DoAction = function (propriete, argument)
	{
		var sourceControl = document.getElementById(property["SourceControl"]);

		if(sourceControl != null)
		{
			this.data +="&sourceControl="+sourceControl.value;
		}

		if(this.Send().indexOf("False") > 0)
		{
			alert(arg['ErrorMessage']);
			sourceControl.value ="";
		}
	};

	this.Send=function()
	{
	  var JAjax = new ajax();
	  JAjax.data = this.data;
	  return JAjax.GetRequest(this.page);
	}
}var Message=new Message();

function Message()
{

	this.Show = function(message, close)
	{
		// Ajout d'un div Grise
		divbackGround = document.createElement('div');
		divbackGround.style.height = document.body.parentNode.scrollHeight + "px";
		divbackGround.id = "back";

		document.body.appendChild(divbackGround);

		//Creation de la div
		divMessage = document.createElement('div');
		divMessage.id = "message";
		divMessage.style.top = 300 + document.body.scrollTop + document.documentElement.scrollTop +"px";

		//Construction du message
		var textControl = "<table style='width:100%;height:100%'>";
		textControl += "<tr><td><span class='close' title='" + close + "' onclick='Message.Close();'></span></td></tr>";
		textControl += "<tr><td style='text-align:center;'>" + message +"</td></tr>";
		textControl +="</table>";
		//Ajout a la div
	 	divMessage.innerHTML = textControl;

  		document.body.appendChild(divMessage);

		setTimeout("Message.Close()",3000);
  	};

	this.Ask=function(message)
	{
		return confirm(message);
	};

	this.Close = function()
	{
		var	message = document.getElementById('message');
	    document.body.removeChild(message);
		var	background = document.getElementById('back');
	    document.body.removeChild(background);
	}
};var serialization = new Serialization();

function Serialization()
{
	this.Decode = function (chaine)
	{
	var args = chaine.split(":")
	var property = new Array();

		for(i=0;i<args.length;i++)
		{
			prop = args[i].split("!");
			//property[this.Decript(prop[0])]=this.Decript(prop[1]);
			property[prop[0]]=prop[1];
		}

	return property;
	}

	this.Decode32 = function (chaine)
	{
	var args = chaine.split("^")
	var property = new Array();

		for(i=0;i<args.length;i++)
		{
			prop = args[i].split("|");
			property[prop[0]]=prop[1];
		}

	return property;
	}


	this.Decript = function(code)
	{
		cript ="";
		if(code != null )
		{
			for(j=0;j<=code.length ; j++)
			{
			 cript += (String.fromCharCode(code.charCodeAt(j)));
			}
		}
		return cript;
	}
}

