/** * tous les scripts JS pour les outils de simulation */ var version = parseInt(navigator.appVersion); var version = navigator.appVersion; var appName = navigator.appName; var isIE = appName.indexOf("MSIE") >= 0 || appName.indexOf("Microsoft") >= 0 ; // --------------------------------------- // --- transforme les car speciaux en chaine avec &#xxx; function toHtmlString(p_s) { if (p_s==null) { /*alert("toHtmlString null param");*/ return; } var sNewS = ""; for (i=0; i= 192 && icarval <=255) { sNewS += "&#" + new String(icarval) + ";"; } else sNewS += p_s.charAt(i); } return sNewS; } // --------------------------------------- // traductions /** * objet translation */ function translation(p_oDocXml, p_msOrder) { this.m_oDocXml = p_oDocXml; this.m_moTabKeys = new Array(); this.m_moTabValues = new Array(); this.m_msOrder = p_msOrder; /* initialisations, constructeur */ try { //alert(typeof(p_oDocXml)); /* alert( this.m_oDocXml.innerText ); */ } catch(e) { /* alert(e.message); */ } /*addLog(p_oDocXml.toString());*/ var moKeys = null; try { moKeys = xPathSearch(this.m_oDocXml, "//key/@id"); /*if (moKeys) alert(moKeys.length); else alert("moKeys null");*/ } catch(e) { alert(e.message); } var moValues = xPathSearch(this.m_oDocXml, "//text/key"); /*if (moValues) alert(moValues.length); else alert("moValues null"); */ /* if (moValues) alert(moValues); else alert("moValues null"); */ for (i=0; i"; } try { if (console && p_log) console.log(p_log); } catch(e) {} } // --------------- xPathSearch ------------------ function xPathSearch(p_XmlDoc, p_Xpath){ if (isIE) { //p_XmlDoc.setProperty("SelectionLanguage","XPath"); var nodes = p_XmlDoc.selectNodes(p_Xpath); return nodes; } else { var pXPE = new XPathEvaluator(); var foundNodes = new Array(); var result = pXPE.evaluate(p_Xpath, p_XmlDoc, pXPE.createNSResolver(p_XmlDoc), 0, null); while (res = result.iterateNext()) { foundNodes.push(res); } return foundNodes; } } // --------------------- getNodeValue ------------------------- function getNodeValue(p_XmlDoc, p_Xpath) { var oResult = xPathSearch(p_XmlDoc, p_Xpath); if (oResult==null || oResult.length==0 || oResult[0].firstChild==null) return null; return oResult[0].firstChild.data; } var sBaseXMLProfilConfort = "/Document/data"; // ------------------------ receptionDonnee ---------------------- /** profil confort : envoi des donnees au flash */ function receptionDonnee(p_oDocXml) { if (null==p_oDocXml) return null; // cas d'erreur var moResult = new Array(11); capital1 = getNodeValue(p_oDocXml, sBaseXMLProfilConfort + "/montantVersement"); rente = "0"; capital2 = getNodeValue(p_oDocXml, sBaseXMLProfilConfort + "/montantInvest"); moResult[0] = new Array(capital1,rente,capital2); for (i=1; i<=10; i++) { capital01 = Number(getNodeValue(p_oDocXml, sBaseXMLProfilConfort + "/versement[@annee='" + i + "']/reinvest")); if (capital01 < 1.0) capital01 = 0; rente = Number(getNodeValue(p_oDocXml, sBaseXMLProfilConfort + "/versement[@annee='" + i + "']/renteannu")); capital02 = Number(getNodeValue(p_oDocXml, sBaseXMLProfilConfort + "/investissement[@annee='" + i + "']/reinvest")); moResult[i] = new Array(capital01,rente,capital02); } return moResult; } // ------------------ getProfilConfortInitData ---------------- /** * profil confort : min max et message * renvoie un tableau JS avec [0] = min, [1] = max, [2] = message en cas * de donnée incorrecte, prenant en compte le min et le max * traductions: dans l'ordre du tableau msTraduckeys ci -dessous */ function getProfilConfortInitData(p_XmlDoc) { if (null==p_XmlDoc) { sUrl = sUrlSvt + "30"; var xmlhttp = callHttpRequest(sUrl); return; } if (getNodeValue(p_XmlDoc, sBaseXMLProfilConfort + "/@type") != "params") return null; var oResult = new Array(); oResult.push(getNodeValue(p_XmlDoc, sBaseXMLProfilConfort + "/min")); oResult.push(getNodeValue(p_XmlDoc, sBaseXMLProfilConfort + "/max")); var sMsg = getNodeValue(p_XmlDoc, sBaseXMLProfilConfort + "/message"); oResult.push(toHtmlString(sMsg)); // traductions var msTraduckeys = new Array("ANNEE","COMPTE_INVESTISSEMENT","COMPTE_VERSEMENT","JAUNE","MONTANT_TOTAL_INVEST","MSG_MONTANTS_INCORRECTS" ,"ORANGE","POSITION_COMPTE_INVESTISSEMENT","POSITION_COMPTE_VERSEMENT","PROFIL_COMPTE_INVEST","REVENU_REGULIER","ROUGE","MONTANT_TOTAL"); var oTrans = new translation(p_XmlDoc, msTraduckeys); oResult.push(oTrans.getOrdered()); addLog(oResult.toString()); return oResult; } // ---------------------- receptionParamsIndiceMG -------------------- /** * création du tableau des vni pour l'outil indice multi-gestion */ function receptionParamsIndiceMG(p_oXml) { if (null==p_oXml) { alert('doc xml null'); return null; } var oNodes = xPathSearch(p_oXml, "//navl/nav"); var oTabDates = new Array(oNodes.length); var oTabVal = new Array(oNodes.length); addLog("longueur tab vni =[" + oNodes.length + "]"); for (i=0; i s) car pb passage au flash sDate = getNodeValue(item, "date/@ms"); sVal = getNodeValue(item, "fundnav"); //addLog(sDate + " - " + sVal); oTabDates[i] = Number(sDate) / 1000; oTabVal[i] = Number(sVal); } oTab = new Array(4); oTab[0] = oTabVal; oTab[1] = oTabDates; // tab des perf var moPerf = new Array(8); moPerf[0] = getNodeValue(p_oXml, "//performancel/n3"); moPerf[1] = getNodeValue(p_oXml, "//performancel/n2"); moPerf[2] = getNodeValue(p_oXml, "//performancel/n1"); moPerf[3] = getNodeValue(p_oXml, "//performancel/trim1"); moPerf[4] = getNodeValue(p_oXml, "//performancel/trim2"); moPerf[5] = getNodeValue(p_oXml, "//performancel/trim3"); moPerf[6] = getNodeValue(p_oXml, "//performancel/trim4"); for (i=0; i<=6; i++) { if (moPerf[i]!=null) moPerf[i] = Number(moPerf[i]); } moPerf[7] = Number(getNodeValue(p_oXml, "//nbTrim")); addLog(moPerf.toString()); oTab[2] = moPerf; // textes et traduc // pos 0 : nom de l'indice // pos 1 : description // pos suivantes : comme dans le tableau msKeys ci-dessous var msKeys = new Array('PROFILS_FM', 'LIB_PROFIL_BLEU', 'LIB_PROFIL_JAUNE','LIB_PROFIL_ORANGE','LIB_PROFIL_ROUGE', 'TRIM_1', 'TRIM_2','TRIM_3','TRIM_4'); var moTrad = xPathSearch(p_oXml, "//text/key"); var moLib = new Array(moTrad.length+2); var i = 0; moLib[i++] = getNodeValue(p_oXml, "//fund/name"); moLib[i++] = toHtmlString(getNodeValue(p_oXml, "//fund/description")); for (j=0; j s) car pb passage au flash sDate = getNodeValue(item, "date/@ms"); sVal = getNodeValue(item, "fundnav"); //addLog(sDate + " - " + sVal); oTabDates[i] = Number(sDate) / 1000; oTabVal[i] = Number(sVal); } oTab = new Array(4); oTab[0] = oTabVal; oTab[1] = oTabDates; // tab des perf var moPerf = new Array(8); moPerf[0] = getNodeValue(p_oXml, "//performancel/n3"); moPerf[1] = getNodeValue(p_oXml, "//performancel/n2"); moPerf[2] = getNodeValue(p_oXml, "//performancel/n1"); moPerf[3] = getNodeValue(p_oXml, "//performancel/trim1"); moPerf[4] = getNodeValue(p_oXml, "//performancel/trim2"); moPerf[5] = getNodeValue(p_oXml, "//performancel/trim3"); moPerf[6] = getNodeValue(p_oXml, "//performancel/trim4"); for (i=0; i<=6; i++) { if (moPerf[i]!=null) moPerf[i] = Number(moPerf[i]); } moPerf[7] = Number(getNodeValue(p_oXml, "//nbTrim")); addLog(moPerf.toString()); oTab[2] = moPerf; // textes et traduc // pos 0 : nom de l'indice // pos 1 : description // pos suivantes : comme dans le tableau msKeys ci-dessous var msKeys = new Array('PROFILS_FM', 'LIB_PROFIL_BLEU', 'LIB_PROFIL_JAUNE','LIB_PROFIL_ORANGE','LIB_PROFIL_ROUGE', 'TRIM_1', 'TRIM_2','TRIM_3','TRIM_4'); var moTrad = xPathSearch(p_oXml, "//text/key"); var moLib = new Array(moTrad.length+2); var i = 0; moLib[i++] = getNodeValue(p_oXml, "//fund/name"); moLib[i++] = toHtmlString(getNodeValue(p_oXml, "//fund/description")); for (j=0; j minTmp) min = minTmp; } xpath2 = "/profill/profil[@id='" + id_profil + "']/horizonl/horizon/return[@type='max']"; moReturn = xPathSearch(oDocXml, xpath2); var max = NaN; if (null==moReturn) { addLog("all returns not found [" + xpath2 + "]"); } else for (i=0; i minTmp) min = minTmp; } xpath2 = "/profill/profil[@id='" + moInitData[0] + "']/horizonl/horizon/return[@type='max']"; moReturn = xPathSearch(oDocXml, xpath2); var max = NaN; if (null==moReturn) { addLog("all returns not found [" + xpath2 + "]"); } else for (i=0; i