// JavaScript Document
/*
	NECESSITE prototype.js, scriptaculous.js, AutoLoad.js, naviguebyk.js, function addLoadEvent(), function addOnResizeEvent()
	
	*	id			: STRING, id popup
	mask			: STRING, par defaut crm - mask utilise
	style 			: STRING, par defaut drag - fixe ou drag
		
	grise			: BOOL, par defaut false
	grise_parent	: STRING, id de popup parent a griser (utile unikement si grise est actif)
	lock			: BOOL, par defaut false - pour ke le drag'n'drop soit actif, le mask doit contenir une <balise id="'+aParam["id"]+'DragNDrop" ...	
	
	titleColor		: HEX,
	bgTitleColor	: HEX,
	title			: STRING,
	icone			: PATH,
	
	width			: INT, par defaut this.nWidthDefault
	height			: INT, par defaut this.nHeightDefault
	autoheight		: BOOL, 
	noscroll		: BOOL, par defaut false
	
	url				: STRING,
	param			: STRING,
	HTML			: STRING,
	url_distante	: STRING,
	
	verifValues     : FUNCTION, par defaut false
	onload			: FUNCTION,
	onclose			: FUNCTION,
	areasave		: STRING, 
	scriptsave		: STRING,
	exe_save		: FUNCTION,
	
	animeOpen		: FUNCTION, 
							animation Open 1 sec max => cf. "time anim open"
							ATTENTION, la fonction d'animation doit contenir [ kmzPopup.draw(aParam...) ] cf. this.draw = function
	animeClose		: FUNCTION,
							animation Open 1 sec max => cf. "time anim close"
	
	ELEMENT DE LA CLASS A SE RAPELER :
		contentHtml, btclose, btreduce, DragNDrop, icone, offsetTop-gris, hide-only
	
	PRECISIONS POUR LES ANIMATIONS
		Par defaut si il ya une animation, la fonction this.draw s'acheve avec [ $(aParam["id"]).style.display = 'none'; ] 
		car certaines animation le font toutes seules et on voit la popup clignoter (ex. grow)
		DONC si on utilise morp par ex. :
			function morphAnime(aParam){
				kmzPopup.draw(aParam["id"],aParam["mask"],2,aParam["height"]);
				$(aParam["id"]).style.display='block';//<----------------------------------- !!
				var nLeft = kmzPopup.getLeftPosition(aParam["width"]);
				$(aParam["id"]).morph("width:"+(aParam["width"]+32)+"px; left:"+nLeft+"px");
			}
		ALORS que si on utilise grow :
			function growAnime(aParam){
				kmzPopup.draw(aParam["id"],aParam["mask"],aParam["width"],aParam["height"]);
				Effect.Grow(aParam['id']);
			}
	
	//  --
	TESTER : Firefox 3, IE7, IE8, safari 4, chrome 2, opera 9.63
	//  --
		
*/

//  ---------------------  //
//  --  INCLUDE MASKs  --  //
document.write("<script type='text/javascript' src='js/popup-mask/crm.js'></script>"); // function getMaskCRM(aParam,width,height) 
document.write("<script type='text/javascript' src='js/popup-mask/crm-blanc.js'></script>"); // function getMaskCRM(aParam,width,height) 
document.write("<script type='text/javascript' src='js/popup-mask/simple.js'></script>"); // function getMaskSimple(aParam,width,height)
document.write("<script type='text/javascript' src='js/popup-mask/load.js'></script>"); // function getMaskLoad(aParam,width,height) ! showLoading uniquement
document.write("<script type='text/javascript' src='js/popup-mask/site-sidn.js'></script>"); // function getMaskSiteSidn(aParam,width,height) 
//  --  INCLUDE MASKs  --  //
//  ---------------------  //

//  ----------------------  //
//  --  CLASS popupByK  --  //
function popupByK(){
//  --  INIT  --  //
	this.version = "0.1f";
	this.aPopup          = new Array();
	this.aPopup['pop']   = new Array();
	this.aPopup['grise'] = new Array();
	this.aPopup['param'] = new Array();
	
	this.zIndex          = 6000;
	this.nTopDefault     = 200;
	this.nLeftDefault    = 200;
	this.nWidthDefault   = 800;
	this.nHeightDefault  = 600;
	
	this.sIdType         = 'idPop';
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
	this.openPopup = function (aParam){
		
		if(!aParam){ alert("CLASS popupByK "+this.version); return false;}
		
		if(!aParam["id"]){ alert("CLASS popupByK Error : no id"); return false;}
		
		//  Ne pas ouvrir de doublon + passe en premier plan + deplie popup - reload contenu
		for(var i=0; i<this.aPopup['pop'].length; i++){
			if(this.aPopup['pop'][i]==aParam["id"]){
				var sId = aParam["id"];
				aParam = null;
				aParam = this.aPopup['param'][sId];
				var currentZ = aParam["zIndex"];
				$(aParam["id"]).style.zIndex = this.zIndex + this.aPopup['pop'].length;
				this.aPopup['param'][aParam["id"]]["zIndex"] = this.zIndex + this.aPopup['pop'].length;
				for(var i=0; i<this.aPopup['pop'].length;i++){
					if( this.aPopup['pop'][i]!=aParam["id"] && currentZ<$(this.aPopup['pop'][i]).style.zIndex){
						if( document.getElementById(kmzPopup.aPopup['pop'][i]+'-grise') ){
							$(kmzPopup.aPopup['pop'][i]+'-grise').style.zIndex--;
						}
						$(this.aPopup['pop'][i]).style.zIndex --;
						this.aPopup['param'][this.aPopup['pop'][i]]["zIndex"] = $(this.aPopup['pop'][i]).style.zIndex;
					}
				}
				
				if($(aParam["id"]+'contentHtml').style.display=='none'){
					$(aParam["id"]+'contentHtml').style.display='block';
					switch(aParam["mask"]){
						case 'simple':$(aParam["id"]).style.height = (aParam["height"]+17+2+10)+'px';break;
						case 'crm':
						default:
							$(aParam["id"]).style.height = (aParam["height"]+32+30)+'px';
							$(aParam["id"]+'btreduce').src = aParam['btreduce'];
							break;
					}
				}
				/*
						if( document.getElementById(kmzPopup.aPopup['pop'][i]+'-grise') ){
							$(kmzPopup.aPopup['pop'][i]+'-grise').style.zIndex--;
							alert(kmzPopup.aPopup['pop'][i]+ ' : '+$(kmzPopup.aPopup['pop'][i]+'-grise').style.zIndex);
						}
				
				if(document.getElementById(element.id+'-grise')){
								$(element.id+'-grise').style.zIndex = element.style.zIndex;
							}
				*/
				// -- RELOAD LE CONTENU
				//if(aParam["HTML"]){ $(aParam["id"]+"contentHtml").innerHTML=aParam["HTML"]; }
				//if(	aParam["url_distante"]){ $(aParam["id"]+"contentHtml").innerHTML='<iframe frameborder="0" src="'+aParam["url_distante"]+'" width="'+aParam["width"]+'" height="'+aParam["height"]+'" />'; }
				//this.loadContent(aParam["id"]);
				return true;
			}
		}
		//-----------
			
			//  IDs
		this.aPopup['pop'].push(aParam["id"]);
		
		if(!aParam["grise_parent"]){ aParam["grise_parent"] = ""; }
			//-----------
		
			//  STYLE
		if(!aParam["titleColor"]){aParam["titleColor"]="#ffffff";}
		if(!aParam["bgTitleColor"]){aParam["bgTitleColor"]="#1b3f69";}
		if(!aParam["title"]){aParam["title"]="Fen&ecirc;tre";}
		
		switch(aParam["style"]){
			case "fixe": // -> fixe + fond gris
				var bLock = true;
				var bGrise = true;
				break;
			
			case "drag": // -> draggable + pa de fond gris
			default:
				aParam["style"] = "drag";
				var bLock = false;
				var bGrise = false;
				break;
		}
		
		if(typeof(aParam["lock"])=='undefined'){aParam["lock"] = bLock;}
		
		if(typeof(aParam["grise"])=='undefined'){aParam["grise"] = bGrise;}
			//-----------
		
			//  DIMENSION
		if(!aParam["width"]){ aParam["width"]=this.nWidthDefault; }
		if(!aParam["height"]){ aParam["height"]=this.nHeightDefault; }
		if(!aParam["autoheight"]){ aParam["autoheight"]=false; }
			//-----------
		
			//  URL & PARAMS
		if(!aParam["url"] && !aParam["HTML"]){ aParam["HTML"]=CONF_aMessage["chargementPopup"];}
			//-----------
		
			//  CHANGEMENT DE PAGE & REFRESH
		if(typeof(aParam["onclose"]) == 'function'){
			var aParamUnload = aParam;
			addUnloadEvent(function(){ aParam["onclose"](aParamUnload); });
		}
			//-----------
		
			//  SAVE PARAM
		if(typeof(aParam["verifValues"]) != 'function'){ aParam["verifValues"]=false; }
		this.aPopup['param'][aParam["id"]] = aParam;
			//-----------
		
			//  CREATION POPUP
		if(aParam["grise"]){ this.grise(aParam["id"]); }
		
			//google analytics
		//TODO
		if(aParam["title"]==CONF_aMessage['new-commande']){
			var page="popupK/"+aParam["title"].replace(' ','_');
		}else{
			var page="popupK/"+'histrique_commande';
		}
		//alert('google : '+page);
		try {pageTracker._trackPageview(page);} catch(err){}/**/
			//-----------
			
		if(typeof(aParam["animeOpen"]) == 'function'){
			//  ANIMATION
			aParam["animeOpen"](aParam);
			setTimeout( function(){ kmzPopup.loadContent(aParam["id"]); },1000); // "time anim open"
			setTimeout( function(){ kmzPopup.resizeFondGris(); },1200);
			//-----------
		}else{
			this.draw(aParam["id"],aParam["mask"],aParam["width"],aParam["height"]);
			this.loadContent(aParam["id"]);
		}
		return true;
	}
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
	this.getTopPosition = function (nh){
		//alert('height:'+nh)
		var pageH = G_oNav.scrollY();
		if(typeof(nh)=='undefined'){
			var nTop = this.nTopDefault;
		}else{
			var nTop = pageH + screen.availHeight/2 - nh/2;
		}
		if(nTop<10){nTop=35;}
		
		return parseInt(nTop);
	}
//  --
	this.getLeftPosition = function (nw){
		var pageW = G_oNav.page_width();
		if(typeof(nw)=='undefined'){
			var nLeft = this.nLeftDefault;
		}else{
			var nLeft = (pageW/2) - nw/2;
		}
		if(nLeft<10){nLeft=35;}
		
		return parseInt(nLeft);
	}
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
	this.grise = function(sId){
		var aParam = this.aPopup['param'][sId];
		if(aParam["grise"]){
			this.aPopup["grise"].push(aParam["id"]+"-grise");
			
			var div=document.createElement('div');
			div.setAttribute("id",aParam["id"]+"-grise");
			
			if(aParam["grise_parent"]){
				if(document.getElementById(aParam["grise_parent"])){
					var sLekel = aParam["grise_parent"];
					if(document.getElementById(sLekel+'hide-only')){sLekel = sLekel+'hide-only';}
					$(sLekel).appendChild(div);
					var nW = parseInt($(sLekel).clientWidth);
					var nH = parseInt($(sLekel).clientHeight);
					
					this.aPopup['param'][aParam["id"]]["remind_parent"] = $(sLekel);
					
					var nTop = 0;
					if(this.aPopup['param'][aParam["grise_parent"]]['offsetTop-gris']){
						nTop = this.aPopup['param'][aParam["grise_parent"]]['offsetTop-gris'];
					}
				}
			}else if(this.aPopup["grise"].length>1){
				var nLekel = this.aPopup['pop'].length-2;
				var sLekel = this.aPopup['pop'][nLekel];
				if(document.getElementById(sLekel+'hide-only')){sLekel = sLekel+'hide-only';}
					
				$(sLekel).appendChild(div);
				var nW = parseInt($(sLekel).clientWidth);
				var nH = parseInt($(sLekel).clientHeight);
				
				this.aPopup['param'][aParam["id"]]["remind_parent"] = $(sLekel);
				
				var nTop = 0;
				if(this.aPopup['param'][this.aPopup['pop'][nLekel]]['offsetTop-gris']){
					nTop = this.aPopup['param'][this.aPopup['pop'][nLekel]]['offsetTop-gris'];
				}
			}else{
				document.body.appendChild(div);
				var nW = G_oNav.page_width(); 
				var nH = G_oNav.page_height();
				if(document.documentElement.clientHeight<oBody.scrollHeight){nH = nH + 30;}
				
				this.aPopup['param'][aParam["id"]]["remind_parent"] = document.body;
				this.aPopup['param'][aParam["id"]]["fond-bg"] = true;
				var nTop = 0;
			}
			
			$(aParam["id"]+'-grise').style.top             = nTop+"px";
			$(aParam["id"]+'-grise').style.display         = 'none';
			$(aParam["id"]+'-grise').style.backgroundColor = '#000000';
			$(aParam["id"]+'-grise').style.position        = 'absolute';
			$(aParam["id"]+'-grise').style.width           = nW+"px";
			$(aParam["id"]+'-grise').style.height          = nH+"px";
			
			$(aParam["id"]+'-grise').style.zIndex          = this.zIndex + this.aPopup['pop'].length;
			
			$(aParam["id"]+'-grise').appear({ from:0, to:0.6,duration:1 });
		}

	}
//  --	
	this.degrise = function(sId){
		var aParam = this.aPopup['param'][sId];
		if(document.getElementById(aParam["id"]+'-grise')){
			$(aParam["id"]+'-grise').fade({ from:0.6, to:0,duration:1 });
			setTimeout(function(){ aParam["remind_parent"].removeChild($(aParam["id"]+'-grise')); },1000);
		}
	}
//  --
	this.resizeFondGris = function(){
		if(kmzPopup.aPopup["grise"].length > 0){
			var sId = kmzPopup.aPopup["grise"][0].replace('-grise','');
			if(kmzPopup.aPopup['param'][sId]["fond-bg"]){
				if(document.getElementById(kmzPopup.aPopup["grise"][0]) ){
					var nLargeurNavigateur = G_oNav.page_width(); 
					var nHauteurNavigateur = G_oNav.page_height();
					if(document.documentElement.clientHeight<oBody.scrollHeight){nHauteurNavigateur = nHauteurNavigateur + 30;}
					$(kmzPopup.aPopup["grise"][0]).style.width=nLargeurNavigateur+"px";
					$(kmzPopup.aPopup["grise"][0]).style.height=nHauteurNavigateur+"px";
				}
			}
		}
	}
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
	this.closePopup = function(sId){
		var aParam = this.aPopup['param'][sId];
		if(typeof(aParam["verifValues"]) == 'function'){
			var bVerif = this.verifModifValues(sId);
			if(!bVerif){
				aParam["verifValues"](aParam);
				return false;
			}
		}
		if(typeof(aParam["onclose"]) == 'function'){
			var aParamUnload = aParam;
			aParam["onclose"](aParamUnload);
		}
		if(aParam['animeClose']){
			aParam['animeClose'](aParam);
			setTimeout( function(){ kmzPopup.removePopup(aParam["id"]); },1000); // "time anim close"
		}else{
			this.removePopup(aParam["id"]);
		}
	}
//  --
	this.removePopup = function(sId){
		var aParam = this.aPopup['param'][sId];
		
		document.body.removeChild($(aParam["id"]));
		this.degrise(aParam["id"]);
		if(this.aPopup['param'][sId]['load-appearing']){this.aPopup['param'][sId]['load-appearing'].cancel();}
		if(this.aPopup['param'][sId]['load-fading']){this.aPopup['param'][sId]['load-fading'].cancel();}
		
		var aPopupArray = new Array();
		var aParamArray = new Array();
		
		for(var i=0; i<this.aPopup['pop'].length; i++){
			if(this.aPopup['pop'][i]!=aParam["id"]){
				aPopupArray.push(this.aPopup['pop'][i]);
				aParamArray[this.aPopup['pop'][i]] = this.aPopup['param'][this.aPopup['pop'][i]];
			}
		}
		
		this.aPopup['pop'] = new Array();
		this.aPopup['pop'] = aPopupArray;
		this.aPopup['param'] = new Array();
		this.aPopup['param'] = aParamArray;
		
		var aGriseArray = new Array();
		for(var i=0; i<this.aPopup['grise'].length; i++){
			if(this.aPopup['grise'][i]!=aParam["id"]+"-grise"){ aGriseArray.push(this.aPopup['grise'][i]); }
		}
		this.aPopup['grise'] = new Array();
		this.aPopup['grise'] = aGriseArray;
		
		// redefine zIndex
		var currentZ = aParam["zIndex"];
		for(var i=0; i<this.aPopup['pop'].length;i++){
			if( this.aPopup['pop'][i]!=aParam["id"] && currentZ<$(this.aPopup['pop'][i]).style.zIndex){
				$(this.aPopup['pop'][i]).style.zIndex --;
				this.aPopup['param'][this.aPopup['pop'][i]]["zIndex"] = $(this.aPopup['pop'][i]).style.zIndex;
			/*
				// check grise - cas ou la popup ferme est sous le gris
				for(var j=0; j<this.aPopup['grise'].length; j++){
					if(this.aPopup['grise'][j]!=this.aPopup['pop'][i]+"-grise"){
						$(this.aPopup['grise'][j]).style.zIndex --;
					}
				}*/
			}
		}
		
		if(document.getElementById('tooltip')){$('tooltip').style.top=0+'px';}
		
		//retire les auto-complete en automatique
		unloadAutocompleter()
	}
//  --	
	this.reduce = function(sId,sReduce,sRetore){
		var aParam = this.aPopup['param'][sId];
		
		if($(aParam["id"]+'contentHtml').style.display=='block'){
			$(aParam["id"]+'btreduce').src = sRetore;
			$(aParam["id"]+'contentHtml').style.display='none';
			$(aParam["id"]).style.height = 'auto';
		}else{
			$(aParam["id"]+'btreduce').src = sReduce;
			$(aParam["id"]+'contentHtml').style.display='block';
			
			if(aParam['autoheight']==true){
				$(aParam["id"]).style.height = 'auto';
			}else{
				switch(aParam["mask"]){
					case 'simple':$(aParam["id"]).style.height = (aParam["height"]+17+2+10)+'px';
						
						break;
					case 'crm':
					default:$(aParam["id"]).style.height = (aParam["height"]+32+30)+'px';
						break;
				}
			}
		}
	}
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
	this.draw = function(sId,mask,width,height){
		
		var aParam = this.aPopup['param'][sId];
		
		var div=document.createElement('div');
		div.setAttribute("id",aParam["id"]);
		this.aPopup.push(aParam["id"]);
		
		document.body.appendChild(div);
		
		$(aParam["id"]).style.display         = 'none';
		$(aParam["id"]).style.position        = 'absolute';
		$(aParam["id"]).style.zIndex          = this.zIndex + this.aPopup['pop'].length;
		$(aParam["id"]).style.width           = width+'px';
		$(aParam["id"]).style.height          = height+'px';
		
		switch(mask){
			case 'simple':
				var aReturned = getMaskSimple(aParam,width,height);
				var sBody = aReturned['sBody'];
				aParam = aReturned['param'];
				break;
			case 'crm-blanc':
				var aReturned = getMaskCRMBlanc(aParam,width,height);
				var sBody     = aReturned['sBody'];
				aParam        = aReturned['param'];
				width         = width+32;// A cause des ombres
				height        = height+32+30;//ombres + barre drag n drop
				break;
			case 'site-sidn':
				var aReturned = getMaskSiteSidn(aParam,width,height);
				var sBody     = aReturned['sBody'];
				aParam        = aReturned['param'];
				width         = width+32;// A cause des ombres
				height        = height;
				break;
			case 'crm':
			default:
				var aReturned = getMaskCRM(aParam,width,height);
				var sBody     = aReturned['sBody'];
				aParam        = aReturned['param'];
				width         = width+32;
				height        = height+32+30;
				break;
		}
		/*
		if(aParam["autoheight"]){
			if(!aParam["lock"]){//decalage des fenetres superposees
				$(aParam["id"]).style.top  = (this.getTopPosition(height) + (this.aPopup['pop'].length-1)*20)+'px';
				$(aParam["id"]).style.left = (this.getLeftPosition(width) + (this.aPopup['pop'].length-1)*20)+'px';
			}else{
				$(aParam["id"]).style.top  = this.getTopPosition(height)+'px';
				$(aParam["id"]).style.left = this.getLeftPosition(width)+'px';
			}
		}else{
			if(!aParam["lock"]){//decalage des fenetres superposees
				$(aParam["id"]).style.top  = (this.getTopPosition(height) + (this.aPopup['pop'].length-1)*20)+'px';
				$(aParam["id"]).style.left = (this.getLeftPosition(width) + (this.aPopup['pop'].length-1)*20)+'px';
			}else{
				$(aParam["id"]).style.top  = this.getTopPosition(height)+'px';
				$(aParam["id"]).style.left = this.getLeftPosition(width)+'px';
			}
		}
		*/
		if(aParam["top"] && aParam["left"]){
			$(aParam["id"]).style.top  = aParam["top"];
			$(aParam["id"]).style.left = aParam["left"];
		}else{
			if(!aParam["lock"]){//decalage des fenetres superposees
				$(aParam["id"]).style.top  = (this.getTopPosition(height) + (this.aPopup['pop'].length-1)*20)+'px';
				$(aParam["id"]).style.left = (this.getLeftPosition(width) + (this.aPopup['pop'].length-1)*20)+'px';
			}else{
				$(aParam["id"]).style.top  = this.getTopPosition(height)+'px';
				$(aParam["id"]).style.left = this.getLeftPosition(width)+'px';
			}
		}
		
		$(aParam["id"]).innerHTML = sBody;
		
		$(aParam["id"]+'contentHtml').style.display='block';
		if(aParam["noscroll"]){  
			$(aParam["id"]+'contentHtml').style.overflow='hidden';
		}else{
			$(aParam["id"]+'contentHtml').style.overflow='auto';
		}
		
			//  CLASS PNG SUR L'ICONE
		if(document.getElementById(aParam["id"]+'icone')){ if(aParam["icone"].indexOf(".png") != -1){ $(aParam["id"]+'icone').className = 'png'; } }
			//  Z INDEX
		aParam["zIndex"] = this.zIndex + this.aPopup['pop'].length;
			//  MAJ TAB aParam
		this.aPopup['param'][aParam["id"]] = aParam;
		
		if(!aParam["lock"]){
			if( document.getElementById(aParam["id"]+"DragNDrop") ){
				new Draggable(
					$(aParam["id"]),
					{
						handle:aParam["id"]+"DragNDrop",
						snap:[30,15],
						zindex:this.zIndex + this.aPopup['pop'].length,
						starteffect:function(element){
							var aParam = kmzPopup.aPopup['param'][element.id];
							
							var currentZ = aParam["zIndex"];
							
							element.style.zIndex = kmzPopup.zIndex + kmzPopup.aPopup['pop'].length;
							kmzPopup.aPopup['param'][element.id]["zIndex"] = kmzPopup.zIndex + kmzPopup.aPopup['pop'].length;
							if(document.getElementById(element.id+'-grise')){
								$(element.id+'-grise').style.zIndex = element.style.zIndex;
							}
							
							for(var i=0; i<kmzPopup.aPopup['pop'].length;i++){
								if( kmzPopup.aPopup['pop'][i]!=element.id && currentZ<$(kmzPopup.aPopup['pop'][i]).style.zIndex){
									$(kmzPopup.aPopup['pop'][i]).style.zIndex --;
									if( document.getElementById(kmzPopup.aPopup['pop'][i]+'-grise') ){
										$(kmzPopup.aPopup['pop'][i]+'-grise').style.zIndex--;
										//alert(kmzPopup.aPopup['pop'][i]+ ' : '+$(kmzPopup.aPopup['pop'][i]+'-grise').style.zIndex);
									}
									kmzPopup.aPopup['param'][kmzPopup.aPopup['pop'][i]]["zIndex"] = $(kmzPopup.aPopup['pop'][i]).style.zIndex;
								}
							}
						},
						endeffect:function(element){
							element.style.zIndex = kmzPopup.zIndex + kmzPopup.aPopup['pop'].length;
							if(document.getElementById(element.id+'-grise')){
								$(element.id+'-grise').style.zIndex = element.style.zIndex;
							}
							kmzPopup.aPopup['param'][element.id]["zIndex"] = kmzPopup.zIndex + kmzPopup.aPopup['pop'].length;
							
							var sTop=element.style.top;
							var nTop=parseInt(sTop.replace("px",""));
							if(nTop<10){
								element.style.top="10px";
							}
							kmzPopup.resizeFondGris();
						}
					}
				);
			}
		}else{
			//pas de curseur MAIN si la popup n'ets pas draggable
			$(aParam["id"]+"DragNDrop").style.cursor='default';
		}
			
		if(aParam["HTML"]){
			$(aParam["id"]+"contentHtml").innerHTML=aParam["HTML"];
		}else{
			$(aParam["id"]+"contentHtml").innerHTML='<br /><br />&nbsp;&nbsp;'+CONF_aMessage["chargement-en-cours"]+'&nbsp;&nbsp;<img src="img/loading-small.gif" alt="" />';
		}
		
		if(	aParam["url_distante"]){ $(aParam["id"]+"contentHtml").innerHTML='<iframe frameborder="0" src="'+aParam["url_distante"]+'" width="'+aParam["width"]+'" height="'+aParam["height"]+'" />'; }
		
		if(!aParam["animeOpen"]){$(aParam["id"]).style.display = 'block';}
		
	}
//  --
	this.loadContent = function(sId){
		
		var aParam = this.aPopup['param'][sId];
		if(aParam["param"]){
			if(aParam["param"].indexOf(this.sIdType) == -1){
				if(aParam["param"].length>0){aParam["param"] +='&';}
				aParam["param"] += this.sIdType+'='+aParam["id"];
			}
		}else{
			aParam["param"] = this.sIdType+'='+aParam["id"];
		}
		//this.showLoading(sId);
		
		//reduction automatique pour ne pas coller les élements à droite
		var nReduction=60; //-60 pour le padding + ascenceur
		if(aParam["noscroll"]){
				nReduction=25;
		}
		if(aParam["param"].indexOf("&width-popupbyk=",0)==-1){
			aParam["param"] += '&width-popupbyk='+(parseInt(aParam["width"])-nReduction); 
		}
		if(aParam["url"]){		
			var ajax=new Ajax.Request(
				aParam["url"],
				{ 	
					method:'post',
					parameters:aParam["param"],
					onSuccess:	function(t){	
						//kmzPopup.hideLoading(aParam["id"]);
						$(aParam["id"]+'contentHtml').innerHTML=t.responseText;
						
						autoLoad({id:aParam["id"]+'contentHtml'});
						
						if(typeof(aParam["onload"]) == 'function'){
							var func=aParam["onload"];
							func(aParam["id"]);
						}
						
						if(typeof(aParam["verifValues"]) == 'function'){ kmzPopup.recupContentValues(aParam["id"]); }
						
						if(aParam["autoheight"]){
							$(aParam["id"]).style.height = 'auto';
							$(aParam["id"]+'contentHtml').style.height = 'auto';
							//kmzPopup.resizeFondGris();
						}
						kmzPopup.resizeLoading(aParam["id"]);
						kmzPopup.resizeFondGris();
						
						kmzPopup.hideLoading(aParam["id"]);
					}
				}								
			);
		}
	}
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
	this.showLoading = function(sId){
		var aParam = this.aPopup['param'][sId];
		
		var div=document.createElement('div');
		div.setAttribute("id",aParam["id"]+"-grise_loading");
		
		var sLekel = aParam["id"];
		
		if(document.getElementById(sLekel+'hide-only')){sLekel = sLekel+'hide-only';}
		$(sLekel).appendChild(div);
		var nW = parseInt($(sLekel).clientWidth);
		var nH = parseInt($(sLekel).clientHeight);
		
		this.aPopup['param'][aParam["id"]]["remind_parent_loading"] = $(sLekel);
		
		var nTop = 0;
		if(this.aPopup['param'][aParam["id"]]['offsetTop-gris']){
			nTop = this.aPopup['param'][aParam["id"]]['offsetTop-gris'];
		}
		
		var aReturned = getMaskLoad(aParam,nW,nH);
		var sBody = aReturned['sBody'];
		
		$(aParam["id"]+'-grise_loading').innerHTML             = sBody;
		$(aParam["id"]+'-grise_loading').style.top             = nTop+"px";
		$(aParam["id"]+'-grise_loading').style.display         = 'none';
		$(aParam["id"]+'-grise_loading').style.backgroundColor = '#000000';
		$(aParam["id"]+'-grise_loading').style.position        = 'absolute';
		$(aParam["id"]+'-grise_loading').style.width           = nW+"px";
		$(aParam["id"]+'-grise_loading').style.height          = nH+"px";
		//$(aParam["id"]+'-grise_loading').style.height          = "100%";
		
		$(aParam["id"]+'-grise_loading').style.zIndex          = this.zIndex + this.aPopup['pop'].length;
		
		var element = $(aParam["id"]+'-grise_loading');
		
		var nOpacity=parseFloat(this.getOpacity(element));
		if(!nOpacity){
			this.setOpacity(element.id, 60);		
			nOpacity=0;
		}
		if(element.style.display=='none'){element.style.display='block';} 
		if(this.aPopup['param'][sId]['load-fading']){this.aPopup['param'][sId]['load-fading'].cancel();}
		
		this.aPopup['param'][sId]['load-appearing'] = new Effect.Opacity(
			element.id, 
			{ 
				duration: 0.5,
				transition: Effect.Transitions.linear,
				from: nOpacity, 
				to: 0.6
			}
		);
	}
//  --
	this.hideLoading = function(sId){
		var aParam = this.aPopup['param'][sId];
		
		if(document.getElementById(aParam["id"]+'-grise_loading')){
			
			var element = $(aParam["id"]+'-grise_loading');
			
			var nOpacity=parseFloat(this.getOpacity(element));
			if(!nOpacity ){
				this.setOpacity(element.id, 100);
				nOpacity=0.6;
			}
			if(element.style.display=='none'){
				element.style.display='block';
			} 
			if(this.aPopup['param'][sId]['load-appearing']){this.aPopup['param'][sId]['load-appearing'].cancel();}
			
			var oParentLoading = aParam["remind_parent_loading"];
			this.aPopup['param'][sId]['load-fading'] = new Effect.Opacity(
				element.id,
				{ 
					duration : 0.5,
					transition : Effect.Transitions.linear,
					from : nOpacity, 
					to : 0,
					afterFinish : function(){ oParentLoading.removeChild($(aParam["id"]+'-grise_loading')); }
				}
			);
		}
	}
//  --
	this.resizeLoading = function(sId){
		var aParam = this.aPopup['param'][sId];
		if(document.getElementById(aParam["id"]+'-grise_loading')){
			var sLekel = aParam["id"];
			if(document.getElementById(sLekel+'hide-only')){sLekel = sLekel+'hide-only';}
			
			var nW = parseInt($(sLekel).clientWidth);
			var nH = parseInt($(sLekel).clientHeight);
			
			$(aParam["id"]+'-grise_loading').style.width           = nW+"px";
			$(aParam["id"]+'-grise_loading').style.height          = nH+"px";
		}
	}
//  --
	this.getOpacity = function(element){
		if(element){
			var opacity=null;  
			//Get the opacity based on the current browser used
			var sUserAgent = navigator.userAgent;
			if(sUserAgent.indexOf("MSIE") != -1){
				filter = element.style.filter;
				if(filter){
					alpha = filter.split("alpha(opacity=");
					opacity = alpha[1].substr(0,(alpha[1].length-1))/100;
				}
			}else{
				opacity = element.style.opacity;
			}
		}else{
			var opacity=0;
		}
		return opacity;
	}
//  --
	this.setOpacity = function(eID, opacityLevel) {
		if(document.getElementById(eID)){
			var eStyle = document.getElementById(eID).style;
			eStyle.opacity = opacityLevel / 100;
			eStyle.filter = 'alpha(opacity='+opacityLevel+')';
		}
	}
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
	this.loadElement = function(sMainId){
		aAllInputs   = document.getElementById(sMainId).getElementsByTagName('input');
		aAllSelect   = document.getElementById(sMainId).getElementsByTagName('select');
		aAllTextArea = document.getElementById(sMainId).getElementsByTagName('textarea');
		var oSelectObjet = new Array();
		
		for(var i=0; i<aAllInputs.length; i++){
			var sId = aAllInputs[i].id;
			//alert(sId);
			if(sId){
				var ObjActif = true;
				if($(sId).disabled){ ObjActif = false; }
				//  --  Exclusion de champs : Cas Particuliers CRM  --  //
				if(sId==sMainId+'onglets-opened'){ ObjActif = false; }
				if($(sId).type=='image'){ ObjActif = false; }
				if($(sId).type=='button'){ ObjActif = false; }
					//liste visite & formation dans fiche client
				if(sId.indexOf(sMainId+'visite')>-1){ ObjActif = false; }
				if(sId.indexOf(sMainId+'formation')>-1){ ObjActif = false; }
				if(sId.indexOf(sMainId+'dmd-formation')>-1){ ObjActif = false; }
				if(sId.indexOf(sMainId+'move')>-1){ ObjActif = false; } //champ ajouter apres 1er cmd/visite/formation
				//  --
				if(ObjActif){
					var Objtype  = $(sId).type;
					var ObjName  = $(sId).name;
					var ObjValue = this.decodeValue($(sId).value);
					if( ($(sId).type=='radio') || ($(sId).type=='checkbox') ){
						if($(sId).checked){
							ObjValue = ObjValue+'1';						
						}else{
							ObjValue = ObjValue+'0';
						}
					}
					oSelectObjet.push( {'type':Objtype, 'id':sId, 'name':ObjName, 'value':ObjValue } );
				}
			}
		}
		
		for(var i=0; i<aAllSelect.length; i++){
			var sId = aAllSelect[i].id;
			var ObjActif = true;
			if($(sId).disabled){ ObjActif = false; }
			if(ObjActif){
				var Objtype  = $(sId).type;
				var ObjName  = $(sId).name;
				var ObjValue = this.decodeValue($(sId).value);
				oSelectObjet.push( {'type':Objtype, 'id':sId, 'name':ObjName, 'value':ObjValue } );
			}
		}
		
		for(var i=0; i<aAllTextArea.length; i++){
			var sId = aAllTextArea[i].id;
			var ObjActif = true;
			if($(sId).disabled){ ObjActif = false; }
			if(ObjActif){
				var Objtype  = $(sId).type;
				var ObjName  = $(sId).name;
				var ObjValue = this.decodeValue($(sId).value);
				oSelectObjet.push( {'type':Objtype, 'id':sId, 'name':ObjName, 'value':ObjValue } );
			}
		}
		return oSelectObjet;
	}
//  --
	this.recupContentValues = function(sId){
		var oInputs = this.loadElement(sId);
		var aRecupInputs = new Array();
		for(j=0;j<oInputs.length; j++) {
			aRecupInputs[oInputs[j]['id']] = oInputs[j]['value'];
		}
		this.aPopup['param'][sId]['recup-values'] = new Array();
		this.aPopup['param'][sId]['recup-values'] = aRecupInputs;
	}
//  --
	this.verifModifValues = function(sId){
		bReturn = true;
		if(this.aPopup['param'][sId]['recup-values']){
			var aRecupInputs = this.aPopup['param'][sId]['recup-values'];
			
			var aParam = this.aPopup['param'][sId];
			var oInputs = this.loadElement(sId);
			
			for(j=0;j<oInputs.length; j++) { 
				if(aRecupInputs[oInputs[j]['id']] != oInputs[j]['value']){
					bReturn = false;
					//alert('=>'+oInputs[j]['id']+' : '+oInputs[j]['value']+'!='+aRecupInputs[oInputs[j]['id']]);
				} 
			}
		}
		return bReturn;
	}
//  --
	this.decodeValue = function(ObjValue){
		//Recuperation des infos de l'input
		ObjValue=ObjValue.replace(/%/g,encodeURIComponent('%'));
		ObjValue=ObjValue.replace(/\?/g,encodeURIComponent('?'));
		ObjValue=ObjValue.replace(/\&/g,encodeURIComponent('&'));
		ObjValue=ObjValue.replace(/\+/g,encodeURIComponent('+'));
		ObjValue=ObjValue.replace(/#/g,encodeURIComponent('#'));
		return ObjValue;
	}
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //
//  --  --------------------------------------------------------------------------------------------------------------------------------  --  //

}
//  --  CLASS popupByK  --  //
//  ----------------------  //



//  -------------------------------  //
//  --  DECLARATION DE LA CLASS  --  //
var kmzPopup;
function LoadPopupByK(){ kmzPopup = new popupByK(); }
addLoadEvent(LoadPopupByK);
//  --  DECLARATION DE LA CLASS  --  //
//  -------------------------------  //

/*
SI BESOIN :
	!! A METTRE AVANT la class
function addLoadEvent(func){
	var oldonload = window.onload;
	if(typeof window.onload != 'function'){
		window.onload = func;
	}else{
		window.onload = function(){ 
			oldonload();
			func();
		}
	}
}
	!! A METTRE APRES la class
function addOnResizeEvent(){
	func = function(){
		//alert('window resize');
		if(typeof(kmzAlert)=='object'){kmzAlert.resizeFondGris();}
		if(typeof(kmzPopup)=='object'){kmzPopup.resizeFondGris();}
	}
	window.onresize = func;
}
addLoadEvent(addOnResizeEvent);
*/

// function supplementaire : mets un load devant un div
var aSimpleLoading = new Array();
function getMaskSimpleLoad(sId,width,height){
	var sReturn='<div id="'+sId+'LoadcontentHtml" style="height:100%;">&nbsp;</div>';
	var aReturn = {sBody:sReturn};//<img src="img/loading-anim.gif" alt="" style="position:absolute; left:50%; top:50%;" />
	return aReturn;
}

function showSimpleLoading(aParam){
	var sId = aParam["id"];
	
	var div=document.createElement('div');
	div.setAttribute("id",sId+"-grise_loading");
	
	$(sId).appendChild(div);
	$(sId).insertBefore(div, $(sId).firstChild);
	
	var nW = parseInt($(sId).clientWidth);
	var nH = parseInt($(sId).clientHeight);
	
	var nTop = 0;
	//nTop = $(sId).style.top;
	//if(this.aPopup['param'][aParam["id"]]['offsetTop-gris']){
		//nTop = this.aPopup['param'][aParam["id"]]['offsetTop-gris'];
	//}
	
	var aReturned = getMaskSimpleLoad(sId,nW,nH);
	var sBody = aReturned['sBody'];
	
	$(sId+'-grise_loading').innerHTML             = sBody;
	//$(sId+'-grise_loading').style.top             = nTop+"px";
	$(sId+'-grise_loading').style.display         = 'none';
	$(sId+'-grise_loading').style.backgroundColor = '#FFFFFF';
	$(sId+'-grise_loading').style.position        = 'absolute';
	$(sId+'-grise_loading').style.width           = nW+"px";
	$(sId+'-grise_loading').style.height          = nH+"px";
	
	//$(aParam["id"]+'-grise_loading').style.zIndex          = this.zIndex + this.aPopup['pop'].length;
	
	var element = $(sId+'-grise_loading');
	
	var nOpacity=parseFloat(kmzPopup.getOpacity(element));
	if(!nOpacity){
		kmzPopup.setOpacity(element.id, 60);		
		nOpacity=0;
	}
	if(element.style.display=='none'){element.style.display='block';}
	
	if(!aSimpleLoading[sId]){aSimpleLoading[sId]=new Array();}
	if(aSimpleLoading[sId]['load-fading']){aSimpleLoading[sId]['load-fading'].cancel();}
	
	aSimpleLoading[sId]['load-appearing'] = new Effect.Opacity(
		element.id, 
		{ 
			duration: 0.5,
			transition: Effect.Transitions.linear,
			from: nOpacity, 
			to: 0.6
		}
	);
}
//  --
function hideSimpleLoading(aParam){
	var sId = aParam["id"];
	
	if(document.getElementById(sId+'-grise_loading')){
		var element = $(sId+'-grise_loading');
		
		var nOpacity=parseFloat(kmzPopup.getOpacity(element));
		if(!nOpacity ){
			kmzPopup.setOpacity(element.id, 100);
			nOpacity=0.6;
		}
		if(element.style.display=='none'){element.style.display='block';} 
		if(aSimpleLoading[sId]['load-appearing']){aSimpleLoading[sId]['load-appearing'].cancel();}
		aSimpleLoading[sId]['load-fading'] = new Effect.Opacity(
			element.id,
			{ 
				duration : 0.5,
				transition : Effect.Transitions.linear,
				from : nOpacity, 
				to : 0,
				afterFinish : function(){ $(sId).removeChild($(sId+'-grise_loading')); }
			}
		);
	}
}