
/* Extension de String ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
String.prototype.camelize = function() {
  var parts = this.split('-'), len = parts.length;
  if (len == 1) return parts[0];
  var camelized = this.charAt(0) == '-'
    ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
    : parts[0];
  for (var i = 1; i < len; i++)
    camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
  return camelized;
}
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
String.prototype.capitalize = function(allLCase) {return this.charAt(0).toUpperCase() + (allLCase?this.substring(1).toLowerCase():this.substring(1));};
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
String.prototype.isEmpty = function() /*Boolean*/ {return this.replace(/\s/gi,"")=="";};
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
String.prototype.rTrim = function() /*String*/ {return this.replace(/\s+$/gi,"");};
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
String.prototype.lTrim = function() /*String*/ {return this.replace(/^\s+/gi,"");};
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
String.prototype.trim = function() /*String*/ {return this.lTrim().rTrim();};
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/

/* variables temporaires préparatoires nécessitant l'accès à une référence ou un test initial avant affectation //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
var hwsTempBrowser = {};
		hwsTempBrowser.opera		= (navigator.userAgent.indexOf("Opera") >= 0) ? parseFloat(navigator.appVersion) : 0;
		hwsTempBrowser.khtml		= (navigator.appVersion.indexOf("Konqueror") >= 0)||(navigator.appVersion.indexOf("Safari") >= 0) ? parseFloat(navigator.appVersion) : 0;
		hwsTempBrowser.safari		= (navigator.appVersion.indexOf("Safari") >= 0?parseFloat(navigator.appVersion.split("Version/")[1]) || 2:0);
		hwsTempBrowser.mozilla	= ((navigator.userAgent.indexOf("Gecko") >= 0)&&(!hwsTempBrowser.khtml)) ? parseFloat(navigator.appVersion) : 0;
		hwsTempBrowser.firefox	= (hwsTempBrowser.mozilla?parseFloat(navigator.userAgent.split("Firefox/")[1].split(" ")[0]):0);
		hwsTempBrowser.ie				= ((document.all)&&(!hwsTempBrowser.opera)?parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]):0);

/* package ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
var hws = {
	debug : false,
	/* function ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	debugMessage : function(text) {
		alert(text);
		return false;
	},
	/* package ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	browser : {
		opera		: hwsTempBrowser.opera,
		khtml		: hwsTempBrowser.khtml,
		safari	: hwsTempBrowser.safari,
		mozilla : hwsTempBrowser.mozilla,
		firefox : hwsTempBrowser.firefox,
		ie			: hwsTempBrowser.ie
	},
	/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	alert : function(text) {
		alert(typeof(text)=="string"?hws.language.getTraduction(text):text);
	},
	/* package /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	language : {
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getTraduction : function(text) {
			return text;
		}
		/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	},
	/* package /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	regExp : {
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		match : function(value/*String*/,format/*String*/) /*Array*/ {
			var reg = new RegExp(format,"gi");
			return value.match(reg);
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		replace : function(value/*String*/,format/*String*/,replace/*String*/) /*Array*/ {
			var reg = new RegExp(format,"gi");
			return value.replace(reg,replace);
		},
		/* package /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		format : {
			textDos : "[0-9a-zA-Z\\.\\-_]",
			webDomainName : "[0-9a-zA-Z]+((\\.|\\_|\\-)*[0-9a-zA-Z]+)*",
			webDomainExt : "(\\.[a-zA-Z]{2,4}){1}",
			ipAddress : "((\\d{1,3}\\.){3}(\\d{1,3})){1}",
			integer : "(\\+|\\-){0,1}[0-9]+",
			real : "(\\+|\\-){0,1}[0-9]+((,|\\.){1}[0-9]+){0,1}((e|E){1}(\\+|\\-){0,1}[0-9]+){0,1}",
			date : "(\\d{2}\\/){2}\\d{2,4}",
			time : "(\\d{2}:){2}\\d{2}",
			dateTime : "(((\\d{2}\\/){2}(\\d{2}){1,2} (\\d{2}:){2}\\d{2})|((\\d{2}\\/){2}(\\d{2}){1,2})|((\\d{2}:){2}\\d{2}))",
			phoneNumber : "((\\+[0-9]{1,3}(\\.|\\(0\\))[0-9]{4,9})|(0[1-68-9](\\.{0,1}[0-9]{2})+))",
			color : "#{0,1}\[0-9A-Fa-f]{6}"
		},
		/* package /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		message : {
			textDos : "Valeur incorrecte : seuls les caractère a->z, A->Z, 0->9 .-_ sont autorisés.",
			URL : "Format d'URL incorrect.",
			email : "Format d'adresse e-mail incorrect.",
			integer : "Saisissez une valeur numérique entière.",
			real : "Saisissez une valeur numérique.",
			positive : "Saisissez une valeur numérique positive.",
			negative : "Saisissez une valeur numérique négative.",
			posStrict : "Saisissez une valeur numérique strictement positive.",
			negStrict : "Saisissez une valeur numérique strictement négative.",
			date : "Format de date incorrect.\nFormat accepté : jj/mm/aa ou jj/mm/aaaa.",
			time : "Format d'heure incorrect.\nFormat accepté : hh:mm:ss.",
			dateTime : "Format de date/heure incorrect.\nFormat accepté : jj/mm/aa ou jj/mm/aaaa et hh:mm:ss ",
			phoneNumber : "Format de numéro de téléphone incorrect.\nFormats acceptés :\n   - international : +##.######### ou +##(0)#########\n    - français : ##.##.##.##.##",
			color : "Format de couleur incorrect :\n #RRVVBB (R=Rouge, V=Vert, B=Bleu ; au format hexadécimal)",
			coord : "format de coordonnée incorrect. Format acceptés :\n-+00.0000 (D.d)\n00°00.00 NSEW (DM.d)\n00°00'00'' NSEW (DMS)\n00°00'00.00'' NSEW (DMS.d)"
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		testFormat : function(value/*String*/,format/*String*/) /*Boolean*/ {
			var reg = new RegExp("^\s*("+format+")\s*$","gi");
			return !value.isEmpty() && value.replace(reg,"")=="";
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isTextDos : function(value/*String*/) /*Boolean*/ {
			return hws.regExp.testFormat(value,hws.regExp.format.textDos);
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isURL : function(value/*String*/) /*Boolean*/ {
			return hws.regExp.testFormat(value,"((http://)*"+hws.regExp.format.webDomainName+hws.regExp.format.webDomainExt+")|("+hws.regExp.format.ipAddress+")");
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isEmail :  function(value/*String*/) /*Boolean*/ {
			var reg;
			if(value.isEmpty()) return false;
			var emailParts = value.trim().split("@");
			if(emailParts.length<2) return false;
			reg = new RegExp("^"+hws.regExp.format.webDomainName+"$","gi");
			if(emailParts[0].isEmpty() || emailParts[0].replace(reg,"")!="") return false;
			var reg = new RegExp("^("+hws.regExp.format.webDomainName+hws.regExp.format.webDomainExt+")|("+hws.regExp.format.ipAddress+")$","gi");
			if(emailParts[1].isEmpty() || emailParts[1].replace(reg,"")!="") return false;
			return true;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isInteger : function(value/*String*/) /*Boolean*/ {
			return hws.regExp.testFormat(value,hws.regExp.format.integer);
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isReal : function(value/*String*/) /*Boolean*/ {
			return hws.regExp.testFormat(value.replace(/\s/gi,""),hws.regExp.format.real);
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isPositive : function(value/*String*/) /*Boolean*/ {
			return hws.regExp.isReal(value) ? Number(value)>=0 : false;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isNegative : function(value/*String*/) /*Boolean*/ {
			return hws.regExp.isReal(value) ? Number(value)<=0 : false;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isPosStrict : function(value/*String*/) /*Boolean*/ {
			return hws.regExp.isReal(value) ? Number(value)>0 : false;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isNegStrict : function(value/*String*/) /*Boolean*/ {
			return hws.regExp.isReal(value) ? Number(value)<0 : false;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isDate : function(value/*String*/) /*Boolean*/ {
			value = value.trim();
			if(!hws.regExp.testFormat(value,hws.regExp.format.date)) return false;
			var date = value;
			if(date!="") {
				var dateParts = date.split("/");
				var day		= Number(dateParts[0]);
				var month = Number(dateParts[1]);
				var year	= Number(dateParts[2]);
				switch (month) {
					case 1: case 3: case 5: case 7: case 8: case 10: case 12:
						if (day<1 || day>31) return false;
						break;
					case 4: case 6: case 9: case 11:
						if (day<1 || day>30) return false;
						break;
					case 2:
						if (day<1 || day>29) return false;
						if (day==29 && (year/4)!=parseInt(year/4)) return false;
						break;
					default :
						return false;
				}
			}
			return true;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isTime : function(value/*String*/) /*Boolean*/ {
			value = value.trim();
			if(!hws.regExp.testFormat(value,hws.regExp.format.time)) return false;
			var time = value;
			if(time!="") {
				var timeParts = time.split(":");
				var hours		= Number(timeParts[0]);
				var minutes = Number(timeParts[1]);
				var seconds	= Number(timeParts[2]);
				if(hours<0 || hours>23) return false;
				if(minutes<0 || minutes>59) return false;
				if(seconds<0 || seconds>59) return false;
			}
			return true;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isDateTime : function(value/*String*/) /*Boolean*/ {
			value = value.trim();
			if(!hws.regExp.testFormat(value,hws.regExp.format.dateTime)) return false;
			value = hws.regExp.testFormat(value,hws.regExp.format.time) ? " "+value : value+" ";
			var dateTime = value.split(" ");
			var date = dateTime[0];
			var time = dateTime[1];
			if(dateTime[0]!="") {
				var dateParts = dateTime[0].split("/");
				var day		= Number(dateParts[0]);
				var month = Number(dateParts[1]);
				var year	= Number(dateParts[2]);
				switch (month) {
					case 1: case 3: case 5: case 7: case 8: case 10: case 12:
						if (day<1 || day>31) return false;
						break;
					case 4: case 6: case 9: case 11:
						if (day<1 || day>30) return false;
						break;
					case 2:
						if (day<1 || day>29) return false;
						if (day==29 && (year/4)!=parseInt(year/4)) return false;
						break;
					default :
						return false;
				}
			}
			if(dateTime[1]!="") {
				var timeParts = dateTime[1].split(":");
				var hours		= Number(timeParts[0]);
				var minutes = Number(timeParts[1]);
				var seconds	= Number(timeParts[2]);
				if(hours<0 || hours>23) return false;
				if(minutes<0 || minutes>59) return false;
				if(seconds<0 || seconds>59) return false;
			}
			return true;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isPhoneNumber : function(value/*String*/) /*Boolean*/ {
			return hws.regExp.testFormat(value.replace(/\s/gi,""), hws.regExp.format.phoneNumber);
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isColor : function(value/*String*/) /*Boolean*/ {
			return hws.regExp.testFormat(value.replace(/\s/gi,""), hws.regExp.format.color);
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isCoord : function(value/*String*/) /*Boolean*/ {
			var valueTemp = value.toUpperCase().replace(/\s/gi,"").replace(/,/,".");
			var result;
			var reg = new RegExp("^(\\-|\\+){0,1}\\d{1,3}((.|,)\\d+$)*$",'gi');
			result = reg.test(valueTemp);
			var reg = new RegExp("^\\d{1,3}(\\.|,)\\d+(N|S|E|W)$",'gi');
			result = result || reg.test(valueTemp);
			var reg = new RegExp("^\\d{1,3}(°|°)\\d{2}(\\.|,)\\d+(N|S|E|W)$",'gi');
			result = result || reg.test(valueTemp);
			var reg = new RegExp("^\\d{1,3}(°|°)\\d{2}'\\d{2}(''){0,1}(N|S|E|W)$",'gi');
			result = result || reg.test(valueTemp);
			var reg = new RegExp("^\\d{1,3}(°|°)\\d{2}'\\d{2}(\\.|,)\\d+(''){0,1}(N|S|E|W)$",'gi');
			result = result || reg.test(valueTemp);
			return result;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		isCoordNull : function(value/*String*/) /*Boolean*/ {
			return (value==null || value=="" || typeof(value)=="undefined" || hws.regExp.isCoord(value));
		}
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	},
	/* package /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	document : {
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		reload : function() {
			document.location.reload();
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getWidth : function() {
			return document.documentElement.scrollWidth || document.body.scrollWidth;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getHeight : function() {
			return document.documentElement.scrollHeight || document.body.scrollHeight;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		flashVarItem : function(name/*String*/, value/*String*/) {
			return {name:name, value:value};
		},
		/* Class /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		FlashCode : function(movie/*String*/, params/*Object{width:String|Number, height:String|Number, percent:Boolean, align:String}*/, flashVars/*Array{name:String, value:String}*/) {
			if(!params) var params = {};
			this.movie = movie.indexOf(".swf")>0 ? movie : "";
			this.id = params.id || Math.round(Math.random()*100000);
			this.width = params.width || "100%";
			this.height = params.height || "100%";
			this.percent = (typeof(params.percent)=="undefined"?false:params.percent);
			this.align = params.align || "center";
			this.bgColor = params.bgColor || "";
			this.flashVars = flashVars;
			this.HTML = "";
			this.objectHTML = "&nbsp;";
			this.swf = null;
			this.div = null;
			
			if(!hws.FlashCodeInitOK) {
				/* Initialisation des méthodes publiques................................................................................................................................................................................................................................................................................................................*/
				hws.document.FlashCode.prototype.addFlashVars = function(name/*String*/, value/*String*/) {
					if(!this.flashVars) this.flashVars = [];
					this.flashVars.push(hws.document.flashVarItem(name,value));
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.document.FlashCode.prototype.getSource = function(settings/*Object*/)/*String*/ {
					if(this.HTML=="") {
						var flashVarsConcat = "";
						if(!this.movie.isEmpty()) {
							if(this.flashVars) {
								for(var i=0;i<this.flashVars.length;i++) flashVarsConcat+= this.flashVars[i].name+"="+escape(this.flashVars[i].value) + (i<this.flashVars.length-1?"&":"");
							}
							this.HTMLembed = "<embed src=\""+this.movie+"\" width=\""+(this.percent?"100%":this.width)+"\" height=\""+(this.percent?"100%":this.height)+"\" name=\"swf"+this.id+"\" align=\""+this.align+"\" ";
							this.HTMLembed+= this.bgColor ? " bgcolor=\""+this.bgColor+"\" " : "wmode=\"transparent\"";
							this.HTMLembed+= " loop=\"false\" menu=\"false\" quality=\"high\" allowScriptAccess=\"sameDomain\" type=\"application/x-shockwave-flash\"";
							this.HTMLembed+= flashVarsConcat!="" ? " FlashVars=\""+flashVarsConcat+"\"" : "";
							this.HTMLembed+= " />";
							this.objectHTML = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\""+(this.percent?"100%":this.width)+"\" height=\""+(this.percent?"100%":this.height)+"\" id=\"swf"+this.id+"\" name=\"swf"+this.id+"\" align=\""+this.align+"\">";
							this.objectHTML+= "<param name=movie value=\""+this.movie+"\" />";
							this.objectHTML+= this.bgColor ? "<param name=bgcolor value='"+this.bgColor+"' />" : "<param name=\"wmode\" value=\"transparent\" />";
							this.objectHTML+= "<param name=allowScriptAccess value=sameDomain /><param name=loop value=false /><param name=menu value=false /><param name=quality value=high />";
							this.objectHTML+= flashVarsConcat!="" ? "<param name=\"FlashVars\" value=\""+flashVarsConcat+"\" />" : "";
							this.objectHTML+= this.HTMLembed;
							this.objectHTML+= "</object>";
						}
						this.HTML = "<div id=\"div"+this.id+"\" class=\"\" style=\"width:"+this.width+(params.width?"px":"")+";height:"+this.height+(params.height?"px":"")+";\">"+this.objectHTML+"</div>";
					}

					var source = this.HTML;
					if(settings) {
						if(settings.content) source = (settings.content=="swf" ? this.objectHTML : this.HTML);
						if(settings.className) source = source.replace("class=\"\"","class=\""+settings.className+"\"");
					}
					return source;
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.document.FlashCode.prototype.write = function(settings/*Object*/) {
					document.write(this.getSource(settings));
					this.swf = $("swf"+this.id);
					this.div = $("div"+this.id);
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.document.FlashCode.prototype.writeDiv = function() {
					this.write({content:"html"});
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.document.FlashCode.prototype.writeObject = function() {
					this.write({content:"swf"});
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.document.FlashCode.prototype.debug = function(settings/*Object*/) {
					var w = window.open();
					w.document.write(this.getSource(settings));
				}
				hws.FlashCodeInitOK = true;
			/* .......................................................................................................................................................................................................................................................................................................................................................*/
			};
		},
		/* Class /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		CountDown : function(Id/*String*/, milliSecToEvent/*Number*/, prefix/*String*/, translation/*Array of strings*/) {
			this.Id = Id;
			this.milliSecToEvent = milliSecToEvent || 0;
			this.prefix = prefix;
			this.translation = translation;
			this.HTML = "";
			this.seconds = 0;
			this.domObject = null;
			if(!hws.CountDownInitOK) {
				/* Initialisation des méthodes publiques................................................................................................................................................................................................................................................................................................................*/
				hws.document.CountDown.prototype.getSource = function()/*String*/ {
					if(this.HTML=="") {
						this.HTML = "<div id=\""+this.Id+"\"></div>";
					}
					var source = this.HTML;
					return source;
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.document.CountDown.prototype.write = function() {
					document.write(this.getSource());
					this.domObject = document.getElementById(this.Id);
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.document.CountDown.prototype.debug = function() {
					var w = window.open();
					w.document.write(this.getSource());
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.document.CountDown.prototype.start = function() {
					if(this.domObject) {
						this.count();
						setInterval(this.Id+".count();",1000);
					}
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.document.CountDown.prototype.count = function() {
					this.milliSecToEvent+=1000;
					var sign = this.milliSecToEvent>0 ? "+" : "-";
					var seconds = Math.round(Math.abs(this.milliSecToEvent)/1000);
					var days = Math.floor(seconds/3600/24); ;
					var hours = Math.floor((seconds-=days*3600*24)/3600);
					var minutes = Math.floor((seconds-=hours*3600)/60); 
					seconds-=minutes*60;
					this.domObject.innerHTML = this.prefix+" "+sign+" "+days+translation[0]+" "+(hours<10?"0":"")+hours+translation[1]+" "+(minutes<10?"0":"")+minutes+translation[2]+" "+(seconds<10?"0":"")+seconds+translation[3];
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.CountDownInitOK = true;
			/* .......................................................................................................................................................................................................................................................................................................................................................*/
			};
		}
		/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	},
	/* package /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	window : {
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getWidth : function() {
			return window.outerWidth || null;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getHeight : function() {
			return window.outerHeight || null;
		},
		/* Class /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		FenetrePopUp : function(URL/*String*/) {
			this.fenetre = null;
			this.nom = URL.split(".")[0].replace("/","_");
			this.url = URL;
			this.top = "10";
			this.left = "10";
			this.width = "100";
			this.height = "100";
			this.maxHeight = null;
			this.menu = false;
			this.location = false;
			this.scroll = false;
			this.autoSize = true;
			
			if(!hws.FenetrePopUpInitOK) {
				/* Initialisation des méthodes publiques................................................................................................................................................................................................................................................................................................................*/
				hws.window.FenetrePopUp.prototype.open = function(query/*String*/) {
					var urlComplete = this.url +(query?"?"+query:"");
					var params = "width="+this.width+",height="+this.height+",top="+this.top+",left="+this.left+",status=1,resizable=1"+(this.scroll?",scrollbars=1":"")+(this.location?",location=1":"")+(this.menu?",menubar=1":"");
					this.fenetre = window.open(urlComplete,this.nom,params);
					this.fenetre.focus();
				}
				hws.FenetrePopUpInitOK = true;
			/* .......................................................................................................................................................................................................................................................................................................................................................*/
			};
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		createPopup : function (varName,URL,params) {
			eval("window[\""+ varName +"\"] = new hws.window.FenetrePopUp(\""+URL+"\");");
			window[varName].nom = varName;
			if(params) {
				for(var param in params) {
					window[varName][param] = params[param];
				};
				if(params["width"] || params["height"]) window[varName]["autoSize"] = false;
			};
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		autoSize : function(maxHeight) {
			window.resizeTo(100,100);
			var realHeight = (maxHeight ? (Math.min(maxHeight,screen.availHeight-80)) : null);
			/*S'il est possible de récupérer la taille exterieure de la fenetre, on s'en sert*/
			if(hws.window.getHeight()) {
				window.resizeTo(hws.document.getWidth()+hws.window.elements.getWidth(),(realHeight?realHeight:hws.document.getHeight())+hws.window.elements.getHeight()+10);
			} else {
				window.resizeTo(hws.document.getWidth()+hws.window.elements.minWidth,(realHeight?realHeight:hws.document.getHeight()));
				if(!realHeight) realHeight=100000;
				window.resizeBy(0,Math.min(realHeight,hws.document.getHeight())-hws.window.viewport.getHeight());
			};
		},
		/* package //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		elements : {
			minWidth : 30,
			minHeight : 90,
			/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
			getWidth : function() {
				return Math.max(hws.window.elements.minWidth,hws.window.getWidth() - hws.window.viewport.getWidth());
			},
			/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
			getHeight : function() {
				return Math.max(0,hws.window.getHeight() - hws.window.viewport.getHeight());
			}
			/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		},
		/* package //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		viewport : {
			/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
			getWidth : function() {
				return window.innerWidth || document.documentElement.clientWidh || document.body.clientWidth;
			},
			/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
			getHeight : function() {
				return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
			}
			/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		resizeIFrame : function(domNode/*DOM Object*/) /*Number*/ {
			var dim = hws.dom.getDimensions(document.body);	
			var top = Number(hws.dom.getStyle(domNode,"top").replace("px",""));
			var bottom = Number(hws.dom.getStyle(domNode,"bottom").replace("px",""));
			var height = dim.height-top-bottom;
			domNode.style.height = (height)+"px";
			return height;
		}
		/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	},
	/* package /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	dom : {
		events : new Object(),
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		addEvent : function(object/*Object*/, eventName/*String*/, action/*Function*/) {
			if (eventName != 'unload') {
				function clean() {
					try {
						hws.dom.removeEvent(object, eventName, action);
						hws.dom.removeEvent(window, 'unload', clean);
					} catch (ex) {if(hws.debug) alert("Erreur hws.dom.addEvent");}
				}
				hws.dom.addEvent(window, 'unload', clean);
			}

			if (object.attachEvent) {
				object.attachEvent("on" + eventName, action);
			} else {
				object.addEventListener(eventName, action, false);
			}
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		removeEvent : function(object/*Object*/, eventName/*String*/, action/*Function*/) {
			if (object.detachEvent) {
				object.detachEvent("on" + eventName, action);
			} else {
				object.removeEventListener(eventName, action, false);
			}
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getDimensions : function(domNode/*DOM Object*/) /*Number*/ {
			var display = hws.dom.getStyle(domNode,"display");
			if (display != 'none' && display != null)
				return {width: domNode.offsetWidth, height: domNode.offsetHeight};

			var els = domNode.style;
			var originalVisibility = els.visibility;
			var originalPosition = els.position;
			var originalDisplay = els.display;
			els.visibility = 'hidden';
			els.position = 'absolute';
			els.display = 'block';
			var originalWidth = domNode.clientWidth;
			var originalHeight = domNode.clientHeight;
			els.display = originalDisplay;
			els.position = originalPosition;
			els.visibility = originalVisibility;
			return {width: originalWidth, height: originalHeight};
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getComputedStyle : 
		/*.........................................................................................................................................................................................................................................................................................................................................................*/
			hwsTempBrowser.safari ?
				function(domNode/*DOM Object*/) /*Object*/ {
					var style = document.defaultView.getComputedStyle(domNode, "");
					if(!style && domNode.style){ 
						domNode.style.display = ""; 
						style = document.defaultView.getComputedStyle(domNode, "");
					}
					return style || {};
				} :
		/*.........................................................................................................................................................................................................................................................................................................................................................*/
			hwsTempBrowser.ie ?
				function(domNode/*DOM Object*/) /*Object*/ {
					return domNode.currentStyle;
				} :
		/*.........................................................................................................................................................................................................................................................................................................................................................*/
				function(domNode/*DOM Object*/) /*Object*/ {
					return document.defaultView.getComputedStyle(domNode, "");
				}
		,
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getStyle :
			/*.........................................................................................................................................................................................................................................................................................................................................................*/
			hwsTempBrowser.ie ?
				function(domNode/*DOM Object*/, styleName/*String*/) /*String|Number*/ {
					styleName = (styleName == 'float' || styleName == 'cssFloat') ? 'styleFloat' : styleName.camelize();
					var value = domNode.style[styleName];
					if (!value && domNode.currentStyle) value = domNode.currentStyle[styleName];

					if (styleName == 'opacity') {
						if (value = ('filter' || '').match(/alpha\(opacity=(.*)\)/))
							if (value[1]) return parseFloat(value[1]) / 100;
						return 1.0;
					}
					if (value == 'auto') {
						if ((styleName == 'width' || styleName == 'height') && (domNode.getStyle('display') != 'none'))
							return domNode['offset' + styleName.capitalize()] + 'px';
						return null;
					}
					return value;
				} :
					/*.........................................................................................................................................................................................................................................................................................................................................................*/
				function(domNode/*DOM Object*/, styleName/*String*/) /*String|Number*/ {
					var value = domNode.style[styleName];
					if (!value) {
						var css = hws.dom.getComputedStyle(domNode);
						value=(css?css.getPropertyValue(styleName):null);
						value = document.defaultView.getComputedStyle(domNode, "").getPropertyValue(styleName);
					}
					if (styleName=='opacity') return (value?parseFloat(value):1.0);
					return (value=='auto'?null:value);
				},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getFrameDocument : function (idOrName/*String*/) /*DOM Object*/ {
			return hws.browser.ie ? document.frames[idOrName].document : $(idOrName).contentDocument;
		}
		/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	},
	/* package /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	form : {
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getSelectedValue : function(field/*DomObject*/) {
			var result = new Array();
			for(var i=0;i<field.options.length;i++) {
				var option = field.options[i];
				if(option.selected) result.push({value:option.value,text:option.text});
			}
			return result;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		getFieldValue : function(field/*DomObject*/) {
			if(!field) return null;
			if(typeof(field.value)!="undefined") return field.value;
			for(var i=0;i<field.length;i++) if(field[i].checked) return field[i].value;
			return null;
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		ChkItem : function(fieldName/*String*/, type/*String*/, message/*String*/) /*Object*/ {
			return {fieldName:fieldName, type:type, message:message};
		},
		/* function //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		ChkLnkItem : function(fieldNameRef/*String*/, testRef/*String*/, fieldNameLinked/*String*/, testLinked/*String*/, message/*String*/) /*Object*/ {
			return {fieldNameRef:fieldNameRef, testRef:testRef, fieldNameLinked:fieldNameLinked, testLinked:testLinked, message:message};
		},
		/* class /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		FieldManager : function(form/*DomFormObject*/, item/*Object{fieldName:String, type:String, message:String}*/) /*FieldManager*/ {
			this.form = form;
			this.name = item.fieldName;
			this.field = form[item.fieldName];
			this.type = item.type;
			this.message = item.message;
			if(!hws.FieldManagerInitOK) {
				/* Initialisation des méthodes publiques................................................................................................................................................................................................................................................................................................................*/
				hws.form.FieldManager.prototype.toString = function()/*String*/ {
					return this.type+":"+this.name;
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.form.FieldManager.prototype.alert = function(message) {
					hws.alert(message);
					try{this.field.focus()}catch(e){if(hws.debug) alert("Erreur hws.form.FieldManager.alert");};
					return false;
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.form.FieldManager.prototype.test = function() {
					var value = hws.form.getFieldValue(this.field);
					if(value==null || value.isEmpty()) return this.alert(this.message);
					if(this.type!="") {
						if(this.type=="password") {
							var pwd2 = this.form[this.name.substring(0,this.name.length-1)];
							if(pwd2) if(pwd2.value!=this.field.value) return this.alert(this.message);
						} else if(!hws.regExp["is"+this.type.capitalize()](value)) {
							return this.alert(hws.regExp.message[this.type]);
						}
					}
					return true;
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.FieldManagerInitOK = true;	
			}
		},
		/* class /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		//A revoir. Cette classe doit normalement étendre la classe FieldManager
		LinkedValuesManager : function(form/*DomFormObject*/, item/*Object{ChkLnkItem}*/) /*FieldManager*/ {
			this.form = form;
			this.fieldRef = form[item.fieldNameRef];
			this.testRef = item.testRef;
			this.fieldLinked = form[item.fieldNameLinked];
			this.testLinked = item.testLinked;
			this.message = item.message;
			if(!hws.LinkedValuesManagerInitOK) {
				/* Initialisation des méthodes publiques................................................................................................................................................................................................................................................................................................................*/
				hws.form.LinkedValuesManager.prototype.alert = function(message) {
					hws.alert(message);
					try{this.fieldLinked.focus()}catch(e){if(hws.debug) alert("Erreur hws.form.LinkedValuesManager.alert");};
					return false;
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.form.LinkedValuesManager.prototype.test = function() {
					var testNecessary = eval("'"+ hws.form.getFieldValue(this.fieldRef)+"'"+this.testRef);
					if(testNecessary) {
						var linkConditionOK = eval("'"+ hws.form.getFieldValue(this.fieldLinked)+"'"+this.testLinked);
						return linkConditionOK ? true : this.alert(this.message);
					}
					return true;
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.LinkedValuesManagerInitOK = true;	
			}	
			/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		},
		/* class /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
		FormManager : function(settings/*Object{formId:String|Object, submitDomNodeId:String|Object, [checkList:Array(Object{fieldName:String, test:String, message:String}), onBeforeSubmit:Function]}*/) /*FormManager*/ {
			this.settings = settings;
			this.buttonsContainer = null;
			this.onBeforeSubmit = (this.settings.onBeforeSubmit || function(){return true});
			function bindInit(object) {return function() {object.init()}};
			function bindSubmit(object) {return function() {object.submit()}};
			function bindDelete(object) {return function() {delete object}};
			if(!hws.FormManagerInitOK) {
				/* Initialisation des méthodes publiques................................................................................................................................................................................................................................................................................................................*/
				hws.form.FormManager.prototype.tostring = function() {
					return this.settings.formId;
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.form.FormManager.prototype.init = function() {
					this.form = this.settings.formId ? (typeof(this.settings.formId)=="string"? $(this.settings.formId) : this.settings.formId) : $("formEdit");
					this.button = this.settings.submitDomNodeId ? (typeof(this.settings.submitDomNodeId)=="string"? $(this.settings.submitDomNodeId) : this.settings.submitDomNodeId) : $("btEnr");
					this.buttonsContainer = this.button.parentNode;
					if(!this.form || !this.button) hws.alert("erreur : paramètres érronés pour l'initialisation du formulaire");
					this.button.onclick = bindSubmit(this);
					this.checkList = new Array();
					if(this.settings.checkList) {
						try {
							for(var i=0;i<this.settings.checkList.length;i++) this.checkList.push(new hws.form.FieldManager(this.form, this.settings.checkList[i]));
						} catch(e) {if(hws.debug) alert("Erreur hws.form.FieldManager.init : checkList");}
					}
					this.linkedValues = new Array();
					if(this.settings.linkedValues) {
						try {
							for(var i=0;i<this.settings.linkedValues.length;i++) this.linkedValues.push(new hws.form.LinkedValuesManager(this.form, this.settings.linkedValues[i]));
						} catch(e) {if(hws.debug) alert("Erreur hws.form.FieldManager.init : linkedValues");}
					}
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.form.FormManager.prototype.submit = function() {
					for(var i=0;i<this.checkList.length;i++) if(!this.checkList[i].test()) return false;
					for(var i=0;i<this.linkedValues.length;i++) if(!this.linkedValues[i].test()) return false;
					var result_onBeforeSubmit = this.onBeforeSubmit();
					if(typeof(result_onBeforeSubmit)!="boolean") hws.debugMessage("Erreur d'utilisation du composant FormManager :\nla fonction personnalisée onBeforeSubmit doir renvoyer une valeur booléenne.");
					if(result_onBeforeSubmit) {
						if(this.buttonsContainer) this.buttonsContainer.innerHTML="Enregistrement en cours...";
						this.form.submit();
					}
				}
				/* .......................................................................................................................................................................................................................................................................................................................................................*/
				hws.FormManagerInitOK = true;
			}
			hws.dom.addEvent(window, "load", bindInit(this));
			hws.dom.addEvent(window, "unload", bindDelete(this));
		}
		/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
	}
	/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
}

/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
function $(id) {
  return document.getElementById(id);
  //Particularité IE : s'il ne trouve pas le champ id, il cherche le champ name !!
}
/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
function $N(name) {
  return document.getElementsByName(name);
}
/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
function $T(tagName) {
  return document.getElementsByTagName(tagName);
}
/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/

delete hwsTempBrowser;
