//RelaTime Interval (unite seconde)
var REALTIME_INTERVAL_LANDING = 45;
var REALTIME_INTERVAL_CODE_CLASSIFICATION_UNDERLYING = 45;
var REALTIME_INTERVAL_DERIVATIVE_SUMMARIZEDMARKET = 30;
var REALTIME_INTERVAL_DERIVATIVE_ADVANCEDMARKET = 30;
var REALTIME_INTERVAL_DERIVATIVE_REGULAR_DETAIL = 45;
var REALTIME_INTERVAL_AGGREGATE = 45;
var REALTIME_INTERVAL_DERIVATIVE_DEGRADATED_MODE = 300000;
var REALTIME_INTERVAL_DERIVATIVE_DEGRADATED_MODE_THRESHOLD = 100;
//Block RealTime in summarizedMarket and AdvancedMarket
var REALTIME_INTERVAL_CASH_MARKET = 15;//(unite Seconde)
var REALTIME_INTERVAL_SHOW_DIALOG = 4; //(unite hour)
var REALTIME_INTERVAL_TO_CLOSE_DIALOG = 10; //(unite Seconde)
//(unite Minute)
var REALTIME_INTERVAL_STOPPING = 1;
//(unite Houre)
var REALTIME_SECONDE_INTERVAL_STOPPING = 8;

var arrColors = new Array("orange","yellow");
var arrHexColors = new Array("#FF9900","#FFFF00");

var regTime = /^\d{1,2}:\d{2}:\d{2}/;
var regTime2 = /^\d{1,2}:\d{2}/;
var regDate = /\d{1,2}\/\d{2}\/\d{2,4}/;
var regDateFull = /\d{1,2}\/\d{2}\/\d{2,4} \d{1,2}:\d{2}/;
var regDateFullWithSeconds = /\d{1,2}\/\d{2}\/\d{2,4} \d{1,2}:\d{2}:\d{2}/;

//-------------------------
/*function flashEffect(element,count){
	if(count<arrColors.length){
	 FindID(element).style.backgroundColor = arrColors[count];
	 count++;
	 setTimeout("flashEffect(\""+ element+"\","+count+")",150); 
	}else{
	 FindID(element).style.backgroundColor = "";
	}
}*/
function flashEffectGreen(element,count){
	if(count<1){
		element.style.backgroundColor = "#c0ffc0";
		count++;
		flashEffectGreen.delay(2,element,count); 
	}else{
		element.style.backgroundColor = "";
	}
}
function flashEffectRed(element,count){
	if(count<1){
		element.style.backgroundColor = "#ffc0c0";
		count++;
		flashEffectRed.delay(2,element,count); 
	}else{
		element.style.backgroundColor = "";
	}
}
function flashEffectNeutral(element,count){
	if(count<1){
		element.style.backgroundColor = "lightgrey";
		count++;
		flashEffectNeutral.delay(2,element,count); 
	}else{
		element.style.backgroundColor = "";
	}
}

function flashEffect2(element){
	//var a = js_push.widget.FieldAnimation.unhighlight2(dojo.byId(element),[255,165,0],150);
	var anims = [];
	var c = dojo.gfx.color;
	var duration = 150;
	var anims = new Array();

	var node = dojo.lfx.html._byId(element);
	var defaultColor = dojo.html.getBackgroundColor(node[0]);
	node[0].style.backgroundColor = "transparent";
	
	var defaultColorRgb = new dojo.gfx.color.Color(defaultColor);

	var startColor;
	var endColor;
	for(var i = 0; i < arrHexColors.length-1; i++) {
		
		startColor = new dojo.gfx.color.Color(c.hex2rgb(arrHexColors[i]));
		endColor = new dojo.gfx.color.Color(c.hex2rgb(arrHexColors[i+1]));
		
		var nextAnim = dojo.lfx.html.propertyAnimation(element,{ "background-color": { start: startColor, end: endColor }}, duration);
		anims.push(nextAnim);
	}
	
	endColor = new dojo.gfx.color.Color(c.hex2rgb(arrHexColors[arrHexColors.length-1]));
	var endAnim = dojo.lfx.html.propertyAnimation(element,{ "background-color": { start: endColor, end: defaultColorRgb } },duration);
	dojo.event.connect(endAnim, "onEnd", function(e){node[0].style.backgroundColor = "rgb(" + defaultColorRgb.toRgb().join(",") + ")";});
	
	anims.push(endAnim);
	
	//dojo.event.connect(nextAnim, "onEnd", function(e){endAnim.play()});
	//nextAnim.play();
	dojo.lfx.chain(nextAnim,endAnim).play();
	//node[0].style.backgroundColor = "rgb(" + defaultColorRgb.toRgb().join(",") + ")";
	
}

function flashEffect(element,value)
{
	var oldEl = typeof element === "string" ? document.getElementById(element) : element ;
	var evalValue=0;
	var evalElement=0;
	var diff=0;
	var neutralColor=0;
	
	try
	{
		if(regTime.test(value) || regTime2.test(value)){
			var arrayValue = value.split(":");
			evalValue = new Date(0,0,0,arrayValue[0],arrayValue[1]).getTime();
			arrayValue = oldEl.innerHTML.split(":");
			evalElement = new Date(0,0,0,arrayValue[0],arrayValue[1]).getTime();
		}else if(regDateFullWithSeconds.test(value)){
			var arrayValue = value.split(" ");
			var arrayValue1 = arrayValue[0].split("/");
			var arrayValue2 = arrayValue[1].split(":");
			evalValue = new Date(arrayValue1[2], arrayValue1[1], arrayValue1[0], arrayValue2[0], arrayValue2[1], arrayValue2[2]).getTime();
			var arrayValue = oldEl.innerHTML.split(" ");
			var arrayValue1 = arrayValue[0].split("/");
			var arrayValue2 = arrayValue[1].split(":");
			evalElement = new Date(arrayValue1[2], arrayValue1[1], arrayValue1[0], arrayValue2[0], arrayValue2[1], arrayValue2[2]).getTime();
			neutralColor = 1;
		}else if(regDateFull.test(value)){
			var arrayValue = value.split(" ");
			var arrayValue1 = arrayValue[0].split("/");
			var arrayValue2 = arrayValue[1].split(":");
			evalValue = new Date(arrayValue1[2],arrayValue1[1],arrayValue1[0],arrayValue2[0],arrayValue2[1]).getTime();
			var arrayValue = oldEl.innerHTML.split(" ");
			var arrayValue1 = arrayValue[0].split("/");
			var arrayValue2 = arrayValue[1].split(":");
			evalElement = new Date(arrayValue1[2],arrayValue1[1],arrayValue1[0],arrayValue2[0],arrayValue2[1]).getTime();
		}else if(regDate.test(value)){
			var arrayValue = value.split("/");
			evalValue = new Date(arrayValue[2],arrayValue[1],arrayValue[0]).getTime();
			arrayValue = oldEl.innerHTML.split("/");
			evalElement = new Date(arrayValue[2],arrayValue[1],arrayValue[0]).getTime();
		}
		else
		{
			evalValue = value.replace(/,/g,"");
			evalElement = oldEl.innerHTML.replace(/,/g,"");
			
			if (oldEl.id.indexOf("RELATIVE_DIFFERENCE") > -1){
				evalValue = evalValue.replace("+","");
				evalValue = evalValue.replace("%","");
				
				evalElement = evalElement.replace("+","");
				evalElement = evalElement.replace("%","");
			}
		}
		
		diff = evalValue - evalElement;
	}
	catch(exception){}
	
	
	if (neutralColor == 1) {
		if (diff != 0 || value == "-" && oldEl.innerHTML != "-")
			flashEffectNeutral(oldEl, 0);
	}
	else {
		if (diff > 0 || oldEl.innerHTML == "-" && value != "-") 
			flashEffectGreen(oldEl, 0);
		else 
			if (diff < 0 || value == "-" && oldEl.innerHTML != "-") 
				flashEffectRed(oldEl, 0);
	}
}


//--------------------
function replaceHtml(el, html) {
	var oldEl = typeof el === "string" ? document.getElementById(el) : el;
	/*@cc_on // Pure innerHTML is slightly faster in IE
		oldEl.innerHTML = html;
		return oldEl;
	@*/
	var newEl = oldEl.cloneNode(false);
	newEl.innerHTML = html;
	oldEl.parentNode.replaceChild(newEl, oldEl);
	/* Since we just removed the old element from the DOM, return a reference
	to the new element, which can be used to restore variable references. */
	return newEl;
};
function FindID2(root,id) {
	
	return FindID(id);//root.getElementById(id);
}
function FindID(id) {/*provide cross-browser element's handle */
       if(document.layers) return document.layers[id];
       else if(document.all && !document.getElementById) return document.all[id];
       else if(document.all && document.getElementById) return document.getElementById(id);
       else if(!document.all && document.getElementById) return document.getElementById(id);
       else return null;
}
//--------------------

function JSTriggerDom(zeID, zeValue){
	JSTriggerDom2(document,zeID,zeValue);
}
function JSTriggerDom2(root,zeID, zeValue){	/* "proxy" Method */
	
	var element = FindID2(root,zeID);
	
	if(element==null){
		return;		
	}
	flashEffect(zeID, zeValue);
	if(zeID.indexOf("URL")<0)
		//replaceHtml(element,zeValue);
		element.innerHTML=zeValue;
	else{
		element.href=zeValue;
	}
	
 	//FindID(zeID).style.color="black";
	if(zeID.indexOf("RELATIVE_DIFFERENCE")>-1 || zeID.indexOf("ABSOLUTE_DIFFERENCE")>-1)
	{
		var the_first_char=zeValue.charAt(0);
		if(the_first_char.indexOf("-")>-1)
		{
		 	if(zeValue.length>1){
		 		element.style.color="#D00000"; //color red
		 		JSTriggerDom(zeID.substring(0,zeID.indexOf("_",zeID.indexOf("_")+1))+"_TREND","<img src='/images/dn.gif' width=10 height=10>");	 		
		 	}else{
		 		element.style.color="black";
		  	  JSTriggerDom(zeID.substring(0,zeID.indexOf("_",zeID.indexOf("_")+1))+"_TREND","<img src='/images/nil.gif'>");	 	 	
		 	}
		 }else{
		 	if(zeValue == '0.00'){
		 		element.style.color="black";
		  	 	JSTriggerDom(zeID.substring(0,zeID.indexOf("_",zeID.indexOf("_")+1))+"_TREND","<img src='/images/nil.gif'>");	
			}else{
				element.style.color="#08C440"; //color green
			  	JSTriggerDom(zeID.substring(0,zeID.indexOf("_",zeID.indexOf("_")+1))+"_TREND","<img src='/images/up.gif' width=10 height=10>");
			}
		 }
	}
}



function JSTriggerDomOPT(element, zeValue)	/* "proxy" Method */
{
	flashEffect(element, zeValue) ;
	
	element.innerHTML = zeValue ;
	
	if (element.id.indexOf("RELATIVE_DIFFERENCE")>-1 || element.id.indexOf("ABSOLUTE_DIFFERENCE")>-1)
	{
		if(zeValue.charAt(0).indexOf("-")>-1)
		{
			if(zeValue.length>1){
				element.style.color="#D00000"; //color red
				//JSTriggerDom(zeID.substring(0,zeID.indexOf("_",zeID.indexOf("_")+1))+"_TREND","<img src='/images/dn.gif' width=10 height=10>");	 		
			}
			else{
				element.style.color="black";
				//JSTriggerDom(zeID.substring(0,zeID.indexOf("_",zeID.indexOf("_")+1))+"_TREND","<img src='/images/nil.gif'>");	 	 	
			}
		}
		else
		{
			if(zeValue == '0.00'){
				element.style.color="black";
		 	 	//JSTriggerDom(zeID.substring(0,zeID.indexOf("_",zeID.indexOf("_")+1))+"_TREND","<img src='/images/nil.gif'>");	
			}else{
				element.style.color="#08C440"; //color green
				//JSTriggerDom(zeID.substring(0,zeID.indexOf("_",zeID.indexOf("_")+1))+"_TREND","<img src='/images/up.gif' width=10 height=10>");
			}
		}
	}
}


//-----------------------------
function showInStatus(strMsg){
if(strMsg.indexOf("xception")>0){
 return;
}
 this.status = strMsg;
}
//-------------------------
function SplitDate(Param){ 

	var toReturn = new Array(3);
	var day="";
	var month="";
	var year="";

	// Day Extraction
	i=0;
	while((Param.charAt(i)!="/")&&(i<10)){
		day+=Param.charAt(i);
		i++;
	}
	if(day.charAt(0)=="0"){
		day=day.charAt(1);
	}
	Param=Param.substring(i+1,Param.length);

	// Month Extraction
	i=0;
	while((Param.charAt(i)!="/")&&(i<10)){
		month+=Param.charAt(i);
		i++;
	}
	if(month.charAt(0)=="0"){
		month=month.charAt(1);
	}
	Param=Param.substring(i+1,Param.length);

	// Year Extraction
	year=Param;
	toReturn[0]=day;
	toReturn[1]=month;
	toReturn[2]=year;
	
	return toReturn;
}
//-------------------------
function equalsDate(date1, date2){
	var isEqual = false;
	
	var date1Splited = SplitDate(date1);
	var date2Splited = SplitDate(date2);
	
	if(date1Splited[0] == date2Splited[0] && date1Splited[1] == date2Splited[1]){
		if(date1Splited[2].length == date2Splited[2].length && date1Splited[2] == date2Splited[2]){
			isEqual = true;
		}else{
			var shortYear1;
			var shortYear2;
			
			if(date1Splited[2].length > 2){
				shortYear1 = date1Splited[2].substring(2,4);
			}else{
				shortYear1 = date1Splited[2];
			}
			
			if(date2Splited[2].length > 2){
				shortYear2 = date2Splited[2].substring(2,4);
			}else{
				shortYear2 = date2Splited[2];
			}
			
			if(shortYear1 == shortYear2){
				isEqual = true;
			} 
		}
	}
	
	return isEqual;
}
//-------------------------
function isRefreshingField(aggregateDate, lastDate, fieldId){
	var refresh = false;
	var valideField = new Array("OFFICIAL_SETTLEMENT_PRICE","GROSS_OPEN_INTEREST");
	
	if(aggregateDate == null || aggregateDate == "" || equalsDate(aggregateDate, lastDate)){
		return true;
	}
	
	for (i=0; i<valideField.length; i++){
		var reg=new RegExp(valideField[i]+"$", "g");
		var value = valideField[i];
		if(fieldId.match(reg)){
			refresh = true;
			break;
		}
	} 
	
	return refresh;
}
//-------------------------
//date1 is before date2
function beforeDate(date1,date2){
	
	if(date1 == '-' || date2 == '-'){
		return false;
	}
	
	var objDate1 = new Date();
	var splitedDate1 = SplitDate(date1);
	
	objDate1.setDate(splitedDate1[0]);
	objDate1.setMonth(eval(splitedDate1[1])-1);
	objDate1.setYear(splitedDate1[2]);
	
	var objDate2 = new Date();
	var splitedDate2 = SplitDate(date2);
	
	objDate2.setDate(splitedDate2[0]);
	objDate2.setMonth(eval(splitedDate2[1])-1);
	objDate2.setYear(splitedDate2[2]);
	
	
	return objDate2	> objDate1;
}
//-------------------------
//date1 is after date2
function afterDate(date1,date2){
	
	if(date1 == '-' || date2 == '-'){
		return false;
	}
	
	var objDate1 = new Date();
	var splitedDate1 = SplitDate(date1);
	
	objDate1.setDate(splitedDate1[0]);
	objDate1.setMonth(eval(splitedDate1[1])-1);
	objDate1.setYear(splitedDate1[2]);
	
	var objDate2 = new Date();
	var splitedDate2 = SplitDate(date2);
	
	objDate2.setDate(splitedDate2[0]);
	objDate2.setMonth(eval(splitedDate2[1])-1);
	objDate2.setYear(splitedDate2[2]);
	
	
	return objDate2	< objDate1;
}

function formatNumber(valeur,decimal,separateur) {
	// formate un chiffre avec 'decimal' chiffres après la virgule et un separateur
	var val_format;
	if(separateur == undefined){
		separateur = decimal;
		valeur = "" + valeur;
		var splitNumber = valeur.split(separateur);

		val_format=splitNumber[0]+"";
		var nb=val_format.length;
		for (var i=1;i<4;i++) {
			if (val>=Math.pow(10,(3*i))) {
				val_format=val_format.substring(0,nb-(3*i))+ "," +val_format.substring(nb-(3*i));
			}
		}

		val_format = val_format + "." +splitNumber[1];
	}else{
		var valeurAbs = Math.abs(valeur);
		// Attention, ne pas simplifier au risque de provoquer des erreurs de precision du au JavaScript
		var deci=Math.floor(Math.pow(10,decimal)*valeurAbs-Math.floor(Math.pow(10,decimal)*Math.floor(valeurAbs))) ; 
		var val=Math.floor(Math.abs(valeur));
		if ((decimal==0)||(deci==Math.pow(10,decimal))) {
			val=Math.floor(Math.abs(valeur));
			deci=0;
		}
		val_format=val+"";
		var nb=val_format.length;
		for (var i=1;i<4;i++) {
			if (val>=Math.pow(10,(3*i))) {
				val_format=val_format.substring(0,nb-(3*i))+ "," +val_format.substring(nb-(3*i));
			}
		}
		if (decimal>0) {
			var decim=""; 
			for (var j=0;j<(decimal-deci.toString().length);j++) {decim+="0";}
			deci=decim+deci.toString();
			val_format=val_format+"."+deci;
		}
		if (parseFloat(valeur)<0) {
			val_format="-"+val_format;
		}
	}
	return val_format;
}

