﻿	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);
			var oI1 = document.getElementById("phiengd1");
			var oI2 = document.getElementById("phiengd2");
			var m = document.getElementById("marketstatus");
			if (marketstat == "P") {
				oI1.innerHTML = eval('aString.DK1');
				oI2.innerHTML = eval('aString.DK1');
				m.innerHTML = eval('aStat.P');
			} else if (marketstat == "O") {
				oI1.innerHTML = eval('aString.LT');
				oI2.innerHTML = eval('aString.LT');
				m.innerHTML = eval('aStat.O');
			} else if (marketstat == "A") {
				oI1.innerHTML = eval('aString.DK2');
				oI2.innerHTML = eval('aString.DK2');
				m.innerHTML = eval('aStat.A');
			} else if (marketstat == "C") {
				oI1.innerHTML = eval('aString.DC');
				oI2.innerHTML = eval('aString.DC');
				m.innerHTML = eval('aStat.C');
			} else {
				oI1.innerHTML = eval('aString.DC');
				oI2.innerHTML = eval('aString.DC');
				m.innerHTML = eval('aStat.K');
			}

			marketindex = updateInfo.getNewValue(11);
			changeindex = new Number(updateInfo.getNewValue(12));
			totalvalue = updateInfo.getNewValue(26);
			totalvolume = updateInfo.getNewValue(27);
			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);

			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));
			if (newValue9 == updateInfo.getNewValue(3)) {
				updateInfo.addField(33,imgCeiling);
			} else if (newValue9 == updateInfo.getNewValue(4)) {
				updateInfo.addField(33,imgFloor);
			} else if (newValue9 == updateInfo.getNewValue(5)) {
				updateInfo.addField(33,imgRef);
			} else if (newValue9 > updateInfo.getNewValue(5)) {
				updateInfo.addField(33,imgUp);
			} else if ((newValue9 < updateInfo.getNewValue(5)) && (newValue9 > 0)) {
				updateInfo.addField(33,imgDown);
			} else {
				updateInfo.addField(33,imgNone);
			}
		}

		if (updateInfo.isValueChanged(30))
		{
			aTickers.hashtable[updateInfo.getNewValue(2)].room = parseFloat(updateInfo.getOldValue(30));
		}
		aTickers.hashtable[updateInfo.getNewValue(2)].status = updateInfo.getNewValue(31);

		//9 = matchedprice
		var oldLast = updateInfo.getOldValue(9);
		var newColor;
		if (oldLast == null) { //first update for this item
			//34 = color
			//35 = ON-OFF
			if (doFade) {
				updateInfo.addField(35,"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(34,redColor,true);
			} else {
				updateInfo.addField(34,greenColor,true);
			}
			if (doFade) {
				updateInfo.addField(35,"ON",true);
			}
		}
		for (var j=3; j<=30; j++) {
			updateInfo.addField(j+colorBegin,updateInfo.isValueChanged(j),true);
		}
	}

	function formatValues(item, itemUpdate) {
	 	if (itemUpdate == null) {
	 		return;
	 	}
	 	if (doFade) {
		 	if (itemUpdate.getServerValue(35) == "ON") {
				itemUpdate.setHotToColdTime(500);
			}
		}
	 	itemUpdate.setHotTime(2000);
	 	var backH = itemUpdate.getServerValue(34);

	 	// Set mau CK thuc hien quyen
	 	var l = itemUpdate.getServerValue(31);
	 	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 <= 30; 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 (isNaN(newValue)) {
				// ATO, ATC
				itemUpdate.setAttribute(i,atColor,atColor,"color");
				itemUpdate.setAttribute(i+6,atColor,atColor,"color");
				continue;
			}
			if (i >= 19 && i <= 30) {
				// 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;
	}

////////////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.priorroom
//30.room 31.status 32.item_status 33.arrowpicture 34.color 35.ON-OFF 36.{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 priorroom room status item_status";
	var colorBegin=36;
	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("hsx.avsc.com.vn");
	eng.connection.setLSPort(lsport);
	eng.connection.setAdapterName("HOSE");
	eng.changeStatus("STREAMING");
}
function myalert(str){
	document.getElementById("canhbao").innerHTML = document.getElementById("canhbao").innerHTML + "<p>" + str ;
}

