/**
 * @author seubi et pedro 
 */

YkeUI.YkePopup = function() {};

// !! le div  disArea doit exister : <div id="disArea" style="display:none;">&nbsp;</div>
// + div pour editpopup : 
//<div id="editpopup" class="popup" style="display:none;"></div>
//<div id="loadingPopup" class="loadingPopup" style="display:none;"></div>
//<div id="alertPopup" class="alertPopup" style="display:none;"></div>
//<div id="confirmPopup" class="alertPopup" style="display:none;"></div>				


YkeUI.YkePopup.Field = function ()
{
	
	/* public */ this.name = null;
	/* public */ this.sourceName = null;
	/* public */ this.controlType = null;
	/* public */ this.hightLight = null;
	/* public */ this.disable = null;
	/* public */ this.size = null;
	/* public */ this.mode = null; //for gps options : 'lat' or 'long'
	/* public */ this.controlFunc = null;
	/* public */ this.saveFunc = null;
	/* public */ this.brutText = null; //text brutal
	/* public */ this.tr = null;
	/* public */ this.visible = null;
	/* public */ this.show = function() {this.visible = true; this.tr.style.display = ""; };
	/* public */ this.hide = function() {this.visible = false; this.tr.style.display = "none"; };
	
}

YkeUI.YkePopup.Button = function ()
{
	/* public */ this.name = null;
	/* public */ this.saveFunc = null;
	/* public */ this.visible = null;
	/* public */ this.div = null;
	/* public */ this.show = function() {this.visible = true; this.div.style.display = ""; };
	/* public */ this.hide = function() {this.visible = false; this.div.style.display = "none"; };
}

YkeUI.YkePopup.Field.hide = function()
{
	this.visible = false;
	this.tr.style.display = "none";
}

YkeUI.YkePopup.Field.show = function()
{
	this.visible = true;
	this.tr.style.display = "inline"; 
}

/*
 *        Créer une popup en read only 
 *        
 * popupID = id de la popup 
 * dataObject = datasource de la ligne de la grid 
 * typeField = tableau de 'YkeUI.YkePopup.Field ' sur chaque ligne a afficher
 * title = champ du dataObject à afficher comme titre 
 */

YkeUI.YkePopup.ReadPopup = function(popupID, dataObject, typeField, title)
{
	/*public*/ this.DataObj = dataObject;
	
	/*public*/ this.Close= function()
	{
		$('disArea').style.display='none';
		if(YkeIsIe6OrOlder()==false)
			new Effect.SwitchOff($(popupID));
		else
			$(popupID).hide();
	}
	
	/*public*/ this.Render = function()
	{
		$('disArea').style.display='block'; //fond qui disable l'interface
		
		$(popupID).innerHTML="";	
		
		var nb_item= typeField.length;  
		
		if(nb_item>0)
		{
			/*---- HEADER POPUP ----*/
			
			var span_close = document.createElement("span");
			span_close.className ="closeBtn";
			span_close.popupobj = {popupInstance: this}; //la finte du boukaque cendré
			span_close.onmousedown = function() //clic sur la croix
			{
				this.popupobj.popupInstance.Close();
			}		
			span_close.innerHTML ="&nbsp;&nbsp;&nbsp;&nbsp;"; 
			$(popupID).appendChild(span_close);
			
			var h3 = document.createElement("h3");
			$(popupID).appendChild(h3);
			
			var span = document.createElement("span");
			span.id = popupID+"_Titre";
			span.innerHTML=dataObject[title];
			h3.appendChild(span);
			
			
			/*---- CONTENT POPUP ----*/
			
			var divContent= document.createElement('div');
			
			var div = document.createElement("div");
			div.className = "content_popup";
			div.id = "content_popup";
			divContent.appendChild(div);
			
			var table =document.createElement("table");
			table.cellPadding="1";
			table.cellSpacing="0";
			table.border="0";
			table.className="table_popup";
			div.appendChild(table);
			
			var tb= table.appendChild(document.createElement('tbody'));
					
			for(var i=0;i<nb_item;i++)
			{
				try{			
				switch(typeField[i].controlType)
				{
					case "textbox":
					{
						var tr = document.createElement("tr"); 
						var td1 = document.createElement("td");
						//td1.style.width="168px";
						
						tr.appendChild(td1);
						
						var span = document.createElement('span');
						span.style.padding = "0";
						span.innerHTML = "- "+typeField[i].name+" :";
						td1.appendChild(span);
						
						var td2 = tr.appendChild(document.createElement("td"));
						td2.style.textAlign = "left";
						var span=document.createElement("span");
						if(dataObject[typeField[i].sourceName]==-1 || dataObject[typeField[i].sourceName]==undefined || dataObject[typeField[i].sourceName]=="")
							span.innerHTML="n/c";
						else
							span.innerHTML=dataObject[typeField[i].sourceName];
						if(typeField[i].dateFr != null)
						{
							if(typeField[i].dateFr!="")
								span.innerHTML=typeField[i].dateFr;
							else
								span.innerHTML="n/c";
						}
						if(typeField[i].controlFunc!=null)
						{
							span.innerHTML = '';
							typeField[i].controlFunc(span,dataObject)
						}
						td2.appendChild(span);
						tb.appendChild(tr);	
						break;
					}
					case "gps":
					{
						var tr = document.createElement("tr"); 
						var td1 = document.createElement("td");
						tr.appendChild(td1);
						
						var span = document.createElement('span');
						span.style.padding = "0";
						span.innerHTML = "- "+typeField[i].name+" :";
						td1.appendChild(span);
						
						var td2 = tr.appendChild(document.createElement("td"));
						td2.style.textAlign = "left";
						var span=document.createElement("span");
						if(dataObject[typeField[i].sourceName.degres]!=null || dataObject[typeField[i].sourceName.minute]!=null || dataObject[typeField[i].sourceName.seconde]!=null || dataObject[typeField[i].sourceName.orientation]!=null)
							span.innerHTML=dataObject[typeField[i].sourceName.degres]+"° "+dataObject[typeField[i].sourceName.minute]+"' "+dataObject[typeField[i].sourceName.seconde]+"'' "+dataObject[typeField[i].sourceName.orientation];							
						else
							span.innerHTML="n/c";							
						td2.appendChild(span);
						tb.appendChild(tr);	
						break;
					}
				}
				}
				catch(err) { 	IsDebug(err);};

			}
			
			
			
			$(popupID).appendChild(divContent);
			
			var h= $(popupID).appendChild(document.createElement('h4'));
			var blanc = document.createElement('span');
			blanc.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
			h.appendChild(blanc);
		
		}
		if(YkeIsIe6OrOlder()==false)
			new Effect.BlindDown($(popupID));
		else
			$(popupID).show();
	}
}

/*
 *        Créer une popup d'édition  
 *        
 * popupID = id de la popup 
 * dataObject = datasource de la ligne de la grid // null si création nouvelle popup
 * typeField = tableau de 'YkeUI.YkePopup.Field ' sur chaque ligne a afficher
 * title = champ du dataObject à afficher comme titre // string si cr�ation nouvelle popup
 * pages = tableau des sous pages à afficher avec onglets, si null alors une seule page principale sans onglet
 * typeButtons = tableau de 'YkeUI.YkePopup.Button' pour les boutons general de la popup 
 */

YkeUI.YkePopup.EditPopup = function(popupID, dataObject, typeField, title, pages, typeButtons, closeConfirmation)
{
	
	/*public*/ this.nbItemByPage = 12;
	
	/*public*/ this.creation = false; // par défault la popup est en mode édition
	if(dataObject==null)
	{
		this.creation = true;
		dataObject={};	
	}
	/*public*/ this.DataObj = dataObject;
	this.DataObj.fields = typeField;
	
	/*public*/ this.ykeControls = null;
	
	/*public*/ this.bufferData = null; //buffer witch contains all the current data of the popup 
	this.DataObj.bufferData = this.bufferData;
	
	/*public*/ this.UpdateEvent = null;
	
	/*public*/ this.Close= function(confirmation)
	{
		/*[firefox bug]*/
		var tbxws = $$('#'+popupID+' .tbxWrap');
		for(var i=0; i < tbxws.length; i++)
		{
			tbxws[i].style.overflow = '';
		}
		/*[/firefox bug]*/
		
		if(confirmation)
		{
			var popupconfirm = null;	
			function closeAll(val, popupInstance)
			{
				
				
				if(val==true)
				{				
					try
					{
						$('disArea').style.display='none';
						new Effect.SwitchOff($(popupID));
						if(this.DataObj != null)
						{
							this.DataObj.bufferData = null;		
							this.DataObj.fields = null;
							this.DataObj.ykeControls = null;
						}
					}
					catch(e) {}
				}
				
			}
			popupconfirm = new YkeUI.YkePopup.YkeConfirm("confirmPopup"); 
			popupconfirm.disaLayer = false; //keep the disaLayer element
			popupconfirm.Render("Etes-vous sûr de vouloir quitter sans enregistrer ?");
			popupconfirm.OnChoose = closeAll;	
		}
		else
		{
			$('disArea').style.display='none';
			if(YkeIsIe6OrOlder()==false)
				new Effect.SwitchOff($(popupID));
			else
				$(popupID).hide();
		}
		
	}
	
	/*public*/ this.Render = function()
	{
		$('disArea').style.display='block'; //fond qui disable l'interface
		
		$(popupID).innerHTML="";	
		
		var nb_item= typeField.length;  
		if(nb_item>0)
		{
			/*---- HEADER POPUP ----*/
			var span_close = document.createElement("span");
			span_close.className ="closeBtn";
			span_close.popupobj = {popupInstance: this}; //la finte du boukaque cendré
			span_close.onmousedown = function() //clic sur la croix
			{
				this.popupobj.popupInstance.Close(closeConfirmation);
			}		
			span_close.innerHTML ="&nbsp;&nbsp;&nbsp;&nbsp;"; 
			$(popupID).appendChild(span_close);
			
			var h3 = document.createElement("h3");
			$(popupID).appendChild(h3);
			
			var span = document.createElement("span");
			span.id = popupID+"_Titre";
			
			//if(this.creation == false)
			//	span.innerHTML=this.DataObj[title];
			//else
				span.innerHTML=title;
			h3.appendChild(span);
			
			
			/*---- CONTENT POPUP ----*/
			var divContent= document.createElement('div');
			
			//construction du bufferData
			this.bufferData = {};
			for(var i=0;i<nb_item;i++)
			{
				if(this.DataObj[typeField[i].sourceName] == null)	
					this.bufferData[typeField[i].sourceName] = "";
				else
					this.bufferData[typeField[i].sourceName] = this.DataObj[typeField[i].sourceName];
			}
			
			if(pages==null)
			{
				// only one pages				
				var div = document.createElement("div");
				div.className = "content_popup";
				div.id = "content_popup";
				divContent.appendChild(div);
				divContent.style.overflow = "auto"; 
				
				var table =document.createElement("table");
				table.cellPadding="2";
				table.cellSpacing="0";
				table.border="0";
				table.className="table_popup";
				div.appendChild(table);
				
				var tb= table.appendChild(document.createElement('tbody'));
				
				for(var i=0;i<nb_item;i++)
				{
					var tr = document.createElement("tr"); 
					var td1 = document.createElement("td");
					td1.className = 'td1ContentPopup';
					//td1.style.width="192px";
					tr.appendChild(td1);
					
					var span = document.createElement('span');
					span.innerHTML = "- "+typeField[i].name+" :";
					td1.appendChild(span);
					
					// generate the controle depending of the typeField properties
					generateControl(/*ref*/ this.DataObj,typeField[i],tr,null);
					
					tb.appendChild(tr);	
				}
			}
			else
			{
				
				//create the menu
				var menu  = document.createElement("div");
				menu.className = "menuPopup";
				divContent.appendChild(menu);
				
					
				// create the pages - div
				for(var p=1;p<=pages.length;p++)
				{
					
					var page = document.createElement("div");
					page.className = "content_popup";
					page.id = "page"+p;
					page.style.overflow = "auto";
					divContent.appendChild(page);
					if(p==1)
						page.style.display="block";
					else
						page.style.display="none";
					
					var table =document.createElement("table");
					table.cellPadding="2";
					table.cellSpacing="0";
					table.border="0";
					table.className="table_popup";
					page.appendChild(table);
					
					var tb= table.appendChild(document.createElement('tbody'));
					
					//create the controls
					for(var i=0;i<nb_item;i++)
					{
						if(typeField[i].pageNumber==p)
						{
							var tr = document.createElement("tr"); 
							var td1 = document.createElement("td");
							td1.className = 'td1ContentPopup';
							//td1.style.width="192px";
							tr.appendChild(td1);
							
							var span = document.createElement('span');
							span.innerHTML = "- "+typeField[i].name+" :";
							td1.appendChild(span);
							// generate the controle depending of the typeField properties
							/*this.DataObj = */generateControl(/*ref*/ this.DataObj,typeField[i],tr,null);
							tb.appendChild(tr);	
						}
					}
				}
				
				//create the menu
				for(var p=1;p<=pages.length;p++)
				{
					var a = document.createElement('a');
					var span = document.createElement('span');
					span.style.marginTop = "3px";
					span.style.cursor = "hand";
					span.style.cursor = "pointer";
					span.innerHTML = pages[p-1];
					a.appendChild( span);
					a.pages = pages; 
					a.p = p;
					a.id = "onglet"+p;
					a.className = "ongletPopup";
					
					if(p==1)
						a.className = "ongletCourant";
				
					a.onmousedown = function ()
					{
						//change the style of the tab
						for(var t=1;t<=this.pages.length;t++) //erase class menu
						{
							tmp = "onglet"+t;
							if($(tmp))
								$(tmp).className = "ongletPopup";	
						}
						this.className = "ongletCourant";
						
						//display the good page
						for(var j=1;j<=pages.length;j++)
						{
							if(this.p==j)
								$("page"+j).style.display="block";					
							else
								$("page"+j).style.display="none";
						}
					}		
					menu.appendChild(a);
				}
			}
			
			$(popupID).appendChild(divContent);
	
			
			/*  ----- BUTTON POPUP ----- */
			
			var h= $(popupID).appendChild(document.createElement('h4'));
			//bouton annuler
			
			if(typeButtons!=null)
			{
				
				var inputValues = null;
							
				for(var p=0 ; p<typeButtons.length ; p++)
				{
					var btn = document.createElement('span');
					btn.innerHTML = typeButtons[p].name;
					btn.style.textDecoration = "underline";
								
					
					btn.popupobj = {popupInstance: this};
					btn.typeButtons = typeButtons[p];
					btn.onmousedown = function()
					{
						if( this.style.cursor != "wait" )
						{
							/*inputValues*/
							this.popupobj.popupInstance.DataObj.bufferData = getValuesFromPopup( this.popupobj.popupInstance.DataObj,typeField );
							if(this.popupobj.popupInstance.DataObj!=null)
								this.typeButtons.saveFunc(this.popupobj.popupInstance.DataObj.bufferData,this.popupobj.popupInstance.DataObj);
						}	
							//on close la popup
						//	this.popupobj.popupInstance.Close(false);										
					
					}
					
					
					// check si le loading des select est bien réalisé
					// 	SI fonction alors précisé un sourceName==nom du select mémorisé dans ykeControls : ykeControls[nomduSelect]
					// et biensur affecté un text loading sur le select avant le chargement des données dans celui-çi
					btn.onmouseover = function()
					{
						this.style.cursor="hand";
						this.style.cursor="pointer";
						for(var j=0;j<nb_item;j++)
						{
							if(typeField[j].controlType=="select")
							{
								if($(popupID+ "_"+typeField[j].sourceName).value.indexOf("loading")!=-1)
								{
									this.style.cursor = "wait";
									break;
								}
							}							
							else if(typeField[j].controlType=="fonction" && typeField[j].sourceName!=null)
							{
								if( this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName]!=null && this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName].value!=null 
								     
							     && this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName].value.indexOf("loading")!=-1 )
								{
									this.style.cursor = "wait";
									break;
								}
							}
						}
					} 
					
					h.appendChild(btn);
					if(typeButtons[p].visible==false)
					{
						btn.style.display = 'none';
					}
					else
					{
						var blanc = document.createElement('span');
						blanc.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
						h.appendChild(blanc);
					}
				}
			}	
			else
			{		
				var btnCanc = document.createElement('span');
				btnCanc.innerHTML = "Annuler";
				btnCanc.style.textDecoration = "underline";
				btnCanc.style.cursor="hand";
				btnCanc.style.cursor="pointer";
				
				btnCanc.popupobj = {popupInstance: this};
				btnCanc.onmousedown = function()
				{
					this.popupobj.popupInstance.Close(false);
					this.popupobj.popupInstance.DataObj.ykeControls=null;
					this.popupobj.popupInstance.DataObj.fields=null;
				}
				h.appendChild(btnCanc);
				
				var blanc = document.createElement('span');
				blanc.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
				h.appendChild(blanc);
				
				//bouton enregistrer
				var btnUpd = document.createElement('span');
				btnUpd.innerHTML = "Enregistrer";
				btnUpd.style.textDecoration = "underline";
				btnUpd.style.cursor="hand";
				btnUpd.style.cursor="pointer";
				
				
				// check si le loading des select est bien réalisé			
				btnUpd.popupobj = {popupInstance: this, inputValues: inputValues };
				
				btnUpd.onmouseover = function()
				{
					btnUpd.style.cursor="hand";
					btnUpd.style.cursor="pointer";
					for(var j=0;j<nb_item;j++)
					{
						if(typeField[j].controlType=="select")
						{
							//alert($(popupID+ "_"+typeField[j].sourceName).value);
							if($(popupID+ "_"+typeField[j].sourceName).value.indexOf("loading")!=-1)
							{
								btnUpd.style.cursor = "wait";
								break;
							}
						}
						else if(typeField[j].controlType=="fonction" && typeField[j].sourceName!=null)
						{
							if( this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName]!=null && this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName].value!=null 
							     
						     && this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName].value.indexOf("loading")!=-1 )
							{
								this.style.cursor = "wait";
								break;
							}
						}
					}
				} 
				// tableau des nouvelles données 
				var inputValues = {};
				//this.DataObj = dataObject;	
				var bDisplayEnregistrer = true;			
				btnUpd.onmousedown = function() 
				{		
							
					if(this.popupobj.popupInstance.UpdateEvent != null)
					{
						
						//inputValues = getValuesFromPopup( this.popupobj.popupInstance.DataObj,typeField );
						this.popupobj.popupInstance.DataObj.bufferData = getValuesFromPopup( this.popupobj.popupInstance.DataObj,typeField );
												
						//alert("donc input valuies : "+inputValues.toJSONString());
						if( this.style.cursor != "wait" )
							this.popupobj.popupInstance.UpdateEvent( this.popupobj.popupInstance.DataObj.bufferData , this.popupobj.popupInstance.DataObj,this.popupobj.popupInstance.creation);
							
					}
					else
						alert("not implemented");
				}
				
				h.appendChild(btnUpd);
			}
		
		}
		if(YkeIsIe6OrOlder()==false)
			new Effect.BlindDown($(popupID));
		else
			$(popupID).show();
		//document.popupID.popupID+ "_"+typeField[0].sourceName.focus();		
	}
	
	
	function getValuesFromPopup( DataObj,typeField )
	{
		var inputValues = new Array();
		//build the array of the new values
		for(var i=0;i<typeField.length;i++)
		{
			switch(typeField[i].controlType)
			{
				case "YkeInputText":
				{
					var ctrltext = DataObj.ykeControls[typeField[i].sourceName].getValue();
					inputValues[typeField[i].sourceName] = ctrltext;
					break;
				}
				case "YkeInputNumeric":
				{
					var ctrltext = DataObj.ykeControls[typeField[i].sourceName].getValue();
					inputValues[typeField[i].sourceName] = ctrltext;
					break;
				}
				case "YkeInputDate":
				{
					var ctrldate = DataObj.ykeControls[typeField[i].sourceName].getValue();
					if(ctrldate!=null)
							inputValues[typeField[i].sourceName] = Yke.Date.toWSString(ctrldate);
					else
							inputValues[typeField[i].sourceName]="0001-01-01T00:00:00"
					break;
				}
				case "textbox":
				{
					if(typeField[i].disable) 
					{
						inputValues[typeField[i].sourceName] = $(popupID+ "_"+typeField[i].sourceName).innerHTML;	
					}									
					else
					{
						inputValues[typeField[i].sourceName] = $(popupID+ "_"+typeField[i].sourceName).value;
					} 
					break;
				}
				case "select":
				{
					inputValues[typeField[i].sourceName] = $(popupID+ "_"+typeField[i].sourceName).value;
					break;
				}
				case "fonction":
				{
					if(typeField[i].saveFunc!=null)
					{
						if(DataObj!=null)
							inputValues=typeField[i].saveFunc(inputValues,DataObj);
					}
					break;	
				}
			}
		}
		return inputValues;
	}
	
	function generateControl(/*ref*/ dataObject,typeField,tr)
	{ //tr a déja une colonne td en préalable 
		
		typeField.tr = tr;
		// on sauvegarde notre controle dans le dataobject
		if(dataObject.ykeControls==null)	
			dataObject.ykeControls = {};
			
		var td2 = tr.appendChild(document.createElement("td"));
		
		switch(typeField.controlType)
		{
			case "YkeInputText":
			{
				var YkeInputText = new Yke.UI.InputText();				
					
				if(dataObject!=null)
				{
					if(typeField.brutText!=null)
						YkeInputText.setValue(typeField.brutText);
					else if(dataObject[typeField.sourceName]!=null)
						YkeInputText.setValue(dataObject[typeField.sourceName]);
				}
				
				if(typeField.size!=null)
					YkeInputText._size = typeField.size;
				else
					YkeInputText._size = 50;
				if(typeField.maxLength!=null)
					YkeInputText._maxLength = typeField.maxLength;
				if(typeField.disable==true)
					YkeInputText._readOnly = true;
				else
					YkeInputText._readOnly = false;
				if(typeField.hightLight!=null && typeField.hightLight==true)
					YkeInputText._highlight = typeField.hightLight;
				if(typeField.mode!=null && (typeField.mode.toLowerCase()=="password" || typeField.mode.toLowerCase()=="multiline") )
					YkeInputText._mode = typeField.mode;
				YkeInputText.render(td2);
				
				// on sauvegarde notre controle dans le dataobject
				if(dataObject.ykeControls[typeField.sourceName]==null)
					dataObject.ykeControls[typeField.sourceName] = YkeInputText;
								
				break;
			}
			case "YkeInputNumeric":
			{
				
				var YkeInputNumeric = new Yke.UI.InputNumeric();				
					
				
				if(dataObject!=null)
				{
					if(typeField.brutText!=null)
						YkeInputNumeric.setValue(typeField.brutText);
					else if(dataObject[typeField.sourceName]!=null)
					{
						if( dataObject[typeField.sourceName].toString()!="-1" && dataObject[typeField.sourceName].toString()!="") //special case for sdis database
							YkeInputNumeric.setValue(parseFloat(dataObject[typeField.sourceName]));
					}
						
				}
				if(typeField.size!=null)
					YkeInputNumeric._size = typeField.size;
				else
					YkeInputNumeric._size = 50;
				if(typeField.maxLength!=null)
					YkeInputNumeric._maxLength = typeField.maxLength;
				if(typeField.disable==true)
					YkeInputNumeric._readOnly = true;
				else
					YkeInputNumeric._readOnly = false;
				if(typeField.hightLight!=null && typeField.hightLight==true)
					YkeInputNumeric._highlight = typeField.hightLight;
				if(typeField.allowNegative!=null && (typeField.allowNegative==true || typeField.allowNegative==false) )
					YkeInputNumeric._allowNegative = typeField.allowNegative;
				if(typeField.allowDecimals!=null && (typeField.allowDecimals==true || typeField.allowDecimals==false) )
					YkeInputNumeric._allowDecimals = typeField.allowDecimals;
				if(typeField.ejectDecimal!=null && (typeField.ejectDecimal==true || typeField.ejectDecimal==false) )
					YkeInputNumeric._ejectDecimal = typeField.ejectDecimal;
				if(typeField.mode!=null && (typeField.mode.toLowerCase()=="password" || typeField.mode.toLowerCase()=="multiline") )
					YkeInputNumeric._mode = typeField.mode;
				YkeInputNumeric.render(td2);
				
				// on sauvegarde notre controle dans le dataobject
				if(dataObject.ykeControls[typeField.sourceName]==null)
					dataObject.ykeControls[typeField.sourceName] = YkeInputNumeric;
				
				break;
			}
			
			
			case "YkeInputDate":
			{
				var dateCtrl;
				if(dataObject.ykeControls[typeField.sourceName]!=null)
					dateCtrl = dataObject.ykeControls[typeField.sourceName];
				else
				{
					dateCtrl = new Yke.UI.InputDate();
					dataObject.ykeControls[typeField.sourceName] = dateCtrl;
				}
									
				var date=null;
				
				if (dataObject[typeField.sourceName]!=null && dataObject[typeField.sourceName]!="0001-01-01T00:00:00" && dataObject[typeField.sourceName]!="1901-01-01T00:00:00")
				{
					date = Yke.Date.parse(dataObject[typeField.sourceName]);
					dateCtrl.setValue(date);
				}	
				if(typeField.hightLight==true)
					dateCtrl._highlight = true;
				if(typeField.disable!=null)
					dateCtrl._readOnly = typeField.disable;
					
				dateCtrl.render(td2); 
				
				break;
			}
			
			
			case "textbox":
			{
				var tbxWrap = document.createElement("div");
				
				var textbox=document.createElement("input");
				textbox.setAttribute('type','text');
				if(dataObject!=null)
				{
					if(dataObject[typeField.sourceName]==-1 || dataObject[typeField.sourceName]==undefined)
						textbox.value="";
					else
						textbox.value=dataObject[typeField.sourceName];	
				}
				if(typeField.size!=null)
					textbox.maxLength = typeField.size;
				textbox.id = popupID+ "_"+typeField.sourceName;
				textbox.size ="50";
				tbxWrap.appendChild(textbox);					
				if(typeField.dateFr != null)
				{
					textbox.value=typeField.dateFr;
				}
				
				if(typeField.brutText != null)
				{
					textbox.value=typeField.brutText;
				}
				if(typeField.hightLight==true)
					textbox.style.backgroundColor = "#fab464";
				
				if(typeField.disable==true)
					textbox.disabled = true;
			
				td2.appendChild(tbxWrap);
					
					
				break;
			}			

			case "select":
			{
				var img = document.createElement("img");
				img.src = "yke/css/loadingSnakeSmall.gif";
				img.style.margin = "3px";
				td2.appendChild(img);
				var select = document.createElement("select");
				select.style.display="none";
				select.id = popupID+ "_"+typeField.sourceName;
		
				var loadingOpt = document.createElement("option");
				loadingOpt.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;loading...";
				select.appendChild(loadingOpt);
				if(typeField.disable==true)
				{
					select.disabled = true;
				}
				if(typeField.hightLight==true)
					select.style.backgroundColor = "#fab464";
				td2.appendChild(select);
				
				if(typeField.controlBinding != null)
				{
					var id = -1;
					if(dataObject!=null)
					{
						try{ id = dataObject[typeField.sourceName]; }
						catch(e){ }	
					}
					typeField.controlBinding(id, select, img);
				}
					
				break;
			}
			case "fonction":
			{
				if(dataObject!=null)	
				{
					/*var ret = */typeField.controlFunc(td2,dataObject,typeField.hightLight,typeField.disable); // !!! modif dataset
					//if(ret!=null ) dataObject=ret; 
				}	
				break;
			}
		}
		
		if(typeField.visible==false)
			typeField.tr.style.display = "none";
		else
			typeField.tr.style.display = "";
			
		return dataObject;
	}
	
	//principe de la fonction : retourner le dataobject avec toutes les données du dataset les ykecontrols !
	// et générer les controles avec les bonnes valeurs
	function generateControlUpdateRender(dataPopup,dataObject,typeField,tr) // dataPopup = current value of the popup 
	{ //tr a déja une colonne td en préalable 
		
		typeField.tr = tr;
		if(dataObject.ykeControls==null)	
			dataObject.ykeControls = {};
		
		var td2 = tr.appendChild(document.createElement("td"));
		
		switch(typeField.controlType)
		{
			case "YkeInputText":
			{
				var YkeInputText = new Yke.UI.InputText();						
				
				// a construire en fonction du dataPopup
				if(dataPopup[typeField.sourceName]!=null)
				{
					YkeInputText.setValue(dataPopup[typeField.sourceName]);
				}
				
				if(typeField.size!=null)
					YkeInputText._size = typeField.size;
				else
					YkeInputText._size = 50;
				if(typeField.maxLength!=null)
					YkeInputText._maxLength = typeField.maxLength;
				if(typeField.disable==true)
					YkeInputText._readOnly = true;
				else
					YkeInputText._readOnly = false;
				if(typeField.hightLight!=null && typeField.hightLight==true)
					YkeInputText._highlight = typeField.hightLight;
				YkeInputText.render(td2);
				
				// on sauvegarde notre controle dans le dataobject
				dataObject.ykeControls[typeField.sourceName] = YkeInputText;
								
				break;
			}
			case "YkeInputNumeric":
			{
				var YkeInputNumeric = new Yke.UI.InputNumeric();	
				
				if(dataPopup[typeField.sourceName]!=null)
				{
					YkeInputNumeric.setValue(dataPopup[typeField.sourceName]);
				}
				
				if(typeField.size!=null)
					YkeInputNumeric._size = typeField.size;
				else
					YkeInputNumeric._size = 50;
				if(typeField.maxLength!=null)
					YkeInputNumeric._maxLength = typeField.maxLength;
				if(typeField.disable==true)
					YkeInputNumeric._readOnly = true;
				else
					YkeInputNumeric._readOnly = false;
				if(typeField.hightLight!=null && typeField.hightLight==true)
					YkeInputNumeric._highlight = typeField.hightLight;
				if(typeField.allowNegative!=null && (typeField.allowNegative==true || typeField.allowNegative==false) )
					YkeInputNumeric._allowNegative = typeField.allowNegative;
				if(typeField.allowDecimals!=null && (typeField.allowDecimals==true || typeField.allowDecimals==false) )
					YkeInputNumeric._allowDecimals = typeField.allowDecimals;
					
				YkeInputNumeric.render(td2);
				
				// on sauvegarde notre controle dans le dataobject
				dataObject.ykeControls[typeField.sourceName] = YkeInputNumeric;
				
				break;
			}
			
			case "YkeInputDate":
			{
				var dateCtrl;
				if(dataObject.ykeControls[typeField.sourceName]!=null)
					dateCtrl = dataObject.ykeControls[typeField.sourceName];
				else
				{
					dateCtrl = new Yke.UI.InputDate();
					dataObject.ykeControls[typeField.sourceName] = dateCtrl;
				}
								
				
			
				if(dataPopup[typeField.sourceName]!=null)
				{
					dateCtrl.setValue(dataPopup[typeField.sourceName]);
				}
				
				if(typeField.hightLight==true)
					dateCtrl._highlight = true;
				if(typeField.disable!=null)
					dateCtrl._readOnly = typeField.disable;
					
				dateCtrl.render(td2); 
				
				break;
			}
			
			
			case "textbox":
			{
				var tbxWrap = document.createElement("div");
				
				var textbox=document.createElement("input");
				textbox.setAttribute('type','text');
				if(dataPopup[typeField.sourceName]!=null)
				{
					textbox.value = dataPopup[typeField.sourceName];
				}
				if(typeField.size!=null)
					textbox.maxLength = typeField.size;
				textbox.id = popupID+ "_"+typeField.sourceName;
				textbox.size ="50";
				tbxWrap.appendChild(textbox);					
				if(typeField.dateFr != null)
				{
					textbox.value=typeField.dateFr;
				}
				
				if(typeField.brutText != null && typeField.brutText!="")
				{
					textbox.value=typeField.brutText;
				}
				if(typeField.hightLight)
					textbox.style.backgroundColor = "#fab464";
				
				if(typeField.disable)
					textbox.disabled = true;
			
				td2.appendChild(tbxWrap);
					
					
				break;
			}			

			case "select":
			{
				var img = document.createElement("img");
				img.src = "yke/css/loadingSnakeSmall.gif";
				img.style.margin = "3px";
				td2.appendChild(img);
				var select = document.createElement("select");
				select.style.display="none";
				select.id = popupID+ "_"+typeField.sourceName;
		
				var loadingOpt = document.createElement("option");
				loadingOpt.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;loading...";
				select.appendChild(loadingOpt);
				if(typeField.disable)
				{
					select.disabled = true;
				}
				if(typeField.hightLight)
					select.style.backgroundColor = "#fab464";
				td2.appendChild(select);
				
				if(typeField.controlBinding != null)
				{
					var id = -1;
					if(dataObject!=null)
					{
						try{ id = dataPopup[typeField.sourceName]; } //pb = dataObject ne doit pas etre modifié donc içi ca garde la valeur de départ
						catch(e){ }	
					}
					typeField.controlBinding(id, select, img);
				}
					
				break;
			}
			case "fonction":
			{
				if(dataObject!=null)	
				{
					/*var ret = */
					//this.DataObj.bufferData = contient tout les données qui seront ajouté dans la fonction perso mais 
					//ne modifiera pas le dataobject de base avec les info du dataset (spdispo..)
					typeField.controlFunc(td2,/*ref*/dataObject.bufferData,typeField.hightLight,typeField.disable); // !!! modif dataset
					//if(ret!=null ) dataObject=ret; 
				}
				break;
			}
		}
		
		if(typeField.visible==false)
			typeField.tr.style.display = "none";
		else
			typeField.tr.style.display = "";
			
		return dataObject;
	}
	
	
	/*public*/ this.UpdateRender = function()
	{
		$('disArea').style.display='block'; //fond qui disable l'interface
		
		var nb_item= typeField.length;
				
		  
		//--- get previous values of the popup
		// ne pas oublier que this.DataObj est le container pour les gpscontrol
		
		var dataPopup =  new Array(); //=this.DataObj;// marche pour bug fred// =  new Array(); //marche pour les date// =this.DataObj; marche pour bug fred//
				
		if($(popupID).innerHTML!="")
		{	
			for(var i=0;i<nb_item;i++)
			{
				/*if( dataPopup[typeField[i].sourceName]!=null)
					this.DataObj[typeField[i].sourceName] = dataPopup[typeField[i].sourceName];*/
				switch(typeField[i].controlType)
				{
					case "YkeInputText":
					{
						dataPopup[typeField[i].sourceName] = this.DataObj.ykeControls[typeField[i].sourceName].getValue();
						
						break;
					}
					case "YkeInputNumeric":
					{
						dataPopup[typeField[i].sourceName] = this.DataObj.ykeControls[typeField[i].sourceName].getValue();
					
						break;
					}
					case "YkeInputDate":
					{
						var ctrldate = this.DataObj.ykeControls[typeField[i].sourceName].getValue();
						
						if(ctrldate!=null)
							dataPopup[typeField[i].sourceName] = Yke.Date.toWSString(ctrldate);
						else
							dataPopup[typeField[i].sourceName]="0001-01-01T00:00:00";
						break;
					}
					case "textbox":
					{
						dataPopup[typeField[i].sourceName] = $(popupID+ "_"+typeField[i].sourceName).value;
										
						break;
					}
					case "select":
					{
						dataPopup[typeField[i].sourceName] = $(popupID+ "_"+typeField[i].sourceName).value;
						
						break;
					}
					case "fonction":
					{
						//faire appel a 1 fonction perso pour gerer les info du composant perso les retourner a la suite
				
						if(typeField[i].saveFunc!=null)
						{
							//mettre a jour le this.DataObj
							var ret = typeField[i].saveFunc(dataPopup,this.DataObj);
							dataPopup = ret;
							//pour les yke controls la valeur courante est dans le tab dataobj.YkeCOntrols et dans la valeur dataObj[typeField[i].sourceName]
							//mais dans le cas d'une fonction on s'assure
							//on a général le controle de stocker a la mano : dataobj.ctrlPerso
							// et on force a mettre la derniére valeur dans le dataObj : mauvais car passage par référence ......... :(
							 
							//donc on met dans un buffer contenu par DATAOBJ car c'est notre unique variable en référence
							//pas envie de changer les parametres de la fonction perso pour l'instant
							this.DataObj.bufferData[typeField[i].sourceName] = dataPopup[typeField[i].sourceName];
						}
						break;
					}
				}
			}
		}
		
		//ajoute les variables nécessaire dans les fct perso //fields est nécessaire car hide et show
		this.DataObj.bufferData.fields = this.DataObj.fields;
		this.DataObj.bufferData.ykeControls = this.DataObj.ykeControls;
		//---------------------
		
		$(popupID).innerHTML="";
		
		if(nb_item>0)
		{
			/*---- HEADER POPUP ----*/
			
			var span_close = document.createElement("span");
			span_close.className ="closeBtn";
			span_close.popupobj = {popupInstance: this}; //la finte du boukaque cendré
			span_close.onmousedown = function() //clic sur la croix
			{
				this.popupobj.popupInstance.Close(closeConfirmation);
			}		
			span_close.innerHTML ="&nbsp;&nbsp;&nbsp;&nbsp;"; 
			$(popupID).appendChild(span_close);
			
			var h3 = document.createElement("h3");
			$(popupID).appendChild(h3);
			
			var span = document.createElement("span");
			span.id = popupID+"_Titre";
			if(this.creation == false)
				span.innerHTML=this.DataObj[title];
			else
				span.innerHTML=title;
			h3.appendChild(span);
			
			
			
			/*---- CONTENT POPUP ----*/
			var divContent= document.createElement('div');
			
			if(pages==null)
			{
				// only one pages				
				var div = document.createElement("div");
				div.className = "content_popup";
				div.id = "content_popup";
				divContent.appendChild(div);
				divContent.style.overflow = "auto"; 
				
				var table =document.createElement("table");
				table.cellPadding="2";
				table.cellSpacing="0";
				table.border="0";
				table.className="table_popup";
				div.appendChild(table);
				
				var tb= table.appendChild(document.createElement('tbody'));
				
				for(var i=0;i<nb_item;i++)
				{
					var tr = document.createElement("tr"); 
					var td1 = document.createElement("td");
					td1.className = 'td1ContentPopup';
					//td1.style.width="192px";
					tr.appendChild(td1);
					
					var span = document.createElement('span');
					span.innerHTML = "- "+typeField[i].name+" :";
					td1.appendChild(span);
					
					// generate the controle depending of the typeField properties
					
					// TO DO : utiliser la nouvelle fonction  pour avoir un bon dataobj !! 
					this.DataObj  =  generateControlUpdateRender(dataPopup,this.DataObj,typeField[i],tr);
					//this.DataObj = dataPopup.ykeControls;
					tb.appendChild(tr);	
				}
			}
			else
			{
				//create the menu
				var menu  = document.createElement("div");
				menu.className = "menuPopup";
				divContent.appendChild(menu);
				
					
				// create the pages - div
				for(var p=1;p<=pages.length;p++)
				{
					
					var page = document.createElement("div");
					page.className = "content_popup";
					page.id = "page"+p;
					page.style.overflow = "auto"; 
					divContent.appendChild(page);
					if(p==1)
						page.style.display="block";
					else
						page.style.display="none";
					
					var table =document.createElement("table");
					table.cellPadding="2";
					table.cellSpacing="0";
					table.border="0";
					table.className="table_popup";
					page.appendChild(table);
					
					var tb= table.appendChild(document.createElement('tbody'));
					
					//create the controls
					for(var i=0;i<nb_item;i++)
					{
						if(typeField[i].pageNumber==p)
						{
							var tr = document.createElement("tr"); 
							var td1 = document.createElement("td");
							td1.className = 'td1ContentPopup';
							//td1.style.width="192px";
							tr.appendChild(td1);
							
							var span = document.createElement('span');
							span.innerHTML = "- "+typeField[i].name+" :";
							td1.appendChild(span);
							
							// generate the controle depending of the typeField properties
							
							//le bug est ici ! : quand on recrée la fen , datapopup n'a pa de lien avec
							
							//en fait il fo pas regenerate parce qu'on perd les lien sur les controle yke de la popup précédente 
							// donc apres quand on fait un getvalue , on a assez au ykecontrol qui vo rien ! 
							
							//var t = this.DataObj; //il faut highlight les champs à l'aide des values de dataobj
							//this.DataObj = generateControl(dataPopup,typeField[i],tr,null);
							this.DataObj  =  generateControlUpdateRender(dataPopup,this.DataObj,typeField[i],tr);
							//dataPopup = generateControl(dataPopup,typeField[i],tr,null);
							
							
							//dataPopup =  generateControl(dataPopup,typeField[i],tr,null);
							// TO DO : a faire generate avec le dataobj et evite ainsi de get les value
							tb.appendChild(tr);	
						}
					}
				}
				
				//create the menu
				for(var p=1;p<=pages.length;p++)
				{
					var a = document.createElement('a');
					var span = document.createElement('span');
					span.style.marginTop = "3px";
					span.style.cursor = "hand";
					span.style.cursor = "pointer";
					span.innerHTML = pages[p-1];
					a.appendChild( span);
					a.pages = pages; 
					a.p = p;
					a.id = "onglet"+p;
					a.className = "ongletPopup";
					
					if(p==1)
						a.className = "ongletCourant";
				
					a.onmousedown = function ()
					{
						//change the style of the tab
						for(var t=1;t<=this.pages.length;t++) //erase class menu
						{
							tmp = "onglet"+t;
							if($(tmp))
								$(tmp).className = "ongletPopup";	
						}
						this.className = "ongletCourant";
						
						//display the good page
						for(var j=1;j<=pages.length;j++)
						{
							if(this.p==j)
								$("page"+j).style.display="block";					
							else
								$("page"+j).style.display="none";
						}
					}		
					menu.appendChild(a);
				}
			}
			
			$(popupID).appendChild(divContent);
			
			
			/*  ----- BUTTON POPUP ----- */
			
			var h= $(popupID).appendChild(document.createElement('h4'));
			//bouton annuler
			
			if(typeButtons!=null)
			{
				
				var inputValues = null;
				
				
				for(var p=0 ; p<typeButtons.length ; p++)
				{
					var btn = document.createElement('span');
					btn.innerHTML = typeButtons[p].name;
					btn.style.textDecoration = "underline";
					btn.style.cursor="hand";
					btn.style.cursor="pointer";
					
					
					btn.popupobj = {popupInstance: this};
					btn.typeButtons = typeButtons[p];
					btn.onmousedown = function()
					{
						if(this.style.cursor != "wait")
						{
							inputValues = getValuesFromPopup( this.popupobj.popupInstance.DataObj,typeField );
							if(this.popupobj.popupInstance.DataObj!=null)
								this.typeButtons.saveFunc(inputValues,this.popupobj.popupInstance.DataObj);										
						}
					}
					
					// check si le loading des select est bien réalisé
					// 	SI fonction alors précisé un sourceName==nom du select mémorisé dans ykeControls : ykeControls[nomduSelect]
					// et biensur affecté un text loading sur le select avant le chargement des données dans celui-çi
					btn.onmouseover = function()
					{
						this.style.cursor="hand";
						this.style.cursor="pointer";
						for(var j=0;j<nb_item;j++)
						{
							if(typeField[j].controlType=="select")
							{
								if($(popupID+ "_"+typeField[j].sourceName).value.indexOf("loading")!=-1)
								{
									this.style.cursor = "wait";
									break;
								}
							}							
							else if(typeField[j].controlType=="fonction" && typeField[j].sourceName!=null)
							{
								if( this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName]!=null && this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName].value!=null 
								     
							     && this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName].value.indexOf("loading")!=-1 )
								{
									this.style.cursor = "wait";
									break;
								}
							}
						}
					} 
					
					h.appendChild(btn);
					if(typeButtons[p].visible==false)
					{
						btn.style.display = 'none';
					}
					else
					{
						var blanc = document.createElement('span');
						blanc.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
						h.appendChild(blanc);
					}
				}
			}	
			else
			{		
				var btnCanc = document.createElement('span');
				btnCanc.innerHTML = "Annuler";
				btnCanc.style.textDecoration = "underline";
				btnCanc.style.cursor="hand";
				btnCanc.style.cursor="pointer";
				
				btnCanc.popupobj = {popupInstance: this};
				btnCanc.onmousedown = function()
				{
					this.popupobj.popupInstance.Close(false);
					this.popupobj.popupInstance.DataObj.ykeControls=null;
					this.popupobj.popupInstance.DataObj.fields=null;
					
					this.popupobj.popupInstance.DataObj.bufferData = null;
				}
				h.appendChild(btnCanc);
				
				var blanc = document.createElement('span');
				blanc.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
				h.appendChild(blanc);
				
				//bouton enregistrer
				var btnUpd = document.createElement('span');
				btnUpd.innerHTML = "Enregistrer";
				btnUpd.style.textDecoration = "underline";
				btnUpd.style.cursor="hand";
				btnUpd.style.cursor="pointer";
				
				
				// check si le loading des select est bien réalisé			
				btnUpd.popupobj = {popupInstance: this, inputValues: inputValues };
				
				btnUpd.onmouseover = function()
				{
					btnUpd.style.cursor="hand";
					btnUpd.style.cursor="pointer";
					for(var j=0;j<nb_item;j++)
					{
						if(typeField[j].controlType=="select")
						{
							//alert($(popupID+ "_"+typeField[j].sourceName).value);
							if($(popupID+ "_"+typeField[j].sourceName).value.indexOf("loading")!=-1)
							{
								btnUpd.style.cursor = "wait";
								break;
							}
						}
						else if(typeField[j].controlType=="fonction" && typeField[j].sourceName!=null)
						{
							if( this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName]!=null && this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName].value!=null 
							     
						     && this.popupobj.popupInstance.DataObj.ykeControls[typeField[j].sourceName].value.indexOf("loading")!=-1 )
							{
								this.style.cursor = "wait";
								break;
							}
						}
					}
				} 
				// tableau des nouvelles données 
				var inputValues = {};
				//this.DataObj = dataObject;	
				var bDisplayEnregistrer = true;	
				btnUpd.dataPopup = dataPopup;	
				btnUpd.onmousedown = function() 
				{		
					bDisplayEnregistrer = true;		
					if(this.popupobj.popupInstance.UpdateEvent != null)
					{
						inputValues = getValuesFromPopup( this.popupobj.popupInstance.DataObj,typeField );
						
						//alert("donc input valuies : "+inputValues.toJSONString());
						if(this.style.cursor != "wait")
							this.popupobj.popupInstance.UpdateEvent( inputValues , this.popupobj.popupInstance.DataObj,this.popupobj.popupInstance.creation);
					}
					else
						alert("not implemented");
				}
				
				h.appendChild(btnUpd);
			}
					
		}
		new Effect.BlindDown($(popupID));
		//document.popupID.popupID+ "_"+typeField[0].sourceName.focus();
		
	}
	
	//set values on the popup from the dataobject and the datasource structure
	function setValueGps(textdeg,textmin,textsec,selectorient,datasource,dataObject)
	{
		if(datasource!=null)
		{
			if(dataObject==null) // for using a direct simple datasource
			{
				textdeg.value = datasource.degres;
				textmin.value = datasource.minute;
				textsec.value = datasource.seconde;
				if(datasource.orientation=="N" || datasource.orientation=="E")
					selectorient.selectedIndex = 0;
				else 
					selectorient.selectedIndex = 1;
			}
			else
			{
				textdeg.value = dataObject[datasource.degres];
				textmin.value = dataObject[datasource.minute];
				textsec.value = dataObject[datasource.seconde];
				if(dataObject[datasource.orientation]=="N" || dataObject[datasource.orientation]=="E")
					selectorient.selectedIndex = 0;
				else 
					selectorient.selectedIndex = 1;
			} 			
		}
	}	
}

/*
 *        Créer une popup de chargement
 *        
 * popupID = id de la popup 
 * title = message à afficher
 */

YkeUI.YkePopup.LoadingPopup = function(popupID, title)
{
	
	/*public*/ this.disaLayer = null; //indique si le layer_disable est activé
	
	/*public*/ this.Close= function()
	{		
		
		$('disAreaLoading').style.display='none';
		
		$(popupID).style.display='none';		
		//new Effect.SwitchOff($(popupID));		
	}
	
	/*public*/ this.Render = function()
	{		
		
		
		$('disAreaLoading').style.display='block';
				
		$(popupID).style.backgroundColor="#fff";
		$(popupID).style.backgroundImage="url(yke/css/loadingSnake.gif)";
		$(popupID).style.backgroundRepeat="no-repeat";
		$(popupID).style.backgroundPosition="50% 30%";
		$(popupID).style.display='block';
		
		$(popupID).innerHTML='';
		
		var span_close = document.createElement("span");
		span_close.className ="closeBtn";
		span_close.popupobj = {popupInstance: this};
		span_close.onmousedown = function() //clic sur la croix
		{
			this.popupobj.popupInstance.Close();
		}		
		span_close.innerHTML ="&nbsp;&nbsp;&nbsp;&nbsp;"; 
		$(popupID).appendChild(span_close);
		
		var h4 = document.createElement("h4");
		$(popupID).appendChild(h4);		
		var span = document.createElement("span");
		span.id = popupID+"_info";
		span.innerHTML=title;
		span.style.position="relative";
		span.style.top="100px";
		h4.appendChild(span);		
	}
	
	/*public*/ this.Print = function(message)
	{
		$('disAreaLoading').style.display='block';
		
		//new Effect.Shake($(popupID));
		$(popupID).style.backgroundImage="url(yke/css/popup/warning.gif)";
		$(popupID+"_info").innerHTML=message;				
	}
}

/*
 *        Créer une popup de type alert
 *        
 * popupID = id de la popup 
 * title = message à afficher
 *
 */
YkeUI.YkePopup.YkeAlert = function(popupID)
{
	
	/*public*/ this.disaLayer = null; //indique si le layer_disable est activé
	 
	 
	/*public*/ this.Render = function(title,icon)
	{	
		//title = "1111 222:lfbvjddk bvdkv fdb d nfjdnjndvjkn fd vn f1111 222:lfbvjddk bvdkv fdb d nfjdnjndvjkn fd vn f1231111 222:lfbvjddk bvdkv fdb d nfjdnjndvjkn fd vn f1111 222:lfbvjddk bvdkv fdb d nfjdnjndvjkn fd vn f1231111 222:lfbvjddk bvdkv fdb d nfjdnjndvjkn fd vn f1111 222:lfbvjddk bvdkv fdb d nfjdnjndvjkn fd vn f123";
		$('disAreaAlert').style.display='block';
		
		$(popupID).style.backgroundImage = "none";
		if(icon==true)
		{
			$(popupID).style.backgroundImage="url(yke/css/popup/warning.gif)";
			$(popupID).style.backgroundRepeat="no-repeat";
			$(popupID).style.backgroundPosition="50% 20%";
		} 
		
		$(popupID).style.backgroundColor="#fff";
		$(popupID).style.display='block';
		
		$(popupID).innerHTML='';
		
		var span_close = document.createElement("span");
		span_close.className ="closeBtn";
		span_close.popupobj = {popupInstance: this};
		span_close.onmousedown = function() //clic sur la croix
		{
			this.popupobj.popupInstance.Close();
		}		
		span_close.innerHTML ="&nbsp;&nbsp;&nbsp;&nbsp;"; 
		$(popupID).appendChild(span_close);
		
		var d = document.createElement("div");
		d.id=popupID+"_Content";
		d.style.height = "100px"; //variable en fonction de la taille du texte a afficher
		
		d.style.position = "relative";
	
		
		if(title.length>300)
		{
			d.style.height = "100px";
		}
		else
		{
			d.style.height = "50px";
		}	
		d.style.overflow = "auto";
		d.style.margin = "0px";
		d.style.padding = "0px";
		if(icon==true)
		{
			d.style.marginTop = "80px";
			d.style.height = "70px";
		}
		else
		{
			if(title.length>300)
				d.style.marginTop = "45px";
			else	
				d.style.marginTop = "65px";
		}	
			
		$(popupID).appendChild(d);	
		var h4 = document.createElement("h4");
		h4.style.margin = "0px";
		h4.style.padding = "0px";
		d.appendChild(h4);
		var span = document.createElement("span");
		span.id = popupID+"_info";
		span.innerHTML=title;
		
		
		h4.appendChild(span);
		
		var div = document.createElement("div");
		div.style.textAlign = "center";
		div.style.position = "relative";
		div.style.top = "20px"
		
		
		var but = document.createElement("input");	
		but.type = "button";
		but.name = "but_close";
		but.id = "but_closeid";
		but.value = "Fermer";	
		but.className ="button";
		but.style.position = "relative";
		but.style.bottom = "0px";
		but.popupobj = {popupInstance: this};
		but.onmouseup = function() //clic sur la croix
		{
			this.popupobj.popupInstance.Close();
		}
		div.appendChild(but);
		
		$(popupID).appendChild(div);
	}
	
	/*public*/ this.Close= function()
	{
		
		$('disAreaAlert').style.display='none';
		
		
		$(popupID).style.display='none';
		new Effect.SwitchOff($(popupID));
	}
}


/*
 *        Créer une popup de type confirm
 *        
 * popupID = id de la popup 
 * title = message à afficher
 *
 */
YkeUI.YkePopup.YkeConfirm = function(popupID)
{	
	/*public*/ this.OnChoose = null;
	
	/*public*/ this.disaLayer = null; //indique si le layer_disable est activé
	
	/*public*/ this.Render = function(title)
	{
		// bug fix ie 6
		$('disAreaAlert').style.display='block';
		$('disAreaAlert').style.position = 'absolute';
		$('disAreaAlert').style.top = '0px';
		
		$(popupID).style.backgroundColor="#fff";
		$(popupID).style.display='block';
		
		$(popupID).innerHTML='';
	
		var h4 = document.createElement("h4");
		$(popupID).appendChild(h4);		
		var span = document.createElement("span");
		span.id = popupID+"_info";
		span.innerHTML=title;
		span.style.position="relative";
		span.style.top="50px";
		h4.appendChild(span);
		
		
		var but = document.createElement("input");	
		but.type = "button";
		but.name = "but_close";
		but.id = "but_closeid";
		but.value = "Oui";	
		but.style.position = "relative";
		if(YkeIsIe())
			but.style.left = "305px";
		else
			but.style.left = "105px";
		
		but.style.top = "70px";	
		but.className = "buttonconfirm";
		but.popupobj = {popupInstance: this};
		but.onmouseup = function() //clic sur la croix
		{
			if(this.popupobj.popupInstance.OnChoose != null)
			{
				this.popupobj.popupInstance.OnChoose(true, this.popupobj.popupInstance);
			}
			this.popupobj.popupInstance.Close();
		}
		
		$(popupID).appendChild(but);
		
		var but2 = document.createElement("input");	
		but2.type = "button";
		but2.name = "but2_close";
		but2.id = "but2_closeid";
		but2.value = "Non";	
		but2.style.position = "relative";
		if(YkeIsIe())
			but2.style.left = "355px";
		else
			but2.style.left = "155px";
		but2.style.top = "70px";		
		but2.className = "buttonconfirm";
		but2.popupobj = {popupInstance: this};
		but2.onmouseup = function() //clic sur la croix
		{
			if(this.popupobj.popupInstance.OnChoose != null)
			{
				this.popupobj.popupInstance.OnChoose(false, this.popupobj.popupInstance);
			}			
			this.popupobj.popupInstance.Close();
		}
		
		$(popupID).appendChild(but2);
	}
	
	/*public*/ this.Close= function()
	{
		
		//$('disAreaAlert').style.display='none';
		// bug fix ie 6
		$('disAreaAlert').style.position = 'absolute';
		$('disAreaAlert').style.top = '2500px';
		
		$(popupID).style.display='none';
		
		
		
	}	
}


