var _strLanguageId = getUrlParameter("hs", "EN").toUpperCase();

if (document.implementation.hasFeature("XPath", "3.0"))
{
   if (typeof XMLDocument == "undefined")
   {
      XMLDocument = Document;
   }
   XMLDocument.prototype.selectNodes = function (cXPathString, xNode)
   {
      if ( ! xNode)
      {
         xNode = this;
      }
      var oNSResolver = this.createNSResolver(this.documentElement);
      var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
      var aResult = [];
      for (var i = 0; i < aItems.snapshotLength;
      i ++ )
      {
         aResult[i] = aItems.snapshotItem(i);
      }
      return aResult;
   }
   ;
   XMLDocument.prototype.selectSingleNode = function (cXPathString, xNode)
   {
      if ( ! xNode)
      {
         xNode = this;
      }
      var xItems = this.selectNodes(cXPathString, xNode);
      if (xItems.length > 0)
      {
         return xItems[0];
      }
      else
      {
         return null;
      }
   }
   ;
   Element.prototype.selectNodes = function (cXPathString)
   {
      if (this.ownerDocument.selectNodes)
      {
         return this.ownerDocument.selectNodes(cXPathString, this);
      }
      else
      {
         throw "For XML Elements Only";
      }
   }
   ;
   Element.prototype.selectSingleNode = function (cXPathString)
   {
      if (this.ownerDocument.selectSingleNode)
      {
         return this.ownerDocument.selectSingleNode(cXPathString, this);
      }
      else
      {
         throw "For XML Elements Only";
      }
   }
   ;
}
var hexcase = 0;
var b64pad = "";
var chrsz = 8;
function hex_md5(s)
{
   return binl2hex(core_md5(str2binl(s), s.length * chrsz));
}

function b64_md5(s)
{
   return binl2b64(core_md5(str2binl(s), s.length * chrsz));
}

function str_md5(s)
{
   return binl2str(core_md5(str2binl(s), s.length * chrsz));
}

function hex_hmac_md5(key, data)
{
   return binl2hex(core_hmac_md5(key, data));
}

function b64_hmac_md5(key, data)
{
   return binl2b64(core_hmac_md5(key, data));
}

function str_hmac_md5(key, data)
{
   return binl2str(core_hmac_md5(key, data));
}

function md5_vm_test()
{
   return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}

function core_md5(x, len)
{
   x[len >> 5] |= 128 << len % 32;
   x[(len + 64 >>> 9 << 4) + 14] = len;
   var a = 1732584193;
   var b = - 271733879;
   var c = - 1732584194;
   var d = 271733878;
   for (var i = 0; i < x.length; i += 16)
   {
      var olda = a;
      var oldb = b;
      var oldc = c;
      var oldd = d;
      a = md5_ff(a, b, c, d, x[i + 0], 7, - 680876936);
      d = md5_ff(d, a, b, c, x[i + 1], 12, - 389564586);
      c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
      b = md5_ff(b, c, d, a, x[i + 3], 22, - 1044525330);
      a = md5_ff(a, b, c, d, x[i + 4], 7, - 176418897);
      d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
      c = md5_ff(c, d, a, b, x[i + 6], 17, - 1473231341);
      b = md5_ff(b, c, d, a, x[i + 7], 22, - 45705983);
      a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
      d = md5_ff(d, a, b, c, x[i + 9], 12, - 1958414417);
      c = md5_ff(c, d, a, b, x[i + 10], 17, - 42063);
      b = md5_ff(b, c, d, a, x[i + 11], 22, - 1990404162);
      a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
      d = md5_ff(d, a, b, c, x[i + 13], 12, - 40341101);
      c = md5_ff(c, d, a, b, x[i + 14], 17, - 1502002290);
      b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
      a = md5_gg(a, b, c, d, x[i + 1], 5, - 165796510);
      d = md5_gg(d, a, b, c, x[i + 6], 9, - 1069501632);
      c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
      b = md5_gg(b, c, d, a, x[i + 0], 20, - 373897302);
      a = md5_gg(a, b, c, d, x[i + 5], 5, - 701558691);
      d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
      c = md5_gg(c, d, a, b, x[i + 15], 14, - 660478335);
      b = md5_gg(b, c, d, a, x[i + 4], 20, - 405537848);
      a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
      d = md5_gg(d, a, b, c, x[i + 14], 9, - 1019803690);
      c = md5_gg(c, d, a, b, x[i + 3], 14, - 187363961);
      b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
      a = md5_gg(a, b, c, d, x[i + 13], 5, - 1444681467);
      d = md5_gg(d, a, b, c, x[i + 2], 9, - 51403784);
      c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
      b = md5_gg(b, c, d, a, x[i + 12], 20, - 1926607734);
      a = md5_hh(a, b, c, d, x[i + 5], 4, - 378558);
      d = md5_hh(d, a, b, c, x[i + 8], 11, - 2022574463);
      c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
      b = md5_hh(b, c, d, a, x[i + 14], 23, - 35309556);
      a = md5_hh(a, b, c, d, x[i + 1], 4, - 1530992060);
      d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
      c = md5_hh(c, d, a, b, x[i + 7], 16, - 155497632);
      b = md5_hh(b, c, d, a, x[i + 10], 23, - 1094730640);
      a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
      d = md5_hh(d, a, b, c, x[i + 0], 11, - 358537222);
      c = md5_hh(c, d, a, b, x[i + 3], 16, - 722521979);
      b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
      a = md5_hh(a, b, c, d, x[i + 9], 4, - 640364487);
      d = md5_hh(d, a, b, c, x[i + 12], 11, - 421815835);
      c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
      b = md5_hh(b, c, d, a, x[i + 2], 23, - 995338651);
      a = md5_ii(a, b, c, d, x[i + 0], 6, - 198630844);
      d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
      c = md5_ii(c, d, a, b, x[i + 14], 15, - 1416354905);
      b = md5_ii(b, c, d, a, x[i + 5], 21, - 57434055);
      a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
      d = md5_ii(d, a, b, c, x[i + 3], 10, - 1894986606);
      c = md5_ii(c, d, a, b, x[i + 10], 15, - 1051523);
      b = md5_ii(b, c, d, a, x[i + 1], 21, - 2054922799);
      a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
      d = md5_ii(d, a, b, c, x[i + 15], 10, - 30611744);
      c = md5_ii(c, d, a, b, x[i + 6], 15, - 1560198380);
      b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
      a = md5_ii(a, b, c, d, x[i + 4], 6, - 145523070);
      d = md5_ii(d, a, b, c, x[i + 11], 10, - 1120210379);
      c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
      b = md5_ii(b, c, d, a, x[i + 9], 21, - 343485551);
      a = safe_add(a, olda);
      b = safe_add(b, oldb);
      c = safe_add(c, oldc);
      d = safe_add(d, oldd);
   }
   return Array(a, b, c, d);
}

function md5_cmn(q, a, b, x, s, t)
{
   return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
}

function md5_ff(a, b, c, d, x, s, t)
{
   return md5_cmn(b & c | ~ b & d, a, b, x, s, t);
}

function md5_gg(a, b, c, d, x, s, t)
{
   return md5_cmn(b & d | c & ~ d, a, b, x, s, t);
}

function md5_hh(a, b, c, d, x, s, t)
{
   return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}

function md5_ii(a, b, c, d, x, s, t)
{
   return md5_cmn(c ^ (b | ~ d), a, b, x, s, t);
}

function core_hmac_md5(key, data)
{
   var bkey = str2binl(key);
   if (bkey.length > 16)
   {
      bkey = core_md5(bkey, key.length * chrsz);
   }
   var ipad = Array(16), opad = Array(16);
   for (var i = 0; i < 16; i ++ )
   {
      ipad[i] = bkey[i] ^ 909522486;
      opad[i] = bkey[i] ^ 1549556828;
   }
   var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
   return core_md5(opad.concat(hash), 640);
}

function safe_add(x, y)
{
   var lsw = (x & 65535) + (y & 65535);
   var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
   return msw << 16 | lsw & 65535;
}

function bit_rol(num, cnt)
{
   return num << cnt | num >>> 32 - cnt;
}

function str2binl(str)
{
   var bin = Array();
   var mask = (1 << chrsz) - 1;
   for (var i = 0; i < str.length * chrsz; i += chrsz)
   {
      bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << i % 32;
   }
   return bin;
}

function binl2str(bin)
{
   var str = "";
   var mask = (1 << chrsz) - 1;
   for (var i = 0; i < bin.length * 32; i += chrsz)
   {
      str += String.fromCharCode(bin[i >> 5] >>> i % 32 & mask);
   }
   return str;
}

function binl2hex(binarray)
{
   var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
   var str = "";
   for (var i = 0; i < binarray.length * 4; i ++ )
   {
      str += hex_tab.charAt(binarray[i >> 2] >> i % 4 * 8 + 4 & 15) + hex_tab.charAt(binarray[i >> 2] >> i % 4 * 8 & 15);
   }
   return str;
}

function binl2b64(binarray)
{
   var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
   var str = "";
   for (var i = 0; i < binarray.length * 4; i += 3)
   {
      var triplet = (binarray[i >> 2] >> 8 * (i % 4) & 255) << 16 | (binarray[i + 1 >> 2] >> 8 * ((i + 1) % 4) & 255) << 8 | binarray[i + 2 >> 2] >> 8 * ((i + 2) % 4) & 255;
      for (var j = 0; j < 4; j ++ )
      {
         if (i * 8 + j * 6 > binarray.length * 32)
         {
            str += b64pad;
         }
         else
         {
            str += tab.charAt(triplet >> 6 * (3 - j) & 63);
         }
      }
   }
   return str;
}
if (typeof deconcept == "undefined")
{
   var deconcept = new Object;
}
if (typeof deconcept.util == "undefined")
{
   deconcept.util = new Object;
}
if (typeof deconcept.SWFObjectUtil == "undefined")
{
   deconcept.SWFObjectUtil = new Object;
}
deconcept.SWFObject = function (_1, id, w, h, _5, c, _7, _8, _9, _a)
{
   if ( ! document.getElementById)
   {
      return;
   }
   this.DETECT_KEY = _a ? _a : "detectflash";
   this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
   this.params = new Object;
   this.variables = new Object;
   this.attributes = new Array;
   if (_1)
   {
      this.setAttribute("swf", _1);
   }
   if (id)
   {
      this.setAttribute("id", id);
   }
   if (w)
   {
      this.setAttribute("width", w);
   }
   if (h)
   {
      this.setAttribute("height", h);
   }
   if (_5)
   {
      this.setAttribute("version", new deconcept.PlayerVersion(_5.toString().split(".")));
   }
   this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion();
   if ( ! window.opera && document.all && this.installedVer.major > 7)
   {
      deconcept.SWFObject.doPrepUnload = true;
   }
   if (c)
   {
      this.addParam("bgcolor", c);
   }
   var q = _7 ? _7 : "high";
   this.addParam("quality", q);
   this.setAttribute("useExpressInstall", false);
   this.setAttribute("doExpressInstall", false);
   var _c = _8 ? _8 : window.location;
   this.setAttribute("xiRedirectUrl", _c);
   this.setAttribute("redirectUrl", "");
   if (_9)
   {
      this.setAttribute("redirectUrl", _9);
   }
}
;
deconcept.SWFObject.prototype =
{
   useExpressInstall : function (_d)
   {
      this.xiSWFPath = ! _d ? "expressinstall.swf" : _d;
      this.setAttribute("useExpressInstall", true);
   }
   , setAttribute : function (_e, _f)
   {
      this.attributes[_e] = _f;
   }
   , getAttribute : function (_10)
   {
      return this.attributes[_10];
   }
   , addParam : function (_11, _12)
   {
      this.params[_11] = _12;
   }
   , getParams : function ()
   {
      return this.params;
   }
   , addVariable : function (_13, _14)
   {
      this.variables[_13] = _14;
   }
   , getVariable : function (_15)
   {
      return this.variables[_15];
   }
   , getVariables : function ()
   {
      return this.variables;
   }
   , getVariablePairs : function ()
   {
      var _16 = new Array;
      var key;
      var _18 = this.getVariables();
      for (key in _18)
      {
         _16[_16.length] = key + "=" + _18[key];
      }
      return _16;
   }
   , getSWFHTML : function ()
   {
      var _19 = "";
      if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length)
      {
         if (this.getAttribute("doExpressInstall"))
         {
            this.addVariable("MMplayerType", "PlugIn");
            this.setAttribute("swf", this.xiSWFPath);
         }
         _19 = "<embed type=\"application / x - shockwave - flash\" src=\"" + this.getAttribute("swf") + "\" width=\"" + this.getAttribute("width") + "\" height=\"" + this.getAttribute("height") + "\" style=\"" + this.getAttribute("style") + "\"";
         _19 += " id=\"" + this.getAttribute("id") + "\" name=\"" + this.getAttribute("id") + "\" ";
         var _1a = this.getParams();
         for (var key in _1a)
         {
            _19 += [key] + "=\"" + _1a[key] + "\" ";
         }
         var _1c = this.getVariablePairs().join("&");
         if (_1c.length > 0)
         {
            _19 += "flashvars=\"" + _1c + "\"";
         }
         _19 += "/>";
      }
      else
      {
         if (this.getAttribute("doExpressInstall"))
         {
            this.addVariable("MMplayerType", "ActiveX");
            this.setAttribute("swf", this.xiSWFPath);
         }
         _19 = "<object id=\"" + this.getAttribute("id") + "\" classid=\"clsid : D27CDB6E - AE6D - 11cf - 96B8 - 444553540000\" width=\"" + this.getAttribute("width") + "\" height=\"" + this.getAttribute("height") + "\" style=\"" + this.getAttribute("style") + "\">";
         _19 += "<param name=\"movie\" value=\"" + this.getAttribute("swf") + "\" />";
         var _1d = this.getParams();
         for (var key in _1d)
         {
            _19 += "<param name=\"" + key + "\" value=\"" + _1d[key] + "\" />";
         }
         var _1f = this.getVariablePairs().join("&");
         if (_1f.length > 0)
         {
            _19 += "<param name=\"flashvars\" value=\"" + _1f + "\" />";
         }
         _19 += "</object>";
      }
      return _19;
   }
   , write : function (_20)
   {
      if (this.getAttribute("useExpressInstall"))
      {
         var _21 = new deconcept.PlayerVersion([6, 0, 65]);
         if (this.installedVer.versionIsValid(_21) && ! this.installedVer.versionIsValid(this.getAttribute("version")))
         {
            this.setAttribute("doExpressInstall", true);
            this.addVariable("MMredirectURL", escape(this.getAttribute("xiRedirectUrl")));
            document.title = document.title.slice(0, 47) + " - Flash Player Installation";
            this.addVariable("MMdoctitle", document.title);
         }
      }
      if (this.skipDetect || this.getAttribute("doExpressInstall") || this.installedVer.versionIsValid(this.getAttribute("version")))
      {
         var n = typeof _20 == "string" ? document.getElementById(_20) : _20;
         n.innerHTML = this.getSWFHTML();
         return true;
      }
      else
      {
         if (this.getAttribute("redirectUrl") != "")
         {
            document.location.replace(this.getAttribute("redirectUrl"));
         }
      }
      return false;
   }
}
;
deconcept.SWFObjectUtil.getPlayerVersion = function ()
{
   var _23 = new deconcept.PlayerVersion([0, 0, 0]);
   if (navigator.plugins && navigator.mimeTypes.length)
   {
      var x = navigator.plugins['Shockwave Flash'];
      if (x && x.description)
      {
         _23 = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
      }
   }
   else
   {
      if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0)
      {
         var axo = 1;
         var _26 = 3;
         while (axo)
         {
            try
            {
               _26 ++ ;
               axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + _26);
               _23 = new deconcept.PlayerVersion([_26, 0, 0]);
            }
            catch (e)
            {
               axo = null;
            }
         }
      }
      else
      {
         try
         {
            var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
         }
         catch (e)
         {
            try
            {
               var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
               _23 = new deconcept.PlayerVersion([6, 0, 21]);
               axo.AllowScriptAccess = "always";
            }
            catch (e)
            {
               if (_23.major == 6)
               {
                  return _23;
               }
            }
            try
            {
               axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
            }
            catch (e)
            {
            }
         }
         if (axo != null)
         {
            _23 = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
         }
      }
   }
   return _23;
}
;
deconcept.PlayerVersion = function (_29)
{
   this.major = _29[0] != null ? parseInt(_29[0]) : 0;
   this.minor = _29[1] != null ? parseInt(_29[1]) : 0;
   this.rev = _29[2] != null ? parseInt(_29[2]) : 0;
}
;
deconcept.PlayerVersion.prototype.versionIsValid = function (fv)
{
   if (this.major < fv.major)
   {
      return false;
   }
   if (this.major > fv.major)
   {
      return true;
   }
   if (this.minor < fv.minor)
   {
      return false;
   }
   if (this.minor > fv.minor)
   {
      return true;
   }
   if (this.rev < fv.rev)
   {
      return false;
   }
   return true;
}
;
deconcept.util =
{
   getRequestParameter : function (_2b)
   {
      var q = document.location.search || document.location.hash;
      if (_2b == null)
      {
         return q;
      }
      if (q)
      {
         var _2d = q.substring(1).split("&");
         for (var i = 0; i < _2d.length; i ++ )
         {
            if (_2d[i].substring(0, _2d[i].indexOf("=")) == _2b)
            {
               return _2d[i].substring(_2d[i].indexOf("=") + 1);
            }
         }
      }
      return "";
   }
}
;
deconcept.SWFObjectUtil.cleanupSWFs = function ()
{
   var _2f = document.getElementsByTagName("OBJECT");
   for (var i = _2f.length - 1; i >= 0; i -- )
   {
      _2f[i].style.display = "none";
      for (var x in _2f[i])
      {
         if (typeof _2f[i][x] == "function")
         {
            _2f[i][x] = function ()
            {
            }
            ;
         }
      }
   }
}
;
if (deconcept.SWFObject.doPrepUnload)
{
   if ( ! deconcept.unloadSet)
   {
      deconcept.SWFObjectUtil.prepUnload = function ()
      {
         __flash_unloadHandler = function ()
         {
         }
         ;
         __flash_savedUnloadHandler = function ()
         {
         }
         ;
         window.attachEvent("onunload", deconcept.SWFObjectUtil.cleanupSWFs);
      }
      ;
      window.attachEvent("onbeforeunload", deconcept.SWFObjectUtil.prepUnload);
      deconcept.unloadSet = true;
   }
}
if ( ! document.getElementById && document.all)
{
   document.getElementById = function (id)
   {
      return document.all[id];
   }
   ;
}
var getQueryParamValue = deconcept.util.getRequestParameter;
var FlashObject = deconcept.SWFObject;
var SWFObject = deconcept.SWFObject;
function SWFMacMouseWheel(swfObject)
{
   this.so = swfObject;
   var isMac = navigator.appVersion.toLowerCase().indexOf("mac") != - 1;
   if (isMac)
   {
      this.init();
   }
}
SWFMacMouseWheel.prototype =
{
   init : function ()
   {
      SWFMacMouseWheel.instance = this;
      if (window.addEventListener)
      {
         window.addEventListener("DOMMouseScroll", SWFMacMouseWheel.instance.wheel, false);
      }
      window.onmousewheel = document.onmousewheel = SWFMacMouseWheel.instance.wheel;
   }
   , handle : function (delta)
   {
      document[this.so.getAttribute("id")].externalMouseEvent(delta);
   }
   , wheel : function (event)
   {
      var delta = 0;
      if (event.wheelDelta)
      {
         delta = event.wheelDelta / 120;
         if (window.opera)
         {
            delta = - delta;
         }
      }
      else if (event.detail)
      {
         delta = - event.detail;
      }
      if (delta)
      {
         SWFMacMouseWheel.instance.handle(delta);
      }
      if (event.preventDefault)
      {
         event.preventDefault();
      }
      event.returnValue = false;
   }
}
;
//implémente des fonctionnalités XPath pour les navigateurs ne les proposant pas
if (document.implementation.hasFeature("XPath", "3.0")) {
    if (typeof XMLDocument == "undefined") {
        XMLDocument = Document;
    }
    XMLDocument.prototype.selectNodes = function (cXPathString, xNode) {
        if (!xNode) {
            xNode = this;
        }
        var oNSResolver = this.createNSResolver(this.documentElement);
        var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
        var aResult = [];
        for (var i = 0; i < aItems.snapshotLength;
      i++) {
            aResult[i] = aItems.snapshotItem(i);
        }
        return aResult;
    }
   ;
    XMLDocument.prototype.selectSingleNode = function (cXPathString, xNode) {
        if (!xNode) {
            xNode = this;
        }
        var xItems = this.selectNodes(cXPathString, xNode);
        if (xItems.length > 0) {
            return xItems[0];
        }
        else {
            return null;
        }
    }
   ;
    Element.prototype.selectNodes = function (cXPathString) {
        if (this.ownerDocument.selectNodes) {
            return this.ownerDocument.selectNodes(cXPathString, this);
        }
        else {
            throw "For XML Elements Only";
        }
    }
   ;
    Element.prototype.selectSingleNode = function (cXPathString) {
        if (this.ownerDocument.selectSingleNode) {
            return this.ownerDocument.selectSingleNode(cXPathString, this);
        }
        else {
            throw "For XML Elements Only";
        }
    }
   ;
}

var _arrImages = new Array();
window.attachEvent('onresize', resizeScreen); // window.onresize = resizeScreen();

//comment
function debug(message) {
    //alert(message);
}

//formate un montant en euro;
function formatAmount(amount) {
    var iAmount = parseInt(amount, 10)
    var strAmount = iAmount + "";
    if (iAmount < 1000)
        return strAmount + " &euro;"
    else if (iAmount < 10000)
        return strAmount.substring(0, 1) + " " + strAmount.substring(1) + " &euro;";
    else if (iAmount < 100000)
        return strAmount.substring(0, 2) + " " + strAmount.substring(2) + " &euro;";
    else if (iAmount < 1000000)
        return strAmount.substring(0, 3) + " " + strAmount.substring(3) + " &euro;";
    else if (iAmount < 10000000)
        return strAmount.substring(0, 1) + " " + strAmount.substring(1, 4) + " " + strAmount.substring(4) + " &euro;";
}

//renvoie le texte de l'item selectionné
function getSelectedItemText(selectObjectId) {
    var selectObject = getHtmlObject(selectObjectId);
    return selectObject.options[selectObject.selectedIndex].text;
}

//renvoie la valeur de l'item selectionné
function getSelectedItemValue(selectObjectId) {
    var selectObject = getHtmlObject(selectObjectId);
    return selectObject.options[selectObject.selectedIndex].value;
}

//renvoie l'objet en fonction de son identifiant
function getHtmlObject(value) {
    if (value.id + "" != "undefined") {
        return value;
    }
    if (window.XMLHttpRequest) {
        return document.getElementById(value);
    }
    else if (window.ActiveXObject) {
        return document.all[value];
    }
    return value;
}

//renvoie la valeur de l'objet en fonction de son identifiant et de sa classe
function getHtmlObjectValue(value) {
    try {
        var htmlObject = getHtmlObject(value);
        var strClassName = (htmlObject + "").toUpperCase();
        var objValue;
        if (strClassName == "[OBJECT HTMLSELECTELEMENT]")
            objValue = htmlObject.options[htmlObject.selectedIndex].value;
        else if ((strClassName == "[OBJECT HTMLINPUTELEMENT]" && isDefined(htmlObject.type) && htmlObject.type.toUpperCase() == "TEXT") || strClassName == "[OBJECT HTMLTEXTAREAELEMENT]")
            objValue = htmlObject.value;
        else
            objValue = htmlObject.checked;
        return objValue;
    }
    catch (ex) {
        //alert("getHtmlObjectValue " + ex.name + "\n" + value);
    }
}

function getIndexByKey(keyValue, array, keyName) {
    if (!isDefined(keyName)) {
        keyName = "getId()";
    }
    for (var i = 0; i < array.length; i++) {
        if (eval("array[i]." + keyName) == keyValue) {
            return i;
        }
    }
    return -1;
}

function getKeyByIndex(index, array, keyName) {
    if (isDefined(keyName)) {
        keyName = "getId()";
    }
    return eval("array[index]." + keyName);
}

//renvoie un objet dans un tableau à partir de sa clé
function getObjectByKey(keyValue, array, keyName) {
    if (!isDefined(keyName)) {
        keyName = "getId()";
    }
    for (var i = 0; i < array.length; i++) {
        if (eval("array[i]." + keyName) == keyValue) {
            return array[i];
        }
    }
    return null;
}

//renvoie la valeur d'un paramètre GET en fonction de son nom
function getUrlParameter(name, defaultValue) {
   name = name.toUpperCase();
   var arParams = document.location.search.substring(1).split("&");
   for (var i = 0; i < arParams.length; i++) {
      var arNameValue = arParams[i].split("=");
      if (arNameValue[0].toUpperCase() == name) {
         return arNameValue[1];
      }
   }
   return defaultValue;
}

//renvoie la largeur de la fenêtre
function getWindowHeight() {
    if (self.innerHeight) {
        return self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight) {
        return document.documentElement.clientHeight;
    }
    else if (document.body) {
        return document.body.clientHeight;
    }
    else {
        return -1;
    }
}

//renvoie la hauteur de la fenêtre
function getWindowWidth() {
    if (self.innerWidth) {
        return self.innerWidth;
    }
    else if (document.documentElement && document.documentElement.clientWidth) {
        return document.documentElement.clientWidth;
    }
    else if (document.body) {
        return document.body.clientWidth;
    }
    else {
        return -1;
    }
}

//renvoie l'objet XMLHttp
function getXmlHttp() {
    var xhr = null;
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest;
    }
    else if (window.ActiveXObject) {
        try {
            xhr = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (ex) {
            try {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (ex2) {
                xhr = null;
            }
        }
    }
    else {
        alert("Your browser is not supported.");
    }
    return xhr;
}

//renvoie un noeud XML depuis une chaine XML
function getXmlNodeFromString(value) {
    if (window.ActiveXObject) {
        var docXml = new ActiveXObject("MSXML2.DOMDocument.3.0");
        docXml.async = false;
        docXml.loadXML(value);
        return docXml.documentElement;
    }
    else {
        var parser = new DOMParser;
        return parser.parseFromString(value, "text/xml").documentElement;
    }
}

//renvoie un noeud XML depuis une URL
function getXmlNodeFromUrl(url, callback, sendMethod, sendValue) {
    try {
        var bAsync = isDefined(callback);
        var xmlResponse = getXmlHttp();
        if (xmlResponse && xmlResponse.readyState != 0)
            xmlResponse.abort();
        if (bAsync) {
            xmlResponse.onreadystatechange = function () {
                if (xmlResponse.readyState == 4 && xmlResponse.responseText) {
                    if (xmlResponse.responseText.substring(1, 6) == "Error") {
                        alert(xmlResponse.responseText.substring(16, xmlResponse.responseText.length - 3));
                        return;
                    }
                    var xmlNode = getXmlNodeFromString(xmlResponse.responseText);
                    if (callback.indexOf("(") == -1)
                        eval(callback + "(xmlNode)");
                    else
                        eval(callback);
                    return;
                }
            }
        }
        sendMethod = isDefined(sendMethod) ? sendMethod : "GET";
        if (sendMethod.toUpperCase() == "GET")
            xmlResponse.open("GET", url + "&" + sendValue, bAsync);
        else {
            xmlResponse.open("POST", url, false);
            xmlResponse.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        }
        xmlResponse.send(sendValue);
        if (!bAsync) {
            if (xmlResponse.responseText.substring(1, 6) == "Error") {
                alert(xmlResponse.responseText.substring(16, xmlResponse.responseText.length - 3));
                return;
            }
            var xmlNode = getXmlNodeFromString(xmlResponse.responseText);
            return xmlNode;
        }
    }
    catch (ex) {
        alert("getXmlNodeFromUrl " + url + " " + ex.name + " " + ex.number);
    }
}

//cache l'objet HTML depuis son identifiant
function hideHtmlObject(objectId) {
    var obj = getHtmlObject(objectId);
    if (isDefined(obj))
        obj.style.display = "none";
}

//l'objet est-il défini?
function isDefined(value) {
    try {
        value += "";
        return value == "" || value == "null" || value == "undefined" ? false : true;
    }
    catch (ex) {
        return false;
    }
}

//est-ce que l'email est valide?
function isEmailValid(email, mandatory){
    if(!mandatory && !isDefined(email))
        return true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return filter.test(email);
}

//est-on dans l'Espcace Adhérent?
function isInLoggedEspace() {
    return (document.location + "").indexOf("EspaceAdherent") > 1;
}

//peuple un objet select
function populateSelectObject(selectObjectId, array, textEval, valueEval, defaultValue) {
    var selectObject = getHtmlObject(selectObjectId);
    selectObject.options.length = 0;
    for (var i = 0; i < array.length; i++) {
        var obj = array[i];
        selectObject.options[selectObject.options.length] = new Option(eval(textEval), eval(valueEval));
    }
    if (isDefined(defaultValue))
        selectObjectItem(selectObjectId, defaultValue);
}

//charge les images (notamment pour les over)
function preloadImages() {
    for (i = 0; i < preloadImages.arguments.length; i++) {
        _arrImages[i] = new Image()
        _arrImages[i].src = preloadImages.arguments[i]
    }
}

//lorsqu'il y a redimensionnement du site
function resizeScreen() {
    try {return;
        getHtmlObject("divPage").style.width = 1050;
        getHtmlObject("divPage").style.left = (getWindowWidth() - 1050) / 2;
    }
    catch (ex) {
    }
}

//sélectionne un élément dans un objet
function selectObjectItem(selectObjectId, value) {
    var selectObject = getHtmlObject(selectObjectId);
    for (var i = 0; i < selectObject.options.length; i++) {
        if (selectObject.options[i].value == value) {
            selectObject.selectedIndex = i;
            return;
        }
    }
}

//renvoie la valeur de l'objet en fonction de son identifiant et de sa classe
function setHtmlObjectValue(objectId, value) {
    try {
        
        var htmlObject = getHtmlObject(objectId);
        var strClassName = (htmlObject + "").toUpperCase();
        //alert("setHtmlObjectValue" + "\nclass: " + strClassName + "\ntype" + htmlObject.type.toUpperCase() + "\nID: " + objectId + "\nvalue: " + value);
        var objValue;
        if (strClassName == "[OBJECT HTMLSELECTELEMENT]")
            selectObjectItem(objectId, value);
        else if ((strClassName == "[OBJECT HTMLINPUTELEMENT]" && isDefined(htmlObject.type) && htmlObject.type.toUpperCase() == "TEXT") || strClassName == "[OBJECT HTMLTEXTAREAELEMENT]")
            htmlObject.value = value;
        else
            htmlObject.checked = ((value + "") == "1" || (value + "").toUpperCase() == "TRUE") ? true : false;
            
    }
    catch (ex) {
        //alert("setHtmlObjectValue " + ex.name + "\n" + objectId + "\n" + value);
    }
}

//met à jour un objet dans un tableau par rapport à sa clé
function setObjectToArray(object, array, keyName) {
    if (!isDefined(keyName)) {
        keyName = "getId()";
    }
    var oKeyValue = eval("object." + keyName) + "";
    if (oKeyValue == "undefined") {
        array[array.length] = object;
    }
    else {
        var i = getIndexByKey(oKeyValue, array, keyName);
        if (i == -1) {
            array[array.length] = object;
        }
        else {
            array[i] = object;
        }
    }
    return array;
}


//montre l'objet HTML depuis son identifiant
function showHtmlObject(objectId) {
    var obj = getHtmlObject(objectId);
    if(isDefined(obj))
        obj.style.display = "block";
}

//quand un problème se pose
function showModalError(message) {
    var $dialog = $("<div title =\"" + "Erreu" + "\"></div>")
			.html(message)
			.dialog({
			    autoOpen: true,
			    modal: true,
			    show: "scale",
			    hide: "fade"
			});
    $dialog.dialog();
}

//quand y'en a pas
function showModalSuccess(message) {
    var $dialog = $("<div title =\"" + "Opération réussie" + "\"></div>")
			.html(message)
			.dialog({
			    autoOpen: true,
			    modal: true,
			    show: "scale",
			    hide: "fade"
			});
    $dialog.dialog();
}

//ouvre l'équivalent d'une alerte;
function showModalMessage(message, title) {
    title = isDefined(title) ? title : "Information";
    var $dialog = $("<div title =\"" + title  + "\"></div>")
			.html(message)
			.dialog({
			    autoOpen: true,
                modal: true,
                show: "scale",
                hide: "fade"
			});
    $dialog.dialog();
}

function toggleObject(objectId) {
    try {
        $("#" + objectId).slideToggle("fast");
        //sourceObject.className = sourceObject.className == "encasMoreCollapsed" ? "encasMoreOpened" : "encasMoreCollapsed";
    }
    catch (ex) {
    }
}

///////////////////////////////NameValue///////////////////////////////

function NameValue(name, value, type) {
    this._strName = name;
    this._oValue = value;
    this.getName = ProxyParameter_getName;
    this.getValue = NameValue_getValue;
}

function ProxyParameter_getName() {
    return this._strName;
}

function NameValue_getValue() {
    return this._oValue;
}

///////////////////////////////ProxyResponse///////////////////////////////

function ProxyResponse(){
    this._bIsOk = false;
    this._strMessage = "";
    this._xmlNode;
    this.getMessage = ProxyResponse_getMessage; 
    this.getXmlNode = ProxyResponse_getXmlNode; 
    this.isValid = ProxyResponse_isValid;
}

function ProxyResponse_isValid(){
    return this._bIsOk;
}

function ProxyResponse_getMessage(){
    return this._strMessage;
}

function ProxyResponse_getXmlNode() {
    return this._xmlNode;
}

function ProxyResponse_getResult(name) {
    for (var i = 0; i < this._arrResults.length; i++) {
        var result = this._arrResults[i];
        if (result.getName() == name)
            return result.getValue();
    }
    return null;
}

///////////////////////////////ProxyPostRequest///////////////////////////////

function ProxyPostRequest(url) {
    this._strUrl = url;
    this._arrParameters = new Array();
    this.addParameter = ProxyPostRequest_addParameter; 
    this.getUrl = ProxyPostRequest_getUrl;
    this.getListOfParameter = ProxyPostRequest_getListOfParameter;
    this.getListOfParameterStringValue = ProxyPostRequest_getListOfParameterStringValue;
    this.getResponse = ProxyPostRequest_getResponse;
}

function ProxyPostRequest_addParameter(name, value, type) {
    this._arrParameters[this._arrParameters.length] = new NameValue(name, value);
}

function ProxyPostRequest_getUrl() {
    return this._strUrl;
}

function ProxyPostRequest_getListOfParameter() {
    return _arrParameters;
}

function ProxyPostRequest_getListOfParameterStringValue() {
    var strValue = "";
    for (var i = 0; i < this._arrParameters.length; i++) {
        var parameter = this._arrParameters[i];
        strValue += parameter.getName() + "=" + parameter.getValue() + "&";
    }
    strValue = strValue.substring(0, strValue.length -1);
    return strValue;
}

function ProxyPostRequest_getResponse(callback, method) {
    debug("ProxyPostRequest_getResponse\n" + callback);
    getXmlNodeFromUrl(this.getUrl(),
    "ProxyPostRequest_onGetResponse(xmlNode, '" + callback + "')", 
    isDefined(method) ? method : "POST", 
	this.getListOfParameterStringValue());
}

function ProxyPostRequest_onGetResponse(xmlNode, callback) {
    debug("ProxyPostRequest_onGetResponse\n" + xmlNode + "\n" + callback);
    var response = new ProxyResponse();
    response._bIsOk = xmlNode.nodeName.toUpperCase() != "OK";
    if( response.isValid())
        response._xmlNode = xmlNode;
    else
        response._strMessage = xmlNode.firstChild.nodeValue.substring(3);
    eval(callback + "(response);");
}

function fillListOfFromXml(xmlNode, callback) {
    var nl = xmlNode.selectNodes("//*");
    for (var i = 0; i < nl.length; i++) {
        var xml = nl[i];
        try {
            eval("var obj = new " + xml.nodeName + ";");
            var obj = fillFromXml(obj, xml);
            var array = setObjectToArray(obj, eval("_arrListOf" + xml.nodeName), "getId()");
        }
        catch (ex) {
            //alert(ex.message);
        }
    }
}

function fillFromXml(targetObject, xmlNode) {
    for (var i = 0; i < xmlNode.attributes.length; i++) {
        var at = xmlNode.attributes[i];
        if(at.nodeName.indexOf(":") == -1)
            eval("targetObject." + at.nodeName + "= at.nodeValue;");
    }
    return targetObject;
}

function fillListOfFromXml2(xmlNode, callback) {
	var nl = xmlNode.selectNodes("/*/*");
	for (var i = 0; i < nl.length; i++) {
		var xml = nl[i];
		try {
			var strObjectNameValue = getObjectNameValue(xml.nodeName, true);
			eval("var obj = new " + strObjectNameValue  + ";");
			var obj = fillFromXml2(obj, xml);
			var array = setObjectToArray(obj, eval("_arrListOf" + strObjectNameValue));
		}
		catch (ex) {
			alert("fillListOfFromXml2 " + xml.nodeName + " " + ex.message);
		}
	}
}

function fillFromXml2(targetObject, xmlNode) {
	for (var i = 0; i < xmlNode.attributes.length; i++) {
		var at = xmlNode.attributes[i];
		var strParameterNameValue = getParameterNameValue(at.nodeName, false);
		if(at.nodeName.indexOf(":") == -1)
			eval("targetObject." + strParameterNameValue + " = at.nodeValue;");
	}
	return targetObject;
}

function getObjectNameValue(objectNameId) {
	objectNameId = objectNameId.toUpperCase();
	for (var i = 0; i < _arrListOfObjectName.length; i++) {
		var objectName = _arrListOfObjectName[i];
		if (objectName.ObjectNameId == objectNameId)
			return objectName.ObjectNameValue;
	}
	return null;
}

function getObjectNameId(objectNameValue) {
	for (var i = 0; i < _arrListOfObjectName.length; i++) {
		var objectName = _arrListOfObjectName[i];
		if (objectName.ObjectNameValue == objectNameValue)
			return objectName.ObjectNameId.toLowerCase();
	}
	return null;
}

function getParameterNameType(parameterNameValue) {
	for (var i = 0; i < _arrListOfParameterName.length; i++) {
		var parameterName = _arrListOfParameterName[i];
		if (parameterName.ParameterNameValue == parameterNameValue)
			return parseInt(parameterName.ParameterNameType, 10);
	}
	return null;
}

function getParameterNameValue(parameterNameId) {
	parameterNameId = parameterNameId.toUpperCase();
	for (var i = 0; i < _arrListOfParameterName.length; i++) {
		var parameterName = _arrListOfParameterName[i];
		if (parameterName.ParameterNameId == parameterNameId)
			return parameterName.ParameterNameValue;
	}
	return null;
}

function getParameterNameId(parameterNameValue) {
	for (var i = 0; i < _arrListOfParameterName.length; i++) {
		var parameterName = _arrListOfParameterName[i];
		if (parameterName.ParameterNameValue == parameterNameValue)
			return parameterName.ParameterNameId.toLowerCase();
	}
	return null;
}

function getSortedBy(array, sortAttributeName, sortAttributeType, sortAttributeOrder)
{
   if ( ! isDefined(sortAttributeOrder) || sortAttributeOrder == 0)
   {
      var strCurrentSortAttributeName = eval("array._strSortAttributeName;");
      if (isDefined(_strCurrentArraySortName) && sortAttributeName == _strCurrentArraySortName)
      {
         sortAttributeOrder = _iCurrentArraySortOrder == 2 ? 1 : 2;
      }
      else
      {
         sortAttributeOrder = 1;
      }
   }
   if (sortAttributeOrder == 2)
   {
      switch (sortAttributeType)
      {
         case 1 :
         array.sort(function (a, b)
         {
            return getSortedBy_sortDscByNumber(eval("a." + sortAttributeName), eval("b." + sortAttributeName));
         }
         );
         break;
         case 2 :
         array.sort(function (a, b)
         {
            return getSortedBy_sortDscByDate(eval("a." + sortAttributeName), eval("b." + sortAttributeName));
         }
         );
         break;
         default :
         array.sort(function (a, b)
         {
            return getSortedBy_sortDscByAlpha(eval("a." + sortAttributeName), eval("b." + sortAttributeName));
         }
         );
         break;
      }
   }
   else
   {
      switch (sortAttributeType)
      {
         case 1 :
         array.sort(function (a, b)
         {
            return getSortedBy_sortAscByNumber(eval("a." + sortAttributeName), eval("b." + sortAttributeName));
         }
         );
         break;
         case 2 :
         array.sort(function (a, b)
         {
            return getSortedBy_sortAscByDate(eval("a." + sortAttributeName), eval("b." + sortAttributeName));
         }
         );
         break;
         default :
         array.sort(function (a, b)
         {
            return getSortedBy_sortAscByAlpha(eval("a." + sortAttributeName), eval("b." + sortAttributeName));
         }
         );
         break;
      }
   }
   _strCurrentArraySortName = sortAttributeName;
   _iCurrentArraySortOrder = sortAttributeOrder;
   return array;
}
var _strCurrentArraySortName, _iCurrentArraySortOrder;

function getSortedBy_sortAscByAlpha(a, b){
   a = a.toLowerCase();
   b = b.toLowerCase();
   return a < b ? - 1 : a > b ? 1 : 0;
}

function getSortedBy_sortDscByAlpha(a, b){
   a = a.toLowerCase();
   b = b.toLowerCase();
   return a < b ? 1 : a > b ? - 1 : 0;
}

function getSortedBy_sortAscByDate(dateA, dateB){
   return parseInt(dateA.substring(6, 10) + dateA.substring(3, 5) + dateA.substring(0, 2), 10) - parseInt(dateB.substring(6, 10) + dateB.substring(3, 5) + dateB.substring(0, 2), 10);
}

function getSortedBy_sortDscByDate(dateA, dateB){
   return parseInt(dateB.substring(6, 10) + dateB.substring(3, 5) + dateB.substring(0, 2), 10) - parseInt(dateA.substring(6, 10) + dateA.substring(3, 5) + dateA.substring(0, 2), 10);
}

function getSortedBy_sortAscByNumber(a, b){
   return a - b;
}

function getSortedBy_sortDscByNumber(a, b){
   return b - a;
}

