YAHOO.namespace("backtest");YAHOO.namespace("backtest.callback");YAHOO.backtest.initDetailedTable=function(){var a=[{key:"sector",label:_("sector").ucFirst(),sortable:true,resizeable:true,formatter:"text"},{key:"value",label:_("value").ucFirst(),sortable:true,resizeable:true,formatter:"text"},{key:"netProfit",label:_("net profit").ucFirst(),sortable:true,resizeable:true,formatter:YAHOO.core.formatter.currencyChange},{key:"sharpeRatio",label:_("sharpe ratio").ucFirst(),sortable:true,resizeable:true,formatter:YAHOO.core.formatter.floatNum},{key:"maxDrawDown",label:_("max drawdown").ucFirst(),sortable:true,formatter:YAHOO.core.formatter.currency},{key:"nbTrades",label:_("nb trades").ucFirst(),formatter:YAHOO.core.formatter.integer},{key:"pctWin",label:_("% Win"),formatter:YAHOO.core.formatter.percentage},{key:"pctLoss",label:_("% Loss"),formatter:YAHOO.core.formatter.percentage},{key:"avgWin",label:_("avg win").ucFirst(),formatter:YAHOO.core.formatter.currencyChange},{key:"avgLoss",label:_("avg loss").ucFirst(),formatter:YAHOO.core.formatter.currencyChange}];this.myDataSource=new YAHOO.util.DataSource(YAHOO.util.Dom.get("tabDetailedStats"));this.myDataSource.responseType=YAHOO.util.DataSource.TYPE_HTMLTABLE;this.myDataSource.responseSchema={fields:[{key:"sector"},{key:"value"},{key:"netProfit"},{key:"sharpeRatio"},{key:"maxDrawDown"},{key:"nbTrades"},{key:"pctWin"},{key:"pctLoss"},{key:"avgWin"},{key:"avgLoss"}]};this.myDataTable=new YAHOO.widget.DataTable("detailedStats",a,this.myDataSource,{sortedBy:{key:"sector",dir:"desc"}})};YAHOO.backtest.initSectorTable=function(){var a=[{key:"sector",label:_("sector").ucFirst(),sortable:true,resizeable:true,formatter:"text"},{key:"netProfit",label:_("net profit").ucFirst(),sortable:true,resizeable:true,formatter:YAHOO.core.formatter.currencyChange},{key:"avgSharpeRatio",label:_("sharpe ratio").ucFirst(),sortable:true,resizeable:true,formatter:YAHOO.core.formatter.floatNum},{key:"avgMaxDrawDown",label:_("max drawdown").ucFirst(),sortable:true,formatter:YAHOO.core.formatter.currency},{key:"avgNbTrades",label:_("nb trades").ucFirst(),sortable:true,formatter:YAHOO.core.formatter.integer},{key:"avgPctWin",label:_("% win"),sortable:true,formatter:YAHOO.core.formatter.percentage},{key:"avgProfitOnWin",label:_("profit on win").ucFirst(),sortable:true,formatter:YAHOO.core.formatter.currencyChange},{key:"avgProfitOnLoss",label:_("profit on loss").ucFirst(),sortable:true,formatter:YAHOO.core.formatter.currencyChange}];this.myDataSource=new YAHOO.util.DataSource(YAHOO.util.Dom.get("tabSectorStats"));this.myDataSource.responseType=YAHOO.util.DataSource.TYPE_HTMLTABLE;this.myDataSource.responseSchema={fields:[{key:"sector"},{key:"netProfit"},{key:"avgSharpeRatio"},{key:"avgMaxDrawDown"},{key:"avgNbTrades"},{key:"avgPctWin"},{key:"avgProfitOnWin"},{key:"avgProfitOnLoss"}]};this.myDataTable=new YAHOO.widget.DataTable("sectorStats",a,this.myDataSource,{sortedBy:{key:"sector",dir:"desc"}})};YAHOO.backtest.initYearlyTable=function(){var a=[{key:"year",label:_("year").ucFirst(),sortable:true,resizeable:true,formatter:YAHOO.core.formatter.integer},{key:"netProfit",label:_("net profit").ucFirst(),sortable:true,resizeable:true,formatter:YAHOO.core.formatter.currencyChange},{key:"sharpeRatio",label:_("sharpe ratio").ucFirst(),sortable:true,resizeable:true,formatter:YAHOO.core.formatter.floatNum}];this.myDataSource=new YAHOO.util.DataSource(YAHOO.util.Dom.get("tabYearlyStats"));this.myDataSource.responseType=YAHOO.util.DataSource.TYPE_HTMLTABLE;this.myDataSource.responseSchema={fields:[{key:"year"},{key:"netProfit"},{key:"sharpeRatio"}]};this.myDataTable=new YAHOO.widget.DataTable("yearlyStats",a,this.myDataSource,{sortedBy:{key:"year",dir:"desc"}})};YAHOO.backtest.initDisplay=function(){YAHOO.util.Event.addListener(window,"load",function(){if(YAHOO.util.Dom.inDocument("tabDetailedStats")){i18n.LOCAL_DECIMAL_PLACES=0;YAHOO.backtest.initDetailedTable();YAHOO.util.Dom.setStyle("detailedStats","width","900px");YAHOO.util.Dom.setStyle($D.getChildren("detailedStats"),"width","900px");YAHOO.util.Dom.setStyle("detailedStats","float","left");YAHOO.backtest.initSectorTable();YAHOO.util.Dom.setStyle($D.getChildren("sectorStats"),"width","900px");YAHOO.util.Dom.setStyle("sectorStats","float","left");YAHOO.backtest.initYearlyTable();YAHOO.util.Dom.setStyle($D.getChildren("yearlyStats"),"width","250px");YAHOO.util.Dom.setStyle("yearlyStats","float","left")}})};YAHOO.backtest.deleteTest=function(c,d){var f=d.elementId.substring(9);var a="/backtest/delete/id/"+f;var b=YAHOO.util.Connect.asyncRequest("GET",a,YAHOO.backtest.callback.deleteTest)};YAHOO.backtest.callback.deleteTest={success:function(c){var b=YAHOO.lang.JSON.parse(c.responseText);if(b.status=="ok"){var a=$("resultLine"+b.id);a.parentNode.removeChild(a)}defaultSuccessAction(c.responseText)},failure:function(a){alert(_("Error in the function")+" YAHOO.backtest.callBack.deleteTest")},cache:false};YAHOO.backtest.callback.testStatusKo=function(a){YAHOO.core.message.simpleMessage(_("An error occured during the processing of your backtest.<br>You should consider to delete it and try again."),_("Your backtest failed to complete"))};YAHOO.backtest.validateForm=function(){var e=FormUtil.getOptionVal("portfolioId");var c=FormUtil.getOptionVal("marketId");var a=FormUtil.getOptionVal("sectorId");if(e==0&&a==0){var b=new Object;b.message=_("You must choose at least one portfolio or one sector as a perimeter for your backtest");b.status="message";defaultSuccessAction(YAHOO.lang.JSON.stringify(b));flashField("portfolioId");flashField("sectorId");return false}else{var d=$("mainForm");d.submit();return true}};YAHOO.backtest.searchStrategy=function(b,c){var a="<h1>"+_("Apply a previously created strategy")+"</h1>";a+="<br>";for(name in YAHOO.backtest.currentStrategies){a=a+'<a class="resultLine" href="/'+i18n.USER_LANGUAGE+"/backtest/index/sid/"+YAHOO.backtest.currentStrategies[name].id+'">'+YAHOO.backtest.currentStrategies[name].desc+"</a><br>"}YAHOO.core.message.simpleMessage(a,_("Existing strategies"))};YAHOO.backtest.initIndex=function(){YAHOO.util.Event.addListener(window,"load",function(){YAHOO.core.ui.yuiImgButton("submitBacktest","/img/global/accept.png",_("Submit"),YAHOO.backtest.validateForm)});$E.addListener("stopLossParameter","blur",function(){var c=$("stopLossEnabled-1").checked;if(c===true){var b=$("stopLossParameter").value;if(b==""){var a=new Object;a.message=_('If you enable a "stop loss" system, you must provide a stop loss value');a.status="message";defaultSuccessAction(YAHOO.lang.JSON.stringify(a));flashField("stopLossParameter")}}});$E.onContentReady("strategyName",function(){var b=$("strategyName");var a=document.createElement("img");a.id="searchStrategy";a.src="/img/global/search.png";b.parentNode.appendChild(a);$D.addClass(a,"searchStrategy");$E.addListener(a,"click",YAHOO.backtest.searchStrategy)});$E.onContentReady("resultsList",function(){var c=$D.getElementsByClassName("delResultImg","img",$("resultsList"));if(c){for(var d=0;d<c.length;d++){YAHOO.util.Event.addListener(c[d],"click",YAHOO.backtest.deleteTest,new elObj(c[d].id))}}var a=$D.getElementsByClassName("koImg","img",$("resultList"));if(a){for(var b=0;b<a.length;b++){YAHOO.util.Event.addListener(a[b],"click",YAHOO.backtest.callback.testStatusKo)}}})};