var QL; var lb; var connDownOK = false; function handShakeTimeOut(){ connDownOK = true; setCookie("refreshing", "1", getExpDate(1, 0, 0)); //preMain(); QL.navGoToPage(1); } function connectionDown(){ if ( !connDownOK ){ window.status = "Uppkoppling bruten. Försöker återupprätta anslutningen..."; setTimeout( "preMain();", 10000 ); alert("Anslutningen bruten! Tryck uppdatera för att återupprätta anslutningen!"); } } function endSession() {// Denna händelse körs när en session mot Web Event Server avslutas connDownOK = true; alert( "Tjänsten NGM Kurser är tillfälligt ur funktion." ); } function redirectPage() {// Denna händelse körs när det inte finns möjlighet till realtidshändelser, tex. // kopplingen till WES server är bruten connDownOK = true; alert( "Tjänsten NGM Kurser är tillfälligt ur funktion..." ); } function reloadSession() {// När en viss mängd händelser har skickats till webbklienten så måste man ladda // om sessionen för att spara minne connDownOK = true; setTimeout( "preMain();", 10000 ); } function timeoutSession() {// När en session har pågått en viss tid så avslutas InstantPush-sessionen av InstantPush. Klienten // ska här exempelvis promptas att koppla upp igen eller avbryta. Enledningen till // denna funktionalitet är att man vill att klienter som inte är närvarande vid datorn // inte ska ta upp resurser i InstantPush. connDownOK = true; alert("Ladda om sidan igen för ansluta på nytt"); } function tooManySessions() {// Denna händelse körs när InstantPush här max-antal aktiva sessioner och inte kan ta emot fler. window.status = "Tjänsten tillfälligt överbelastad. Försöker ansluta..." connDownOK = true; setTimeout( "main();", 30000 ); } function startSession() { if (lb == null){ lb = new ListBox(); } QL.getInstrumentStaticDataXML(cookieIds); if ( window.stream.refreshing ) window.status = ""; else window.status = "Realtidsuppdatering"; } function beforeEvent() {// Denna händelse körs precis innan användar-händelse körs. } function afterEvent() {// Denna händelse körs direkt efter en användar-händelse här körts. } function heartBeat() { if ($('lbUpdateTime') == null) { stopStream(); return; } } function stopStream() { $('IPStream').src = "/blank.htm"; } function updateInstrRow() { if ($('lbUpdateTime') == null) { stopStream(); return; } var instrument = QL.getInstrument( arguments[0] ); if ( !instrument ) return; instrument.oldValues = instrument.newValues; instrument.newValues = new PriceInfo(); instrument.newValues.bid = QL.tool.ifnull(arguments[1], " "); instrument.newValues.offer = QL.tool.ifnull(arguments[3], " "); instrument.newValues.diff = QL.tool.ifnull(arguments[5], " "); instrument.newValues.latest = QL.tool.ifnull(arguments[6], " "); instrument.newValues.highest = QL.tool.ifnull(arguments[7], " "); instrument.newValues.lowest = QL.tool.ifnull(arguments[8], " "); instrument.newValues.volume = QL.tool.ifnull(arguments[9], " "); instrument.newValues.turnover = QL.tool.ifnull(Math.round(arguments[10]), " "); instrument.oldOrderDepth.buyArr[0] = instrument.orderDepth.buyArr[0]; instrument.oldOrderDepth.buyQArr[0] = instrument.orderDepth.buyQArr[0]; instrument.oldOrderDepth.sellArr[0] = instrument.orderDepth.sellArr[0]; instrument.oldOrderDepth.sellQArr[0] = instrument.orderDepth.sellQArr[0]; instrument.orderDepth.buyArr[0] = arguments[1]; instrument.orderDepth.buyQArr[0] = arguments[2]; instrument.orderDepth.sellArr[0] = arguments[3]; instrument.orderDepth.sellQArr[0] = arguments[4]; instrument.orderDepth.maxVolume = 0; for (var i = 0; i <= 5; i++) { if (parseInt(instrument.orderDepth.buyQArr[i]) > parseInt(instrument.orderDepth.maxVolume)) { instrument.orderDepth.maxVolume = parseInt(instrument.orderDepth.buyQArr[i]); } if (parseInt(instrument.orderDepth.sellQArr[i]) > parseInt(instrument.orderDepth.maxVolume)) { instrument.orderDepth.maxVolume = parseInt(instrument.orderDepth.sellQArr[i]); } } QL.updateUpdateTime(arguments[arguments.length-1]); QL.updateInstrumentRow ( instrument ); QL.updateOrderDepthTable(instrument, 1); } function updateOrderDepth() { if ($('lbUpdateTime') == null) { stopStream(); return; } var instrument = QL.getInstrument( arguments[0] ); if ( !instrument ) return; var price; var quantity; var level = arguments[2]; if (arguments[1] == "B") { price = instrument.orderDepth.buyArr[level-1]; quantity = instrument.orderDepth.buyQArr[level-1]; } else if (arguments[1] == "S") { price = instrument.orderDepth.sellArr[level-1]; quantity = instrument.orderDepth.sellQArr[level-1]; } instrument.oldOrderDepth.setOrderDepth(level, arguments[1], price, quantity); instrument.orderDepth.setOrderDepth(level, arguments[1], arguments[3], arguments[4] ); instrument.orderDepth.maxVolume = 0; for (var i = 0; i <= 5; i++) { if (parseInt(instrument.orderDepth.buyQArr[i]) > parseInt(instrument.orderDepth.maxVolume)) { instrument.orderDepth.maxVolume = parseInt(instrument.orderDepth.buyQArr[i]); } if (parseInt(instrument.orderDepth.sellQArr[i]) > parseInt(instrument.orderDepth.maxVolume)) { instrument.orderDepth.maxVolume = parseInt(instrument.orderDepth.sellQArr[i]); } } QL.updateUpdateTime(arguments[arguments.length-1]); QL.updateOrderDepthTable(instrument, arguments[2]); } function updateTrades () { // Om inte $('lbUpdateTime') finns befinner sig inte användaren på sidan. if ($('lbUpdateTime') == null) { stopStream(); return; } var instrument = QL.getInstrument( arguments[0] ); if ( !instrument ) return; var tradeArr = instrument.trades; var t = new Trade(); t.time = arguments[7]; t.buyer = arguments[5]; t.seller = arguments[6]; t.volume = arguments[4]; t.price = arguments[3]; t.cancelTime = arguments[8]; tradeArr.unshift(t); if (tradeArr.length > 5) { tradeArr.pop(); } instrument.trades = tradeArr; QL.updateUpdateTime(arguments[arguments.length-1]); QL.updateTradeTable(instrument); } var jss; var filterArr = new Array(); var cookieIds; function preMain(ids, newInstance, mylist) { if (QL == null || newInstance == true) { QL = new Quotes(); } if (newInstance == true) { lb = new ListBox() } if (ids != null) { cookieIds = ids; } else { cookieIds = null; } if (mylist == true) { QL.changeGroup(0); } else { QL.getInstrumentDataXML(ids); } } /* function preMain(ids, newInstance) { if (QL == null || newInstance == true) { QL = new Quotes(); } if (newInstance == true) { lb = new ListBox() } if (ids != null) { cookieIds = ids; } else { cookieIds = null; } QL.getInstrumentDataXML(ids); } */ function main(ids){ jss = null; var frame = document.getElementById("IPStream"); jss = new JSStream(frame); jss.url = "/scripts/webevents.dll"; with (jss.addListener("STOCKLISTCHANGE")) { event = updateInstrRow; for(var i=0; i < filterArr.length; i++){ addFilter(filterArr[i]); } } with (jss.addListener("ORDERDEPTHCHANGE")) { event = updateOrderDepth; for(var i=0; i < filterArr.length; i++){ addFilter(filterArr[i]); } } with (jss.addListener("TRADE")) { event = updateTrades; for(var i=0; i < filterArr.length; i++){ addFilter(filterArr[i]); } } window.status = "Ansluter till server"; jss.customerId = "NGM_Public"; jss.userId = "NGM_Equity"; jss.handshakeTimeoutTime = 5000; jss.refreshTimeout = 30000; connDownOK = false; if ( "1" == "0" ) jss.refreshing = true; else jss.refreshing = (getCookie("refreshing") == "1"); if ( jss.refreshing ) jss.userId = "NGM_Equity*"; jss.start(); }