﻿	function changePage() {
		var groupString = "";
		for (var st = 0; st < page1.length; st++)
			groupString += "item" + page1[st] + " ";
		actGroup = page1;
		var newTable = new OverwriteTable(groupString, schema, "MERGE");
		newTable.setSnapshotRequired(true);
		newTable.setRequestedMaxFrequency(0.5);
		newTable.setClearOnDisconnected(false);
		newTable.setClearOnRemove(false);
		newTable.onItemUpdate = updateItem;
		newTable.onChangingValues = formatValues;
		newTable.setPushedHtmlEnabled(true);
		lsPage.addTable(newTable, "1");
	}

	function openPopup(row) {
		var item = actGroup[row-1];
		var fadeStr = "";
		if (doFade) {
			fadeStr = "&fade=ON";
		}
		wdt=window.open("popup2.html?item=" + item + fadeStr, "SLDpopup" + item, "width=535,height=238,history=0,resizable,status=1,menubar=1");
		wdt.focus();
		return false;
	}

	var matchedColor;
	var marketstat;
	var marketindex, changeindex, totalvalue, totalvolume;

	function updateItem(item, updateInfo) {
		if (updateInfo == null) {
			return;
		}
		if (item == 1) {
			var time = document.getElementById("time");
			time.innerHTML = updateInfo.getNewValue(1).substring(11,19);

			var today = document.getElementById("today");
			today.innerHTML = updateInfo.getNewValue(1).substring(0,10);

			marketstat = updateInfo.getNewValue(2);
			marketindex = updateInfo.getNewValue(13);
			changeindex = updateInfo.getNewValue(16);
			totalvalue = updateInfo.getNewValue(19);
			totalvolume = updateInfo.getNewValue(22);

			var oI1 = document.getElementById("phiengd1");
			var oI2 = document.getElementById("phiengd2");
			var m = document.getElementById("marketstatus");
			if (marketstat == "O") {
				oI1.innerHTML = eval('aString.TH');
				oI2.innerHTML = eval('aString.TH');
				m.innerHTML = eval('aStat.O');
			} else if (marketstat == "K") {
				oI1.innerHTML = eval('aStat.K');
				oI2.innerHTML = eval('aStat.K');
				m.innerHTML = eval('aStat.K');
			} else {
				oI1.innerHTML = eval('aStat.K');
				oI2.innerHTML = eval('aStat.K');
				m.innerHTML = eval('aStat.K');
			}

			changeindex = new Number(changeindex);
			var percent = 0;
			if (marketindex!=changeindex)
				percent = changeindex*100/(marketindex-changeindex);
			var colorindex;
			var imgVNIndex = document.getElementById("imgVNIndex");
			if (changeindex == 0) {
				imgVNIndex.innerHTML = "";
				colorindex = refColorvn;
			} else if (changeindex < 0) {
				imgVNIndex.innerHTML = imgDown;
				colorindex = downColorvn;
			} else if (changeindex > 0) {
				imgVNIndex.innerHTML = imgUp;
				colorindex = upColorvn;
			}

			document.getElementById("vnchangeindex1").innerHTML = "<font color='" + colorindex + "'>" + changeindex.toFixed(2) + " (" + percent.toFixed(2) + "%)</font>";

			var nf = new NumberFormat(marketindex);
			nf.setPlaces(2);
			document.getElementById("vnindex1").innerHTML = "<font color='" + colorindex + "'>" + nf.toFormatted() + "</font>";

			if (totalvolume != 0) {
				var nf = new NumberFormat(totalvolume);
				nf.setPlaces(0);
				document.getElementById("totalshares1").innerHTML = nf.toFormatted();
			} else {
				document.getElementById("totalshares1").innerHTML = "";
			}

			if (totalvalue != 0) {
				var nf = new NumberFormat(totalvalue*1000000);
				nf.setPlaces(0);
				document.getElementById("totalvalues1").innerHTML = nf.toFormatted();
			} else {
				document.getElementById("totalvalues1").innerHTML = "";
			}

			//Phat Edit: add advances,declines,noChange
			var advances = updateInfo.getNewValue(3);
			var declines = updateInfo.getNewValue(4);
			var noChange = updateInfo.getNewValue(5);

			if ((advances == null || advances == 0) && (declines == null || declines == 0) && (noChange == null || noChange == 0)) {
				document.getElementById("stockSummary").innerHTML = "";
			} else {
				var advancesCeiling = updateInfo.getNewValue(6);
				var declinesFloor = updateInfo.getNewValue(7);
				var noChangeColse = updateInfo.getNewValue(8);
				document.getElementById("Advances").innerHTML = advances;
				document.getElementById("Declines").innerHTML = declines;
				document.getElementById("NoChange").innerHTML = noChange;

				if (advancesCeiling != null && advancesCeiling != "") {
					document.getElementById("AdvancesCeiling").innerHTML = "[" + advancesCeiling + "]";
				}
				if (declinesFloor != null && declinesFloor != "") {
					document.getElementById("DeclinesFloor").innerHTML = "[" + declinesFloor + "]";
				}
				if (noChangeColse != null && noChangeColse != "") {
					document.getElementById("NoChangeClose").innerHTML = "[" + noChangeColse + "]";
				}
			}
			return;
		}

		//10 = change
		if (updateInfo.isValueChanged(10)) {
			var newValue9 = parseFloat(updateInfo.getNewValue(9));
			var arrowpicture;
			if (newValue9 == updateInfo.getNewValue(3)) {
				arrowpicture = imgCeiling;
			} else if (newValue9 == updateInfo.getNewValue(4)) {
				arrowpicture = imgFloor;
			} else if (newValue9 == updateInfo.getNewValue(5)) {
				arrowpicture = imgRef;
			} else if (newValue9 > updateInfo.getNewValue(5)) {
				arrowpicture = imgUp;
			} else if ((newValue9 < updateInfo.getNewValue(5)) && (newValue9 > 0)) {
				arrowpicture = imgDown;
			} else {
				arrowpicture = imgNone;
			}
			updateInfo.addField(39,arrowpicture);
			updateInfo.addField(40,arrowpicture);
		}
		updateInfo.addField(43,updateInfo.getNewValue(30) - updateInfo.getNewValue(28));
		updateInfo.addField(44,updateInfo.getNewValue(29) - updateInfo.getNewValue(28));
		if (updateInfo.isValueChanged(35))
		{
			aTickers.hashtable[updateInfo.getNewValue(2)].room = parseFloat(updateInfo.getOldValue(35));
		}
		aTickers.hashtable[updateInfo.getNewValue(2)].status = updateInfo.getNewValue(37);

		//9 = matchedprice
		var oldLast = updateInfo.getOldValue(9);
		var newColor;
		if (oldLast == null) { //first update for this item
			//41 = color
			//42 = ON-OFF
			if (doFade) {
				updateInfo.addField(42,"OFF",true);
			}
		} else if (updateInfo.isValueChanged(9)) {
			aTickers.hashtable[updateInfo.getNewValue(2)].price = parseFloat(oldLast);
			if (aTickers.hashtable[updateInfo.getNewValue(2)].price > updateInfo.getNewValue(9)) {
				updateInfo.addField(41,redColor,true);
			} else {
				updateInfo.addField(41,greenColor,true);
			}
			if (doFade) {
				updateInfo.addField(42,"ON",true);
			}
		}
		for (var j=3; j<=35; j++) {
			updateInfo.addField(j+colorBegin,updateInfo.isValueChanged(j),true);
		}
	}

	function formatValues(item, itemUpdate) {
	 	if (itemUpdate == null) {
	 		return;
	 	}
	 	if (doFade) {
		 	if (itemUpdate.getServerValue(42) == "ON") {
				itemUpdate.setHotToColdTime(500);
			}
		}
	 	itemUpdate.setHotTime(1000);
	 	var backH = itemUpdate.getServerValue(41);

	 	// Set mau CK thuc hien quyen
	 	var l = itemUpdate.getServerValue(37);
	 	if ((l == 'A')||(l == 'R')||(l == 'D')||(l == '*')) {
	 		itemUpdate.setFormattedValue(2,itemUpdate.getServerValue(2)+" *");
	 	}
	 	/////////////////////////////

		//format the "number" fields
		matchedColor=null;
		for (var i = 3; i <= 35; i++) {
			if (!itemUpdate.getServerValue(i+colorBegin)) continue;
			var newValue = itemUpdate.getServerValue(i);
			if (newValue == null) continue;
			if (newValue == 0){
				itemUpdate.setFormattedValue(i,"");
				continue;
			}
			itemUpdate.setAttribute(i,backH,null,"backgroundColor");
			if (i >= 19 && i <= 35) {
				// Mau sac se do gia quyet dinh
				continue; //"vol" fields
			}
			var formattedVal = parseFloat(newValue);

			// format prices
			if (i == 9) {
				if (formattedVal == itemUpdate.getServerValue(3)) {
					matchedColor=ceColor;
				} else if (formattedVal == itemUpdate.getServerValue(4)) {
					matchedColor=flColor;
				} else if (formattedVal == itemUpdate.getServerValue(5)) {
					matchedColor=refColor;
				} else if (formattedVal > itemUpdate.getServerValue(5)) {
					matchedColor=upColor;
				} else if (formattedVal < itemUpdate.getServerValue(5)) {
					matchedColor=downColor;
				}
				itemUpdate.setAttribute(9,matchedColor,matchedColor,"color");
				itemUpdate.setAttribute(10,matchedColor,matchedColor,"color");
			}

			if (i == 10) {
				if (formattedVal > 0) {
					formattedVal = "+" + formattedVal;
				}
				if (parseFloat(itemUpdate.getServerValue(9)) == itemUpdate.getServerValue(3)) {
					formattedVal = "C" + formattedVal;
				} else if (parseFloat(itemUpdate.getServerValue(9)) == itemUpdate.getServerValue(4)) {
					formattedVal = "F" + formattedVal;
				}
			}

			var mycolor;
			if ((i >= 6) && (i <= 12) && (i != 10) && (i != 9)){
				if (formattedVal == itemUpdate.getServerValue(3)) {
					mycolor=ceColor;
				} else if (formattedVal == itemUpdate.getServerValue(4)) {
					mycolor=flColor;
				} else if (formattedVal == itemUpdate.getServerValue(5)) {
					mycolor=refColor;
				} else if (formattedVal > itemUpdate.getServerValue(5)) {
					mycolor=upColor;
				} else if (formattedVal < itemUpdate.getServerValue(5)) {
					mycolor=downColor;
				} else {
					mycolor=null;
				}
				itemUpdate.setAttribute(i,mycolor,mycolor,"color");
			}

			if ((i >= 13) && (i <= 18)){
				if (formattedVal == itemUpdate.getServerValue(3)) {
					mycolor=ceColor2;
				} else if (formattedVal == itemUpdate.getServerValue(4)) {
					mycolor=flColor2;
				} else if (formattedVal == itemUpdate.getServerValue(5)) {
					mycolor=refColor2;
				} else if (formattedVal > itemUpdate.getServerValue(5)) {
					mycolor=upColor2;
				} else if (formattedVal < itemUpdate.getServerValue(5)) {
					mycolor=downColor2;
				} else {
					mycolor=null;
				}
				itemUpdate.setAttribute(i,mycolor,mycolor,"color");
				itemUpdate.setAttribute(i+6,mycolor,mycolor,"color");
			}
			itemUpdate.setFormattedValue(i,formattedVal);
	 	}
	}

	///////////////////block escape key
	document.onkeydown = checkEscape;
	document.onkeypress = checkEscape;
	function checkEscape(e) {
		if(!e) e = event;
		if(e.keyCode == 27) return false;
	}

	//////////////////////////Format functions

	//time format from [0-24] to [0-12] (without AM / PM )
	function formatTime(val) {
		var a = new Number(val.substring(0,val.indexOf(":")));
		if (a > 12) {
			a -= 12;
		}
		var b = val.substring(val.indexOf(":"),val.length);
		return a + b;
	}

///////////////Global var declaration
//1.time 2.ticker
//3.ceiling 4.floor 5.ref 6.max 7.min 8.ave 9.matched 10.change 11.open 12.close
//13.bid1 14.bid2 15.bid3 16.ask1 17.ask2 18.ask3
//19.bid1vol 20.bid2vol 21.bid3vol 22.ask1vol 23.ask2vol 24.ask3vol 25.matchedvol 26.openvol 27.closevol 28.totalvol
//29.offers 30.bids 31.buyforeign 32.sellforeign 33.offercounts 34.bidcounts
//35.room 36.ticker 37.status 38.item_status 39.arrowpicture 40.arrowpicture2 41.color 42.ON-OFF 43.overbuy 44.oversell 45.{more};
	var schema = "time ticker ceiling floor ref max min ave matched change open close bid1 bid2 bid3 ask1 ask2 ask3 bid1vol bid2vol bid3vol ask1vol ask2vol ask3vol matchedvol openvol closevol totalvol offers bids buyforeign sellforeign offercounts bidcounts room ticker status item_status";
	var colorBegin=45;
	var actGroup = null;
	var imgString = '<img src="images/popup.gif" alt="Graphic Chart" width="16" height="16" align="left" border="0" hspace="1">';
	var imgUp = '<img src="images/quotes_up.gif" alt="up" width="16" height="8" border="0">';
	var imgDown = '<img src="images/quotes_down.gif" alt="down" width="16" height="8" border="0">';
	var imgFloor = '<img src="images/quotes_fl2.gif" alt="floor" width="16" height="8" border="0">';
	var imgCeiling = '<img src="images/quotes_ce2.gif" alt="ceiling" width="16" height="8" border="0">';
	var imgRef = '<img src="images/quotes_ref.gif" alt="base" width="16" height="8" border="0">';
	var imgNone = '<img src="images/spacer_4px.gif" width="16" height="8" border="0">';
	var doFade = true;

	if (location.search.indexOf("fade=ON") > -1) {
		doFade = true;
	}

/////////////////////////////////PushPage Configuration
	var lsPage = new PushPage();
	lsPage.context.setDebugAlertsOnClientError(false);
	lsPage.context.setDomain(lsdomain);
	lsPage.onEngineCreation = startEngine;
	lsPage.bind();
	lsPage.createEngine("SLEngine", "ls/");
	//starting stocks
	changePage();

function startEngine(eng) {
	eng.onClientAlert = null;
	eng.context.setDebugAlertsOnClientError(false);
	//eng.policy.setMaxBandwidth(30);
	eng.policy.setIdleTimeout(30000);
	eng.policy.setPollingInterval(10000);
	
	//eng.connection.setLSHost("aumobile.avsc.com.vn");
	eng.connection.setLSHost(lshost);
	eng.connection.setLSPort(lsport);
	//eng.connection.setAdapterName("HNX");
	eng.connection.setAdapterName("HNX_SPLIT");
	
	eng.changeStatus("STREAMING");
}
function myalert(str){
	document.getElementById("canhbao").innerHTML = document.getElementById("canhbao").innerHTML + "<p>" + str ;
}

