{"version":3,"file":"prodgec.js","mappings":"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","sources":["webpack://gbet.exchange.website/./libs/gbe.gec/gbe.gec.common.js","webpack://gbet.exchange.website/./libs/gbe.gec/gbe.gec.exchange.js","webpack://gbet.exchange.website/./libs/gbe.gec/gbe.gec.sportsbook.js","webpack://gbet.exchange.website/./libs/gbe.gec/gbe.gec.multiples.js"],"sourcesContent":["/* eslint-disable */\r\n\r\nwindow.gec = (function (gec) {\r\n /* ***********************\r\n 1.Sealer//this is how we handle private properties over different files\r\n 2.Methods Definitions\r\n 3.Object/Enum Definitions\r\n\r\n ********************** */\r\n\r\n var gecPrivate = gec.gecPrivate = gec.gecPrivate || {},\r\n gecSeal = gec.gecSeal = gec.gecSeal || function () {\r\n delete gec.gecPrivate;\r\n delete gec.gecSeal;\r\n delete gec.gecUnseal;\r\n },\r\n gecUnseal = gec.gecUnseal = gec.gecUnseal || function () {\r\n gec.gecPrivate = gecPrivate;\r\n gec.gecSeal = gecSeal;\r\n gec.gecUnseal = gecUnseal;\r\n };\r\n\r\n var _version = {\r\n implementationVersion: \"15.1.0\"\r\n };\r\n var _aapiVersion = \"2.2\";\r\n\r\n\r\n gecPrivate._GBEHeader = {\r\n version: 2,\r\n fragmentLanguage: \"Javascript\",\r\n fragmentVersion: \"\",\r\n clientIdentifier: \"GEC\"\r\n };\r\n\r\n var socket = null;\r\n var listExchangeMarketsXHR;\r\n\r\n var _convertBodyItem = function (newObject, name, value, converter) {\r\n\r\n if (name == \"\") return newObject;\r\n\r\n var names = name.split(\"-\");\r\n if (names.length > 1) {\r\n var namePrefix = names[0].split(\"V\")[0];\r\n var index = (names[0].split(\"V\")[1] * 1) - 1;\r\n\r\n var remainingName = name.substr(name.indexOf(\"-\") + 1);\r\n\r\n if (converter[namePrefix] == null) {\r\n converter = converter[0];\r\n }\r\n if (newObject[namePrefix] == null) {\r\n newObject[namePrefix] = [];\r\n }\r\n if (newObject[namePrefix][index] == null) {\r\n newObject[namePrefix][index] = {};\r\n }\r\n return _convertBodyItem(newObject[namePrefix][index], remainingName, value, converter[namePrefix]);\r\n } else {\r\n if (converter[name] == null) {\r\n converter = converter[0];\r\n }\r\n\r\n if (value == \"T\") value = true;\r\n if (value == \"F\") value = false;\r\n\r\n newObject[converter[name]] = value;\r\n }\r\n\r\n return newObject;\r\n };\r\n //Set all delegates to not fired for when we reconnect push\r\n var resetFiredDelegates = function () {\r\n if (gecPrivate._subscribedExchangeMarket !== undefined) {\r\n Object.keys(gecPrivate._subscribedExchangeMarket).forEach(function(item) {\r\n gecPrivate._subscribedExchangeMarket[item].prototype.resetFiredDelegates();\r\n });\r\n }\r\n if (gecPrivate._subscribedExchangeEvent !== undefined) {\r\n Object.keys(gecPrivate._subscribedExchangeEvent).forEach(function(item) {\r\n gecPrivate._subscribedExchangeEvent[item].prototype.resetFiredDelegates();\r\n });\r\n }\r\n if (gecPrivate.subscribedExchangeEventTabs !== undefined) {\r\n Object.keys(gecPrivate.subscribedExchangeEventTabs).forEach(function(item) {\r\n gecPrivate.subscribedExchangeEventTabs[item].prototype.resetFiredDelegates();\r\n });\r\n }\r\n if (gecPrivate._subscribedExchangeSelection !== undefined) {\r\n Object.keys(gecPrivate._subscribedExchangeSelection).forEach(function(item) {\r\n gecPrivate._subscribedExchangeSelection[item].prototype.resetFiredDelegates();\r\n });\r\n }\r\n if (gecPrivate._subscribedRacePool !== undefined) {\r\n Object.keys(gecPrivate._subscribedRacePool).forEach(function(item) {\r\n gecPrivate._subscribedRacePool[item].prototype.resetFiredDelegates();\r\n });\r\n }\r\n if (gecPrivate._subscribedRace !== undefined) {\r\n Object.keys(gecPrivate._subscribedRace).forEach(function(item) {\r\n gecPrivate._subscribedRace[item].prototype.resetFiredDelegates();\r\n });\r\n }\r\n if (gecPrivate._subscribedRunner !== undefined) {\r\n Object.keys(gecPrivate._subscribedRunner).forEach(function(item) {\r\n gecPrivate._subscribedRunner[item].prototype.resetFiredDelegates();\r\n });\r\n }\r\n if (gecPrivate._subscribedCTV !== undefined) {\r\n Object.keys(gecPrivate._subscribedCTV).forEach(function(item) {\r\n gecPrivate._subscribedCTV[item].prototype.resetFiredDelegates();\r\n });\r\n }\r\n if (gecPrivate._subscribedRTV !== undefined) {\r\n Object.keys(gecPrivate._subscribedRTV).forEach(function(item) {\r\n gecPrivate._subscribedRTV[item].prototype.resetFiredDelegates();\r\n });\r\n }\r\n if (gecPrivate._subscribedGTV !== undefined) {\r\n Object.keys(gecPrivate._subscribedGTV).forEach(function(item) {\r\n gecPrivate._subscribedGTV[item].prototype.resetFiredDelegates();\r\n });\r\n }\r\n }\r\n\r\n gec.aapiId = {\r\n setAnonymousSessionContext: 1,\r\n logonPunter: 2,\r\n logoffPunter: 3,\r\n subscribePoolBettingSummary: 4,\r\n subscribeRaceInformation: 5,\r\n subscribeRacePools: 6,\r\n subscribeCardTaggedValueChanges: 7,\r\n subscribeRaceTaggedValueChanges: 8,\r\n subscribeGenericTaggedValueChanges: 15,\r\n subscribeAsynchronousResponse: 18,\r\n unsubscribe: 20,\r\n listSubscriptions: 21\r\n };\r\n\r\n\r\n gec.Controller = function (params) {\r\n\r\n var controllerDefaults = {\r\n language: \"en\",\r\n integrationPartnerId: 0,\r\n currency: 'EUR',\r\n organisationalUnitId: 1,\r\n priceFormat: 1\r\n };\r\n var clientLogConfig = params.clientLogConfig;\r\n\r\n var mockIAPI = params.mockIAPI; // mock IAPI used for unit-testing of GEC\r\n\r\n gecPrivate._base = com.globalbettingexchange.base;\r\n var _params = params;\r\n var _cookieRefreshRate = 60000; // millieseconds\r\n var _cookieTimeout = 3600000; // millieseconds\r\n\r\n // Values used when storing the session token in a cookie\r\n var _storeSessionTokenInCookieWithExpiryTime = false;\r\n var sessionTokenCookieName = \"IAPISessionToken\";\r\n gecPrivate.userContextCookieName = \"GECUserContext\";\r\n gecPrivate.sameSiteValueForCookies = params.sameSiteValueForCookies;\r\n gecPrivate.controllerDefaults = controllerDefaults;\r\n gecPrivate._version = _version;\r\n gecPrivate._aapiVersion = _aapiVersion;\r\n\r\n var _logClientEntries = false;\r\n var _apisNotToBeSentClientLogging = [];\r\n var _queueingIAPISettings = { isEnabled: false };\r\n var _queueingGECSystemParams = {};\r\n\r\n gecPrivate.numberOfGetRacesCallsToLog = 1;\r\n gecPrivate.numberOfRaceStatusUpdatesToLog = 5;\r\n gecPrivate.numberOfPoolStatusUpdatesToLog = 30;\r\n\r\n var _pushHealthcheck = {\r\n enabled: false,\r\n timeout: 5000,\r\n interval: 5000\r\n }\r\n gecPrivate._pushHealthcheck = _pushHealthcheck;\r\n\r\n //useAjax, check same domain policy, check Flash, useProxy\r\n var _thisController = this;\r\n gecPrivate._debug = false;\r\n gecPrivate._thisController = _thisController;\r\n this.isStreamingEnabled = false;\r\n\r\n var _onControllerLoaded = params.onLoaded; //fired why all objects and proxies have been created but before any apis called\r\n var _proxyController;\r\n\r\n gecPrivate._isConnecting = false;\r\n\r\n gecPrivate.userContext = null;\r\n gecPrivate.userContextAAPI = null;\r\n gecPrivate.sessionToken = undefined;\r\n\r\n var _telebetSessionToken = null;\r\n gecPrivate._arbitrarySessionToken = null;\r\n var _oddsLadder = null;\r\n gecPrivate._eventClassifiers = { 1: new gec.EventClassifier() }; //used to store eventClassifiers in cache including hostoric events\r\n gecPrivate._markets = {}; //used to store markets in cache indexed by id\r\n gecPrivate._selections = {}; //used to store selections in cache\r\n gecPrivate._eventClassifiersForClient = []; //used to store eventClassifiers cache for client\r\n\r\n var _eventsMarkets = {};\r\n\r\n var _topLevelId = 1; // 181582;\r\n var _connectionHealth = 0;\r\n gecPrivate._maxSequenceNo = 0;\r\n gecPrivate._bootstrapFailedAttempts = 0;\r\n\r\n var _deletedOrderIds = {};\r\n gecPrivate._orderCache = {};\r\n gecPrivate.pollChangedOrdersTime = 5000;\r\n gecPrivate._orderCacheInterval = null;\r\n var _overlays = [];\r\n\r\n gecPrivate._aapiSessionToken;\r\n gecPrivate._correlationData = [];\r\n gecPrivate._pushMessages = {};\r\n gecPrivate._subscriptions = [];\r\n gecPrivate._subscriptionData = [];\r\n\r\n gecPrivate._connectionHealthChangeDelegates = [];\r\n\r\n gecPrivate._subscribedCard = {};\r\n gecPrivate._subscribedCardILDelegates = [];\r\n gecPrivate._subscribedCardDeltaDelegates = [];\r\n gecPrivate._subscribedRace = {};\r\n gecPrivate._subscribedRaceILDelegates = [];\r\n gecPrivate._subscribedRaceDeltaDelegates = [];\r\n gecPrivate._subscribedRacePool = {};\r\n gecPrivate._subscribedRacePoolILDelegates = [];\r\n gecPrivate._subscribedRacePoolDeltaDelegates = [];\r\n gecPrivate._subscribedRunner = {};\r\n gecPrivate._subscribedRunnerILDelegates = [];\r\n gecPrivate._subscribedRunnerDeltaDelegates = [];\r\n gecPrivate._subscribedCTV = {};\r\n gecPrivate._subscribedCTVILDelegates = [];\r\n gecPrivate._subscribedCTVDeltaDelegates = [];\r\n gecPrivate._subscribedRTV = {};\r\n gecPrivate._subscribedRTVILDelegates = [];\r\n gecPrivate._subscribedRTVDeltaDelegates = [];\r\n gecPrivate._subscribedGTV = {};\r\n gecPrivate._subscribedGTVILDelegates = [];\r\n gecPrivate._subscribedGTVDeltaDelegates = [];\r\n gecPrivate._subscribedAsyncResponse = {};\r\n gecPrivate._subscribedAsyncResponseILDelegates = [];\r\n gecPrivate._subscribedAsyncResponseDeltaDelegates = [];\r\n\r\n gecPrivate._subscribedExchangeEventILDelegates = [];\r\n gecPrivate._subscribedExchangeMarketILDelegates = [];\r\n gecPrivate._subscribedExchangeSelectionILDelegate = [];\r\n gecPrivate._subscribedMarketScoresILDelegate = [];\r\n gecPrivate._subscribedExchangeSelectionPricesILDelegate = [];\r\n gecPrivate._subscribedExchangeSelectionFixedOddsPricesILDelegate = [];\r\n gecPrivate._subscribedExchangeMarketMatchedAmountILDelegate = [];\r\n\r\n\r\n gecPrivate._subscribedCustomHierarchyNode = {};\r\n gecPrivate._subscribedExchangeEvent = {};\r\n gecPrivate._subscribedExchangeEventMatchedAmount = {};\r\n gecPrivate._subscribedExchangeMarket = {};\r\n gecPrivate._subscribedExchangeMarketMatchedAmount = {};\r\n\r\n gecPrivate._subscribedExchangeMarketNew = {};\r\n gecPrivate._subscribedExchangeSelection = {};\r\n gecPrivate._subscribedExchangeSelectionMatchedAmount = {};\r\n gecPrivate._subscribedItemNames = {};\r\n gecPrivate._subscribedMarketScores = {};\r\n gecPrivate._subscribedOrder = {};\r\n gecPrivate._subscribedExchangeSelectionPrices = {};\r\n gecPrivate._subscribedExchangeSelectionIndexedPrices = {};\r\n gecPrivate._subscribedExchangeSelectionFixedOddsPrices = {};\r\n gecPrivate._subscribedSelectionPAndL = {};\r\n gecPrivate._subscribedSelectionPriceHistory = {};\r\n\r\n gecPrivate.passwordValidityRegExp = params.passwordValidityRegExp;\r\n this.setPasswordValidityRegExp = function (passwordValidityRegExp) {\r\n gecPrivate.passwordValidityRegExp = passwordValidityRegExp;\r\n };\r\n\r\n gecPrivate.disableStreamingInitialisation = params.disableStreamingInitialisation;\r\n gecPrivate.neverCallRefreshArbitrarySessionInformation = params.neverCallRefreshArbitrarySessionInformation;\r\n\r\n gecPrivate.makeIAPIRequestsWithContentTypeJSON = params.makeIAPIRequestsWithContentTypeJSON;\r\n\r\n //temp credentials while waitig for AAPIcalls lodgeFunds\r\n var _username;\r\n var _password;\r\n\r\n var _eventPollInterval = null;\r\n var _eventCacheRefreshRate = 120000; //2 minute refresh\r\n gecPrivate._lastPingRoundtripMS = 0;\r\n gecPrivate._lastPingedAt = 0;\r\n var _pingHandle;\r\n var _pingInterval = 30000;\r\n var _controllerLoadedTimeout = 1000;\r\n var _pushHealthcheckHandle;\r\n var _haveReceivedAtLeastOneStreamingMessage = false;\r\n\r\n\r\n var _callBack = [];\r\n this.setCallBack = function (guid, request, callBack) {\r\n _callBack[guid] = function (response) { callBack.call(this, request, response); };\r\n }\r\n this.doCallBack = function (guid, response) {\r\n _callBack[guid].call(this, response);\r\n delete _callBack[guid];\r\n }\r\n\r\n gecPrivate.addToCorrelation = function (params) {\r\n var correlationId = gecPrivate._correlationData.length;\r\n gecPrivate._correlationData[correlationId] = params;\r\n return correlationId;\r\n }\r\n\r\n this.sendRequest = function () { alert(\"Not Set\"); }; // assigned when we know ajaxViaController\r\n\r\n //kiosk specific events\r\n this.onCashStacked;\r\n this.onSingleTicketEscrowed;\r\n this.onMultipleTicketEscrowed;\r\n this.onSingleTicketStacked;\r\n this.onMultipleTicketStacked;\r\n this.onCashTicketEscrowed;\r\n this.onCashTicketStacked;\r\n this.onPrinterEvent;\r\n\r\n //mobile events here\r\n this.homeButtonPressed;\r\n this.menuButtonPressed;\r\n\r\n var _retryRequestURLs = [\r\n \"/ListOrdersChangedSince.ashx\",\r\n \"/ListBootstrapOrders.ashx\"\r\n ];\r\n var _isRetryRequestURL = function (page) {\r\n for (var i = 0; i < _retryRequestURLs.length; i++) {\r\n if (_retryRequestURLs[i] === page) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n var _createUUID = function () {\r\n // http://www.ietf.org/rfc/rfc4122.txt\r\n var s = [];\r\n var hexDigits = \"0123456789abcdef\";\r\n for (var i = 0; i < 36; i++) {\r\n s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);\r\n }\r\n s[12] = \"4\"; // bits 12-15 of the time_hi_and_version field to 0010\r\n s[16] = hexDigits.substr((s[16] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01\r\n\r\n s[8] = '-';\r\n s[13] = '-';\r\n s[19] = '-';\r\n s[25] = '-';\r\n\r\n var uuid = s.join(\"\");\r\n return uuid + '';\r\n }\r\n function ClientLogger() {\r\n\r\n var GUIDs = {\r\n \"application\": _createUUID()\r\n };\r\n\r\n this.init = function (section) {\r\n GUIDs[section] = _createUUID();\r\n };\r\n\r\n this.logClientEntry = function (params) {\r\n\r\n // Limit logging to certain punters via PTV\r\n if (clientLogConfig && clientLogConfig.enableLogging) {\r\n\r\n /*\r\n 1 PunterInteraction This ClientLogEntry logs an explicit action taken by the punter.\r\n 2 ExternalSystemInteraction This ClientLogEntry logs an explicit interaction initiated by an external system (e.g. a containing web page).\r\n 3 ClientApplicationAction This ClientLogEntry logs an action initiated by the client application (e.g. a timed event)\r\n 4 ConfigurationInformation This ClientLogEntry just records configuration information (and not an explicit event).\r\n */\r\n var userInteractionType = params.userInteractionType || 1;\r\n\r\n _thisController.addClientLogEntry({\r\n clientName: clientLogConfig.clientName,\r\n clientVersion: clientLogConfig.clientVersion,\r\n logEntry: params.logEntry,\r\n eventTime: params.eventTime || new Date().toISOString(),\r\n eventEndTime: params.eventEndTime || new Date().toISOString(),\r\n clientLogEntryType: params.clientLogEntryType || 1,\r\n userInteractionType: userInteractionType, //1=mouse 2 key\r\n systemInteractionType: 1,\r\n componentName: params.componentName,//left nav, homepage, event card, mode, right nav,\r\n subcomponentName: params.subcomponentName,\r\n itemSelected: GUIDs[params.componentName],\r\n importance: 1,\r\n entryCode1: params.entryCode1,\r\n entryCode2: params.entryCode2,\r\n entryCode3: params.entryCode3,\r\n entryCode4: params.entryCode4\r\n });\r\n\r\n }\r\n };\r\n\r\n };\r\n\r\n gecPrivate.clientLogger = new ClientLogger();\r\n\r\n var _callBack = [];\r\n this.setCallBack = function (guid, request, callBack) {\r\n _callBack[guid] = function (response) { callBack.call(this, request, response); };\r\n }\r\n this.doCallBack = function (guid, response) {\r\n _callBack[guid].call(this, response);\r\n delete _callBack[guid];\r\n }\r\n\r\n gecPrivate.addToCorrelation = function (params) {\r\n var correlationId = gecPrivate._correlationData.length;\r\n gecPrivate._correlationData[correlationId] = params;\r\n return correlationId;\r\n }\r\n\r\n var pushHealthcheckEnabled = function () {\r\n if (_pushHealthcheck.user && _pushHealthcheck.user.enabled) {\r\n return true;\r\n }\r\n return _pushHealthcheck.enabled;\r\n }\r\n\r\n var pushHealthcheckInterval = function () {\r\n if (_pushHealthcheck.user && _pushHealthcheck.user.interval) {\r\n return _pushHealthcheck.user.interval;\r\n }\r\n return _pushHealthcheck.interval;\r\n }\r\n\r\n var pushHealthcheckTimeout = function () {\r\n if (_pushHealthcheck.user && _pushHealthcheck.user.timeout) {\r\n return _pushHealthcheck.user.timeout;\r\n }\r\n return _pushHealthcheck.timeout;\r\n }\r\n\r\n // Add the message to object (keyed by the correlationId) to check that we have received a response.\r\n // On the callback we will remove this message. The object will be checked periodically and\r\n // if there are old messages i.e. messages we haven't received a response for, we will\r\n // initiate a reconnect\r\n gecPrivate.addToPushMessages = function (params) {\r\n if (pushHealthcheckEnabled()) {\r\n // Start the timer if it doesn't already exist\r\n if (!_pushHealthcheckHandle) {\r\n clearPushMessages();\r\n _pushHealthcheckHandle = window.setInterval(function () {\r\n checkPushMessages();\r\n }, pushHealthcheckInterval());\r\n\r\n if (gecPrivate.userContext && gecPrivate.userContext.partnerUsername) {\r\n gecPrivate.clientLogger.logClientEntry({\r\n clientLogEntryType: 3,\r\n componentName: \"application\",\r\n subcomponentName: \"push\",\r\n logEntry: \"SOCK: Starting healthcheck for punter: \" + gecPrivate.userContext.partnerUsername\r\n });\r\n }\r\n }\r\n\r\n var messageObj = { sentTime: Date.now(), request: params };\r\n gecPrivate._pushMessages[params[0]] = messageObj;\r\n }\r\n }\r\n\r\n gecPrivate.removeFromPushMessages = function (correlationId) {\r\n // Remove the message from the list once ou have received a response\r\n delete gecPrivate._pushMessages[correlationId];\r\n }\r\n\r\n var clearPushMessages = function () {\r\n gecPrivate._pushMessages = {};\r\n }\r\n\r\n var checkPushMessages = function () {\r\n if (pushHealthcheckEnabled() && _thisController.streamingConnectionDetails) {\r\n // Loop through all the keys in the object\r\n for (var key in gecPrivate._pushMessages) {\r\n if (gecPrivate._pushMessages.hasOwnProperty(key)) {\r\n // Check the timestamp of the key and see of it is old\r\n if (gecPrivate._pushMessages[key].sentTime < Date.now() - pushHealthcheckTimeout()) {\r\n\r\n\r\n gecPrivate.clientLogger.logClientEntry({\r\n clientLogEntryType: 3,\r\n componentName: \"application\",\r\n subcomponentName: \"push\",\r\n logEntry: \"SOCK: Response timeout, forcing reconnection\"\r\n });\r\n\r\n\r\n // Close the connection and reconnect\r\n _onConnectionLost();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n var stopPushHealthcheckTimer = function () {\r\n if (_pushHealthcheckHandle != null) {\r\n window.clearInterval(_pushHealthcheckHandle);\r\n _pushHealthcheckHandle = null;\r\n }\r\n clearPushMessages();\r\n }\r\n gecPrivate.stopPushHealthcheckTimer = stopPushHealthcheckTimer;\r\n\r\n this.sendRequest = function () { alert(\"Not Set\"); }; // assigned when we know ajaxViaController\r\n\r\n //kiosk specific events\r\n this.onCashStacked;\r\n this.onSingleTicketEscrowed;\r\n this.onMultipleTicketEscrowed;\r\n this.onSingleTicketStacked;\r\n this.onMultipleTicketStacked;\r\n this.onCashTicketEscrowed;\r\n this.onCashTicketStacked;\r\n this.onPrinterEvent;\r\n\r\n //mobile events here\r\n this.homeButtonPressed;\r\n this.menuButtonPressed;\r\n\r\n\r\n\r\n /** Return a Promise for a specified GEC method. This maps\r\n * callbackOnSuccess -> resolve()\r\n * callbackOnException -> reject()\r\n * @input {string} methodName\r\n * @input {Object} inputs for API call\r\n * @return {Promise}\r\n **/\r\n this.getPromise = function (methodName, inputs) {\r\n\r\n var gec = this;\r\n\r\n return new Promise(function (resolve, reject) {\r\n\r\n inputs[\"callbackOnSuccess\"] = function (response) {\r\n resolve(response);\r\n };\r\n\r\n inputs[\"callbackOnException\"] = function (response) {\r\n reject(response);\r\n };\r\n\r\n gec[methodName](inputs);\r\n });\r\n }\r\n\r\n function connect(url, onComplete, sockOptions) { //declared at this scope as needed again for reconnect function\r\n\r\n var options = sockOptions;\r\n\r\n if (sockOptions.length) {//backward compatibile to transport array\r\n options = { transports: sockOptions, debug: false };\r\n }\r\n\r\n socket = new SockJS(url, null, options);\r\n\r\n socket.onmessage = function (e) {\r\n _haveReceivedAtLeastOneStreamingMessage = true;\r\n logConsole(\"socket receiving... \" + e.data);\r\n if (e.data[0] === \"{\") {\r\n _onDataEventJSON(e.data);\r\n } else {\r\n var webClientMessage = new GBEWebClientMessage(e.data);\r\n _onDataEvent(webClientMessage);\r\n }\r\n };\r\n\r\n socket.onopen = function (params) {\r\n logConsole(\"socket opened\");\r\n if (onComplete) {\r\n onComplete(true);\r\n }\r\n _onSocketOpen(true);\r\n };\r\n\r\n socket.onerror = function (error) {\r\n logConsole(\"socket error\");\r\n logConsole(error);\r\n };\r\n\r\n socket.onclose = function (params) {\r\n logConsole(\"socket closed...\");\r\n logConsole(params);\r\n socket = null;\r\n _onSocketClose(onComplete);\r\n };\r\n }\r\n\r\n function logConsole(message) {\r\n if (_thisController.streamingConnectionDetails.debug) {\r\n console.log(message);\r\n }\r\n }\r\n\r\n function isStreamingEnabledAtGECInstantiation() {\r\n\r\n if (gecPrivate.disableStreamingInitialisation === true) {\r\n return false;\r\n }\r\n\r\n return (_thisController.streamingConnectionDetails !== undefined);\r\n }\r\n\r\n this.initStreaming = function (params) {\r\n _thisController.isStreamingEnabled = true;\r\n if (socket === null) {\r\n connect(_thisController.streamingConnectionDetails.sockURL, params.callbackOnSuccess, _thisController.streamingConnectionDetails.options || _thisController.streamingConnectionDetails.transports);\r\n } else {\r\n params.callbackOnSuccess();\r\n }\r\n };\r\n\r\n this._init = function () {\r\n\r\n if (isStreamingEnabledAtGECInstantiation()) {\r\n if (_pingHandle != null) {\r\n window.clearInterval(_pingHandle);\r\n }\r\n\r\n stopPushHealthcheckTimer();\r\n\r\n if (_thisController.streamingConnectionDetails\r\n && _thisController.streamingConnectionDetails.sockURL !== undefined) {\r\n\r\n //do sock.js connection\r\n try {\r\n connect(_thisController.streamingConnectionDetails.sockURL, undefined, _thisController.streamingConnectionDetails.options || _thisController.streamingConnectionDetails.transports);\r\n } catch (ex) {\r\n console.error(\"Error connecting to \" + _thisController.streamingConnectionDetails.sockURL);\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n\r\n if (mockIAPI) {\r\n\r\n this.sendRequest = mockIAPI.mockIAPIRequestHandler;\r\n\r\n } else {\r\n\r\n //use Ajax\r\n this.sendRequest = this.makeAjaxRequest;\r\n\r\n if (!isStreamingEnabledAtGECInstantiation()) {\r\n\r\n if (_storeSessionTokenInCookieWithExpiryTime) {\r\n\r\n var sessionAlreadyExists = (gecPrivate._base.getCookie(sessionTokenCookieName) != \"\");\r\n gecPrivate.sessionToken = gecPrivate._base.getCookie(sessionTokenCookieName);\r\n var userContextCookie = gecPrivate._base.getCookie(gecPrivate.userContextCookieName);\r\n var userContext = {};\r\n if (userContextCookie != \"\") {\r\n userContext = JSON.parse(userContextCookie);\r\n gecPrivate.userContext = userContext;\r\n }\r\n\r\n if (sessionAlreadyExists) {\r\n _arbRefreshID = window.setInterval(function () {\r\n if (_storeSessionTokenInCookieWithExpiryTime && isSessionTokenCookieExpired())\r\n return;\r\n\r\n if (_keepAlive) {\r\n\r\n if (gecPrivate.sessionToken != null)\r\n extendLifeOfSessionTokenCookie();\r\n\r\n _keepAlive = false;\r\n\r\n // If callback exists, call it to let calling code know we have extended the session\r\n if (_params.onSessionExtended)\r\n _params.onSessionExtended.call();\r\n }\r\n }, _cookieRefreshRate);\r\n }\r\n //must be fired on timout because systemparams may be passed as object not stirng like \"web\"\r\n if (_onControllerLoaded && !loadedAlreadyFired) {\r\n loadedAlreadyFired = true;\r\n window.setTimeout(function () {\r\n _onControllerLoaded(sessionAlreadyExists, userContext);\r\n }, 100);\r\n }\r\n }\r\n else {\r\n\r\n if (_onControllerLoaded && !loadedAlreadyFired) {\r\n loadedAlreadyFired = true;\r\n window.setTimeout(function () {\r\n _onControllerLoaded(false, null);\r\n }, 100);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n // Ajax calls via Controller (Flash/ActiveX-kiosk) - used when calling different domain and\r\n // flash/controller installed\r\n this.sendControllerRequest = function (page, request) {\r\n var guid = new Date().getTime();\r\n _thisController.setCallBackArray(guid, request.onSuccess);\r\n\r\n var req = \"?\";\r\n\r\n for (obj in request) {\r\n req += \"&\" + obj + \"=\" + request[obj];\r\n }\r\n\r\n return _proxyController.sendRequest(params.iapiURL + page, guid, req);\r\n }\r\n this.controllerResponseReceived = function (guid, response) {\r\n response = JSON.parse(response);\r\n _thisController.getCallBackArray()[guid].call(null, response);\r\n _thisController.deleteCallBackArray(guid);\r\n }\r\n\r\n function apiNameFromPageName(page) {\r\n return page.replace(/^\\//, \"\").replace(/\\.aspx$/, \"\").replace(/\\.ashx$/, \"\"); // e.g. \"/GetRaces.aspx\" -> \"GetRaces\"\r\n }\r\n\r\n function isQueueTokenRequired(apiName) {\r\n if (_queueingIAPISettings.isEnabled !== true) {\r\n return false;\r\n }\r\n return _queueingIAPISettings.appliesTo.includes(apiName);\r\n }\r\n\r\n // Ajax calls via JQuery Javascript - used when calling same domain\r\n this.makeAjaxRequest = function makeAjaxRequest(page, request, callBack, xmlhttp, timeoutLimit, isAsyncEnrolPunter) {\r\n var thisGEC = this;\r\n var apiName = apiNameFromPageName(page);\r\n\r\n if (isQueueTokenRequired(apiName) && !request.queueToken) {\r\n thisGEC.queueAjaxRequest(page, request, callBack, xmlhttp, timeoutLimit, isAsyncEnrolPunter);\r\n } else {\r\n thisGEC.sendAjaxRequest(page, request, callBack, xmlhttp, timeoutLimit, isAsyncEnrolPunter);\r\n }\r\n };\r\n\r\n this.queueAjaxRequest = function queueAjaxRequest(page, request, callBack, xmlhttp, timeoutLimit, isAsyncEnrolPunter) {\r\n var thisGEC = this;\r\n var requestQueueTokenRequest = {\r\n iapiName: apiNameFromPageName(page),\r\n partnerUsername: apiNameFromPageName(page) === \"EstablishSession\" && request.passPartnerUsernameToRequestQueueToken !== false ? request.partnerUsername : undefined,\r\n reCAPTCHAToken: apiNameFromPageName(page) === \"EstablishSession\" ? request.reCAPTCHAToken : undefined,\r\n queueTokenIdentifier: request.queueToken ? request.queueToken.queueTokenIdentifier : undefined,\r\n enrolmentTOTP: request.enrolmentTOTP\r\n };\r\n\r\n thisGEC.sendAjaxRequest(\"/RequestQueueToken.aspx\", requestQueueTokenRequest, function (requestQueueTokenRequest, requestQueueTokenResponse) {\r\n\r\n var delayInSecondsIfQueueIsFull = 5;\r\n\r\n if (requestQueueTokenResponse.returnCode === gec.ReturnCode.QueueFull) {\r\n request.callbackOnQueueingOfRequest(delayInSecondsIfQueueIsFull);\r\n setTimeout(function () {\r\n thisGEC.queueAjaxRequest(page, request, callBack, xmlhttp, timeoutLimit, isAsyncEnrolPunter);\r\n }, delayInSecondsIfQueueIsFull * 1000);\r\n return;\r\n }\r\n\r\n if (requestQueueTokenResponse.returnCode !== gec.ReturnCode.Success\r\n && requestQueueTokenResponse.returnCode !== gec.ReturnCode.QueueingNotEnabled) {\r\n callBack.call(this, request, {\r\n returnCode: requestQueueTokenResponse.returnCode\r\n });\r\n return;\r\n }\r\n\r\n if (_queueingGECSystemParams.adjustWaitTimeInSeconds !== undefined &&\r\n requestQueueTokenResponse.waitTimeInSeconds !== undefined) {\r\n requestQueueTokenResponse.waitTimeInSeconds = requestQueueTokenResponse.waitTimeInSeconds + _queueingGECSystemParams.adjustWaitTimeInSeconds;\r\n }\r\n\r\n request.queueToken = requestQueueTokenResponse.queueToken;\r\n\r\n if (requestQueueTokenResponse.queueToken &&\r\n requestQueueTokenResponse.waitTimeInSeconds > 0) {\r\n\r\n if (request.callbackOnQueueingOfRequest) {\r\n request.callbackOnQueueingOfRequest(requestQueueTokenResponse.waitTimeInSeconds);\r\n }\r\n setTimeout(function () {\r\n thisGEC.sendAjaxRequest(page, request, handleAjaxResponse, xmlhttp, timeoutLimit, isAsyncEnrolPunter);\r\n }, requestQueueTokenResponse.waitTimeInSeconds * 1000);\r\n } else {\r\n thisGEC.sendAjaxRequest(page, request, handleAjaxResponse, xmlhttp, timeoutLimit, isAsyncEnrolPunter);\r\n }\r\n\r\n function handleAjaxResponse(request, response) {\r\n switch (response.returnCode) {\r\n case gec.ReturnCode.QueueTokenNotYetValid:\r\n setTimeout(function () {\r\n thisGEC.sendAjaxRequest(page, request, handleAjaxResponse, xmlhttp, timeoutLimit, isAsyncEnrolPunter);\r\n }, 1000);\r\n break;\r\n case gec.ReturnCode.InvalidQueueToken:\r\n delete request.queueToken;\r\n thisGEC.queueAjaxRequest(page, request, handleAjaxResponse, xmlhttp, timeoutLimit, isAsyncEnrolPunter);\r\n break;\r\n default:\r\n callBack.call(this, request, response);\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n gec.urlencode = function (str) {\r\n str = encodeURIComponent(str);\r\n str = str.replace(/\\+/g, \"%2B\");\r\n str = str.replace('%20', '+');\r\n str = str.replace('*', '%2A');\r\n str = str.replace(/\\'/g, '%27');\r\n str = str.replace('@', '%40');\r\n return str;\r\n };\r\n gec.getReturnCodeName = function (rc) {\r\n\r\n var name = 'UnknownReturnCode';\r\n switch (rc * 1) {\r\n case 0: name = 'Success'; break;\r\n case 1: name = 'ResourceError'; break;\r\n case 2: name = 'SystemError'; break;\r\n case 5: name = 'EventClassifierDoesNotExist'; break;\r\n case 8: name = 'MarketDoesNotExist'; break;\r\n\r\n\r\n case 11: name = 'SelectionDoesNotExist'; break;\r\n case 15: name = 'MarketNotActive'; break;\r\n case 17: name = 'SelectionNotActive'; break;\r\n case 22: name = 'NoUnmatchedAmount'; break;\r\n case 23: name = 'CurrencyNotValid'; break;\r\n case 25: name = 'PunterReservationPerMarketExceeded'; break;\r\n case 114: name = 'ResetHasOccurred'; break;\r\n case 128: name = 'TradingCurrentlySuspended'; break;\r\n case 131: name = 'InvalidPrice'; break;\r\n case 136: name = 'WithdrawalSequenceNumberIsInvalid'; break;\r\n case 137: name = 'MaximumInputRecordsExceeded'; break;\r\n case 208: name = 'PunterSuspended'; break;\r\n case 240: name = 'PunterProhibitedFromPlacingOrders'; break;\r\n case 241: name = 'InsufficientPunterFunds'; break;\r\n case 255: name = 'DepositWouldExceedPunterLimit'; break\r\n case 271: name = 'OrderAPIInProgress'; break;\r\n case 302: name = 'PunterIsSuspendedFromTrading'; break;\r\n case 305: name = 'ExpiryTimeInThePast'; break;\r\n case 314: name = 'PunterRestrictedFromAgainstSideOrders'; break;\r\n case 315: name = 'PunterRestrictedFromForSideOrders'; break;\r\n case 316: name = 'PunterRestrictedToFillKillOrders'; break;\r\n case 406: name = 'PunterIsBlacklisted'; break;\r\n case 473: name = 'ThresholdSpecifiedTooSmall'; break;\r\n case 477: name = 'UnmatchedOrderCouldResult'; break;\r\n case 486: name = 'ExpiredTAndCVersion'; break;\r\n case 493: name = 'PICPunterNotKnown'; break;\r\n case 494: name = 'PICPunterNotActive'; break;\r\n case 495: name = 'PICInsufficientFunds'; break;\r\n case 496: name = 'PICSystemError'; break;\r\n case 497: name = 'PICCurrencyNotValid'; break;\r\n case 498: name = 'PICUnavailable'; break;\r\n case 555: name = 'IsLineBetting '; break;\r\n case 591: name = 'DefaultsNotLoaded'; break;\r\n case 592: name = 'OrderCacheNotPresent'; break;\r\n case 597: name = 'MarketIsForRealMoney'; break;\r\n case 598: name = 'MarketIsForPlayMoney'; break;\r\n case 617: name = 'PunterRestrictedToFillKillDangerballOrde'; break;\r\n\r\n case 596: name = 'StakeOutsideAcceptableRange'; break;\r\n case 597: name = 'MarketIsForRealMoney'; break;\r\n case 598: name = 'MarketIsForPlayMoney'; break;\r\n case 599: name = 'MarketIsForPlay'; break;\r\n case 600: name = 'PunterHasPlayCurrency'; break;\r\n case 610: name = 'RequestDidNotAuthenticate'; break;\r\n case 612: name = 'PunterNotAuthenticated'; break;\r\n case 613: name = 'IntegrationPartnerIsStandalone'; break;\r\n case 614: name = 'IntegrationPartnerIsNotStandalone'; break;\r\n case 615: name = 'APIIsDeprecated'; break;\r\n case 616: name = 'PunterHasRealCurrency'; break;\r\n case 617: name = 'CurrentlyUserSession'; break;\r\n case 618: name = 'EventCacheNotPresent'; break;\r\n case 628: name = 'MarketNotEnabledForSPBetting'; break;\r\n case 629: name = 'PunterSPStakeLimitExceeded'; break;\r\n case 631: name = 'SPBetDoesNotExist'; break;\r\n case 638: name = 'MobileApplicationNotSupported'; break;\r\n case 643: name = 'PunterRestrictedToFillKillDangerballOrders'; break;\r\n case 671: name = 'ConcurrentSessionLimitReached '; break;\r\n case 672: name = 'ConnectionInInvalidState'; break;\r\n case 675: name = 'PunterIsBanned'; break;\r\n case 643: name = 'PunterRestrictedToFillKillDangerballOrde'; break;\r\n case 644: name = 'InsufficientFreeBetStakeAvailable '; break;\r\n case 663: name = 'RestrictedToTakeBackOrders'; break;\r\n case 664: name = 'RestrictedToMMOrders'; break;\r\n case 665: name = 'RestrictedFromMarket'; break;\r\n case 670: name = 'RestrictedToMakeOrders'; break;\r\n case 672: name = 'ConnectionInInvalidState'; break;\r\n case 673: name = 'PunterNotAuthorisedForAAPI'; break;\r\n case 900: name = 'LocationNotSpecified'; break;\r\n case 956: name = 'ContestEntrantsNotAllowed'; break;\r\n case 957: name = 'PunterNotContestEntrant'; break;\r\n case 974: name = 'NoCurrentContestForPunter'; break;\r\n }\r\n return name;\r\n };\r\n\r\n this.sendAjaxRequest = function sendAjaxRequest(page, request, callBack, xmlhttp, timeoutLimit, isAsyncEnrolPunter) {\r\n\r\n var req = gecPrivate._base.clone(request);\r\n var apiName = apiNameFromPageName(page);\r\n var thisGEC = this;\r\n\r\n xmlhttp = xmlhttp || new XMLHttpRequest();\r\n if (\"withCredentials\" in xmlhttp) {\r\n xmlhttp.withCredentials = (apiName === \"RequestQueueToken\") ? false : true;\r\n } else if (typeof XDomainRequest != \"undefined\") {\r\n // Otherwise, check if XDomainRequest.\r\n // XDomainRequest only exists in IE, and is IE's way of making CORS requests.\r\n xmlhttp = new XDomainRequest();\r\n } else {\r\n // Otherwise, CORS is not supported by the browser.\r\n xmlhttp = null;\r\n }\r\n\r\n var TIMEOUTLIMIT = timeoutLimit || 60000;\r\n if (req.sign) {\r\n req.timeStamp = new Date().getTime();\r\n req.sign = this.signData(req.timeStamp);\r\n }\r\n\r\n if (_logClientEntries\r\n && !_apisNotToBeSentClientLogging.includes(apiName)) {\r\n req.clientLogEntries = getLogEntries();\r\n }\r\n\r\n delete req.onSuccess;\r\n delete req.onException;\r\n\r\n var requestString = JSON.stringify(req);\r\n var parameters;\r\n\r\n if (apiName === \"RequestQueueToken\") {\r\n xmlhttp.open(\"POST\", params.queueTokenProviderURL + page, true);\r\n } else if (isAsyncEnrolPunter) {\r\n xmlhttp.open(\"POST\", params.asyncEnrolPunterURL + page, true);\r\n } else {\r\n xmlhttp.open(\"POST\", params.iapiURL + page, true);\r\n }\r\n\r\n if (gecPrivate.makeIAPIRequestsWithContentTypeJSON) {\r\n parameters = requestString;\r\n xmlhttp.setRequestHeader(\"Content-type\", \"application/json\");\r\n } else {\r\n parameters = \"request=\" + gec.urlencode(requestString);\r\n xmlhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\r\n }\r\n\r\n xmlhttp.timeout = TIMEOUTLIMIT;\r\n\r\n xmlhttp.ontimeout = function ontimeout() {\r\n // IAPI call timed out. Act as if it returned ResourceError, so that the calling application gets some callback called and does not hang\r\n callBack.call(this, request, {\r\n returnCode: gec.ReturnCode.ResourceError\r\n });\r\n }\r\n\r\n xmlhttp.onreadystatechange = function onreadystatechange() {\r\n if (xmlhttp.readyState == 4) {\r\n var status = 0;\r\n\r\n try {\r\n status = xmlhttp.status\r\n } catch (e) {\r\n status = -2;\r\n } //IE timeout issue\r\n // Check for HTML/XML being returned instead of JSON as expected\r\n if (xmlhttp.responseText.trim()[0] === \"<\") {\r\n // Data returned begins with < so is not JSON, don't try to parse it\r\n status = -2;\r\n }\r\n if (status == 200) {\r\n if (xmlhttp.responseText == \"\") {\r\n xmlhttp.responseText = \"{'returnCode':-2}\";\r\n }\r\n var resp = JSON.parse(xmlhttp.responseText);\r\n\r\n if (resp.returnCode === gec.ReturnCode.QueueTokenNotSpecified) {\r\n thisGEC.queueAjaxRequest(page, request, callBack, undefined, timeoutLimit, isAsyncEnrolPunter);\r\n } else {\r\n callBack.call(this, request, resp);\r\n }\r\n\r\n } else {\r\n xmlhttp.responseText = \"{'returnCode':2}\";\r\n if (_isRetryRequestURL(page)) {\r\n callBack.call(this, request, xmlhttp.responseText);\r\n }\r\n }\r\n xmlhttp.responseText = null;\r\n xmlhttp.onreadystatechange = null;\r\n xmlhttp.abort = null;\r\n xmlhttp = null;\r\n //delete xmlhttp;\r\n\r\n\r\n }\r\n };\r\n xmlhttp.send(parameters);\r\n\r\n };\r\n this.cleanUp = function () {\r\n for (var i in gecPrivate._subscribedExchangeMarket) {\r\n\r\n var delegateCount = gecPrivate._subscribedExchangeMarket[i].prototype.getDelegateCount();\r\n\r\n if (delegateCount < 1) {\r\n var marketId = gecPrivate._subscribedExchangeMarket[i].marketId;\r\n\r\n for (var j in gecPrivate._subscribedExchangeSelection) {\r\n if (gecPrivate._subscribedExchangeSelection[j].marketId == marketId)\r\n delete gecPrivate._subscribedExchangeSelection[j];\r\n }\r\n delete gecPrivate._subscribedExchangeMarket[i];\r\n\r\n }\r\n }\r\n }\r\n\r\n this.getVersion = function () {\r\n return _version;\r\n }\r\n\r\n var GBEWebClientMessage = function (data) {\r\n\r\n this.payload = data.replace(/AAPI\\//, \"\\u0003\"); //added spance but not right -\r\n\r\n var messagePairs = this.payload.split(\"\\u0001\");\r\n var headers = messagePairs[0].split(\"\\u0002\");\r\n var isInitialLoad = headers[2] === \"T\";\r\n var isChange = headers[2] === \"F\";\r\n var isDelete = headers[2] === \"X\";\r\n\r\n var fields = [];\r\n for (var i = 1; i < messagePairs.length; i = i + 1) {\r\n fields.push(messagePairs[i]);\r\n }\r\n\r\n this.topic = (messagePairs[0].substring(0, messagePairs[0].indexOf(\"\\u0002\"))).trim();\r\n\r\n var header = messagePairs[0].substring(0, messagePairs[0].lastIndexOf(\"\\u0002\"));\r\n\r\n this.isInitialTopicLoad = function () {\r\n return isInitialLoad;\r\n };\r\n this.isDeleteTopic = function () {\r\n return isDelete;\r\n };\r\n this.getHeader = function () {\r\n return header;\r\n };\r\n this.getNumberOfRecords = function () {\r\n return fields.length;\r\n };\r\n this.getFields = function (i) {\r\n return fields[i].split(\"\\u0002\");\r\n };\r\n this.localeTimeString = function () {\r\n var now = new Date();\r\n\r\n return now.toISOString();\r\n }\r\n\r\n }\r\n\r\n var _onDataEventJSON = function (messageJSON) {\r\n var message = JSON.parse(messageJSON);\r\n var mappingArray = gecPrivate._AAPIJSONResponseMappings;\r\n var matches;\r\n\r\n // Find appropriate mapping for this pushed item\r\n mappingArray.forEach(function (mapping) {\r\n if (mapping.aapiId !== undefined\r\n && message.aapiId === mapping.aapiId) {\r\n\r\n mapping.method.call(null, message);\r\n\r\n } else if (message.header !== undefined\r\n && mapping.topicNameRegex !== undefined) {\r\n\r\n matches = message.header.topicName.match(mapping.topicNameRegex);\r\n if (matches !== null) {\r\n mapping.method.call(null, message, matches);\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n var _onDataEvent = function (webClientMessage) {\r\n var payLoad = webClientMessage.payload;\r\n var lastUpdate = webClientMessage.localeTimeString();\r\n var isInitialLoad = webClientMessage.isInitialTopicLoad();\r\n var header = webClientMessage.getHeader();\r\n var topic = webClientMessage.topic;\r\n\r\n var _regexArray = gecPrivate._regexArray;\r\n for (var i = 0; i < _regexArray.length; i++) {\r\n var matches = _regexArray[i].regex.exec(topic); // /r?or?/g\r\n\r\n if (matches == null)\r\n matches = _regexArray[i].regex.exec(header);\r\n\r\n if (matches != null) {\r\n var bodyObject = {};\r\n\r\n var numberOfFields = webClientMessage.getNumberOfRecords();\r\n for (var f = 0; f < numberOfFields; f++) {\r\n var rowData = webClientMessage.getFields(f);\r\n if (_regexArray[i].converter == null) {\r\n bodyObject[rowData[0]] = rowData[1];\r\n if (rowData[0] === \"0\" || rowData[0] === \"1\") {//correlationIds or returncode\r\n bodyObject[rowData[0]] = Number(rowData[1]);\r\n }\r\n\r\n }\r\n else {\r\n _convertBodyItem(bodyObject, rowData[0], rowData[1], _regexArray[i].converter);\r\n if (bodyObject.returnCode !== undefined) {\r\n bodyObject.returnCode = Number(bodyObject.returnCode);\r\n }\r\n if (bodyObject.correlationId !== undefined) {\r\n bodyObject.correlationId = Number(bodyObject.correlationId);\r\n }\r\n }\r\n }\r\n\r\n\r\n return _regexArray[i].method.call(null, webClientMessage, matches, bodyObject);\r\n\r\n break;// found one regex break out\r\n }\r\n }\r\n console.log(\"unknown message topic:\" + webClientMessage.topic);\r\n alert(\"unknown message topic:\" + webClientMessage.topic);\r\n return;\r\n }\r\n\r\n var loadedAlreadyFired = false;\r\n\r\n var _onSocketOpen = function (isConnected) {\r\n\r\n window.clearInterval(_pingHandle);\r\n stopPushHealthcheckTimer();\r\n\r\n if (isConnected) {\r\n gecPrivate._isConnecting = false;\r\n\r\n _pingHandle = window.setInterval(function () {\r\n if (!gecPrivate._anonSet && (gecPrivate._aapiSessionToken == null)) return;\r\n\r\n var curTime = new Date().toISOString();\r\n\r\n if (gecPrivate._lastPingedAt === 0) {\r\n gecPrivate._lastPingedAt = curTime;\r\n }\r\n\r\n _thisController.ping({\r\n currentClientTime: curTime,\r\n lastPingRoundtripMS: gecPrivate._lastPingRoundtripMS,\r\n lastPingedAt: gecPrivate._lastPingedAt\r\n });\r\n\r\n }, _pingInterval);\r\n\r\n if (_onControllerLoaded && !loadedAlreadyFired) {\r\n loadedAlreadyFired = true;\r\n _onControllerLoaded(false, null);\r\n }\r\n }\r\n };\r\n\r\n var _onSocketClose = function (onComplete) {\r\n\r\n if (_haveReceivedAtLeastOneStreamingMessage === false\r\n && params.onStreamingInitialisationFailed !== undefined) {\r\n\r\n // Socket has been closed while we are trying to initialise streaming\r\n // (as opposed to initialisation succeeding and messages received and\r\n // then at some future point in time, the connection is dropped and the socket is closed)\r\n // and calling client has specified a callback for this situation\r\n\r\n // So call that callback...\r\n params.onStreamingInitialisationFailed.call(this);\r\n\r\n // ... and also call onComplete and _onControllerLoaded\r\n // so that client can proceed with bootstrapping and\r\n // it may poll IAPI instead of using streaming\r\n\r\n if (onComplete) {\r\n onComplete(true);\r\n }\r\n\r\n if (_onControllerLoaded && !loadedAlreadyFired) {\r\n loadedAlreadyFired = true;\r\n _onControllerLoaded(false, null);\r\n }\r\n\r\n } else {\r\n _onConnectionLost();\r\n }\r\n\r\n };\r\n\r\n var _onConnectionLost = function () {\r\n gecPrivate._anonSet = false;\r\n _connectionHealth = 0;\r\n resetFiredDelegates();\r\n\r\n if (_pingHandle != null)\r\n window.clearInterval(_pingHandle);\r\n\r\n stopPushHealthcheckTimer();\r\n\r\n if (_thisController.streamingConnectionDetails && params.onConnectionLost != null) {\r\n gecPrivate._isConnecting = true;\r\n params.onConnectionLost.call(this);\r\n }\r\n\r\n }\r\n\r\n var _createTopicMessageStr = function (tm) {\r\n var message = '';\r\n for (itemI in tm) {\r\n var value = (typeof tm[itemI] == \"boolean\") ? (tm[itemI] ? 'T' : 'F') : tm[itemI];\r\n message += itemI + \"\\u0002\" + value + \"\\u0002\" + \"\\u0001\";\r\n }\r\n return message;\r\n }\r\n\r\n gecPrivate._sendStreamingMessage = function (headerName, request) {\r\n var message = _createTopicMessageStr(request);\r\n\r\n function sendRequest(id, message) {\r\n var request = \"\\u0002\" + id + \"\\u0001\" + message;\r\n socket.send(request);\r\n logConsole(\"socket sending... \" + request);\r\n\r\n }\r\n sendRequest(headerName, message);\r\n };\r\n\r\n gecPrivate._sendStreamingMessageJSON = function (request) {\r\n logConsole(\"socket sending... \" + JSON.stringify(request));\r\n socket.send(JSON.stringify(request));\r\n };\r\n\r\n var _onSetRefreshPeriod = function (webClientMessage, headerMatches, bodyObject) {\r\n\r\n var correlationId = bodyObject[0] * 1;\r\n var returnCode = bodyObject[1] * 1;\r\n\r\n gecPrivate.removeFromPushMessages(correlationId);\r\n\r\n if (returnCode != 0) {\r\n alert(\"error _onSetRefreshPeriod:\" + returnCode);\r\n }\r\n\r\n };\r\n var _onGetRefreshPeriod = function (webClientMessage, headerMatches, bodyObject) {\r\n\r\n try {\r\n var correlationId = bodyObject[0] * 1;\r\n var returnCode = bodyObject[1] * 1;\r\n var refreshPeriodMS = bodyObject[2];\r\n\r\n gecPrivate.removeFromPushMessages(correlationId);\r\n\r\n if (returnCode != null) {\r\n var response = { correlationId: correlationId };\r\n if (refreshPeriodMS != null) response.refreshPeriodMS = refreshPeriodMS;\r\n\r\n gecPrivate._correlationData[correlationId].callbackOnSuccess.call(this, response);\r\n }\r\n else {\r\n gecPrivate._correlationData[correlationId].callbackOnException.call(this, new gec.AsyncException({ returnCode: returnCode, name: gec.getReturnCodeName(returnCode) }));\r\n }\r\n\r\n } catch (e) {\r\n alert(\"_onGetRefreshPeriod error:\" + e.message);\r\n }\r\n };\r\n\r\n this.setRefreshPeriod = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n request[1] = params.refreshPeriodMS;\r\n\r\n gecPrivate.addToPushMessages(request);\r\n gecPrivate._sendStreamingMessage(60, request);\r\n return correlationId;\r\n };\r\n this.getRefreshPeriod = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n gecPrivate.addToPushMessages(request);\r\n gecPrivate._sendStreamingMessage(61, request);\r\n return correlationId;\r\n };\r\n\r\n\r\n\r\n var _logonTelebetUser = function () {\r\n var correlationId = gecPrivate.addToCorrelation(params)\r\n\r\n gecPrivate._sendStreamingMessage(4, {\r\n 0: correlationId,\r\n 1: controllerDefaults.currency,\r\n 2: controllerDefaults.language,\r\n 3: controllerDefaults.priceFormat,\r\n 4: false,\r\n 5: controllerDefaults.integrationPartnerId,\r\n 6: _aapiVersion,\r\n 7: _createUUID()\r\n });\r\n\r\n }\r\n var _setPunterContext = function () {\r\n var correlationId = gecPrivate.addToCorrelation(params)\r\n\r\n gecPrivate._sendStreamingMessage(5, {\r\n 0: correlationId,\r\n 1: controllerDefaults.currency,\r\n 2: controllerDefaults.language,\r\n 3: controllerDefaults.priceFormat,\r\n 4: 'F',\r\n 5: controllerDefaults.integrationPartnerId,\r\n 6: _aapiVersion,\r\n 7: _createUUID()\r\n });\r\n\r\n }\r\n\r\n var _clearPunterContext = function () {\r\n var correlationId = gecPrivate.addToCorrelation(params)\r\n\r\n gecPrivate._sendStreamingMessage(6, {\r\n 0: correlationId,\r\n 1: controllerDefaults.currency,\r\n 2: controllerDefaults.language,\r\n 3: controllerDefaults.priceFormat,\r\n 4: 'F',\r\n 5: controllerDefaults.integrationPartnerId,\r\n 6: _aapiVersion,\r\n 7: _createUUID()\r\n });\r\n\r\n }\r\n\r\n var _logoffTelebetUser = function () {\r\n var correlationId = gecPrivate.addToCorrelation(params)\r\n\r\n gecPrivate._sendStreamingMessage(7, {\r\n 0: correlationId,\r\n 1: controllerDefaults.currency,\r\n 2: controllerDefaults.language,\r\n 3: controllerDefaults.priceFormat,\r\n 4: 'F',\r\n 5: controllerDefaults.integrationPartnerId,\r\n 6: _aapiVersion,\r\n 7: _createUUID()\r\n });\r\n\r\n }\r\n\r\n\r\n var _listOfFireOnSubscribedExchangeMarketIL = [];\r\n var _listOfFireOnSubscribedExchangeSelectionIL = [];\r\n var _listOfFireOnSubscribedMarketScoresIL = [];\r\n var _listOfFireOnITLCycleComplete = [];\r\n\r\n this.subscribeMarketInformation = function (params) {\r\n\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n var request = {};\r\n request[0] = correlationId;\r\n request[7] = params.fetchOnly;\r\n\r\n if (params.wantSelectionInformation !== undefined) {\r\n request[8] = params.wantSelectionInformation;\r\n }\r\n\r\n if (params.wantExchangeLangugeInformationOnly !== undefined) {\r\n request[9] = params.wantExchangeLangugeInformationOnly;\r\n }\r\n\r\n if (params.marketTaggedValueTopicNames !== undefined) {\r\n request[10] = params.marketTaggedValueTopicNames;\r\n }\r\n if (params.eventClassifierId !== undefined) {\r\n request[2] = '' + params.eventClassifierId;\r\n request[5] = true;\r\n }\r\n if (params.marketIds != undefined) {\r\n request[6] = '';\r\n for (marketI in params.marketIds) {\r\n request[6] += params.marketIds[marketI] + '~';\r\n }\r\n request[6] = request[6].substr(0, request[6].length - 1);\r\n }\r\n\r\n request[12] = (params.wantSelectionBlurb !== undefined) ? params.wantSelectionBlurb : false;\r\n if (params.bettingTypeId !== undefined) {\r\n request[13] = params.bettingTypeId;\r\n }\r\n if (gecPrivate._debug) { gecPrivate._base.log('subscribeMarketInformation'); }\r\n gecPrivate._sendStreamingMessage(9, request);\r\n\r\n return correlationId;\r\n };\r\n\r\n gec.Controller.prototype.subscribeEventHierarchy = function (params) {\r\n if (!this.isStreamingEnabled) {\r\n window.setTimeout(params.callbackOnSuccess, 100);\r\n return;\r\n }\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.eventClassifierId !== undefined) {\r\n request[2] = params.eventClassifierId;\r\n }\r\n\r\n request[3] = params.wantDirectDescendantsOnly;\r\n request[4] = params.wantSelectionInformation;\r\n request[5] = params.fetchOnly;\r\n if (params.eventTaggedValueTopicNames !== undefined) {\r\n request[9] = params.eventTaggedValueTopicNames;\r\n }\r\n if (params.marketTaggedValueTopicNames !== undefined) {\r\n request[10] = params.marketTaggedValueTopicNames;\r\n }\r\n request[11] = params.excludeMarketInformation;\r\n request[12] = params.wantTabInformation;\r\n request[14] = (params.wantSelectionBlurb !== undefined) ? params.wantSelectionBlurb : false;\r\n\r\n gecPrivate._sendStreamingMessage(12, request);\r\n return correlationId;\r\n }\r\n var _clientLogEntries = [];\r\n\r\n this.addClientLogEntry = function (params) {\r\n if ((_logClientEntries === true) || (_logClientEntries[params.componentName] === true)) {\r\n params.partnerUsername = (gecPrivate.userContext != null) ? gecPrivate.userContext.partnerUsername : undefined;\r\n\r\n if ((_logClientEntries[\"loggedInOnly\"] !== true) || (params.partnerUsername !== undefined)) {\r\n _clientLogEntries[_clientLogEntries.length] = params;\r\n }\r\n\r\n }\r\n }\r\n var getLogEntries = function () {\r\n var tempEntries = _clientLogEntries.slice(0);\r\n _clientLogEntries = [];\r\n if (tempEntries.length > 0) {\r\n return {\r\n clientTimestamp: (new Date()).toISOString(),\r\n events: tempEntries\r\n };\r\n\r\n } else {\r\n return undefined;\r\n }\r\n\r\n }\r\n var clearLogEntries = function () {\r\n _clientLogEntries = [];\r\n }\r\n\r\n\r\n\r\n /****************************\r\n addPunter\r\n ****************************/\r\n this.addPunter = function (params) {\r\n if (gecPrivate.userContext != null) {\r\n params.callbackOnException.call(this, { returnCode: 617 });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.integrationPartnerId = params.integrationPartnerId;\r\n request.partnerUsername = params.partnerUsername;\r\n request.cleartextPassword = params.cleartextPassword;\r\n request.passwordToken = params.passwordToken;\r\n request.title = params.title;\r\n request.sex = params.sex;\r\n request.name = params.name;\r\n request.country = params.country;\r\n request.address = params.address;\r\n request.email = params.email;\r\n request.phone = params.phone;\r\n request.secondaryPhone = params.secondaryPhone;\r\n\r\n request.firstQuestionType = params.firstQuestionType;\r\n request.firstQuestionAnswer = params.firstQuestionAnswer;\r\n request.secondQuestionType = params.secondQuestionType;\r\n request.secondQuestionAnswer = params.secondQuestionAnswer;\r\n request.birthDate = params.birthDate;\r\n request.isContactAllowed = params.isContactAllowed;\r\n request.contactType = params.contactTypeId;\r\n request.currency = params.currency;\r\n request.reference = params.reference;\r\n request.affiliateIdentifier = params.affiliateIdentifier;\r\n request.whiteLabel = params.whiteLabel;\r\n\r\n request.priceFormat = params.priceFormat;\r\n request.marketByVolumeAmount = { amount: params.marketByVolumeAmount, currency: params.currency };\r\n\r\n request.language = params.language;\r\n request.forOrderRepriceOption = params.forOrderRepriceOption;\r\n request.againstOrderRepriceOption = params.againstOrderRepriceOption;\r\n request.includeSettledSelectionsInPAndL = params.includeSettledSelectionsInPAndL;\r\n\r\n request.normalMaximumLiability = { amount: params.normalMaximumLiability, currency: params.currency };\r\n\r\n if (params.maxPunterReservationPerMarket != null)\r\n request.maxPunterReservationPerMarket = { amount: params.maxPunterReservationPerMarket, currency: params.currency };\r\n\r\n request.debitSportsbookStake = params.debitSportsbookStake;\r\n request.debitExchangeStake = params.debitExchangeStake;\r\n\r\n this.sendRequest('/AddPunter.ashx', request, _addPunterResponse);\r\n }\r\n };\r\n var _addPunterResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n\r\n\r\n var userContext = null;\r\n\r\n gecPrivate.sessionToken = response.sessionToken;\r\n _telebetSessionToken = null;\r\n\r\n userContext = new gec.UserContext();\r\n userContext.partnerUsername = request.partnerUsername;\r\n userContext.debitSportsbookStake = request.debitSportsbookStake;\r\n userContext.debitExchangeStake = request.debitExchangeStake;\r\n userContext.purseIntegraionModeId = request.purseIntegrationMode;\r\n userContext.canPlaceForSideOrders = request.canPlaceForSideOrders;\r\n userContext.canPlaceAgainstSideOrders = request.canPlaceAgainstSideOrders;\r\n userContext.currency = request.currency;\r\n userContext.language = request.language;\r\n userContext.priceFormat = request.priceFormat;\r\n userContext.marketByVolumeAmount = request.marketByVolumeAmount;\r\n userContext.hasSubPunters = response.hasSubPunters;\r\n\r\n _username = request.partnerUsername;\r\n _password = request.cleartextPassword;\r\n gecPrivate.userContext = userContext;\r\n\r\n request.callbackOnSuccess.call(this, gecPrivate.userContext);\r\n }\r\n };\r\n /****************************\r\n addPunterEnhanced\r\n ****************************/\r\n this.addPunterEnhanced = function (params) {\r\n\r\n if (gecPrivate.userContext != null) {\r\n\r\n params.callbackOnException.call(this, new gec.AsyncException({ returnCode: 617 }));\r\n\r\n } else {\r\n\r\n if (params.cleartextPassword !== undefined\r\n && this.checkPasswordValidity({ password: params.cleartextPassword }) === false) {\r\n\r\n params.callbackOnException.call(this, { returnCode: 405 /* InvalidPassword */ });\r\n\r\n } else {\r\n\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.username = params.username;\r\n request.cleartextPassword = params.cleartextPassword;\r\n request.title = params.titleId;\r\n request.sex = params.sexId;\r\n request.name = params.name;\r\n request.country = params.country;\r\n request.address = params.address;\r\n request.email = params.email;\r\n request.phone = params.phone;\r\n request.secondaryPhone = params.secondaryPhone;\r\n\r\n request.priceFormat = params.priceFormat;\r\n request.forOrderRepriceOption = params.forOrderRepriceOptionId;\r\n request.againstOrderRepriceOption = params.againstOrderRepriceOptionId;\r\n request.marketByVolumeAmount = { amount: params.marketByVolumeAmount, currency: params.currency };\r\n request.includeSettledSelectionsInPAndL = params.includeSettledSelectionsInPAndL;\r\n\r\n request.language = params.language;\r\n request.firstQuestionType = params.firstQuestionTypeId;\r\n request.firstQuestionAnswer = params.firstQuestionAnswer;\r\n request.secondQuestionType = params.secondQuestionTypeId;\r\n request.secondQuestionAnswer = params.secondQuestionAnswer;\r\n request.birthDate = params.birthDate;\r\n request.reference = params.reference;\r\n request.isContactAllowed = params.isContactAllowed;\r\n request.contactType = params.contactTypeId;\r\n request.currency = params.currency;\r\n request.affiliateIdentifier = params.affiliateIdentifier;\r\n request.channelType = params.channelType;\r\n request.depositLimit = params.depositLimit;\r\n\r\n request.channelInformation = \"-GEC\" + _version.implementationVersion + \"|\" + params.channelInformation;\r\n request.whiteLabel = params.whiteLabel;\r\n\r\n request.punterIPAddress = params.punterIPAddress;\r\n request.finalIPAddress = params.finalIPAddress;\r\n request.fingerprint = params.fingerprint;\r\n\r\n request.tmxSessionId = params.tmxSessionId;\r\n request.tmxWebSessionId = params.tmxWebSessionId;\r\n request.promoCode = params.promoCode;\r\n\r\n this.sendRequest('/AddPunterEnhanced.ashx', request, _addPunterEnhancedResponse);\r\n }\r\n }\r\n };\r\n var _addPunterEnhancedResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, new gec.AsyncException({ returnCode: response.returnCode }));\r\n } else {\r\n request.callbackOnSuccess.call(this, response);\r\n }\r\n };\r\n /****************************\r\n enrolPunter\r\n ****************************/\r\n this.enrolPunter = function (params) {\r\n\r\n if (params.cleartextPassword !== undefined\r\n && this.checkPasswordValidity({ password: params.cleartextPassword }) === false) {\r\n\r\n params.callbackOnException.call(this, { returnCode: 405 /* InvalidPassword */ });\r\n\r\n } else {\r\n\r\n var request = new gec.IAPIRequest(params);\r\n\r\n if (gecPrivate.sessionToken != null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n } else {\r\n request.username = params.username;\r\n if (params.integrationPartnerId != null) {\r\n request.integrationPartnerId = params.integrationPartnerId;\r\n request.purseIntegrationMode = params.purseIntegrationMode;\r\n\r\n }\r\n }\r\n\r\n request.cleartextPassword = params.cleartextPassword;\r\n request.title = params.titleId || params.title;\r\n request.sex = params.sexId || params.sex;\r\n request.name = params.name;\r\n request.country = params.country;\r\n request.address = params.address;\r\n request.email = params.email;\r\n request.phone = params.phone;\r\n request.secondaryPhone = params.secondaryPhone;\r\n\r\n\r\n request.firstQuestionType = params.firstQuestionTypeId || params.firstQuestionType;\r\n request.firstQuestionAnswer = params.firstQuestionAnswer;\r\n request.secondQuestionType = params.secondQuestionTypeId || params.secondQuestionType;\r\n request.secondQuestionAnswer = params.secondQuestionAnswer;\r\n request.birthDate = params.birthDate;\r\n request.isContactAllowed = params.isContactAllowed;\r\n request.contactType = params.contactTypeId || params.contactType;\r\n request.currency = params.currency;\r\n request.reference = params.reference;\r\n request.affiliateIdentifier = params.affiliateIdentifier;\r\n request.whiteLabel = params.whiteLabel;\r\n\r\n if (params.priceFormat != undefined)\r\n request.priceFormat = params.priceFormat;\r\n\r\n if (params.marketByVolumeAmount != undefined)\r\n request.marketByVolumeAmount = { amount: params.marketByVolumeAmount, currency: params.currency };\r\n\r\n request.language = params.language;\r\n\r\n if (params.forOrderRepriceOptionId != undefined) {\r\n request.forOrderRepriceOption = params.forOrderRepriceOptionId;\r\n }\r\n\r\n if (params.forOrderRepriceOption != undefined) {\r\n request.forOrderRepriceOption = params.forOrderRepriceOption;\r\n }\r\n\r\n if (params.againstOrderRepriceOptionId != undefined) {\r\n request.againstOrderRepriceOption = params.againstOrderRepriceOptionId;\r\n }\r\n\r\n if (params.againstOrderRepriceOption != undefined) {\r\n request.againstOrderRepriceOption = params.againstOrderRepriceOption;\r\n }\r\n\r\n if (params.includeSettledSelectionsInPAndL != undefined)\r\n request.includeSettledSelectionsInPAndL = params.includeSettledSelectionsInPAndL;\r\n\r\n request.channelType = params.channelType;\r\n request.granularChannelType = params.granularChannelType;\r\n\r\n request.iPAddress = params.iPAddress;\r\n request.channelInformation = \"-GEC\" + _version.implementationVersion + \"|\" + params.channelInformation;\r\n\r\n request.reference = params.reference;\r\n request.whiteLabel = params.whiteLabel;\r\n request.punterTaggedValues = params.punterTaggedValues;\r\n request.affiliateIdentifier = params.affiliateIdentifier;\r\n request.fingerprint = params.fingerprint;\r\n request.tmxSessionId = params.tmxSessionId;\r\n request.tmxWebSessionId = params.tmxWebSessionId;\r\n request.deviceIdentifier = params.deviceIdentifier;\r\n\r\n this.sendRequest('/EnrolPunter.ashx', request, _enrolPunterResponse);\r\n\r\n }\r\n };\r\n var _enrolPunterResponse = function (request, response) {\r\n\r\n if (response.returnCode == gec.ReturnCode.Success\r\n || response.returnCode == gec.ReturnCode.PunterFailedIdentityVerificationCheck) {\r\n\r\n if (response.sessionToken != null) {\r\n gecPrivate.sessionToken = response.sessionToken;\r\n delete response.sessionToken;\r\n if (gecPrivate.userContext != null && response.punterClassificationName !== undefined) {\r\n gecPrivate.userContext.punterClassificationName = response.punterClassificationName;\r\n }\r\n }\r\n\r\n request.callbackOnSuccess.call(this, response);\r\n } else {\r\n request.callbackOnException.call(this, response);\r\n }\r\n };\r\n\r\n /****************************\r\n continuePunterEnrolmentIAPI\r\n ****************************/\r\n this.continuePunterEnrolment = function (params) {\r\n\r\n if (params.cleartextPassword !== undefined\r\n && this.checkPasswordValidity({ password: params.cleartextPassword }) === false) {\r\n\r\n params.callbackOnException.call(this, { returnCode: 405 /* InvalidPassword */ });\r\n\r\n } else {\r\n\r\n var request = new gec.IAPIRequest(params);\r\n\r\n if (gecPrivate.sessionToken != null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n }\r\n\r\n request.enrolmentAttemptId = params.enrolmentAttemptId;\r\n request.enrolmentAttemptValidationToken = params.enrolmentAttemptValidationToken;\r\n request.quizId = params.quizId;\r\n request.questions = params.answers;\r\n request.deviceIdentifier = params.deviceIdentifier;\r\n\r\n if (params.cleartextPassword != undefined)\r\n request.cleartextPassword = params.cleartextPassword;\r\n\r\n this.sendRequest('/ContinuePunterEnrolment.ashx', request, _continuePunterEnrolmentResponse);\r\n\r\n }\r\n };\r\n var _continuePunterEnrolmentResponse = function (request, response) {\r\n\r\n if (response.returnCode === 0) {\r\n if (response.sessionToken != null) {\r\n gecPrivate.sessionToken = response.sessionToken;\r\n gecPrivate.userContext.punterClassificationName = response.punterClassificationName;\r\n delete response.sessionToken;\r\n }\r\n request.callbackOnSuccess.call(this, response);\r\n } else {\r\n request.callbackOnException.call(this, {\r\n returnCode: response.returnCode\r\n });\r\n }\r\n };\r\n\r\n /****************************\r\n enrolPunterAsynchronously\r\n ****************************/\r\n this.enrolPunterAsynchronously = function (params) {\r\n\r\n if (params.cleartextPassword !== undefined\r\n && this.checkPasswordValidity({ password: params.cleartextPassword }) === false) {\r\n\r\n params.callbackOnException.call(this, { returnCode: gec.ReturnCode.InvalidPassword });\r\n\r\n } else {\r\n\r\n var request = new gec.IAPIRequest(params);\r\n\r\n if (gecPrivate.sessionToken != null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n } else {\r\n request.username = params.username;\r\n if (params.integrationPartnerId != null) {\r\n request.integrationPartnerId = params.integrationPartnerId;\r\n request.purseIntegrationMode = params.purseIntegrationMode;\r\n\r\n }\r\n }\r\n\r\n request.cleartextPassword = params.cleartextPassword;\r\n request.title = params.title;\r\n request.sex = params.sex;\r\n request.name = params.name;\r\n request.country = params.country;\r\n request.address = params.address;\r\n request.email = params.email;\r\n request.phone = params.phone;\r\n request.secondaryPhone = params.secondaryPhone;\r\n\r\n request.firstQuestionType = params.firstQuestionType;\r\n request.firstQuestionAnswer = params.firstQuestionAnswer;\r\n request.secondQuestionType = params.secondQuestionType;\r\n request.secondQuestionAnswer = params.secondQuestionAnswer;\r\n request.birthDate = params.birthDate;\r\n request.isContactAllowed = params.isContactAllowed;\r\n request.contactType = params.contactType;\r\n request.currency = params.currency;\r\n request.reference = params.reference;\r\n request.affiliateIdentifier = params.affiliateIdentifier;\r\n request.whiteLabel = params.whiteLabel;\r\n\r\n if (params.priceFormat != undefined)\r\n request.priceFormat = params.priceFormat;\r\n\r\n if (params.marketByVolumeAmount != undefined)\r\n request.marketByVolumeAmount = { amount: params.marketByVolumeAmount, currency: params.currency };\r\n\r\n request.language = params.language;\r\n\r\n if (params.forOrderRepriceOption != undefined)\r\n request.forOrderRepriceOption = params.forOrderRepriceOption;\r\n\r\n if (params.againstOrderRepriceOption != undefined)\r\n request.againstOrderRepriceOption = params.againstOrderRepriceOption;\r\n\r\n if (params.includeSettledSelectionsInPAndL != undefined)\r\n request.includeSettledSelectionsInPAndL = params.includeSettledSelectionsInPAndL;\r\n\r\n request.channelType = params.channelType;\r\n request.granularChannelType = params.granularChannelType;\r\n\r\n request.iPAddress = params.iPAddress;\r\n request.channelInformation = \"-GEC\" + _version.implementationVersion + \"|\" + params.channelInformation;\r\n\r\n request.reference = params.reference;\r\n request.whiteLabel = params.whiteLabel;\r\n request.punterTaggedValues = params.punterTaggedValues;\r\n request.affiliateIdentifier = params.affiliateIdentifier;\r\n request.deviceIdentifier = params.deviceIdentifier;\r\n\r\n request.responseEmailUrl = params.responseEmailUrl;\r\n request.aapiClientSpecifiedGuid = params.aapiClientSpecifiedGuid;\r\n request.correlationId = params.correlationId;\r\n\r\n this.sendRequest('/EnrolPunter.aspx', request, _asyncEnrolPunterResponse, undefined, undefined, true);\r\n }\r\n };\r\n var _asyncEnrolPunterResponse = function (request, response) {\r\n if (response.returnCode == gec.ReturnCode.Success) {\r\n request.callbackOnSuccess.call(this, response);\r\n } else {\r\n request.callbackOnException.call(this, response);\r\n }\r\n };\r\n\r\n this.checkEnrolmentStatus = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n request.enrolmentAttemptId = params.enrolmentAttemptId;\r\n request.enrolmentAttemptValidationToken = params.enrolmentAttemptValidationToken;\r\n this.sendRequest('/CheckEnrolmentStatus.ashx', request, _checkEnrolmentStatusResponse);\r\n };\r\n\r\n var _checkEnrolmentStatusResponse = function (request, response) {\r\n if (response.returnCode == gec.ReturnCode.Success\r\n || response.returnCode == gec.ReturnCode.PunterFailedIdentityVerificationCheck) {\r\n request.callbackOnSuccess.call(this, response);\r\n } else {\r\n request.callbackOnException.call(this, {\r\n returnCode: response.returnCode\r\n });\r\n }\r\n };\r\n\r\n this.addConnectionHealthChangeDelegate = function (delegate, threshold) {\r\n var delId = gecPrivate._connectionHealthChangeDelegates.length;\r\n gecPrivate._connectionHealthChangeDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedGTVILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedGTVILDelegates.length;\r\n gecPrivate._subscribedGTVILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedExchangeMarketILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedExchangeMarketILDelegates.length;\r\n gecPrivate._subscribedExchangeMarketILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedExchangeEventILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedExchangeEventILDelegates.length;\r\n gecPrivate._subscribedExchangeEventILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedExchangeSelectionILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedExchangeSelectionILDelegate.length;\r\n gecPrivate._subscribedExchangeSelectionILDelegate[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedMarketScoresILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedMarketScoresILDelegate.length;\r\n gecPrivate._subscribedMarketScoresILDelegate[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedExchangeSelectionPricesILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedExchangeSelectionPricesILDelegate.length;\r\n gecPrivate._subscribedExchangeSelectionPricesILDelegate[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedExchangeSelectionFixedOddsPricesILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedExchangeSelectionFixedOddsPricesILDelegate.length;\r\n gecPrivate._subscribedExchangeSelectionFixedOddsPricesILDelegate[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedExchangeMarketMatchedAmountILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedExchangeMarketMatchedAmountILDelegate.length;\r\n gecPrivate._subscribedExchangeMarketMatchedAmountILDelegate[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedCardILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedCardILDelegates.length;\r\n gecPrivate._subscribedCardILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedRaceILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedRaceILDelegates.length;\r\n gecPrivate._subscribedRaceILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedRacePoolILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedRacePoolILDelegates.length;\r\n gecPrivate._subscribedRacePoolILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedRunnerILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedRunnerILDelegates.length;\r\n gecPrivate._subscribedRunnerILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedCTVILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedCTVILDelegates.length;\r\n gecPrivate._subscribedCTVILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedRTVILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedRTVILDelegates.length;\r\n gecPrivate._subscribedRTVILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedGTVILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedGTVILDelegates.length;\r\n gecPrivate._subscribedGTVILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n this.addSubscribedAsyncResponseILDelegate = function (delegate) {\r\n var delId = gecPrivate._subscribedAsyncResponseILDelegates.length;\r\n gecPrivate._subscribedAsyncResponseILDelegates[delId] = delegate;\r\n return delId;\r\n };\r\n\r\n\r\n /************************************\r\n clearUserContext\r\n ************************************/\r\n this.clearUserContext = function () {\r\n if (_telebetSessionToken == null) {\r\n throw { \"number\": 588, \"message\": \"NotTelebetUserSession\" };\r\n }\r\n else {\r\n _clearUserContextVariables();\r\n }\r\n };\r\n var _clearUserContextVariables = function () {\r\n window.clearInterval(gecPrivate._orderCacheInterval);\r\n gecPrivate._orderCacheInterval = null;\r\n gecPrivate.userContext = null;\r\n gecPrivate.sessionToken = undefined;\r\n gecPrivate._orderCache = null; //non indexed\r\n gecPrivate._maxSequenceNo = 0;\r\n }\r\n\r\n this.endUserSession = function (request) {\r\n\r\n var terminateSessionRequest;\r\n\r\n if (gecPrivate.userContext === null) {\r\n throw { \"number\": 589, \"message\": \"NotUserSession\" };\r\n }\r\n else {\r\n\r\n // Call TerminateSession on IAPI\r\n terminateSessionRequest = new gec.IAPIRequest(null);\r\n terminateSessionRequest.sessionToken = gecPrivate.sessionToken;\r\n this.sendRequest('/TerminateSession.ashx', terminateSessionRequest, function () {\r\n _params.isSessionPresent = false;\r\n if (request && request.callbackOnSuccess) {\r\n request.callbackOnSuccess.call(this, {});\r\n }\r\n });\r\n\r\n // If storing session & userContext data in cookies, delete them\r\n if (_storeSessionTokenInCookieWithExpiryTime) {\r\n gecPrivate._base.deleteCookie(sessionTokenCookieName);\r\n gecPrivate._base.deleteCookie(gecPrivate.userContextCookieName);\r\n }\r\n\r\n // Clear context variables including session token\r\n _clearUserContextVariables();\r\n\r\n // Stop timer that extends session periodically\r\n window.clearInterval(_arbRefreshID);\r\n }\r\n\r\n };\r\n\r\n this.getCachedSubscribedExchangeMarket = function (marketId) {\r\n return gecPrivate._subscribedExchangeMarket[marketId];\r\n };\r\n\r\n this.getConnectionHealth = function () {\r\n return _connectionHealth;\r\n };\r\n this.listEventsStartingSoon = function (params) {\r\n if (1 == 2) {//todo\r\n throw { \"number\": 618, \"message\": \"EventCacheNotPresent\" };\r\n } else {\r\n var startTimeElapsedMSs = 43200000; //12 hours\r\n\r\n var elapsedTimeMSs = new Date().getTime() - startTimeElapsedMSs;\r\n var events = {};\r\n for (var j in gecPrivate._markets) {\r\n if ((gecPrivate._base.jsDate(gecPrivate._markets[j].startTime) > elapsedTimeMSs) && !gecPrivate._markets[j].currentlyInRunning) {\r\n var eventClassifierId = gecPrivate._markets[j].getEventClassifier().eventClassifierId;\r\n events[eventClassifierId + gecPrivate._markets[j].startTime] = new gec.StartingSoonEvent(gecPrivate._markets[j]);\r\n }\r\n }\r\n var eventsToReturn = [];\r\n for (ev in events) {\r\n eventsToReturn[eventsToReturn.length] = events[ev];\r\n }\r\n eventsToReturn.sort(gec.SortOnStartingAt);\r\n\r\n return eventsToReturn;\r\n }\r\n };\r\n\r\n this.listInRunningEvents = function (params) {\r\n if (1 == 2) {//todo\r\n throw { \"number\": 618, \"message\": \"EventCacheNotPresent\" };\r\n } else {\r\n var events = {};\r\n\r\n for (var j in gecPrivate._markets) {\r\n if (gecPrivate._markets[j].currentlyInRunning) {\r\n var topLevelSport = new gec.InRunningSport(gecPrivate._markets[j].getEventClassifier(), gecPrivate._markets);\r\n events[topLevelSport.getEventClassifier().eventClassifierId] = topLevelSport;\r\n }\r\n }\r\n\r\n var eventsToReturn = [];\r\n\r\n for (ev in events) {\r\n eventsToReturn[eventsToReturn.length] = events[ev];\r\n }\r\n\r\n return eventsToReturn;\r\n }\r\n };\r\n /****************************\r\n performCustomService\r\n ****************************/\r\n this.performCustomService = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n var customServicesThatDontRequireSessionToken = [\r\n \"nyra.IsLocationRequiredForEstablishSession\",\r\n \"IsUsernameAlreadyUsed\",\r\n \"NYRA.ResendEmail\",\r\n \"EnterOntrackADWContest\"\r\n ];\r\n\r\n // While some custom services should never need to be invoked when you already have a session,\r\n // it is possible for a client to do this. So we prevent a sessionToken ever being sent on an\r\n // IAPI call to such a custom service, as it can cause issues in the back-end.\r\n if (customServicesThatDontRequireSessionToken.includes(params.customServiceName)) {\r\n if (gecPrivate.sessionToken) {\r\n console.error(\"The custom service \" + params.customServiceName + \" is being called when a GEC session already exists, which should not happen.\");\r\n }\r\n } else {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n }\r\n\r\n if (gecPrivate.userContext !== null) {\r\n request.language = gecPrivate.userContext.language;\r\n }\r\n else //use default\r\n {\r\n request.language = controllerDefaults.language;\r\n }\r\n\r\n request.integrationPartnerId = controllerDefaults.integrationPartnerId;\r\n request.customServiceName = params.customServiceName;\r\n request.nameValuePairs = params.nameValuePairs;\r\n request.existingCleartextPassword = params.existingCleartextPassword;\r\n request.isLoginAfterSuccessfulRegistration = params.isLoginAfterSuccessfulRegistration;\r\n\r\n this.sendRequest('/PerformCustomService.ashx', request, _performCustomServiceResponse);\r\n };\r\n var _performCustomServiceResponse = function (request, response) {\r\n\r\n if (response.returnCode != 0) {\r\n var message = response.customServiceHandlerError;\r\n if (response.nameValuePairs !== undefined && response.nameValuePairs.length) {\r\n message = response.nameValuePairs[0].value;\r\n }\r\n request.callbackOnException.call(this, {\r\n returnCode: response.returnCode,\r\n customServiceHandlerError: response.customServiceHandlerError,\r\n message: message,\r\n nameValuePairs: response.nameValuePairs\r\n });\r\n } else {\r\n var items = response.nameValuePairs;\r\n\r\n request.callbackOnSuccess.call(this, { nameValuePairs: items });\r\n }\r\n };\r\n /*****************************\r\n * list tagged value IAPI call\r\n ******************************/\r\n\r\n this.listTaggedValues = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request = gecPrivate._base.extend(request, params);\r\n this.sendRequest('/ListTaggedValues.ashx', request, _listTaggedValuesResponse);\r\n };\r\n var _listTaggedValuesResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n request.callbackOnSuccess.call(this, {\r\n entities: response.taggedValues\r\n });\r\n }\r\n };\r\n\r\n /*****************************\r\n * ListExchangeTaggedValues call\r\n ******************************/\r\n\r\n this.listExchangeTaggedValues = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request = gecPrivate._base.extend(request, params);\r\n this.sendRequest('/ListExchangeTaggedValues.ashx', request, _listExchangeTaggedValuesResponse);\r\n };\r\n var _listExchangeTaggedValuesResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n request.callbackOnSuccess.call(this, {\r\n entities: response.taggedValues\r\n });\r\n }\r\n };\r\n\r\n /*****************************\r\n * getStartingPrices\r\n ******************************/\r\n\r\n this.getStartingPrices = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n request = gecPrivate._base.extend(request, params);\r\n this.sendRequest('/GetStartingPrices.ashx', request, _getStartingPricesResponse);\r\n };\r\n\r\n var _getStartingPricesResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n request.callbackOnSuccess.call(this, {\r\n entities: response.taggedValues\r\n });\r\n }\r\n };\r\n /****************************\r\n listCustomMarkets\r\n ****************************/\r\n this.listCustomMarkets = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n if (gecPrivate.sessionToken != null)\r\n request.sessionToken = gecPrivate.sessionToken;\r\n else {\r\n request.integrationPartnerId = controllerDefaults.integrationPartnerId;\r\n request.language = controllerDefaults.language;\r\n }\r\n request.customMarketListHandlerName = params.customMarketListHandlerName;\r\n request.customParameters = params.customParameters;\r\n\r\n this.sendRequest('/ListCustomMarkets.ashx', request, _listCustomMarketsResponse);\r\n };\r\n var _listCustomMarketsResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n\r\n\r\n request.callbackOnSuccess.call(this, { customMarkets: response.results });\r\n }\r\n };\r\n\r\n\r\n /****************************\r\n getAccountSummary\r\n ****************************/\r\n this.getAccountSummary = function (params) {\r\n\r\n var request;\r\n\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n this.sendRequest('/GetAccountSummary.ashx', request, _getAccountSummaryResponse);\r\n }\r\n };\r\n var _getAccountSummaryResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n request.callbackOnSuccess.call(this, response);\r\n }\r\n };\r\n\r\n this.listMarketsStartingSoonIAPIAsync = function (params) {\r\n if (controllerDefaults == null) {\r\n params.callbackOnException.call(this, { returnCode: 591, message: 'DefaultsNotLoaded' });;\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.playMarkets = params.playMarkets;\r\n request.wantPricedMarketsOnly = params.wantPricedMarketsOnly;\r\n\r\n if (gecPrivate.userContext !== null) {\r\n request.integrationPartnerId = gecPrivate.userContext.integrationPartnerId;\r\n request.language = gecPrivate.userContext.language;\r\n }\r\n else //use defaults\r\n {\r\n request.integrationPartnerId = controllerDefaults.integrationPartnerId;\r\n request.language = controllerDefaults.language;\r\n }\r\n\r\n this.sendRequest('/ListMarketsStartingSoon.ashx', request, listMarketsStartingSoonIAPIAsyncResponse);\r\n }\r\n\r\n };\r\n var listMarketsStartingSoonIAPIAsyncResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode, message: getReturnCodeName(response.returnCode) });\r\n } else {\r\n\r\n response.events = response.eventClassifiers;\r\n delete response.eventClassifiers;\r\n delete response.returnCode;\r\n\r\n request.callbackOnSuccess.call(this, response);\r\n }\r\n };\r\n this.listInRunningMarketsIAPIAsync = function (params) {\r\n if (controllerDefaults == null) {\r\n params.callbackOnException.call(this, { returnCode: 591, message: 'DefaultsNotLoaded' });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.playMarkets = params.playMarkets;\r\n request.wantPricedMarketsOnly = params.wantPricedMarketsOnly;\r\n\r\n if (gecPrivate.userContext !== null) {\r\n request.integrationPartnerId = gecPrivate.userContext.integrationPartnerId;\r\n request.language = gecPrivate.userContext.language;\r\n }\r\n else //use defaults\r\n {\r\n request.integrationPartnerId = controllerDefaults.integrationPartnerId;\r\n request.language = controllerDefaults.language;\r\n }\r\n\r\n this.sendRequest('/ListInRunningMarkets.ashx', request, listInRunningMarketsIAPIAsyncResponse);\r\n }\r\n\r\n };\r\n var listInRunningMarketsIAPIAsyncResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode, message: getReturnCodeName(response.returnCode) });\r\n } else {\r\n delete response.returnCode;\r\n\r\n request.callbackOnSuccess.call(this, response);\r\n }\r\n };\r\n\r\n /************************************\r\n oddsLadder\r\n ************************************/\r\n this.oddsLadder = function () {\r\n return _oddsLadder;\r\n };\r\n\r\n this.ping = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params)\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n if (params.currentClientTime != null)\r\n request[1] = params.currentClientTime;\r\n if (params.lastPingRoundtripMS != null)\r\n request[2] = params.lastPingRoundtripMS;\r\n if (params.lastPingedAt != null)\r\n request[3] = params.lastPingedAt;\r\n\r\n gecPrivate.addToPushMessages(request);\r\n gecPrivate._sendStreamingMessage(22, request);\r\n\r\n return correlationId;\r\n };\r\n\r\n this.checkSocketConnection = function () {\r\n return {\r\n socket\r\n };\r\n };\r\n\r\n this.getSessionToken = function (params) {\r\n return gecPrivate.sessionToken;\r\n\r\n }\r\n\r\n this.reestablishConnection = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params)\r\n\r\n if (_pingHandle != null) {\r\n window.clearInterval(_pingHandle);\r\n }\r\n\r\n stopPushHealthcheckTimer();\r\n\r\n if (_thisController.streamingConnectionDetails && _thisController.streamingConnectionDetails.sockURL !== undefined) {\r\n\r\n connect(_thisController.streamingConnectionDetails.sockURL, function (isConnected) {\r\n\r\n window.clearInterval(_pingHandle);\r\n stopPushHealthcheckTimer();\r\n\r\n if (isConnected) {\r\n gecPrivate._isConnecting = false;\r\n\r\n if (gecPrivate._aapiSessionToken != null) {\r\n _thisController.logonPunter({\r\n channelInformation: params.channelInformation,\r\n clientIdentifier: params.clientIdentifier,\r\n callbackOnSuccess: function (response) {\r\n params.callbackOnSuccess(null, { correlationId: correlationId });\r\n },\r\n callbackOnException: function (response) {\r\n params.callbackOnException(null, { correlationId: correlationId, exception: new gec.AsyncException(response) });\r\n },\r\n aAPISessionToken: gecPrivate._aapiSessionToken\r\n })\r\n\r\n } else {\r\n\r\n params.callbackOnSuccess.call(null, { correlationId: correlationId });\r\n }\r\n\r\n _pingHandle = window.setInterval(function () {\r\n if (!gecPrivate._anonSet && (gecPrivate._aapiSessionToken == null)) return;\r\n\r\n var curTime = new Date().toISOString();\r\n\r\n if (gecPrivate._lastPingedAt === 0) {\r\n gecPrivate._lastPingedAt = curTime;\r\n }\r\n\r\n _thisController.ping({\r\n currentClientTime: curTime,\r\n lastPingRoundtripMS: gecPrivate._lastPingRoundtripMS,\r\n lastPingedAt: gecPrivate._lastPingedAt\r\n });\r\n\r\n }, _pingInterval);\r\n\r\n } else {\r\n params.callbackOnException.call(null, { correlationId: correlationId, exception: new gec.AsyncException({ returnCode: 1 }) });\r\n }\r\n\r\n gecPrivate.clientLogger.logClientEntry({\r\n clientLogEntryType: 3,\r\n componentName: \"application\",\r\n subcomponentName: \"sockjs\",\r\n logEntry: isConnected ? \"SOCKJS: reestablishConnection Connected\" : \"SOCKJS: reestablishConnection failed\"\r\n });\r\n\r\n },\r\n _thisController.streamingConnectionDetails.options || _thisController.streamingConnectionDetails.transports);\r\n }\r\n\r\n\r\n\r\n };\r\n\r\n this.removeConnectionHealthChangeDelegate = function (delegateIndex) {\r\n delete gecPrivate._connectionHealthChangeDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedExchangeEventILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedExchangeEventILDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedGTVILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedGTVILDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedExchangeMarketILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedExchangeMarketILDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedExchangeSelectionILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedExchangeSelectionILDelegate[delegateIndex];\r\n };\r\n this.removeSubscribedMarketScoresILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedMarketScoresILDelegate[delegateIndex];\r\n };\r\n this.removeSubscribedExchangeSelectionPricesILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedExchangeSelectionPricesILDelegate[delegateIndex];\r\n };\r\n this.removeSubscribedExchangeSelectionFixedOddsPricesILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedExchangeSelectionFixedOddsPricesILDelegate[delegateIndex];\r\n };\r\n this.removeSubscribedExchangeMarketMatchedAmountILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedExchangeMarketMatchedAmountILDelegate[delegateIndex];\r\n };\r\n this.removeSubscribedCardILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedCardILDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedRaceILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedRaceILDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedRacePoolILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedRacePoolILDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedRunnerILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedRunnerILDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedCTVILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedCTVILDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedRTVILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedRTVILDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedGTVILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedGTVILDelegates[delegateIndex];\r\n };\r\n this.removeSubscribedAsyncResponseILDelegate = function (delegateIndex) {\r\n delete gecPrivate._subscribedAsyncResponseILDelegates[delegateIndex];\r\n };\r\n\r\n\r\n gecPrivate._anonSet = false;\r\n\r\n this.getContestCards = function () {\r\n return gecPrivate.contestCards;\r\n }\r\n\r\n this.getContestPoolsForCard = function (shortCardName, cardDate) {\r\n\r\n var contestPools;\r\n\r\n if (gecPrivate.contestCards) {\r\n gecPrivate.contestCards.forEach(function (contestCard) {\r\n if (contestCard.shortCardName === shortCardName\r\n && contestCardDateMatchesCardDate(contestCard.cardDate, cardDate)) {\r\n contestPools = contestCard.pools.split(\",\");\r\n }\r\n });\r\n }\r\n\r\n return contestPools;\r\n }\r\n\r\n this.setDefaultValues = function (params) {\r\n\r\n controllerDefaults.language = params.language;\r\n\r\n if (params.integrationPartnerId != null) {\r\n controllerDefaults.integrationPartnerId = params.integrationPartnerId;\r\n }\r\n controllerDefaults.currency = params.currency;\r\n if (params.organisationalUnitId != null) {\r\n controllerDefaults.organisationalUnitId = params.organisationalUnitId;\r\n }\r\n\r\n controllerDefaults.priceFormat = params.priceFormat;\r\n\r\n if (params.isSessionPresent != undefined) {\r\n _params.isSessionPresent = params.isSessionPresent;\r\n }\r\n if (params.clientIdentifier !== undefined) {\r\n gecPrivate._GBEHeader.clientIdentifier = params.clientIdentifier.replace(\"{gecversion}\", _version.implementationVersion);\r\n }\r\n };\r\n\r\n // Override the pushHealthcheck the user's values from the app\r\n this.setPersonalPushHealthcheckValues = function (params) {\r\n _pushHealthcheck.user = {};\r\n if (params.enabled) {\r\n _pushHealthcheck.user.enabled = params.enabled\r\n }\r\n if (params.timeout) {\r\n _pushHealthcheck.user.timeout = params.timeout\r\n }\r\n if (params.interval) {\r\n _pushHealthcheck.user.interval = params.interval\r\n }\r\n };\r\n\r\n /****************************\r\n setUserContext\r\n ****************************/\r\n this.setUserContext = function (params) {\r\n if (_telebetSessionToken == null) {\r\n params.callbackOnException.call(this, { returnCode: 588, message: 'NotTelebetUserSession' });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.telebetSessionToken = _telebetSessionToken;\r\n request.partnerUsername = params.partnerUsername;\r\n request.currency = params.currency;\r\n request.language = params.language;\r\n request.clientIdentifier = params.clientIdentifier;\r\n\r\n request.initialLanguage = params.initialLanguage;\r\n request.numberLogonAttemptsToReturn = params.numberLogonAttemptsToReturn;\r\n request.granularChannelType = params.granularChannelType;\r\n request.channelInformation = params.channelInformation;\r\n request.fingerprint = params.fingerprint;\r\n\r\n this.sendRequest('/EstablishSession.ashx', request, _setUserContextResponse);\r\n }\r\n };\r\n var _setUserContextResponse = function (request, response) {\r\n\r\n var userContext = null;\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, {});\r\n } else {\r\n gecPrivate.sessionToken = response.sessionToken;\r\n\r\n userContext = new gec.UserContext();\r\n\r\n userContext.partnerUsername = request.partnerUsername;\r\n userContext.punterId = response.punterId;\r\n userContext.debitSportsbookStake = response.debitSportsbookStake;\r\n userContext.debitExchangeStake = response.debitExchangeStake;\r\n userContext.purseIntegraionModeId = response.purseIntegrationMode;\r\n userContext.canPlaceForSideOrders = response.canPlaceForSideOrders;\r\n userContext.canPlaceAgainstSideOrders = response.canPlaceAgainstSideOrders;\r\n userContext.canDeposit = response.canDeposit;\r\n userContext.canWithdraw = response.canWithdraw;\r\n userContext.canPlaceOrders = response.canPlaceOrders;\r\n userContext.cohort = response.cohort;\r\n userContext.restrictedToFillKillOrders = response.restrictedToFillKillOrders;\r\n userContext.currency = response.currency;\r\n userContext.language = response.language;\r\n userContext.priceFormat = response.priceFormat;\r\n userContext.marketByVolumeAmount = response.marketByVolumeAmount;\r\n userContext.integrationPartnerId = response.integrationPartnerId;\r\n userContext.aDWPointsEarned = response.aDWPointsEarned;\r\n userContext.isOnLegacyRegime = response.isOnLegacyRegime;\r\n userContext.whiteLabel = response.whiteLabel;\r\n userContext.isIdentityEstablished = response.isIdentityEstablished;\r\n userContext.isASubPunter = response.isASubPunter;\r\n userContext.hasSubPunters = response.hasSubPunters;\r\n\r\n gecPrivate.userContext = userContext;\r\n request.callbackOnSuccess.call(this, userContext);\r\n }\r\n\r\n\r\n };\r\n\r\n\r\n\r\n this.transferFromSportsbook = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 591 });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.amount = { 'amount': params.amount, 'currency': gecPrivate.userContext.currency };\r\n\r\n this.sendRequest('/TransferFromSportsbook.ashx', request, _transferFromSportsbookResponse);\r\n }\r\n };\r\n var _transferFromSportsbookResponse = function (request, response) {\r\n\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, response);\r\n }\r\n\r\n };\r\n this.transferToSportsbook = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 591 });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.amount = { 'amount': params.amount, 'currency': gecPrivate.userContext.currency };\r\n\r\n this.sendRequest('/TransferToSportsbook.ashx', request, _transferToSportsbookResponse);\r\n }\r\n };\r\n var _transferToSportsbookResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, response);\r\n }\r\n };\r\n\r\n this.checkPasswordValidity = function (params) {\r\n\r\n // If no regular expression set, all passwords are valid\r\n if (gecPrivate.passwordValidityRegExp === undefined) {\r\n return true;\r\n }\r\n\r\n // Check against regular expression\r\n if (new RegExp(gecPrivate.passwordValidityRegExp).exec(params.password) !== null) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n this.updatePunterDetails = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n\r\n params.callbackOnException.call(this, { returnCode: 591 });\r\n\r\n }\r\n else {\r\n\r\n if (params.cleartextPassword !== undefined\r\n && this.checkPasswordValidity({ password: params.cleartextPassword }) === false) {\r\n\r\n params.callbackOnException.call(this, { returnCode: 405 /* InvalidPassword */ });\r\n\r\n } else {\r\n\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.newUsername = params.newUsername;\r\n request.cleartextPassword = params.cleartextPassword;\r\n request.existingCleartextPassword = params.existingCleartextPassword;\r\n\r\n request.passwordToken = params.passwordToken;\r\n request.title = params.title;\r\n request.sex = params.sex;\r\n request.name = params.name;\r\n request.nameSpecified = params.nameSpecified;\r\n request.country = params.country;\r\n request.countrySpecified = params.countrySpecified,\r\n request.address = params.address;\r\n request.addressSpecified = params.addressSpecified;\r\n request.email = params.email;\r\n request.emailSpecified = params.emailSpecified;\r\n request.phone = params.phone;\r\n request.phoneSpecified = params.phoneSpecified;\r\n request.secondaryPhone = params.secondaryPhone;\r\n request.secondaryPhoneSpecified = params.secondaryPhoneSpecified\r\n request.firstQuestionType = params.firstQuestionType;\r\n request.firstQuestionAnswer = params.firstQuestionAnswer;\r\n request.firstQuestionAnswerSpecified = params.firstQuestionAnswerSpecified;\r\n request.secondQuestionType = params.secondQuestionType;\r\n request.secondQuestionAnswer = params.secondQuestionAnswer;\r\n request.secondQuestionAnswerSpecified = params.secondQuestionAnswerSpecified;\r\n request.birthDate = params.birthDate;\r\n request.birthDateSpecified = params.birthDateSpecified;\r\n request.isContactAllowed = params.isContactAllowed;\r\n request.isContactAllowedSpecified = params.isContactAllowedSpecified;\r\n request.contactType = params.contactTypeId;\r\n\r\n this.sendRequest('/UpdatePunterDetails.ashx', request, _updatePunterDetailsResponse);\r\n }\r\n }\r\n };\r\n var _updatePunterDetailsResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n }\r\n else {\r\n\r\n // If a new sessionToken was returned (which happens if username is changed)\r\n // then replace old sessionToken with new one\r\n if (response.sessionToken) {\r\n gecPrivate.sessionToken = response.sessionToken;\r\n }\r\n\r\n request.callbackOnSuccess.call(this, {});\r\n }\r\n };\r\n /****************************\r\n updatePunterPreferences\r\n ****************************/\r\n this.updatePunterPreferences = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n if (params.priceFormat != null) {\r\n request.priceFormat = params.priceFormat;\r\n request.priceFormatSpecified = true;\r\n\r\n // Update user context...\r\n gecPrivate.userContext.priceFormat = params.priceFormat;\r\n // ...and save it to a cookie\r\n if (_storeSessionTokenInCookieWithExpiryTime && (gecPrivate.sessionToken != null))\r\n extendLifeOfSessionTokenCookie();\r\n }\r\n if (params.marketByVolumeAmount != null) {\r\n request.marketByVolumeAmount = { amount: params.marketByVolumeAmount, currency: gecPrivate.userContext.currency };\r\n }\r\n if (params.language != null) {\r\n request.language = params.language;\r\n request.languageSpecified = true;\r\n }\r\n if (params.forOrderRepriceOption != null) {\r\n request.forOrderRepriceOption = params.forOrderRepriceOption;\r\n request.forOrderRepriceOptionSpecified = true;\r\n }\r\n if (params.againstOrderRepriceOption != null) {\r\n request.againstOrderRepriceOption = params.againstOrderRepriceOption;\r\n request.againstOrderRepriceOptionSpecified = true;\r\n }\r\n if (typeof params.includeSettledSelectionsInPAndL != 'undefined') {\r\n request.includeSettledSelectionsInPAndL = params.includeSettledSelectionsInPAndL;\r\n request.includeSettledSelectionsInPAndLSpecified = true;\r\n }\r\n if (params.normalMaximumLiability === null) {\r\n request.normalMaximumLiability = {\r\n amount: 0,\r\n currency: gecPrivate.userContext.currency\r\n };\r\n }\r\n else {\r\n request.normalMaximumLiability = {\r\n amount: params.normalMaximumLiability,\r\n currency: gecPrivate.userContext.currency\r\n };\r\n }\r\n\r\n if (params.maxPunterReservationPerMarket != null) {\r\n request.maxPunterReservationPerMarketSpecified = true;\r\n if (params.maxPunterReservationPerMarket != 'UnSet')\r\n request.maxPunterReservationPerMarket = { amount: params.maxPunterReservationPerMarket, currency: gecPrivate.userContext.currency };\r\n else\r\n request.maxPunterReservationPerMarket = null;\r\n }\r\n\r\n this.sendRequest('/UpdatePunterPreferences.ashx', request, _updatePunterPreferencesResponse);\r\n }\r\n };\r\n var _updatePunterPreferencesResponse = function (request, response) {\r\n if (response.returnCode == 0) {\r\n if (request.priceFormat != null)\r\n gecPrivate.userContext.priceFormat = request.priceFormat;\r\n\r\n if (request.language != null)\r\n gecPrivate.userContext.language = request.language;\r\n\r\n gecPrivate.sessionToken = response.sessionToken;\r\n\r\n request.callbackOnSuccess.call(this, {});\r\n }\r\n else {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n\r\n };\r\n this.getUserContext = function () {\r\n return gecPrivate.userContext;\r\n }\r\n\r\n this.getJSONWebToken = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n var thisGEC = this;\r\n request.sessionToken = gecPrivate.sessionToken;\r\n thisGEC.sendRequest('/GetJSONWebToken.ashx', request, _getJSONWebTokenResponse);\r\n }\r\n\r\n function _getJSONWebTokenResponse(request, response) {\r\n if (response.returnCode === 0) {\r\n request.callbackOnSuccess.call(this, response.jSONWebToken);\r\n } else {\r\n request.callbackOnException.call(this);\r\n }\r\n }\r\n\r\n /****************************\r\n establishUserSession\r\n ****************************/\r\n\r\n this.establishUserSession = function (params) {\r\n\r\n var requiredParams = {\r\n initialLanguage: \"en\",\r\n numberLogonAttemptsToReturn: 1,\r\n granularChannelType: 1,\r\n channelInformation: \"\"\r\n };\r\n\r\n var request = new gec.IAPIRequest(params, requiredParams);\r\n var thisGEC = this;\r\n\r\n if (params.refreshSessionToken === true) {\r\n\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, {\r\n returnCode: gec.ReturnCode.NeitherUserNorTelebetUserSession\r\n });\r\n return;\r\n }\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.refreshSessionToken = params.refreshSessionToken;\r\n\r\n } else if (params.jSONWebToken !== undefined) {\r\n\r\n request.jSONWebToken = params.jSONWebToken;\r\n\r\n } else if (params.partnerToken != null) {\r\n\r\n request.partnerToken = params.partnerToken;\r\n try {\r\n request.partnerUsernameForUserContext = JSON.parse(window.atob(params.partnerToken)).partnerUsername;\r\n } catch (ex) {\r\n console.error(\"Exception parsing partnerToken\");\r\n console.error(params.partnerToken);\r\n console.error(ex);\r\n }\r\n\r\n } else if ((params.cleartextPassword != null) || (params.passwordToken != null)) {\r\n\r\n request.partnerUsername = params.partnerUsername;\r\n request.cleartextPassword = params.cleartextPassword;\r\n request.passwordToken = params.passwordToken;\r\n request.currency = controllerDefaults.currency;\r\n request.integrationPartnerId = params.integrationPartnerId;\r\n\r\n } else {\r\n request.partnerUsername = params.partnerUsername;\r\n request.integrationPartnerId = controllerDefaults.integrationPartnerId;\r\n request.arbitrarySessionInformation = params.arbitrarySessionInformation;\r\n\r\n }\r\n request.passPartnerUsernameToRequestQueueToken = params.passPartnerUsernameToRequestQueueToken;\r\n\r\n request.language = controllerDefaults.language;\r\n request.clientIdentifier = params.clientIdentifier;\r\n request.granularChannelType = params.granularChannelType;\r\n request.channelInformation = params.channelInformation;\r\n request.finalIPAddress = params.finalIPAddress;\r\n request.initialLanguage = params.initialLanguage;\r\n request.numberLogonAttemptsToReturn = params.numberLogonAttemptsToReturn;\r\n request.twoFactorAuthenticationCode = params.twoFactorAuthenticationCode;\r\n request.trustedDeviceToken = params.trustedDeviceToken;\r\n request.reCAPTCHAToken = params.reCAPTCHAToken;\r\n request.tmxSessionId = params.tmxSessionId;\r\n request.tmxWebSessionId = params.tmxWebSessionId;\r\n request.tmxPageId = params.tmxPageId;\r\n\r\n request.fingerprint = params.fingerprint;\r\n request.location = params.location;\r\n request.callbackOnQueueingOfRequest = params.callbackOnQueueingOfRequest;\r\n request.geoLocationToken = params.geoLocationToken;\r\n request.enrolmentTOTP = params.enrolmentTOTP;\r\n request.deviceIdentifier = params.deviceIdentifier;\r\n\r\n if (params.requestLocationInformation) {\r\n\r\n this.getBrowserGeoLocation(function (location) {\r\n\r\n if (location) {\r\n request.location = {};\r\n request.location.latitude = location.latitude;\r\n request.location.longitude = location.longitude;\r\n request.location.accuracy = Math.round(location.accuracy);\r\n\r\n thisGEC.sendRequest('/EstablishSession.ashx', request, _establishUserSessionResponse);\r\n } else {\r\n request.callbackOnException.call(this, new gec.AsyncException({\r\n returnCode: gec.ReturnCode.LocationNotSpecified,\r\n name: gec.getReturnCodeName(gec.ReturnCode.LocationNotSpecified)\r\n }));\r\n }\r\n\r\n });\r\n\r\n } else {\r\n\r\n thisGEC.sendRequest('/EstablishSession.ashx', request, _establishUserSessionResponse);\r\n\r\n }\r\n };\r\n\r\n gecPrivate.getListOfContestCardsForPunter = function (punterId, callbackOnSuccess, callbackOnException) {\r\n _thisController.listPunterTaggedValues({\r\n searchCriteria: \"GEC.Contest.\" + punterId + \".%\",\r\n callbackOnSuccess: function (contestPunterPTVs) {\r\n\r\n if (contestPunterPTVs !== undefined\r\n && contestPunterPTVs.length > 0) {\r\n\r\n // Punter is enrolled in 1 or more contests.\r\n\r\n // Look for contest GTVs with matching names\r\n // (strip punterId from above PTV name(s) to get form \"GEC.Contest.\")\r\n _thisController.listGenericTaggedValues({\r\n\r\n searchStrings: gecPrivate._base.getArrayOfTaggedValueNames(contestPunterPTVs).map(function (gtvName) {\r\n return gtvName.replace(\".\" + punterId, \"\");\r\n }),\r\n\r\n callbackOnSuccess: function (contestGenericTaggedValues) {\r\n\r\n var now = new Date();\r\n\r\n gecPrivate.contestCards = gecPrivate._base.getCardsForCurrentlyActiveContest(contestGenericTaggedValues, now);\r\n\r\n if (gecPrivate.userContext !== null) {\r\n gecPrivate.userContext.contestCards = gecPrivate.contestCards;\r\n }\r\n\r\n callbackOnSuccess.call(this, gecPrivate.userContext);\r\n },\r\n callbackOnException: function (response) {\r\n\r\n callbackOnException.call(this, new gec.AsyncException({\r\n returnCode: 2 /* SystemError */,\r\n name: gec.getReturnCodeName(2)\r\n }));\r\n\r\n }\r\n });\r\n\r\n } else {\r\n\r\n // Punter is not registered for any contests\r\n\r\n gecPrivate.contestCards = undefined;\r\n\r\n if (gecPrivate.userContext !== null) {\r\n gecPrivate.userContext.contestCards = gecPrivate.contestCards;\r\n }\r\n\r\n callbackOnSuccess.call(this, gecPrivate.userContext);\r\n\r\n }\r\n\r\n },\r\n callbackOnException: function (resp) {\r\n\r\n callbackOnException.call(this, new gec.AsyncException({\r\n returnCode: 2 /* SystemError */,\r\n name: gec.getReturnCodeName(2)\r\n }));\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n var _establishUserSessionResponse = function (request, response) {\r\n\r\n var userContext = null;\r\n\r\n if (response.returnCode != 0) {\r\n\r\n if (response.returnCode === gec.ReturnCode.LocationNotSpecified) {\r\n gecPrivate._base.setCookie(\"geoLocationPermission\", \"denied_relevant_state\", 9999, gecPrivate.sameSiteValueForCookies);\r\n }\r\n\r\n request.callbackOnException.call(this, new gec.AsyncException({\r\n returnCode: response.returnCode,\r\n message: response.geoLocateErrorMessage ? response.geoLocateErrorMessage.split('\\r\\n')[0] : undefined,\r\n name: gec.getReturnCodeName(response.returnCode)\r\n }));\r\n\r\n } else {\r\n\r\n gecPrivate.sessionToken = response.sessionToken;\r\n _telebetSessionToken = null;\r\n gecPrivate._maxSequenceNo = 0;\r\n userContext = new gec.UserContext();\r\n\r\n userContext.partnerUsername = request.partnerUsername || request.partnerUsernameForUserContext;\r\n userContext.punterId = response.punterId;\r\n userContext.debitSportsbookStake = response.debitSportsbookStake;\r\n userContext.debitExchangeStake = response.debitExchangeStake;\r\n userContext.purseIntegraionModeId = response.purseIntegrationMode;\r\n userContext.canPlaceForSideOrders = response.canPlaceForSideOrders;\r\n userContext.canPlaceAgainstSideOrders = response.canPlaceAgainstSideOrders;\r\n userContext.canDeposit = response.canDeposit;\r\n userContext.canWithdraw = response.canWithdraw;\r\n userContext.canPlaceOrders = response.canPlaceOrders;\r\n userContext.restrictedToFillKillOrders = response.restrictedToFillKillOrders;\r\n userContext.currency = response.currency;\r\n userContext.language = response.language;\r\n userContext.priceFormat = response.priceFormat;\r\n userContext.marketByVolumeAmount = response.marketByVolumeAmount.amount;\r\n userContext.logonAttempts = response.logonAttempts;\r\n userContext.punterClassificationId = response.punterClassificationId;\r\n userContext.punterClassificationName = response.punterClassificationName;\r\n userContext.cohort = response.cohort;\r\n userContext.state = response.state;\r\n userContext.zipcode = response.zipcode;\r\n userContext.wageringCohort = response.wageringCohort;\r\n userContext.aDWPointsEarned = response.aDWPointsEarned;\r\n userContext.isOnLegacyRegime = response.isOnLegacyRegime;\r\n userContext.canBackSP = response.canBackSP;\r\n userContext.canLaySP = response.canLaySP;\r\n userContext.location = request.location;\r\n userContext.tmxReviewStatus = response.tmxReviewStatus;\r\n userContext.whiteLabel = response.whiteLabel;\r\n userContext.isIdentityEstablished = response.isIdentityEstablished;\r\n userContext.isASubPunter = response.isASubPunter;\r\n userContext.hasSubPunters = response.hasSubPunters;\r\n userContext.canAddSubPunters = response.canAddSubPunters;\r\n userContext.geolocateInSeconds = response.geolocateInSeconds;\r\n\r\n _username = request.partnerUsername;\r\n _password = request.cleartextPassword;\r\n\r\n gecPrivate.userContext = userContext;\r\n\r\n if (_params.isSessionPresent === true) {\r\n _arbRefreshID = window.setInterval(function () {\r\n if (getIdleDuration() < _cookieTimeout) {\r\n refreshArbitrarySessionInformation(_thisController);\r\n _keepAlive = false;\r\n }\r\n\r\n }, _cookieRefreshRate);\r\n }\r\n\r\n _params.isSessionPresent = true;\r\n\r\n // Check for contest GTV(s) for punter, in form \"GEC.Contest..\"\r\n if (gec.Controller.prototype.listCards !== undefined) {\r\n gecPrivate.getListOfContestCardsForPunter(response.punterId, request.callbackOnSuccess, request.callbackOnException);\r\n } else {\r\n request.callbackOnSuccess.call(this, gecPrivate.userContext);\r\n }\r\n\r\n }\r\n };\r\n\r\n var _arbRefreshID;\r\n var _keepAlive = false;\r\n var _lastKeepAlive = +new Date();\r\n\r\n this.keepAlive = function () {\r\n _keepAlive = true;\r\n _lastKeepAlive = +new Date();\r\n\r\n };\r\n var getIdleDuration = function () {\r\n var now = +new Date();\r\n return now - _lastKeepAlive;\r\n };\r\n\r\n gecPrivate.checkExpiredSession = function (returnCode) {\r\n if ((_params.isSessionPresent) && (_params.onSessionExpired)) {\r\n if ((returnCode == 512) || (returnCode == 514) || (returnCode == 520)) {\r\n _params.isSessionPresent = false;\r\n window.clearInterval(_arbRefreshID);\r\n _clearUserContextVariables();\r\n _params.onSessionExpired.call();\r\n }\r\n }\r\n }\r\n var refreshArbitrarySessionInformation = function (ctx) {\r\n\r\n if (gecPrivate.neverCallRefreshArbitrarySessionInformation === true) {\r\n // This is a hack to prevent RefreshArbitrarySessionInformation being\r\n // called on sites that never need it.\r\n // (It can be triggered if establishUserSession is called more than once by a site)\r\n return;\r\n }\r\n\r\n var request = new gec.IAPIRequest();\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n ctx.sendRequest('/RefreshArbitrarySessionInformation.ashx', request, _refreshArbitrarySessionInformationResponse);\r\n };\r\n var _refreshArbitrarySessionInformationResponse = function (request, response) {\r\n\r\n if (response.returnCode != 0) {\r\n gecPrivate._base.log(\"Exception Refreshing Arbitrary Session Information\");\r\n }\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n };\r\n\r\n // Check if session token cookie has expired - if it has, log the user out\r\n var isSessionTokenCookieExpired = function () {\r\n var sessionTokenCookie = gecPrivate._base.getCookie(sessionTokenCookieName);\r\n if (sessionTokenCookie == \"\") {\r\n\r\n // Session token cookie has expired, so log user out\r\n _clearUserContextVariables();\r\n\r\n // Clear the timer that checks if the session has expired\r\n window.clearInterval(_arbRefreshID);\r\n\r\n // Call callback function supplied\r\n if (_params.onSessionExpired)\r\n _params.onSessionExpired.call();\r\n\r\n return true;\r\n }\r\n else\r\n return false;\r\n }\r\n\r\n // Extend the life of the session token cookie\r\n var extendLifeOfSessionTokenCookie = function () {\r\n\r\n // Extend life of session token cookie\r\n var cookieTimeoutInDays = _cookieTimeout / (1000 * 60 * 60 * 24);\r\n gecPrivate._base.setCookie(sessionTokenCookieName, gecPrivate.sessionToken, cookieTimeoutInDays, gecPrivate.sameSiteValueForCookies);\r\n gecPrivate._base.setCookie(gecPrivate.userContextCookieName, JSON.stringify(gecPrivate.userContext), cookieTimeoutInDays, gecPrivate.sameSiteValueForCookies);\r\n }\r\n\r\n /****************************\r\n establishUserSessionEnhanced\r\n ****************************/\r\n this.establishUserSessionEnhanced = function (params) {\r\n var requiredParams = {\r\n initialLanguage: \"en\",\r\n numberLogonAttemptsToReturn: 1,\r\n granularChannelType: 1,\r\n channelInformation: \"\"\r\n };\r\n var request = new gec.IAPIRequest(params, requiredParams);\r\n var thisGEC = this;\r\n\r\n if (params.partnerToken != null) {\r\n request.partnerToken = params.partnerToken;\r\n try {\r\n request.partnerUsername = JSON.parse(window.atob(params.partnerToken)).partnerUsername;\r\n } catch (ex) {\r\n console.error(\"Exception parsing partnerToken\");\r\n console.error(params.partnerToken);\r\n console.error(ex);\r\n }\r\n } else if (params.identityXRequestId != null) {\r\n request.partnerUsername = params.partnerUsername;\r\n request.identityXRequestId = params.identityXRequestId;\r\n request.identityXToken = params.identityXToken;\r\n request.currency = controllerDefaults.currency;\r\n } else {\r\n request.integrationPartnerId = params.integrationPartnerId;\r\n request.partnerUsername = params.partnerUsername;\r\n request.cleartextPassword = params.cleartextPassword;\r\n request.passwordToken = params.passwordToken;\r\n\r\n request.currency = controllerDefaults.currency;\r\n }\r\n request.language = controllerDefaults.language;\r\n request.clientIdentifier = params.clientIdentifier;\r\n request.granularChannelType = params.granularChannelType;\r\n request.channelInformation = params.channelInformation;\r\n request.reCAPTCHAToken = params.reCAPTCHAToken;\r\n request.twoFactorAuthenticationCode = params.twoFactorAuthenticationCode;\r\n request.trustedDeviceToken = params.trustedDeviceToken;\r\n request.initialLanguage = params.initialLanguage;\r\n request.numberLogonAttemptsToReturn = params.numberLogonAttemptsToReturn;\r\n request.tmxSessionId = params.tmxSessionId;\r\n request.tmxWebSessionId = params.tmxWebSessionId;\r\n request.tmxPageId = params.tmxPageId;\r\n request.fingerprint = params.fingerprint;\r\n request.location = params.location;\r\n request.geoLocationToken = params.geoLocationToken;\r\n request.enrolmentTOTP = params.enrolmentTOTP;\r\n\r\n if (params.finalIPAddress) {\r\n request.finalIPAddress = params.finalIPAddress;\r\n }\r\n\r\n if (params.requestLocationInformation) {\r\n\r\n this.getBrowserGeoLocation(function (location) {\r\n\r\n if (location) {\r\n request.location = {};\r\n request.location.latitude = location.latitude;\r\n request.location.longitude = location.longitude;\r\n request.location.accuracy = Math.round(location.accuracy);\r\n\r\n thisGEC.sendRequest('/EstablishSessionEnhanced.ashx', request, _establishUserSessionEnhancedResponse);\r\n } else {\r\n request.callbackOnException.call(this, new gec.AsyncException({\r\n returnCode: gec.ReturnCode.LocationNotSpecified,\r\n name: gec.getReturnCodeName(gec.ReturnCode.LocationNotSpecified)\r\n }));\r\n }\r\n\r\n });\r\n\r\n } else {\r\n\r\n thisGEC.sendRequest('/EstablishSessionEnhanced.ashx', request, _establishUserSessionEnhancedResponse);\r\n\r\n }\r\n\r\n };\r\n\r\n var _establishUserSessionEnhancedResponse = function (request, response) {\r\n\r\n if (response.returnCode != 0) {\r\n\r\n if (response.returnCode === gec.ReturnCode.LocationNotSpecified) {\r\n gecPrivate._base.setCookie(\"geoLocationPermission\", \"denied_relevant_state\", 9999);\r\n }\r\n\r\n // 982 IdentityXTokenNotAuthenticated\r\n if (response.returnCode === 982) {\r\n request.callbackOnException.call(this, new gec.AsyncException({\r\n returnCode: response.returnCode,\r\n name: \"IdentityXTokenNotAuthenticated\",\r\n identityXStatus: response.identityXStatus,\r\n identityXAuthenticationResponse: response.identityXAuthenticationResponse,\r\n identityXCode: response.identityXCode,\r\n identityXMessage: response.identityXMessage\r\n }));\r\n\r\n return;\r\n }\r\n\r\n request.callbackOnException.call(this, new gec.AsyncException({\r\n returnCode: response.returnCode,\r\n name: gec.getReturnCodeName(response.returnCode)\r\n }));\r\n\r\n } else {\r\n\r\n var userContext = new gec.UserContextEnhanced();\r\n\r\n gecPrivate.sessionToken = response.sessionToken;\r\n _telebetSessionToken = null;\r\n gecPrivate._maxSequenceNo = 0;\r\n\r\n userContext.partnerUsername = request.partnerUsername;\r\n userContext.punterId = response.punterId;\r\n userContext.debitSportsbookStake = response.debitSportsbookStake;\r\n userContext.debitExchangeStake = response.debitExchangeStake;\r\n userContext.purseIntegraionModeId = response.purseIntegrationMode;\r\n userContext.canPlaceForSideOrders = response.canPlaceForSideOrders;\r\n userContext.canPlaceAgainstSideOrders = response.canPlaceAgainstSideOrders;\r\n userContext.canPlaceOrders = response.canPlaceOrders;\r\n userContext.canDeposit = response.canDeposit;\r\n userContext.canWithdraw = response.canWithdraw;\r\n userContext.restrictedToFillKillOrders = response.restrictedToFillKillOrders;\r\n userContext.currency = response.currency;\r\n userContext.language = response.language;\r\n userContext.priceFormat = response.priceFormat;\r\n userContext.marketByVolumeAmount = response.marketByVolumeAmount.amount;\r\n userContext.availableBalance = response.availableBalance.amount;\r\n\r\n userContext.isRetailPunter = response.isRetailPunter;\r\n userContext.numberFreeBets = response.numberFreeBets;\r\n userContext.sumAmountRemaining = response.sumAmountRemaining.amount;\r\n userContext.reserved = response.reserved;\r\n userContext.punterClassificationId = response.punterClassificationId;\r\n userContext.punterClassificationName = response.punterClassificationName;\r\n userContext.cohort = response.cohort;\r\n userContext.state = response.state;\r\n userContext.zipcode = response.zipcode;\r\n userContext.wageringCohort = response.wageringCohort;\r\n userContext.aDWPointsEarned = response.aDWPointsEarned;\r\n userContext.isOnLegacyRegime = response.isOnLegacyRegime;\r\n userContext.canBackSP = response.canBackSP;\r\n userContext.canLaySP = response.canLaySP;\r\n\r\n userContext.isASubPunter = response.isASubPunter;\r\n userContext.hasSubPunters = response.hasSubPunters;\r\n userContext.whiteLabel = response.whiteLabel;\r\n\r\n userContext.identityXStatus = response.identityXStatus;\r\n userContext.identityXAuthenticationResponse = response.identityXAuthenticationResponse;\r\n userContext.identityXCode = response.identityXCode;\r\n userContext.identityXMessage = response.identityXMessage;\r\n userContext.tmxReviewStatus = response.tmxReviewStatus;\r\n userContext.isIdentityEstablished = response.isIdentityEstablished;\r\n userContext.geolocateInSeconds = response.geolocateInSeconds;\r\n\r\n userContext.logonAttempts = [{\r\n attemptedAt: response.lastLogonAttempt,\r\n punterIPAddress: null,\r\n logonSucceeded: null\r\n\r\n }, {\r\n attemptedAt: response.lastSuccessfulLogon,\r\n punterIPAddress: null,\r\n logonSucceeded: true\r\n }\r\n\r\n\r\n ];\r\n\r\n if (_params.isSessionPresent === true) {\r\n _arbRefreshID = window.setInterval(function () {\r\n\r\n if (_storeSessionTokenInCookieWithExpiryTime && isSessionTokenCookieExpired())\r\n return;\r\n\r\n if (_keepAlive) {\r\n\r\n if (_storeSessionTokenInCookieWithExpiryTime && (gecPrivate.sessionToken != null))\r\n extendLifeOfSessionTokenCookie();\r\n else\r\n refreshArbitrarySessionInformation(_thisController);\r\n\r\n _keepAlive = false;\r\n\r\n // If callback exists, call it to let calling code know we have extended the session\r\n if (_params.onSessionExtended)\r\n _params.onSessionExtended.call();\r\n }\r\n\r\n }, _cookieRefreshRate);\r\n }\r\n\r\n\r\n if (_storeSessionTokenInCookieWithExpiryTime && (gecPrivate.sessionToken != null)) {\r\n var cookieTimeoutInDays = _cookieTimeout / (1000 * 60 * 60 * 24);\r\n gecPrivate._base.setCookie(sessionTokenCookieName, gecPrivate.sessionToken, cookieTimeoutInDays, gecPrivate.sameSiteValueForCookies);\r\n gecPrivate._base.setCookie(gecPrivate.userContextCookieName, JSON.stringify(userContext), cookieTimeoutInDays, gecPrivate.sameSiteValueForCookies);\r\n _params.isSessionPresent = true;\r\n }\r\n\r\n _params.isSessionPresent = true;\r\n\r\n _username = request.partnerUsername;\r\n _password = request.cleartextPassword;\r\n\r\n gecPrivate.userContext = userContext;\r\n request.callbackOnSuccess.call(this, userContext);\r\n }\r\n };\r\n /****************************\r\n establishTelebetSession\r\n ****************************/\r\n this.establishTelebetSession = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n request.jSONWebToken = params.jSONWebToken;\r\n request.partnerTelebetToken = params.partnerTelebetToken;\r\n this.sendRequest('/EstablishTelebetSession.ashx', request, _establishTelebetSessionResponse);\r\n };\r\n var _establishTelebetSessionResponse = function (request, response) {\r\n if (response.returnCode == 0) {\r\n gecPrivate.sessionToken = undefined;\r\n _telebetSessionToken = response.telebetSessionToken;\r\n _thisController.clearUserContext();\r\n\r\n request.callbackOnSuccess.call(this, {});\r\n } else {\r\n request.callbackOnException.call(this, response);\r\n }\r\n };\r\n\r\n /****************************\r\n getBalance\r\n ****************************/\r\n this.getBalance = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n this.sendRequest('/GetBalance.ashx', request, _getBalanceResponse);\r\n }\r\n };\r\n var _getBalanceResponse = function (request, response) {\r\n if (response.returnCode == 0) {\r\n var amount = (response.availableBalance !== undefined) ? response.availableBalance.amount : 0;\r\n var withdrawableBalanceAmount = (response.withdrawableBalance !== undefined) ? response.withdrawableBalance.amount : 0;\r\n\r\n request.callbackOnSuccess.call(this, {\r\n balance: amount, \t// Obsolete - retained for backwards compatibility\r\n availableBalance: amount,\r\n withdrawableBalance: withdrawableBalanceAmount\r\n });\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, response);\r\n }\r\n\r\n };\r\n\r\n\r\n /****************************\r\n getDefinitiveBalance\r\n ****************************/\r\n\r\n this.getDefinitiveAvailableBalance = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n this.sendRequest('/GetDefinitiveAvailableBalance.ashx', request, _getDefinitiveAvailableBalanceResponse);\r\n }\r\n };\r\n\r\n var _getDefinitiveAvailableBalanceResponse = function (request, response) {\r\n if (response.returnCode == 0) {\r\n request.callbackOnSuccess.call(this, {\r\n availableBalance: response.availableBalance,\r\n externalBalanceObtained: response.externalBalanceObtained\r\n });\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, response);\r\n }\r\n\r\n };\r\n\r\n\r\n /****************************\r\n getPunterFundingTotal\r\n ****************************/\r\n\r\n this.getPunterFundingTotal = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n this.sendRequest('/GetPunterFundingTotal.ashx', request, _getPunterFundingTotalResponse);\r\n }\r\n };\r\n\r\n var _getPunterFundingTotalResponse = function (request, response) {\r\n if (response.returnCode == 0) {\r\n\r\n request.callbackOnSuccess.call(this, {\r\n totalNetDeposits: response.totalNetDeposits.amount\r\n });\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, response);\r\n }\r\n\r\n };\r\n\r\n /****************************\r\n turnTwoFactorAuthenticationOn\r\n ****************************/\r\n\r\n this.turnTwoFactorAuthenticationOn = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, {\r\n returnCode: 590, message: \"NeitherUserNorTelebetUserSession\"\r\n });\r\n } else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n this.sendRequest('/TurnTwoFactorAuthenticationOn.ashx', request, _turnTwoFactorAuthenticationOnResponse);\r\n }\r\n };\r\n\r\n var _turnTwoFactorAuthenticationOnResponse = function (request, response) {\r\n if (response.returnCode === 0) {\r\n request.callbackOnSuccess.call(this, {\r\n secretKey: response.secretKey\r\n });\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, response);\r\n }\r\n\r\n };\r\n\r\n /****************************\r\n confirmTwoFactorAuthenticationOn\r\n ****************************/\r\n\r\n this.confirmTwoFactorAuthenticationOn = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, {\r\n returnCode: 590, message: \"NeitherUserNorTelebetUserSession\"\r\n });\r\n } else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.twoFactorAuthenticationCode = params.twoFactorAuthenticationCode;\r\n this.sendRequest('/ConfirmTwoFactorAuthenticationOn.ashx', request, _confirmTwoFactorAuthenticationOnResponse);\r\n }\r\n };\r\n\r\n var _confirmTwoFactorAuthenticationOnResponse = function (request, response) {\r\n if (response.returnCode === 0) {\r\n request.callbackOnSuccess.call(this, {});\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, response);\r\n }\r\n\r\n };\r\n\r\n /****************************\r\n turnTwoFactorAuthenticationOff\r\n ****************************/\r\n\r\n this.turnTwoFactorAuthenticationOff = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, {\r\n returnCode: 590, message: \"NeitherUserNorTelebetUserSession\"\r\n });\r\n } else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n this.sendRequest('/TurnTwoFactorAuthenticationOff.ashx', request, _turnTwoFactorAuthenticationOffResponse);\r\n }\r\n };\r\n\r\n var _turnTwoFactorAuthenticationOffResponse = function (request, response) {\r\n if (response.returnCode === 0) {\r\n request.callbackOnSuccess.call(this, {});\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, response);\r\n }\r\n\r\n };\r\n\r\n /****************************\r\n addTrustedDevice\r\n ****************************/\r\n this.addTrustedDevice = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, {\r\n returnCode: 590, message: \"NeitherUserNorTelebetUserSession\"\r\n });\r\n } else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n request.deviceName = params.deviceName;\r\n request.trustedDeviceToken = params.trustedDeviceToken;\r\n\r\n this.sendRequest('/AddTrustedDevice.ashx', request, _addTrustedDeviceResponse);\r\n }\r\n };\r\n\r\n var _addTrustedDeviceResponse = function (request, response) {\r\n if (response.returnCode === 0) {\r\n request.callbackOnSuccess.call(this, {});\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, new gec.AsyncException({ returnCode: response.returnCode }));\r\n }\r\n };\r\n\r\n /****************************\r\n removeTrustedDevice\r\n ****************************/\r\n this.removeTrustedDevice = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, {\r\n returnCode: 590, message: \"NeitherUserNorTelebetUserSession\"\r\n });\r\n } else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.deviceName = params.deviceName;\r\n\r\n this.sendRequest('/RemoveTrustedDevice.ashx', request, _removeTrustedDeviceResponse);\r\n }\r\n };\r\n\r\n var _removeTrustedDeviceResponse = function (request, response) {\r\n if (response.returnCode === 0) {\r\n request.callbackOnSuccess.call(this, {});\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, response);\r\n }\r\n\r\n };\r\n\r\n /****************************\r\n listTrustedDevices\r\n ****************************/\r\n this.listTrustedDevices = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, {\r\n returnCode: 590, message: \"NeitherUserNorTelebetUserSession\"\r\n });\r\n } else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n this.sendRequest('/ListTrustedDevices.ashx', request, _listTrustedDevicesResponse);\r\n }\r\n };\r\n\r\n var _listTrustedDevicesResponse = function (request, response) {\r\n if (response.returnCode === 0) {\r\n request.callbackOnSuccess.call(this, {\r\n trustedDevices: response.trustedDevices\r\n });\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, response);\r\n }\r\n\r\n };\r\n\r\n /****************************\r\n setTrustDevices\r\n ****************************/\r\n this.setTrustDevices = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.enable = params.enable;\r\n this.sendRequest('/SetTrustDevices.ashx', request, _setTrustDevicesResponse);\r\n }\r\n };\r\n\r\n var _setTrustDevicesResponse = function (request, response) {\r\n if (response.returnCode === 0) {\r\n request.callbackOnSuccess.call(this, {});\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, response);\r\n }\r\n\r\n };\r\n\r\n /****************************\r\n listApplicableFTMs\r\n ****************************/\r\n\r\n this.listApplicableFTMs = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n this.sendRequest('/ListApplicableFTMs.ashx', request, _listApplicableFTMsResponse);\r\n }\r\n };\r\n\r\n var _listApplicableFTMsResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, {\r\n fTMs: response.fTMs\r\n });\r\n }\r\n };\r\n\r\n\r\n /****************************\r\n addFTMR\r\n ****************************/\r\n\r\n this.addFTMR = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.nameValuePairs = params.nameValuePairs;\r\n request.wantDetailsRetained = params.wantDetailsRetained;\r\n request.nickname = params.nickname;\r\n if (params.isCurrentActiveWebFTMR !== undefined) {\r\n request.isCurrentActiveWebFTMR = params.isCurrentActiveWebFTMR;\r\n } else {\r\n request.isCurrentActiveWebFTMR = true;\r\n }\r\n request.fundsTransferMethodId = params.fundsTransferMethodId;\r\n\r\n this.sendRequest('/AddFTMR.ashx', request, _addFTMRResponse);\r\n }\r\n };\r\n\r\n var _addFTMRResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, {\r\n returnCode: response.returnCode,\r\n additionalReturnInformation: response.additionalReturnInformation,\r\n extraReturnInformation: response.extraReturnInformation\r\n });\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, {\r\n fTMRId: response.fTMRId,\r\n additionalReturnInformation: response.additionalReturnInformation,\r\n extraReturnInformation: response.extraReturnInformation\r\n });\r\n }\r\n };\r\n\r\n /****************************\r\n updateFTMR\r\n ****************************/\r\n\r\n this.updateFTMR = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.fTMRId = params.fTMRId;\r\n request.nameValuePairs = params.nameValuePairs;\r\n request.wantDetailsRetained = params.wantDetailsRetained;\r\n request.nickname = params.nickname;\r\n\r\n this.sendRequest('/UpdateFTMR.ashx', request, _updateFTMRResponse);\r\n }\r\n };\r\n\r\n var _updateFTMRResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, {\r\n fTMRId: response.fTMRId,\r\n additionalReturnInformation: response.additionalReturnInformation,\r\n extraReturnInformation: response.extraReturnInformation\r\n });\r\n }\r\n };\r\n\r\n /****************************\r\n removeFTMR\r\n ****************************/\r\n\r\n this.removeFTMR = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.fTMRId = params.fTMRId;\r\n\r\n this.sendRequest('/RemoveFTMR.ashx', request, _removeFTMRResponse);\r\n }\r\n };\r\n\r\n var _removeFTMRResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, {});\r\n }\r\n };\r\n\r\n /****************************\r\n reinstateFTMR\r\n ****************************/\r\n\r\n this.reinstateFTMR = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.fTMRId = params.fTMRId;\r\n\r\n this.sendRequest('/ReinstateFTMR.ashx', request, _reinstateFTMRResponse);\r\n }\r\n };\r\n\r\n var _reinstateFTMRResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, {});\r\n }\r\n };\r\n\r\n /****************************\r\n calculateFTMRCommissionCharges\r\n ****************************/\r\n\r\n this.calculateFTMRCommissionCharges = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.fTMRId = params.fTMRId;\r\n request.amount = params.amount;\r\n request.isLodgement = params.isLodgement;\r\n\r\n this.sendRequest('/CalculateFTMRCommissionCharges.ashx', request, _calculateFTMRCommissionChargesResponse);\r\n }\r\n };\r\n\r\n var _calculateFTMRCommissionChargesResponse = function (request, response) {\r\n if (response.returnCode !== 0) {\r\n request.callbackOnException.call(this, {\r\n returnCode: response.returnCode\r\n });\r\n } else {\r\n request.callbackOnSuccess.call(this, {\r\n commissionAmount: response.commissionAmount,\r\n fTMRAmount: response.fTMRAmount,\r\n punterAmount: response.punterAmount\r\n });\r\n }\r\n };\r\n\r\n /****************************\r\n listFTMRs\r\n ****************************/\r\n\r\n this.listFTMRs = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n this.sendRequest('/ListFTMRs.ashx', request, _listFTMRsResponse);\r\n }\r\n };\r\n\r\n var _listFTMRsResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n else {\r\n if (response.fTMRs !== null) {\r\n var ftmr, ftmp;\r\n var thisFTMR, thisFTMP;\r\n var ftmrs = [];\r\n\r\n for (var i = 0; i < response.fTMRs.length; i++) {\r\n\r\n thisFTMR = response.fTMRs[i];\r\n\r\n ftmr = {};\r\n\r\n ftmr.fTMRId = thisFTMR.fTMRId;\r\n ftmr.status = thisFTMR.status;\r\n ftmr.fundsTransferMethodId = thisFTMR.fundsTransferMethodId;\r\n ftmr.type = thisFTMR.type;\r\n ftmr.name = thisFTMR.name;\r\n ftmr.nickname = thisFTMR.nickname;\r\n\r\n ftmr.nameValuePairs = [];\r\n if (thisFTMR.fTMRValues) {\r\n for (var j = 0; j < thisFTMR.fTMRValues.length; j++) {\r\n ftmp = {};\r\n thisFTMP = thisFTMR.fTMRValues[j];\r\n\r\n ftmp.name = thisFTMP.name;\r\n ftmp.value = thisFTMP.value;\r\n ftmp.isMandatory = thisFTMP.isMandatory;\r\n ftmp.obfuscateDisplay = thisFTMP.obfuscateDisplay;\r\n\r\n ftmr.nameValuePairs[j] = ftmp;\r\n }\r\n }\r\n\r\n ftmr.wantDetailsRetained = thisFTMR.wantDetailsRetained;\r\n ftmr.isCurrentActiveWebFTMR = thisFTMR.isCurrentActiveWebFTMR;\r\n\r\n ftmr.lodgementsAreSupported = thisFTMR.lodgementsAreSupported;\r\n ftmr.minLodgementTransactionAmount = thisFTMR.minLodgementTransactionAmount;\r\n ftmr.maxLodgementTransactionAmount = thisFTMR.maxLodgementTransactionAmount;\r\n ftmr.maxDailyLodgementTransactions = thisFTMR.maxDailyLodgementTransactions;\r\n ftmr.maxWeeklyLodgementTransactions = thisFTMR.maxWeeklyLodgementTransactions;\r\n ftmr.maxMonthyLodgementTransactions = thisFTMR.maxMonthyLodgementTransactions;\r\n ftmr.maxDailyLodgementAmount = thisFTMR.maxDailyLodgementAmount;\r\n ftmr.maxWeeklyLodgementAmount = thisFTMR.maxWeeklyLodgementAmount;\r\n ftmr.maxMonthlyLodgementAmount = thisFTMR.maxMonthlyLodgementAmount;\r\n ftmr.lodgementFixedCharge = thisFTMR.lodgementFixedCharge;\r\n ftmr.lodgementSlidingCharge = thisFTMR.lodgementSlidingCharge;\r\n ftmr.minLodgementSlidingCharge = thisFTMR.minLodgementSlidingCharge;\r\n ftmr.maxLodgementSlidingCharge = thisFTMR.maxLodgementSlidingCharge;\r\n\r\n ftmr.withdrawalsAreSupported = thisFTMR.withdrawalsAreSupported;\r\n ftmr.minWithdrawalTransactionAmount = thisFTMR.minWithdrawalTransactionAmount;\r\n ftmr.maxWithdrawalTransactionAmount = thisFTMR.maxWithdrawalTransactionAmount;\r\n ftmr.maxDailyWithdrawalTransactions = thisFTMR.maxDailyWithdrawalTransactions;\r\n ftmr.maxWeeklyWithdrawalTransactions = thisFTMR.maxWeeklyWithdrawalTransactions;\r\n ftmr.maxMonthyWithdrawalTransactions = thisFTMR.maxMonthyWithdrawalTransactions;\r\n ftmr.maxDailyWithdrawalAmount = thisFTMR.maxDailyWithdrawalAmount;\r\n ftmr.maxWeeklyWithdrawalAmount = thisFTMR.maxWeeklyWithdrawalAmount;\r\n ftmr.maxMonthlyWithdrawalAmount = thisFTMR.maxMonthlyWithdrawalAmount;\r\n ftmr.withdrawalChargesAreInclusive = thisFTMR.withdrawalChargesAreInclusive;\r\n ftmr.withdrawalFixedCharge = thisFTMR.withdrawalFixedCharge;\r\n ftmr.withdrawalSlidingCharge = thisFTMR.withdrawalSlidingCharge;\r\n ftmr.minWithdrawalSlidingCharge = thisFTMR.minWithdrawalSlidingCharge;\r\n ftmr.maxWithdrawalSlidingCharge = thisFTMR.maxWithdrawalSlidingCharge;\r\n\r\n ftmrs[i] = ftmr;\r\n }\r\n\r\n request.callbackOnSuccess.call(this, { ftmrs: ftmrs });\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, { ftmrs: [] });\r\n }\r\n }\r\n };\r\n\r\n /****************************\r\n getMaxAmountToLodgeOrWithdraw\r\n ****************************/\r\n\r\n this.getMaxAmountToLodgeOrWithdraw = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n var request = new gec.IAPIRequest(params);\r\n if (params.accessToken) {\r\n request.accessToken = params.accessToken;\r\n } else {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n }\r\n if (params.fTMId) {\r\n request.fTMId = params.fTMId;\r\n } else if (params.fTMRId) {\r\n request.fTMRId = params.fTMRId;\r\n }\r\n request.granularChannelType = params.granularChannelType;\r\n request.transactionType = params.transactionType;\r\n this.sendRequest('/GetMaxAmountToLodgeOrWithdraw.ashx', request, _getMaxAmountToLodgeOrWithdrawResponse);\r\n }\r\n };\r\n var _getMaxAmountToLodgeOrWithdrawResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n else {\r\n var resp = (response.fundsTransferMethods)[0];\r\n request.callbackOnSuccess.call(this, {\r\n fundsTransferMethodId: resp.fundsTransferMethodId,\r\n fundsTransferMethodType: resp.fundsTransferMethodType,\r\n fundsTransferMethodName: resp.fundsTransferMethodName,\r\n isTransactionTypeSupported: resp.isTransactionTypeSupported,\r\n maxAvailableAmount: resp.maxAvailableAmount? resp.maxAvailableAmount.amount : undefined,\r\n additionalInfo: resp.additionalInfo,\r\n minSingleTransactionAmount: resp.minSingleTransactionAmount? resp.minSingleTransactionAmount.amount : undefined,\r\n maxSingleTransactionAmount: resp.maxSingleTransactionAmount? resp.maxSingleTransactionAmount.amount : undefined,\r\n maxDailyAmount: resp.maxDailyAmount? resp.maxDailyAmount.amount : undefined,\r\n dailyAmountUsed: resp.dailyAmountUsed? resp.dailyAmountUsed.amount : undefined,\r\n maxWeeklyAmount: resp.maxWeeklyAmount? resp.maxWeeklyAmount.amount : undefined,\r\n weeklyAmountUsed: resp.weeklyAmountUsed? resp.weeklyAmountUsed.amount : undefined,\r\n maxMonthlyAmount: resp.maxMonthlyAmount? resp.maxMonthlyAmount.amount : undefined,\r\n monthlyAmountUsed: resp.monthlyAmountUsed? resp.monthlyAmountUsed.amount : undefined\r\n });\r\n }\r\n };\r\n\r\n /****************************\r\n lodgeFunds\r\n ****************************/\r\n\r\n this.lodgeFunds = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.fTMRId = params.fTMRId;\r\n request.amount = params.amount;\r\n request.commissionAmount = params.commissionAmount;\r\n request.grossAmount = params.grossAmount;\r\n request.nameValuePairs = params.nameValuePairs;\r\n request.callbackOnQueueingOfRequest = params.callbackOnQueueingOfRequest;\r\n this.sendRequest('/LodgeFunds.ashx', request, _lodgeFundsResponse);\r\n }\r\n };\r\n var _lodgeFundsResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, {\r\n returnCode: response.returnCode,\r\n extraReturnInformation: response.extraReturnInformation\r\n });\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, {\r\n fundsTransferPaymentId: response.fundsTransferPaymentId,\r\n additionalReturnInformation: response.additionalReturnInformation,\r\n extraReturnInformation: response.extraReturnInformation\r\n });\r\n }\r\n };\r\n\r\n\r\n /****************************\r\n withdrawFunds\r\n ****************************/\r\n\r\n this.withdrawFunds = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.fTMRId = params.fTMRId;\r\n request.amount = params.amount;\r\n request.nameValuePairs = params.nameValuePairs;\r\n request.existingCleartextPassword = params.existingCleartextPassword;\r\n request.callbackOnQueueingOfRequest = params.callbackOnQueueingOfRequest;\r\n this.sendRequest('/WithdrawFunds.ashx', request, _withdrawFundsResponse);\r\n }\r\n };\r\n var _withdrawFundsResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, {\r\n returnCode: response.returnCode,\r\n additionalReturnInformation: response.additionalReturnInformation\r\n });\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, {\r\n withdrawalRequestId: response.withdrawalRequestId,\r\n paymentGatewayRequestId: response.paymentGatewayRequestId,\r\n additionalReturnInformation: response.additionalReturnInformation,\r\n extraReturnInformation: response.extraReturnInformation\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * getMarketAttributes - Gets specific properties of a market\r\n * @param {Array} marketIds\r\n * @param {Array} attributes - array of enum ids e.g. 1,2,3,4,5\r\n * @param {String} currency\r\n */\r\n this.getMarketAttributes = function (params) {\r\n\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.marketIds = params.marketIds;\r\n request.attributes = params.attributes;\r\n request.currency = params.currency;\r\n\r\n this.sendRequest('/GetMarketAttributes.ashx', request, function (request, response) {\r\n\r\n if (response.returnCode !== 0) {\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, response.markets);\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n /****************************\r\n getMaxInstantFundingAmount\r\n ****************************/\r\n\r\n this.getMaxInstantFundingAmount = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.fTMRId = params.fTMRId;\r\n request.granularChannelType = params.granularChannelType;\r\n this.sendRequest('/GetMaxInstantFundingAmount.ashx', request, _getMaxInstantFundingAmountResponse);\r\n }\r\n };\r\n var _getMaxInstantFundingAmountResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n else {\r\n request.callbackOnSuccess.call(this, {\r\n maxInstantFundingAmount: response.maxInstantFundingAmount\r\n });\r\n }\r\n };\r\n\r\n /****************************\r\n listUnclearedACHTransactions\r\n ****************************/\r\n\r\n this.listUnclearedACHTransactions = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n this.sendRequest('/ListUnclearedACHTransactions.ashx', request, _listUnclearedACHTransactionsResponse);\r\n }\r\n };\r\n var _listUnclearedACHTransactionsResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n else {\r\n var aCHTransactions = [];\r\n\r\n if (response.transactions) {\r\n for (var i = 0; i < response.transactions.length; i++) {\r\n\r\n response.transactions[i].amountRequested = response.transactions[i].amountRequested.amount;\r\n if (typeof response.transactions[i].fundsPending != \"undefined\")\r\n response.transactions[i].fundsPending = response.transactions[i].fundsPending.amount;\r\n if (typeof response.transactions[i].advanceFundingGranted != \"undefined\")\r\n response.transactions[i].advanceFundingGranted = response.transactions[i].advanceFundingGranted.amount;\r\n\r\n if (response.transactions[i].fundsTransferTransferType == 2) {\t\t// LodgeFunds\r\n aCHTransactions.push(response.transactions[i]);\r\n }\r\n\r\n }\r\n }\r\n\r\n request.callbackOnSuccess.call(this, { aCHTransactions: aCHTransactions });\r\n }\r\n };\r\n\r\n /****************************\r\n getIntegrationPartnerParameters\r\n ****************************/\r\n var getIntegrationPartnerParameters = function (params) {\r\n if ((controllerDefaults == null) && (gecPrivate.userContext == null)) {\r\n params.callbackOnException.call(this, { returnCode: 591, message: 'DefaultsNotLoaded' });;\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n if (gecPrivate.userContext !== null) {\r\n request.integrationPartnerId = gecPrivate.userContext.integrationPartnerId;\r\n }\r\n else //use defaults\r\n {\r\n request.integrationPartnerId = controllerDefaults.integrationPartnerId;\r\n }\r\n\r\n\r\n this.sendRequest(\"/GetIntegrationPartnerParameters.ashx\", request, _getIntegrationPartnerParametersResponse);\r\n }\r\n\r\n };\r\n var _getIntegrationPartnerParametersResponse = function (request, response) {\r\n var returnObject;\r\n if (response.returnCode == 0) {\r\n request.callbackOnSuccess.call(this, returnObject);\r\n } else {\r\n request.callbackOnException.call(this, response);\r\n }\r\n };\r\n /****************************\r\n listGenericTaggedValues\r\n ****************************/\r\n this.listGenericTaggedValues = function (params) {\r\n params.header = gecPrivate._GBEHeader;\r\n\r\n // Session token not absolutely required by IAPI, but if we have one\r\n // we include it in the request, for tracking purposes\r\n params.sessionToken = gecPrivate.sessionToken;\r\n\r\n this.sendRequest(\"/ListGenericTaggedValues.ashx\", params, _listGenericTaggedValuesResponse);\r\n }\r\n var _listGenericTaggedValuesResponse = function (request, response) {\r\n var returnObject;\r\n if (response.returnCode == 0) {\r\n returnObject = response.taggedValues;\r\n request.callbackOnSuccess.call(this, returnObject);\r\n } else {\r\n request.callbackOnException.call(this, response);\r\n }\r\n }\r\n /****************************\r\n loadEventCache\r\n ****************************/\r\n this.loadEventCache = function (params) {\r\n var request;\r\n if (params.wantSportsbookMarkets && params.playMarkets) {\r\n params.callbackOnException.call(this, { returnCode: 310 });\r\n }\r\n else\r\n if ((controllerDefaults == null) && (gecPrivate.userContext == null)) {\r\n params.callbackOnException.call(this, { returnCode: 591 });\r\n }\r\n else {\r\n request = new gec.IAPIRequest(params);\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.eventClassifierId = _topLevelId;\r\n\r\n request.wantIndirectDescendents = true;\r\n request.wantMultiplesOnly = false;\r\n\r\n if (gecPrivate.userContext != null) {\r\n request.language = gecPrivate.userContext.language;\r\n request.integrationPartnerId = controllerDefaults.integrationPartnerId;\r\n }\r\n else //use defaults\r\n {\r\n request.language = controllerDefaults.language;\r\n request.integrationPartnerId = controllerDefaults.integrationPartnerId;\r\n }\r\n\r\n window.clearInterval(_eventPollInterval);\r\n\r\n if (params.wantSportsbookMarkets) {\r\n this.sendRequest('/ListSportsbookMarkets.ashx', request, _listTopLevelSportsbookEventsResponse, listExchangeMarketsXHR);\r\n var context = this;\r\n _eventPollInterval = window.setInterval(function () {\r\n delete request.callbackOnSuccess;\r\n delete request.callbackOnException;\r\n request.wantIndirectDescendents = true;\r\n context.sendRequest('/ListSportsbookMarkets.ashx', request, _listTopLevelSportsbookEventsResponse, listExchangeMarketsXHR);\r\n }, _eventCacheRefreshRate);\r\n\r\n }\r\n else {\r\n request.playMarkets = params.playMarkets;\r\n request.excludeMarkets = params.excludeMarkets;\r\n\r\n if (params.preloadedExchangemarkets) {\r\n _listTopLevelExchangeEventsResponse(request, params.preloadedExchangemarkets)\r\n } else {\r\n this.sendRequest('/ListExchangeMarkets.ashx', request, _listTopLevelExchangeEventsResponse, listExchangeMarketsXHR);\r\n }\r\n var context = this;\r\n _eventPollInterval = window.setInterval(function () {\r\n delete request.callbackOnSuccess;\r\n delete request.callbackOnException;\r\n request.wantIndirectDescendents = true;\r\n context.sendRequest('/ListExchangeMarkets.ashx', request, _listTopLevelExchangeEventsResponse, listExchangeMarketsXHR);\r\n }, _eventCacheRefreshRate);\r\n }\r\n }\r\n };\r\n var _listTopLevelSportsbookEventsResponse = function (request, response) {\r\n if (response.returnCode === 0) {\r\n\r\n var eventI = 0;\r\n var lastEvent = null;\r\n for (var i = 0; i < response.eventClassifiers.length; i++) {\r\n var responseEvent = response.eventClassifiers[i];\r\n\r\n if (gecPrivate._eventClassifiers[responseEvent.eventClassifierId] == null)\r\n gecPrivate._eventClassifiers[responseEvent.eventClassifierId] = new gec.EventClassifier();\r\n\r\n var thisEvent = gecPrivate._eventClassifiers[responseEvent.eventClassifierId];\r\n\r\n thisEvent.eventClassifierId = responseEvent.eventClassifierId;\r\n thisEvent.eventClassifierName = responseEvent.name;\r\n thisEvent.shortcutAllMarkets = responseEvent.shortcutAllMarkets;\r\n thisEvent.isEnabledForMultipleBets = responseEvent.isEnabledForMultipleBets;\r\n\r\n thisEvent._parentEventClassifierId = responseEvent.parentEventClassifierId;\r\n thisEvent.displayOrder = responseEvent.displayOrder;\r\n thisEvent.marketTypeIds = [];\r\n thisEvent.keep = true;\r\n\r\n\r\n for (var marketTypeCount = 0; marketTypeCount < responseEvent.marketTypes.length; marketTypeCount++) {\r\n thisEvent.marketTypeIds[marketTypeCount] = responseEvent.marketTypes[marketTypeCount];\r\n }\r\n\r\n (function (thisEvent) {\r\n gecPrivate._eventClassifiers[thisEvent.eventClassifierId].getChildren = function () {\r\n if (gecPrivate._eventClassifiers[thisEvent.eventClassifierId] == null) return [];\r\n return _fillEvents(gecPrivate._eventClassifiers[thisEvent.eventClassifierId].eventClassifierId);\r\n }\r\n gecPrivate._eventClassifiers[thisEvent.eventClassifierId].getParent = function () {\r\n if (gecPrivate._eventClassifiers[thisEvent.eventClassifierId] != null)//may have completed\r\n return gecPrivate._eventClassifiers[gecPrivate._eventClassifiers[thisEvent.eventClassifierId]._parentEventClassifierId];\r\n else\r\n return null;\r\n }\r\n gecPrivate._eventClassifiers[thisEvent.eventClassifierId].getMarkets = function () {\r\n if (_eventsMarkets[thisEvent.eventClassifierId] === undefined) {\r\n return [];\r\n }\r\n else {\r\n return _eventsMarkets[thisEvent.eventClassifierId].markets.sort(gec.SortOnDisplayOrder);\r\n }\r\n }\r\n })(thisEvent);\r\n\r\n\r\n lastEvent = gecPrivate._eventClassifiers[thisEvent.eventClassifierId];\r\n _eventsMarkets[thisEvent.eventClassifierId] = {};\r\n _eventsMarkets[thisEvent.eventClassifierId].markets = [];\r\n }\r\n for (ev in gecPrivate._eventClassifiers) {\r\n if (gecPrivate._eventClassifiers[ev].keep) {\r\n delete gecPrivate._eventClassifiers[ev].keep; //remove keep property\r\n } else {\r\n delete gecPrivate._eventClassifiers[ev]; //remove whole object\r\n }\r\n }\r\n\r\n //_markets = [];\r\n if (response.markets != null) {\r\n var marketI = 0;\r\n for (i = 0; i < response.markets.length; i++) {\r\n var thisMarket = new gec.Market();\r\n var responseMarket = response.markets[i];\r\n thisMarket.marketId = responseMarket.marketId;\r\n thisMarket.marketName = responseMarket.name;\r\n thisMarket.marketType = responseMarket.marketType;\r\n thisMarket.willBeInRunning = responseMarket.willBeInRunning;\r\n thisMarket.currentlyInRunning = responseMarket.currentlyInRunning;\r\n thisMarket.isEnabledForMultipleBets = responseMarket.isEnabledForMultipleBets;\r\n thisMarket.isEnabledForEachWayBetting = responseMarket.isEnabledForEachWayBetting;\r\n thisMarket.isEnabledForSPBetting = responseMarket.isEnabledForSPBetting;\r\n thisMarket.startTime = responseMarket.startTime;\r\n thisMarket.keep = true; //temp value to be removed later\r\n\r\n (function (responseMarket) {\r\n thisMarket.getEventClassifier = function () {\r\n return gecPrivate._eventClassifiers[responseMarket.parentEventClassifierId];\r\n };\r\n })(responseMarket);\r\n\r\n thisMarket.displayOrder = responseMarket.displayOrder;\r\n\r\n gecPrivate._markets[thisMarket.marketId] = thisMarket;\r\n\r\n _eventsMarkets[responseMarket.parentEventClassifierId].markets[_eventsMarkets[responseMarket.parentEventClassifierId].markets.length] = gecPrivate._markets[thisMarket.marketId];\r\n\r\n //remove when fix on broker\r\n var tempEvent = thisMarket.getEventClassifier();\r\n while (tempEvent) {\r\n if (thisMarket.isEnabledForMultipleBets)\r\n tempEvent.isEnabledForMultipleBets = thisMarket.isEnabledForMultipleBets;\r\n\r\n tempEvent = tempEvent.getParent();\r\n }\r\n\r\n }\r\n }\r\n for (mk in gecPrivate._markets) {\r\n if (gecPrivate._markets[mk].keep) {\r\n delete gecPrivate._markets[mk].keep; //remove keep property\r\n } else {\r\n delete gecPrivate._markets[mk]; //remove whole object\r\n }\r\n }\r\n\r\n if (request.callbackOnSuccess != null)\r\n request.callbackOnSuccess.call(this, {});\r\n }\r\n else {\r\n if (request.callbackOnException != null)\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n }\r\n\r\n };\r\n this.getLocalEventCacheSummary = function () {\r\n var marketsOnTheseEvents = [];\r\n var eventsOnTheseEvents = [];\r\n var multipleMarketCount = 0;\r\n var allMarketCount = 0;\r\n var todaysMarketCount = 0;\r\n var inrunningMarketCount = 0;\r\n var todaysInrunningMarketCount = 0;\r\n var today = new Date();\r\n var lastnight = new Date(today.getFullYear(), today.getMonth(), today.getDate());\r\n var tonight = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);\r\n\r\n for (marketCount in gecPrivate._markets) {\r\n allMarketCount++;\r\n var thisMarket = gecPrivate._markets[marketCount];\r\n if (thisMarket.isEnabledForMultipleBets && !thisMarket.currentlyInRunning) multipleMarketCount++;\r\n\r\n if ((thisMarket.startTime < tonight) && (thisMarket.startTime > lastnight)) {\r\n todaysMarketCount++;\r\n\r\n if (thisMarket.willBeInRunning) todaysInrunningMarketCount++;\r\n }\r\n if (thisMarket.currentlyInRunning) inrunningMarketCount++;\r\n\r\n\r\n\r\n\r\n }\r\n\r\n return {\r\n markets: marketsOnTheseEvents,\r\n events: eventsOnTheseEvents,\r\n multipleMarketCount: multipleMarketCount,\r\n allMarketCount: allMarketCount,\r\n todaysMarketCount: todaysMarketCount,\r\n inrunningMarketCount: inrunningMarketCount,\r\n todaysInrunningMarketCount: todaysInrunningMarketCount\r\n };\r\n };\r\n //Gets indexed eventClassifier by Id\r\n this.getCachedEventClassifier = function (eventClassifierId) {\r\n return gecPrivate._eventClassifiers[eventClassifierId];\r\n };\r\n //Gets indexed subscribedEventClassifier by Id\r\n this.getCachedSubscribedEventClassifier = function (eventClassifierId) {\r\n return gecPrivate._subscribedExchangeEvent[eventClassifierId];\r\n };\r\n //Gets indexed subscribedExchangeMarketMatchedAmount by Id\r\n this.getCachedSubscribedMarketMatchedAmount = function (marketId) {\r\n return gecPrivate._subscribedExchangeMarketMatchedAmount[marketId];\r\n };\r\n //Gets indexed market by Id\r\n this.getCachedMarket = function (marketId) {\r\n return gecPrivate._markets[marketId];\r\n };\r\n //Gets indexed selection by Id\r\n this.getCachedSelection = function (selectionId) {\r\n return gecPrivate._selections[selectionId];\r\n };\r\n //Undocumented Methods\r\n this._setTopLevelId = function (topLevelId) {\r\n _topLevelId = topLevelId;\r\n };\r\n\r\n // Returns userContext (with sessionToken as a property)\r\n this.getSession = function () {\r\n\r\n if (gecPrivate.userContext == null) return null;\r\n\r\n var session = gecPrivate.userContext;\r\n session.sessionToken = gecPrivate.sessionToken;\r\n\r\n return JSON.stringify(session);\r\n }\r\n\r\n this.clearSession = function () {\r\n _clearUserContextVariables();\r\n }\r\n\r\n // Sets userContext, which contains the sessionToken\r\n this.setSession = function (response, callbackOnSuccess) {\r\n\r\n response = JSON.parse(response);\r\n\r\n gecPrivate.sessionToken = response.sessionToken;\r\n _telebetSessionToken = null;\r\n gecPrivate._maxSequenceNo = 0;\r\n\r\n gecPrivate.userContext = new gec.UserContext();\r\n\r\n gecPrivate.userContext.partnerUsername = response.partnerUsername;\r\n gecPrivate.userContext.punterId = response.punterId;\r\n gecPrivate.userContext.debitSportsbookStake = response.debitSportsbookStake;\r\n gecPrivate.userContext.debitExchangeStake = response.debitExchangeStake;\r\n gecPrivate.userContext.purseIntegraionMode = response.purseIntegrationMode;\r\n gecPrivate.userContext.canPlaceForSideOrders = response.canPlaceForSideOrders;\r\n gecPrivate.userContext.canPlaceAgainstSideOrders = response.canPlaceAgainstSideOrders;\r\n gecPrivate.userContext.canDeposit = response.canDeposit;\r\n gecPrivate.userContext.canWithdraw = response.canWithdraw;\r\n gecPrivate.userContext.canPlaceOrders = response.canPlaceOrders;\r\n gecPrivate.userContext.restrictedToFillKillOrders = response.restrictedToFillKillOrders;\r\n gecPrivate.userContext.currency = response.currency;\r\n gecPrivate.userContext.language = response.language;\r\n gecPrivate.userContext.priceFormat = response.priceFormat;\r\n gecPrivate.userContext.marketByVolumeAmount = (response.marketByVolumeAmount != null) ? response.marketByVolumeAmount.amount || 0 : 0;\r\n gecPrivate.userContext.logonAttempts = response.logonAttempts;\r\n gecPrivate.userContext.availableBalance = response.availableBalance;\r\n gecPrivate.userContext.numberFreeBets = response.numberFreeBets;\r\n gecPrivate.userContext.sumAmountRemaining = response.sumAmountRemaining;\r\n gecPrivate.userContext.reserved = response.reserved;\r\n gecPrivate.userContext.cohort = response.cohort;\r\n gecPrivate.userContext.wageringCohort = response.wageringCohort;\r\n gecPrivate.userContext.state = response.state;\r\n gecPrivate.userContext.zipcode = response.zipcode;\r\n gecPrivate.userContext.aDWPointsEarned = response.aDWPointsEarned;\r\n gecPrivate.userContext.isOnLegacyRegime = response.isOnLegacyRegime;\r\n gecPrivate.userContext.location = response.location;\r\n gecPrivate.userContext.isASubPunter = response.isASubPunter;\r\n gecPrivate.userContext.hasSubPunters = response.hasSubPunters;\r\n\r\n gecPrivate.userContext.punterClassificationId = response.punterClassificationId;\r\n gecPrivate.userContext.punterClassificationName = response.punterClassificationName;\r\n\r\n gecPrivate.userContext.contestRestriction = response.contestRestriction;\r\n gecPrivate.userContext.contestCards = response.contestCards;\r\n\r\n gecPrivate.contestRestriction = response.contestRestriction;\r\n gecPrivate.contestCards = response.contestCards;\r\n\r\n _username = response.partnerUsername;\r\n _params.isSessionPresent = true;\r\n\r\n if (callbackOnSuccess) {\r\n // Whether contest is currently active or not may have changed since time that userContext\r\n // was initially created, so check again now\r\n if (gec.Controller.prototype.listCards !== undefined) {\r\n gecPrivate.getListOfContestCardsForPunter(response.punterId, callbackOnSuccess, callbackOnSuccess);\r\n }\r\n }\r\n\r\n return true;\r\n\r\n };\r\n\r\n /****************************\r\n listEvents\r\n ****************************/\r\n this.listEvents = function (params) {\r\n if ((controllerDefaults == null) && (gecPrivate.userContext == null)) {\r\n params.callbackOnException.call(this, { \"returnCode\": 591 });\r\n }\r\n else {\r\n var i = 0;\r\n for (eventCount in gecPrivate._eventClassifiers) {\r\n if (gecPrivate._eventClassifiers[eventCount]._parentEventClassifierId == _topLevelId) {\r\n gecPrivate._eventClassifiersForClient[i] = gecPrivate._eventClassifiers[eventCount];\r\n if (params.fireOnEventClassifiersChange != null)\r\n gecPrivate._eventClassifiersForClient[i].fireOnEventClassifiersChange = params.fireOnEventClassifiersChange;\r\n i++;\r\n }\r\n }\r\n gecPrivate._eventClassifiersForClient.sort(gec.SortOnDisplayOrder);\r\n\r\n return gecPrivate._eventClassifiersForClient;\r\n }\r\n };\r\n\r\n\r\n var _fillEvents = function (evenId) {\r\n var arrayOfEvents = [];\r\n var eventI = 0;\r\n for (ev in gecPrivate._eventClassifiers) {\r\n if (gecPrivate._eventClassifiers[ev]._parentEventClassifierId == evenId) {\r\n arrayOfEvents[eventI++] = gecPrivate._eventClassifiers[ev];\r\n }\r\n }\r\n arrayOfEvents.sort(gec.SortOnDisplayOrder);\r\n return arrayOfEvents;\r\n };\r\n var _fillMarkets = function (evenId) {\r\n var arrayOfMarkets = [];\r\n var marketI = 0;\r\n for (m in gecPrivate._markets) {\r\n if (gecPrivate._markets[m].getEventClassifier().eventClassifierId == evenId) {\r\n arrayOfMarkets[marketI++] = gecPrivate._markets[m];\r\n }\r\n }\r\n arrayOfMarkets.sort(gec.SortOnDisplayOrder);\r\n return arrayOfMarkets;\r\n };\r\n var _fillSportsBookMarkets = function (evenId) {\r\n var arrayOfMarkets = [];\r\n var marketI = 0;\r\n for (m in gecPrivate._markets) {\r\n if (gecPrivate._markets[m].getEventClassifier().eventClassifierId == evenId) {\r\n arrayOfMarkets[marketI++] = gecPrivate._markets[m];\r\n }\r\n }\r\n arrayOfMarkets.sort(gec.SortOnDisplayOrder);\r\n return arrayOfMarkets;\r\n };\r\n\r\n\r\n var _listTopLevelExchangeEvents = function (params) {\r\n if ((controllerDefaults == null) && (gecPrivate.userContext == null)) {\r\n params.callbackOnException.call(this, { returnCode: 591, message: 'DefaultsNotLoaded' });;\r\n\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.eventClassifierId = 1;\r\n request.wantIndirectDescendents = true;\r\n\r\n if (gecPrivate.userContext != null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.language = gecPrivate.userContext.language;\r\n request.integrationPartnerId = gecPrivate.userContext.integrationPartnerId;\r\n }\r\n else //use defaults\r\n {\r\n request.language = controllerDefaults.language;\r\n request.integrationPartnerId = controllerDefaults.integrationPartnerId;\r\n }\r\n\r\n this.sendRequest('/ListExchangeMarkets.ashx', request, _listTopLevelExchangeEventsResponse, listExchangeMarketsXHR);\r\n }\r\n\r\n };\r\n\r\n var _listTopLevelExchangeEventsResponse = function (request, response) {\r\n\r\n if (response.returnCode === 0) {\r\n\r\n var eventI = 0;\r\n var lastEvent = null;\r\n for (var i = 0; i < response.eventClassifiers.length; i++) {\r\n var responseEvent = response.eventClassifiers[i];\r\n\r\n if (gecPrivate._eventClassifiers[responseEvent.eventClassifierId] == null)\r\n gecPrivate._eventClassifiers[responseEvent.eventClassifierId] = new gec.EventClassifier();\r\n\r\n var thisEvent = gecPrivate._eventClassifiers[responseEvent.eventClassifierId];\r\n\r\n thisEvent.eventClassifierId = responseEvent.eventClassifierId;\r\n thisEvent.eventClassifierName = responseEvent.name;\r\n thisEvent.shortcutAllMarkets = responseEvent.shortcutAllMarkets;\r\n thisEvent.isEnabledForMultipleBets = responseEvent.isEnabledForMultipleBets;\r\n\r\n thisEvent._parentEventClassifierId = responseEvent.parentEventClassifierId;\r\n thisEvent.displayOrder = responseEvent.displayOrder;\r\n thisEvent.marketTypeIds = [];\r\n thisEvent.keep = true;\r\n\r\n\r\n for (marketTypeCount in responseEvent.marketTypes) {\r\n thisEvent.marketTypeIds[marketTypeCount] = responseEvent.marketTypes[marketTypeCount];\r\n }\r\n\r\n (function (thisEvent) {\r\n gecPrivate._eventClassifiers[thisEvent.eventClassifierId].getChildren = function () {\r\n if (gecPrivate._eventClassifiers[thisEvent.eventClassifierId] == null) return [];\r\n return _fillEvents(gecPrivate._eventClassifiers[thisEvent.eventClassifierId].eventClassifierId);\r\n }\r\n gecPrivate._eventClassifiers[thisEvent.eventClassifierId].getParent = function () {\r\n if (gecPrivate._eventClassifiers[thisEvent.eventClassifierId] != null)//may have completed\r\n return gecPrivate._eventClassifiers[gecPrivate._eventClassifiers[thisEvent.eventClassifierId]._parentEventClassifierId];\r\n else\r\n return null;\r\n }\r\n gecPrivate._eventClassifiers[thisEvent.eventClassifierId].getMarkets = function () {\r\n if (_eventsMarkets[thisEvent.eventClassifierId] === undefined) {\r\n return [];\r\n }\r\n else {\r\n return _eventsMarkets[thisEvent.eventClassifierId].markets;\r\n }\r\n }\r\n })(thisEvent);\r\n\r\n\r\n lastEvent = gecPrivate._eventClassifiers[thisEvent.eventClassifierId];\r\n _eventsMarkets[thisEvent.eventClassifierId] = {};\r\n _eventsMarkets[thisEvent.eventClassifierId].markets = [];\r\n }\r\n for (ev in gecPrivate._eventClassifiers) {\r\n if (gecPrivate._eventClassifiers[ev].keep) {\r\n delete gecPrivate._eventClassifiers[ev].keep; //remove keep property\r\n } else {\r\n delete _eventsMarkets[gecPrivate._eventClassifiers[ev].eventClassifierId];\r\n delete gecPrivate._eventClassifiers[ev]; //remove whole object\r\n }\r\n }\r\n\r\n if (response.markets != null) {\r\n var marketI = 0;\r\n for (i = 0; i < response.markets.length; i++) {\r\n var thisMarket = new gec.Market();\r\n var responseMarket = response.markets[i];\r\n thisMarket.marketId = responseMarket.marketId;\r\n thisMarket.marketName = responseMarket.name;\r\n thisMarket.marketType = responseMarket.marketType;\r\n thisMarket.willBeInRunning = responseMarket.willBeInRunning;\r\n thisMarket.currentlyInRunning = responseMarket.currentlyInRunning;\r\n thisMarket.isEnabledForMultipleBets = responseMarket.isEnabledForMultipleBets;\r\n thisMarket.isEnabledForEachWayBetting = responseMarket.isEnabledForEachWayBetting;\r\n thisMarket.isEnabledForSPBetting = responseMarket.isEnabledForSPBetting;\r\n thisMarket.startTime = responseMarket.startTime;\r\n thisMarket.keep = true; //temp value to be removed later\r\n\r\n (function (responseMarket) {\r\n thisMarket.getEventClassifier = function () {\r\n return gecPrivate._eventClassifiers[responseMarket.parentEventClassifierId];\r\n };\r\n })(responseMarket);\r\n\r\n thisMarket.displayOrder = responseMarket.displayOrder;\r\n\r\n gecPrivate._markets[thisMarket.marketId] = thisMarket;\r\n\r\n _eventsMarkets[responseMarket.parentEventClassifierId].markets[_eventsMarkets[responseMarket.parentEventClassifierId].markets.length] = gecPrivate._markets[thisMarket.marketId];\r\n\r\n }\r\n }\r\n for (mk in gecPrivate._markets) {\r\n if (gecPrivate._markets[mk].keep) {\r\n delete gecPrivate._markets[mk].keep; //remove keep property\r\n } else {\r\n\r\n if (gecPrivate._markets[mk].getEventClassifier() !== undefined) {\r\n var eventId = gecPrivate._markets[mk].getEventClassifier().eventClassifierId;\r\n // console.log(\"found eventClassifer:\" + eventId);\r\n var m = _eventsMarkets[eventId].markets.length;\r\n while (m--) {\r\n\r\n if (_eventsMarkets[eventId].markets[m].marketId == mk) {\r\n _eventsMarkets[eventId].markets.splice(m, 1);\r\n // console.log(\"delete market from _eventsMarkets array:\" + mk);\r\n }\r\n }\r\n }\r\n\r\n delete gecPrivate._markets[mk]; //remove whole object\r\n }\r\n }\r\n\r\n if (request.callbackOnSuccess != null)\r\n request.callbackOnSuccess.call(this, {});\r\n }\r\n else {\r\n if (request.callbackOnException != null)\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n }\r\n };\r\n\r\n\r\n /****************************\r\n loadOddsLadder\r\n ****************************/\r\n this.loadOddsLadder = function (params) {\r\n if ((controllerDefaults == null) && (gecPrivate.userContext == null)) {\r\n params.callbackOnException.call(this, new gec.AsyncException({ returnCode: 591 }));\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.priceFormat = params.priceFormat;\r\n if (gecPrivate.userContext != null) {\r\n request.integrationPartnerId = gecPrivate.userContext.integrationPartnerId;\r\n }\r\n else {\r\n request.integrationPartnerId = controllerDefaults.integrationPartnerId;\r\n }\r\n this.sendRequest('/GetOddsLadder.ashx', request, _loadOddsLadderResponse);\r\n }\r\n };\r\n var _loadOddsLadderResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n _oddsLadder = response.oddsLadder;\r\n request.callbackOnSuccess.call(this);\r\n }\r\n\r\n };\r\n\r\n /****************************\r\n getBrokerAccountStatement\r\n ****************************/\r\n this.getBrokerAccountStatement = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.postingTypes = params.postingTypes;\r\n request.startTime = params.startTime;\r\n request.endTime = params.endTime;\r\n request.language = controllerDefaults.language || \"en\";\r\n request.startOffset = params.startOffset;\r\n request.numberToReturn = params.numberToReturn;\r\n request.groupByClientGroupReference = params.groupByClientGroupReference;\r\n request.embedGroupedPostings = params.embedGroupedPostings;\r\n\r\n this.sendRequest('/GetBrokerAccountStatement.ashx', request, _getBrokerAccountStatementResponse);\r\n };\r\n\r\n var _getBrokerAccountStatementResponse = function (request, response) {\r\n\r\n if (response.returnCode != 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n } else {\r\n var xmlDoc, posting;\r\n if (response.postings != null) {\r\n for (var i = 0; i < response.postings.length; i++) {\r\n posting = response.postings[i];\r\n\r\n var reference = posting.reference;\r\n var description = \"\";\r\n if (posting.description === \"\") {\r\n const referenceElement = new DOMParser().parseFromString(reference, \"text/xml\").querySelector(\"posting\");\r\n if (referenceElement && referenceElement.getAttribute(\"oh\") !== null) {\r\n let selections = \"\";\r\n const sElements = referenceElement.getElementsByTagName(\"s\");\r\n for (let j = 0; j < sElements.length; j++) {\r\n const s = sElements[j];\r\n if (s.getAttribute(\"en\") !== null) {\r\n selections += String.format(\"
  • {0} - {1} - {2}
  • \", s.getAttribute(\"en\"), s.getAttribute(\"mn\"), s.getAttribute(\"sn\"));\r\n }\r\n }\r\n const length = (reference.match(/ 1) {\r\n description = String.format(\r\n \"{0}: {1} [{2}]
      {3}
    \",\r\n referenceElement.getAttribute(\"oc\"),\r\n (referenceElement.getAttribute(\"p\") === \"1\") ? \"Back\" : \"Lay\",\r\n referenceElement.getAttribute(\"oh\"),\r\n selections\r\n );\r\n } else {\r\n description = String.format(\r\n \"{0}: {1} ({2})\",\r\n referenceElement.getAttribute(\"oc\"),\r\n (referenceElement.getAttribute(\"p\") === \"1\") ? \"Back\" : \"Lay\",\r\n referenceElement.getAttribute(\"oh\")\r\n );\r\n }\r\n } else {\r\n description = reference;\r\n }\r\n }\r\n else {\r\n if (posting.postingType == 4 || posting.postingType == 5) {\r\n if (posting.reference && posting.reference.indexOf(\"<\") === 0) {\r\n // Reference is (probably) XML\r\n xmlDoc = gec.loadXmlDocument(posting.reference);\r\n if (xmlDoc != undefined && xmlDoc.documentElement !== null) {\r\n description = xmlDoc.documentElement.getAttribute(\"ftmrNickname\")\r\n + \" - \"\r\n + xmlDoc.documentElement.getAttribute(\"fundsTransferMethodName\");\r\n } else {\r\n description = posting.description; // e.g. PayNearMe deposit (for NYRA)\r\n }\r\n } else {\r\n description = posting.description; // e.g. PayNearMe deposit (for NYRA)\r\n }\r\n } else {\r\n description = response.postings[i].description.replace(/\\{0} - {1} - {2}\", s.getAttribute(\"en\"), s.getAttribute(\"mn\"), s.getAttribute(\"sn\"));\r\n }\r\n }\r\n const length = (reference.match(/ 1) {\r\n description = String.format(\r\n \"{0}: {1} [{2}]
      {3}
    \",\r\n referenceElement.getAttribute(\"oc\"),\r\n (referenceElement.getAttribute(\"p\") === \"1\") ? \"Back\" : \"Lay\",\r\n referenceElement.getAttribute(\"oh\"),\r\n selections\r\n );\r\n } else {\r\n description = String.format(\r\n \"{0}: {1} ({2})\",\r\n referenceElement.getAttribute(\"oc\"),\r\n (referenceElement.getAttribute(\"p\") === \"1\") ? \"Back\" : \"Lay\",\r\n referenceElement.getAttribute(\"oh\")\r\n );\r\n }\r\n } else {\r\n description = reference;\r\n }\r\n }\r\n else {\r\n if (posting.postingType == 4 || posting.postingType == 5) {\r\n if (posting.reference && posting.reference.indexOf(\"<\") === 0) {\r\n // Reference is (probably) XML\r\n xmlDoc = gec.loadXmlDocument(posting.reference);\r\n if (xmlDoc != undefined && xmlDoc.documentElement !== null) {\r\n description = xmlDoc.documentElement.getAttribute(\"ftmrNickname\")\r\n + \" - \"\r\n + xmlDoc.documentElement.getAttribute(\"fundsTransferMethodName\");\r\n } else {\r\n description = posting.description; // e.g. PayNearMe deposit (for NYRA)\r\n }\r\n } else {\r\n description = posting.description; // e.g. PayNearMe deposit (for NYRA)\r\n }\r\n } else {\r\n description = posting[i].description.replace(/\\{0} - {1} - {2}\", s.getAttribute(\"en\"), s.getAttribute(\"mn\"), s.getAttribute(\"sn\"));\r\n }\r\n }\r\n const length = (reference.match(/ 1) {\r\n description = String.format(\r\n \"{0}: {1} [{2}]
      {3}
    \",\r\n referenceElement.getAttribute(\"oc\"),\r\n (referenceElement.getAttribute(\"p\") === \"1\") ? \"Back\" : \"Lay\",\r\n referenceElement.getAttribute(\"oh\"),\r\n selections\r\n );\r\n } else {\r\n description = String.format(\r\n \"{0}: {1} ({2})\",\r\n referenceElement.getAttribute(\"oc\"),\r\n (referenceElement.getAttribute(\"p\") === \"1\") ? \"Back\" : \"Lay\",\r\n referenceElement.getAttribute(\"oh\")\r\n );\r\n }\r\n } else {\r\n description = reference;\r\n }\r\n }\r\n else {\r\n if (posting.postingType == 4 || posting.postingType == 5) {\r\n if (posting.reference && posting.reference.indexOf(\"<\") === 0) {\r\n // Reference is (probably) XML\r\n xmlDoc = gec.loadXmlDocument(posting.reference);\r\n if (xmlDoc != undefined && xmlDoc.documentElement !== null) {\r\n description = xmlDoc.documentElement.getAttribute(\"ftmrNickname\")\r\n + \" - \"\r\n + xmlDoc.documentElement.getAttribute(\"fundsTransferMethodName\");\r\n } else {\r\n description = posting.description; // e.g. PayNearMe deposit (for NYRA)\r\n }\r\n } else {\r\n description = posting.description; // e.g. PayNearMe deposit (for NYRA)\r\n }\r\n } else {\r\n description = response.postings[i].description.replace(/\\ {\r\n var timeoutId = setTimeout(async function () {\r\n reject();\r\n }, waitTime);\r\n\r\n var curTime = new Date().toISOString();\r\n if (instance._lastPingedAt === '') {\r\n instance._lastPingedAt = curTime;\r\n }\r\n\r\n instance\r\n .ping({\r\n currentClientTime: curTime,\r\n lastPingRoundtripMS: instance._lastPingRoundtripMS,\r\n lastPingedAt: instance._lastPingedAt,\r\n callbackOnSuccess: function () {\r\n clearTimeout(timeoutId);\r\n resolve('connected');\r\n },\r\n callbackOnException: function () {\r\n console.error('failed ping');\r\n clearTimeout(timeoutId);\r\n reject();\r\n }\r\n })\r\n\r\n });\r\n }\r\n\r\n\r\n gec.IAPIRequest = function (params, requiredParams) {\r\n this.header = gecPrivate._GBEHeader;\r\n\r\n if (requiredParams !== undefined) {\r\n Object.keys(requiredParams).forEach(function (paramName) {\r\n if (params[paramName] === undefined) {\r\n console.error({ \"number\": 134, \"message\": \"required params not included:\" + paramName });\r\n }\r\n });\r\n }\r\n if (params != null) {\r\n this.callbackOnException = params.callbackOnException;\r\n this.callbackOnSuccess = params.callbackOnSuccess;\r\n }\r\n };\r\n gec.SortOnDisplayOrder = function (a, b) {\r\n return a.displayOrder - b.displayOrder;\r\n };\r\n gec.SortOnIssuedAt = function (a, b) {\r\n return (com.globalbettingexchange.base.jsDate(b.issuedAt) > com.globalbettingexchange.base.jsDate(a.issuedAt)) ? -1 : 1;\r\n };\r\n gec.SortOnPlacedAt = function (a, b) {\r\n return (com.globalbettingexchange.base.jsDate(b.placedAt) > com.globalbettingexchange.base.jsDate(a.placedAt)) ? -1 : 1;\r\n };\r\n gec.SortOnMultiplebetId = function (a, b) {\r\n return (b.multipleBetId > a.multipleBetId) ? -1 : 1;\r\n };\r\n gec.SortOnStartTime = function (a, b) {\r\n if ((a.startTime == null) || (b.startTime == null)) {\r\n return -1;\r\n }\r\n return (com.globalbettingexchange.base.jsDate(b.startTime) < com.globalbettingexchange.base.jsDate(a.startTime)) ? 1 : -1;\r\n };\r\n gec.SortOnStartingAt = function (a, b) {\r\n if ((a.startingAt == null) || (b.startingAt == null)) {\r\n return -1;\r\n }\r\n return (com.globalbettingexchange.base.jsDate(b.startingAt) < com.globalbettingexchange.base.jsDate(a.startingAt)) ? 1 : -1;\r\n };\r\n gec.SortOnChangedAt = function (a, b) {\r\n if ((a.sequenceNumber == null) || (b.sequenceNumber == null)) {\r\n return 1;\r\n }\r\n return a.sequenceNumber - b.sequenceNumber;\r\n };\r\n\r\n\r\n gec.loadXmlDocument = function (xmlString) {\r\n var xDoc;\r\n\r\n if (typeof window.DOMParser != \"undefined\") {\r\n var parser = new DOMParser(); //Chrome\r\n xDoc = parser.parseFromString(xmlString, \"text/xml\");\r\n\r\n } else if (window.ActiveXObject) {\r\n xDoc = new ActiveXObject(\"Microsoft.XMLDOM\");\r\n xDoc.loadXML(xmlString); //IE\r\n\r\n } else if (document.implementation && document.implementation.createDocument) {\r\n xDoc = document.implementation.createDocument(\"\", \"\", null);\r\n if (xDoc.loadXML != null) {\r\n xDoc.loadXML(xmlString); // Mozilla\r\n }\r\n }\r\n\r\n return xDoc;\r\n\r\n };\r\n\r\n\r\n\r\n /*****************************\r\n Object Definitions\r\n *****************************/\r\n\r\n\r\n gec.AsyncException = function (params) {//BaseType\r\n this.message;\r\n this.name;\r\n this.returnCode;\r\n this.correlationId;\r\n\r\n if (params != null) {\r\n this.message = params.message;\r\n this.name = params.name;\r\n this.returnCode = params.returnCode;\r\n this.correlationId = params.returnCode;\r\n }\r\n\r\n };\r\n gec.AuthenticationType = function (params) {//BaseType\r\n this.id;\r\n this.name;\r\n };\r\n gec.BallotOutAction = function (params) {//BaseType\r\n this.id;\r\n this.name;\r\n };\r\n\r\n gec.Blurb = function (params) {//BaseType - String\r\n };\r\n\r\n gec.ClientMetricType = function (params) {//BaseType\r\n this.id;\r\n this.name;\r\n };\r\n\r\n gec.StartingSoonEvent = function (market) {\r\n\r\n var _thisEventClassifier = market.getEventClassifier();\r\n\r\n this.startingAt = market.startTime;\r\n this.fireOnChange; // function()\r\n\r\n //methods\r\n this.getStartingSoonMarkets = function () {\r\n\r\n var currentTime = new Date();\r\n\r\n var hrs = currentTime.getUTCHours();\r\n hrs -= 12; //go back 12 hours\r\n currentTime.setUTCHours(hrs);\r\n var allMarkets = _thisEventClassifier.getMarkets();\r\n var markets = [];\r\n for (var j in allMarkets) {\r\n if ((gecPrivate._base.jsDate(allMarkets[j].startTime) > currentTime) && !allMarkets[j].currentlyInRunning) {\r\n\r\n if (allMarkets[j].startTime == this.startingAt)\r\n markets[markets.length] = allMarkets[j];\r\n }\r\n }\r\n return markets;\r\n };\r\n this.getEventClassifier = function () { return _thisEventClassifier; };\r\n\r\n };\r\n gec.Currency = function (params) {//BaseType\r\n };\r\n gec.EntityType = function (params) {\r\n this.id;\r\n this.name;\r\n };\r\n\r\n gec.InRunningEvent = function (market, sport) {\r\n var _thisEventClassifier = market.getEventClassifier();\r\n\r\n this.fireOnChange;\r\n this.getEventClassifier = function () { return _thisEventClassifier; };\r\n this.getInRunningMarkets = function () {\r\n var markets = [];\r\n var thisEventAllMarkets = _thisEventClassifier.getMarkets();\r\n\r\n for (var j = 0; j < thisEventAllMarkets.length; j++) {\r\n if (thisEventAllMarkets[j].currentlyInRunning)\r\n markets[markets.length] = thisEventAllMarkets[j];\r\n }\r\n\r\n return markets;\r\n };\r\n this.getInRunningSport = function () { return sport; };\r\n };\r\n gec.InRunningSport = function (params, allMarkets, fromIAPI) {\r\n // Loop through the open and gets its topmost parent ie. the sport\r\n this.fireOnChange;\r\n\r\n if (fromIAPI) {\r\n this.getEventClassifier = function () { return params; };\r\n\r\n this.getInRunningEvents = function () {\r\n\r\n var events = [];\r\n return params.eventClassifiers;\r\n }\r\n\r\n return;\r\n }\r\n var _thisEventClassifier = params;\r\n while (_thisEventClassifier.getParent() != null) {\r\n _thisEventClassifier = _thisEventClassifier.getParent();\r\n }\r\n\r\n this.getEventClassifier = function () { return _thisEventClassifier; };\r\n this.getInRunningEvents = function () {\r\n\r\n var events = [];\r\n\r\n for (var j in allMarkets) {\r\n if (allMarkets[j].currentlyInRunning) {\r\n //check if its in this sport and then return its parent event\r\n\r\n var thisTopLevelEvent = allMarkets[j].getEventClassifier();\r\n\r\n while (thisTopLevelEvent.getParent() != null) {\r\n thisTopLevelEvent = thisTopLevelEvent.getParent();\r\n }\r\n\r\n if (_thisEventClassifier.eventClassifierId == thisTopLevelEvent.eventClassifierId) {\r\n var inrunningEvent = new gec.InRunningEvent(allMarkets[j], this);\r\n events[inrunningEvent.getEventClassifier().eventClassifierId] = inrunningEvent;\r\n }\r\n }\r\n }\r\n\r\n var eventsToReturn = [];\r\n\r\n for (var ev in events) {\r\n eventsToReturn[eventsToReturn.length] = events[ev];\r\n }\r\n return eventsToReturn;\r\n\r\n };\r\n };\r\n gec.IntegrationPartnerParameters = function () {\r\n //Properties\r\n this.publicKey; //String (2048)\r\n this.pICPasswordOptionId; //integer (PICPasswordOption)\r\n this.interfaceVersionLevel; //String (256)\r\n this.allowableAuthenticationTypeId; //integer (AuthenticationType)\r\n this.allowAnonymousInteraction; //Boolean\r\n\r\n //Methods\r\n this.picPasswordOptionName = function () { return gec.picPasswordOptionName(this.pICPasswordOptionId); }\r\n this.allowableAuthenticationTypeName = function () { return gec.allowableAuthenticationTypeName(this.allowableAuthenticationTypeId); }\r\n };\r\n gec.LegDetail = function (params) {\r\n this.legId;\r\n this.sequence;\r\n this.isWin;\r\n\r\n this.numberWinningPlaces;\r\n this.numberPlacesIsFixed;\r\n this.eachWayAllowed;\r\n\r\n this.numberWinningPlaces;\r\n this.numberPlacesIsFixed;\r\n\r\n this.orderSignificant;\r\n this.minNumberSelections;\r\n\r\n this.maxNumberSelections;\r\n this.minNumberBankers;\r\n this.maxNumberBankers;\r\n this.race;\r\n this.runners;\r\n };\r\n gec.LocalBetStatus = {\r\n Active: 1, // The bet is active and has yet to be settled.\r\n SettledWon: 2, // The bet was settled with a payout amount greater than zero.\r\n SettledLost: 3, // The bet was settled with a payout of zero.\r\n SettledVoid: 10, // The bet was settled as 100 % void.\r\n CashedOut: 12\r\n };\r\n gec.LogEntryImportance = {\r\n Severe: 1,\r\n Warning: 2,\r\n Advice: 3,\r\n Info: 4,\r\n Fine: 5,\r\n Finest: 6\r\n };\r\n gec.Market = function (params) {\r\n //Properties\r\n this.marketId; //integer\r\n this.marketName; //String (256)\r\n this.marketType; //integer (MarketType)\r\n this.willBeInRunning; //Boolean\r\n this.currentlyInRunning; //Boolean\r\n this.isEnabledForMultipleBets; //Boolean\r\n this.isEnabledForEachWayBetting; //Boolean\r\n this.isEnabledForSPBetting; //Boolean\r\n this.startTime; //Timestamp//\r\n this.eventClassifier;\r\n\r\n //private\r\n this.displayOrder;\r\n\r\n //Methods\r\n this.getStartingSoonEvent = function () { return; };\r\n this.getEventClassifier = function () { return; };\r\n this.getInRunningSport = function () { return; };\r\n };\r\n gec.MarketDetail = function (params) {\r\n //Properties\r\n this.marketId; //integer\r\n this.eventClassifierId;\r\n this.eventClassifierFullName; //String (256)\r\n this.marketName; //String (256)\r\n this.marketType; //integer(MarketType)\r\n this.isPlayMarket;\r\n this.placePayout; //Percentage\r\n this.canBeInRunning; //Boolean\r\n this.isCurrentlyInRunning; //Boolean\r\n this.numberOfWinningSelections; // integer\r\n this.startTime; //Timestamp\r\n this.suspendTime; //Timestamp\r\n this.marketStatusId; //integer (MarketStatus)\r\n this.withdrawalSequenceNumber; //integer\r\n this.isEnabledForMultipleBets; //Boolean\r\n this.isEnabledForEachWayBetting; //Boolean\r\n this.isEnabledForSPBetting; //Boolean\r\n this.selections = []; //Array of Selections[{}]\r\n\r\n //private\r\n this.displayOrder;\r\n\r\n //Methods\r\n this.getSelections = function () {\r\n return this.selections;\r\n }\r\n this.getPlaceFraction = function () {\r\n\r\n if (!this.isEachWayMarketType()) {\r\n return 0.0;\r\n }\r\n\r\n if (this.marketType == 21) {\r\n return Math.round(1 / this.numberOfWinningSelections * 100) / 100;\r\n }\r\n\r\n var competingSelectionCount = getCompetingSelectionCount(this);\r\n\r\n if (competingSelectionCount < 5) {\r\n return 1;\r\n }\r\n\r\n if (this.marketType == 19 && competingSelectionCount > 7) {\r\n return 0.2;\r\n }\r\n\r\n if (this.marketType == 20 && competingSelectionCount >= 8 && competingSelectionCount <= 11) {\r\n return 0.2;\r\n }\r\n\r\n return 0.25;\r\n }\r\n\r\n this.isEachWayMarketType = function () {\r\n return (this.marketType == 19 || this.marketType == 20 || this.marketType == 21);\r\n }\r\n\r\n var COMPETING_STATUSES = [2, 6, 7, 8];\r\n\r\n var getCompetingSelectionCount = function (m) {\r\n var count = 0;\r\n var status = 0;\r\n for (s in m.selections) {\r\n status = m.selections[s].selectionStatusId || m.selections[s].status;\r\n if (COMPETING_STATUSES[status] != null) {\r\n count++;\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n };\r\n gec.MarketTradingRestriction = function (params) {\r\n this.id;\r\n this.name;\r\n };\r\n gec.MarketType = function (params) {\r\n this.id;\r\n this.name;\r\n };\r\n gec.MoneyValue = function (params) {\r\n };\r\n gec.MultipleBet = function (params) {\r\n //Properties\r\n this.multipleBetId;\r\n this.selections = [];\r\n this.requestedStake;\r\n this.totalMatchedStake; this.requestedPrice;\r\n this.averageMatchedPrice;\r\n this.rolloverStake;\r\n this.numberOfUnsettledSelections;\r\n this.unsettledPrice;\r\n this.totalMaxUpside;\r\n this.multipleBetStatusId;\r\n this.placedAt;\r\n this.commissionRate;\r\n this.isFreeBet;\r\n this.totalCashOutAmount = params.totalCashOutAmount;\r\n this.totalCashOutStake = params.totalCashOutStake;\r\n\r\n this.iPAddress; //\r\n this.ipCountryCode;\r\n this.channelInformation; //\r\n\r\n };\r\n gec.MultipleBetDetail = function (params) {\r\n //Properties\r\n this.multipleBetId = params.multipleBetId;\r\n this.requestedStake = params.requestedStake;\r\n this.totalMatchedStake = params.totalMatchedStake;\r\n this.requestedPrice = params.requestedPrice;\r\n this.averageMatchedPrice = params.averageMatchedPrice;\r\n this.effectivePrice = params.effectivePrice;\r\n this.rolloverStake = params.rolloverStake;\r\n this.numberOfUnsettledSelections = params.numberOfUnsettledSelections;\r\n this.unsettledPrice = params.unsettledPrice;\r\n this.totalMaxUpside = params.totalMaxUpside;\r\n this.multipleBetStatusId = params.multipleBetStatusId;\r\n this.placedAt = params.placedAt;\r\n this.commissionRate = params.commissionRate;\r\n this.isFreeBet = params.isFreeBet;\r\n this.totalCashOutAmount = params.totalCashOutAmount;\r\n this.totalCashOutStake = params.totalCashOutStake;\r\n\r\n this.settledAt; // Timestamp\r\n this.settlementAmount; // MoneyAmount\r\n this.matches = [];\r\n this.iPAddress = params.iPAddress;\r\n this.ipCountryCode = params.ipCountryCode;\r\n this.channelInformation = params.channelInformation;\r\n\r\n };\r\n gec.MultipleLegStatus = function (params) {\r\n this.id;\r\n this.name;\r\n };\r\n gec.PartnerTelebetToken = function (params) {\r\n };\r\n gec.PartnerToken = function (params) {\r\n };\r\n gec.PasswordToken = function (params) {\r\n this.header = gecPrivate._GBEHeader;\r\n this.callbackOnException = params.callbackOnException;\r\n this.callbackOnSuccess = params.callbackOnSuccess;\r\n };\r\n gec.Percentage = function (params) {\r\n };\r\n gec.Polarity = {\r\n For: 1,\r\n Against: 2\r\n };\r\n gec.PriceFormat = {\r\n Decimal: 1,\r\n Fractional: 2,\r\n American: 3\r\n };\r\n gec.PromotionType = {\r\n Normal: 1,\r\n RetentionPromotion: 2,\r\n SignOnPromotion: 3,\r\n ReferAFriend: 4,\r\n DepositBoost: 5\r\n };\r\n gec.MarketStatus = {\r\n Inactive: 1,\r\n Active: 2,\r\n Suspended: 3,\r\n Completed: 4,\r\n ResultsSet: 5,\r\n Settled: 6,\r\n Voided: 7\r\n };\r\n gec.OrderStatus = {\r\n Active: 1,\r\n Filled: 2,\r\n Expired: 3,\r\n Settled: 4,\r\n Void: 5,\r\n Suspended: 6\r\n };\r\n gec.FreeBetEntitlementStatus = {\r\n Active: 1,\r\n Rescinded: 2,\r\n Lapsed: 3,\r\n Used: 4\r\n };\r\n gec.PromotionStatus = {\r\n Inactive: 1,\r\n Upcoming: 2,\r\n Open: 3,\r\n Closed: 4,\r\n Completed: 5,\r\n Abandoned: 6\r\n };\r\n gec.SelectionDetail = function (params) {\r\n //Properties\r\n this.selectionId; // integer\r\n this.selectionName; // String (256)\r\n this.selectionIcon; // Icon\r\n this.selectionIconIndex; //\r\n this.selectionBlurb; // Blurb\r\n this.selectionStatusId; // integer (SelectionStatus)\r\n this.selectionResetCount; // integer\r\n this.withdrawalFactor; // Percentage\r\n\r\n this.forSportsbookPrices = []; // {SportsbookPrice}\r\n this.againstSportsbookPrices = []; // {SportsbookPrice}\r\n this.forExchangePrices = []; // [ExchangePrice]\r\n this.againstExchangePrices = []; // [ExchangePrice]\r\n this.market;\r\n\r\n if (params !== undefined) {\r\n this.selectionId = params.selectionId;\r\n this.selectionName = params.selectionName;\r\n this.selectionIcon = params.selectionIcon;\r\n this.selectionIconIndex = params.selectionIconIndex;\r\n this.selectionBlurb = params.selectionBlurb;\r\n this.selectionStatusId = params.status;\r\n this.selectionResetCount = params.selectionResetCount;\r\n this.withdrawalFactor = params.withdrawalSequenceNumber;\r\n this.market = params.market;\r\n this.currentForPrice = params.currentForPrice;\r\n this.currentAgainstPrice = params.currentAgainstPrice;\r\n }\r\n\r\n };\r\n\r\n gec.SelectionDetail.prototype.getAgainstExchangePrices = function () { return this.againstExchangePrices; };\r\n gec.SelectionDetail.prototype.getAgainstSportsbookPrices = function () { return this.againstSportsbookPrices; };\r\n gec.SelectionDetail.prototype.getForExchangePrices = function () { return this.forExchangePrices; };\r\n gec.SelectionDetail.prototype.getForSportsbookPrices = function () { return this.forSportsbookPrices; };\r\n gec.SelectionDetail.prototype.getMarket = function () { return this.market; };\r\n\r\n\r\n gec.SystemInteractionType = function (params) {\r\n\r\n };\r\n gec.TaxChargingBasis = function (params) {\r\n this.header = gecPrivate._GBEHeader;\r\n this.callbackOnException = params.callbackOnException;\r\n this.callbackOnSuccess = params.callbackOnSuccess;\r\n };\r\n gec.Timestamp = function (params) {\r\n this.header = gecPrivate._GBEHeader;\r\n this.callbackOnException = params.callbackOnException;\r\n this.callbackOnSuccess = params.callbackOnSuccess;\r\n };\r\n gec.TitleType = function (params) {\r\n this.header = gecPrivate._GBEHeader;\r\n this.callbackOnException = params.callbackOnException;\r\n this.callbackOnSuccess = params.callbackOnSuccess;\r\n };\r\n gec.TradeType = function (params) {\r\n this.header = gecPrivate._GBEHeader;\r\n this.callbackOnException = params.callbackOnException;\r\n this.callbackOnSuccess = params.callbackOnSuccess;\r\n };\r\n gec.UserContext = function () {\r\n //Properties\r\n this.partnerUsername = null; //String\r\n this.punterId = null; // Number\r\n this.debitSportsbookStake = null; //Boolean\r\n this.debitExchangeStake = null; //Boolean\r\n this.purseIntegraionModeId = null; //Number\r\n this.canPlaceForSideOrders = null; //Boolean\r\n this.canPlaceAgainstSideOrders = null; //Boolean\r\n this.canDeposit = null; //Boolean\r\n this.canWithdraw = null; //Boolean\r\n this.canPlaceOrders = null; //Boolean\r\n this.restrictedToFillKillOrders = null; //Boolean\r\n this.currency = null; //Currency\r\n this.language = null; //String\r\n this.priceFormat = null; //Number\r\n this.marketByVolumeAmount = null; //MoneyAmount\r\n this.cohort = null; //String\r\n this.wageringCohort = null; //String\r\n this.state = null; //String\r\n this.zipcode = null; //String\r\n this.isRetailPunter = true;\r\n this.logonAttempts = []; // [{\tattemptedAt: gec.Timestamp\tpunterIPAddress: string\tlogonSucceeded: boolean }]\r\n this.aDWPointsEarned; // Number\r\n this.isOnLegacyRegime; // Boolean\r\n this.contestRestriction; // String\r\n this.contestCards; // Array\r\n this.isASubPunter; // Boolean\r\n\r\n //Methods\r\n this.priceFormatName = function () { return gec.priceFormatName(this.priceFormat); }\r\n this.purseIntegrationModeName = function () { return gec.purseIntegrationModeName(this.purseIntegraionModeId); }\r\n };\r\n gec.UserContextEnhanced = function () {\r\n //Properties\r\n this.partnerUsername = null; //String\r\n this.punterId = null; //Number\r\n this.debitSportsbookStake = null; //Boolean\r\n this.debitExchangeStake = null; //Boolean\r\n this.purseIntegraionModeId = null; //Number\r\n this.canPlaceForSideOrders = null; //Boolean\r\n this.canPlaceAgainstSideOrders = null; //Boolean\r\n this.canDeposit = null; //Boolean\r\n this.canWithdraw = null; //Boolean\r\n this.canPlaceOrders = null; //Boolean\r\n this.restrictedToFillKillOrders = null; //Boolean\r\n this.currency = null; //Currency\r\n this.language = null; //String\r\n this.priceFormat = null; //Number\r\n this.marketByVolumeAmount = null; //MoneyAmount\r\n this.cohort = null; //String\r\n this.wageringCohort = null; //String\r\n this.state = null; //String\r\n this.zipcode = null; //String\r\n this.isRetailPunter;\r\n this.availableBalance;\r\n this.numberFreeBets;\r\n this.sumAmountRemaining;\r\n this.reserved;\r\n this.logonAttempts = []; // [{\tattemptedAt: gec.Timestamp\tpunterIPAddress: string\tlogonSucceeded: boolean }]\r\n this.aDWPointsEarned; // Number\r\n this.isOnLegacyRegime; // Boolean\r\n this.contestRestriction; // String\r\n this.contestCards; // Array\r\n this.isASubPunter; // Boolean\r\n this.hasASubPunter; // Boolean\r\n\r\n };\r\n\r\n gec.EventClassifier = function (params) {\r\n //Properties\r\n this.eventClassifierId = 1; //integer\r\n this.eventClassifierName = \"ROOT\"; //String (256)\r\n this.shortcutAllMarkets = false; //Boolean\r\n this.isEnabledForMultipleBets; //Boolean\r\n this.marketTypeIds; //Array[integer (marketTypeId)]\r\n\r\n var _parent = [];\r\n var _children = [];\r\n var _markets = [];\r\n\r\n this.displayOrder;\r\n\r\n this.getChildren = function () { return _children; };\r\n this.getMarkets = function () { return _markets; };\r\n this.getParent = function () { return _parent; };\r\n\r\n\r\n };\r\n gec.Title = {\r\n Mr: 1,\r\n Mrs: 2,\r\n Ms: 3,\r\n Dr: 4,\r\n Other: 5\r\n };\r\n\r\n gec.Sex = {\r\n Male: 1,\r\n Female: 2\r\n };\r\n\r\n gec.QuestionType = {\r\n PlaceOfBirth: 1,\r\n MothersMaidenName: 2,\r\n FirstSchool: 3,\r\n FavouriteColour: 4,\r\n FavouriteHolidayDestination: 5,\r\n AllTimeFavouriteJockey: 6,\r\n FavouriteAutomobile: 7,\r\n FirstPetsName: 8,\r\n AllTimeFavouriteHorse: 9,\r\n CityOfBirth: 10,\r\n Unspecified: 11,\r\n PaternalGrandfatherFirstName: 12,\r\n ChildhoodFriend: 13,\r\n HighschoolMascot: 14,\r\n FirstCar: 15\r\n };\r\n\r\n gec.PunterAddress = function (params) {\r\n\r\n var _instance = this;\r\n this.address1;\r\n this.address2;\r\n this.city;\r\n this.state;\r\n this.zip;\r\n var SEPARATOR = \"\\n\";\r\n\r\n this.set = function (punterAddress) {\r\n var address = punterAddress.split(SEPARATOR);\r\n if (address != null) {\r\n if (address.length > 0)\r\n _instance.address1 = address[0];\r\n\r\n if (address.length > 1)\r\n _instance.address2 = address[1];\r\n\r\n if (address.length > 2)\r\n _instance.city = address[2];\r\n\r\n if (address.length > 3)\r\n _instance.state = address[3];\r\n\r\n if (address.length > 4)\r\n _instance.zip = address[4];\r\n }\r\n }\r\n if (params != null)\r\n this.set(params);\r\n\r\n this.get = function () {\r\n return _instance.address1 + SEPARATOR + _instance.address2 + SEPARATOR + _instance.city + SEPARATOR + _instance.state + SEPARATOR + _instance.zip;\r\n }\r\n };\r\n gec.PunterName = function (params) {\r\n\r\n var _instance = this;\r\n this.firstName;\r\n this.middleName;\r\n this.lastName;\r\n\r\n var SEPARATOR = \"\\n\";\r\n\r\n this.set = function (p) {\r\n var name = p.split(SEPARATOR);\r\n if (name != null) {\r\n if (name.length > 0)\r\n _instance.firstName = name[0];\r\n\r\n if (name.length > 1)\r\n _instance.middleName = name[1];\r\n\r\n if (name.length > 2)\r\n _instance.lastName = name[2];\r\n\r\n }\r\n }\r\n this.set(params);\r\n\r\n this.toString = function () {\r\n return _instance.firstName + SEPARATOR + _instance.middleName + SEPARATOR + _instance.lastName;\r\n }\r\n };\r\n gec.MarketType = {\r\n Win: 1,\r\n Place: 2,\r\n MatchOdds: 3,\r\n OverUnder: 4,\r\n AsianHandicap: 10,\r\n TwoBall: 11,\r\n ThreeBall: 12,\r\n Unspecified: 13,\r\n MatchMarket: 14,\r\n SetMarket: 15,\r\n Moneyline: 16,\r\n Total: 17,\r\n Handicap: 18,\r\n EachWayNonHandicap: 19,\r\n EachWayHandicap: 20,\r\n EachWayTournament: 21,\r\n RunningBall: 22,\r\n MatchBetting: 23,\r\n MatchBettingInclDraw: 24,\r\n CorrectScore: 25,\r\n HalfTimeFullTime: 26,\r\n TotalGoals: 27,\r\n GoalsScored: 28,\r\n Corners: 29,\r\n OddsOrEvens: 30,\r\n HalfTimeResult: 31,\r\n HalfTimeScore: 32,\r\n MatchOddsExtraTime: 33,\r\n CorrectScoreExtraTime: 34,\r\n OverUnderExtraTime: 35,\r\n ToQualify: 36,\r\n DrawNoBet: 37,\r\n HalftimeAsianHcp: 39,\r\n HalftimeOverUnder: 40,\r\n NextGoal: 41,\r\n FirstGoalscorer: 42,\r\n LastGoalscorer: 43,\r\n PlayerToScore: 44,\r\n FirstHalfHandicap: 45,\r\n FirstHalfTotal: 46,\r\n SetBetting: 47,\r\n GroupBetting: 48,\r\n MatchplaySingle: 49,\r\n MatchplayFourball: 50,\r\n MatchplayFoursome: 51,\r\n TiedMatch: 52,\r\n TopBatsman: 53,\r\n InningsRuns: 54,\r\n TotalTries: 55,\r\n TotalPoints: 56,\r\n FrameBetting: 57,\r\n ToScoreFirst: 58,\r\n ToScoreLast: 59,\r\n FirstScoringPlay: 60\r\n };\r\n gec.OrderFillType = {\r\n Normal: 1,\r\n FillAndKill: 2,\r\n FillOrKill: 3,\r\n FillOrKillDontCancel: 4,\r\n SPIfUnmatched: 5\r\n };\r\n gec.MultipleBetStatus = {\r\n Active: 1,\r\n Voided: 2,\r\n SettledFor: 3,\r\n SettledAgainst: 4,\r\n SettledUnclaimed: 5,\r\n CashedOut: 6\r\n };\r\n gec.MultipleLegStatus = {\r\n Unknown: 1,\r\n Won: 2,\r\n Lost: 3,\r\n Voided: 4\r\n };\r\n gec.SelectionStatus = {\r\n Inactive: 1,\r\n Active: 2,\r\n Suspended: 3,\r\n Withdrawn: 4,\r\n Voided: 5,\r\n Completed: 6,\r\n ResultsSet: 7,\r\n Settled: 8,\r\n BallotedOut: 9\r\n };\r\n gec.SportsBetPriceType = {\r\n FixedPrice: 1,\r\n StartingPrice: 2,\r\n BestOddsGuaranteed: 3\r\n };\r\n gec.ChannelType = {\r\n Internet: 1,\r\n Mobile: 2,\r\n Telebetting: 3,\r\n API: 4,\r\n LightweightPrice: 5,\r\n Kiosk: 6,\r\n GBEIntegrationSolution: 7,\r\n GBEIntegrationSolutionTelebetting: 8\r\n };\r\n gec.GranularChannelType = {\r\n MobileBrowser: 1,\r\n TabletBrowser: 2,\r\n MobileApplication: 3,\r\n TabletApplication: 4,\r\n InternetBrowser: 5,\r\n InternetApplication: 6,\r\n LiveOperator: 7,\r\n SelfService: 8,\r\n API: 9\r\n };\r\n\r\n gec.WithdrawRepriceOption = {\r\n Reprice: 1,\r\n Cancel: 2,\r\n DontReprice: 3\r\n };\r\n\r\n gec.FundsTransferTransactionType = {\r\n WithdrawFunds: 1,\r\n LodgeFunds: 2\r\n }\r\n\r\n gec.FundsTransferMethodType = {\r\n DebitCard: 1,\r\n CreditCard: 2,\r\n ChequeIn: 3,\r\n ChequeOut: 4,\r\n ElectronicFundsTransferIn: 5,\r\n ElectronicFundsTransferOut: 6,\r\n InternetPaymentProvider: 7,\r\n BankTransfer: 8,\r\n MCard: 9,\r\n OTC: 10,\r\n Agent: 11,\r\n WesternUnion: 12,\r\n Paysafe: 13,\r\n MoneyBookers: 14,\r\n Neteller: 15,\r\n ExternalSystem2: 16,\r\n ExternalSystem1: 17,\r\n OnCourseCash: 18,\r\n WebMoney: 19,\r\n ACH: 20\r\n };\r\n gec.PostingType = {\r\n Settlement: 1,\r\n Commission: 2,\r\n Transfer: 3,\r\n Lodgement: 4,\r\n Withdrawal: 5,\r\n TransferToSportsbook: 6,\r\n TransferFromSportsbook: 7,\r\n SinglePurseStakeTransfer: 8,\r\n SinglePursePosting: 9,\r\n DeviceStakeTransfer: 10,\r\n DevicePayoutPayment: 11,\r\n Tax: 12,\r\n GamePlay: 13,\r\n AdvancePayment: 14,\r\n Bonus: 15,\r\n Reward: 16,\r\n Stake: 17,\r\n Refund: 18,\r\n Adjustment: 19,\r\n ProductPurchase: 20,\r\n ProductRefund: 21\r\n };\r\n\r\n gec.FTMRStatus = {\r\n Enabled: 1,\r\n Blocked: 2,\r\n Removed: 3\r\n };\r\n gec.PurseIntegrationMode = {\r\n SinglePurse: 1,\r\n FundsTransfer: 2\r\n };\r\n\r\n gec.ContactType = {\r\n Unknown: 1,\r\n PressAdvertisment: 2,\r\n PressArticle: 3,\r\n SearchEngine: 4,\r\n OtherService: 5,\r\n ReferAFriendProgram: 6,\r\n TVOrRadio: 7,\r\n Promotion: 8\r\n };\r\n\r\n gec.BettingTypeId = {\r\n Undefined: null,\r\n Both: 1,\r\n ExchangeOnly: 2,\r\n SportsbookOnly: 3\r\n };\r\n\r\n gec.ReturnCode = {\r\n Success: 0,\r\n ResourceError: 1,\r\n SystemError: 2,\r\n EventClassifierDoesNotExist: 5,\r\n MarketNameAlreadyExists: 6,\r\n MarketDoesNotExist: 8,\r\n SelectionNameAlreadyExists: 9,\r\n SelectionDoesNotExist: 11,\r\n NewSelectionsProhibited: 12,\r\n SelectionNotSuspended: 13,\r\n MarketNotSuspended: 14,\r\n MarketNotActive: 15,\r\n MarketNeitherSuspendedNorActive: 16,\r\n SelectionNotActive: 17,\r\n InsufficientBrokerFunds: 18,\r\n InsufficientVirtualPunterFunds: 19,\r\n BrokerDoesNotExist: 20,\r\n OrderDoesNotExist: 21,\r\n NoUnmatchedAmount: 22,\r\n CurrencyNotValid: 23,\r\n VirtualPunterDoesNotExist: 24,\r\n PunterReservationPerMarketExceeded: 25,\r\n AccountDoesNotExist: 26,\r\n AccountBalanceNotZero: 27,\r\n AccountNotActive: 28,\r\n InsufficientFundsInAccount: 29,\r\n FundsReservationDoesNotExist: 30,\r\n BrokerNameAlreadyExists: 32,\r\n BrokerHasOrders: 33,\r\n BrokerAlreadyActive: 34,\r\n BrokerAlreadySuspended: 35,\r\n PaymentInstructionDoesNotExist: 36,\r\n CountryCodeDisallowed: 48,\r\n NegativeTradingLimit: 53,\r\n NegativeAbsoluteLimit: 54,\r\n IncompatibleCurrencies: 55,\r\n ParentDoesNotExist: 56,\r\n MarketAlreadySuspended: 57,\r\n SelectionAlreadySettled: 58,\r\n MarketCannotBeDeleted: 59,\r\n MarketDoesNotSupportInRunning: 60,\r\n MarketCannotBeTurnedInRunning: 61,\r\n SelectionAlreadySuspended: 62,\r\n UnknownEventSubscription: 63,\r\n CurrencyAccountAlreadyExists: 65,\r\n CurrencyNotSupported: 66,\r\n PunterReservationDoesNotExist: 67,\r\n RecursiveMove: 68,\r\n EventClassifieontainsUnsettledMarkets: 69,\r\n LanguageAlreadyExists: 70,\r\n LanguageDoesNotExist: 71,\r\n KeyPhraseAlreadyExists: 72,\r\n KeyPhraseDoesNotExist: 73,\r\n TranslationPhraseDoesNotExist: 74,\r\n MarketSelectionMismatch: 75,\r\n NoResultsPreviouslySpecified: 76,\r\n InvalidStateForVoiding: 77,\r\n MarketNotInactive: 78,\r\n MarketHasHadOrders: 79,\r\n MarketNotComplete: 80,\r\n UserNotAuthenticated: 81,\r\n UserNotAuthorisedForAPI: 82,\r\n UserNotAuthorisedForBroker: 83,\r\n UsernameAlreadyExists: 84,\r\n AuthorisedUserDoesNotExist: 85,\r\n APIDoesNotExist: 86,\r\n UserAlreadyAuthorisedForAPI: 87,\r\n UserAlreadyAuthorisedForBroker: 88,\r\n BrokeategoryNameAlreadyExists: 89,\r\n BrokeategoryDoesNotExist: 90,\r\n CommissionRuleDoesNotExist: 91,\r\n UserTypeNameAlreadyExists: 92,\r\n UserTypeDoesNotExist: 93,\r\n BrokerSuspended: 94,\r\n SelectionHasHadOrders: 95,\r\n SelectionNotInactive: 96,\r\n SelectionNotComplete: 97,\r\n SelectionNeitherSuspendedNorActive: 98,\r\n AccountHasHadPosting: 99,\r\n AccountNotSuspended: 100,\r\n DebitPostingsNotAllowedOnAccount: 101,\r\n BrokeurrencyAccountAlreadyExists: 102,\r\n SelectionNotSettled: 103,\r\n TaggedValueDoesNotExist: 104,\r\n CurrencyDoesNotExist: 105,\r\n CurrencyAlreadyActive: 106,\r\n CurrencyNotActive: 107,\r\n TransactionDoesNotExist: 108,\r\n AccountClosed: 109,\r\n ExchangeRateNotRelevant: 110,\r\n SelectionIsActive: 111,\r\n AccountAlreadyClosed: 112,\r\n ParameterFormatError: 113,\r\n ResetHasOccurred: 114,\r\n TranslationPhrasesExist: 115,\r\n BrokeategoryHasBrokers: 116,\r\n WithdrawalProhibitedOnMarket: 117,\r\n VirtualSelection: 118,\r\n KeyPhraseCategoryDoesNotExist: 119,\r\n KeyPhraseCategoryAlreadyExists: 120,\r\n AuthorisedApplicationNameAlreadyExists: 121,\r\n AuthorisedApplicationDoesNotExist: 122,\r\n UserAlreadyAuthorisedForApplication: 123,\r\n ApplicationNotAuthorisedForUser: 124,\r\n TargetAuthorisedUserDoesNotExist: 125,\r\n TargetUserNotAuthorisedForAPI: 126,\r\n OrderAlreadySuspended: 127,\r\n TradingCurrentlySuspended: 128,\r\n TradingNotSuspended: 129,\r\n NumberOfWinningSelectionsInvalid: 130,\r\n InvalidOdds: 131,\r\n TranslationPhraseAlreadyExists: 132,\r\n SelectionHasVirtualSelection: 133,\r\n ParameterMissingError: 134,\r\n AccountIsInternalCurrencyAccount: 135,\r\n WithdrawalSequenceNumberIsInvalid: 136,\r\n MaximumInputRecordsExceeded: 137,\r\n StartTimeNotSpecified: 138,\r\n BrokerOrderMismatch: 139,\r\n VirtualPunterOrderMismatch: 140,\r\n MarketHasNoSelections: 141,\r\n MarketAlreadyInrunning: 142,\r\n RequiredSystemAccountNotConfigured: 143,\r\n MarketSettlementInProgress: 144,\r\n EventClassifieontainsEventClassifiers: 145,\r\n EventClassifierIsBlocked: 146,\r\n EventClassifierIsNotBlocked: 147,\r\n PunterDoesNotExist: 201,\r\n NostroVostroAccountAlreadyExists: 203,\r\n FTMRDoesNotExist: 204,\r\n FTMRNotKnownToIssuer: 205,\r\n PaymentDeclinedByIssuer: 206,\r\n PaymentBridgeNotAvailable: 207,\r\n PunterSuspended: 208,\r\n PunterUsernameAlreadyExists: 211,\r\n PunterHasOrders: 213,\r\n PunterAlreadyActive: 214,\r\n PunterAlreadySuspended: 215,\r\n EventClassifierAlreadyExists: 218,\r\n MarketAlreadyExists: 219,\r\n SelectionAlreadyExists: 220,\r\n PunteategoryNameAlreadyExists: 221,\r\n PunteategoryDoesNotExist: 222,\r\n FundsReservationAlreadyExists: 223,\r\n PunterReservationAlreadyExists: 224,\r\n FundsTransferMethodNameAlreadyExists: 226,\r\n FundsTransferMethodDoesNotExist: 227,\r\n CountryDoesNotExist: 228,\r\n BINValueAlreadyExists: 229,\r\n BINDoesNotExist: 230,\r\n FTMRNumberAlreadyExists: 231,\r\n NicknameAlreadyExists: 232,\r\n ImpliedBINDoesNotExist: 233,\r\n InvalidFTMRNumber: 234,\r\n FTMRAlreadyBlocked: 235,\r\n FTMRAlreadyEnabled: 236,\r\n WithdrawalRequestDoesNotExist: 237,\r\n WithdrawalRequestNotPending: 238,\r\n PunterProhibitedFromPlacingOrders: 240,\r\n InsufficientPunterFunds: 241,\r\n MinimumBalanceWouldBeBreached: 242,\r\n WithdrawalToFundsTransferMethodProhibited: 243,\r\n PunterProhibitedFromDepositing: 244,\r\n DepositFromBINProhibited: 245,\r\n DepositFromFundsTransferMethodProhibited: 246,\r\n WithdrawalExceedsAmountDeposited: 247,\r\n MaximumPunterFTMRLimitReached: 248,\r\n WithdrawalLessThanDeposit: 249,\r\n PunterProhibitedFromWithdrawing: 250,\r\n WithdrawalToBINProhibited: 251,\r\n FTMRIsBlocked: 252,\r\n DepositWouldExceedFundsTransferMethodLimit: 253,\r\n DepositWouldExceedBINLimit: 254,\r\n DepositWouldExceedPunterLimit: 255,\r\n WithdrawalWouldExceedFundsTransferMethodLimit: 256,\r\n WithdrawalWouldExceedBINLimit: 257,\r\n WithdrawalWouldExceedPunterLimit: 258,\r\n AccountAlreadySpecifiedForFundsTransferMethod: 259,\r\n FTMRDetailsNotSpecified: 260,\r\n IncorrectFTMRDetailsSpecified: 261,\r\n AccountNotAssociatedWithFundsTransferMethod: 262,\r\n StoryDoesNotExist: 263,\r\n PaymentOutcomeUnknown: 264,\r\n PendingPaymentTransactionDoesNotExist: 265,\r\n FTMSpecificError: 266,\r\n InvalidUsername: 267,\r\n PaymentFailedRiskCheck: 268,\r\n NegativeDepositLimit: 269,\r\n NegativeWithdrawalLimit: 270,\r\n OrderAPIInProgress: 271,\r\n NegativeCurrentMinimumBalance: 272,\r\n PunterNotLocked: 273,\r\n PunterOrderMismatch: 274,\r\n ImpliedBINDoesNotExistForFTM: 275,\r\n UserAlreadyAuthorisedForPunter: 276,\r\n UserNotAuthorisedForPunter: 277,\r\n CreditCardNumberNotAvailable: 278,\r\n FundsTransferPaymentDoesNotExist: 279,\r\n MarketNotEnabledForMultiples: 281,\r\n MultipleBetDoesNotExist: 282,\r\n MatchedMultipleBetChunkDoesNotExist: 283,\r\n MultipleLayerDoesNotExist: 284,\r\n MultipleLayerParameterAlreadyExists: 285,\r\n MultipleLayerParameterDoesNotExist: 286,\r\n LevelsRequestedExceedsMaximum: 288,\r\n NoMultipleOfferAvailable: 289,\r\n PunterAlreadyRegisteredAsMultipleLayer: 290,\r\n MultipleLayeurrentlySuspended: 291,\r\n MultipleLayerNotSuspended: 292,\r\n InRunningDelayInEffect: 293,\r\n PunterHasNotPlacedBet: 294,\r\n MultipleSelectionsUnderSameEvent: 295,\r\n MultipleSelectionsWithSameName: 296,\r\n InvalidNumberOfSelections: 297,\r\n MultipleBetAlreadyVoided: 298,\r\n DuplicateOrderSpecified: 299,\r\n SelectionIsNotWithdrawn: 300,\r\n OrderNotSuspended: 301,\r\n PunterIsSuspendedFromTrading: 302,\r\n PunterHasActiveOrders: 303,\r\n PunterNotSuspendedFromTrading: 304,\r\n ExpiryTimeInThePast: 305,\r\n NoChangeSpecified: 306,\r\n SoapHeaderNotSupplied: 307,\r\n IncorrectVersionNumber: 308,\r\n NoUsernameSpecified: 309,\r\n InvalidParameters: 310,\r\n NoPasswordSpecified: 311,\r\n PunterRestrictedFromAgainstSideOrders: 314,\r\n PunterRestrictedFromForSideOrders: 315,\r\n PunterRestrictedToFillKillOrders: 316,\r\n PaymentConfirmationNotPending: 400,\r\n DuplicateAffiliateIdentifierSpecified: 401,\r\n AffiliateDoesNotExist: 402,\r\n PunterNoteDoesNotExist: 403,\r\n PunterNoteAlreadyDeleted: 404,\r\n InvalidPassword: 405,\r\n PunterIsBlacklisted: 406,\r\n PuntelassificationNameExists: 420,\r\n PuntelassificationDoesNotExist: 421,\r\n PrivateLiquidityPoolDoesNotExist: 422,\r\n AlreadyEnabledForPrivateLiquidityPool: 423,\r\n NotEnabledForPrivateLiquidityPool: 424,\r\n PunterNotRegisteredAsMultipleLayer: 425,\r\n UnacceptableIPAddress: 437,\r\n LocalBetDoesNotExist: 439,\r\n NotBrokersPrimaryCurrency: 446,\r\n MarketNotEnabledForEachWay: 450,\r\n EachWayResultsNotSpecified: 451,\r\n PlaceStakeExceedsWinStake: 452,\r\n MarketNotEnabledForPreferredMatching: 453,\r\n LocalBetNotPlaced: 454,\r\n IncompletePriceRangeSpecified: 455,\r\n EachWayNotAllowedWithVirtualSelections: 456,\r\n PunterIdentificationNotEnabled: 457,\r\n EachWayParametersNotSpecified: 458,\r\n EachWayOrdersHaveBeenPlaced: 459,\r\n EachWayIncompatibleWithMarketType: 460,\r\n ResetCountIsInvalid: 461,\r\n PunterAlreadyRegisteredForHeartbeat: 462,\r\n PunterNotRegisteredForHeartbeat: 463,\r\n ThresholdSpecifiedTooSmall: 473,\r\n PunterTaggedValueDoesNotExist: 475,\r\n UnmatchedOrdeouldResult: 477,\r\n GenericTaggedValueDoesNotExist: 478,\r\n CannotUnsetAtRoot: 480,\r\n SystemParameterDoesNotExist: 481,\r\n BrokerNotActive: 482,\r\n BrokerNotEnabledForExternalSystem: 483,\r\n NotRegisteredForExternalSystem: 484,\r\n UserAlreadyRegisteredForExternalSystem: 485,\r\n ExpiredTAndCVersion: 486,\r\n ExternalSystemNicknameUnknown: 487,\r\n ExternalSystemNicknameNotAvailable: 488,\r\n ExternalSystemUnavailable: 489,\r\n UserBlockedOnExternalSystem: 490,\r\n WithdrawalWouldExceedSystemLimit: 491,\r\n DepositWouldExceedSystemLimit: 492,\r\n PICPunterNotKnown: 493,\r\n PICPunterNotActive: 494,\r\n PICInsufficientFunds: 495,\r\n PICSystemError: 496,\r\n PICCurrencyNotValid: 497,\r\n PICUnavailable: 498,\r\n PICTransactionRefused: 499,\r\n PunterNotRegisteredToIntegrationPartner: 500,\r\n DuplicateReferenceNumbersExist: 501,\r\n IntegrationPartnerNameAlreadyExists: 503,\r\n IntegrationPartnerDoesNotExist: 504,\r\n TermsAndConditionsAlreadyExists: 505,\r\n TermsAndConditionsDoesNotExist: 506,\r\n PostingDoesNotExist: 507,\r\n PostingNotAwaitingApplication: 508,\r\n PICDeviceNotKnown: 509,\r\n PICDeviceDisabled: 510,\r\n PartnerTokenNotAuthenticated: 511,\r\n SessionTokenNotAuthenticated: 512,\r\n PunterIntegrationPartnerMismatch: 513,\r\n SessionTokenNoLongerValid: 514,\r\n IntegrationPartnerIsPartnerOperated: 515,\r\n IntegrationPartnerNotWhiteLabelDuplicateRegistration: 516,\r\n PunterNotFundsTransfer: 517,\r\n UsernameDoesNotExist: 518,\r\n MaximumOutputRecordsExceeded: 519,\r\n PICPunterNotAuthenticated: 520,\r\n PasswordAuthenticationNotAllowed: 521,\r\n PICPasswordTokenTooOld: 522,\r\n PICPasswordNotSpecified: 523,\r\n AnonymousOperationNotSupported: 524,\r\n IntegrationPartnerDidNotAuthenticate: 525,\r\n IntegrationPartnerAccountAlreadyExists: 526,\r\n AuthorisedUserNotFinanceUser: 530,\r\n DeprecatedAPIVersion: 531,\r\n PICPasswordOptionNotSpecified: 532,\r\n PunterNotAuthorisedForAPI: 533,\r\n PunterReservationNotAwaitingApplication: 534,\r\n SinglePurseNotSupported: 535,\r\n PunterReservationNotSupported: 536,\r\n ChangeOrdersNotSupported: 537,\r\n ClientDoesNotExist: 538,\r\n UserNotAuthorisedFolient: 539,\r\n NoSelectionPriceCurrentlySet: 542,\r\n ArbitraryInformationDoesNotExist: 543,\r\n UserAlreadyAuthorisedFolient: 544,\r\n FeedDoesNotExist: 545,\r\n UserNotAuthorisedForFeed: 546,\r\n UserAlreadyAuthorisedForFeed: 547,\r\n FeedItemDoesNotExist: 548,\r\n FeedItemAlreadyExists: 549,\r\n MappingInformationDoesNotExist: 550,\r\n MappingDoesNotExit: 551,\r\n MappingAlreadyExists: 552,\r\n ClientCapabilityDoesNotExist: 553,\r\n ClientCapabilityAlreadyExists: 554,\r\n IsLineBetting: 555,\r\n MarketTypeNotLineBetting: 556,\r\n MarketContainsUnsettledSelections: 557,\r\n NegativeMoneyAmountSpecified: 558,\r\n MultipleBetLayParametersAlreadyExists: 559,\r\n MultipleBetLayParametersDoesNotExist: 560,\r\n ClientAlreadyExists: 561,\r\n PoolDoesNotExist: 563,\r\n PoolNotAvailableForBetting: 564,\r\n SelectionsNotConsistentWithPool: 565,\r\n RunnerDoesNotExist: 566,\r\n ProviderNotAvailable: 567,\r\n PoolBetRejectedByProvider: 568,\r\n StakeNotConsistentWithPool: 569,\r\n RunnerUnavailableForBetting: 570,\r\n RaceNotAvailable: 571,\r\n PoolBetDoesNotExist: 572,\r\n PoolBetAlreadySettled: 573,\r\n TotalStakeIncorrect: 574,\r\n CannotDeleteAtRoot: 575,\r\n IncompleteTimeRangeSpecified: 576,\r\n RaceDoesNotExist: 577,\r\n EachWayLayBetsNotAllowed: 579,\r\n OrderSettledOrVoided: 581,\r\n LocalBetSettledOrVoided: 582,\r\n MultipleBetSpansBrokers: 583,\r\n PartnerTelebetTokenNotAuthenticated: 584,\r\n TelebetSessionTokenNotAuthenticated: 585,\r\n NotSessionless: 586,\r\n NotTelebetSession: 587,\r\n NotTelebetUserSession: 588,\r\n NotUserSession: 589,\r\n NeitherUserNorTelebetUserSession: 590,\r\n DefaultsNotLoaded: 591,\r\n OrdeacheNotPresent: 592,\r\n AgentTokenNotAuthenticated: 593,\r\n NoAgentSession: 594,\r\n AgentSessionAlreadyExists: 595,\r\n StakeOutsideAcceptableRange: 596,\r\n MarketIsForRealMoney: 597,\r\n MarketIsForPlayMoney: 598,\r\n MarketIsForPlay: 599,\r\n PunterHasPlayCurrency: 600,\r\n RingfencedLiquidityPoolMismatch: 601,\r\n MatchedOrderDoesNotExist: 602,\r\n UserNotAuthorisedForRingfencedLiquidityPool: 603,\r\n CantMoveBetweenRingfencedLiquidityPools: 604,\r\n EventClassifierAlreadyBlockedForBroker: 605,\r\n EventClassifierNotBlockedForBroker: 606,\r\n SelectionsInRingfencedLiquidityPool: 607,\r\n PunterInRingfencedLiquidityPool: 608,\r\n CantTransferBetweenPlayAndRealCurrencies: 609,\r\n RequestDidNotAuthenticate: 610,\r\n PoolBetNotUnknownStatus: 611,\r\n PunterNotAuthenticated: 612,\r\n IntegrationPartnerIsStandalone: 613,\r\n IntegrationPartnerIsNotStandalone: 614,\r\n APIIsDeprecated: 615,\r\n PunterHasRealCurrency: 616,\r\n CurrentlyUserSession: 617,\r\n EventCacheNotPresent: 618,\r\n MobileApplicationNotSupported: 638,\r\n InsufficientFreeBetStakeAvailable: 644,\r\n FreeBetEntitlementDoesNotExist: 645,\r\n FreeBetEntitlementNotActive: 646,\r\n ExchangeRateProviderDoesNotExist: 649,\r\n FXRateOverrideDoesNotExist: 650,\r\n FXRateOverrideNotActive: 651,\r\n AmountInPuntersCurrencyNotSpecified: 652,\r\n CannotChangeFreeBetEntitlementOrder: 653,\r\n IntegrationPartnerIsActive: 654,\r\n IntegrationPartnerNotActive: 655,\r\n UnmatchableAmount: 656,\r\n EventClassifierIsNotEmpty: 657,\r\n AAPIDoesNotExist: 658,\r\n AAPIPunterGroupDoesNotExist: 659,\r\n AUSVDoesNotExist: 660,\r\n AAPIPunterGroupNameAlreadyExists: 661,\r\n NoApplicableCustomHierahy: 662,\r\n ConcurrentSessionLimitReached: 671,\r\n ConnectionInInvalidState: 672,\r\n PunterNotAuthorisedForAAPI: 673,\r\n SubscriptionDoesNotExist: 674,\r\n PunterIsBanned: 675,\r\n AAPIPunterGroupNotEmpty: 676,\r\n PunteategoryIsNotEmpty: 677,\r\n PoolBetAlreadyExists: 678,\r\n PoolBetWasPlacedDirectly: 679,\r\n PunterFailedIdentityVerificationCheck: 680,\r\n IntegrationPartnerNotExternalPurseProvider: 681,\r\n IntegrationPartnerIsNormal: 682,\r\n IntegrationPartnerNotNormal: 683,\r\n IntegrationPartnerIsExternalGame: 684,\r\n IntegrationPartnerNotExternalGame: 685,\r\n CardDoesNotExist: 686,\r\n PoolBetWasNotPlacedDirectly: 687,\r\n TicketSerialNumberNotUnique: 688,\r\n RewardRuleDoesNotExist: 689,\r\n NoSession: 690,\r\n PSIDoesNotExist: 691,\r\n PSINameAlreadyExists: 692,\r\n PunterAlreadyAssignedToPSI: 693,\r\n PunterNotAssignedToPSI: 694,\r\n PSIRestrictedToDifferentIntegrationPartner: 695,\r\n NotPossibleToRestrictPSIToIntegrationPartner: 696,\r\n PSIIsDefaultOrPunterSpecific: 697,\r\n PartnerUsernameSpecified: 698,\r\n PunterIdSpecified: 699,\r\n PuntehangeSequenceNumberDoesNotExist: 700,\r\n AAPINotSupported: 701,\r\n EnrolmentAttemptDoesNotExist: 702,\r\n EnrolmentAttemptNotAuthenticated: 703,\r\n PoolBetCancellationRejectedByRule: 704,\r\n PoolBetCancellationRejectedByProvider: 705,\r\n PoolBetNeitherActiveNorSettledVoid: 706,\r\n VideoProviderNotCurrentlyAvailable: 707,\r\n RaceVideoDoesNotExist: 708,\r\n CardVideoDoesNotExist: 709,\r\n FundsTransferMethodNotSupported: 710,\r\n FTMRNotPreviouslyUsedForDeposit: 711,\r\n TransactionNumberLimitExceeded: 712,\r\n TransactionAmountLimitExceeded: 713,\r\n OpenTransactionLimitExceeded: 714,\r\n SingleTransactionAmountExceeded: 715,\r\n FTMRuleAlreadyExists: 716,\r\n FTMRuleDoesNotExist: 717,\r\n PostingNotUnsuccessfullyApplied: 718,\r\n MultipleTransactionsAwaitingCompletion: 719,\r\n FTMPunterLimitReached: 720,\r\n PaymentDoesNotExist: 801,\r\n FTMNotSpecified: 802,\r\n FTMNotEnabledForPuntehannel: 803,\r\n RaceMeetingDoesNotExist: 804,\r\n CardIsMapped: 805,\r\n CardNotMapped: 806,\r\n CardRaceNumberDoesNotExist: 807,\r\n CardRaceNumberIsMapped: 808,\r\n CardRaceNumberNotMapped: 809,\r\n NotAllCardRaceReferencesMapped: 810,\r\n ExternalSystemDoesNotExist: 811,\r\n PICSelectionDoesNotExist: 812,\r\n PICMarketNotActive: 813,\r\n PICSelectionNotActive: 814,\r\n PICInvalidPrice: 815,\r\n PICInrunningDelayStillInEffect: 818,\r\n CustomMarketListHandlerNotKnown: 819,\r\n CustomMarketListHandlerSpecificError: 820,\r\n ValueIsNotEncrypted: 821,\r\n ConnectionNotDropped: 822,\r\n PunteashOutRequirementsNotMet: 823,\r\n DesiredClosingPositionNotPossible: 824,\r\n OrdersSpecifiedNotClosingPosition: 825,\r\n OrdersSpecifiedNotMatched: 826,\r\n PunterHasActiveOrdersOnMarket: 827,\r\n PICPriceChanged: 828,\r\n PICBetRejected: 829,\r\n CustomServiceHandlerNotKnown: 830,\r\n CustomServiceHandlerSpecificError: 831,\r\n IncompatibleVisibilities: 832,\r\n SPBettingIsNotSupported: 833,\r\n EMailAddressAlreadyUsed: 834,\r\n ContentItemDoesNotExist: 835,\r\n InstantFundingNotSupported: 836,\r\n LodgementCannotBeCancelled: 837,\r\n PunterLodgementMismatch: 838,\r\n CashCardAccountAlreadyRegistered: 839,\r\n ActionNotAppropriateAtThisTime: 840,\r\n PartnerAccountIsBusy: 841,\r\n PunterDeleted: 842,\r\n PunterNotSuspended: 843,\r\n PunterNotActive: 844,\r\n SettingTaggedValueNotAllowed: 845,\r\n DeletingTaggedValueNotAllowed: 846,\r\n FTMRPunterMismatch: 847,\r\n PunterRegistrationNotCompleted: 848,\r\n ExternalSystemTimedOut: 849,\r\n ProhibitedBySpecialRule: 850,\r\n PINNotAuthenticated: 851,\r\n PunterNotEnrolled: 854,\r\n AccountHasUnsettledTransactions: 855,\r\n DuplicateAttempt: 856,\r\n AccountHasHadActivity: 857,\r\n AccountAssociatedWithOtherPunter: 858,\r\n CommissionAmountSpecifiedIsIncorrect: 859,\r\n StoreProductDoesNotExist: 860,\r\n StoreSubscriptionDoesNotExist: 861,\r\n StoreProductNotCurrent: 862,\r\n StoreSubscriptionNotCurrent: 863,\r\n MaxOnlineEnrollmentAttemptsExceeded: 864,\r\n StoreProductAlreadyGranted: 865,\r\n StoreSubscriptionAlreadyGranted: 866,\r\n SubscriptionDoesNotCoverProduct: 867,\r\n SubscriptionInvalidPeriod: 868,\r\n StoreProductNotCurrentlyAvailable: 869,\r\n MaxStoreProductsReached: 870,\r\n StoreProductNotGranted: 871,\r\n StoreSubscriptionNotGranted: 872,\r\n FollowRequestAlreadyExists: 873,\r\n FollowRequestDoesNotExist: 874,\r\n PunterAddedNoteAlreadExists: 875,\r\n PunterAddedNoteDoesNotExist: 876,\r\n AddedPunterNotePunterMismatch: 877,\r\n FollowRequestPunterMismatch: 878,\r\n LimitExceedsMaximum: 879,\r\n CohortDoesNotExist: 880,\r\n UnableToChangeCohortCurrently: 881,\r\n InsufficientLoyaltyPointsBalance: 882,\r\n RuleAlreadyExists: 883,\r\n RuleDoesNotExist: 884,\r\n SPOrdersNotSupportedOnMarket: 885,\r\n ProhibitedFromPlacingSPOrders: 887,\r\n NegativeAmountSpecified: 888,\r\n CantUndoSPMatching: 889,\r\n CantRedoSPMatching: 890,\r\n InvalidConfiguration: 891,\r\n CannotChangeToSPIfUnmatched: 892,\r\n IncompatibleSessionCategory: 893,\r\n NoOrdersToCancel: 894,\r\n FundsTransferPaymentCannotBeUpdated: 895,\r\n PunterAlreadyInCohortSpecified: 896,\r\n ConcurrentExecutionNotAllowed: 897,\r\n PunterOnOldPointsRegime: 898,\r\n RuleConfigurationInconsistent: 899,\r\n LocationNotSpecified: 900,\r\n LocationNotAccurateEnough: 901,\r\n LocationNotAcceptable: 902,\r\n ContestDoesNotExist: 903,\r\n ContestNotOpen: 904,\r\n ContestFull: 905,\r\n PlayerEnteredMaximumTimes: 906,\r\n EntryCriteriaNotSatisfied: 907,\r\n EntryCodeNotSpecified: 908,\r\n EntryCodeNotAcceptable: 909,\r\n EntryDoesNotExist: 910,\r\n StakeTooSmall: 911,\r\n StakeTooBig: 912,\r\n ExposureTooSmall: 913,\r\n ExposureTooBig: 914,\r\n PriceTooHigh: 915,\r\n PriceTooLow: 916,\r\n FillTypeNotAllowed: 917,\r\n BackNotAllowed: 918,\r\n LayNotAllowed: 919,\r\n InRunningNotAllowed: 920,\r\n PrestartNotAllowed: 921,\r\n TimeTooEarly: 922,\r\n TimeTooLate: 923,\r\n MaximumOrdersPerMarketExceeded: 924,\r\n MaximumOrdersPerSelectionExceeded: 925,\r\n MarketNotAllowed: 926,\r\n MaximumMarketsReached: 927,\r\n MarketTypeNotAllowed: 928,\r\n ContestTemplateDoesNotExist: 929,\r\n ContestTemplateNotOpen: 930,\r\n PlayerProfileDoesNotExist: 931,\r\n ScreennameAlreadyExists: 932,\r\n PlayerProfileAlreadyExists: 933,\r\n ContestNameNotUnique: 934,\r\n PoweriteriaNotSatisfied: 935,\r\n PowerAIInvalid: 936,\r\n PowerAINotAllowed: 937,\r\n PowerObtainedMaximumActiveTimes: 938,\r\n PowerObtainedMaximumTotalTimes: 939,\r\n PowerObtainedMaximumTimesInContest: 940,\r\n PowerDefinitionDoesNotExist: 941,\r\n PowerDefinitionNotActive: 942,\r\n PowerNotAllowedInContest: 943,\r\n PowerIsContestSpecific: 944,\r\n PowerDoesNotExist: 945,\r\n PoweonditionNotSatisfied: 946,\r\n PowerNotActive: 947,\r\n NotAllSelectionsOnSameMarket: 948,\r\n JWTNotAuthenticated: 949,\r\n PunterLockedExcessiveAttempts: 950,\r\n NotSubpunterOfPunterSpecified: 951,\r\n NotAllowedToSwitch: 952,\r\n LoginCurrentlyProhibited: 953,\r\n LoginWithEmailAddressProhibited: 954,\r\n OnePunterMustRepresentExternalGame: 955,\r\n ContestEntrantsNotAllowed: 956,\r\n PunterNotContestEntrant: 957,\r\n reCAPTCHATokenRequired: 958,\r\n reCAPTCHATokenNotValid: 959,\r\n CantReversePosting: 960,\r\n MaximumSubscribedMarketsReached: 961,\r\n TrustedDevicesNotEnabled: 962,\r\n TwoFactorAuthenticationNotEnabled: 963,\r\n TrustedDevicesAlreadyEnabled: 964,\r\n TwoFactorTokenNotAuthenticated: 965,\r\n TwoFactorAuthenticationNotPending: 966,\r\n TrustedDeviceAlreadyExists: 967,\r\n TrustedDeviceDoesNotExist: 968,\r\n TwoFactorAuthenticationAlreadyEnabled: 969,\r\n TwoFactorAuthenticationRequired: 970,\r\n PunterNotAuthorisedForHostGame: 971,\r\n LossLimitWouldBeExceeded: 972,\r\n HostGameDoesNotExist: 973,\r\n NoCurrentContestForPunter: 974,\r\n PunterSelfExcluded: 975,\r\n MultipleBetCashOutRiskSchemeNotFound: 976,\r\n PunterMultipleBetMismatch: 977,\r\n PunterAccaGroupMismatch: 978,\r\n AccaGroupDoesNotExist: 979,\r\n MultipleBetCashOutOfferNotAvailable: 980,\r\n MinimumCashOutStakeBreached: 981,\r\n IdentityXTokenNotAuthenticated: 982,\r\n LocalBetCashOutRiskSchemeNotFound: 983,\r\n PunterLocalBetMismatch: 984,\r\n LocalBetCashOutOfferNotAvailable: 985,\r\n BetTypeNotAllowed: 986,\r\n InvalidPoolCombinations: 987,\r\n SSNNotUnique: 988,\r\n PunterHasFullSSN: 989,\r\n SSNFormatUnacceptable: 990,\r\n BetNotAllowedForPunter: 991,\r\n PoolBetIsNotParlay: 992,\r\n RiskGroupNameAlreadyExists: 993,\r\n LiabilityPoolDoesNotExist: 994,\r\n FunctionsAllowedDoesNotExist: 995,\r\n PriceMarginsDoesNotExist: 996,\r\n MaxLiabilitiesDoesNotExist: 997,\r\n RiskGroupProfileNameAlreadyExists: 998,\r\n RiskGroupProfileDoesNotExist: 999,\r\n MaxLiabilitiesNameAlreadyExists: 1000,\r\n RiskGroupDoesNotExist: 1001,\r\n InvalidClubName: 1002,\r\n ClubNameAlreadyExists: 1003,\r\n ClubDoesNotExist: 1004,\r\n SequenceNumberAlreadyExists: 1005,\r\n PunterNotRacingExtensionPunter: 1006,\r\n PCJWTDidNotAuthenticate: 1007,\r\n PuntClubAlreadyExists: 1008,\r\n PuntClubNameNotValid: 1009,\r\n PunterNotOptedInToPuntClub: 1010,\r\n PuntClubDoesNotExist: 1011,\r\n OrdersNotSupportedOnMarket: 1012,\r\n PostingNotNonWithddrawable: 1013,\r\n ClientIdAlreadyExists: 1014,\r\n ScopeNameNotUnique: 1015,\r\n OAuthClientDoesNotExist: 1016,\r\n OAuthClientSuspended: 1017,\r\n OAuthClientNotSuspended: 1018,\r\n ScopeNameDoesNotExist: 1019,\r\n OAuthAuthorizationCodeNotValid: 1020,\r\n OAuthRefreshTokenNotValid: 1021,\r\n PunterTokenMismatch: 1022,\r\n OAuthAuthorizationCodeDoesNotExist: 1023,\r\n OAuthRefreshTokenDoesNotExist: 1024,\r\n RaceDefinitionFormatError: 1025,\r\n ContestPunterNotRelated: 1026,\r\n ContestPuntersNotAllowed: 1027,\r\n NotEnteredInContest: 1028,\r\n ContestWithdrawalNotAllowed: 1029,\r\n ContestHasStarted: 1030,\r\n EntryAlreadyDisqualified: 1031,\r\n ContestAlreadyFinalised: 1032,\r\n EndtimeIsInFuture: 1033,\r\n EntryNotDisqualified: 1034,\r\n MaxEntriesWouldBeExceeded: 1035,\r\n MaxEntriesPerPunterWouldBeExceeded: 1036,\r\n StateNotAcceptable: 1037,\r\n ContestRegistrationNotOpen: 1038,\r\n PunterHasPartialSSN: 1039,\r\n ContestHasUnsettledPoolBets: 1040,\r\n ContestEntryHasPoolBets: 1041,\r\n MaxFailedAttemptsReached: 1042,\r\n AdditionalActionRequired: 1043,\r\n ResourceIsBusy: 1044,\r\n CounterOfferNotValid: 1045,\r\n CounterOfferExpired: 1046,\r\n RiskReferralDoesNotExist: 1047,\r\n ExclusionSourceDoesNotExist: 1048,\r\n InvalidExclusionStatus: 1049,\r\n DepositWouldExceedAffordabilityLimit: 1050,\r\n AffordabilityLimitNotEnabled: 1052,\r\n PromoCodeAlreadyExists: 1053,\r\n PromotionDoesNotExist: 1054,\r\n PromoCodeNotValid: 1055,\r\n PromotionHasAwards: 1056,\r\n PromotionIsAbandoned: 1057,\r\n PromotionInInvalidState: 1058,\r\n PromotionIsExpired: 1059,\r\n PunterNotEligibleForPromotion: 1060,\r\n PunterAlreadyOptedIntoPromotion: 1061,\r\n UnsupportedPromotionCurrency: 1062,\r\n ExceedsMaximumNumberOfParticipants: 1063,\r\n ExceedsMaximumAwardsPerPunter: 1064,\r\n ExceedsMaximumCreditAmountPerPunter: 1065,\r\n PunterHasNotOptedIntoPromotion: 1066,\r\n PromoCodeRequired: 1067,\r\n PromotionAwardDoesNotExist: 1068,\r\n PromotionAwardIsReversal: 1069,\r\n PromotionCreditAmountNotSpecified: 1070,\r\n DuplicateInputParameter: 1071,\r\n EnrolmentAttemptExpired: 1072,\r\n PICMaxRetriesExceeded: 1073,\r\n ProhibitedFromQuotingSBMultiples: 1074,\r\n ProhibitedFromPlacingSBMultiples: 1075,\r\n ProhibitedFromCashOutSBMultiples: 1076,\r\n SBMultiplesCombinationCountMismatch: 1077,\r\n SBMultiplesOfferedPriceMismatch: 1078,\r\n AmbiguousRiskReferralServices: 1079,\r\n SBMultiplesRejectedByRiskReferral: 1080,\r\n SBMultiplesReofferedByRiskReferral: 1081,\r\n SBMultipleBetDoesNotExist: 1082,\r\n SBMultipleBetAlreadyVoided: 1083,\r\n SBMultipleBetNotActive: 1084,\r\n PICPartnerAccountAlreadyExists: 1085,\r\n MaxOrderThrehsoldExceeded: 1086,\r\n PunterFailedUniquenessCheck: 1087,\r\n InvalidStatus: 1089,\r\n DepositWouldExceedPeriodLimit: 1090,\r\n DepositWouldExceedSelfImposedVelocityLimits: 1091,\r\n MonthlyNetLossLimitsNotEnabled: 1092,\r\n DepositWouldExceedMonthlyNetLossLimit: 1093,\r\n QueueingNotEnabled: 1094,\r\n QueueTokenNotSpecified: 1095,\r\n QueueTokenExpired: 1096,\r\n QueueTokenNotYetValid: 1097,\r\n QueueFull: 1098,\r\n InvalidQueueToken: 1099,\r\n InitializationInProgress: 1100,\r\n WalletNotAvailable: 1101,\r\n AccountAdjustmentsBlockedOnExternalSystem: 1102,\r\n PromotionAwardCriteriaNotMet: 1103,\r\n LocalBetAlreadyVoided: 1104,\r\n\t MatchingWaitTimeExceeded: 1105,\r\n CancelWouldExceedPeriodLimit: 1106,\r\n PoolBetCancellationSuspended: 1107,\r\n PINCannotHaveBeenPreviouslyUsed: 1147\r\n };\r\n\r\n gec.SubscribedObjectBase = function (obj) {\r\n const instance = this;\r\n var _delegates = {};\r\n var _firedDelegates = [];\r\n var _interest = 0;\r\n var delegateId = 0;\r\n\r\n this.interest = function (val) {\r\n _interest = _interest + val;\r\n return _interest;\r\n }\r\n\r\n this.fireDelegates = function (delegates, webMessage, deltaObject) {\r\n\r\n if (webMessage.isInitialTopicLoad()) {\r\n instance.fireILDelegates(delegates);\r\n return;\r\n }\r\n\r\n if (webMessage.isDeleteTopic()) {\r\n instance.fireDeltaDelegates(\"DELETED\");\r\n return;\r\n }\r\n\r\n if (!webMessage.isInitialTopicLoad()) {\r\n instance.fireDeltaDelegates(deltaObject);\r\n return;\r\n }\r\n\r\n\r\n }\r\n\r\n this.fireILDelegates = function (delegates, changes) {\r\n if (!instance._isInitiallyLoaded()) return;\r\n for (s in delegates) {\r\n if (_firedDelegates[s] === undefined) {//only fire if not already fired for this object\r\n _firedDelegates[s] = s;\r\n delegates[s].call(this, obj, changes);\r\n }\r\n }\r\n }\r\n\r\n //methods\r\n this.resetFiredDelegates = function (delegate) {\r\n _firedDelegates = [];\r\n _delegates = {};\r\n };\r\n this.addDelegate = function (delegate) {\r\n _delegates[++delegateId] = delegate;\r\n return delegateId;\r\n };\r\n this.removeDelegate = function (delegateIndex) {\r\n delete _delegates[delegateIndex];\r\n };\r\n\r\n this.updateObject = function (changes) {\r\n var deltaObject = {};\r\n //do changes here\r\n for (var deli in _delegates) {\r\n _delegates[deli].call(null, this, deltaObject);\r\n }\r\n }\r\n\r\n this.fireDeltaDelegates = function (deltaObject) {\r\n for (var deli in _delegates) {\r\n _delegates[deli].call(null, obj, deltaObject);\r\n }\r\n }\r\n this.getDelegateCount = function () {\r\n var count = 0;\r\n for (var deli in _delegates) {\r\n count++;\r\n }\r\n return count;\r\n }\r\n };\r\n return gec;\r\n}(window.gec || {}));\r\n","window.gec.gecUnseal(); // prevent access to private props\r\nwindow.gec = (function (gec) {\r\n /************************\r\n 1.Sealer\r\n 2.Methods Definitions\r\n 3.Object/Enum Definitions\r\n\r\n ***********************/\r\n\r\n //this is how we handle private properties over different files\r\n var gecPrivate = gec.gecPrivate = gec.gecPrivate || {},\r\n gecSeal = gec.gecSeal = gec.gecSeal || function () {\r\n delete gec.gecPrivate;\r\n delete gec.gecSeal;\r\n delete gec.gecUnseal;\r\n },\r\n gecUnseal = gec.gecUnseal = gec.gecUnseal || function () {\r\n gec.gecPrivate = gecPrivate;\r\n gec.gecSeal = gecSeal;\r\n gec.gecUnseal = gecUnseal;\r\n },\r\n _deletedOrderIds = {},\r\n _overlays = [],\r\n exchangeEventTabs = {},\r\n subscribedExchangeEventTabs = {};\r\n\r\n var listOrdersChangedSinceXHR, getExchangePricesXHR;\r\n var _eventsMarkets = {};\r\n\r\n var _fillEvents = function (evenId) {\r\n var arrayOfEvents = [];\r\n var eventI = 0;\r\n for (ev in gecPrivate._eventClassifiers) {\r\n if (gecPrivate._eventClassifiers[ev]._parentEventClassifierId == evenId) {\r\n arrayOfEvents[eventI++] = gecPrivate._eventClassifiers[ev];\r\n }\r\n }\r\n arrayOfEvents.sort(gec.SortOnDisplayOrder);\r\n return arrayOfEvents;\r\n };\r\n\r\n var _onBlankInfo = function (wcm, headerMatches, bodyObject) {\r\n alert(\"_onBlankInfo\" + wcm.getHeader());\r\n };\r\n var getOrCreateSubscribedSelection = function (selectionId) {\r\n return gecPrivate._subscribedExchangeSelection[selectionId] = gecPrivate._subscribedExchangeSelection[selectionId] || new gec.SubscribedExchangeSelection();\r\n };\r\n var getOrCreateSubscribedMarket = function (marketId) {\r\n return gecPrivate._subscribedExchangeMarket[marketId] = gecPrivate._subscribedExchangeMarket[marketId] || new gec.SubscribedExchangeMarket();\r\n };\r\n var getOrCreateSubscribedEvent = function (eventId) {\r\n return gecPrivate._subscribedExchangeEvent[eventId] = gecPrivate._subscribedExchangeEvent[eventId] || new gec.SubscribedExchangeEvent();\r\n };\r\n var getOrCreateSubscribedEventTabs = function (eventId) {\r\n return subscribedExchangeEventTabs[eventId] = subscribedExchangeEventTabs[eventId] || new gec.SubscribedExchangeEventTab();\r\n };\r\n var getOrCreateEventTabs = function (eventId) {\r\n return exchangeEventTabs[eventId] = exchangeEventTabs[eventId] || new gec.SubscribedExchangeEventTab();\r\n };\r\n\r\n\r\n var _onSetAnonymousSessionContext = function (webClientMessage, headerMatches, bodyObject) {\r\n if (gecPrivate._debug) { gecPrivate._base.log(\"_onSetAnonymousSessionContext\"); }\r\n var correlationId = bodyObject.correlationId;\r\n var returnCode = bodyObject.returnCode;\r\n\r\n gecPrivate._anonSet = true;\r\n if (returnCode == 0)\r\n gecPrivate._correlationData[correlationId].callbackOnSuccess.call(this, {});\r\n else\r\n gecPrivate._correlationData[correlationId].callbackOnException.call(this, new gec.AsyncException({ returnCode: returnCode }));\r\n\r\n };\r\n var _onLogonPunter = function (webClientMessage, headerMatches, bodyObject) {\r\n if (gecPrivate._debug) { gecPrivate._base.log(\"_onLogonPunter\"); }\r\n var correlationId = bodyObject[0] * 1;\r\n var returnCode = bodyObject[1] * 1;\r\n\r\n gecPrivate.removeFromPushMessages(correlationId);\r\n\r\n gecPrivate._anonSet = false;\r\n if (returnCode != 0) {\r\n // Log the error \r\n\r\n gecPrivate.clientLogger.logClientEntry({\r\n clientLogEntryType: 3,\r\n componentName: \"application\",\r\n subcomponentName: \"push\",\r\n logEntry: \"Diffusion: logonPunter error: \" + returnCode\r\n });\r\n\r\n if (gecPrivate._correlationData[correlationId].callbackOnException != null) {\r\n gecPrivate._correlationData[correlationId].callbackOnException.call(this, new gec.AsyncException({ returnCode: returnCode, name: gec.getReturnCodeName(returnCode) }));\r\n }\r\n } else {\r\n gecPrivate.userContextAAPI = {\r\n debitSportsbookStake: bodyObject[2],\r\n debitExchangeStake: bodyObject[3],\r\n purseIntegrationMode: bodyObject[4],\r\n canPlaceForSideOrders: bodyObject[5],\r\n canPlaceAgainstSideOrders: bodyObject[6],\r\n restrictedToFillKillOrders: bodyObject[7],\r\n currency: bodyObject[8],\r\n language: bodyObject[9],\r\n priceFormat: bodyObject[10],\r\n marketByVolumeAmount: bodyObject[11],\r\n isRetailPunter: bodyObject[12],\r\n maximumMessageSize: bodyObject[14]\r\n };\r\n\r\n gecPrivate._aapiSessionToken = bodyObject[13];\r\n\r\n if (gecPrivate._correlationData[correlationId].callbackOnSuccess != null) {\r\n gecPrivate._correlationData[correlationId].callbackOnSuccess.call(this, { correlationId: correlationId, userContext: gecPrivate.userContextAAPI });\r\n }\r\n }\r\n };\r\n\r\n var _onLogoffPunter = function (webClientMessage, headerMatches, bodyObject) {\r\n if (gecPrivate._debug) { gecPrivate._base.log(\"_onLogoffPunter\"); }\r\n var correlationId = webClientMessage.getFields(0)[1];\r\n var returnCode = webClientMessage.getFields(1)[1];\r\n\r\n gecPrivate._aapiSessionToken = null;\r\n if (returnCode != 0) {\r\n if (gecPrivate._correlationData[correlationId].callbackOnException != null)\r\n gecPrivate._correlationData[correlationId].callbackOnException.call(this, new gec.AsyncException({ returnCode: returnCode, name: gec.getReturnCodeName(returnCode) }));\r\n } else {\r\n if (gecPrivate._correlationData[correlationId].callbackOnSuccess != null)\r\n gecPrivate._correlationData[correlationId].callbackOnSuccess.call(this, { correlationId: correlationId });\r\n\r\n\r\n }\r\n };\r\n\r\n var _onUnsubscribe = function (webClientMessage, headerMatches, bodyObject) {\r\n //alert(\"_onUnsubscribe\");\r\n var correlationId = bodyObject[0] * 1;\r\n var returnCode = bodyObject[1] * 1;\r\n\r\n gecPrivate.removeFromPushMessages(correlationId);\r\n\r\n if (returnCode == 0) {\r\n\r\n //todo go through all the subscriptionIds and delete and items with interest <=0 ;\r\n var subIds = gecPrivate._correlationData[correlationId].subscriptionIds;\r\n if (subIds != null) {\r\n for (var i = 0; i < subIds.length; i++) {\r\n var subId = subIds[i];\r\n if (gecPrivate._subscriptions[subId] == null)\r\n gecPrivate._subscriptions[subId] = {};\r\n }\r\n }\r\n\r\n gecPrivate._correlationData[correlationId].callbackOnSuccess.call(this, { correlationId: correlationId });\r\n }\r\n else {\r\n if (returnCode == null)\r\n returnCode = 2;\r\n gecPrivate._correlationData[correlationId].callbackOnException.call(this, new gec.AsyncException({ returnCode: returnCode, name: gec.getReturnCodeName(returnCode) }));\r\n }\r\n };\r\n\r\n //General Application Commands\r\n var _onPing = function (webClientMessage, headerMatches, bodyObject) {\r\n\r\n //todo performance logs here\r\n var correlationId = bodyObject[0] * 1;\r\n var returnCode = bodyObject[1] * 1;\r\n\r\n gecPrivate.removeFromPushMessages(correlationId);\r\n\r\n if (returnCode != 0) {\r\n\r\n\r\n gecPrivate.clientLogger.logClientEntry({\r\n clientLogEntryType: 3,\r\n componentName: \"application\",\r\n subcomponentName: \"push\",\r\n logEntry: \"Diffusion: Ping error: \" + returnCode\r\n });\r\n\r\n\r\n alert(\"PUSH ping error:\" + returnCode);\r\n }\r\n\r\n var request = gecPrivate._correlationData[correlationId];\r\n messagesInQueue = bodyObject[2];\r\n var curTime = new Date();\r\n var lastTime = gecPrivate._base.jsDate(request.currentClientTime);\r\n gecPrivate._lastPingedAt = lastTime.toISOString();\r\n gecPrivate._lastPingRoundtripMS = curTime - lastTime;\r\n _connectionHealth = gecPrivate._lastPingRoundtripMS;\r\n\r\n for (var i in gecPrivate._connectionHealthChangeDelegates) {\r\n gecPrivate._connectionHealthChangeDelegates[i].call(this, _connectionHealth);\r\n }\r\n\r\n\r\n bodyObject.currentClientTime = curTime;\r\n\r\n gecPrivate.clientLogger.logClientEntry({\r\n clientLogEntryType: 3,\r\n componentName: \"application\",\r\n subcomponentName: \"push\",\r\n logEntry: \"Ping Response: \" + JSON.stringify(bodyObject)\r\n });\r\n\r\n if (returnCode === 0) {\r\n if (gecPrivate._correlationData[correlationId].callbackOnSuccess) {\r\n gecPrivate._correlationData[correlationId].callbackOnSuccess.call(this, { correlationId: correlationId });\r\n }\r\n\r\n } else {\r\n\r\n if (gecPrivate._correlationData[correlationId].callbackOnException) {\r\n gecPrivate._correlationData[correlationId].callbackOnException.call(this, new gec.AsyncException({ returnCode: returnCode, name: gec.getReturnCodeName(returnCode || 2) }));\r\n }\r\n }\r\n\r\n\r\n };\r\n\r\n\r\n var _onSubscribeMarketInformation = function (webClientMessage, headerMatches, bodyObject) {\r\n try {\r\n var correlationId = bodyObject[0] * 1,\r\n returnCode = bodyObject[1] * 1,\r\n subscriptionId = bodyObject[2] * 1,\r\n thisSubscription = gecPrivate._subscriptions[subscriptionId] = gecPrivate._subscriptions[subscriptionId] || {};\r\n\r\n thisSubscription.correlationId = correlationId;\r\n thisSubscription.params = gecPrivate._correlationData[correlationId];\r\n\r\n if (returnCode === 0) {\r\n var response = { correlationId: correlationId };\r\n if (subscriptionId != null) response.subscriptionId = subscriptionId;\r\n if (bodyObject[3] != null) { response.marketIds = bodyObject[3].split(\"~\"); }\r\n\r\n gecPrivate._correlationData[correlationId].callbackOnSuccess.call(this, response);\r\n }\r\n else {\r\n gecPrivate._correlationData[correlationId].callbackOnException.call(this, new gec.AsyncException({ returnCode: returnCode, name: gec.getReturnCodeName(returnCode) }));\r\n }\r\n\r\n } catch (e) {\r\n throw new Error(\"_onSubscribeMarketInformation error:\" + e.message);\r\n alert(\"_onSubscribeMarketInformation error:\" + e.message);\r\n }\r\n };\r\n var _onMarket1 = function (webClientMessage, headerMatches, bodyObject) {\r\n var marketId = headerMatches[2] * 1,\r\n thisMarket = getOrCreateSubscribedMarket(marketId);\r\n thisMarket.genericId = marketId;\r\n thisMarket.displayOrder = bodyObject.displayOrder * 1;\r\n thisMarket.eventClassifierId = headerMatches[1] * 1;\r\n\r\n thisMarket.prototype.fireILDelegates(gecPrivate._subscribedExchangeMarketILDelegates);\r\n };\r\n var _onEvent1 = function (webClientMessage, headerMatches, bodyObject) {\r\n var eventId = headerMatches[1] * 1,\r\n thisEvent = getOrCreateSubscribedEvent(eventId);\r\n\r\n thisEvent.displayOrder = bodyObject.displayOrder;\r\n\r\n thisEvent.eventClassifierId = eventId;\r\n thisEvent.genericId = eventId;\r\n\r\n thisEvent.prototype.fireILDelegates(gecPrivate._subscribedExchangeEventILDelegates);\r\n };\r\n\r\n var _onLanguage2 = function (webClientMessage, headerMatches, bodyObject) {\r\n var eventId = headerMatches[1] * 1,\r\n thisEvent = getOrCreateSubscribedEvent(eventId);\r\n\r\n thisEvent.genericName = bodyObject.name;\r\n thisEvent.raceGrade = bodyObject.raceGrade;\r\n\r\n thisEvent.prototype.fireILDelegates(gecPrivate._subscribedExchangeEventILDelegates);\r\n thisEvent.prototype.fireDeltaDelegates({ genericName: bodyObject.name, raceGrade: bodyObject.raceGrade });\r\n };\r\n var _onLanguage4 = function (webClientMessage, headerMatches, bodyObject) {\r\n var eventId = headerMatches[1] * 1,\r\n thisEvent = getOrCreateSubscribedEvent(eventId);\r\n\r\n thisEvent.name = bodyObject.name;\r\n\r\n thisEvent.prototype.fireILDelegates(gecPrivate._subscribedExchangeEventILDelegates);\r\n thisEvent.prototype.fireDeltaDelegates({ name: bodyObject.name });\r\n };\r\n var _onLanguage7 = function (webClientMessage, headerMatches, bodyObject) {\r\n var marketId = headerMatches[1] * 1,\r\n thisMarket = getOrCreateSubscribedMarket(marketId);\r\n\r\n thisMarket.genericName = bodyObject.name;\r\n thisMarket.prototype.fireILDelegates(gecPrivate._subscribedExchangeMarketILDelegates);\r\n };\r\n\r\n var _onEExchangeInfo = function (webClientMessage, headerMatches, bodyObject) {\r\n var eventId = headerMatches[1] * 1,\r\n thisEvent = getOrCreateSubscribedEvent(eventId);\r\n\r\n thisEvent.eventClassifierId = eventId;\r\n thisEvent.isEnabledForMultiples = bodyObject.isEnabledForMultiples;\r\n\r\n thisEvent.prototype.fireILDelegates(gecPrivate._subscribedExchangeEventILDelegates);\r\n };\r\n var _onTaggedValue1 = function (webClientMessage, headerMatches, bodyObject) {\r\n var eventId = headerMatches[1] * 1,\r\n taggedName = headerMatches[2],\r\n thisEvent = getOrCreateSubscribedEvent(eventId);\r\n\r\n thisEvent.taggedValues = thisEvent.taggedValues || {};\r\n thisEvent.taggedValues[taggedName] = bodyObject.value;\r\n\r\n thisEvent.prototype.fireILDelegates(gecPrivate._subscribedExchangeEventILDelegates);\r\n\r\n var changes = { taggedValues: {} };\r\n changes.taggedValues[taggedName] = bodyObject.value;\r\n\r\n thisEvent.prototype.fireDeltaDelegates(changes);\r\n };\r\n var _onTaggedValue2 = function (webClientMessage, headerMatches, bodyObject) {\r\n var marketId = headerMatches[1] * 1,\r\n thisMarket = getOrCreateSubscribedMarket(marketId),\r\n taggedName = headerMatches[2];\r\n\r\n thisMarket.taggedValues = thisMarket.taggedValues || {};\r\n thisMarket.taggedValues[taggedName] = bodyObject.value;\r\n\r\n thisMarket.prototype.fireILDelegates(gecPrivate._subscribedExchangeMarketILDelegates);\r\n var changes = { taggedValues: {} };\r\n changes.taggedValues[taggedName] = bodyObject.value;\r\n\r\n thisMarket.prototype.fireDeltaDelegates(changes);\r\n\r\n };\r\n var _onTab = function (webClientMessage, headerMatches, bodyObject) {\r\n var eventId = headerMatches[1] * 1,\r\n tabId = headerMatches[2] * 1,\r\n thisEventTabs = getOrCreateSubscribedEventTabs(eventId),\r\n m;\r\n if (bodyObject.displayOrder !== undefined) {\r\n bodyObject.displayOrder = bodyObject.displayOrder * 1;\r\n }\r\n if (bodyObject.numberOfMarketsToExpand !== undefined) {\r\n bodyObject.numberOfMarketsToExpand = bodyObject.numberOfMarketsToExpand * 1;\r\n }\r\n if (bodyObject.marketIds !== undefined) {\r\n bodyObject.marketIds = bodyObject.marketIds.split(\"~\");\r\n for (m = 0; m < bodyObject.marketIds.length; m = m + 1) {\r\n bodyObject.marketIds[m] = bodyObject.marketIds[m] * 1;\r\n }\r\n thisEventTabs.addTab(tabId, bodyObject);\r\n } else {\r\n thisEventTabs.removeTab(tabId);\r\n }\r\n\r\n };\r\n var _onLanguage14 = function (webClientMessage, headerMatches, bodyObject) {\r\n var eventId = headerMatches[1] * 1,\r\n tabId = headerMatches[2] * 1,\r\n thisEventTabs = getOrCreateSubscribedEventTabs(eventId);\r\n\r\n thisEventTabs.addTab(tabId, bodyObject);\r\n };\r\n\r\n var _onMExchangeInfo = function (webClientMessage, headerMatches, bodyObject) {\r\n var marketId = headerMatches[1] * 1,\r\n thisMarket = getOrCreateSubscribedMarket(marketId),\r\n hasChanges = false;\r\n\r\n if (((bodyObject.status != null) && (thisMarket.status != bodyObject.status)) ||\r\n ((bodyObject.isCurrentlyInRunning != null) && (thisMarket.isCurrentlyInRunning != bodyObject.isCurrentlyInRunning)) ||\r\n ((bodyObject.managedWhenInrunning != null) && (thisMarket.managedWhenInrunning != bodyObject.managedWhenInrunning)) ||\r\n ((bodyObject.canBeInRunning != null) && (thisMarket.canBeInRunning != bodyObject.canBeInRunning)) ||\r\n ((bodyObject.isEnabledForMultiples != null) && (thisMarket.isEnabledForMultiples != bodyObject.isEnabledForMultiples))) {\r\n hasChanges = true;\r\n }\r\n bodyObject.numberOfSelections = bodyObject.numberOfSelections * 1;\r\n if (bodyObject.bettingTypeId !== undefined) {\r\n bodyObject.bettingTypeId = bodyObject.bettingTypeId * 1;\r\n }\r\n\r\n for (var k in bodyObject) {\r\n thisMarket[k] = bodyObject[k];\r\n }\r\n thisMarket.marketType = thisMarket.marketType * 1;\r\n\r\n thisMarket.displayOrder = thisMarket.displayOrder * 1;\r\n thisMarket.marketId = marketId;\r\n\r\n if (bodyObject.bOGAvailable != undefined) {//optional\r\n thisMarket.bOGAvailable = bodyObject.bOGAvailable;\r\n hasChanges = true;\r\n }\r\n if (bodyObject.numberWinningPlaces != undefined) {//optional\r\n thisMarket.numberWinningPlaces = bodyObject.numberWinningPlaces * 1;\r\n hasChanges = true;\r\n }\r\n if (bodyObject.placeFraction != undefined) {//optional\r\n thisMarket.placeFraction = bodyObject.placeFraction;\r\n hasChanges = true;\r\n }\r\n\r\n if (bodyObject.startTime != null) {//optional\r\n thisMarket.startTime = bodyObject.startTime;\r\n }\r\n if (bodyObject.delayFactor != null) {//optional\r\n thisMarket.delayFactor = bodyObject.delayFactor * 1;\r\n }\r\n\r\n if (bodyObject.numberOfWinningSelections != null) {//optional\r\n thisMarket.numberOfWinningSelections = bodyObject.numberOfWinningSelections * 1;\r\n }\r\n if (bodyObject.withdrawalSequenceNumber != null) {//optional\r\n thisMarket.withdrawalSequenceNumber = bodyObject.withdrawalSequenceNumber * 1;\r\n }\r\n if (bodyObject.resultString != null) {//optional\r\n thisMarket.resultString = bodyObject.resultString;\r\n }\r\n thisMarket.prototype.fireILDelegates(gecPrivate._subscribedExchangeMarketILDelegates);\r\n\r\n if (!webClientMessage.isInitialTopicLoad() || hasChanges) {\r\n thisMarket.prototype.fireDelegates(gecPrivate._subscribedExchangeMarketILDelegates, webClientMessage, bodyObject);\r\n }\r\n\r\n };\r\n\r\n var _onCurrency3 = function (webClientMessage, headerMatches, bodyObject) {\r\n\r\n var marketId = headerMatches[1] * 1;\r\n var hasChanges = false;\r\n\r\n var thisSubscribedMatchedAmount = gecPrivate._subscribedExchangeMarketMatchedAmount[marketId] = gecPrivate._subscribedExchangeMarketMatchedAmount[marketId] || new gec.SubscribedExchangeMarketMatchedAmount();\r\n\r\n thisSubscribedMatchedAmount.marketId = marketId;\r\n if ((bodyObject.forSideAmount * 1) != thisSubscribedMatchedAmount.forSideAmount) {\r\n thisSubscribedMatchedAmount.forSideAmount = bodyObject.forSideAmount * 1;\r\n hasChanges = true;\r\n }\r\n if ((bodyObject.againstSideAmount * 1) != thisSubscribedMatchedAmount.againstSideAmount) {\r\n thisSubscribedMatchedAmount.againstSideAmount = bodyObject.againstSideAmount * 1;\r\n hasChanges = true;\r\n }\r\n\r\n thisSubscribedMatchedAmount.prototype.fireILDelegates(gecPrivate._subscribedExchangeMarketMatchedAmountILDelegate);\r\n\r\n if (!webClientMessage.isInitialTopicLoad() || hasChanges) {\r\n thisSubscribedMatchedAmount.prototype.fireDeltaDelegates(bodyObject);\r\n }\r\n };\r\n\r\n var _onLanguage3 = function (webClientMessage, headerMatches, bodyObject) {\r\n var marketId = headerMatches[1] * 1,\r\n thisMarket = getOrCreateSubscribedMarket(marketId),\r\n hasChanges = false;\r\n\r\n gecPrivate._subscribedExchangeMarket[marketId].name = bodyObject.name;\r\n if (bodyObject.description != null)//optional\r\n gecPrivate._subscribedExchangeMarket[marketId].description = bodyObject.description;\r\n if (bodyObject.marketBlurb != null)//optional\r\n gecPrivate._subscribedExchangeMarket[marketId].marketBlurb = bodyObject.marketBlurb;\r\n\r\n gecPrivate._subscribedExchangeMarket[marketId].prototype.fireILDelegates(gecPrivate._subscribedExchangeMarketILDelegates);\r\n if (!webClientMessage.isInitialTopicLoad() || hasChanges) {\r\n gecPrivate._subscribedExchangeMarket[marketId].prototype.fireDeltaDelegates(bodyObject);\r\n }\r\n\r\n };\r\n var _onSelection1 = function (webClientMessage, headerMatches, bodyObject) {\r\n\r\n var marketId = headerMatches[1] * 1;\r\n var selectionId = headerMatches[2] * 1;\r\n\r\n var thisSubscribedExchangeSelection = getOrCreateSubscribedSelection(selectionId);\r\n\r\n thisSubscribedExchangeSelection.displayOrder = bodyObject.displayOrder * 1;\r\n thisSubscribedExchangeSelection.marketId = marketId;\r\n if (bodyObject.selectionIcon != null)\r\n thisSubscribedExchangeSelection.selectionIcon = bodyObject.selectionIcon;\r\n\r\n thisSubscribedExchangeSelection.prototype.fireILDelegates(gecPrivate._subscribedExchangeSelectionILDelegate);\r\n if (!webClientMessage.isInitialTopicLoad()) {\r\n thisSubscribedExchangeSelection.prototype.fireDeltaDelegates(bodyObject);\r\n }\r\n\r\n };\r\n var _onLanguage5 = function (webClientMessage, headerMatches, bodyObject) {\r\n\r\n var marketId = headerMatches[1] * 1;\r\n var selectionId = headerMatches[2] * 1;\r\n\r\n var thisSubscribedExchangeSelection = gecPrivate._subscribedExchangeSelection[selectionId] = gecPrivate._subscribedExchangeSelection[selectionId] || new gec.SubscribedExchangeSelection();\r\n\r\n thisSubscribedExchangeSelection.name = bodyObject.name;\r\n\r\n thisSubscribedExchangeSelection.prototype.fireILDelegates(gecPrivate._subscribedExchangeSelectionILDelegate);\r\n if (!webClientMessage.isInitialTopicLoad()) {\r\n thisSubscribedExchangeSelection.prototype.fireDeltaDelegates(bodyObject);\r\n }\r\n\r\n };\r\n var _onSExchangeInfo = function (webClientMessage, headerMatches, bodyObject) {\r\n var selectionId = headerMatches[1] * 1;\r\n var thisSubscribedExchangeSelection = gecPrivate._subscribedExchangeSelection[selectionId] = gecPrivate._subscribedExchangeSelection[selectionId] || new gec.SubscribedExchangeSelection();\r\n\r\n for (var k in bodyObject) {\r\n thisSubscribedExchangeSelection[k] = bodyObject[k];\r\n }\r\n\r\n if (bodyObject.selectionId != undefined)\r\n thisSubscribedExchangeSelection.selectionId = bodyObject.selectionId * 1;\r\n\r\n if (bodyObject.selectionResetCount != undefined)\r\n thisSubscribedExchangeSelection.selectionResetCount = bodyObject.selectionResetCount * 1;\r\n\r\n if (bodyObject.status != undefined)\r\n thisSubscribedExchangeSelection.withdrawalFactor = bodyObject.status * 1;\r\n\r\n if (bodyObject.withdrawalFactor != undefined)//optional\r\n thisSubscribedExchangeSelection.withdrawalFactor = bodyObject.withdrawalFactor * 1;\r\n\r\n if (bodyObject.settledTime != undefined)//optional\r\n thisSubscribedExchangeSelection.settledTime = bodyObject.settledTime;\r\n\r\n if (bodyObject.resultString != undefined)//optional\r\n thisSubscribedExchangeSelection.resultString = bodyObject.resultString;\r\n\r\n if (bodyObject.voidPercentage != undefined)//optional\r\n thisSubscribedExchangeSelection.voidPercentage = bodyObject.voidPercentage;\r\n\r\n if (bodyObject.leftSideFactor != undefined)//optional\r\n thisSubscribedExchangeSelection.leftSideFactor = bodyObject.leftSideFactor;\r\n\r\n if (bodyObject.rightSideFactor != undefined)//optional\r\n thisSubscribedExchangeSelection.rightSideFactor = bodyObject.rightSideFactor;\r\n\r\n thisSubscribedExchangeSelection.prototype.fireILDelegates(gecPrivate._subscribedExchangeSelectionILDelegate);\r\n if (!webClientMessage.isInitialTopicLoad()) {\r\n thisSubscribedExchangeSelection.prototype.fireDeltaDelegates(bodyObject);\r\n }\r\n\r\n };\r\n var _onSelectionblurb = function (webClientMessage, headerMatches, bodyObject) {\r\n var selectionId = headerMatches[1] * 1;\r\n var thisSubscribedExchangeSelection = getOrCreateSubscribedSelection(selectionId);\r\n\r\n for (var k in bodyObject) {\r\n thisSubscribedExchangeSelection[k] = bodyObject[k];\r\n }\r\n\r\n };\r\n var _onLanguage6 = function (webClientMessage, headerMatches, bodyObject) {\r\n\r\n var marketId = headerMatches[1] * 1;\r\n var selectionId = headerMatches[2] * 1;\r\n\r\n var thisSubscribedExchangeSelection = getOrCreateSubscribedSelection(selectionId);\r\n\r\n thisSubscribedExchangeSelection.name = bodyObject.name;\r\n thisSubscribedExchangeSelection.selectionBlurb = bodyObject.selectionBlurb;\r\n\r\n thisSubscribedExchangeSelection.prototype.fireILDelegates(gecPrivate._subscribedExchangeSelectionILDelegate);\r\n if (!webClientMessage.isInitialTopicLoad()) {\r\n thisSubscribedExchangeSelection.prototype.fireDeltaDelegates(bodyObject);\r\n }\r\n };\r\n\r\n var _marketPrices = {};\r\n\r\n var _onBackLayVolumeCurrencyOddsFormat = function (webClientMessage, headerMatches, bodyObject) {\r\n\r\n var marketId = headerMatches[1] * 1;\r\n var numberBackPrices = headerMatches[2] * 1;\r\n var numberLayPrices = headerMatches[3] * 1;\r\n var marketByVolume = headerMatches[4] * 1;\r\n var currency = headerMatches[5];\r\n var priceFormatId = headerMatches[6];\r\n\r\n if ((_marketPrices[marketId] == null) || webClientMessage.isInitialTopicLoad()) {\r\n _marketPrices[marketId] = {};\r\n }\r\n\r\n for (var i in bodyObject[1]) {\r\n var selectionId = bodyObject[1][i].selectionId * 1;\r\n var selectionPriceKey = selectionId + \"_\" + marketByVolume + \"_\" + currency + \"_\" + priceFormatId;\r\n\r\n\r\n if ((gecPrivate._subscribedExchangeSelectionPrices[selectionPriceKey] == null) || webClientMessage.isInitialTopicLoad() || (_marketPrices[marketId][selectionId] == null)) {\r\n gecPrivate._subscribedExchangeSelectionPrices[selectionPriceKey] = new gec.SubscribedExchangeSelectionPrices();\r\n delete gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey];\r\n }\r\n\r\n var thisSelectionPrices = gecPrivate._subscribedExchangeSelectionPrices[selectionPriceKey];\r\n\r\n\r\n if ((gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey] == null) || webClientMessage.isInitialTopicLoad() || (_marketPrices[marketId][selectionId] == null)) {\r\n gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey] = new gec.SubscribedExchangeSelectionPrices();\r\n gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey].layPrices = {};\r\n gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey].backPrices = {};\r\n }\r\n\r\n _marketPrices[marketId][selectionId] = true; //only null on inital load\r\n\r\n thisSelectionPrices.selectionId = selectionId;\r\n thisSelectionPrices.marketId = marketId;\r\n\r\n for (var k in bodyObject[1][i][2]) {//backPrices\r\n var bPrice = bodyObject[1][i][2][k];\r\n var displayPrice = bPrice.displayPrice.split(\"/\");\r\n displayPrice = (displayPrice.length > 1) ? displayPrice[0] / displayPrice[1] : displayPrice[0];\r\n var priceIndex = eval(bPrice.displayPrice); // displayPrice * 1;\r\n\r\n if (bPrice.stake == undefined)\r\n delete gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey].backPrices[priceIndex];\r\n else\r\n gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey].backPrices[priceIndex] = bPrice;\r\n }\r\n\r\n thisSelectionPrices.backPrices = [];\r\n for (var p in gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey].backPrices) {\r\n thisSelectionPrices.backPrices[thisSelectionPrices.backPrices.length] = gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey].backPrices[p];\r\n }\r\n thisSelectionPrices.backPrices.sort(function (a, b) {\r\n //check if fractional\r\n var aPrice = 0, bPrice = 0;\r\n aPrice = eval(a.displayPrice);\r\n bPrice = eval(b.displayPrice);\r\n\r\n return aPrice < bPrice ? 1 : -1;\r\n });\r\n\r\n for (k in bodyObject[1][i][3]) {//layPrices\r\n var displayPrice = bodyObject[1][i][3][k].displayPrice.split(\"/\");\r\n displayPrice = (displayPrice.length > 1) ? displayPrice[0] / displayPrice[1] : displayPrice[0];\r\n var priceIndex = eval(bodyObject[1][i][3][k].displayPrice); // displayPrice * 1;\r\n var stake = bodyObject[1][i][3][k].stake;\r\n\r\n if (stake == null)\r\n delete gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey].layPrices[priceIndex];\r\n else\r\n gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey].layPrices[priceIndex] = bodyObject[1][i][3][k];\r\n }\r\n\r\n thisSelectionPrices.layPrices = [];\r\n for (var p in gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey].layPrices) {\r\n thisSelectionPrices.layPrices[thisSelectionPrices.layPrices.length] = gecPrivate._subscribedExchangeSelectionIndexedPrices[selectionPriceKey].layPrices[p];\r\n }\r\n\r\n thisSelectionPrices.layPrices.sort(function (a, b) {\r\n //check if fractional\r\n var aPrice = 0, bPrice = 0;\r\n\r\n aPrice = eval(a.displayPrice);\r\n bPrice = eval(b.displayPrice);\r\n\r\n return aPrice > bPrice ? 1 : -1;\r\n });\r\n\r\n gecPrivate._subscribedExchangeSelectionPrices[selectionPriceKey].prototype.fireILDelegates(gecPrivate._subscribedExchangeSelectionPricesILDelegate);\r\n\r\n if (!webClientMessage.isInitialTopicLoad()) {\r\n gecPrivate._subscribedExchangeSelectionPrices[selectionPriceKey].prototype.fireDeltaDelegates(gecPrivate._subscribedExchangeSelectionPrices[selectionPriceKey], bodyObject);\r\n }\r\n }\r\n\r\n };\r\n\r\n var _onFixedOddsMarketPrices = function (webClientMessage, headerMatches, bodyObject) {\r\n\r\n var marketId = headerMatches[1] * 1;\r\n\r\n var priceFormatId = headerMatches[2];\r\n\r\n for (var i in bodyObject[1]) {\r\n var selectionId = bodyObject[1][i].selectionId * 1;\r\n var selectionPriceKey = selectionId + \"_\" + priceFormatId;\r\n var price = bodyObject[1][i].price;\r\n\r\n if ((gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionPriceKey] == null) || webClientMessage.isInitialTopicLoad()) {\r\n gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionPriceKey] = new gec.SubscribedExchangeSelectionFixedOddsPrices();\r\n }\r\n\r\n //gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionId] = gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionId] || new gec.SubscribedExchangeSelectionFixedOddsPrices();\r\n gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionPriceKey].selectionId = selectionId;\r\n gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionPriceKey].marketId = marketId;\r\n gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionPriceKey].backReferencePrice = price;\r\n //gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionId].selectionId = layReferencePrice;\r\n\r\n gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionPriceKey].prototype.fireILDelegates(gecPrivate._subscribedExchangeSelectionFixedOddsPricesILDelegate);\r\n\r\n if (!webClientMessage.isInitialTopicLoad()) {\r\n gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionPriceKey].prototype.fireDeltaDelegates(gecPrivate._subscribedExchangeSelectionFixedOddsPrices[selectionPriceKey], bodyObject);\r\n }\r\n }\r\n\r\n };\r\n\r\n var _onSubscribeDetailedMarketPrices = function (webClientMessage, headerMatches, bodyObject) {\r\n var correlationId = bodyObject[0] * 1;\r\n var returnCode = bodyObject[1] * 1;\r\n var subscriptionId = bodyObject[2] * 1;\r\n var marketIds = bodyObject[3];\r\n\r\n gecPrivate.removeFromPushMessages(correlationId);\r\n\r\n if (gecPrivate._subscriptions[subscriptionId] == null)\r\n gecPrivate._subscriptions[subscriptionId] = {};\r\n\r\n gecPrivate._subscriptions[subscriptionId].correlationId = correlationId;\r\n gecPrivate._subscriptions[subscriptionId].params = gecPrivate._correlationData[correlationId];\r\n\r\n if (returnCode == 0) {\r\n gecPrivate._correlationData[correlationId].callbackOnSuccess.call(this, { correlationId: correlationId, marketIds: marketIds, subscriptionId: subscriptionId });\r\n }\r\n else {\r\n if (returnCode == null)\r\n returnCode = 2;\r\n gecPrivate._correlationData[correlationId].callbackOnException.call(this, new gec.AsyncException({ returnCode: returnCode, name: gec.getReturnCodeName(returnCode) }));\r\n }\r\n\r\n };\r\n var _onSubscribeFixedOddsMarketPrices = function (webClientMessage, headerMatches, bodyObject) {\r\n\r\n var correlationId = bodyObject[0] * 1;\r\n var returnCode = bodyObject[1] * 1;\r\n var subscriptionId = bodyObject[2] * 1;\r\n var marketIds = bodyObject[3];\r\n\r\n gecPrivate.removeFromPushMessages(correlationId);\r\n\r\n if (gecPrivate._subscriptions[subscriptionId] == null)\r\n gecPrivate._subscriptions[subscriptionId] = {};\r\n\r\n gecPrivate._subscriptions[subscriptionId].correlationId = correlationId;\r\n gecPrivate._subscriptions[subscriptionId].params = gecPrivate._correlationData[correlationId];\r\n\r\n if (returnCode == 0) {\r\n gecPrivate._correlationData[correlationId].callbackOnSuccess.call(this, { correlationId: correlationId, marketIds: marketIds, subscriptionId: subscriptionId });\r\n }\r\n else {\r\n if (returnCode == null)\r\n returnCode = 2;\r\n gecPrivate._correlationData[correlationId].callbackOnException.call(this, new gec.AsyncException({ returnCode: returnCode, name: gec.getReturnCodeName(returnCode) }));\r\n }\r\n };\r\n var _onSubscribeEventHierarchy = function (webClientMessage, headerMatches, bodyObject) {\r\n if (bodyObject.returnCode == 0) {\r\n gecPrivate._correlationData[bodyObject.correlationId * 1].callbackOnSuccess.call(this, { correlationId: bodyObject.correlationId, subscriptionId: bodyObject.subscriptionId });\r\n }\r\n else {\r\n gecPrivate._correlationData[bodyObject.correlationId * 1].callbackOnException.call(this, new gec.AsyncException({ returnCode: bodyObject.returnCode || 2, name: gec.getReturnCodeName(bodyObject.returnCode) }));\r\n }\r\n };\r\n var _onSubscribeCustomHierarchy = function (webClientMessage, headerMatches, bodyObject) {\r\n alert(\"_onSubscribeCustomHierarchy\");\r\n };\r\n var _onSubscribeSelectionMatchedAmounts = function (webClientMessage, headerMatches, bodyObject) {\r\n alert(\"_onSubscribeSelectionMatchedAmounts\");\r\n };\r\n var _onSubscribeMarketMatchedAmounts = function (webClientMessage, headerMatches, bodyObject) {\r\n var correlationId = bodyObject[0] * 1;\r\n var returnCode = bodyObject[1] * 1;\r\n var subscriptionId = bodyObject[2] * 1;\r\n var marketIds = bodyObject[3];\r\n\r\n gecPrivate.removeFromPushMessages(correlationId);\r\n\r\n if (returnCode == 0) {\r\n gecPrivate._correlationData[correlationId].callbackOnSuccess.call(this, { correlationId: correlationId, marketIds: marketIds, subscriptionId: subscriptionId });\r\n }\r\n else {\r\n if (returnCode == null)\r\n returnCode = 2;\r\n gecPrivate._correlationData[correlationId].callbackOnException.call(this, new gec.AsyncException({ returnCode: returnCode, name: gec.getReturnCodeName(returnCode) }));\r\n }\r\n };\r\n var _onSubscribeEventMatchedAmounts = function (webClientMessage, headerMatches, bodyObject) {\r\n alert(\"_onSubscribeEventMatchedAmounts\");\r\n };\r\n\r\n gec.Controller.prototype.subscribeCustomHierarchy = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.eventClassifierId != null) {\r\n request[2] = params.eventClassifierId;\r\n }\r\n\r\n request[3] = params.wantDirectDescendentsOnly;\r\n request[4] = params.wantSelectionInformation;\r\n request[5] = params.fetchOnly;\r\n\r\n if (gecPrivate._debug) { gecPrivate._base.log(\"subscribeCustomHierarchy\"); }\r\n gecPrivate._sendStreamingMessage(63, request);\r\n return correlationId;\r\n };\r\n gec.Controller.prototype.subscribeDetailedMarketPrices = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.eventClassifierId != null) {\r\n request[1] = params.eventClassifierId;\r\n\r\n if (params.marketTypesToExclude != null) {\r\n request[2] = \"\";\r\n\r\n for (var excludeI = 0; excludeI < params.marketTypesToExclude.length; excludeI++) {\r\n request[2] += params.marketTypesToExclude[excludeI] + \"~\";\r\n }\r\n request[2] = request[2].substr(0, request[2].length - 1);\r\n\r\n }\r\n if (params.marketTypesToInclude != null) {\r\n request[3] = \"\";\r\n\r\n for (var includeI = 0; includeI < params.marketTypesToInclude.length; includeI++) {\r\n request[3] += params.marketTypesToInclude[includeI] + \"~\";\r\n }\r\n request[3] = request[3].substr(0, request[3].length - 1);\r\n }\r\n\r\n request[4] = params.wantDirectDescendentsOnly;\r\n } else {\r\n if (params.marketIds != null) {\r\n request[5] = \"\";\r\n\r\n for (var includeI = 0; includeI < params.marketIds.length; includeI++) {\r\n request[5] += params.marketIds[includeI] + \"~\";\r\n }\r\n request[5] = request[5].substr(0, request[5].length - 1);\r\n }\r\n\r\n }\r\n request[6] = params.numberBackPrices;\r\n request[7] = params.numberLayPrices;\r\n request[8] = params.filterByVolume;\r\n request[11] = params.fetchOnly;\r\n\r\n if (gecPrivate._debug) { gecPrivate._base.log(\"subscribeDetailedMarketPrices\"); }\r\n\r\n gecPrivate.addToPushMessages(request);\r\n gecPrivate._sendStreamingMessage(10, request);\r\n return correlationId;\r\n }\r\n\r\n\r\n gec.Controller.prototype.subscribeEventMatchedAmounts = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n request[1] = params.eventClassifierId;\r\n request[2] = params.wantDirectDescendentsOnly;\r\n request[4] = params.fetchOnly;\r\n\r\n gecPrivate._sendStreamingMessage(15, request);\r\n return correlationId;\r\n };\r\n gec.Controller.prototype.subscribeItemNames = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n gecPrivate._sendStreamingMessage(\"subscribeItemNames\", { 1: \"en\", 6: marketIdStr });\r\n\r\n return correlationId;\r\n };\r\n gec.Controller.prototype.subscribeMarketMatchedAmounts = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.eventClassifierId != null) {\r\n request[1] = params.eventClassifierId;\r\n\r\n if (params.marketTypesToExclude != null) {\r\n request[2] = \"\";\r\n\r\n for (var excludeI = 0; excludeI < params.marketTypesToExclude.length; excludeI++) {\r\n request[2] += params.marketTypesToExclude[excludeI] + \"~\";\r\n }\r\n request[2] = request[2].substr(0, request[2].length - 1);\r\n }\r\n if (params.marketTypesToInclude != null) {\r\n request[3] = \"\";\r\n\r\n for (var includeI = 0; includeI < params.marketTypesToInclude.length; includeI++) {\r\n request[3] += params.marketTypesToInclude[includeI] + \"~\";\r\n }\r\n request[3] = request[3].substr(0, request[3].length - 1);\r\n }\r\n\r\n request[4] = params.wantDirectDescendentsOnly;\r\n } else {\r\n if (params.marketIds != null) {\r\n request[5] = \"\";\r\n\r\n for (var includeI = 0; includeI < params.marketIds.length; includeI++) {\r\n request[5] += params.marketIds[includeI] + \"~\";\r\n }\r\n request[5] = request[5].substr(0, request[5].length - 1);\r\n }\r\n\r\n }\r\n request[7] = params.fetchOnly;\r\n\r\n gecPrivate.addToPushMessages(request);\r\n gecPrivate._sendStreamingMessage(14, request);\r\n return correlationId;\r\n };\r\n\r\n gec.Controller.prototype.subscribeOrders = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.eventClassifierId != null) {\r\n request[1] = params.eventClassifierId;\r\n\r\n if (params.marketTypesToExclude != null) {\r\n request[2] = \"\";\r\n\r\n for (var excludeI = 0; excludeI < params.marketTypesToExclude.length; excludeI++) {\r\n request[2] += params.marketTypesToExclude[excludeI] + \"~\";\r\n }\r\n request[2] = request[2].substr(0, request[2].length - 1);\r\n }\r\n if (params.marketTypesToInclude != null) {\r\n request[3] = \"\";\r\n\r\n for (var includeI = 0; includeI < params.marketTypesToInclude.length; includeI++) {\r\n request[3] += params.marketTypesToInclude[includeI] + \"~\";\r\n }\r\n request[3] = request[3].substr(0, request[3].length - 1);\r\n }\r\n\r\n request[4] = params.wantDirectDescendentsOnly;\r\n } else {\r\n if (params.marketIds != null) {\r\n request[5] = \"\";\r\n\r\n for (var includeI = 0; includeI < params.marketIds.length; includeI++) {\r\n request[5] += params.marketIds[includeI] + \"~\";\r\n }\r\n request[5] = request[5].substr(0, request[5].length - 1);\r\n }\r\n\r\n }\r\n request[8] = params.fetchOnly;\r\n\r\n gecPrivate._sendStreamingMessage(10, request);\r\n alert(\"subscribeOrders\");\r\n return correlationId;\r\n };\r\n gec.Controller.prototype.subscribePAndLs = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.eventClassifierId != null) {\r\n request[1] = params.eventClassifierId;\r\n\r\n if (params.marketTypesToExclude != null) {\r\n request[2] = \"\";\r\n\r\n for (var excludeI = 0; excludeI < params.marketTypesToExclude.length; excludeI++) {\r\n request[2] += params.marketTypesToExclude[excludeI] + \"~\";\r\n }\r\n request[2] = request[2].substr(0, request[2].length - 1);\r\n }\r\n if (params.marketTypesToInclude != null) {\r\n request[3] = \"\";\r\n\r\n for (var includeI = 0; includeI < params.marketTypesToInclude.length; includeI++) {\r\n request[3] += params.marketTypesToInclude[includeI] + \"~\";\r\n }\r\n request[3] = request[3].substr(0, request[3].length - 1);\r\n }\r\n\r\n request[4] = params.wantDirectDescendentsOnly;\r\n } else {\r\n if (params.marketIds != null) {\r\n request[5] = \"\";\r\n\r\n for (var includeI = 0; includeI < params.marketIds.length; includeI++) {\r\n request[5] += params.marketIds[includeI] + \"~\";\r\n }\r\n request[5] = request[5].substr(0, request[5].length - 1);\r\n }\r\n\r\n }\r\n request[8] = params.fetchOnly;\r\n\r\n gecPrivate._sendStreamingMessage(10, request);\r\n alert(\"subscribePAndLs\");\r\n return correlationId;\r\n };\r\n\r\n gec.Controller.prototype.subscribePriceHistories = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.eventClassifierId != null) {\r\n request[1] = params.eventClassifierId;\r\n\r\n if (params.marketTypesToExclude != null) {\r\n request[2] = \"\";\r\n\r\n for (var excludeI = 0; excludeI < params.marketTypesToExclude.length; excludeI++) {\r\n request[2] += params.marketTypesToExclude[excludeI] + \"~\";\r\n }\r\n request[2] = request[2].substr(0, request[2].length - 1);\r\n }\r\n if (params.marketTypesToInclude != null) {\r\n request[3] = \"\";\r\n\r\n for (var includeI = 0; includeI < params.marketTypesToInclude.length; includeI++) {\r\n request[3] += params.marketTypesToInclude[includeI] + \"~\";\r\n }\r\n request[3] = request[3].substr(0, request[3].length - 1);\r\n }\r\n\r\n request[4] = params.wantDirectDescendentsOnly;\r\n } else {\r\n if (params.marketIds != null) {\r\n request[5] = \"\";\r\n\r\n for (var includeI = 0; includeI < params.marketIds.length; includeI++) {\r\n request[5] += params.marketIds[includeI] + \"~\";\r\n }\r\n request[5] = request[5].substr(0, request[5].length - 1);\r\n }\r\n\r\n }\r\n if (params.from != null)\r\n request[7] = params.from;\r\n if (params.to != null)\r\n request[8] = params.to;\r\n\r\n request[9] = params.granularity;\r\n request[10] = params.fetchOnly;\r\n\r\n gecPrivate._sendStreamingMessage(19, request);\r\n alert(\"subscribePriceHistories\");\r\n return correlationId;\r\n };\r\n\r\n gec.Controller.prototype.subscribeSelectionMatchedAmounts = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.eventClassifierId != null) {\r\n request[1] = params.eventClassifierId;\r\n\r\n if (params.marketTypesToExclude != null) {\r\n request[2] = \"\"\r\n\r\n for (var excludeI = 0; excludeI < params.marketTypesToExclude.length; excludeI++) {\r\n request[2] += params.marketTypesToExclude[excludeI] + \"~\";\r\n }\r\n request[2] = request[2].substr(0, request[2].length - 1);\r\n }\r\n if (params.marketTypesToInclude != null) {\r\n request[3] = \"\"\r\n\r\n for (var includeI = 0; includeI < params.marketTypesToInclude.length; includeI++) {\r\n request[3] += params.marketTypesToInclude[includeI] + \"~\";\r\n }\r\n request[3] = request[3].substr(0, request[3].length - 1);\r\n }\r\n\r\n request[4] = params.wantDirectDescendentsOnly;\r\n } else {\r\n if (params.marketIds != null) {\r\n request[5] = \"\"\r\n\r\n for (includeI in params.marketIds) {\r\n request[5] += params.marketIds[includeI] + \"~\";\r\n }\r\n request[5] = request[5].substr(0, request[5].length - 1);\r\n }\r\n\r\n }\r\n request[7] = params.fetchOnly;\r\n\r\n gecPrivate._sendStreamingMessage(13, request);\r\n return correlationId;\r\n };\r\n gec.Controller.prototype.subscribeFixedOddsMarketPrices = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.eventClassifierId != null) {\r\n request[1] = params.eventClassifierId;\r\n\r\n if (params.marketTypesToExclude != null) {\r\n request[2] = \"\"\r\n\r\n for (var excludeI = 0; excludeI < params.marketTypesToExclude.length; excludeI++) {\r\n request[2] += params.marketTypesToExclude[excludeI] + \"~\";\r\n }\r\n request[2] = request[2].substr(0, request[2].length - 1);\r\n }\r\n if (params.marketTypesToInclude != null) {\r\n request[3] = \"\"\r\n\r\n for (var includeI = 0; includeI < params.marketTypesToInclude.length; includeI++) {\r\n request[3] += params.marketTypesToInclude[includeI] + \"~\";\r\n }\r\n request[3] = request[3].substr(0, request[3].length - 1);\r\n }\r\n\r\n request[4] = params.wantDirectDescendentsOnly;\r\n } else {\r\n if (params.marketIds != null) {\r\n request[5] = \"\"\r\n\r\n for (var includeI = 0; includeI < params.marketIds.length; includeI++) {\r\n request[5] += params.marketIds[includeI] + \"~\";\r\n }\r\n request[5] = request[5].substr(0, request[5].length - 1);\r\n }\r\n\r\n }\r\n request[8] = params.fetchOnly;\r\n\r\n gecPrivate._sendStreamingMessage(11, request);\r\n return correlationId;\r\n };\r\n gec.Controller.prototype.subscribeTrades = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.eventClassifierId != null) {\r\n request[1] = params.eventClassifierId;\r\n\r\n if (params.marketTypesToExclude != null) {\r\n request[2] = \"\"\r\n\r\n for (var excludeI = 0; excludeI < params.marketTypesToExclude.length; excludeI++) {\r\n request[2] += params.marketTypesToExclude[excludeI] + \"~\";\r\n }\r\n request[2] = request[2].substr(0, request[2].length - 1);\r\n }\r\n if (params.marketTypesToInclude != null) {\r\n request[3] = \"\"\r\n\r\n for (var includeI = 0; includeI < params.marketTypesToInclude.length; includeI++) {\r\n request[3] += params.marketTypesToInclude[includeI] + \"~\";\r\n }\r\n request[3] = request[3].substr(0, request[3].length - 1);\r\n }\r\n\r\n request[4] = params.wantDirectDescendentsOnly;\r\n } else {\r\n if (params.marketIds != null) {\r\n request[5] = \"\"\r\n\r\n for (var includeI = 0; includeI < params.marketIds.length; includeI++) {\r\n request[5] += params.marketIds[includeI] + \"~\";\r\n }\r\n request[5] = request[5].substr(0, request[5].length - 1);\r\n }\r\n\r\n }\r\n if (params.filterAmount != null)\r\n request[7] = params.filterAmount;\r\n if (params.tradesFrom != null)\r\n request[8] = params.tradesFrom;\r\n\r\n request[9] = params.fetchOnly;\r\n\r\n gecPrivate._sendStreamingMessage(18, request);\r\n return correlationId;\r\n };\r\n\r\n gec.Controller.prototype.getEventTab = function (eventId) {\r\n return subscribedExchangeEventTabs[eventId] || exchangeEventTabs[eventId];\r\n };\r\n gec.Controller.prototype.deleteEventTab = function (eventId) {\r\n delete subscribedExchangeEventTabs[eventId];\r\n delete exchangeEventTabs[eventId];\r\n };\r\n\r\n /****************************\r\n loadLocalOrderCache\r\n ****************************/\r\n gec.Controller.prototype.loadLocalOrderCache = function (params) {\r\n gecPrivate._bootstrapFailedAttempts = 0;\r\n gecPrivate._thisController._listBootStrapOrders(params);\r\n };\r\n\r\n gec.Controller.prototype._listBootStrapOrders = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590 });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.callbackOnILCompletion = params.callbackOnILCompletion;\r\n\r\n request.sequenceNumber = gecPrivate._maxSequenceNo;\r\n request.wantSettledOrdersOnUnsettledMarkets = true;\r\n this.sendRequest(\"/ListBootstrapOrders.ashx\", request, _loadLocalOrderCacheResponse);\r\n }\r\n };\r\n var _loadLocalOrderCacheResponse = function (request, response) {\r\n if (gecPrivate._orderCache == null) gecPrivate._orderCache = {};\r\n\r\n if (response.returnCode != 0) {\r\n gecPrivate._bootstrapFailedAttempts = gecPrivate._bootstrapFailedAttempts + 1;\r\n\r\n if (gecPrivate._bootstrapFailedAttempts <= gecPrivate._maxBootstrapFailedAttempts) {\r\n //gecPrivate._thisController.loadLocalOrderCache(request);\r\n gecPrivate._thisController._listBootStrapOrders(request);\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n\r\n }\r\n else {\r\n if (response.orders != null) {\r\n\r\n for (var i = 0; i < response.orders.length; i++) {\r\n if (response.orders[i].status === 5) {\r\n continue; //ignore voided bets\r\n }\r\n response.orders[i].polarityId = response.orders[i].polarity;\r\n\r\n gecPrivate._orderCache[response.orders[i].orderId] = new gec.Order(response.orders[i]);\r\n var orderCacheObject = gecPrivate._orderCache[response.orders[i].orderId];\r\n\r\n var thisOrder = response.orders[i];\r\n\r\n (function (thisOrder, orderCacheObject) {\r\n orderCacheObject.orderId = thisOrder.orderId;\r\n\r\n orderCacheObject.eventClassifierFullName = function () {\r\n return thisOrder.eventClassifierFullName || thisOrder.eventClassifierName;\r\n };\r\n\r\n orderCacheObject.marketId = function () { return thisOrder.marketId; };\r\n orderCacheObject.marketTypeId = function () { return thisOrder.marketType; };\r\n\r\n orderCacheObject.punterReferenceNumber = thisOrder.pnterReferenceNumber;\r\n orderCacheObject.placePayout = function () { return thisOrder.placePayout; };\r\n\r\n orderCacheObject.marketName = function () { return thisOrder.marketName; };\r\n orderCacheObject.selectionId = function () { return thisOrder.selectionId; };\r\n orderCacheObject.selectionName = function () {\r\n return thisOrder.selectionName;\r\n };\r\n orderCacheObject.eventClassifierId = function () {\r\n if (thisOrder.eventClassifierId !== undefined) {\r\n return thisOrder.eventClassifierId;\r\n }\r\n if (gecPrivate._markets[thisOrder.marketId] != null) {\r\n return gecPrivate._markets[thisOrder.marketId].getEventClassifier().eventClassifierId;\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n orderCacheObject.orderStatusId = thisOrder.status;\r\n\r\n orderCacheObject.issuedAt = thisOrder.issuedAt;\r\n\r\n orderCacheObject.expectedSelectionResetCount = thisOrder.expectedSelectionResetCount;\r\n orderCacheObject.expectedWithdrawalSequenceNumber = thisOrder.expectedWithdrawalSequenceNumber;\r\n\r\n // orderCacheObject.lastChangedAt = thisOrder.eventClassifierName;\r\n orderCacheObject.expiresAt = thisOrder.expiresAt;\r\n // orderCacheObject.marketTypeId = thisOrder.eventClassifierName;\r\n // orderCacheObject.marketStatusId = thisOrder.eventClassifierName;\r\n orderCacheObject.requestedStake = thisOrder.matchedStake.amount + thisOrder.unmatchedStake.amount;\r\n orderCacheObject.requestedPrice = thisOrder.requestedPrice;\r\n //orderCacheObject.requestedAveragePrice = thisOrder.eventClassifierName;\r\n //orderCacheObject.expectedSelectionResetCount = thisOrder.eventClassifierName;\r\n //orderCacheObject.expectedWithdrawalSequenceNumber = thisOrder.eventClassifierName;\r\n\r\n orderCacheObject.unmatchedStake = thisOrder.unmatchedStake.amount;\r\n orderCacheObject.averageMatchedPrice = thisOrder.matchedPrice;\r\n orderCacheObject.matchedStake = thisOrder.matchedStake.amount;\r\n orderCacheObject.matchedAgainstStake = thisOrder.matchedAgainstStake.amount;\r\n orderCacheObject.isFreeBet = thisOrder.isFreeBet;\r\n\r\n orderCacheObject.polarityId = thisOrder.polarity;\r\n orderCacheObject.cancelOnInRunning = thisOrder.cancelOnInRunning;\r\n orderCacheObject.cancelIfSelectionReset = thisOrder.cancelIfSelectionReset;\r\n orderCacheObject.sequenceNumber = thisOrder.sequenceNumber;\r\n\r\n orderCacheObject.isCurrentlyInRunning = thisOrder.isCurrentlyInRunning;\r\n orderCacheObject.willBeInRunning = thisOrder.willBeInRunning;\r\n\r\n\r\n orderCacheObject.totalForSideMakeStake = thisOrder.totalForSideMakeStake.amount;\r\n orderCacheObject.totalForSideTakeStake = thisOrder.totalForSideTakeStake.amount;\r\n orderCacheObject.makeCommissionRate = thisOrder.makeCommissionRate;\r\n orderCacheObject.takeCommissionRate = thisOrder.takeCommissionRate;\r\n if (thisOrder.orderFillType)\r\n orderCacheObject.orderFillType = thisOrder.orderFillType;\r\n\r\n\r\n if (thisOrder.orderPAndL != null)\r\n orderCacheObject.orderPAndL = thisOrder.orderPAndL.amount;\r\n\r\n })(thisOrder, orderCacheObject);\r\n\r\n }\r\n gecPrivate._maxSequenceNo = response.orders[response.orders.length - 1].sequenceNumber;\r\n if (gecPrivate._maxSequenceNo < response.maximumSequenceNumber) {//if more to load\r\n //gecPrivate._thisController.loadLocalOrderCache(request);\r\n gecPrivate._thisController._listBootStrapOrders(request);\r\n }\r\n else {//orders full loaded\r\n gecPrivate._maxSequenceNo = response.maximumSequenceNumber;\r\n // Only create the interval if one doesn't already exist\r\n gecPrivate._orderCacheInterval = gecPrivate._orderCacheInterval || window.setTimeout(function () { _listOrdersChangedSince(request) }, gecPrivate.pollChangedOrdersTime);\r\n\r\n\r\n request.callbackOnSuccess.call(this);\r\n\r\n request.callbackOnILCompletion.call(this);\r\n delete request.callbackOnILCompletion;\r\n }\r\n }\r\n else {//orders was null\r\n gecPrivate._maxSequenceNo = response.maximumSequenceNumber || 0;\r\n if (request.callbackOnILCompletion != null)\r\n request.callbackOnILCompletion.call(this);\r\n\r\n // Only create the interval if one doesn't already exist\r\n gecPrivate._orderCacheInterval = gecPrivate._orderCacheInterval || window.setTimeout(function () { _listOrdersChangedSince(request) }, gecPrivate.pollChangedOrdersTime);\r\n request.callbackOnSuccess.call(this);\r\n }\r\n }\r\n };\r\n\r\n /****************************\r\n listOrdersChangedSince\r\n ****************************/\r\n var _listOrdersChangedSince = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n if (gecPrivate.sessionToken === undefined) {\r\n return;\r\n }\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.sequenceNumber = gecPrivate._maxSequenceNo;\r\n gecPrivate._thisController.sendRequest(\"/ListOrdersChangedSince.ashx\", request, _listOrdersChangedSinceResponse, listOrdersChangedSinceXHR);\r\n };\r\n\r\n var _listOrdersChangedSinceResponse = function (request, response) {\r\n window.clearTimeout(gecPrivate._orderCacheInterval)\r\n\r\n gecPrivate._orderCacheInterval = window.setTimeout(function () {\r\n _listOrdersChangedSince(request);\r\n }, gecPrivate.pollChangedOrdersTime);\r\n\r\n var structuralChange = false;\r\n if (gecPrivate.userContext != null) {\r\n var unknownMarketIds = {};\r\n var needMarketInformation = false; //used to call listExchangeMarketInformation\r\n var context = this;\r\n if (response.returnCode != 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n }\r\n if ((response.returnCode == 0) && (response.orders != null)) {\r\n for (var orderi = 0; orderi < response.orders.length; orderi++) {\r\n\r\n if (gecPrivate._orderCache == null) gecPrivate._orderCache = {};\r\n if ((response.orders[orderi].status == 3) && (response.orders[orderi].matchedStake.amount == 0))//cancelled\r\n {\r\n structuralChange = true;\r\n\r\n\r\n if ((gecPrivate._orderCache[response.orders[orderi].orderId] != null) && (gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange != null))\r\n gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange.call(null, { orderId: response.orders[orderi].orderId, order: null });\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId] = null;\r\n delete gecPrivate._orderCache[response.orders[orderi].orderId];\r\n\r\n _deletedOrderIds[response.orders[orderi].orderId] = true;\r\n }\r\n else\r\n if (response.orders[orderi].status == 5)//cancelled or voided\r\n {\r\n structuralChange = true;\r\n\r\n if ((gecPrivate._orderCache[response.orders[orderi].orderId] != null) && (gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange != null))\r\n gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange.call(null, { orderId: response.orders[orderi].orderId, order: null });\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId] = null;\r\n delete gecPrivate._orderCache[response.orders[orderi].orderId];\r\n _deletedOrderIds[response.orders[orderi].orderId] = true;\r\n }\r\n else {\r\n\r\n if (gecPrivate._orderCache[response.orders[orderi].orderId] == null) {\r\n structuralChange = true;\r\n\r\n if (gecPrivate._selections[response.orders[orderi].selectionId] == null) {\r\n gecPrivate._selections[response.orders[orderi].selectionId] = {};\r\n gecPrivate._selections[response.orders[orderi].selectionId].selectionName = \"...\";\r\n\r\n unknownMarketIds[response.orders[orderi].marketId] = response.orders[orderi].marketId;\r\n needMarketInformation = true;\r\n }\r\n\r\n if (gecPrivate._markets[response.orders[orderi].marketId] == null) {\r\n gecPrivate._markets[response.orders[orderi].marketId] = {};\r\n gecPrivate._markets[response.orders[orderi].marketId].marketName = response.orders[orderi].marketName || \"...\";\r\n gecPrivate._markets[response.orders[orderi].marketId].eventClassifier = {};\r\n gecPrivate._markets[response.orders[orderi].marketId].eventClassifier.eventClassifierFullName = response.orders[orderi].eventClassifierFullName;\r\n gecPrivate._markets[response.orders[orderi].marketId].eventClassifier.eventClassifierName = gecPrivate._base.getEventName(response.orders[orderi].eventClassifierFullName);\r\n gecPrivate._markets[response.orders[orderi].marketId].getEventClassifier = function () {\r\n\r\n try {\r\n return gecPrivate._markets[response.orders[orderi].marketId].eventClassifier;\r\n } catch (ex) {\r\n console.warn(\"unkown marketId on order:\", response.orders[orderi]);\r\n }\r\n }\r\n\r\n unknownMarketIds[response.orders[orderi].marketId] = response.orders[orderi].marketId;\r\n needMarketInformation = true;\r\n }\r\n\r\n response.orders[orderi].selectionName = gecPrivate._selections[response.orders[orderi].selectionId].selectionName;\r\n response.orders[orderi].marketName = gecPrivate._markets[response.orders[orderi].marketId].marketName;\r\n //response.orders[orderi].eventClassifierFullName = _markets[response.orders[orderi].marketId].eventClassifier.eventClassifierFullName;\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId] = new gec.Order(response.orders[orderi]);\r\n\r\n var thisOrderForced = response.orders[orderi];\r\n\r\n (function (thisOrderForced) {\r\n gecPrivate._orderCache[thisOrderForced.orderId].selectionName = function () {\r\n return gecPrivate._selections[thisOrderForced.selectionId].selectionName;\r\n };\r\n gecPrivate._orderCache[thisOrderForced.orderId].marketName = function () {\r\n return gecPrivate._markets[thisOrderForced.marketId].marketName;\r\n };\r\n\r\n gecPrivate._orderCache[thisOrderForced.orderId].marketTypeId = function () { return thisOrderForced.marketType; };\r\n\r\n gecPrivate._orderCache[thisOrderForced.orderId].punterReferenceNumber = thisOrderForced.pnterReferenceNumber;\r\n gecPrivate._orderCache[thisOrderForced.orderId].placePayout = function () { return thisOrderForced.placePayout; };\r\n\r\n gecPrivate._orderCache[thisOrderForced.orderId].eventClassifierFullName = function () {\r\n\r\n try {\r\n return thisOrderForced.eventClassifierFullName || gecPrivate._markets[thisOrderForced.marketId].eventClassifier.eventClassifierName || gecPrivate._markets[thisOrderForced.marketId].getEventClassifier().eventClassifierName;\r\n } catch (ex) {\r\n console.warn(\"unknown marketId on order forced:\", thisOrderForced.marketId);\r\n return \"Unknown event\";\r\n }\r\n };\r\n\r\n gecPrivate._orderCache[thisOrderForced.orderId].eventClassifierId = function () {\r\n try {\r\n return thisOrderForced.eventClassifierId || gecPrivate._markets[thisOrderForced.marketId].getEventClassifier().eventClassifierId;\r\n } catch (ex) {\r\n console.warn(\"unknown marketId on order forced:\", thisOrderForced.marketId);\r\n }\r\n }\r\n\r\n })(thisOrderForced);\r\n }\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderId = response.orders[orderi].orderId;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderStatusId = response.orders[orderi].status;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].issuedAt = response.orders[orderi].issuedAt;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expiresAt = response.orders[orderi].expiresAt;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].requestedStake = response.orders[orderi].matchedStake.amount + response.orders[orderi].unmatchedStake.amount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].requestedPrice = response.orders[orderi].requestedPrice;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].isFreeBet = response.orders[orderi].isFreeBet;\r\n\r\n if (response.orders[orderi].matchedStake.amount >= gecPrivate._orderCache[response.orders[orderi].orderId].matchedStake) {\r\n gecPrivate._orderCache[response.orders[orderi].orderId].matchedStake = response.orders[orderi].matchedStake.amount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].unmatchedStake = response.orders[orderi].unmatchedStake.amount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].averageMatchedPrice = response.orders[orderi].matchedPrice;\r\n }\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expectedSelectionResetCount = response.orders[orderi].expectedSelectionResetCount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expectedWithdrawalSequenceNumber = response.orders[orderi].expectedWithdrawalSequenceNumber;\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId].polarityId = response.orders[orderi].polarity ? 1 : 2;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].cancelOnInRunning = response.orders[orderi].cancelOnInRunning;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].cancelIfSelectionReset = response.orders[orderi].cancelIfSelectionReset;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].sequenceNumber = response.orders[orderi].sequenceNumber;\r\n\r\n if (response.orders[orderi].totalForSideMakeStake != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].totalForSideMakeStake = response.orders[orderi].totalForSideMakeStake.amount;\r\n if (response.orders[orderi].totalForSideTakeStake != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].totalForSideTakeStake = response.orders[orderi].totalForSideTakeStake.amount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].requestedPrice = response.orders[orderi].requestedPrice;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].requestedAveragePrice = response.orders[orderi].requestedAveragePrice;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].matchedPrice = response.orders[orderi].matchedPrice;\r\n\r\n if (response.orders[orderi].provisionalMatchedStake != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].provisionalMatchedStake = response.orders[orderi].provisionalMatchedStake.amount;\r\n if (response.orders[orderi].matchedAgainstStake != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].matchedAgainstStake = response.orders[orderi].matchedAgainstStake.amount;\r\n if (response.orders[orderi].provisionalMatchedAgainstStake != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].provisionalMatchedAgainstStake = response.orders[orderi].provisionalMatchedAgainstStake.amount;\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expectedSelectionResetCount = response.orders[orderi].expectedSelectionResetCount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expectedWithdrawalSequenceNumber = response.orders[orderi].expectedWithdrawalSequenceNumber;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderStatusId = response.orders[orderi].status;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expiresAt = response.orders[orderi].expiresAt;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].cancelOnInRunning = response.orders[orderi].cancelOnInRunning;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].cancelIfSelectionReset = response.orders[orderi].cancelIfSelectionReset;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].isCurrentlyInRunning = response.orders[orderi].isCurrentlyInRunning;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].isMarketConfused = response.orders[orderi].isMarketConfused;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].commissionBasis = response.orders[orderi].commissionBasis;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].makeCommissionRate = response.orders[orderi].makeCommissionRate;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].takeCommissionRate = response.orders[orderi].takeCommissionRate;\r\n if (response.orders[orderi].orderFillType)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderFillType = response.orders[orderi].orderFillType;\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId].isCurrentlyInRunning = response.orders[orderi].isCurrentlyInRunning;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].willBeInRunning = response.orders[orderi].willBeInRunning;\r\n\r\n if (response.orders[orderi].orderPAndL != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderPAndL = orderPAndL.amount;\r\n if (response.orders[orderi].taxAmountDeducted != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].taxAmountDeducted = taxAmountDeducted.amount;\r\n if (response.orders[orderi].orderCommission != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderCommission = orderCommission.amount;\r\n\r\n if (gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange.call(null, { orderId: response.orders[orderi].orderId, order: gecPrivate._orderCache[response.orders[orderi].orderId] });\r\n }\r\n }\r\n gecPrivate._maxSequenceNo = response.orders[response.orders.length - 1].sequenceNumber;\r\n }\r\n if (structuralChange)\r\n _processFireOnChange();\r\n\r\n if (needMarketInformation) {\r\n var marketIds = [];\r\n for (marketI in unknownMarketIds) {\r\n marketIds[marketIds.length] = unknownMarketIds[marketI];\r\n }\r\n gecPrivate._thisController.getExchangePrices({\r\n callbackOnSuccess: function (markets) {\r\n\r\n for (var marketI = 0; marketI < markets.length; marketI++) {\r\n if (gecPrivate._eventClassifiers[markets[marketI].eventClassifierId] == null) {\r\n gecPrivate._eventClassifiers[markets[marketI].eventClassifierId] = {};\r\n if (markets[marketI].eventClassifierFullName == null) markets[marketI].eventClassifierFullName = \"unknown\";\r\n }\r\n gecPrivate._eventClassifiers[markets[marketI].eventClassifierId].eventClassifierId = markets[marketI].eventClassifierId;\r\n gecPrivate._eventClassifiers[markets[marketI].eventClassifierId].eventClassifierFullName = markets[marketI].eventClassifierFullName;\r\n gecPrivate._eventClassifiers[markets[marketI].eventClassifierId].eventClassifierName = gecPrivate._base.getEventName(markets[marketI].eventClassifierFullName);\r\n\r\n if (gecPrivate._markets[markets[marketI].marketId] == null) {\r\n gecPrivate._markets[markets[marketI].marketId] = {};\r\n }\r\n gecPrivate._markets[markets[marketI].marketId].marketId = markets[marketI].marketId;\r\n gecPrivate._markets[markets[marketI].marketId].marketName = markets[marketI].marketName;\r\n gecPrivate._markets[markets[marketI].marketId].eventClassifier = gecPrivate._eventClassifiers[markets[marketI].eventClassifierId];\r\n\r\n if (gecPrivate._markets[markets[marketI].marketId].selections == null) {\r\n gecPrivate._markets[markets[marketI].marketId].selections = markets[marketI].selections;\r\n }\r\n\r\n for (var selectionI = 0; selectionI < markets[marketI].selections.length; selectionI++) {\r\n if (gecPrivate._selections[markets[marketI].selections[selectionI].selectionId] == null) {\r\n gecPrivate._selections[markets[marketI].selections[selectionI].selectionId] = {};\r\n }\r\n gecPrivate._selections[markets[marketI].selections[selectionI].selectionId].selectionName = markets[marketI].selections[selectionI].selectionName;\r\n }\r\n }\r\n\r\n\r\n },\r\n callbackOnException: function () { },\r\n marketIds: marketIds,\r\n markets: null,\r\n eventClassifierId: null,\r\n marketTypeId: null,\r\n playMarkets: false,\r\n eventClassifier: null,\r\n wantIcons: false,\r\n justRefreshPrices: false,\r\n thresholdAmount: 1,\r\n numberForPricesRequired: 0,\r\n numberAgainstPricesRequired: 0\r\n });\r\n }\r\n\r\n }\r\n };\r\n\r\n /****************************\r\n forceLocalOrderCacheUpdate\r\n ****************************/\r\n gec.Controller.prototype.forceLocalOrderCacheUpdate = function (params) {\r\n\r\n if (gecPrivate.userContext == null\r\n && gecPrivate.sessionToken !== undefined) {\r\n\r\n params.callbackOnException.call(this, { returnCode: 590 });\r\n\r\n } else {\r\n\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.sequenceNumber = gecPrivate._maxSequenceNo;\r\n this.sendRequest(\"/ListOrdersChangedSince.ashx\", request, _forceLocalOrderCacheUpdateResponse);\r\n }\r\n };\r\n var _forceLocalOrderCacheUpdateResponse = function (request, response) {\r\n var structuralChange = false;\r\n if (gecPrivate.userContext != null) {\r\n var unknownMarketIds = {};\r\n var needMarketInformation = false; //used to call listExchangeMarketInformation\r\n var context = this;\r\n if ((response.returnCode == 0) && (response.orders != null)) {\r\n for (var orderi = 0; orderi < response.orders.length; orderi++) {\r\n\r\n if (gecPrivate._orderCache == null) gecPrivate._orderCache = {};\r\n if ((response.orders[orderi].status == 3) && (response.orders[orderi].matchedStake.amount == 0))//cancelled\r\n {\r\n structuralChange = true;\r\n\r\n if ((gecPrivate._orderCache[response.orders[orderi].orderId] != null) && (gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange != null))\r\n gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange.call(null, { orderId: response.orders[orderi].orderId, order: null });\r\n\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId] = null;\r\n delete gecPrivate._orderCache[response.orders[orderi].orderId];\r\n _deletedOrderIds[response.orders[orderi].orderId] = true;\r\n }\r\n else\r\n if ((response.orders[orderi].status == 4) || (response.orders[orderi].status == 5))//cancelled or voided\r\n {\r\n structuralChange = true;\r\n\r\n if ((gecPrivate._orderCache[response.orders[orderi].orderId] != null) && gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange.call(null, { orderId: response.orders[orderi].orderId, order: null });\r\n\r\n delete gecPrivate._orderCache[response.orders[orderi].orderId];\r\n _deletedOrderIds[response.orders[orderi].orderId] = true;\r\n }\r\n else {\r\n\r\n if ((gecPrivate._orderCache[response.orders[orderi].orderId] == null) || (gecPrivate._orderCache[response.orders[orderi].orderId]._new)) {\r\n\r\n\r\n structuralChange = true;\r\n\r\n if (gecPrivate._selections[response.orders[orderi].selectionId] == null) {\r\n gecPrivate._selections[response.orders[orderi].selectionId] = {};\r\n gecPrivate._selections[response.orders[orderi].selectionId].selectionName = \"...\";\r\n\r\n unknownMarketIds[response.orders[orderi].marketId] = response.orders[orderi].marketId;\r\n needMarketInformation = true;\r\n }\r\n\r\n var thisOrderForced = response.orders[orderi];\r\n\r\n (function (thisOrderForced) {\r\n\r\n if (gecPrivate._markets[response.orders[orderi].marketId] == null) {\r\n gecPrivate._markets[response.orders[orderi].marketId] = {};\r\n gecPrivate._markets[response.orders[orderi].marketId].marketName = response.orders[orderi].marketName || \"...\";\r\n gecPrivate._markets[response.orders[orderi].marketId].eventClassifier = {};\r\n gecPrivate._markets[response.orders[orderi].marketId].eventClassifier.eventClassifierFullName = response.orders[orderi].eventClassifierFullName || \"...\";\r\n gecPrivate._markets[response.orders[orderi].marketId].eventClassifier.eventClassifierName = response.orders[orderi].eventClassifierFullName || \"...\";\r\n gecPrivate._markets[response.orders[orderi].marketId].getEventClassifier = function () {\r\n return gecPrivate._markets[thisOrderForced.marketId].eventClassifier;\r\n }\r\n\r\n unknownMarketIds[response.orders[orderi].marketId] = response.orders[orderi].marketId;\r\n needMarketInformation = true;\r\n }\r\n\r\n response.orders[orderi].selectionName = gecPrivate._selections[response.orders[orderi].selectionId].selectionName;\r\n response.orders[orderi].marketName = gecPrivate._markets[response.orders[orderi].marketId].marketName;\r\n //response.orders[orderi].eventClassifierFullName = gecPrivate._markets[response.orders[orderi].marketId].eventClassifier.eventClassifierFullName;\r\n if (gecPrivate._orderCache[response.orders[orderi].orderId] != null) {\r\n response.orders[orderi].eventClassifierId = gecPrivate._orderCache[response.orders[orderi].orderId].eventClassifierId();\r\n }\r\n gecPrivate._orderCache[response.orders[orderi].orderId] = new gec.Order(response.orders[orderi]);\r\n delete gecPrivate._orderCache[response.orders[orderi].orderId]._new;\r\n\r\n gecPrivate._orderCache[thisOrderForced.orderId].marketTypeId = function () { return thisOrderForced.marketType; };\r\n\r\n gecPrivate._orderCache[thisOrderForced.orderId].punterReferenceNumber = thisOrderForced.pnterReferenceNumber;\r\n gecPrivate._orderCache[thisOrderForced.orderId].placePayout = function () { return thisOrderForced.placePayout; };\r\n\r\n\r\n gecPrivate._orderCache[thisOrderForced.orderId].selectionName = function () {\r\n if (gecPrivate._selections[thisOrderForced.selectionId] != null)\r\n return gecPrivate._selections[thisOrderForced.selectionId].selectionName;\r\n else return thisOrderForced.selectionName || \"...\";\r\n };\r\n gecPrivate._orderCache[thisOrderForced.orderId].marketName = function () {\r\n if (gecPrivate._markets[thisOrderForced.marketId] != null)\r\n return gecPrivate._markets[thisOrderForced.marketId].marketName;\r\n else return thisOrderForced.marketName || \"...\";\r\n };\r\n gecPrivate._orderCache[thisOrderForced.orderId].eventClassifierFullName = function () {\r\n if ((gecPrivate._markets[thisOrderForced.marketId] != null) && (gecPrivate._markets[thisOrderForced.marketId].getEventClassifier() !== undefined))\r\n return gecPrivate._markets[thisOrderForced.marketId].getEventClassifier().eventClassifierName;\r\n else return thisOrderForced.eventClassifierFullName || \"...\"\r\n };\r\n gecPrivate._orderCache[thisOrderForced.orderId].eventClassifierId = function () {\r\n if ((gecPrivate._markets[thisOrderForced.marketId] != null) && (gecPrivate._markets[thisOrderForced.marketId].getEventClassifier()) !== undefined)\r\n return gecPrivate._markets[thisOrderForced.marketId].getEventClassifier().eventClassifierId;\r\n else return thisOrderForced.eventClassifierId || \"...\";\r\n }\r\n })(thisOrderForced);\r\n }\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderId = response.orders[orderi].orderId;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderStatusId = response.orders[orderi].status;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].issuedAt = response.orders[orderi].issuedAt;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expiresAt = response.orders[orderi].expiresAt;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].requestedStake = response.orders[orderi].matchedStake.amount + response.orders[orderi].unmatchedStake.amount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].requestedPrice = response.orders[orderi].requestedPrice;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].isFreeBet = response.orders[orderi].isFreeBet;\r\n\r\n if (response.orders[orderi].matchedStake.amount >= gecPrivate._orderCache[response.orders[orderi].orderId].matchedStake) {\r\n gecPrivate._orderCache[response.orders[orderi].orderId].matchedStake = response.orders[orderi].matchedStake.amount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].unmatchedStake = response.orders[orderi].unmatchedStake.amount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].averageMatchedPrice = response.orders[orderi].matchedPrice;\r\n }\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expectedSelectionResetCount = response.orders[orderi].expectedSelectionResetCount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expectedWithdrawalSequenceNumber = response.orders[orderi].expectedWithdrawalSequenceNumber;\r\n\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId].polarityId = response.orders[orderi].polarity ? 1 : 2;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].cancelOnInRunning = response.orders[orderi].cancelOnInRunning;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].cancelIfSelectionReset = response.orders[orderi].cancelIfSelectionReset;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].sequenceNumber = response.orders[orderi].sequenceNumber;\r\n\r\n\r\n if (response.orders[orderi].totalForSideMakeStake != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].totalForSideMakeStake = response.orders[orderi].totalForSideMakeStake.amount;\r\n if (response.orders[orderi].totalForSideTakeStake != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].totalForSideTakeStake = response.orders[orderi].totalForSideTakeStake.amount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].requestedPrice = response.orders[orderi].requestedPrice;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].requestedAveragePrice = response.orders[orderi].requestedAveragePrice;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].matchedPrice = response.orders[orderi].matchedPrice;\r\n\r\n if (response.orders[orderi].provisionalMatchedStake != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].provisionalMatchedStake = response.orders[orderi].provisionalMatchedStake.amount;\r\n if (response.orders[orderi].matchedAgainstStake != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].matchedAgainstStake = response.orders[orderi].matchedAgainstStake.amount;\r\n if (response.orders[orderi].provisionalMatchedAgainstStake != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].provisionalMatchedAgainstStake = response.orders[orderi].provisionalMatchedAgainstStake.amount;\r\n\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expectedSelectionResetCount = response.orders[orderi].expectedSelectionResetCount;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expectedWithdrawalSequenceNumber = response.orders[orderi].expectedWithdrawalSequenceNumber;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderStatusId = response.orders[orderi].status;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].expiresAt = response.orders[orderi].expiresAt;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].cancelOnInRunning = response.orders[orderi].cancelOnInRunning;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].cancelIfSelectionReset = response.orders[orderi].cancelIfSelectionReset;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].isCurrentlyInRunning = response.orders[orderi].isCurrentlyInRunning;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].willBeInRunning = response.orders[orderi].willBeInRunning;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].isMarketConfused = response.orders[orderi].isMarketConfused;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].commissionBasis = response.orders[orderi].commissionBasis;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].makeCommissionRate = response.orders[orderi].makeCommissionRate;\r\n gecPrivate._orderCache[response.orders[orderi].orderId].takeCommissionRate = response.orders[orderi].takeCommissionRate;\r\n if (response.orders[orderi].orderFillType)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderFillType = response.orders[orderi].orderFillType;\r\n\r\n if (response.orders[orderi].orderPAndL != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderPAndL = orderPAndL.amount;\r\n if (response.orders[orderi].taxAmountDeducted != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].taxAmountDeducted = taxAmountDeducted.amount;\r\n if (response.orders[orderi].orderCommission != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].orderCommission = orderCommission.amount;\r\n\r\n if (gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange != null)\r\n gecPrivate._orderCache[response.orders[orderi].orderId].fireOnChange.call(null, { orderId: response.orders[orderi].orderId, order: gecPrivate._orderCache[response.orders[orderi].orderId] });\r\n }\r\n }\r\n gecPrivate._maxSequenceNo = response.orders[response.orders.length - 1].sequenceNumber;\r\n //this._orderChangedEvent.call(this, response.orders);\r\n }\r\n if (structuralChange)\r\n _processFireOnChange();\r\n var thisObj = this;\r\n\r\n if (needMarketInformation) {\r\n var marketIds = [];\r\n for (marketI in unknownMarketIds) {\r\n marketIds[marketIds.length] = unknownMarketIds[marketI];\r\n }\r\n gecPrivate._thisController.getExchangePrices({\r\n callbackOnSuccess: function (markets) {\r\n\r\n for (var marketI = 0; marketI < markets.length; marketI++) {\r\n if (gecPrivate._eventClassifiers[markets[marketI].eventClassifierId] == null) {\r\n gecPrivate._eventClassifiers[markets[marketI].eventClassifierId] = {};\r\n if (markets[marketI].eventClassifierFullName == null) markets[marketI].eventClassifierFullName = \"unknown\";\r\n }\r\n gecPrivate._eventClassifiers[markets[marketI].eventClassifierId].eventClassifierId = markets[marketI].eventClassifierId;\r\n gecPrivate._eventClassifiers[markets[marketI].eventClassifierId].eventClassifierFullName = markets[marketI].eventClassifierFullName;\r\n gecPrivate._eventClassifiers[markets[marketI].eventClassifierId].eventClassifierName = gecPrivate._base.getEventName(markets[marketI].eventClassifierFullName);\r\n\r\n if (gecPrivate._markets[markets[marketI].marketId] == null) {\r\n gecPrivate._markets[markets[marketI].marketId] = {};\r\n }\r\n gecPrivate._markets[markets[marketI].marketId].marketId = markets[marketI].marketId;\r\n gecPrivate._markets[markets[marketI].marketId].marketName = markets[marketI].marketName;\r\n gecPrivate._markets[markets[marketI].marketId].eventClassifier = gecPrivate._eventClassifiers[markets[marketI].eventClassifierId];\r\n\r\n if (gecPrivate._markets[markets[marketI].marketId].selections == null) {\r\n gecPrivate._markets[markets[marketI].marketId].selections = markets[marketI].selections;\r\n }\r\n\r\n for (var selectionI = 0; selectionI < markets[marketI].selections.length; selectionI++) {\r\n if (gecPrivate._selections[markets[marketI].selections[selectionI].selectionId] == null) {\r\n gecPrivate._selections[markets[marketI].selections[selectionI].selectionId] = {};\r\n }\r\n gecPrivate._selections[markets[marketI].selections[selectionI].selectionId].selectionName = markets[marketI].selections[selectionI].selectionName;\r\n }\r\n }\r\n\r\n\r\n },\r\n callbackOnException: function () { },\r\n marketIds: marketIds,\r\n markets: null,\r\n eventClassifierId: null,\r\n marketTypeId: null,\r\n playMarkets: false,\r\n eventClassifier: null,\r\n wantIcons: false,\r\n justRefreshPrices: false,\r\n thresholdAmount: 1,\r\n numberForPricesRequired: 0,\r\n numberAgainstPricesRequired: 0\r\n });\r\n\r\n // gecPrivate._thisController.listExchangeMarketInformation({\r\n // callbackOnSuccess: null,\r\n // callbackOnException: null,\r\n // marketIds: marketIds//,\r\n // //incompleteOrders: incompleteOrders\r\n // });\r\n }\r\n\r\n if (request.callbackOnSuccess != null) {\r\n request.callbackOnSuccess.call(this, {});\r\n }\r\n\r\n }\r\n };\r\n\r\n /************************************\r\n marketPAndL\r\n ************************************/\r\n gec.Controller.prototype.marketPAndL = function (params) {\r\n //params.includeSettledSelections: boolean\r\n\r\n if (gecPrivate._orderCache !== null) {\r\n var marketId = -1;\r\n if (params.marketId != null) {\r\n marketId = params.marketId;\r\n }\r\n else if (params.market != null) {\r\n marketId = params.market.marketId;\r\n }\r\n else if (params.marketDetail != null) {\r\n marketId = params.marketDetail.marketId;\r\n }\r\n\r\n var returnObj = { selections: {} };\r\n\r\n var selectionIndex = {};\r\n var totalStake = 0;\r\n\r\n var totalAgainstSideGain = 0, commission, stake;\r\n var upsideIfSettledFor, upsideIfSettledPlace;\r\n\r\n var grossUpsideFor, grossUpsideForCommission, grossUpsideAgainst, grossUpsideAgainstCommission;\r\n var totalGrossUpsideFor = 0, totalGrossUpsideForCommission = 0;\r\n\r\n var orders = params.orders || gecPrivate._orderCache;\r\n for (orderItem in orders) {\r\n var thisOrder = orders[orderItem];\r\n\r\n if (thisOrder.orderStatusId == 4 && !params.includeSettledSelections) {\r\n continue;\r\n }\r\n\r\n if (thisOrder.marketId() === marketId) {\r\n if ((thisOrder.matchedStake + thisOrder.matchedAgainstStake) > 0) {\r\n\r\n var eachWayDivisor = (thisOrder.placePayout() > 0) ? 2 : 1;\r\n var thisSelectionId = thisOrder.selectionId();\r\n selectionIndex[thisSelectionId] = selectionIndex[thisSelectionId] || {\r\n selectionId: thisSelectionId,\r\n upsideIfSettledFor: 0,\r\n upsideIfSettledAgainst: 0,\r\n commission: 0,\r\n grossUpsideFor: 0,\r\n grossUpsideForCommission: 0,\r\n grossUpsideAgainst: 0,\r\n grossUpsideAgainstCommission: 0,\r\n upsideIfSettledPlace: (params.placePayout > 0) ? 0 : undefined,\r\n netSelectionPosition: (params.numberOfWinningSelections == 1) ? 0 : undefined\r\n };\r\n\r\n //ForSideWin\r\n\r\n var polMultiple = (thisOrder.polarityId == 1) ? 1 : -1;\r\n\r\n grossUpsideFor = 0;\r\n grossUpsideForCommission = 0;\r\n grossUpsideAgainst = 0;\r\n grossUpsideAgainstCommission = 0;\r\n\r\n commission = 0;\r\n\r\n //AgainstSide\r\n var againstSideGain = ((thisOrder.polarityId == 1) ? -thisOrder.matchedStake : thisOrder.matchedStake) / eachWayDivisor;\r\n\r\n //ForSidePlace\r\n\r\n if (params.placePayout > 0) {\r\n upsideIfSettledFor = polMultiple * (((thisOrder.averageMatchedPrice - 1) * params.placePayout * (thisOrder.matchedStake / 2)) + (thisOrder.averageMatchedPrice - 1) * (thisOrder.matchedStake / 2));\r\n upsideIfSettledPlace = polMultiple * (((thisOrder.averageMatchedPrice - 1) * params.placePayout * (thisOrder.matchedStake / 2)) - (thisOrder.matchedStake / 2));\r\n againstSideGain = ((params.placePayout > 0) ? againstSideGain * 2 : againstSideGain);\r\n if (params.displayPandLNetOfCommission && upsideIfSettledFor > 0) {\r\n commission = upsideIfSettledFor * ((thisOrder.totalForSideTakeStake > 0 ? thisOrder.takeCommissionRate : thisOrder.makeCommissionRate) / 100);\r\n }\r\n\r\n selectionIndex[thisSelectionId].upsideIfSettledFor += upsideIfSettledFor;\r\n selectionIndex[thisSelectionId].upsideIfSettledPlace += upsideIfSettledPlace;\r\n } else {\r\n var forSideGain = (thisOrder.polarityId == gec.Polarity.For) ? thisOrder.matchedAgainstStake : -thisOrder.matchedAgainstStake;\r\n if (params.displayPandLNetOfCommission) {\r\n commission = ((thisOrder.totalForSideTakeStake * (thisOrder.averageMatchedPrice - 1)) * (thisOrder.takeCommissionRate / 100)) + ((thisOrder.totalForSideMakeStake * (thisOrder.averageMatchedPrice - 1)) * (thisOrder.makeCommissionRate / 100));\r\n }\r\n\r\n selectionIndex[thisSelectionId].upsideIfSettledFor += forSideGain;\r\n }\r\n\r\n\r\n if (thisOrder.polarityId == gec.Polarity.Against) {\r\n grossUpsideFor += thisOrder.matchedStake;\r\n grossUpsideAgainst = thisOrder.matchedStake;\r\n selectionIndex[thisSelectionId].grossUpsideAgainst += grossUpsideAgainst;\r\n\r\n } else {\r\n grossUpsideFor += thisOrder.matchedStake * (thisOrder.averageMatchedPrice - 1);\r\n }\r\n\r\n if (params.displayPandLNetOfCommission) {\r\n\r\n if (thisOrder.polarityId == gec.Polarity.Against) {\r\n grossUpsideForCommission = ((thisOrder.totalForSideTakeStake * (thisOrder.takeCommissionRate / 100)) + (thisOrder.totalForSideMakeStake * (thisOrder.makeCommissionRate / 100)));\r\n grossUpsideAgainstCommission = ((thisOrder.totalForSideTakeStake * (thisOrder.takeCommissionRate / 100)) + (thisOrder.totalForSideMakeStake * (thisOrder.makeCommissionRate / 100)));\r\n selectionIndex[thisSelectionId].grossUpsideAgainstCommission += grossUpsideAgainstCommission;\r\n\r\n } else {\r\n grossUpsideForCommission = (((thisOrder.totalForSideTakeStake * (thisOrder.averageMatchedPrice - 1)) * (thisOrder.takeCommissionRate / 100)) + (thisOrder.totalForSideMakeStake * (thisOrder.averageMatchedPrice - 1) * (thisOrder.makeCommissionRate / 100)));\r\n }\r\n\r\n }\r\n\r\n totalGrossUpsideFor += grossUpsideFor;\r\n totalGrossUpsideForCommission += grossUpsideForCommission;\r\n\r\n selectionIndex[thisSelectionId].grossUpsideFor += grossUpsideFor;\r\n selectionIndex[thisSelectionId].grossUpsideForCommission += grossUpsideForCommission;\r\n selectionIndex[thisSelectionId].upsideIfSettledAgainst += againstSideGain;\r\n totalAgainstSideGain += againstSideGain;\r\n\r\n stake = ((thisOrder.polarityId == 1) ? -thisOrder.matchedStake : thisOrder.matchedStake);\r\n\r\n totalStake += stake;\r\n }\r\n }\r\n }\r\n var netSelectionPosition;\r\n for (var i in selectionIndex) {\r\n var selectionFigures = selectionIndex[i];\r\n if (selectionFigures != null) {\r\n if (params.numberOfWinningSelections == 1) {\r\n netSelectionPosition = selectionFigures.upsideIfSettledFor - (selectionFigures.upsideIfSettledAgainst - totalAgainstSideGain);\r\n\r\n if (netSelectionPosition > 0 && params.displayPandLNetOfCommission) {\r\n commission = netSelectionPosition * (selectionFigures.grossUpsideForCommission / selectionFigures.grossUpsideFor);\r\n netSelectionPosition -= commission;\r\n }\r\n if (netSelectionPosition === Infinity) {\r\n console.error(\"Infinity\");\r\n }\r\n selectionFigures.netSelectionPosition = netSelectionPosition;// === Infinity ? 0 : netSelectionPosition;\r\n } else {\r\n if (selectionFigures.upsideIfSettledFor > 0) {\r\n selectionFigures.upsideIfSettledFor = selectionFigures.upsideIfSettledFor - (params.displayPandLNetOfCommission ? selectionFigures.upsideIfSettledFor * (selectionFigures.grossUpsideForCommission / selectionFigures.grossUpsideFor) : 0);\r\n }\r\n if (selectionFigures.upsideIfSettledPlace > 0) {\r\n selectionFigures.upsideIfSettledPlace = selectionFigures.upsideIfSettledPlace - (params.displayPandLNetOfCommission ? selectionFigures.upsideIfSettledPlace * (selectionFigures.grossUpsideForCommission / selectionFigures.grossUpsideFor) : 0);\r\n }\r\n if (selectionFigures.upsideIfSettledAgainst > 0) {\r\n selectionFigures.upsideIfSettledAgainst = selectionFigures.upsideIfSettledAgainst - (params.displayPandLNetOfCommission ? selectionFigures.upsideIfSettledAgainst * (selectionFigures.grossUpsideAgainstCommission / selectionFigures.grossUpsideAgainst) : 0);\r\n }\r\n }\r\n\r\n returnObj.selections[i] = selectionFigures;\r\n }\r\n }\r\n\r\n if (params.numberOfWinningSelections == 1) {\r\n if (params.displayPandLNetOfCommission && totalStake > 0) {\r\n totalStake -= totalStake * (totalGrossUpsideForCommission / totalGrossUpsideFor);\r\n }\r\n\r\n returnObj.defaultNetSelectionPosition = totalStake;\r\n }\r\n\r\n return returnObj;\r\n }\r\n else {\r\n throw { \"number\": 592, \"message\": \"OrderCacheNotPresent\" };\r\n }\r\n\r\n };\r\n\r\n /************************************\r\n listOrdersByTimePlaced\r\n ************************************/\r\n gec.Controller.prototype.listOrdersByTimePlaced = function (params, isInternal) {\r\n if (gecPrivate._orderCache != null) {\r\n params.sortDescending = (params.sortDescending == null) ? true : params.sortDescending;\r\n var orders = [];\r\n var orderI = 0;\r\n var markets = (params.markets != null) ? params.markets : params.marketDetail;\r\n var eventClassifiers = params.eventClassifiers;\r\n var marketIds = [];\r\n var eventClassifierIds = [];\r\n if (markets != null) {\r\n for (var marketCount = 0; marketCount < markets.length; marketCount++) {\r\n marketIds[marketIds.length] = markets[marketCount].marketId;\r\n }\r\n }\r\n else if (params.marketIds != null) {\r\n marketIds = params.marketIds;\r\n }\r\n\r\n if (marketIds != null) {\r\n for (orderId in gecPrivate._orderCache) {\r\n for (var marketCount = 0; marketCount < marketIds.length; marketCount++) {\r\n if (gecPrivate._orderCache[orderId].marketId() == marketIds[marketCount]) {\r\n orders[orderI++] = gecPrivate._orderCache[orderId];\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (eventClassifiers != null) {\r\n for (var eventClassifierCount = 0; eventClassifierCount < eventClassifiers.length; eventClassifierCount++) {\r\n eventClassifierIds[eventClassifierIds.length] = eventClassifiers[eventClassifierCount].eventClassifierId;\r\n }\r\n }\r\n else if (params.eventClassifierIds != null) {\r\n eventClassifierIds = params.eventClassifierIds;\r\n }\r\n\r\n if (eventClassifierIds != null) {\r\n for (orderId in gecPrivate._orderCache) {\r\n for (var eventClassifierCount = 0; eventClassifierCount < eventClassifierIds.length; eventClassifierCount++) {\r\n if (gecPrivate._orderCache[orderId].eventClassifierId == eventClassifierIds[eventClassifierCount]) {\r\n orders[orderI++] = gecPrivate._orderCache[orderId];\r\n }\r\n }\r\n }\r\n }\r\n if ((markets == null) && (params.eventClassifierIds == null) && (params.eventClassifiers == null) && (params.marketIds == null)) {\r\n for (orderId in gecPrivate._orderCache) {\r\n orders[orderI++] = gecPrivate._orderCache[orderId];\r\n }\r\n }\r\n\r\n orders.sort(gec.SortOnIssuedAt);\r\n\r\n if (params.sortDescending)\r\n orders.reverse();\r\n\r\n if (isInternal) {\r\n if (params.fireOnChange != null) {\r\n var fireOnChangeData = _getFireOnChange(orders, _overlays[params.overlayId], params.sortDescending);\r\n params.fireOnChange.call(this, fireOnChangeData);\r\n }\r\n }\r\n\r\n _overlays[params.overlayId] = {};\r\n _overlays[params.overlayId].params = params;\r\n _overlays[params.overlayId].type = \"TimePlaced\";\r\n _overlays[params.overlayId].orders = orders;\r\n return _overlays[params.overlayId].orders;\r\n }\r\n else {\r\n throw { \"number\": 592, \"message\": \"OrderCacheNotPresent\" };\r\n }\r\n };\r\n\r\n /************************************\r\n listOrdersByTimeChanged\r\n ************************************/\r\n gec.Controller.prototype.listOrdersByTimeChanged = function (params, isInternal) {\r\n if (gecPrivate._orderCache != null) {\r\n params.sortDescending = (params.sortDescending == null) ? true : params.sortDescending;\r\n var orders = [];\r\n var orderI = 0;\r\n var markets = (params.markets != null) ? params.markets : params.marketDetail;\r\n var marketIds = [];\r\n if (markets != null) {\r\n for (marketCount in markets) {\r\n marketIds[marketIds.length] = markets[marketCount].marketId;\r\n }\r\n }\r\n else {\r\n marketIds = params.marketIds;\r\n }\r\n if (marketIds != null) {\r\n for (orderId in gecPrivate._orderCache) {\r\n for (var marketCount = 0; marketCount < marketIds.length; marketCount++) {\r\n if (gecPrivate._orderCache[orderId].marketId() == marketIds[marketCount]) {\r\n orders[orderI++] = gecPrivate._orderCache[orderId];\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (orderId in gecPrivate._orderCache) {\r\n orders[orderI++] = gecPrivate._orderCache[orderId];\r\n }\r\n }\r\n\r\n orders.sort(gec.SortOnChangedAt);\r\n\r\n if (params.sortDescending)\r\n orders.reverse();\r\n\r\n\r\n if (isInternal) {\r\n if (params.fireOnChange != null) {\r\n var fireOnChangeData = _getFireOnChange(orders, _overlays[params.overlayId].orders, params.sortDescending);\r\n params.fireOnChange.call(this, fireOnChangeData);\r\n }\r\n }\r\n\r\n _overlays[params.overlayId] = {};\r\n _overlays[params.overlayId].params = params;\r\n _overlays[params.overlayId].type = \"TimeChanged\";\r\n _overlays[params.overlayId].orders = orders;\r\n return _overlays[params.overlayId].orders;\r\n }\r\n else {\r\n throw { \"number\": 592, \"message\": \"OrderCacheNotPresent\" };\r\n }\r\n };\r\n _processFireOnChange = function () {\r\n console.log(_processFireOnChange);\r\n\r\n for (overlayCount in _overlays) {\r\n if (_overlays[overlayCount].params.fireOnChange) {\r\n\r\n if (_overlays[overlayCount].type == \"TimeChanged\")\r\n gecPrivate._thisController.listOrdersByTimeChanged(_overlays[overlayCount].params, true);\r\n else\r\n gecPrivate._thisController.listOrdersByTimePlaced(_overlays[overlayCount].params, true);\r\n }\r\n }\r\n };\r\n\r\n _getFireOnChange = function (newArray, oldArray, sortDecending) {\r\n var fireOnChangeArray = [];\r\n if (sortDecending) {\r\n var i = 0;\r\n do {\r\n if (newArray[newArray.length - 1 - i] == null) {\r\n fireOnChangeArray[fireOnChangeArray.length] = { offset: Math.max(0, oldArray.length - 1 - i), order: null, orderId: oldArray[oldArray.length - 1 - i].orderId };\r\n oldArray.splice(Math.max(0, oldArray.length - 1 - i), 1);\r\n } else\r\n if (oldArray[oldArray.length - 1 - i] == null) {\r\n fireOnChangeArray[fireOnChangeArray.length] = { offset: Math.max(0, oldArray.length - 1 - i), order: newArray[newArray.length - 1 - i] };\r\n oldArray.splice(Math.max(0, oldArray.length - 1 - i), 0, newArray[newArray.length - 1 - i]);\r\n i++;\r\n }\r\n else {\r\n if (oldArray[oldArray.length - 1 - i].orderId != newArray[newArray.length - 1 - i].orderId) {\r\n fireOnChangeArray[fireOnChangeArray.length] = { offset: Math.max(0, oldArray.length - 1 - i), order: null, orderId: oldArray[oldArray.length - 1 - i].orderId };\r\n oldArray.splice(Math.max(0, oldArray.length - 1 - i), 1);\r\n }\r\n else {\r\n i++;\r\n }\r\n }\r\n\r\n } while (i < Math.max(oldArray.length, newArray.length))\r\n }\r\n else {\r\n var i = 0;\r\n do {\r\n if (newArray[i] == null) {\r\n oldArray.splice(i, 1);\r\n fireOnChangeArray[fireOnChangeArray.length] = { offset: i, order: null };\r\n }\r\n else {\r\n if (oldArray[i].orderId != newArray[i].orderId) {\r\n oldArray.splice(i, 1);\r\n fireOnChangeArray[fireOnChangeArray.length] = { offset: i, order: null };\r\n }\r\n else {\r\n i++;\r\n }\r\n }\r\n\r\n } while (i < Math.max(oldArray.length, newArray.length))\r\n\r\n }\r\n return fireOnChangeArray;\r\n };\r\n\r\n\r\n /****************************\r\n placeOrders\r\n ****************************/\r\n\r\n gec.Controller.prototype.placeOrders = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590 });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n request.returnMatchInformation = params.returnMatchInformation;\r\n request.channelInformation = /*\"-GEC\" + _version.implementationVersion + \"|\" + */params.channelInformation;\r\n request.wantAllOrNothingBehaviour = params.wantAllOrNothingBehaviour;\r\n request.useFreeBet = params.useFreeBet;\r\n request.orders = [];\r\n for (var i = 0; i < params.ordersRequested.length; i++) {\r\n var thisSelection = params.ordersRequested[i].selection || params.ordersRequested[i].subscribedSelection;\r\n request.orders[i] = {};\r\n\r\n request.orders[i].selectionId = thisSelection.selectionId;\r\n request.orders[i].expiresAt = params.ordersRequested[i].expiresAt;\r\n request.orders[i].orderFillType = params.ordersRequested[i].orderFillType;\r\n\r\n request.orders[i].fillOrKillThreshold = { \"amount\": params.ordersRequested[i].fillOrKillThreshold, \"currency\": gecPrivate.userContext.currency };\r\n request.orders[i].fillOrKillThresholdSpecified = (params.ordersRequested[i].fillOrKillThreshold != null) ? true : false;\r\n\r\n request.orders[i].requestedForSideStake = { \"amount\": params.ordersRequested[i].requestedForSideStake, \"currency\": gecPrivate.userContext.currency };\r\n request.orders[i].requestedForSidePrice = params.ordersRequested[i].requestedForSidePrice;\r\n request.orders[i].requestedAverageForSidePrice = params.ordersRequested[i].requestedAverageForSidePrice;\r\n request.orders[i].expectedSelectionResetCount = params.ordersRequested[i].expectedSelectionResetCount;\r\n request.orders[i].expectedWithdrawalSequenceNumber = params.ordersRequested[i].expectedWithdrawalSequenceNumber;\r\n request.orders[i].polarity = params.ordersRequested[i].polarityId;\r\n request.orders[i].withdrawRepriceOption = params.ordersRequested[i].withdrawRepriceOptionId;\r\n request.orders[i].cancelOnInRunning = params.ordersRequested[i].cancelOnInRunning;\r\n request.orders[i].cancelIfSelectionReset = params.ordersRequested[i].cancelIfSelectionReset;\r\n }\r\n\r\n this.sendRequest(\"/PlaceOrders.ashx\", request, function (request, response) { _placeOrdersResponse.call(this, request, response, params.ordersRequested) });\r\n }\r\n };\r\n var _placeOrdersResponse = function (request, response, ordersToPlace) {\r\n\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n var output = {};\r\n if (response.totalStakeDebited != null)\r\n output.totalStakeDebited = response.totalStakeDebited.amount;\r\n\r\n output.responses = [];\r\n\r\n if (gecPrivate._orderCache == null)\r\n gecPrivate._orderCache = {};\r\n for (var i = 0; i < response.orders.length; i++) {\r\n var thisOrder = response.orders[i];\r\n output.responses[i] = {};\r\n\r\n if (_deletedOrderIds[thisOrder.orderId]) continue; //if its already been deleted then skip to next one.\r\n\r\n if (thisOrder.returnCode != 0) {\r\n output.responses[i].returnCode = thisOrder.returnCode;\r\n\r\n } else {\r\n\r\n if (ordersToPlace[i].subscribedSelection == null) {//Selection object as opposed to subscribed selection object\r\n response.orders[i].selectionId = ordersToPlace[i].selection.selectionId;\r\n response.orders[i].selectionName = ordersToPlace[i].selection.selectionName;\r\n response.orders[i].eventClassifierFullName = ordersToPlace[i].selection.market.eventClassifierFullName;\r\n response.orders[i].eventClassifierId = ordersToPlace[i].selection.market.eventClassifierId;\r\n response.orders[i].marketName = ordersToPlace[i].selection.market.marketName;\r\n response.orders[i].marketId = ordersToPlace[i].selection.market.marketId;\r\n } else {\r\n response.orders[i].selectionId = ordersToPlace[i].subscribedSelection.selectionId;\r\n response.orders[i].selectionName = ordersToPlace[i].subscribedSelection.name;\r\n if (ordersToPlace[i].subscribedSelection.market) {\r\n response.orders[i].marketId = ordersToPlace[i].subscribedSelection.market.marketId;\r\n } else {\r\n response.orders[i].marketId = ordersToPlace[i].subscribedSelection.marketId;\r\n }\r\n\r\n response.orders[i].marketName = ordersToPlace[i].marketName;\r\n response.orders[i].eventClassifierFullName = ordersToPlace[i].eventClassifierFullName;\r\n response.orders[i].eventClassifierId = ordersToPlace[i].eventClassifierId;\r\n }\r\n\r\n response.orders[i].requestedStake = ordersToPlace[i].requestedForSideStake;\r\n response.orders[i].requestedPrice = ordersToPlace[i].requestedForSidePrice;\r\n\r\n //order may already exist from update orders calls\r\n if (gecPrivate._orderCache[response.orders[i].orderId] == null) {\r\n gecPrivate._orderCache[response.orders[i].orderId] = new gec.Order(response.orders[i]);\r\n if (response.orders[i].matchedAgainstSideStake != null) {\r\n gecPrivate._orderCache[response.orders[i].orderId].matchedAgainstStake = response.orders[i].matchedAgainstSideStake.amount;\r\n }\r\n gecPrivate._orderCache[response.orders[i].orderId].isFreeBet = request.useFreeBet;\r\n gecPrivate._orderCache[response.orders[i].orderId].placePayout = function () { return 0; };\r\n gecPrivate._orderCache[response.orders[i].orderId]._new = true; //remove when fireonchange on listorderchanged since\r\n\r\n }\r\n\r\n var orderI = i;\r\n (function (orderI) {\r\n gecPrivate._orderCache[response.orders[orderI].orderId].selectionName = function () { return response.orders[orderI].selectionName };\r\n gecPrivate._orderCache[response.orders[orderI].orderId].marketName = function () { return response.orders[orderI].marketName };\r\n\r\n gecPrivate._orderCache[response.orders[orderI].orderId].eventClassifierFullName = function () {\r\n return response.orders[orderI].eventClassifierFullName;\r\n };\r\n\r\n })(orderI);\r\n\r\n\r\n if (response.orders[i].matchedStake != null) {\r\n if (response.orders[i].matchedStake.amount > gecPrivate._orderCache[response.orders[i].orderId].matchedStake) {\r\n gecPrivate._orderCache[response.orders[i].orderId].matchedStake = response.orders[i].matchedStake.amount;\r\n gecPrivate._orderCache[response.orders[i].orderId].unmatchedStake = response.orders[i].requestedStake - gecPrivate._orderCache[response.orders[i].orderId].matchedStake;\r\n gecPrivate._orderCache[response.orders[i].orderId].averageMatchedPrice = response.orders[i].matchedPrice;\r\n\r\n }\r\n }\r\n gecPrivate._orderCache[response.orders[i].orderId].orderId = response.orders[i].orderId;\r\n gecPrivate._orderCache[response.orders[i].orderId].issuedAt = new Date().formatDate(\"yyyy-MM-ddThh:mm:ss.SSSZ\");\r\n gecPrivate._orderCache[response.orders[i].orderId].expiresAt = ordersToPlace[i].expiresAt;\r\n gecPrivate._orderCache[response.orders[i].orderId].requestedStake = response.orders[i].requestedStake;\r\n gecPrivate._orderCache[response.orders[i].orderId].requestedPrice = ordersToPlace[i].requestedForSidePrice;\r\n gecPrivate._orderCache[response.orders[i].orderId].unmatchedStake = response.orders[i].requestedStake - gecPrivate._orderCache[response.orders[i].orderId].matchedStake;\r\n\r\n\r\n if ((request.orders[i].orderFillType == 2) && (gecPrivate._orderCache[response.orders[i].orderId].unmatchedStake > 0)) {\r\n gecPrivate._orderCache[response.orders[i].orderId].orderStatusId = 3;\r\n } else {\r\n gecPrivate._orderCache[response.orders[i].orderId].orderStatusId = ((response.orders[i].requestedStake - gecPrivate._orderCache[response.orders[i].orderId].matchedStake) > 0) ? 1 : 2;\r\n }\r\n\r\n gecPrivate._orderCache[response.orders[i].orderId].expectedSelectionResetCount = ordersToPlace[i].expectedSelectionResetCount;\r\n gecPrivate._orderCache[response.orders[i].orderId].expectedWithdrawalSequenceNumber = ordersToPlace[i].expectedWithdrawalSequenceNumber;\r\n\r\n gecPrivate._orderCache[response.orders[i].orderId].polarityId = ordersToPlace[i].polarityId;\r\n gecPrivate._orderCache[response.orders[i].orderId].cancelOnInRunning = ordersToPlace[i].cancelOnInRunning;\r\n gecPrivate._orderCache[response.orders[i].orderId].cancelIfSelectionReset = request.orders[i].cancelIfSelectionReset;\r\n gecPrivate._orderCache[response.orders[i].orderId].orderFillType = request.orders[i].orderFillType;\r\n\r\n output.responses[i].orderId = response.orders[i].orderId;\r\n output.responses[i].order = (gecPrivate._orderCache != null) ? gecPrivate._orderCache[response.orders[i].orderId] : null;\r\n\r\n }\r\n }\r\n\r\n request.callbackOnSuccess.call(this, output);\r\n }\r\n\r\n };\r\n /****************************\r\n changeOrders\r\n ****************************/\r\n gec.Controller.prototype.changeOrders = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, { returnCode: 590 });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.returnMatchInformation = params.returnMatchInformation;\r\n request.orders = [];\r\n for (var orderCount = 0; orderCount < params.orders.length; orderCount++) {\r\n var order = {};\r\n\r\n order.orderId = params.orders[orderCount].orderId * 1;\r\n order.punterReferenceNumberSpecified = (params.orders[orderCount].punterReferenceNumber != null) ? true : false;;\r\n order.expiresAt = params.orders[orderCount].expiresAt;\r\n order.expiresAtSpecified = (params.orders[orderCount].expiresAt != null) ? true : false;\r\n order.deltaAmount = { amount: params.orders[orderCount].deltaAmount, currency: gecPrivate.userContext.currency };\r\n order.requestedForSidePrice = params.orders[orderCount].requestedForSidePrice;\r\n order.expectedSelectionResetCount = params.orders[orderCount].expectedSelectionResetCount;\r\n order.expectedWithdrawalSequenceNumber = params.orders[orderCount].expectedWithdrawalSequenceNumber;\r\n order.withdrawRepriceOption = params.orders[orderCount].withdrawRepriceOption;\r\n order.withdrawRepriceOptionSpecified = (params.orders[orderCount].withdrawRepriceOption != null) ? true : false;\r\n order.cancelOnInRunning = params.orders[orderCount].cancelOnInRunning;\r\n order.cancelOnInRunningSpecified = params.orders[orderCount].cancelOnInRunningSpecified;\r\n order.cancelIfSelectionReset = params.orders[orderCount].cancelIfSelectionReset;\r\n order.cancelIfSelectionResetSpecified = (params.orders[orderCount].cancelIfSelectionReset != null) ? true : false;\r\n if (params.orders[orderCount].setToBeSPIfUnmatched != null) {\r\n order.setToBeSPIfUnmatched = params.orders[orderCount].setToBeSPIfUnmatched;\r\n }\r\n request.orders[request.orders.length] = order;\r\n }\r\n //this.ordersToChange = params.orders;\r\n this.sendRequest(\"/ChangeOrders.ashx\", request, _changeOrdersResponse);\r\n }\r\n };\r\n var _changeOrdersResponse = function (request, response) {\r\n if (response.returnCode == 0) {\r\n\r\n var output = [];\r\n for (var i = 0; i < response.orders.length; i++) {\r\n output[i] = {};\r\n output[i].returnCode = response.orders[i].returnCode;\r\n if (response.orders[i].returnCode == 0) {\r\n output[i].averageMatchedPrice = response.orders[i].matchedPrice;\r\n\r\n if (response.orders[i].matchedStake)\r\n output[i].matchedStake = response.orders[i].matchedStake.amount;\r\n\r\n if (response.orders[i].provisionalMatchedStake)\r\n output[i].provisionalMatchedStake = response.orders[i].provisionalMatchedStake.amount;\r\n\r\n if (response.orders[i].matchedAgainstSideStake)\r\n output[i].matchedAgainstSideStake = response.orders[i].matchedAgainstSideStake.amount;\r\n\r\n if (response.orders[i].provisionalMatchedAgainstSideStake)\r\n output[i].provisionalMatchedAgainstSideStake = response.orders[i].provisionalMatchedAgainstSideStake.amount;\r\n\r\n if (gecPrivate._orderCache != null) {\r\n if (gecPrivate._orderCache[request.orders[i].orderId] != null)\r\n output[i].order = gecPrivate._orderCache[request.orders[i].orderId]\r\n }\r\n }\r\n }\r\n request.callbackOnSuccess.call(this, output);\r\n } else {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n }\r\n };\r\n /****************************\r\n cancelOrders\r\n ****************************/\r\n gec.Controller.prototype.cancelOrders = function (params) {\r\n if (gecPrivate.userContext == null) {\r\n params.callbackOnException.call(this, new gec.AsyncException({ returnCode: 590 }));\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n if (params.marketIds != null) {\r\n if (params.marketIds.length > 0) {\r\n request.orderIds = null;\r\n request.marketIds = params.marketIds;\r\n }\r\n }\r\n else {\r\n if (params.orderIds.length > 0) {\r\n request.marketIds = null;\r\n request.orderIds = params.orderIds;\r\n }\r\n }\r\n if (!((request.orderIds == null) && (request.marketIds == null)))\r\n this.sendRequest(\"/CancelOrders.ashx\", request, _cancelOrdersResponse);\r\n\r\n }\r\n };\r\n var _cancelOrdersResponse = function (request, response) {\r\n\r\n if (response.returnCode != 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n } else {\r\n var returnObj = [];\r\n if (response.orders != null) {\r\n\r\n for (var i = 0; i < response.orders.length; i++) {\r\n returnObj[i] = {};\r\n returnObj[i].orderId = response.orders[i].orderId;\r\n returnObj[i].cancelledForSideStake = response.orders[i].cancelledForSideStake.amount;\r\n if (gecPrivate._orderCache[response.orders[i].orderId] != null) {\r\n if (response.orders[i].cancelledForSideStake.amount < gecPrivate._orderCache[response.orders[i].orderId].requestedStake) {\r\n gecPrivate._orderCache[response.orders[i].orderId].orderStatusId = 3;\r\n }\r\n else {\r\n gecPrivate._orderCache[response.orders[i].orderId].orderStatusId = 3;\r\n\r\n if (gecPrivate._orderCache[response.orders[i].orderId].fireOnChange != null)\r\n gecPrivate._orderCache[response.orders[i].orderId].fireOnChange.call(null, { orderId: response.orders[i].orderId, order: null });\r\n\r\n gecPrivate._orderCache[response.orders[i].orderId] = null;\r\n delete gecPrivate._orderCache[response.orders[i].orderId];\r\n _deletedOrderIds[response.orders[i].orderId] = true;\r\n\r\n }\r\n }\r\n }\r\n }\r\n request.callbackOnSuccess.call(this, returnObj);\r\n }\r\n };\r\n\r\n /****************************\r\n suspendOrders\r\n ****************************/\r\n gec.Controller.prototype.suspendOrders = function (params) {\r\n\r\n if (gecPrivate.userContext == null) {\r\n\r\n params.callbackOnException.call(this, new gec.AsyncException({ returnCode: 590 }));\r\n\r\n } else {\r\n\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n if (params.marketIds !== undefined) {\r\n if (params.marketIds.length > 0) {\r\n request.marketIds = params.marketIds;\r\n }\r\n } else {\r\n if (params.orderIds.length > 0) {\r\n request.orderIds = params.orderIds;\r\n }\r\n }\r\n\r\n if (!((request.orderIds === undefined) && (request.marketIds === undefined))) {\r\n this.sendRequest(\"/SuspendOrders.ashx\", request, _suspendOrdersResponse);\r\n }\r\n\r\n }\r\n };\r\n var _suspendOrdersResponse = function (request, response) {\r\n\r\n if (response.returnCode != 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n } else {\r\n if (response.orders) {\r\n var orderCache = gecPrivate._orderCache;\r\n\r\n response.orders.forEach(function (thisOrderResponse) {\r\n if (thisOrderResponse.suspendedForSideStake && thisOrderResponse.suspendedForSideStake.amount > 0 && orderCache[thisOrderResponse.orderId] !== undefined) {\r\n orderCache[thisOrderResponse.orderId].orderStatusId = 6;\r\n }\r\n\r\n })\r\n }\r\n request.callbackOnSuccess.call(this, response.orders);\r\n }\r\n };\r\n\r\n /****************************\r\n unsuspendOrders\r\n ****************************/\r\n\r\n gec.Controller.prototype.unsuspendOrders = function (params) {\r\n\r\n if (gecPrivate.userContext == null) {\r\n\r\n params.callbackOnException.call(this, new gec.AsyncException({ returnCode: 590 }));\r\n\r\n } else {\r\n\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n if (params.orderIds.length > 0) {\r\n request.orderIds = params.orderIds;\r\n }\r\n\r\n if (request.orderIds !== undefined) {\r\n this.sendRequest(\"/UnsuspendOrders.ashx\", request, _unsuspendOrdersResponse);\r\n }\r\n\r\n }\r\n };\r\n\r\n var _unsuspendOrdersResponse = function (request, response) {\r\n\r\n if (response.returnCode != 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n } else {\r\n if (request.orderIds) {\r\n var orderCache = gecPrivate._orderCache;\r\n\r\n request.orderIds.forEach(function (thisOrderRequest) {\r\n if (orderCache[thisOrderRequest] !== undefined) {\r\n orderCache[thisOrderRequest].orderStatusId = 1;// assume its active if it was previously suspended\r\n }\r\n\r\n })\r\n }\r\n request.callbackOnSuccess.call(this, {});\r\n }\r\n };\r\n\r\n /****************************\r\n listExchangeMarketInformation\r\n ****************************/\r\n gec.Controller.prototype.listExchangeMarketInformation = function (params) {\r\n if ((gecPrivate.controllerDefaults == null) && (gecPrivate.userContext == null)) {\r\n request.callbackOnException.call(this, { returnCode: 591 });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.marketIds = params.marketIds\r\n\r\n this.sendRequest(\"/ListExchangeMarketInformation.ashx\", request, _listExchangeMarketInformationResponse);\r\n }\r\n };\r\n var _listExchangeMarketInformationResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n if (request.callbackOnException != null)\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n var returnObject = [];\r\n\r\n for (var marketI = 0; marketI < response.markets.length; marketI++) {\r\n if (gecPrivate._eventClassifiers[response.markets[marketI].eventClassifierId] == null) {\r\n gecPrivate._eventClassifiers[response.markets[marketI].eventClassifierId] = {};\r\n if (response.markets[marketI].eventClassifierFullName == null) response.markets[marketI].eventClassifierFullName = \"unknown\";\r\n }\r\n gecPrivate._eventClassifiers[response.markets[marketI].eventClassifierId].eventClassifierId = response.markets[marketI].eventClassifierId;\r\n gecPrivate._eventClassifiers[response.markets[marketI].eventClassifierId].eventClassifierFullName = response.markets[marketI].eventClassifierFullName;\r\n\r\n if (gecPrivate._markets[response.markets[marketI].marketId] == null) {\r\n gecPrivate._markets[response.markets[marketI].marketId] = {};\r\n }\r\n gecPrivate._markets[response.markets[marketI].marketId].marketId = response.markets[marketI].marketId;\r\n gecPrivate._markets[response.markets[marketI].marketId].marketName = response.markets[marketI].marketName;\r\n gecPrivate._markets[response.markets[marketI].marketId].eventClassifier = gecPrivate._eventClassifiers[response.markets[marketI].eventClassifierId];\r\n\r\n if (gecPrivate._markets[response.markets[marketI].marketId].selections == null) {\r\n gecPrivate._markets[response.markets[marketI].marketId].selections = response.markets[marketI].selections;\r\n }\r\n\r\n for (var selectionI = 0; selectionI < response.markets[marketI].selections.length; selectionI++) {\r\n if (gecPrivate._selections[response.markets[marketI].selections[selectionI].selectionId] == null) {\r\n gecPrivate._selections[response.markets[marketI].selections[selectionI].selectionId] = {};\r\n }\r\n gecPrivate._selections[response.markets[marketI].selections[selectionI].selectionId].selectionName = response.markets[marketI].selections[selectionI].selectionName;\r\n }\r\n }\r\n\r\n request.callbackOnSuccess.call(this, returnObject);\r\n }\r\n };\r\n\r\n\r\n /**************************\r\n\r\n AAPI Calls for Push Services\r\n **************************/\r\n gec.Controller.prototype.subscribeExchangeMarket = function (params) {\r\n var request = new AAPIRequest(params);\r\n\r\n\r\n request.eventClassifierId = params.eventClassifierId;\r\n request.marketTypesToExclude = params.marketTypesToExclude;\r\n request.marketTypesToInclude = params.marketTypesToInclude;\r\n request.wantIndirectMarkets = params.wantIndirectMarkets;\r\n request.fetchOnly = params.fetchOnly;\r\n\r\n };\r\n var _subscribeExchangeMarketResponse = function (request, response) {\r\n\r\n\r\n\r\n //optionals\r\n if (request.fireOnSubscribedExchangeMarketITL != null)\r\n request.fireOnSubscribedExchangeMarketITL.call(this);\r\n\r\n if (request.fireOnSubscribedExchangeSelectionITL != null)\r\n request.fireOnSubscribedExchangeSelectionITL.call(this);\r\n\r\n if (request.fireOnSubscribedMarketScoresITL != null)\r\n request.fireOnSubscribedMarketScoresITL.call(this);\r\n\r\n if (request.fireOnSubscribedExchangeMarketDelta != null)\r\n request.fireOnSubscribedExchangeMarketDelta.call(this);\r\n\r\n if (request.fireOnSubscribedExchangeSelectionDelta != null)\r\n request.fireOnSubscribedExchangeSelectionDelta.call(this);\r\n\r\n if (request.fireOnSubscribedMarketScoresDelta != null)\r\n request.fireOnSubscribedMarketScoresDelta.call(this);\r\n\r\n if (request.fireOnITLCycleComplete != null)\r\n request.fireOnITLCycleComplete.call(this);\r\n\r\n\r\n\r\n request.callbackOnSuccess.call(this, response);\r\n\r\n };\r\n\r\n /****************************\r\n getExchangeEvent\r\n ****************************/\r\n gec.Controller.prototype.getExchangeEvent = function (params) {\r\n if ((gecPrivate.controllerDefaults == null) && (gecPrivate.userContext == null)) {\r\n params.callbackOnException.call(this, { returnCode: 591, message: \"DefaultsNotLoaded\" });;\r\n\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.eventClassifierId = params.eventClassifierId;\r\n request.wantIndirectDescendents = params.wantIndirectDescendents;\r\n request.wantMultiplesOnly = params.wantMultiplesOnly;\r\n\r\n if (gecPrivate.userContext != null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.language = gecPrivate.userContext.language;\r\n request.integrationPartnerId = gecPrivate.userContext.integrationPartnerId;\r\n }\r\n else //use defaults\r\n {\r\n request.language = gecPrivate.controllerDefaults.language;\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n }\r\n\r\n this.sendRequest(\"/ListExchangeMarkets.ashx\", request, _getExchangeEventResponse);\r\n }\r\n\r\n };\r\n var _getExchangeEventResponse = function (request, response) {\r\n if (response.returnCode === 0) {\r\n delete response.returnCode;\r\n\r\n for (var i = 0; i < response.eventClassifiers.length; i++) {\r\n var responseEvent = response.eventClassifiers[i];\r\n\r\n gecPrivate._eventClassifiers[responseEvent.eventClassifierId] = gecPrivate._eventClassifiers[responseEvent.eventClassifierId] || new gec.EventClassifier();\r\n\r\n var thisEvent = gecPrivate._eventClassifiers[responseEvent.eventClassifierId];\r\n\r\n thisEvent.eventClassifierId = responseEvent.eventClassifierId;\r\n thisEvent.eventClassifierName = responseEvent.name;\r\n thisEvent.shortcutAllMarkets = responseEvent.shortcutAllMarkets;\r\n thisEvent.isEnabledForMultipleBets = responseEvent.isEnabledForMultipleBets;\r\n\r\n thisEvent._parentEventClassifierId = responseEvent.parentEventClassifierId;\r\n thisEvent.displayOrder = responseEvent.displayOrder;\r\n thisEvent.marketTypeIds = [];\r\n thisEvent.keep = true;\r\n\r\n\r\n for (marketTypeCount in responseEvent.marketTypes) {\r\n thisEvent.marketTypeIds[marketTypeCount] = responseEvent.marketTypes[marketTypeCount];\r\n }\r\n\r\n (function (thisEvent) {\r\n gecPrivate._eventClassifiers[thisEvent.eventClassifierId].getChildren = function () {\r\n if (gecPrivate._eventClassifiers[thisEvent.eventClassifierId] == null) return [];\r\n return _fillEvents(gecPrivate._eventClassifiers[thisEvent.eventClassifierId].eventClassifierId);\r\n }\r\n gecPrivate._eventClassifiers[thisEvent.eventClassifierId].getParent = function () {\r\n if (gecPrivate._eventClassifiers[thisEvent.eventClassifierId] != null)//may have completed\r\n return gecPrivate._eventClassifiers[gecPrivate._eventClassifiers[thisEvent.eventClassifierId]._parentEventClassifierId];\r\n else\r\n return null;\r\n }\r\n gecPrivate._eventClassifiers[thisEvent.eventClassifierId].getMarkets = function () {\r\n if (_eventsMarkets[thisEvent.eventClassifierId] === undefined) {\r\n return [];\r\n }\r\n else {\r\n return _eventsMarkets[thisEvent.eventClassifierId].markets;\r\n }\r\n }\r\n })(thisEvent);\r\n\r\n\r\n _eventsMarkets[thisEvent.eventClassifierId] = {};\r\n _eventsMarkets[thisEvent.eventClassifierId].markets = [];\r\n }\r\n var eventIdIndex = {};\r\n eventIdIndex[request.eventClassifierId] = true;\r\n\r\n for (ev in gecPrivate._eventClassifiers) {\r\n\r\n if (gecPrivate._eventClassifiers[ev].eventClassifierName === \"ROOT\") {\r\n delete gecPrivate._eventClassifiers[ev]; //remove whole object\r\n } else {\r\n if (gecPrivate._eventClassifiers[ev].keep) {\r\n delete gecPrivate._eventClassifiers[ev].keep; //remove keep property\r\n } else {\r\n if (GBEUtils.isDescendantOf(gecPrivate._eventClassifiers[ev], eventIdIndex)) {\r\n delete _eventsMarkets[gecPrivate._eventClassifiers[ev].eventClassifierId];\r\n delete gecPrivate._eventClassifiers[ev]; //remove whole object\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n if (response.markets != null) {\r\n for (i = 0; i < response.markets.length; i++) {\r\n var thisMarket = new gec.Market();\r\n var responseMarket = response.markets[i];\r\n thisMarket.marketId = responseMarket.marketId;\r\n thisMarket.marketName = responseMarket.name;\r\n thisMarket.marketType = responseMarket.marketType;\r\n thisMarket.willBeInRunning = responseMarket.willBeInRunning;\r\n thisMarket.currentlyInRunning = responseMarket.currentlyInRunning;\r\n thisMarket.isEnabledForMultipleBets = responseMarket.isEnabledForMultipleBets;\r\n thisMarket.isEnabledForEachWayBetting = responseMarket.isEnabledForEachWayBetting;\r\n thisMarket.isEnabledForSPBetting = responseMarket.isEnabledForSPBetting;\r\n thisMarket.startTime = responseMarket.startTime;\r\n thisMarket.keep = true; //temp value to be removed later\r\n\r\n (function (responseMarket) {\r\n thisMarket.getEventClassifier = function () {\r\n return gecPrivate._eventClassifiers[responseMarket.parentEventClassifierId];\r\n };\r\n })(responseMarket);\r\n\r\n thisMarket.displayOrder = responseMarket.displayOrder;\r\n\r\n gecPrivate._markets[thisMarket.marketId] = thisMarket;\r\n\r\n _eventsMarkets[responseMarket.parentEventClassifierId].markets[_eventsMarkets[responseMarket.parentEventClassifierId].markets.length] = gecPrivate._markets[thisMarket.marketId];\r\n\r\n }\r\n }\r\n for (mk in gecPrivate._markets) {\r\n if (gecPrivate._markets[mk].keep) {\r\n delete gecPrivate._markets[mk].keep; //remove keep property\r\n } else {\r\n\r\n if (gecPrivate._markets[mk].getEventClassifier() !== undefined) {\r\n var eventId = gecPrivate._markets[mk].getEventClassifier().eventClassifierId;\r\n\r\n if (_eventsMarkets[eventId]) {\r\n var m = _eventsMarkets[eventId].markets.length;\r\n while (m--) {\r\n\r\n if (_eventsMarkets[eventId].markets[m].marketId == mk) {\r\n _eventsMarkets[eventId].markets.splice(m, 1);\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n delete gecPrivate._markets[mk]; //remove whole object\r\n }\r\n }\r\n\r\n if (request.callbackOnSuccess != null)\r\n request.callbackOnSuccess.call(this, response);\r\n } else {\r\n request.callbackOnException.call(this, new gec.AsyncException({ returnCode: response.returnCode }));\r\n }\r\n\r\n };\r\n\r\n\r\n /****************************\r\n listOrders\r\n ****************************/\r\n gec.Controller.prototype.listOrders = function (params) {\r\n if (gecPrivate.userContext !== null) {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n request.includeFullyMatched = params.includeFullyMatched;\r\n request.includeFullyUnmatched = params.includeFullyUnmatched;\r\n request.includeSuspended = params.includeSuspended;\r\n request.includeUnsuspended = params.includeUnsuspended;\r\n request.validFromFilter = params.validFromFilter;\r\n request.validToFilter = params.validToFilter;\r\n request.orderStatusFilter = params.orderStatusFilter;\r\n request.settledFromFilter = params.settledFromFilter;\r\n request.settledToFilter = params.settledToFilter;\r\n request.orderById = params.orderById;\r\n //request.offset = {};\r\n request.startOffset = params.startOffset;\r\n request.numberToReturn = params.numberToReturn;\r\n if (params.minUnmatchedAmount !== null) {\r\n request.minUnmatchedAmount = {};\r\n request.minUnmatchedAmount.amount = params.minUnmatchedAmount;\r\n request.minUnmatchedAmount.currency = null;\r\n }\r\n if (params.minMatchedAmount !== null) {\r\n request.minMatchedAmount = {};\r\n request.minMatchedAmount.amount = params.minMatchedAmount;\r\n request.minMatchedAmount.currency = null;\r\n }\r\n this.sendRequest(\"/ListOrders.ashx\", request, _listOrdersResponse);\r\n }\r\n else {\r\n request.callbackOnException.call(this, { returnCode: 590 });\r\n }\r\n\r\n };\r\n var _listOrdersResponse = function (request, response) {\r\n\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n\r\n } else {\r\n var orders = [];\r\n if ((response.returnCode == 0) && (response.totalResultSetSize > 0)) {\r\n\r\n for (var orderI = 0; orderI < response.orders.length; orderI++) {\r\n var responseOrder = response.orders[orderI];\r\n var orderObject = new gec.OrderDetail();\r\n (function (responseOrder) {\r\n\r\n orderObject.orderId = responseOrder.orderId;\r\n orderObject.eventClassifierFullName = function () { return responseOrder.eventClassifierName; };\r\n orderObject.marketId = responseOrder.marketId;\r\n orderObject.marketName = responseOrder.marketName;\r\n orderObject.selectionId = responseOrder.selectionId;\r\n orderObject.selectionName = responseOrder.selectionName;\r\n orderObject.issuedAt = responseOrder.issuedAt;\r\n orderObject.lastChangedAt = responseOrder.lastChangedAt;\r\n orderObject.expiresAt = responseOrder.expiresAt;\r\n orderObject.validFrom = responseOrder.validFrom;\r\n orderObject.orderFillType = responseOrder.orderFillType;\r\n orderObject.fillOrKillThreshold = responseOrder.fillOrKillThreshold.amount;\r\n orderObject.marketType = responseOrder.marketType;\r\n orderObject.orderStatusId = responseOrder.status;\r\n orderObject.requestedStake = responseOrder.requestedForSideStake.amount;\r\n orderObject.requestedPrice = responseOrder.requestedForSidePrice;\r\n orderObject.requestedAveragePrice = responseOrder.requestedAverageForSidePrice;\r\n orderObject.expectedSelectionResetCount = responseOrder.expectedSelectionResetCount;\r\n orderObject.expectedWithdrawalSequenceNumber = responseOrder.expectedWithdrawalSequenceNumber;\r\n orderObject.isFreeBet = responseOrder.isFreeBet;\r\n\r\n //if (!responseOrder.polarity) {\r\n orderObject.matchedStake = responseOrder.totalForSideStake.amount;\r\n //}\r\n ////else {\r\n // orderObject.matchedStake = responseOrder.totalAgainstSideStake.amount;\r\n //}\r\n orderObject.unmatchedStake = responseOrder.forSideAmountUnmatched.amount;\r\n orderObject.averageMatchedPrice = responseOrder.averageForSidePrice;\r\n orderObject.matchingTimestamp = responseOrder.matchingTimestamp;\r\n orderObject.polarityId = responseOrder.polarity;\r\n\r\n orders[orders.length] = orderObject;\r\n })(responseOrder);\r\n }\r\n }\r\n if (typeof request.numberToReturn !== \"undefined\" || (typeof request.numberToReturn !== \"undefined\" && request.numberToReturn !== null)) {\r\n request.callbackOnSuccess.call(this, { orders: orders, totalResultSetSize: response.totalResultSetSize });\r\n } else {\r\n request.callbackOnSuccess.call(this, orders);\r\n }\r\n }\r\n };\r\n\r\n /****************************\r\n getExchangePrices\r\n ****************************/\r\n gec.Controller.prototype.getExchangePrices = function (params) {\r\n if ((gecPrivate.controllerDefaults == null) && (gecPrivate.userContext == null)) {\r\n request.callbackOnException.call(this, { returnCode: 591 });\r\n }\r\n else {\r\n var requiredParams = {\r\n thresholdAmount: 1,\r\n wantIcons: true,\r\n justRefreshPrices: true,\r\n numberForPricesRequired: 1,\r\n numberAgainstPricesRequired: 1\r\n };\r\n\r\n var request = new gec.IAPIRequest(params, requiredParams);\r\n var currencyCode = params.currency || gecPrivate.controllerDefaults.currency;\r\n request.callbackOnException = params.callbackOnException;\r\n request.callbackOnSuccess = params.callbackOnSuccess;\r\n\r\n if (gecPrivate.userContext != null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n }\r\n else //use defaults\r\n {\r\n request.language = gecPrivate.controllerDefaults.language;\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n request.currency = gecPrivate.controllerDefaults.currency;\r\n }\r\n request.currency = currencyCode;\r\n request.priceFormat = gecPrivate.controllerDefaults.priceFormat;\r\n request.wantIcons = params.wantIcons;\r\n request.justRefreshPrices = params.justRefreshPrices;\r\n request.thresholdAmount = { amount: params.thresholdAmount, currency: currencyCode };\r\n request.numberForPricesRequired = params.numberForPricesRequired;\r\n request.numberAgainstPricesRequired = params.numberAgainstPricesRequired;\r\n request.playMarkets = params.playMarkets;\r\n request.wantMarketDescription = params.wantMarketDescription;\r\n request.wantTabInformation = params.wantTabInformation;\r\n request.maxNoOfSelectionsToReturn = params.maxNoOfSelectionsToReturn;\r\n request.contextEvents = params.contextEvents;\r\n\r\n if (params.eventClassifierId != null) {\r\n request.eventClassifierId = params.eventClassifierId;\r\n request.marketType = params.marketTypeId;\r\n }\r\n else {\r\n if (params.eventClassifier != undefined) {\r\n request.eventClassifierId = params.eventClassifier.eventClassifierId;\r\n request.marketType = params.marketTypeId;\r\n } else {\r\n request.marketIds = [];\r\n if (params.markets != undefined) {\r\n for (var i = 0; i < params.markets.length; i++) { request.marketIds[i] = params.markets[i].marketId; }\r\n }\r\n else {\r\n if (params.selectionIds !== undefined) {\r\n request.selectionIds = params.selectionIds;\r\n }\r\n request.marketIds = params.marketIds;\r\n }\r\n }\r\n }\r\n this.sendRequest(\"/GetExchangePrices.ashx\", request, getExchangePricesResponse, getExchangePricesXHR);\r\n }\r\n };\r\n var getExchangePricesResponse = function (request, response) {\r\n\r\n\r\n if (response.returnCode != 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n var marketArrays = [];\r\n var marketI = 0;\r\n\r\n response.markets = response.markets.filter(function (market) {\r\n return (market.returnCode !== 16);\r\n });\r\n\r\n for (var i = 0; i < response.markets.length; i++) {\r\n var thisMarket = new gec.MarketDetail();\r\n var responseMarket = response.markets[i];\r\n var cachedMarket = gecPrivate._markets[responseMarket.marketId];\r\n if (cachedMarket == null) cachedMarket = {};\r\n\r\n thisMarket.marketId = responseMarket.marketId;\r\n\r\n if (response.markets[i].returnCode == 16) {\r\n thisMarket.marketStatusId = 4;\r\n thisMarket.totalMatchedAmount = 0;\r\n marketArrays[marketI++] = thisMarket;\r\n }\r\n\r\n if (response.markets[i].returnCode == 0) {\r\n\r\n //optional\r\n if (responseMarket.marketDescription) {\r\n thisMarket.marketDescription = responseMarket.marketDescription;\r\n }\r\n\r\n thisMarket.ancestryChain = responseMarket.ancestryChain || response.ancestryChain;\r\n thisMarket.previousEventClassifier = response.previousEventClassifier;\r\n thisMarket.nextEventClassifier = response.nextEventClassifier;\r\n\r\n if (i === 0 && response.tabs) {\r\n thisMarket.tabs = response.tabs;\r\n\r\n if (responseMarket.parentEventClassifierId > 0) {\r\n var eventTabs = getOrCreateEventTabs(responseMarket.parentEventClassifierId);\r\n\r\n response.tabs.forEach(function (tab, tabIndex) {\r\n\r\n tab.marketIds = tab.marketIds.split(\"~\");\r\n tab.marketIds.forEach(function (x, y, z) { z[y] = x | 0 }); // convert to numbers\r\n eventTabs.addTab(tabIndex, tab);\r\n\r\n });\r\n\r\n\r\n\r\n }\r\n\r\n }\r\n\r\n if (responseMarket.parentEventClassifierId > 0)\r\n thisMarket.eventClassifierId = responseMarket.parentEventClassifierId;\r\n\r\n if (responseMarket.eventClassifierFullName)\r\n thisMarket.eventClassifierFullName = responseMarket.eventClassifierFullName;\r\n\r\n if (responseMarket.name)\r\n thisMarket.marketName = responseMarket.name;\r\n thisMarket.marketType = responseMarket.type;\r\n\r\n thisMarket.displayOrder = responseMarket.displayOrder;\r\n\r\n thisMarket.willBeInRunning = responseMarket.isInRunningAllowed;\r\n thisMarket.isCurrentlyInRunning = responseMarket.isCurrentlyInRunning;\r\n thisMarket.inRunningDelaySeconds = responseMarket.inRunningDelaySeconds;\r\n thisMarket.isEnabledForMultipleBets = (responseMarket.isEnabledForMultiples) ? responseMarket.isEnabledForMultiples : cachedMarket.isEnabledForMultipleBets;\r\n thisMarket.isEnabledForEachWayBetting = responseMarket.isEnabledForEachWayBetting;\r\n thisMarket.isEnabledForSPBetting = responseMarket.isEnabledForSPBetting;\r\n thisMarket.startTime = responseMarket.startTime;\r\n thisMarket.suspendTime = responseMarket.suspendTime;\r\n\r\n thisMarket.managedWhenInRunning = responseMarket.managedWhenInRunning;\r\n\r\n //thisMarket.getEventClassifier = function () { return gecPrivate._eventClassifiers[responseMarket.parentEventClassifierId]; };\r\n\r\n if (responseMarket.selectionIconsURL) {\r\n thisMarket.selectionIconsURL = responseMarket.selectionIconsURL;\r\n thisMarket.iconWidth = responseMarket.iconWidth;\r\n thisMarket.iconHeight = responseMarket.iconHeight;\r\n }\r\n\r\n\r\n thisMarket.placePayout = responseMarket.placePayout;\r\n\r\n thisMarket.numberOfWinningSelections = responseMarket.numberOfWinningSelections;\r\n\r\n thisMarket.marketStatusId = responseMarket.status;\r\n thisMarket.withdrawalSequenceNumber = responseMarket.withdrawalSequenceNumber;\r\n\r\n if (responseMarket.totalMatchedAmount != null)\r\n thisMarket.totalMatchedAmount = responseMarket.totalMatchedAmount.amount;\r\n\r\n responseMarket.selections.sort(gec.SortOnDisplayOrder);\r\n\r\n for (var j = 0; j < responseMarket.selections.length; j++) {\r\n var thisSelection = responseMarket.selections[j];\r\n thisMarket.selections[j] = new gec.SelectionDetail();\r\n thisMarket.selections[j].selectionId = thisSelection.selectionId;\r\n thisMarket.selections[j].selectionName = thisSelection.name;\r\n thisMarket.selections[j].selectionIconIndex = thisSelection.selectionIconIndex;\r\n thisMarket.selections[j].selectionBlurb = thisSelection.selectionBlurb;\r\n thisMarket.selections[j].selectionStatusId = thisSelection.status;\r\n thisMarket.selections[j].selectionResetCount = thisSelection.selectionResetCount;\r\n thisMarket.selections[j].withdrawalFactor = thisSelection.selectionDeductionFactor;\r\n\r\n //thisMarket.selections[j].displayOrder = response.markets[i].selections[j].displayOrder;\r\n\r\n for (var forPriceCount = 0; forPriceCount < thisSelection.forSidePrices.length; forPriceCount++) {\r\n thisMarket.selections[j].forExchangePrices[forPriceCount] = new gec.ExchangePrice();\r\n thisMarket.selections[j].forExchangePrices[forPriceCount].price = thisSelection.forSidePrices[forPriceCount].price;\r\n thisMarket.selections[j].forExchangePrices[forPriceCount].displayPrice = thisSelection.forSidePrices[forPriceCount].displayPrice;\r\n thisMarket.selections[j].forExchangePrices[forPriceCount].amountAvailable = gecPrivate._base.formatDecimal(thisSelection.forSidePrices[forPriceCount].stake.amount, 0, \"\");\r\n thisMarket.selections[j].forExchangePrices[forPriceCount].hasRecentlyChanged = true;\r\n\r\n }\r\n for (var againstPriceCount = 0; againstPriceCount < thisSelection.againstSidePrices.length; againstPriceCount++) {\r\n thisMarket.selections[j].againstExchangePrices[againstPriceCount] = new gec.ExchangePrice();\r\n thisMarket.selections[j].againstExchangePrices[againstPriceCount].price = thisSelection.againstSidePrices[againstPriceCount].price;\r\n thisMarket.selections[j].againstExchangePrices[againstPriceCount].displayPrice = thisSelection.againstSidePrices[againstPriceCount].displayPrice;\r\n thisMarket.selections[j].againstExchangePrices[againstPriceCount].amountAvailable = gecPrivate._base.formatDecimal(thisSelection.againstSidePrices[againstPriceCount].stake.amount, 0, \"\");\r\n thisMarket.selections[j].againstExchangePrices[againstPriceCount].hasRecentlyChanged = true;\r\n }\r\n\r\n thisMarket.selections[j].market = thisMarket;\r\n gecPrivate._selections[thisMarket.selections[j].selectionId] = thisMarket.selections[j];\r\n }\r\n\r\n marketArrays[marketI++] = thisMarket;\r\n }\r\n }\r\n request.callbackOnSuccess.call(this, marketArrays);\r\n }\r\n };\r\n\r\n /****************************\r\n getExchangePricesEnhanced\r\n ****************************/\r\n gec.Controller.prototype.getExchangePricesEnhanced = function (params) {\r\n if ((gecPrivate.controllerDefaults == null) && (gecPrivate.userContext == null)) {\r\n request.callbackOnException.call(this, { returnCode: 591 });\r\n }\r\n else {\r\n var currencyCode = params.currency || gecPrivate.controllerDefaults.currency;\r\n\r\n var request = new gec.IAPIRequest(params);\r\n request.callbackOnException = params.callbackOnException;\r\n request.callbackOnSuccess = params.callbackOnSuccess;\r\n\r\n if (gecPrivate.userContext != null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n }\r\n else { //use defaults\r\n request.language = gecPrivate.controllerDefaults.language;\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n request.currency = currencyCode;\r\n request.priceFormat = gecPrivate.controllerDefaults.priceFormat;\r\n }\r\n\r\n request.marketId = params.marketId;\r\n request.thresholdAmount = { amount: params.thresholdAmount, currency: currencyCode };\r\n\r\n request.wantMarketDescription = params.wantMarketDescription;\r\n request.wantTabInformation = params.wantTabInformation;\r\n\r\n request.numberForPricesRequired = params.numberForPricesRequired;\r\n request.numberAgainstPricesRequired = params.numberAgainstPricesRequired;\r\n\r\n request.wantIcons = params.wantIcons;\r\n\r\n request.wantMultiplesOnly = params.wantMultiplesOnly;\r\n\r\n this.sendRequest(\"/GetExchangePricesEnhanced.ashx\", request, _getExchangePricesEnhancedResponse);\r\n }\r\n };\r\n var _getExchangePricesEnhancedResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n // TODO: NB - This check can be removed when IAPI work outlined in #47844 has been completed...\r\n if (response.status === 0) {\r\n request.callbackOnException.call(this, { returnCode: 16 });\r\n } else {\r\n var marketDetail = new gec.MarketDetail();\r\n\r\n marketDetail.marketId = response.marketId;\r\n marketDetail.eventClassifierId = response.parentEventClassifierId;\r\n marketDetail.eventClassifierAncestryChain = response.eventClassifierAncestryChain;\r\n marketDetail.eventClassifierFullName = response.eventClassifierFullName;\r\n marketDetail.marketName = response.name;\r\n marketDetail.isEnabledForMultipleBets = response.isEnabledForMultiples;\r\n if (response.marketDescription) {\r\n marketDetail.marketDescription = response.marketDescription;\r\n }\r\n if (response.tabs) {\r\n marketDetail.tabs = response.tabs;\r\n\r\n marketDetail.tabs.forEach(function (val, index) {\r\n val.marketIds = val.marketIds.split(\"~\");\r\n });\r\n }\r\n if (response.selectionIconsURL != null) {\r\n marketDetail.selectionIconsURL = response.selectionIconsURL;\r\n marketDetail.iconWidth = response.iconWidth;\r\n marketDetail.iconHeight = response.iconHeight;\r\n }\r\n marketDetail.marketType = response.marketType;\r\n // TODO: isPlayMarket???\r\n marketDetail.placePayout = response.placePayout;\r\n marketDetail.willBeInRunning = response.isInRunningAllowed; // TODO: Same thing???\r\n //marketDetail.isInRunningAllowed = response.isInRunningAllowed;\r\n // TODO: dangerballBehaviour???\r\n // TODO: lastDangerballCheckpointAt???\r\n // TODO: wasRollback???\r\n marketDetail.managedWhenInRunning = response.managedWhenInRunning;\r\n marketDetail.inRunningDelaySeconds = response.inRunningDelaySeconds;\r\n if (response.totalMatchedAmount != null)\r\n marketDetail.totalMatchedAmount = response.totalMatchedAmount.amount;\r\n // TODO: effectiveMarketTradingRestriction???\r\n marketDetail.isCurrentlyInRunning = response.isCurrentlyInRunning;\r\n // TODO: isMarketConfused???\r\n marketDetail.numberOfWinningSelections = response.numberOfWinningSelections;\r\n marketDetail.startTime = response.startTime;\r\n marketDetail.suspendTime = response.suspendTime;\r\n marketDetail.marketStatusId = response.status;\r\n marketDetail.withdrawalSequenceNumber = response.withdrawalSequenceNumber;\r\n marketDetail.isEnabledForEachWayBetting = response.isEnabledForEachWayBetting;\r\n marketDetail.isEnabledForSPBetting = response.isEnabledForSPBetting;\r\n //\r\n marketDetail.selections.sort(gec.SortOnDisplayOrder);\r\n\r\n var forPriceCount, againstPriceCount;\r\n for (var j = 0; j < response.selections.length; j++) {\r\n var thisSelection = response.selections[j];\r\n marketDetail.selections[j] = new gec.SelectionDetail();\r\n marketDetail.selections[j].selectionId = thisSelection.selectionId;\r\n marketDetail.selections[j].selectionName = thisSelection.name;\r\n marketDetail.selections[j].selectionBlurb = thisSelection.selectionBlurb;\r\n // TODO: selectionIcon???\r\n marketDetail.selections[j].selectionIconIndex = thisSelection.selectionIconIndex;\r\n marketDetail.selections[j].selectionStatusId = thisSelection.status;\r\n marketDetail.selections[j].selectionResetCount = thisSelection.selectionResetCount;\r\n marketDetail.selections[j].withdrawalFactor = thisSelection.selectionDeductionFactor;\r\n\r\n //\r\n for (forPriceCount = 0; forPriceCount < thisSelection.forSidePrices.length; forPriceCount++) {\r\n marketDetail.selections[j].forExchangePrices[forPriceCount] = new gec.ExchangePrice();\r\n marketDetail.selections[j].forExchangePrices[forPriceCount].price = thisSelection.forSidePrices[forPriceCount].price;\r\n marketDetail.selections[j].forExchangePrices[forPriceCount].displayPrice = thisSelection.forSidePrices[forPriceCount].displayPrice;\r\n marketDetail.selections[j].forExchangePrices[forPriceCount].amountAvailable = gecPrivate._base.formatDecimal(thisSelection.forSidePrices[forPriceCount].stake.amount, 0, \"\");\r\n marketDetail.selections[j].forExchangePrices[forPriceCount].hasRecentlyChanged = true;\r\n }\r\n\r\n //\r\n for (againstPriceCount = 0; againstPriceCount < thisSelection.againstSidePrices.length; againstPriceCount++) {\r\n marketDetail.selections[j].againstExchangePrices[againstPriceCount] = new gec.ExchangePrice();\r\n marketDetail.selections[j].againstExchangePrices[againstPriceCount].price = thisSelection.againstSidePrices[againstPriceCount].price;\r\n marketDetail.selections[j].againstExchangePrices[againstPriceCount].displayPrice = thisSelection.againstSidePrices[againstPriceCount].displayPrice;\r\n marketDetail.selections[j].againstExchangePrices[againstPriceCount].amountAvailable = gecPrivate._base.formatDecimal(thisSelection.againstSidePrices[againstPriceCount].stake.amount, 0, \"\");\r\n marketDetail.selections[j].againstExchangePrices[againstPriceCount].hasRecentlyChanged = true;\r\n }\r\n\r\n marketDetail.selections[j].market = marketDetail;\r\n }\r\n\r\n request.callbackOnSuccess.call(this, {\r\n marketDetail: marketDetail,\r\n topLevelEventClassifierId: response.topLevelEventClassifierId,\r\n grandparentEventClassifierId: response.grandparentEventClassifierId,\r\n relatedEventClassifiers: response.relatedEventClassifiers,\r\n relatedMarkets: response.relatedMarkets\r\n });\r\n }\r\n }\r\n };\r\n\r\n /****************************\r\n getExchangeMarketsBlurb\r\n ****************************/\r\n gec.Controller.prototype.getExchangeMarketsBlurb = function (params) {\r\n if ((gecPrivate.controllerDefaults == null) && (gecPrivate.userContext == null)) {\r\n request.callbackOnException.call(this, new gec.AsyncException({ returnCode: 591 }));\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n if (params.markets != null) {\r\n request.eventClassifierId = null;\r\n request.marketIds = []; //:Array;\r\n for (var i = 0; i < params.markets.length; i++) {\r\n request.marketIds[i] = params.markets[i].marketId;\r\n }\r\n }\r\n else if (params.eventClassifier != null) {\r\n request.eventClassifierId = params.eventClassifier.eventClassifierId;\r\n request.playMarkets = params.playMarkets;\r\n request.marketType = params.marketTypeId;\r\n }\r\n else { request.marketIds = params.marketIds; }\r\n\r\n if (gecPrivate.userContext !== null) {\r\n request.integrationPartnerId = gecPrivate.userContext.integrationPartnerId;\r\n request.language = gecPrivate.userContext.language;\r\n }\r\n else //use defaults\r\n {\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n request.language = gecPrivate.controllerDefaults.language;\r\n }\r\n request.playMarkets = params.playMarkets;\r\n this.sendRequest(\"/GetExchangeMarketsBlurb.ashx\", request, _getExchangeMarketsBlurbResponse);\r\n }\r\n };\r\n var _getExchangeMarketsBlurbResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, new gec.AsyncException(response));\r\n } else {\r\n var markets = [];\r\n\r\n for (var market = 0; market < response.markets.length; market++) {\r\n var thisMarket = response.markets[market];\r\n thisMarket.eventClassifierFullName = response.markets[market].eventClassifierFullName;\r\n markets[markets.length] = thisMarket;\r\n }\r\n request.callbackOnSuccess.call(this, markets);\r\n }\r\n\r\n };\r\n\r\n /****************************\r\n getExchangeMarketsHistory\r\n ****************************/\r\n gec.Controller.prototype.getExchangeMarketsHistory = function (params) {\r\n if ((gecPrivate.userContext == null) && (gecPrivate.controllerDefaults == null)) {\r\n\r\n request.callbackOnException.call(this, { returnCode: 591 });\r\n }\r\n else {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n if (gecPrivate.sessionToken != null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n }\r\n else {\r\n\r\n request.currency = gecPrivate.controllerDefaults.currency;\r\n request.language = gecPrivate.controllerDefaults.language;\r\n request.priceFormat = gecPrivate.controllerDefaults.priceFormat;\r\n\r\n if (gecPrivate.controllerDefaults.integrationPartnerId != null) {\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n }\r\n }\r\n\r\n if (params.marketIds != null)\r\n request.marketIds = params.marketIds\r\n else {\r\n request.marketIds = [];\r\n for (var marketCount = 0; marketCount < params.markets.length; marketCount++) {\r\n request.marketIds[request.marketIds.length] = params.markets[marketCount].marketId;\r\n }\r\n }\r\n this.sendRequest(\"/GetExchangeMarketsHistory.ashx\", request, _getExchangeMarketsHistoryResponse);\r\n }\r\n };\r\n var _getExchangeMarketsHistoryResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n\r\n var markets = [];\r\n if (response.markets != null) {\r\n for (var marketCount = 0; marketCount < response.markets.length; marketCount++) {\r\n var thisMarket = {};\r\n thisMarket.marketId = response.markets[marketCount].marketId;\r\n thisMarket.marketType = response.markets[marketCount].type;\r\n thisMarket.marketName = response.markets[marketCount].name;\r\n thisMarket.eventClassifierFullName = response.markets[marketCount].eventClassifierFullName;\r\n thisMarket.marketStatusId = response.markets[marketCount].status;\r\n\r\n var selections = [];\r\n for (var selectionCount = 0; selectionCount < response.markets[marketCount].selections.length; selectionCount++) {\r\n var thisSelection = {};\r\n thisSelection.selectionId = response.markets[marketCount].selections[selectionCount].selectionId;\r\n thisSelection.selectionName = response.markets[marketCount].selections[selectionCount].selectionName;\r\n thisSelection.selectionStatusId = response.markets[marketCount].selections[selectionCount].status;\r\n\r\n var matches = [];\r\n if (response.markets[marketCount].selections[selectionCount].matches != null) {\r\n for (var matchCount = 0; matchCount < response.markets[marketCount].selections[selectionCount].matches.length; matchCount++) {\r\n var thisMatch = {};\r\n\r\n thisMatch.matchedAmount = response.markets[marketCount].selections[selectionCount].matches[matchCount].matchedAmount.amount;\r\n thisMatch.time = response.markets[marketCount].selections[selectionCount].matches[matchCount].time;\r\n thisMatch.matchedPrice = response.markets[marketCount].selections[selectionCount].matches[matchCount].matchedPrice;\r\n thisMatch.formattedPrice = response.markets[marketCount].selections[selectionCount].matches[matchCount].formattedPrice;\r\n\r\n matches[matches.length] = thisMatch;\r\n }\r\n }\r\n thisSelection.matches = matches;\r\n selections[selections.length] = thisSelection;\r\n }\r\n thisMarket.selections = selections;\r\n markets[markets.length] = thisMarket;\r\n }\r\n }\r\n request.callbackOnSuccess.call(this, markets);\r\n }\r\n };\r\n\r\n /****************************\r\n getExchangeAggregatedMatchHistory\r\n ****************************/\r\n gec.Controller.prototype.getExchangeAggregatedMatchHistory = function (params) {\r\n\r\n var request = new gec.IAPIRequest(params);\r\n\r\n if (gecPrivate.sessionToken != null)\r\n request.sessionToken = gecPrivate.sessionToken;\r\n else {\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n request.currency = gecPrivate.controllerDefaults.currency;\r\n request.priceFormat = gecPrivate.controllerDefaults.priceFormat;\r\n }\r\n\r\n request.language = gecPrivate.controllerDefaults.language;\r\n\r\n request.selectionIds = params.selectionIds;\r\n request.minimumMatchedAmount = {\r\n currency: gecPrivate.userContext != null ? gecPrivate.userContext.currency : gecPrivate.controllerDefaults.currency,\r\n amount: params.minimumMatchedAmount\r\n }\r\n\r\n this.sendRequest(\"/GetExchangeAggregatedMatchHistory.ashx\", request, _getExchangeAggregatedMatchHistoryResponse);\r\n\r\n }\r\n\r\n var _getExchangeAggregatedMatchHistoryResponse = function (request, response) {\r\n\r\n if (response.returnCode === 0) {\r\n request.callbackOnSuccess.call(this, response.selections);\r\n } else {\r\n request.callbackOnException.call(this, new gec.AsyncException({\r\n returnCode: response.returnCode\r\n }));\r\n }\r\n\r\n };\r\n\r\n\r\n\r\n gec.Controller.prototype.getOrder = function (params) {\r\n\r\n if (gecPrivate._orderCache !== null) {\r\n return gecPrivate._orderCache[params.orderId];\r\n }\r\n else\r\n throw { \"number\": 592, \"message\": \"OrderCacheNotPresent\" };\r\n };\r\n /****************************\r\n getOrderDetails\r\n ****************************/\r\n gec.Controller.prototype.getOrderDetails = function (params) {\r\n if (gecPrivate.userContext !== null) {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.orderId = params.orderId;\r\n\r\n this.sendRequest(\"/GetOrderDetails.ashx\", request, _getOrderDetailsResponse);\r\n }\r\n else {\r\n params.callbackOnException({ returnCode: 590 });\r\n }\r\n };\r\n var _getOrderDetailsResponse = function (request, response) {\r\n\r\n if (response.returnCode === 0) {\r\n var orderObject = new gec.OrderDetail();\r\n\r\n orderObject.orderId = request.orderId;\r\n orderObject.eventClassifierFullName = function () { return response.eventClassifierFullName; };\r\n orderObject.marketId = response.marketId;\r\n orderObject.marketName = response.marketName;\r\n orderObject.marketStatus = response.marketStatus;\r\n orderObject.selectionId = response.selectionId;\r\n orderObject.selectionName = response.selectionName;\r\n orderObject.issuedAt = response.issuedAt;\r\n orderObject.lastChangedAt = response.lastChangedAt;\r\n orderObject.expiresAt = response.expiresAt;\r\n orderObject.validFrom = response.validFrom;\r\n orderObject.orderFillType = response.orderFillType;\r\n orderObject.fillOrKillThreshold = response.fillOrKillThreshold.amount;\r\n orderObject.marketType = response.marketType * 1;\r\n orderObject.orderStatusId = response.orderStatus;\r\n orderObject.requestedStake = response.requestedStake.amount;\r\n orderObject.requestedPrice = response.requestedPrice;\r\n orderObject.requestedAveragePrice = response.requestedAveragePrice;\r\n orderObject.expectedSelectionResetCount = response.expectedSelectionResetCount;\r\n orderObject.expectedWithdrawalSequenceNumber = response.expectedWithdrawalSequenceNumber;\r\n orderObject.isFreeBet = response.isFreeBet;\r\n\r\n orderObject.matchedStake = response.totalStake.amount;\r\n orderObject.unmatchedStake = response.unmatchedStake.amount;\r\n orderObject.averageMatchedPrice = response.averagePrice;\r\n orderObject.matchingTimestamp = response.matchingTimestamp;\r\n orderObject.polarityId = response.polarity;\r\n orderObject.withdrawRepriceOption = response.withdrawRepriceOption;\r\n orderObject.cancelOnInRunning = response.cancelOnInRunning;\r\n orderObject.cancelIfSelectionReset = response.cancelIfSelectionReset;\r\n orderObject.sequenceNumber = response.sequenceNumber;\r\n if (response.grossSettlementAmount != null)\r\n orderObject.grossSettlementAmount = response.grossSettlementAmount.amount;\r\n if (response.marketCommission != null)\r\n orderObject.marketCommission = response.marketCommission.amount;\r\n orderObject.marketSettledDate = response.marketSettledDate;\r\n\r\n\r\n if (response.orderCommission != null)\r\n orderObject.orderCommission = response.orderCommission.amount;\r\n if (response.marketCommission != null)\r\n orderObject.marketCommission = response.marketCommission.amount;\r\n\r\n //orderObject.commissionBasis = response.commissionBasis;\r\n orderObject.makeCommissionRate = response.makeCommissionRate;\r\n orderObject.takeCommissionRate = response.takeCommissionRate;\r\n\r\n\r\n if (response.orderPAndL != null)\r\n orderObject.orderPAndL = response.orderPAndL.amount;\r\n\r\n\r\n orderObject.totalForSideMakeStake = response.totalForSideMakeStake.amount;\r\n orderObject.totalForSideTakeStake = response.totalForSideTakeStake.amount;\r\n\r\n orderObject.history = [];\r\n if (response.auditLog != null) {\r\n for (var auditCount = 0; auditCount < response.auditLog.length; auditCount++) {\r\n orderObject.history[auditCount] = new gec.OrderHistoryItem();\r\n orderObject.history[auditCount].time = response.auditLog[auditCount].time;\r\n orderObject.history[auditCount].orderActionTypeId = response.auditLog[auditCount].orderActionType;\r\n orderObject.history[auditCount].requestedStake = response.auditLog[auditCount].requestedStake.amount;\r\n orderObject.history[auditCount].requestedPrice = response.auditLog[auditCount].requestedPrice;\r\n\r\n if (response.auditLog[auditCount].matchedStake != null)\r\n orderObject.history[auditCount].matchedAgainstStake = response.auditLog[auditCount].matchedAgainstStake.amount;\r\n else\r\n orderObject.history[auditCount].matchedAgainstStake = 0;\r\n\r\n orderObject.history[auditCount].priceMatched = response.auditLog[auditCount].priceMatched;\r\n orderObject.history[auditCount].matchedOrderId = response.auditLog[auditCount].matchedOrderId;\r\n orderObject.history[auditCount].totalMatchedStake = response.auditLog[auditCount].totalStake.amount;\r\n //orderObject.history[auditCount].totalProvisionalMatchedStake = response.auditLog[auditCount].totalProvisionalMatchedStake.amount;\r\n\r\n orderObject.history[auditCount].totalAgainstStake = response.auditLog[auditCount].totalAgainstStake.amount;\r\n orderObject.history[auditCount].averagePrice = response.auditLog[auditCount].averagePrice;\r\n orderObject.history[auditCount].amountUnmatched = response.auditLog[auditCount].amountUnmatched.amount;\r\n if (response.auditLog[auditCount].grossSettlementAmount != null)\r\n orderObject.history[auditCount].grossSettlementAmount = response.auditLog[auditCount].grossSettlementAmount.amount;\r\n\r\n if (response.auditLog[auditCount].orderPAndL != null)\r\n orderObject.history[auditCount].orderPAndL = response.auditLog[auditCount].orderPAndL.amount;\r\n\r\n if (response.auditLog[auditCount].totalStake != null)\r\n orderObject.history[auditCount].totalMatchedStake = response.auditLog[auditCount].totalStake.amount;\r\n else\r\n orderObject.history[auditCount].totalMatchedStake = 0;\r\n\r\n if (response.auditLog[auditCount].matchedStake != null)\r\n orderObject.history[auditCount].matchedStake = response.auditLog[auditCount].matchedStake.amount;\r\n else\r\n orderObject.history[auditCount].matchedStake = 0;\r\n\r\n\r\n if (response.auditLog[auditCount].wasMakeSpecified) {\r\n orderObject.history[auditCount].wasMake = response.auditLog[auditCount].wasMake;\r\n }\r\n orderObject.history[auditCount].priceMatched = response.auditLog[auditCount].priceMatched;\r\n }\r\n }\r\n request.callbackOnSuccess.call(this, orderObject);\r\n }\r\n else {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n }\r\n\r\n };\r\n\r\n\r\n /****************************\r\n listMarketPAndL\r\n ****************************/\r\n gec.Controller.prototype.listMarketPAndL = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.eventClassifierId = params.eventClassifierId;\r\n request.startTime = params.startTime;\r\n request.endTime = params.endTime;\r\n request.marketSettlementFlag = params.marketSettlementFlag;\r\n\r\n this.sendRequest(\"/ListMarketPAndL.ashx\", request, _listMarketPAndLResponse);\r\n\r\n };\r\n var _listMarketPAndLResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n request.callbackOnSuccess.call(this, { orders: response.orders, totalResultSetSize: response.totalResultSetSize });\r\n }\r\n };\r\n\r\n /****************************\r\n listPAndLHierarchy\r\n ****************************/\r\n gec.Controller.prototype.listPAndLHierarchy = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n request.eventClassifierId = params.eventClassifierId;\r\n request.startTime = params.startTime;\r\n request.endTime = params.endTime;\r\n\r\n this.sendRequest(\"/ListPAndLHierarchy.ashx\", request, _listPAndLHierarchyResponse);\r\n\r\n };\r\n var _listPAndLHierarchyResponse = function (request, response) {\r\n\r\n var outputEventClassifiers = [];\r\n\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, {\r\n returnCode: response.returnCode\r\n });\r\n } else {\r\n\r\n if (response.events) {\r\n\r\n // Map IAPI output to GEC outputs (only differences are MoneyAmounts,\r\n // which are mapped to simple numbers)\r\n outputEventClassifiers = response.events.map(function(event) {\r\n return {\r\n eventClassifierId: event.eventClassifierId,\r\n parentEventClassifierId: event.parentEventClassifierId,\r\n eventClassifierName: event.eventClassifierName,\r\n displayOrder: event.displayOrder,\r\n eventClassifierFullName: event.eventClassifierFullName,\r\n numberSettledOrders: event.numberSettledOrders,\r\n grossSettlementAmount: event.grossSettlementAmount ? event.grossSettlementAmount.amount : event.grossSettlementAmount,\r\n marketCommissionPaid: event.marketCommissionPaid ? event.marketCommissionPaid.amount : event.marketCommissionPaid\r\n };\r\n });\r\n }\r\n\r\n request.callbackOnSuccess.call(this, {\r\n eventClassifiers: outputEventClassifiers\r\n });\r\n }\r\n };\r\n\r\n /****************************\r\n listMarketPAndLSummary\r\n ****************************/\r\n gec.Controller.prototype.listMarketPAndLSummary = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n request.eventClassifierId = params.eventClassifierId;\r\n request.startTime = params.startTime;\r\n request.endTime = params.endTime;\r\n request.startOffset = params.startOffset;\r\n request.numberToReturn = params.numberToReturn;\r\n\r\n this.sendRequest(\"/ListMarketPAndLSummary.ashx\", request, _listMarketPAndLSummaryResponse);\r\n\r\n };\r\n var _listMarketPAndLSummaryResponse = function (request, response) {\r\n\r\n var outputMarkets = [];\r\n\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, {\r\n returnCode: response.returnCode\r\n });\r\n } else {\r\n\r\n if (response.markets) {\r\n\r\n // Map IAPI output to GEC outputs (only differences are MoneyAmounts,\r\n // which are mapped to simple numbers)\r\n outputMarkets = response.markets.map(function(market) {\r\n return {\r\n marketId: market.marketId,\r\n marketName: market.marketName,\r\n eventClassifierId: market.eventClassifierId,\r\n eventClassifierName: market.eventClassifierName,\r\n grossSettlementAmount: market.grossSettlementAmount ? market.grossSettlementAmount.amount : market.grossSettlementAmount,\r\n marketCommissionPaid: market.marketCommissionPaid ? market.marketCommissionPaid.amount : market.marketCommissionPaid,\r\n marketSettledDate: market.marketSettledDate\r\n };\r\n });\r\n }\r\n\r\n request.callbackOnSuccess.call(this, {\r\n totalResultSetSize: response.totalResultSetSize,\r\n markets: outputMarkets\r\n });\r\n\r\n }\r\n };\r\n\r\n /****************************\r\n listSettledPAndL\r\n ****************************/\r\n gec.Controller.prototype.listSettledPAndL = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n if (params.marketIds != null) {\r\n request.marketIds = params.marketIds;\r\n } else {\r\n if (params.markets && params.markets.length) {\r\n request.marketIds = []\r\n for (var i = 0; i < params.markets.length; i++) { request.marketIds[i] = params.markets[i].marketId; }\r\n }\r\n }\r\n\r\n request.eventClassifierIds = params.eventClassifierIds;\r\n request.eventClassifiers = params.eventClassifiers;\r\n request.marketType = params.marketType;\r\n request.playMarkets = params.playMarkets;\r\n\r\n this.sendRequest(\"/ListSettledPAndL.ashx\", request, _listSettledPAndLResponse);\r\n\r\n };\r\n var _listSettledPAndLResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n request.callbackOnSuccess.call(this, { markets: response.markets });\r\n }\r\n };\r\n\r\n /****************************\r\n listPunterReservations\r\n ****************************/\r\n gec.Controller.prototype.listPunterReservations = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n this.sendRequest(\"/ListPunterReservations.ashx\", request, _listPunterReservationsResponse);\r\n\r\n };\r\n var _listPunterReservationsResponse = function (request, response) {\r\n if (response.returnCode != 0) {\r\n request.callbackOnException.call(this, { returnCode: response.returnCode });\r\n } else {\r\n request.callbackOnSuccess.call(this, { punterReservations: response.reservations });\r\n }\r\n };\r\n\r\n gec.Controller.prototype._addPushRegex = function (params) {\r\n gecPrivate._regexArray = params;\r\n }\r\n\r\n /*****************************\r\n PUSH calls\r\n ******************************/\r\n\r\n\r\n\r\n gec.Controller.prototype.unsubscribe = function (params) {\r\n var correlationId = gecPrivate.addToCorrelation(params);\r\n\r\n var request = {};\r\n request[0] = correlationId;\r\n\r\n if (params.subscriptionIds != null) {\r\n request[1] = \"\";\r\n for (var subI = 0; subI < params.subscriptionIds.length; subI++) {\r\n request[1] += params.subscriptionIds[subI] + \"~\";\r\n }\r\n request[1] = request[1].substr(0, request[1].length - 1);\r\n }\r\n\r\n gecPrivate.addToPushMessages(request);\r\n gecPrivate._sendStreamingMessage(20, request);\r\n return correlationId;\r\n };\r\n\r\n var _regexArrayExchange = [\r\n //Session Management Commands\r\n { regex: /^\\S(\\d{1,4})\\/D\\S9$/, method: _onSubscribeMarketInformation },\r\n {\r\n regex: /^.*\\/E\\/E_([0-9]*)\\/M\\/E_([0-9]*)$/, method: _onMarket1, converter: {\r\n 1: \"displayOrder\",\r\n 2: [{ 1: \"occurredAt\", 2: \"score\" }]\r\n }\r\n },\r\n {\r\n regex: /^.*\\/E\\/E_([0-9]*)$/, method: _onEvent1, converter: {\r\n 1: \"displayOrder\",\r\n 2: [{ 1: \"occurredAt\", 2: \"score\" }],\r\n 3: [{ 1: \"occurrenceType\", 2: \"predictedTime\", 3: \"actualTime\" }]\r\n }\r\n },\r\n {\r\n regex: /^.*\\/E\\/E_([0-9]*)\\/EEI$/, method: _onEExchangeInfo, converter: {\r\n 1: \"eventClassifierId\",\r\n 2: \"isEnabledForMultiples\",\r\n 3: \"startTime\"\r\n }\r\n },\r\n {\r\n regex: /^.*\\/E\\/E_([0-9]*)\\/EEI\\/EEL\\/([a-z\\d\\-\\-]{2})$/, method: _onLanguage2, converter: {\r\n 1: \"name\",\r\n 2: \"raceGrade\"\r\n }\r\n },\r\n {\r\n regex: /^\\S(\\d{1,4})\\/E\\/E_([0-9]*)$/, method: _onMExchangeInfo, converter: {\r\n 1: \"marketId\",\r\n 2: \"marketType\",\r\n 3: \"isPlayMarket\",\r\n 4: \"canBeInRunning\",\r\n 5: \"managedWhenInRunning\",\r\n 6: \"isVisibleAsTradingMarket\",\r\n 7: \"isVisibleAsPricedMarket\",\r\n 8: \"isEnabledForMultiples\",\r\n 9: \"isCurrentlyInRunning\",\r\n 10: \"status\",\r\n 11: \"withdrawAction\",\r\n 12: \"ballotOutAction\",\r\n 13: \"canBeDeadHeated\",\r\n 14: \"startTime\",\r\n 15: \"delayFactor\",\r\n 16: \"numberOfWinningSelections\",\r\n 17: \"withdrawalSequenceNumber\",\r\n 18: \"resultString\",\r\n 19: \"numberOfSelections\",\r\n 20: \"placePayout\",\r\n 21: \"redboxSPAvailable\",\r\n 22: \"bOGAvailable\",\r\n 23: \"numberWinningPlaces\",\r\n 24: \"placeFraction\",\r\n 25: \"bettingTypeId\"\r\n }\r\n },\r\n {\r\n regex: /^.*\\/E\\/E_([0-9]*)\\/EEI\\/TAB\\/Tab(\\d*)$/, method: _onTab, converter: {\r\n 1: \"displayOrder\",\r\n 2: \"marketIds\",\r\n 3: \"numberOfMarketsToExpand\"\r\n }\r\n },\r\n {\r\n regex: /^.*\\/E\\/E_([0-9]*)\\/EEI\\/TAB\\/Tab(\\d*)\\/TL\\/([a-z\\d\\-\\-]{2})$/, method: _onLanguage14, converter: {\r\n 1: \"name\"\r\n }\r\n },\r\n {\r\n regex: /^\\S(\\d{1,4})\\/E\\/E_([0-9]*)$/, method: _onLanguage3, converter: {\r\n 1: \"name\",\r\n 2: \"description\",\r\n 3: \"marketBlurb\"\r\n }\r\n },\r\n {///BrokerId/Events/Event1/EventLanguage/Language4\r\n regex: /^.*\\/E\\/E_([0-9]*)\\/EL\\/([a-z\\d\\-\\-]{2})$/, method: _onLanguage4, converter: {\r\n 1: \"name\"\r\n }\r\n },\r\n {///BrokerId/Events/Event1/Markets/Market1/MarketLanguage/Language7\r\n regex: /^\\S(\\d{1,4})\\/E\\/E_([0-9]*)$/, method: _onLanguage7, converter: {\r\n 1: \"name\"\r\n }\r\n },\r\n {///BrokerId/Events/Event1/Markets/Market1/Selections/Selection1 \r\n regex: /^\\S(\\d{1,4})\\/E\\/E_([0-9]*)$/, method: _onSelection1, converter: {\r\n 1: \"displayOrder\",\r\n 2: \"selectionIcon\"\r\n }\r\n },\r\n {///BrokerId/Events/Event1/Markets/Market1/Selections/Selection1/SexchangeInfo\r\n regex: /^\\S(\\d{1,4})\\/E\\/E_([0-9]*)$/, method: _onSExchangeInfo, converter: {\r\n 1: \"selectionId\",\r\n 2: \"status\",\r\n 3: \"selectionResetCount\",\r\n 4: \"withdrawalFactor\",\r\n 5: \"settledTime\",\r\n 6: \"resultString\",\r\n 7: \"voidPercentage\",\r\n 8: \"leftSideFactor\",\r\n 9: \"rightSideFactor\",\r\n 10: \"redboxSelection\"\r\n }\r\n },\r\n {///BrokerId/Events/Event1/Markets/Market1/Selections/Selection1/SelectionLanguage/Language5\r\n regex: /^\\S(\\d{1,4})\\/E\\/E_([0-9]*)$/, method: _onLanguage5, converter: {\r\n 1: \"name\"\r\n }\r\n },\r\n {\r\n regex: /^.*\\/E\\/E_([0-9]*)\\/TV\\/(.*)$/, method: _onTaggedValue1, converter: {\r\n 1: \"value\"\r\n },\r\n onTopicStatusChange: function (params) { //params = eventId, taggedName\r\n var thisEvent = getOrCreateSubscribedEvent(params[1]);\r\n if (thisEvent && thisEvent.taggedValues) {\r\n delete thisEvent.taggedValues[params[2]];\r\n var changes = { taggedValues: {} };\r\n changes.taggedValues[params[2]] = null;\r\n\r\n thisEvent.prototype.fireDeltaDelegates(changes);\r\n }\r\n\r\n }\r\n },\r\n {\r\n regex: /^.*\\/M\\/E_([0-9]*)\\/TV\\/(.*)$/, method: _onTaggedValue2, converter: {\r\n 1: \"value\"\r\n },\r\n onTopicStatusChange: function (params) { //params = eventId, taggedName\r\n var thisMarket = getOrCreateSubscribedMarket(params[1]);\r\n if (thisMarket && thisMarket.taggedValues) {\r\n delete thisMarket.taggedValues[params[2]];\r\n var changes = { taggedValues: {} };\r\n changes.taggedValues[params[2]] = null;\r\n\r\n thisMarket.prototype.fireDeltaDelegates(changes);\r\n }\r\n\r\n }\r\n },\r\n {\r\n regex: /^.*\\/M\\/E_([0-9]*)\\/ML\\/([a-z\\d\\-\\-]{2})$/, method: _onLanguage7, converter: {\r\n 1: \"name\"\r\n }\r\n },\r\n {\r\n regex: /^.*\\/M\\/E_([0-9]*)\\/MEI$/, method: _onMExchangeInfo, converter: {\r\n 1: \"marketId\",\r\n 2: \"marketType\",\r\n 3: \"isPlayMarket\",\r\n 4: \"canBeInRunning\",\r\n 5: \"managedWhenInRunning\",\r\n 6: \"isVisibleAsTradingMarket\",\r\n 7: \"isVisibleAsPricedMarket\",\r\n 8: \"isEnabledForMultiples\",\r\n 9: \"isCurrentlyInRunning\",\r\n 10: \"status\",\r\n 11: \"withdrawAction\",\r\n 12: \"ballotOutAction\",\r\n 13: \"canBeDeadHeated\",\r\n 14: \"startTime\",\r\n 15: \"delayFactor\",\r\n 16: \"numberOfWinningSelections\",\r\n 17: \"withdrawalSequenceNumber\",\r\n 18: \"resultString\",\r\n 19: \"numberOfSelections\",\r\n 20: \"placePayout\",\r\n 21: \"redboxSPAvailable\",\r\n 22: \"bOGAvailable\",\r\n 23: \"numberWinningPlaces\",\r\n 24: \"placeFraction\",\r\n 25: \"bettingTypeId\"\r\n }\r\n },\r\n { regex: /^.*\\/M\\/E_([0-9]+)\\/MEI\\/MEL\\/([a-z\\d\\-\\-]{2})$/, method: _onLanguage3, converter: { 1: \"name\", 2: \"description\", 3: \"marketBlurb\" } },\r\n { regex: /^.*\\/M\\/E_([0-9]+)\\/S\\/E_([0-9]+)$/, method: _onSelection1, converter: { 1: \"displayOrder\", 2: \"selectionIcon\" } },\r\n { regex: /^.*\\/M\\/E_([0-9]+)\\/S\\/E_([0-9]+)\\/SL\\/[a-z\\d\\-\\-]{2}$/, method: _onLanguage5, converter: { 1: \"name\" } },\r\n { regex: /^.*\\/S\\/E_([0-9]+)\\/SEI$/, method: _onSExchangeInfo, converter: { 1: \"selectionId\", 2: \"status\", 3: \"selectionResetCount\", 4: \"withdrawalFactor\", 5: \"settledTime\", 6: \"resultString\", 7: \"voidPercentage\", 8: \"leftSideFactor\", 9: \"rightSideFactor\", 10: \"redboxSelection\" } },\r\n { regex: /^.*\\/S\\/E_([0-9]+)\\/SEI\\/SB$/, method: _onSelectionblurb, converter: { 1: \"selectionBlurb\" } },\r\n { regex: /^.*\\/M\\/E_([0-9]+)\\/S\\/E_([0-9]*)\\/SEI\\/SEL\\/([a-z\\d\\-\\-]{2})$/, method: _onLanguage6, converter: { 1: \"name\", 2: \"selectionBlurb\" } },\r\n { regex: /^.*\\/M\\/E_([0-9]*)\\/MEI\\/MDP\\/(\\d\\d?)_(\\d\\d?)_(\\d*)_([A-Z]{3})_([1-3])$/, method: _onBackLayVolumeCurrencyOddsFormat, converter: { 1: [{ 1: \"selectionId\", 2: [{ 1: \"displayPrice\", 2: \"stake\" }], 3: [{ 1: \"displayPrice\", 2: \"stake\" }], 4: \"redboxDisplayPrice\", 5: \"redboxFractionalPrice\" }] } },\r\n { regex: /^.*\\/M\\/E_([0-9]+)\\/MEI\\/MMA\\/([A-Z]{3})$/, method: _onCurrency3, converter: { 1: \"forSideAmount\", 2: \"againstSideAmount\" } },\r\n { regex: /^.*\\/M\\/E_([0-9]*)\\/MEI\\/FO\\/([A-Z]{1})$/, method: _onFixedOddsMarketPrices, converter: { 1: [{ 1: \"selectionId\", 2: \"price\" }] } },\r\n { regex: /^\\S(\\d{1,4})\\/D\\S1$/, method: _onSetAnonymousSessionContext, converter: { 0: \"correlationId\", 1: \"returnCode\", 2: \"maximumMessageSize\" } },\r\n { regex: /^\\S(\\d{1,4})\\/D\\S2$/, method: _onLogonPunter },\r\n { regex: /(\\d{1,4})\\/D\\S3.*$/, method: _onLogoffPunter },\r\n { regex: /(\\d{1,4})\\/D\\S10$/, method: _onSubscribeDetailedMarketPrices },\r\n { regex: /(\\d{1,4})\\/D\\S11$/, method: _onSubscribeFixedOddsMarketPrices },\r\n { regex: /(\\d{1,4})\\/D\\S12$/, method: _onSubscribeEventHierarchy, converter: { 0: \"correlationId\", 1: \"returnCode\", 2: \"subscriptionId\" } },\r\n { regex: /(\\d{1,4})\\/D\\S14$/, method: _onSubscribeMarketMatchedAmounts },\r\n { regex: /(\\d{1,4})\\/D\\S20.*$/, method: _onUnsubscribe },\r\n\r\n //General Application Commands\r\n { regex: /(\\d{1,4})\\/D\\S22.*$/, method: _onPing },\r\n { regex: /(\\d{1,4})\\/D\\S$/, method: _onBlankInfo }\r\n\r\n ];\r\n\r\n gecUnseal();\r\n gec.Controller.prototype._addPushRegex(_regexArrayExchange);\r\n\r\n\r\n\r\n /*****************************\r\n TYPEs\r\n ****************************/\r\n\r\n\r\n\r\n gec.AAPIRequest = function (params) {\r\n this.header = gecPrivate._GBEHeader;\r\n this.callbackOnException = params.callbackOnException;\r\n this.callbackOnSuccess = params.callbackOnSuccess;\r\n };\r\n\r\n gec.ExchangePrice = function (params) {\r\n\r\n this.price;\r\n this.displayPrice;\r\n this.amountAvailable;\r\n this.hasRecentlyChanged;\r\n\r\n if (params !== undefined) {\r\n this.price = params.price;\r\n this.displayPrice = params.displayPrice;\r\n this.amountAvailable = params.amountAvailable;\r\n this.hasRecentlyChanged = params.hasRecentlyChanged;\r\n }\r\n };\r\n\r\n gec.ExchangeTrade = function (params) {\r\n this.selectionId;\r\n this.marketId;\r\n this.occurredAt;\r\n this.backersStake;\r\n this.layersLiability;\r\n this.tradeType;\r\n };\r\n\r\n gec.Order = function (obj) {\r\n //Properties\r\n var _eventClassifierId;\r\n\r\n this.orderId;\r\n this.issuedAt;\r\n this.polarityId;\r\n this.unmatchedStake = 0;\r\n this.requestedPrice = 0;\r\n this.requestedAveragePrice = 0;\r\n this.averageMatchedPrice = 0;\r\n this.matchedStake = 0;\r\n this.matchedAgainstStake = 0;\r\n this.orderStatusId;\r\n this.expiresAt;\r\n this.cancelOnInRunning;\r\n this.isCurrentlyInRunning;\r\n this.willBeInRunning;\r\n this.cancelIfSelectionReset;\r\n this.orderPAndL;\r\n this.isFreeBet;\r\n\r\n if (obj) {\r\n if (obj.eventClassifierId != undefined)\r\n gecPrivate._eventClassifierId = obj.eventClassifierId;\r\n\r\n }\r\n\r\n //Methods\r\n this.eventClassifierId = function () { return gecPrivate._eventClassifierId; }\r\n this.eventClassifierFullName = function () { return obj.eventClassifierFullName; } // – returns string containing the full name of the EventClassifier that directly contains the market on which the order was issued. The EventClassifiers are separated by a ‘~’ character. Returns null if not known.\r\n this.marketId = function () { return obj.marketId; } // – returns the id (if known) of the Market on which the order was issued. Returns null if not known.\r\n this.marketName = function () { return obj.marketName; } // – returns string containing the name (if known) of the Market on which the order was issued. Returns null if not known.\r\n this.marketStatusId = function () { return obj.marketStatusId; } // – returns the id of the MarketStatus (if known) of the Market on which the order was issued. Returns null if not known.\r\n this.marketTypeId = function () { return obj.marketType; } // – returns the id of the MarketType (if known) of the Market on which the order was issued. Returns null if not known.\r\n this.marketTypeName = function () { return obj.marketTypeName; } // – returns string containing the name of the MarketType (if known) of the Market on which the order was issued. Returns null if not known.\r\n this.selectionId = function () { return obj.selectionId; } // – returns the id of the Selection on which the order was issued.\r\n this.selectionName = function () {//if known else null\r\n return obj.selectionName;\r\n }\r\n this.selectionStatusId = function () {\r\n if (obj != null)\r\n if (obj.selection != null)\r\n return obj.selection.selectionStatusId;\r\n\r\n return null;\r\n } //– returns the id of the SelectionStatus (if known) of the Selection on which the order was issued. Returns null if not known.\r\n };\r\n\r\n gec.OrderActionType = function (params) {\r\n this.id;\r\n this.name;\r\n };\r\n gec.OrderDetail = function (params) {\r\n this.prototype = new gec.Order(params);\r\n this.eventClassifierFullName;\r\n\r\n this.marketId;\r\n this.marketName;\r\n this.selectionId;\r\n this.selectionName;\r\n this.orderStatusId;\r\n this.issuedAt;\r\n this.lastChangedAt;\r\n\r\n this.expiresAt;\r\n this.orderFillType;\r\n this.fillOrKillThreshold;\r\n this.marketTypeId;\r\n this.marketStatusId;\r\n this.requestedStake;\r\n this.requestedPrice;\r\n this.requestedAveragePrice;\r\n this.expectedSelectionResetCount;\r\n this.expectedWithdrawalSequenceNumber;\r\n this.matchedStake;\r\n this.unmatchedStake;\r\n this.averageMatchedPrice;\r\n this.totalForSideMakeStake;\r\n this.totalForSideTakeStake;\r\n this.polarityId;\r\n this.withdrawRepriceOptionId;\r\n this.taxChargingBasis;\r\n this.taxRate;\r\n this.isFreeBet;\r\n this.cancelOnInRunning;\r\n this.cancelIfSelectionReset;\r\n\r\n this.orderPAndL;\r\n\r\n this.orderCommission;\r\n this.marketCommission;\r\n this.taxAmountDeducted;\r\n this.marketSettledDate;\r\n\r\n this.getHistory = function () { return; };\r\n };\r\n gec.OrderHistoryItem = function (params) {\r\n this.header = gecPrivate._GBEHeader;\r\n if (params != null) {\r\n this.callbackOnException = params.callbackOnException;\r\n this.callbackOnSuccess = params.callbackOnSuccess;\r\n }\r\n };\r\n gec.SubscribedExchangeEvent = function (params) {\r\n\r\n var _thisObject = this;\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n\r\n this.displayOrder;\r\n this.genericId;\r\n this.genericName;\r\n this.eventClassifierId;\r\n\r\n this.name;\r\n this.isEnabledForMultiples;\r\n\r\n this.prototype._isInitiallyLoaded = function () {\r\n var returnVal = ((_thisObject.displayOrder != null) &&\r\n (_thisObject.genericId != null) &&\r\n //(_thisObject.parentGenericId !== undefined) &&\r\n (_thisObject.genericName != null) &&\r\n (_thisObject.eventClassifierId != null) &&\r\n //(_thisObject.parentClassifierId !== undefined) &&\r\n (_thisObject.name != null) &&\r\n (_thisObject.isEnabledForMultiples != null));\r\n\r\n return returnVal;\r\n }\r\n\r\n this.addDelegate = function (delegate) {\r\n return this.prototype.addDelegate(delegate);\r\n };\r\n this.removeDelegate = function (delegate) {\r\n this.prototype.removeDelegate(delegate);\r\n };\r\n\r\n };\r\n\r\n gec.SubscribedExchangeMarket = function (params) {\r\n\r\n var _thisObject = this;\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n this.displayOrder;\r\n this.genericId;\r\n this.genericName;\r\n this.eventClassifierId;\r\n this.marketId;\r\n this.name;\r\n this.description;\r\n this.marketBlurb;\r\n this.marketType;\r\n this.isPlayMarket;\r\n this.canBeInRunning;\r\n this.managedWhenInRunning;\r\n this.isVisibleAsTradingMarket;\r\n this.isVisibleAsPricedMarket;\r\n this.isEnabledForMultiples;\r\n this.effectiveMarketTradingRestriction;\r\n this.isCurrentlyInRunning;\r\n this.status;\r\n this.withdrawAction;\r\n this.ballotOutAction;\r\n this.canBeDeadHeated;\r\n this.startTime;\r\n this.delayFactor;\r\n this.numberOfWinningSelections;\r\n this.withdrawalSequenceNumber;\r\n this.resultString;\r\n this.numberOfSelections;\r\n this.placePayout;\r\n\r\n this.prototype._isInitiallyLoaded = function () {\r\n\r\n var returnVal = ((_thisObject.displayOrder != null) &&\r\n (_thisObject.genericId != null) &&\r\n // (_thisObject.genericName != null) &&\r\n (_thisObject.eventClassifierId != null) &&\r\n (_thisObject.marketId != null) &&\r\n (_thisObject.name != null) &&\r\n (_thisObject.marketType != null) &&\r\n (_thisObject.isPlayMarket != null) &&\r\n (_thisObject.canBeInRunning != null) &&\r\n (_thisObject.managedWhenInRunning != null) &&\r\n (_thisObject.isVisibleAsTradingMarket != null) &&\r\n (_thisObject.isVisibleAsPricedMarket != null) &&\r\n (_thisObject.isEnabledForMultiples != null) &&\r\n (_thisObject.isCurrentlyInRunning != null) &&\r\n (_thisObject.status != null) &&\r\n //(_thisObject.withdrawAction != null) &&\r\n //(_thisObject.ballotOutAction != null) &&\r\n //(_thisObject.canBeDeadHeated != null) &&\r\n\r\n (_thisObject.numberOfWinningSelections != null) &&\r\n (_thisObject.withdrawalSequenceNumber != null));\r\n\r\n return returnVal;\r\n }\r\n\r\n this.addDelegate = function (delegate) {\r\n return this.prototype.addDelegate(delegate);\r\n };\r\n this.removeDelegate = function (delegate) {\r\n this.prototype.removeDelegate(delegate);\r\n };\r\n\r\n this.getPlaceFraction = function () {\r\n\r\n if (!isEachWayMarketType(this)) {\r\n return 0.0;\r\n }\r\n\r\n if (this.marketType == 21) {\r\n return Math.round(1 / this.numberOfWinningSelections * 100) / 100;\r\n }\r\n\r\n var competingSelectionCount = getCompetingSelectionCount(this);\r\n\r\n if (competingSelectionCount < 5) {\r\n return 1;\r\n }\r\n\r\n if (this.marketType == 19 && competingSelectionCount > 7) {\r\n return 0.2;\r\n }\r\n\r\n if (this.marketType == 20 && competingSelectionCount >= 8 && competingSelectionCount <= 11) {\r\n return 0.2;\r\n }\r\n\r\n return 0.25;\r\n }\r\n\r\n var isEachWayMarketType = function (m) {\r\n return (m.marketType == 19 || m.marketType == 20 || m.marketType == 21);\r\n }\r\n\r\n var COMPETING_STATUSES = [2, 6, 7, 8];\r\n\r\n var getCompetingSelectionCount = function (m) {\r\n var count = 0;\r\n\r\n for (s in m.selections) {\r\n if (COMPETING_STATUSES[m.selections[s].status] !== undefined || COMPETING_STATUSES[m.selections[s].selectionStatusId] !== undefined) {\r\n count++;\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n };\r\n gec.SubscribedExchangeEventTab = function (params) {\r\n var tabs = {}, t;\r\n\r\n this.getTabs = function () {\r\n var tabArray = [];\r\n\r\n for (t in tabs) {\r\n tabArray.push(tabs[t]);\r\n }\r\n\r\n tabArray.sort(function (a, b) {\r\n return a.displayOrder - b.displayOrder;\r\n });\r\n\r\n return tabArray;\r\n };\r\n\r\n this.addTab = function (tabId, tab) {\r\n tabs[tabId] = tabs[tabId] || {};\r\n tabs[tabId].tabId = tabId;\r\n tabs[tabId] = gecPrivate._base.extend(tabs[tabId], tab);\r\n };\r\n\r\n this.removeTab = function (tabId) {\r\n delete tabs[tabId];\r\n };\r\n };\r\n gec.SubscribedExchangeMarketMatchedAmount = function (params) {\r\n var _thisObject = this;\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n\r\n this.prototype._isInitiallyLoaded = function () {\r\n return true; //not waiting on any ther parts\r\n };\r\n this.addDelegate = function (delegate) {\r\n return this.prototype.addDelegate(delegate);\r\n };\r\n this.removeDelegate = function (delegate) {\r\n this.prototype.removeDelegate(delegate);\r\n };\r\n };\r\n gec.SubscribedExchangeMarketNew = function (params) {\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n };\r\n gec.SubscribedExchangeSelection = function (params) {\r\n var _thisObject = this;\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n this.genericId;\r\n this.genericName;\r\n this.displayOrder;\r\n this.selectionIcon;\r\n this.name;\r\n this.selectionBlurb;\r\n this.marketId;\r\n this.selectionId;\r\n this.status;\r\n this.selectionResetCount;\r\n this.withdrawalFactor;\r\n this.settledTime;\r\n this.resultString;\r\n this.voidPercentage;\r\n this.leftSideFactor;\r\n this.rightSideFactor;\r\n\r\n this.prototype._isInitiallyLoaded = function () {\r\n return ((_thisObject.displayOrder != null) && (_thisObject.name != null) && (_thisObject.status != null));\r\n }\r\n\r\n this.addDelegate = function (delegate) {\r\n return this.prototype.addDelegate(delegate);\r\n };\r\n this.removeDelegate = function (delegate) {\r\n this.prototype.removeDelegate(delegate);\r\n };\r\n\r\n };\r\n gec.SubscribedExchangeSelectionMatchedAmount = function (params) {\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n };\r\n gec.SubscribedItemNames = function (params) {\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n };\r\n gec.SubscribedMarketScores = function (params) {\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n };\r\n gec.SubscribedOrder = function (params) {\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n };\r\n\r\n /*SubscribedExchangeSelectionPrices*/\r\n gec.SubscribedExchangeSelectionPrices = function (params) {\r\n var _thisObject = this;\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n\r\n this.marketId;\r\n this.selectionId;\r\n\r\n this.backPrices = []; //{\tdisplayPrice:string,stake: gec.MoneyValue}\r\n this.layPrices = []; //{\tdisplayPrice:string,stake: gec.MoneyValue}\r\n\r\n this.prototype._isInitiallyLoaded = function () {\r\n return (_thisObject.selectionId != null);\r\n }\r\n\r\n this.addDelegate = function (delegate) {\r\n return this.prototype.addDelegate(delegate);\r\n };\r\n this.removeDelegate = function (delegate) {\r\n this.prototype.removeDelegate(delegate);\r\n };\r\n };\r\n gec.SubscribedExchangeSelectionFixedOddsPrices = function (params) {\r\n var _thisObject = this;\r\n this.marketId;\r\n this.selectionId;\r\n this.backReferencePrice;\r\n this.layReferencePrice;\r\n\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n\r\n this.prototype._isInitiallyLoaded = function () {\r\n return (_thisObject.selectionId != null);\r\n }\r\n\r\n this.addDelegate = function (delegate) {\r\n return this.prototype.addDelegate(delegate);\r\n };\r\n this.removeDelegate = function (delegate) {\r\n this.prototype.removeDelegate(delegate);\r\n };\r\n };\r\n gec.SubscribedSelectionPAndL = function (params) {\r\n var _thisObject = this;\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n };\r\n gec.SubscribedSelectionPriceHistory = function (params) {\r\n var _thisObject = this;\r\n this.prototype = new gec.SubscribedObjectBase(_thisObject);\r\n };\r\n\r\n\r\n //gecSeal();\r\n\r\n return gec;\r\n\r\n}(window.gec || {}));\r\n\r\n//window.gec.gecSeal(); // prevent access to private props\r\n","/* global gec:true*/\r\n/* exported gec */\r\n/* eslint-disable no-var */\r\n/* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_selections\", \"_base\"] }] */\r\ngec = (function (gec) {\r\n \"use strict\";\r\n\r\n var gecPrivate = gec.gecPrivate || {};\r\n var gecSeal = gec.gecSeal || function () {\r\n delete gec.gecPrivate;\r\n delete gec.gecSeal;\r\n delete gec.gecUnseal;\r\n };\r\n var gecUnseal = gec.gecUnseal || function () {\r\n gec.gecPrivate = gecPrivate;\r\n gec.gecSeal = gecSeal;\r\n gec.gecUnseal = gecUnseal;\r\n };\r\n\r\n gec.Controller.prototype.listSportsbookMarkets = function (params) {\r\n var request;\r\n if (gecPrivate.controllerDefaults === null && gecPrivate.userContext === null) {\r\n params.callbackOnException(new gec.AsyncException({ \"returnCode\": 591 }));\r\n } else {\r\n request = new gec.IAPIRequest(params);\r\n\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.eventClassifierId = params.eventClassifierId;\r\n request.marketIds = params.marketIds;\r\n request.marketTypes = params.marketTypes;\r\n\r\n request.wantIndirectDescendents = params.wantIndirectDescendents;\r\n request.wantPricedMarketsOnly = params.wantPricedMarketsOnly;\r\n\r\n if (gecPrivate.userContext !== null) {\r\n request.integrationPartnerId = gecPrivate.userContext.integrationPartnerId;\r\n request.language = gecPrivate.userContext.language;\r\n } else { // use defaults\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n request.language = gecPrivate.controllerDefaults.language;\r\n }\r\n\r\n this.sendRequest(\"/listSportsbookMarkets.ashx\", request, function (requestParam, response) {\r\n if (response.returnCode === 0) {\r\n\r\n request.callbackOnSuccess({\r\n markets: response.markets,\r\n eventClassifiers: response.eventClassifiers\r\n });\r\n } else {\r\n request.callbackOnException(new gec.AsyncException(response));\r\n }\r\n\r\n });\r\n }\r\n };\r\n\r\n gec.Controller.prototype.getSportsbookPrices = function (params) {\r\n var request;\r\n if (gecPrivate.controllerDefaults === null && gecPrivate.userContext === null) {\r\n params.callbackOnException(new gec.AsyncException({ \"returnCode\": 591 }));\r\n } else {\r\n request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n if (params.eventClassifierId !== undefined) {\r\n request.eventClassifierId = params.eventClassifierId;\r\n request.marketType = params.marketTypeId;\r\n } else if (params.eventClassifier !== undefined) {\r\n request.eventClassifierId = params.eventClassifier.eventClassifierId;\r\n request.marketType = params.marketTypeId;\r\n } else if (params.markets !== undefined) {\r\n request.marketIds = []; // :Array;\r\n params.markets.forEach(function (market) {\r\n request.marketIds.push(market.marketId);\r\n });\r\n } else {\r\n if (params.selectionIds !== undefined) {\r\n request.selectionIds = params.selectionIds;\r\n } else {\r\n request.marketIds = params.marketIds;\r\n }\r\n }\r\n request.justRefreshPrices = params.justRefreshPrices;\r\n request.wantIcons = params.wantIcons; // :Boolean;\r\n request.wantSelectionBlurb = params.wantSelectionBlurb; // :Boolean;\r\n\r\n request.organisationalUnitId = params.organisationalUnitId;\r\n if (gecPrivate.userContext !== null) {\r\n request.integrationPartnerId = gecPrivate.userContext.integrationPartnerId;\r\n request.currency = gecPrivate.userContext.currency; // :String;\r\n\r\n request.language = gecPrivate.userContext.language;\r\n } else { // use defaults\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n request.currency = gecPrivate.controllerDefaults.currency; // :String;\r\n request.language = gecPrivate.controllerDefaults.language;\r\n }\r\n request.priceFormat = gecPrivate.controllerDefaults.priceFormat;\r\n request.contextEvents = params.contextEvents;\r\n\r\n this.sendRequest(\"/GetSportsBookPrices.ashx\", request, function (requestParam, response) {\r\n var marketArrays = [];\r\n\r\n if (response.returnCode === 0) {\r\n if (response.markets !== undefined) {\r\n response.markets.sort(gec.SortOnDisplayOrder);\r\n response.markets.forEach(function (responseMarket) {\r\n var thisMarket = new gec.MarketDetail();\r\n thisMarket.ancestryChain = responseMarket.ancestryChain || response.ancestryChain;\r\n thisMarket.previousEventClassifier = response.previousEventClassifier;\r\n thisMarket.nextEventClassifier = response.nextEventClassifier;\r\n\r\n thisMarket.marketId = responseMarket.marketId;\r\n thisMarket.eventClassifierFullName = responseMarket.eventClassifierFullName;\r\n thisMarket.marketName = responseMarket.name;\r\n thisMarket.marketType = responseMarket.marketType;\r\n thisMarket.eventClassifierId = responseMarket.parentEventClassifierId;\r\n\r\n thisMarket.willBeInRunning = responseMarket.canBeInRunning;\r\n thisMarket.isCurrentlyInRunning = responseMarket.isCurrentlyInRunning;\r\n thisMarket.isEnabledForMultipleBets = responseMarket.isMultiplesEnabled;\r\n thisMarket.isEnabledForEachWayBetting = responseMarket.isEnabledForEachWayBetting;\r\n thisMarket.isEnabledForSPBetting = responseMarket.isEnabledForSPBetting;\r\n thisMarket.startTime = responseMarket.startTime;\r\n thisMarket.suspendTime = responseMarket.suspendTime;\r\n thisMarket.selectionIconsURL = responseMarket.selectionIconsURL;\r\n thisMarket.iconWidth = responseMarket.iconWidth;\r\n thisMarket.iconHeight = responseMarket.iconHeight;\r\n\r\n thisMarket.placePayout = responseMarket.placePayout;\r\n\r\n thisMarket.numberOfWinningSelections = responseMarket.numberOfWinningSelections;\r\n\r\n thisMarket.marketStatusId = responseMarket.marketStatus;\r\n thisMarket.withdrawalSequenceNumber = responseMarket.withdrawalSequenceNumber;\r\n\r\n responseMarket.selections.sort(gec.SortOnDisplayOrder);\r\n\r\n\r\n responseMarket.selections.forEach(function (thisSelection) {\r\n\r\n var aSelection = new gec.SelectionDetail();\r\n aSelection.selectionId = thisSelection.selectionId;\r\n aSelection.selectionName = thisSelection.name;\r\n aSelection.selectionIconIndex = thisSelection.selectionIconIndex;\r\n aSelection.selectionBlurb = thisSelection.selectionBlurb;\r\n aSelection.selectionStatusId = thisSelection.status;\r\n aSelection.selectionResetCount = thisSelection.selectionResetCount;\r\n aSelection.withdrawalFactor = thisSelection.withdrawalFactor;\r\n\r\n aSelection.forSportsbookPrices = new gec.SportsbookPrice({\r\n price: thisSelection.currentForPrice,\r\n backReferencePrice: thisSelection.currentForDisplayPrice\r\n });\r\n\r\n\r\n if (thisSelection.currentForAmountAvailable !== undefined) {\r\n aSelection.forSportsbookPrices.amountAvailable = thisSelection.currentForAmountAvailable.amount;\r\n }\r\n aSelection.forSportsbookPrices.prices = [];\r\n if (thisSelection.currentForPriceDetailedList !== undefined) {\r\n thisSelection.currentForPriceDetailedList.forEach(function (forPrice) {\r\n\r\n aSelection.forSportsbookPrices.prices.push({\r\n price: forPrice.price,\r\n stakeAvailable: forPrice.stake.amount\r\n });\r\n });\r\n }\r\n\r\n aSelection.forSportsbookPrices.stakes = [];\r\n if (thisSelection.currentForPriceStakeList !== undefined) {\r\n thisSelection.currentForPriceStakeList.forEach(function (forStake) {\r\n aSelection.forSportsbookPrices.stakes.push(forStake.amount);\r\n });\r\n }\r\n\r\n aSelection.againstSportsbookPrices = new gec.SportsbookPrice({\r\n price: thisSelection.currentAgainstPrice\r\n });\r\n\r\n if (thisSelection.currentAgainstAmountAvailable !== undefined) {\r\n aSelection.againstSportsbookPrices.amountAvailable = thisSelection.currentAgainstAmountAvailable.amount;\r\n }\r\n\r\n aSelection.againstSportsbookPrices.prices = [];\r\n if (thisSelection.currentAgainstPriceDetailedList !== undefined) {\r\n\r\n thisSelection.currentAgainstPriceDetailedList.forEach(function (againstPrice) {\r\n aSelection.againstSportsbookPrices.prices.push({\r\n price: againstPrice.price,\r\n stakeAvailable: againstPrice.stake.amount\r\n });\r\n });\r\n\r\n }\r\n aSelection.againstSportsbookPrices.stakes = [];\r\n if (thisSelection.currentAgainstPriceStakeList !== undefined) {\r\n thisSelection.currentAgainstPriceStakeList.forEach(function (againstStake) {\r\n aSelection.againstSportsbookPrices.stakes.push(againstStake.amount);\r\n });\r\n }\r\n\r\n aSelection.market = thisMarket;\r\n gecPrivate._selections[aSelection.selectionId] = aSelection;\r\n\r\n thisMarket.selections.push(aSelection);\r\n });\r\n\r\n marketArrays.push(thisMarket);\r\n\r\n });\r\n }\r\n\r\n request.callbackOnSuccess(marketArrays);\r\n } else {\r\n request.callbackOnException(new gec.AsyncException(response));\r\n }\r\n\r\n });\r\n }\r\n };\r\n\r\n gec.Controller.prototype.getSportsbookMarketsBlurb = function (params) {\r\n var request;\r\n if (gecPrivate.controllerDefaults === null && gecPrivate.userContext === null) {\r\n params.callbackOnException(new gec.AsyncException({ \"returnCode\": 591 }));\r\n } else {\r\n request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n if (params.markets !== undefined) {\r\n request.eventClassifierId = null;\r\n request.marketIds = [];\r\n params.markets.forEach(function (market) {\r\n request.marketIds.push(market.marketId);\r\n });\r\n\r\n } else {\r\n request.marketIds = undefined;\r\n request.eventClassifierId = params.eventClassifierId;\r\n request.marketType = params.marketTypeId;\r\n }\r\n\r\n if (gecPrivate.userContext !== null) {\r\n request.integrationPartnerId = gecPrivate.userContext.integrationPartnerId;\r\n request.language = gecPrivate.userContext.language;\r\n } else { // use defaults\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n request.language = gecPrivate.controllerDefaults.language;\r\n }\r\n this.sendRequest(\"/GetSportsBookMarketBlurb.ashx\", request, function (ignore, response) {\r\n if (response.returnCode === 0) {\r\n params.callbackOnSuccess(response.marketBlurbs);\r\n } else {\r\n params.callbackOnException({ returnCode: response.returnCode });\r\n }\r\n\r\n });\r\n }\r\n };\r\n\r\n gec.Controller.prototype.placeBets = function (params) {\r\n var request;\r\n function stringify(obj) {\r\n let cache = [];\r\n const str = JSON.stringify(obj, function (key, value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (cache.indexOf(value) !== -1) {\r\n return;\r\n }\r\n cache.push(value);\r\n }\r\n return value;\r\n });\r\n cache = null;\r\n return str;\r\n }\r\n\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException(new gec.AsyncException({ returnCode: 590, message: \"NeitherUserNorTelebetUserSession \" }));\r\n } else {\r\n request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.channelInformation = params.channelInformation || \"GBEIntegrationSolution\";\r\n request.useFreeBet = params.useFreeBet;\r\n request.autoOddsAcceptanceOption = params.autoOddsAcceptanceOption;\r\n\r\n request.betRequests = [];\r\n params.requestedBets.forEach(function (bet) {\r\n var newBet;\r\n bet.selectionId = Number(bet.selection.selectionId);\r\n bet.amountRequested = {\r\n amount: bet.amountRequested,\r\n currency: gecPrivate.userContext.currency\r\n };\r\n if (bet.fillOrKillThreshold === undefined) {\r\n bet.fillOrKillThreshold = bet.amountRequested;\r\n }\r\n newBet = JSON.parse(stringify(bet));\r\n newBet.counterOfferId = bet.counterOfferId;\r\n\r\n delete newBet.selection;\r\n\r\n request.betRequests.push(newBet);\r\n });\r\n this.sendRequest(\"/PlaceBets.ashx\", request, function (requestParam, response) {\r\n var i = 0;\r\n var bets = [];\r\n var lastBet;\r\n if (response.returnCode === 0) {\r\n response.betResponses.forEach(function (betResponse) {\r\n\r\n if (betResponse.returnCode === 0) {\r\n betResponse.polarity = params.requestedBets[i].polarity;\r\n betResponse.selectionId = params.requestedBets[i].selectionId;\r\n betResponse.selectionName = params.requestedBets[i].selection.name || params.requestedBets[i].selection.selectionName;\r\n betResponse.marketName = params.requestedBets[i].selection.getMarket().marketName;\r\n betResponse.eventClassifierFullName = params.requestedBets[i].selection.getMarket().eventClassifierFullName;\r\n betResponse.withdrawalSequenceNumber = params.requestedBets[i].expectedWithdrawalSequenceNumber;\r\n betResponse.punterGrossAmountRequested = params.requestedBets[i].amountRequested.amount;\r\n betResponse.punterPrice = betResponse.punterPrice || params.requestedBets[i].punterPriceRequested;\r\n betResponse.marketId = params.requestedBets[i].selection.getMarket().marketId;\r\n betResponse.sportsBetPriceType = params.requestedBets[i].sportsBetPriceType;\r\n\r\n bets.push(new gec.Bet(betResponse));\r\n } else {\r\n\r\n lastBet = { returnCode: betResponse.returnCode };\r\n\r\n if (betResponse.availableStake !== undefined) {\r\n lastBet.availableStake = betResponse.availableStake;\r\n }\r\n\r\n if (betResponse.returnCode === 454 && betResponse.counterOfferId) {\r\n lastBet.counterOfferId = betResponse.counterOfferId;\r\n lastBet.counterOfferStake = betResponse.counterOfferStake.amount;\r\n lastBet.counterOfferPrice = betResponse.counterOfferPrice;\r\n lastBet.counterOfferValidUntil = betResponse.counterOfferValidUntil;\r\n }\r\n bets.push(lastBet);\r\n }\r\n\r\n i = i + 1;\r\n });\r\n request.callbackOnSuccess(bets);\r\n } else {\r\n request.callbackOnException(new gec.AsyncException({ returnCode: response.returnCode }));\r\n }\r\n\r\n });\r\n }\r\n };\r\n\r\n gec.Controller.prototype.listCurrentBets = function (params) {\r\n var request;\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException(new gec.AsyncException({ returnCode: 590, message: \"NeitherUserNorTelebetUserSession \" }));\r\n } else {\r\n request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n if (params.marketIds === undefined) {\r\n params.marketIds = [];\r\n }\r\n\r\n request.marketId = params.marketId;\r\n request.marketsId = params.marketIds;\r\n if (params.includeCashOutHistory) {\r\n request.includeCashOutHistory = params.includeCashOutHistory;\r\n }\r\n this.sendRequest(\"/ListCurrentBets.ashx\", request, function (requestParam, response) {\r\n var betArray = [];\r\n if (response.returnCode !== 0) {\r\n request.callbackOnException({ returnCode: response.returnCode });\r\n } else {\r\n if (response.localBets !== null) {\r\n response.localBets.forEach(function (localBet) {\r\n betArray.push(new gec.Bet(localBet));\r\n });\r\n\r\n }\r\n request.callbackOnSuccess(betArray);\r\n }\r\n });\r\n }\r\n };\r\n\r\n gec.Controller.prototype.requestCashOutOffer = function (params) {\r\n var request;\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 590, \"message\": \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.localBetIds = params.localBetId;\r\n\r\n this.sendRequest(\"/RequestCashOutOffer.ashx\", request, function (requestParam, response) {\r\n var returnObject = {};\r\n if (response.returnCode !== 0) {\r\n params.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n if (response.cashoutOffers) {\r\n returnObject.cashoutOffers = response.cashoutOffers;\r\n }\r\n if (response.totalCashOutOffer) {\r\n returnObject.totalCashOutOffer = response.totalCashOutOffer;\r\n }\r\n if (response.totalEquityAmount) {\r\n returnObject.totalEquityAmount = response.totalEquityAmount;\r\n }\r\n params.callbackOnSuccess(returnObject);\r\n }\r\n });\r\n }\r\n };\r\n\r\n gec.Controller.prototype.cashOutBets = function (params) {\r\n var request;\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.wantAllOrNothing = params.wantAllOrNothing;\r\n request.firstRequestedAt = params.firstRequestedAt;\r\n request.bets = params.localBets;\r\n this.sendRequest(\"/CashOutBets.ashx\", request, function (requestParam, response) {\r\n if (response.returnCode !== 0) {\r\n request.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n request.callbackOnSuccess(response);\r\n }\r\n });\r\n }\r\n };\r\n\r\n gec.Controller.prototype.getBetDetails = function (params) {\r\n var request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.localBetId = params.localBetId;\r\n request.includeCashOutHistory = params.includeCashOutHistory;\r\n\r\n this.sendRequest(\"/GetBetDetails.ashx\", request, function (requestParam, response) {\r\n if (response.returnCode !== 0) {\r\n request.callbackOnException({ returnCode: response.returnCode });\r\n } else {\r\n request.callbackOnSuccess(new gec.Bet(response));\r\n }\r\n });\r\n };\r\n gec.Controller.prototype.getBet = function (params) {\r\n window.console.warn(\"getBet obsolete - use getBetDetails\");\r\n return this.getBetDetails(params);\r\n };\r\n\r\n gec.Controller.prototype.getSportsbookPricesEnhanced = function (params) {\r\n var request;\r\n if (gecPrivate.controllerDefaults === null && gecPrivate.userContext === null) {\r\n params.callbackOnException({\r\n returnCode: 591\r\n });\r\n } else {\r\n request = new gec.IAPIRequest(params);\r\n request.callbackOnException = params.callbackOnException;\r\n request.callbackOnSuccess = params.callbackOnSuccess;\r\n\r\n if (gecPrivate.userContext !== null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n } else { // use defaults\r\n request.language = gecPrivate.controllerDefaults.language;\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n request.currency = gecPrivate.controllerDefaults.currency;\r\n request.priceFormat = gecPrivate.controllerDefaults.priceFormatId;\r\n }\r\n request.organisationalUnitId = 0;\r\n request.marketId = params.marketId;\r\n request.thresholdAmount = {\r\n amount: params.thresholdAmount,\r\n currency: request.currency\r\n };\r\n\r\n request.numberForPricesRequired = params.numberForPricesRequired;\r\n request.numberAgainstPricesRequired = params.numberAgainstPricesRequired;\r\n request.wantIcons = params.wantIcons;\r\n request.wantMultiplesOnly = params.wantMultiplesOnly;\r\n\r\n this.sendRequest(\"/GetSportsbookPricesEnhanced.ashx\", request, function (requestParam, response) {\r\n var marketDetail;\r\n if (response.returnCode !== 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException({\r\n returnCode: response.returnCode\r\n });\r\n } else {\r\n\r\n marketDetail = new gec.MarketDetail();\r\n\r\n marketDetail.marketId = response.marketId;\r\n marketDetail.eventClassifierId = response.parentEventClassifierId;\r\n marketDetail.eventClassifierFullName = response.eventClassifierFullName;\r\n marketDetail.marketName = response.name;\r\n marketDetail.isEnabledForMultipleBets = response.isEnabledForMultiples;\r\n if (response.selectionIconsURL !== undefined) {\r\n marketDetail.selectionIconsURL = response.selectionIconsURL;\r\n marketDetail.iconWidth = response.iconWidth;\r\n marketDetail.iconHeight = response.iconHeight;\r\n }\r\n marketDetail.marketType = response.marketType;\r\n marketDetail.placePayout = response.placePayout;\r\n marketDetail.willBeInRunning = response.isInRunningAllowed;\r\n marketDetail.managedWhenInRunning = response.managedWhenInRunning;\r\n marketDetail.inRunningDelaySeconds = response.inRunningDelaySeconds;\r\n if (response.totalMatchedAmount !== undefined) {\r\n marketDetail.totalMatchedAmount = response.totalMatchedAmount.amount;\r\n }\r\n marketDetail.isCurrentlyInRunning = response.isCurrentlyInRunning;\r\n marketDetail.numberOfWinningSelections = response.numberOfWinningSelections;\r\n marketDetail.startTime = response.startTime;\r\n marketDetail.suspendTime = response.suspendTime;\r\n marketDetail.marketStatusId = response.marketStatus;\r\n marketDetail.withdrawalSequenceNumber = response.withdrawalSequenceNumber;\r\n marketDetail.isEnabledForEachWayBetting = response.isEnabledForEachWayBetting;\r\n marketDetail.isEnabledForSPBetting = response.isEnabledForSPBetting;\r\n\r\n marketDetail.selections.sort(gec.SortOnDisplayOrder);\r\n\r\n response.selections.forEach(function (thisSelection) {\r\n\r\n var aSelection = new gec.SelectionDetail({\r\n selectionId: thisSelection.selectionId,\r\n selectionName: thisSelection.name,\r\n selectionBlurb: thisSelection.selectionBlurb,\r\n selectionIconIndex: thisSelection.selectionIconIndex,\r\n selectionStatusId: thisSelection.status,\r\n selectionResetCount: thisSelection.selectionResetCount,\r\n currentForPrice: thisSelection.currentForPrice,\r\n currentAgainstPrice: thisSelection.currentAgainstPrice,\r\n withdrawalFactor: response.withdrawalSequenceNumber\r\n });\r\n\r\n if (thisSelection.currentForPrice > 0) {\r\n aSelection.forExchangePrices = [];\r\n thisSelection.currentForPriceStakesDetailed.forEach(function (forPrice) {\r\n aSelection.forExchangePrices.push(new gec.ExchangePrice({\r\n price: forPrice.price,\r\n displayPrice: forPrice.displayPrice,\r\n amountAvailable: gecPrivate._base.formatDecimal(forPrice.stakeAvailable.amount, 0, \"\"),\r\n hasRecentlyChanged: true\r\n }));\r\n\r\n });\r\n }\r\n\r\n if (thisSelection.currentAgainstPrice > 0) {\r\n thisSelection.currentAgainstPriceStakesDetailed.forEach(function (againstPrice) {\r\n aSelection.againstExchangePrices.push(new gec.ExchangePrice({\r\n price: againstPrice.price,\r\n displayPrice: againstPrice.displayPrice,\r\n amountAvailable: gecPrivate._base.formatDecimal(againstPrice.stakeAvailable.amount, 0, \"\"),\r\n hasRecentlyChanged: true\r\n }));\r\n\r\n });\r\n }\r\n\r\n aSelection.market = marketDetail;\r\n\r\n marketDetail.selections.push(aSelection);\r\n });\r\n\r\n request.callbackOnSuccess({\r\n marketDetail: marketDetail,\r\n topLevelEventClassifierId: response.topLevelEventClassifierId,\r\n grandparentEventClassifierId: response.grandparentEventClassifierId,\r\n relatedEventClassifiers: response.relatedEventClassifiers,\r\n relatedMarkets: response.relatedMarkets\r\n });\r\n\r\n }\r\n });\r\n }\r\n };\r\n\r\n gec.Controller.prototype.requestSBMultipleBetQuotation = function (params) {\r\n var request;\r\n request = new gec.IAPIRequest(params);\r\n request.callbackOnException = params.callbackOnException;\r\n request.callbackOnSuccess = params.callbackOnSuccess;\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n request.currency = gecPrivate.controllerDefaults.currency; // :String;\r\n request.language = gecPrivate.controllerDefaults.language;\r\n\r\n request.selections = params.selections;\r\n request.combinationTypes = params.combinationTypes;\r\n request.riskGroupProfileName = params.riskGroupProfileName;\r\n\r\n this.sendRequest(\"/requestSBMultipleBetQuotation.ashx\", request, function (requestParam, response) {\r\n\r\n if (response.returnCode !== 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException(response);\r\n } else {\r\n\r\n delete response.returnCode;\r\n\r\n request.callbackOnSuccess(response);\r\n\r\n }\r\n });\r\n };\r\n\r\n gec.Controller.prototype.placeSBMultipleBet = function (params) {\r\n var request;\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException(new gec.AsyncException({ returnCode: 590, message: \"NeitherUserNorTelebetUserSession \" }));\r\n } else {\r\n\r\n request = new gec.IAPIRequest(params);\r\n request.callbackOnException = params.callbackOnException;\r\n request.callbackOnSuccess = params.callbackOnSuccess;\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.acceptPriceChange = params.acceptPriceChange;\r\n request.punterId = gecPrivate.userContext.punterId;\r\n request.channelType = params.channelType;\r\n request.channelInformation = params.channelInformation;\r\n request.accaGroupName = params.accaGroupName;\r\n request.customBetType = params.customBetType;\r\n\r\n request.participants = params.participants;\r\n if (params.counterOfferId) {\r\n request.counterOfferId = params.counterOfferId;\r\n }\r\n request.combinationTypes = params.combinationTypes;\r\n if (params.punterReferenceNumber) {\r\n request.punterReferenceNumber = params.punterReferenceNumber;\r\n }\r\n request.useFreeBet = params.useFreeBet;\r\n\r\n this.sendRequest(\"/placeSBMultipleBet.ashx\", request, function (requestParam, response) {\r\n\r\n if (response.returnCode !== 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException(response);\r\n } else {\r\n\r\n delete response.returnCode;\r\n\r\n request.callbackOnSuccess(response);\r\n\r\n }\r\n });\r\n }\r\n };\r\n\r\n gec.Controller.prototype.requestSBMultipleBetCashOut = function (params) {\r\n var request;\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException(new gec.AsyncException({ returnCode: 590, message: \"NeitherUserNorTelebetUserSession \" }));\r\n } else {\r\n\r\n request = new gec.IAPIRequest(params);\r\n request.multipleBetId = params.multipleBetId;\r\n\r\n request.callbackOnException = params.callbackOnException;\r\n request.callbackOnSuccess = params.callbackOnSuccess;\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n this.sendRequest(\"/requestSBMultipleBetCashOut.ashx\", request, function (requestParam, response) {\r\n\r\n if (response.returnCode !== 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException(response);\r\n } else {\r\n\r\n delete response.returnCode;\r\n\r\n request.callbackOnSuccess(response);\r\n\r\n }\r\n });\r\n }\r\n };\r\n\r\n gec.Controller.prototype.cashOutSBMultipleBet = function (params) {\r\n var request;\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException(new gec.AsyncException({ returnCode: 590, message: \"NeitherUserNorTelebetUserSession \" }));\r\n } else {\r\n\r\n request = new gec.IAPIRequest(params);\r\n\r\n request.multipleBetId = params.multipleBetId;\r\n request.cashOutOffer = {\r\n amount: params.cashOutOffer,\r\n currency: gecPrivate.controllerDefaults.currency\r\n };\r\n request.cashOutEquityPercentage = params.cashOutEquityPercentage;\r\n\r\n request.callbackOnException = params.callbackOnException;\r\n request.callbackOnSuccess = params.callbackOnSuccess;\r\n request.sessionToken = gecPrivate.sessionToken;\r\n\r\n this.sendRequest(\"/cashOutSBMultipleBet.ashx\", request, function (requestParam, response) {\r\n\r\n if (response.returnCode !== 0) {\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n request.callbackOnException(response);\r\n } else {\r\n\r\n delete response.returnCode;\r\n\r\n request.callbackOnSuccess(response);\r\n\r\n }\r\n });\r\n }\r\n };\r\n\r\n gec.Bet = function (params) {\r\n // Properties\r\n var histories;\r\n\r\n this.localBetId = params.localBetId;\r\n this.placedAt = params.placedAt;\r\n this.withdrawalSequenceNumber = params.withdrawalSequenceNumber;\r\n this.punterGrossAmountRequested = params.punterGrossAmountRequested;\r\n this.punterPrice = params.punterPrice;\r\n this.isEachWay = params.isEachWay;\r\n this.adjustedStrikePrice = params.adjustedStrikePrice;\r\n\r\n this.punterNetAmountPlaced = params.punterNetAmountPlaced !== undefined ? params.punterNetAmountPlaced.amount : undefined;\r\n this.punterGrossAmountPlaced = params.punterGrossAmountPlaced !== undefined ? params.punterGrossAmountPlaced.amount : undefined;\r\n this.polarityId = params.polarity ? 1 : 2; // deprecated\r\n this.polarity = params.polarity ? 1 : 2;\r\n this.isFreeBet = params.isFreeBet;\r\n this.betStatusId = params.betStatus !== undefined ? params.betStatus : 1; // deprecated\r\n this.betStatus = params.betStatus !== undefined ? params.betStatus : 1;\r\n\r\n this.placePayout = params !== undefined ? params.placePayout : null;\r\n this.settledAt = params !== undefined ? params.settledAt : null;\r\n this.punterPriceWhenSettled = params !== undefined ? params.punterPriceWhenSettled : null;\r\n\r\n this.sportsBetPriceType = params.sportsBetPriceType;\r\n this.startTime = params.startTime;\r\n\r\n if (params.adjustedStrikePrice !== undefined) {\r\n this.adjustedStrikePrice = params.adjustedStrikePrice;\r\n }\r\n\r\n if (params.settledAt !== undefined) {\r\n\r\n this.settledAt = params.settledAt;\r\n this.netSettlementAmount = params.netSettlementAmount.amount;\r\n this.punterPriceWhenSettled = params.punterPriceWhenSettled;\r\n }\r\n\r\n if (params.cashOutHistory !== undefined) {\r\n histories = [];\r\n\r\n params.cashOutHistory.forEach(function (cashOutHistory) {\r\n var history = {\r\n cashOutDatetime: cashOutHistory.cashOutDatetime,\r\n cashOutReturnCode: cashOutHistory.cashOutReturnCode,\r\n requestedCashOutAmount: cashOutHistory.requestedCashOutAmount\r\n };\r\n\r\n if (cashOutHistory.fixedPremium !== undefined) {\r\n history.fixedPremium = cashOutHistory.fixedPremium;\r\n }\r\n\r\n if (cashOutHistory.betValuationWithConcession !== undefined) {\r\n history.betValuationWithConcession = cashOutHistory.betValuationWithConcession;\r\n }\r\n\r\n if (cashOutHistory.cashOutOffer !== undefined) {\r\n history.cashOutOffer = cashOutHistory.cashOutOffer.amount;\r\n }\r\n\r\n if (cashOutHistory.cashOutAmount !== undefined) {\r\n history.cashOutAmount = cashOutHistory.cashOutAmount.amount;\r\n }\r\n\r\n if (cashOutHistory.cashOutStake !== undefined) {\r\n history.cashOutStake = cashOutHistory.cashOutStake.amount;\r\n }\r\n\r\n if (cashOutHistory.totalCashOutAmount !== undefined) {\r\n history.totalCashOutAmount = cashOutHistory.totalCashOutAmount.amount;\r\n }\r\n\r\n if (cashOutHistory.totalCashOutStake !== undefined) {\r\n history.totalCashOutStake = cashOutHistory.totalCashOutStake.amount;\r\n }\r\n\r\n if (cashOutHistory.remainingStake !== undefined) {\r\n history.remainingStake = cashOutHistory.remainingStake.amount;\r\n }\r\n\r\n if (cashOutHistory.betValuationWithConcession !== undefined) {\r\n history.betValuationWithConcession = cashOutHistory.betValuationWithConcession.amount;\r\n }\r\n\r\n histories.push(history);\r\n });\r\n this.cashOutHistories = histories;\r\n\r\n }\r\n\r\n // Methods\r\n\r\n this.marketId = function () {\r\n return params.marketId;\r\n };\r\n this.marketName = function () {\r\n return params.marketName;\r\n };\r\n this.marketStatus = function () {\r\n return params.marketStatus;\r\n };\r\n this.selectionId = function () {\r\n return params.selectionId;\r\n };\r\n this.selectionName = function () {\r\n return params.selectionName;\r\n };\r\n this.eventClassifierId = function () {\r\n return params.eventClassifierId;\r\n };\r\n this.marketTypeId = function () {\r\n return params.marketType;\r\n };\r\n\r\n if (params.eventClassifierFullName !== undefined) {\r\n this.eventClassifierFullName = function () {\r\n return params.eventClassifierFullName;\r\n };\r\n } else {\r\n this.eventClassifierFullName = function () {\r\n return params.eventClassifierName;\r\n };\r\n }\r\n\r\n };\r\n\r\n gec.Bet.prototype.marketStatusId = function () {\r\n return this.marketStatusId;\r\n };\r\n gec.Bet.prototype.selectionId = function () {\r\n return this.selectionId;\r\n };\r\n gec.Bet.prototype.selectionName = function () {\r\n return this.selectionName;\r\n };\r\n\r\n gec.SportsbookPrice = function (params) {\r\n this.price = params.price;\r\n this.amountAvailable = params.amountAvailable;\r\n this.backReferencePrice = params.backReferencePrice;\r\n this.stakes = []; // Array[stake: MoneyAmount]\r\n this.prices = []; // Array[{price: Price, stakeAvailable: MoneyAmount}]\r\n };\r\n\r\n\r\n gec.SportsBetPriceType = {\r\n FixedPrice: 1,\r\n StartingPrice: 2,\r\n BestOddsGuaranteed: 3\r\n };\r\n\r\n return gec;\r\n\r\n}(gec || {}));\r\n\r\n// gec.gecSeal(); // prevent access to private props\r\n","/* global gec:true */\r\n/* eslint-disable prefer-template */\r\n/* exported gec */\r\ngec = (function (gec) {\r\n \"use strict\";\r\n\r\n const gecPrivate = gec.gecPrivate || {};\r\n const gecSeal = gec.gecSeal || function () {\r\n delete gec.gecPrivate;\r\n delete gec.gecSeal;\r\n delete gec.gecUnseal;\r\n };\r\n const gecUnseal = gec.gecUnseal || function () {\r\n gec.gecPrivate = gecPrivate;\r\n gec.gecSeal = gecSeal;\r\n gec.gecUnseal = gecUnseal;\r\n };\r\n\r\n /** **************************\r\n getMultiplesSBBaseCombinations\r\n ****************************/\r\n gec.Controller.prototype.getMultiplesSBBaseCombinations = function (params) {\r\n var dg = [\"Zero\", \"One\", \"Two\", \"Three\", \"Four\", \"Five\", \"Six\", \"Seven\", \"Eight\", \"Nine\", \"Ten\", \"Eleven\", \"Twelve\", \"Thirteen\", \"Fourteen\", \"Fifteen\", \"Sixteen\", \"Seventeen\", \"Eighteen\", \"Nineteen\", \"Twenty\"];\r\n var type = {};\r\n var subType = {};\r\n const combinations = params.combinations || [];\r\n const totalCombinationCount = params.totalCombinationCount;\r\n const finalCombinations = [];\r\n const goliath = {\r\n \"name\": \"Goliath ({0})\",\r\n \"hasAccaGroupName\": true,\r\n \"count\": 247,\r\n \"legs\": [2, 3, 4, 5, 6, 7, 8]\r\n };\r\n const superHeinz = {\r\n \"name\": \"Super Heinz ({0})\",\r\n \"hasAccaGroupName\": true,\r\n \"count\": 120,\r\n \"level\": 0,\r\n \"legs\": [2, 3, 4, 5, 6, 7]\r\n };\r\n const heinz = {\r\n \"name\": \"Heinz ({0})\",\r\n \"hasAccaGroupName\": true,\r\n \"count\": 57,\r\n \"level\": 0,\r\n \"legs\": [2, 3, 4, 5, 6]\r\n };\r\n const lucky63 = {\r\n \"name\": \"Lucky 63 ({0})\",\r\n \"hasAccaGroupName\": true,\r\n \"count\": 63,\r\n \"level\": 0,\r\n \"legs\": [1, 2, 3, 4, 5, 6]\r\n };\r\n const superYankee = {\r\n \"name\": \"Super Yankee ({0})\",\r\n \"hasAccaGroupName\": true,\r\n \"count\": 26,\r\n \"level\": 0,\r\n \"legs\": [2, 3, 4, 5]\r\n };\r\n const lucky31 = {\r\n \"name\": \"Lucky 31 ({0})\",\r\n \"hasAccaGroupName\": true,\r\n \"count\": 31,\r\n \"level\": 0,\r\n \"legs\": [1, 2, 3, 4, 5]\r\n };\r\n const yankee = {\r\n \"name\": \"Yankee ({0})\",\r\n \"hasAccaGroupName\": true,\r\n \"count\": 11,\r\n \"level\": 0,\r\n \"legs\": [2, 3, 4]\r\n };\r\n const lucky15 = {\r\n \"name\": \"Lucky 15 ({0})\",\r\n \"hasAccaGroupName\": true,\r\n \"count\": 15,\r\n \"level\": 0,\r\n \"legs\": [1, 2, 3, 4]\r\n };\r\n const trixie = {\r\n \"name\": \"Trixie ({0})\",\r\n \"hasAccaGroupName\": true,\r\n \"count\": 4,\r\n \"level\": 0,\r\n \"legs\": [2, 3]\r\n };\r\n const patent = {\r\n \"name\": \"Patent ({0})\",\r\n \"hasAccaGroupName\": true,\r\n \"count\": 7,\r\n \"level\": 0,\r\n \"legs\": [1, 2, 3]\r\n };\r\n\r\n combinations.forEach(function (combination) {\r\n const combinationToPush = {};\r\n const betString = combination.combinationCount > 1 ? \"Bets\" : \"Bet\";\r\n if (combination.combinationType === 1) {\r\n combinationToPush.name = String.format(\"Singles ({0} {1})\", combination.combinationCount, betString);\r\n combinationToPush[\"0name\"] = String.format(\"({0} {1}) Singles\", combination.combinationCount, betString);\r\n } else if (combination.combinationType === 2) {\r\n combinationToPush.name = String.format(\"Double ({0} {1})\", combination.combinationCount, betString);\r\n combinationToPush[\"0name\"] = String.format(\"({0} {1}) Double\", combination.combinationCount, betString);\r\n } else if (combination.combinationType === 3) {\r\n combinationToPush.name = String.format(\"Treble ({0} {1})\", combination.combinationCount, betString);\r\n combinationToPush[\"0name\"] = String.format(\"({0} Bets) Treble\", combination.combinationCount, betString);\r\n } else {\r\n const combinationName = dg[combination.combinationType] + \" Folds\";\r\n combinationToPush.name = String.format(combinationName + \" ({ 0} Bets)\", combination.combinationCount, betString);\r\n combinationToPush[\"0name\"] = String.format(\"({0} {1}) \" + combinationName, combination.combinationCount, betString);\r\n }\r\n combinationToPush.count = combination.combinationCount;\r\n combinationToPush.legs = [combination.combinationType];\r\n combinationToPush.hasAccaGroupName = false;\r\n finalCombinations.push(combinationToPush);\r\n });\r\n\r\n const indexToMove = finalCombinations.indexOf(finalCombinations[finalCombinations.length - 1]);\r\n if (finalCombinations.length >= 2 && indexToMove !== -1) {\r\n finalCombinations.unshift(finalCombinations.splice(indexToMove, 1)[0]);\r\n }\r\n\r\n if (finalCombinations.length === superHeinz.legs.length && totalCombinationCount % superHeinz.count === 0) {\r\n superHeinz.count = totalCombinationCount;\r\n finalCombinations.push(superHeinz);\r\n }\r\n if (finalCombinations.length === goliath.legs.length && totalCombinationCount % goliath.count === 0) {\r\n goliath.count = totalCombinationCount;\r\n finalCombinations.push(goliath);\r\n } else if (finalCombinations.length === 6) {\r\n type = heinz;\r\n subType = lucky63;\r\n } else if (finalCombinations.length === 5) {\r\n type = superYankee;\r\n subType = lucky31;\r\n } else if (finalCombinations.length === 4) {\r\n type = yankee;\r\n subType = lucky15;\r\n } else if (finalCombinations.length === 3) {\r\n type = trixie;\r\n subType = patent;\r\n }\r\n\r\n if (Object.keys(type).length !== 0 && Object.keys(subType).length !== 0) {\r\n let typeCount = 0;\r\n type.legs.forEach(function (leg) {\r\n typeCount = typeCount + combinations.find(function (c) {\r\n return c.combinationType === leg;\r\n }).combinationCount;\r\n });\r\n if (typeCount % type.count === 0) {\r\n finalCombinations.push(type);\r\n type.count = typeCount;\r\n }\r\n if (totalCombinationCount % subType.count === 0) {\r\n subType.count = totalCombinationCount;\r\n finalCombinations.push(subType);\r\n }\r\n }\r\n return finalCombinations;\r\n };\r\n\r\n /** **************************\r\n listMultipleBets\r\n ****************************/\r\n gec.Controller.prototype.listMultipleBets = function (params) {\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 590, \"message\": \"NeitherUserNorTelebetUserSession \" });\r\n } else {\r\n const request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n this.sendRequest(\"/ListMultipleBets.ashx\", request, function listMultipleBetsResponse(requestParam, response) {\r\n if (response.returnCode !== 0) {\r\n request.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n const betArray = [];\r\n if (response.multipleBets !== undefined) {\r\n response.multipleBets.forEach(function (item) {\r\n const betObject = new gec.MultipleBet(item);\r\n betObject.multipleBetId = item.multipleBetId;\r\n betObject.accaGroupId = item.accaGroupId;\r\n betObject.accaGroupName = item.accaGroupName;\r\n betObject.clientGroupReference = item.clientGroupReference;\r\n betObject.cashOutHistories = item.cashOutHistories;\r\n\r\n betObject.selections = [];\r\n item.multipleLegs.forEach(function (gbeselection) {\r\n\r\n betObject.selections.push({\r\n selectionName: gbeselection.selectionName,\r\n marketName: gbeselection.marketName,\r\n eventClassifierFullName: gbeselection.eventClassifierFullName,\r\n startTime: gbeselection.startTime,\r\n multipleLegStatusId: gbeselection.multipleLegStatus\r\n });\r\n });\r\n\r\n betObject.requestedStake = item.requestedStake.amount;\r\n betObject.totalMatchedStake = item.totalMatchedStake.amount;\r\n betObject.requestedPrice = item.requestedPrice;\r\n betObject.averageMatchedPrice = item.averageMatchedPrice;\r\n betObject.rolloverStake = item.rolloverStake.amount;\r\n betObject.numberOfUnsettledSelections = item.numberOfUnsettledSelections;\r\n betObject.unsettledPrice = item.unsettledPrice;\r\n betObject.totalMaxUpside = item.totalMaxUpside;\r\n betObject.multipleBetStatusId = 1;\r\n betObject.placedAt = item.placedAt;\r\n betObject.commissionRate = item.commissionRate;\r\n betObject.isFreeBet = item.isFreeBet;\r\n\r\n betObject.iPAddress = item.iPaddress;\r\n betObject.iPCountryCode = item.iPCountryCode;\r\n betObject.channelInformation = item.channelInformation;\r\n\r\n if (item.cashOutHistories !== undefined) {\r\n betObject.cashOutHistories = item.cashOutHistories;\r\n }\r\n\r\n betArray.push(betObject);\r\n });\r\n\r\n betArray.sort(gec.SortOnMultiplebetId);\r\n betArray.reverse();\r\n }\r\n request.callbackOnSuccess(betArray);\r\n }\r\n\r\n });\r\n }\r\n };\r\n\r\n /** **************************\r\n getMultipleBetDetails\r\n ****************************/\r\n gec.Controller.prototype.getMultipleBetDetails = function (params) {\r\n const request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.multipleBetId = params.multipleBetId;\r\n\r\n this.sendRequest(\"/GetMultipleBetDetails.ashx\", request, function (requestParam, response) {\r\n\r\n if (response.returnCode !== 0) {\r\n\r\n request.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n const betObject = new gec.MultipleBetDetail(response);\r\n\r\n betObject.multipleBetId = response.multipleBetId;\r\n betObject.requestedStake = response.requestedStake.amount;\r\n betObject.totalMatchedStake = response.totalMatchedStake.amount;\r\n betObject.requestedPrice = response.requestedPrice;\r\n betObject.averageMatchedPrice = response.averageMatchedPrice;\r\n betObject.effectivePrice = response.effectivePrice;\r\n betObject.rolloverStake = response.rolloverStake.amount;\r\n betObject.numberOfUnsettledSelections = response.numberOfUnsettledSelections;\r\n betObject.unsettledPrice = response.unsettledPrice;\r\n betObject.totalMaxUpside = response.totalMaxUpside.amount;\r\n betObject.multipleBetStatusId = response.status;\r\n betObject.placedAt = response.placedAt;\r\n betObject.commissionRate = response.commissionRate;\r\n betObject.isFreeBet = response.isFreeBet;\r\n if (response.cashOutHistories !== undefined) {\r\n betObject.cashOutHistories = response.cashOutHistories;\r\n }\r\n betObject.settledAt = response.settledAt;\r\n betObject.settlementAmount = response.settlementAmount;\r\n betObject.iPAddress = response.iPAddress;\r\n betObject.ipCountryCode = response.iPCountryCode;\r\n\r\n betObject.channelInformation = response.channelInformation;\r\n\r\n response.multipleLegs.forEach(function (item) {\r\n item.multipleLegStatusId = item.multipleLegStatus;\r\n delete item.multipleLegStatus;\r\n });\r\n\r\n betObject.selections = response.multipleLegs;\r\n\r\n betObject.matches = [];\r\n if (response.partialMatches !== undefined) {\r\n\r\n response.partialMatches.forEach(function (partialMatch) {\r\n const match = {\r\n matchedStake: partialMatch.matchedStake.amount,\r\n rolloverStake: partialMatch.rolloverStake.amount,\r\n maxUpside: partialMatch.maxUpside.amount,\r\n indicativePrice: partialMatch.indicativePrice,\r\n effectivePrice: partialMatch.effectivePrice,\r\n unsettledPrice: partialMatch.unsettledPrice,\r\n selectionPrices: []\r\n };\r\n\r\n partialMatch.selectionPrices.forEach(function (selectionPrice) {\r\n const selitem = {\r\n priceWhenPlaced: selectionPrice.priceWhenPlaced,\r\n priceWhenSettled: selectionPrice.priceWhenSettled,\r\n selectionId: selectionPrice.selectionId,\r\n selections: []\r\n };\r\n\r\n response.multipleLegs.forEach(function (multipleLeg) {\r\n\r\n const matchedsel = {\r\n selectionId: multipleLeg.selectionId,\r\n selectionName: multipleLeg.selectionName,\r\n marketName: multipleLeg.marketName,\r\n eventClassifierFullName: multipleLeg.eventClassifierFullName,\r\n startTime: multipleLeg.startTime,\r\n multipleLegStatusId: multipleLeg.multipleLegStatus,\r\n voidPercentage: multipleLeg.voidPercentage,\r\n leftSideFactor: multipleLeg.leftSideFactor,\r\n rightSideFactor: multipleLeg.rightSideFactor\r\n };\r\n\r\n selitem.selections.push(matchedsel);\r\n\r\n });\r\n match.selectionPrices.push(selitem);\r\n });\r\n\r\n betObject.matches.push(match);\r\n });\r\n }\r\n\r\n\r\n request.callbackOnSuccess(betObject);\r\n }\r\n\r\n\r\n });\r\n };\r\n\r\n\r\n /** **************************\r\n requestMultipleBetQuotation\r\n ****************************/\r\n gec.Controller.prototype.requestMultipleBetQuotation = function (params) {\r\n\r\n if (gecPrivate.controllerDefaults === null && gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 591 });\r\n } else {\r\n const request = new gec.IAPIRequest(params);\r\n let currencyCode;\r\n if (gecPrivate.userContext !== null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n currencyCode = gecPrivate.userContext.currency;\r\n } else {\r\n request.integrationPartnerId = gecPrivate.controllerDefaults.integrationPartnerId;\r\n request.currency = gecPrivate.controllerDefaults.currency;\r\n request.language = gecPrivate.controllerDefaults.language;\r\n currencyCode = gecPrivate.controllerDefaults.currency;\r\n }\r\n\r\n request.selectionIds = [];\r\n params.indexedSelections = [];\r\n params.selections.forEach(function (gbeselection) {\r\n request.selectionIds.push(gbeselection.selectionId);\r\n params.indexedSelections[gbeselection.selectionId] = gbeselection;\r\n });\r\n request.minOffer = { \"amount\": params.minOffer, \"currency\": currencyCode };\r\n request.combinations = params.levels;\r\n\r\n // backward compatible code\r\n request.selectionIds = params.selectionIds || request.selectionIds;\r\n request.combinations = params.numberOfSelections || params.levels;\r\n\r\n this.sendRequest(\"/RequestMultipleBetQuotation.ashx\", request, function (requestParam, response) {\r\n if (response.returnCode !== 0) {\r\n request.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n const offers = [];\r\n\r\n response.betQuotations.forEach(function (betQuotation) {\r\n const offer = {};\r\n if (betQuotation.prices !== undefined) {\r\n\r\n offer.offers = betQuotation.prices || [];\r\n offer.selections = [];\r\n\r\n betQuotation.selections.forEach(function (gbeselection) {\r\n offer.selections.push(params.indexedSelections[gbeselection.selectionId]);\r\n });\r\n }\r\n offers.push(offer);\r\n });\r\n request.callbackOnSuccess(offers);\r\n }\r\n });\r\n }\r\n };\r\n\r\n /** **************************\r\n placeMultipleBets\r\n ****************************/\r\n gec.Controller.prototype.placeMultipleBets = function (params) {\r\n\r\n if (gecPrivate.controllerDefaults === undefined && gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 591 });\r\n } else {\r\n const request = new gec.IAPIRequest(params);\r\n if (gecPrivate.userContext !== null) {\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.channelInformation = params.channelInformation || \"GBEIntegrationSolution\";\r\n request.wantAllOrNothing = params.wantAllOrNothing;\r\n request.useFreeBet = params.useFreeBet;\r\n\r\n request.requestedLegs = [];\r\n\r\n params.requestedBets.forEach(function (requestedBet) {\r\n\r\n const requestedLeg = { \"selections\": [] };\r\n requestedBet.selections.forEach(function (betselection) {\r\n\r\n requestedLeg.selections.push({\r\n selectionId: betselection.selectionId,\r\n expectedSelectionResetCount: betselection.selectionResetCount,\r\n expectedWithdrawalSequenceNumber: betselection.market.withdrawalSequenceNumber\r\n });\r\n });\r\n\r\n requestedLeg.requestedGrossForSideStake = {};\r\n if (requestedBet.clientGroupReference) {\r\n requestedLeg.clientGroupReference = requestedBet.clientGroupReference;\r\n }\r\n if (requestedBet.accaGroupName) {\r\n requestedLeg.accaGroupName = requestedBet.accaGroupName;\r\n }\r\n requestedLeg.requestedGrossForSideStake.amount = requestedBet.requestedGrossForSideStake;\r\n requestedLeg.requestedGrossForSideStake.currency = gecPrivate.userContext.currency;\r\n requestedLeg.requestedForSidePrice = requestedBet.requestedForSidePrice;\r\n\r\n\r\n request.requestedLegs.push(requestedLeg);\r\n });\r\n }\r\n\r\n this.sendRequest(\"/PlaceMultipleBets.ashx\", request, function (requestParam, response) {\r\n if (response.returnCode !== 0) {\r\n request.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n const returnObject = [];\r\n gecPrivate.checkExpiredSession(response.returnCode);\r\n\r\n response.multipleBetResults.forEach(function (multipleBetResult) {\r\n const thisResult = {};\r\n\r\n thisResult.returnCode = multipleBetResult.returnCode;\r\n thisResult.multipleBetId = multipleBetResult.multipleBetId;\r\n thisResult.matchedAmount = multipleBetResult.matchedAmount.amount;\r\n thisResult.matchedPrice = multipleBetResult.matchedPrice;\r\n if (multipleBetResult.accaGroupId) {\r\n thisResult.accaGroupId = multipleBetResult.accaGroupId;\r\n }\r\n if (multipleBetResult.clientGroupReference) {\r\n thisResult.clientGroupReference = multipleBetResult.clientGroupReference;\r\n }\r\n if (multipleBetResult.accaGroupName) {\r\n thisResult.accaGroupName = multipleBetResult.accaGroupName;\r\n }\r\n returnObject.push(thisResult);\r\n });\r\n request.callbackOnSuccess(returnObject);\r\n }\r\n });\r\n }\r\n };\r\n\r\n\r\n /** **************************\r\n cashoutMultipleBets\r\n ****************************/\r\n\r\n gec.Controller.prototype.cashoutMultipleBets = function (params) {\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 590, message: \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n const request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.wantAllOrNothing = params.wantAllOrNothing;\r\n request.firstRequestedAt = params.firstRequestedAt;\r\n request.betCashOutRequests = params.multipleBets;\r\n this.sendRequest(\"/CashoutMultipleBets.ashx\", request, function (requestParam, response) {\r\n if (response.returnCode !== 0) {\r\n request.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n request.callbackOnSuccess(response);\r\n }\r\n });\r\n }\r\n };\r\n\r\n /** *******************************\r\n requestMultipleBetCashOutOffer\r\n *********************************/\r\n\r\n gec.Controller.prototype.requestMultipleBetCashOutOffer = function (params) {\r\n\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 590, \"message\": \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n const request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n if (params.multipleBetId) {\r\n request.multipleBetId = params.multipleBetId;\r\n }\r\n if (params.accaGroupId) {\r\n request.accaGroupId = params.accaGroupId;\r\n }\r\n this.sendRequest(\"/RequestMultipleBetCashOutOffer.ashx\", request, function (requestParam, response) {\r\n const returnObject = {};\r\n if (response.returnCode !== 0) {\r\n params.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n if (response.multipleBetCashOutOffers) {\r\n returnObject.multipleBetCashOutOffers = response.multipleBetCashOutOffers;\r\n }\r\n if (response.totalCashOutOffer) {\r\n returnObject.totalCashOutOffer = response.totalCashOutOffer;\r\n }\r\n if (response.totalEquityAmount) {\r\n returnObject.totalEquityAmount = response.totalEquityAmount;\r\n }\r\n params.callbackOnSuccess(returnObject);\r\n }\r\n });\r\n }\r\n };\r\n\r\n /*\r\n * **************************\r\n listActiveMultipleBets\r\n ***************************\r\n */\r\n\r\n gec.Controller.prototype.listActiveMultipleBets = function (params) {\r\n\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 590, \"message\": \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n const request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.embedAccaGroupItems = params.embedAccaGroupItems;\r\n\r\n this.sendRequest(\"/ListActiveMultipleBets.ashx\", request, function listActiveMultipleBetsResponse(requestParams, response) {\r\n\r\n if (response.returnCode !== 0) {\r\n params.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n params.callbackOnSuccess({ \"multipleBets\": response.multipleBets });\r\n }\r\n });\r\n }\r\n };\r\n\r\n /*\r\n ***************************\r\n getSBMultipleBetDetails\r\n ***************************\r\n */\r\n\r\n gec.Controller.prototype.getSBMultipleBetDetails = function (params) {\r\n\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 590, \"message\": \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n const request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.accessToken = params.accessToken;\r\n request.multipleBetId = params.multipleBetId;\r\n\r\n this.sendRequest(\"/GetSBMultipleBetDetails.ashx\", request, function getSBMultipleBetsResponse(requestParams, response) {\r\n\r\n if (response.returnCode !== 0) {\r\n params.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n delete response.returnCode;\r\n params.callbackOnSuccess(response);\r\n }\r\n });\r\n }\r\n };\r\n\r\n /*\r\n ***************************\r\n ListActiveSBMultipleBets\r\n ***************************\r\n */\r\n\r\n gec.Controller.prototype.listActiveSBMultipleBets = function (params) {\r\n\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 590, \"message\": \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n const request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.accessToken = params.accessToken;\r\n request.multipleBetId = params.multipleBetId;\r\n request.includeCashOutHistory = params.includeCashOutHistory;\r\n request.status = params.status;\r\n\r\n this.sendRequest(\"/ListActiveSBMultipleBets.ashx\", request, function listActiveMultipleBetsResponse(requestParams, response) {\r\n\r\n if (response.returnCode !== 0) {\r\n params.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n delete response.returnCode;\r\n params.callbackOnSuccess(response);\r\n }\r\n });\r\n }\r\n };\r\n\r\n /*\r\n ***************************\r\n ListSBMultipleBets\r\n ***************************\r\n */\r\n\r\n gec.Controller.prototype.listSBMultipleBets = function (params) {\r\n\r\n if (gecPrivate.userContext === null) {\r\n params.callbackOnException({ \"returnCode\": 590, \"message\": \"NeitherUserNorTelebetUserSession\" });\r\n } else {\r\n const request = new gec.IAPIRequest(params);\r\n request.sessionToken = gecPrivate.sessionToken;\r\n request.accessToken = params.accessToken;\r\n request.multipleBetStatusId = params.multipleBetStatusId;\r\n request.includeCashOutHistory = params.includeCashOutHistory;\r\n request.placedAfter = params.placedAfter;\r\n request.placedBefore = params.placedBefore;\r\n request.eventClassifierId = params.eventClassifierId;\r\n request.marketId = params.marketId;\r\n request.selectionId = params.selectionId;\r\n request.startOffset = params.startOffset;\r\n request.numberToReturn = params.numberToReturn;\r\n\r\n this.sendRequest(\"/ListSBMultipleBets.ashx\", request, function listSBMultipleBetsResponse(requestParams, response) {\r\n\r\n if (response.returnCode !== 0) {\r\n params.callbackOnException({ \"returnCode\": response.returnCode });\r\n } else {\r\n delete response.returnCode;\r\n params.callbackOnSuccess(response);\r\n }\r\n });\r\n }\r\n };\r\n\r\n gec.SortOnMultiplebetId = function (a, b) {\r\n return b.multipleBetId > a.multipleBetId ? -1 : 1;\r\n };\r\n\r\n gec.MultipleBet = function (params) {\r\n this.multipleBetId = params.multipleBetId;\r\n this.selections = params.selections || [];\r\n this.requestedStake = params.requestedStake;\r\n this.totalMatchedStake = params.totalMatchedStake;\r\n this.requestedPrice = params.requestedPrice;\r\n this.averageMatchedPrice = params.averageMatchedPrice;\r\n this.rolloverStake = params.rolloverStake;\r\n this.numberOfUnsettledSelections = params.numberOfUnsettledSelections;\r\n this.unsettledPrice = params.unsettledPrice;\r\n this.totalMaxUpside = params.totalMaxUpside;\r\n this.multipleBetStatusId = params.multipleBetStatusId;\r\n this.placedAt = params.placedAt;\r\n this.commissionRate = params.commissionRate;\r\n this.isFreeBet = params.isFreeBet;\r\n this.totalCashOutAmount = params.totalCashOutAmount;\r\n this.totalCashOutStake = params.totalCashOutStake;\r\n this.iPAddress = params.iPAddress;\r\n this.ipCountryCode = params.ipCountryCode;\r\n this.channelInformation = params.channelInformation;\r\n\r\n };\r\n gec.MultipleBetDetail = function (params) {\r\n this.multipleBetId = params.multipleBetId;\r\n this.requestedStake = params.requestedStake;\r\n this.totalMatchedStake = params.totalMatchedStake;\r\n this.requestedPrice = params.requestedPrice;\r\n this.averageMatchedPrice = params.averageMatchedPrice;\r\n this.effectivePrice = params.effectivePrice;\r\n this.rolloverStake = params.rolloverStake;\r\n this.numberOfUnsettledSelections = params.numberOfUnsettledSelections;\r\n this.unsettledPrice = params.unsettledPrice;\r\n this.totalMaxUpside = params.totalMaxUpside;\r\n this.multipleBetStatusId = params.multipleBetStatusId;\r\n this.placedAt = params.placedAt;\r\n this.commissionRate = params.commissionRate;\r\n this.isFreeBet = params.isFreeBet;\r\n this.totalCashOutAmount = params.totalCashOutAmount;\r\n this.totalCashOutStake = params.totalCashOutStake;\r\n\r\n this.settledAt = params.settledAt;\r\n this.settlementAmount = params.settlementAmount;\r\n this.matches = params.matches || [];\r\n this.iPAddress = params.iPAddress;\r\n this.ipCountryCode = params.ipCountryCode;\r\n this.channelInformation = params.channelInformation;\r\n\r\n };\r\n gec.MultipleLegStatus = Object.freeze({\r\n \"Unkown\": 1, \"Won\": 2, \"Lost\": 3, \"Voided\": 4\r\n });\r\n\r\n return gec;\r\n\r\n}(gec || {}));"],"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","window","gec","gecPrivate","gecSeal","gecUnseal","_version","implementationVersion","_aapiVersion","_GBEHeader","version","fragmentLanguage","fragmentVersion","clientIdentifier","listExchangeMarketsXHR","socket","_convertBodyItem","newObject","converter","names","split","namePrefix","index","remainingName","substr","indexOf","aapiId","setAnonymousSessionContext","logonPunter","logoffPunter","subscribePoolBettingSummary","subscribeRaceInformation","subscribeRacePools","subscribeCardTaggedValueChanges","subscribeRaceTaggedValueChanges","subscribeGenericTaggedValueChanges","subscribeAsynchronousResponse","unsubscribe","listSubscriptions","Controller","params","controllerDefaults","language","integrationPartnerId","currency","organisationalUnitId","priceFormat","clientLogConfig","mockIAPI","_base","com","globalbettingexchange","base","_params","_cookieRefreshRate","_cookieTimeout","_storeSessionTokenInCookieWithExpiryTime","sessionTokenCookieName","userContextCookieName","sameSiteValueForCookies","_logClientEntries","_apisNotToBeSentClientLogging","_queueingIAPISettings","isEnabled","_queueingGECSystemParams","numberOfGetRacesCallsToLog","numberOfRaceStatusUpdatesToLog","numberOfPoolStatusUpdatesToLog","_pushHealthcheck","enabled","timeout","interval","_thisController","this","_debug","isStreamingEnabled","_onControllerLoaded","onLoaded","_isConnecting","userContext","userContextAAPI","sessionToken","_telebetSessionToken","_arbitrarySessionToken","_oddsLadder","_eventClassifiers","EventClassifier","_markets","_selections","_eventClassifiersForClient","_eventsMarkets","_topLevelId","_connectionHealth","_maxSequenceNo","_bootstrapFailedAttempts","_orderCache","pollChangedOrdersTime","_orderCacheInterval","_aapiSessionToken","_correlationData","_pushMessages","_subscriptions","_subscriptionData","_connectionHealthChangeDelegates","_subscribedCard","_subscribedCardILDelegates","_subscribedCardDeltaDelegates","_subscribedRace","_subscribedRaceILDelegates","_subscribedRaceDeltaDelegates","_subscribedRacePool","_subscribedRacePoolILDelegates","_subscribedRacePoolDeltaDelegates","_subscribedRunner","_subscribedRunnerILDelegates","_subscribedRunnerDeltaDelegates","_subscribedCTV","_subscribedCTVILDelegates","_subscribedCTVDeltaDelegates","_subscribedRTV","_subscribedRTVILDelegates","_subscribedRTVDeltaDelegates","_subscribedGTV","_subscribedGTVILDelegates","_subscribedGTVDeltaDelegates","_subscribedAsyncResponse","_subscribedAsyncResponseILDelegates","_subscribedAsyncResponseDeltaDelegates","_subscribedExchangeEventILDelegates","_subscribedExchangeMarketILDelegates","_subscribedExchangeSelectionILDelegate","_subscribedMarketScoresILDelegate","_subscribedExchangeSelectionPricesILDelegate","_subscribedExchangeSelectionFixedOddsPricesILDelegate","_subscribedExchangeMarketMatchedAmountILDelegate","_subscribedCustomHierarchyNode","_subscribedExchangeEvent","_subscribedExchangeEventMatchedAmount","_subscribedExchangeMarket","_subscribedExchangeMarketMatchedAmount","_subscribedExchangeMarketNew","_subscribedExchangeSelection","_subscribedExchangeSelectionMatchedAmount","_subscribedItemNames","_subscribedMarketScores","_subscribedOrder","_subscribedExchangeSelectionPrices","_subscribedExchangeSelectionIndexedPrices","_subscribedExchangeSelectionFixedOddsPrices","_subscribedSelectionPAndL","_subscribedSelectionPriceHistory","passwordValidityRegExp","setPasswordValidityRegExp","disableStreamingInitialisation","neverCallRefreshArbitrarySessionInformation","makeIAPIRequestsWithContentTypeJSON","_pingHandle","_eventPollInterval","_eventCacheRefreshRate","_lastPingRoundtripMS","_lastPingedAt","_pushHealthcheckHandle","_pingInterval","_haveReceivedAtLeastOneStreamingMessage","_callBack","setCallBack","guid","request","callBack","response","doCallBack","addToCorrelation","correlationId","sendRequest","alert","onCashStacked","onSingleTicketEscrowed","onMultipleTicketEscrowed","onSingleTicketStacked","onMultipleTicketStacked","onCashTicketEscrowed","onCashTicketStacked","onPrinterEvent","homeButtonPressed","menuButtonPressed","_retryRequestURLs","_createUUID","hexDigits","Math","floor","random","join","clientLogger","GUIDs","init","section","logClientEntry","enableLogging","userInteractionType","addClientLogEntry","clientName","clientVersion","logEntry","eventTime","Date","toISOString","eventEndTime","clientLogEntryType","systemInteractionType","componentName","subcomponentName","itemSelected","importance","entryCode1","entryCode2","entryCode3","entryCode4","pushHealthcheckEnabled","user","addToPushMessages","clearPushMessages","setInterval","checkPushMessages","partnerUsername","messageObj","sentTime","now","removeFromPushMessages","streamingConnectionDetails","_onConnectionLost","stopPushHealthcheckTimer","clearInterval","connect","url","onComplete","sockOptions","options","transports","debug","SockJS","onmessage","logConsole","data","_onDataEventJSON","webClientMessage","GBEWebClientMessage","_onDataEvent","onopen","_onSocketOpen","onerror","onclose","_onSocketClose","message","console","log","isStreamingEnabledAtGECInstantiation","apiNameFromPageName","page","replace","getPromise","methodName","inputs","initStreaming","sockURL","callbackOnSuccess","_init","ex","mockIAPIRequestHandler","makeAjaxRequest","sessionAlreadyExists","getCookie","userContextCookie","JSON","parse","_arbRefreshID","isSessionTokenCookieExpired","_keepAlive","extendLifeOfSessionTokenCookie","onSessionExtended","loadedAlreadyFired","setTimeout","sendControllerRequest","getTime","setCallBackArray","onSuccess","req","obj","_proxyController","iapiURL","controllerResponseReceived","getCallBackArray","deleteCallBackArray","xmlhttp","timeoutLimit","isAsyncEnrolPunter","apiName","appliesTo","includes","queueToken","sendAjaxRequest","queueAjaxRequest","thisGEC","requestQueueTokenRequest","iapiName","passPartnerUsernameToRequestQueueToken","reCAPTCHAToken","queueTokenIdentifier","enrolmentTOTP","requestQueueTokenResponse","returnCode","ReturnCode","QueueFull","callbackOnQueueingOfRequest","delayInSecondsIfQueueIsFull","handleAjaxResponse","QueueTokenNotYetValid","InvalidQueueToken","Success","QueueingNotEnabled","adjustWaitTimeInSeconds","waitTimeInSeconds","urlencode","str","encodeURIComponent","getReturnCodeName","rc","clone","XMLHttpRequest","withCredentials","XDomainRequest","TIMEOUTLIMIT","sign","timeStamp","signData","clientLogEntries","getLogEntries","onException","parameters","requestString","stringify","open","queueTokenProviderURL","asyncEnrolPunterURL","setRequestHeader","ontimeout","ResourceError","onreadystatechange","readyState","status","responseText","trim","resp","QueueTokenNotSpecified","_isRetryRequestURL","abort","send","cleanUp","getDelegateCount","marketId","j","getVersion","payload","messagePairs","headers","isInitialLoad","isDelete","fields","topic","substring","header","lastIndexOf","isInitialTopicLoad","isDeleteTopic","getHeader","getNumberOfRecords","getFields","localeTimeString","messageJSON","matches","_AAPIJSONResponseMappings","mapping","topicNameRegex","topicName","match","_regexArray","regex","exec","bodyObject","numberOfFields","rowData","Number","isConnected","_anonSet","curTime","ping","currentClientTime","lastPingRoundtripMS","lastPingedAt","onStreamingInitialisationFailed","item","resetFiredDelegates","subscribedExchangeEventTabs","onConnectionLost","_sendStreamingMessage","headerName","id","tm","itemI","_createTopicMessageStr","_sendStreamingMessageJSON","setRefreshPeriod","refreshPeriodMS","getRefreshPeriod","subscribeMarketInformation","fetchOnly","wantSelectionInformation","wantExchangeLangugeInformationOnly","marketTaggedValueTopicNames","eventClassifierId","marketIds","marketI","wantSelectionBlurb","bettingTypeId","subscribeEventHierarchy","wantDirectDescendantsOnly","eventTaggedValueTopicNames","excludeMarketInformation","wantTabInformation","_clientLogEntries","tempEntries","clientTimestamp","events","addPunter","callbackOnException","IAPIRequest","cleartextPassword","passwordToken","title","sex","country","address","email","phone","secondaryPhone","firstQuestionType","firstQuestionAnswer","secondQuestionType","secondQuestionAnswer","birthDate","isContactAllowed","contactType","contactTypeId","reference","affiliateIdentifier","whiteLabel","marketByVolumeAmount","amount","forOrderRepriceOption","againstOrderRepriceOption","includeSettledSelectionsInPAndL","normalMaximumLiability","maxPunterReservationPerMarket","debitSportsbookStake","debitExchangeStake","_addPunterResponse","UserContext","purseIntegraionModeId","purseIntegrationMode","canPlaceForSideOrders","canPlaceAgainstSideOrders","hasSubPunters","addPunterEnhanced","AsyncException","checkPasswordValidity","password","username","titleId","sexId","forOrderRepriceOptionId","againstOrderRepriceOptionId","firstQuestionTypeId","secondQuestionTypeId","channelType","depositLimit","channelInformation","punterIPAddress","finalIPAddress","fingerprint","tmxSessionId","tmxWebSessionId","promoCode","_addPunterEnhancedResponse","enrolPunter","granularChannelType","iPAddress","punterTaggedValues","deviceIdentifier","_enrolPunterResponse","PunterFailedIdentityVerificationCheck","punterClassificationName","continuePunterEnrolment","enrolmentAttemptId","enrolmentAttemptValidationToken","quizId","questions","answers","_continuePunterEnrolmentResponse","enrolPunterAsynchronously","InvalidPassword","responseEmailUrl","aapiClientSpecifiedGuid","_asyncEnrolPunterResponse","checkEnrolmentStatus","_checkEnrolmentStatusResponse","addConnectionHealthChangeDelegate","threshold","delId","addSubscribedGTVILDelegate","addSubscribedExchangeMarketILDelegate","addSubscribedExchangeEventILDelegate","addSubscribedExchangeSelectionILDelegate","addSubscribedMarketScoresILDelegate","addSubscribedExchangeSelectionPricesILDelegate","addSubscribedExchangeSelectionFixedOddsPricesILDelegate","addSubscribedExchangeMarketMatchedAmountILDelegate","addSubscribedCardILDelegate","addSubscribedRaceILDelegate","addSubscribedRacePoolILDelegate","addSubscribedRunnerILDelegate","addSubscribedCTVILDelegate","addSubscribedRTVILDelegate","addSubscribedAsyncResponseILDelegate","clearUserContext","_clearUserContextVariables","endUserSession","terminateSessionRequest","isSessionPresent","deleteCookie","getCachedSubscribedExchangeMarket","getConnectionHealth","listEventsStartingSoon","elapsedTimeMSs","jsDate","startTime","currentlyInRunning","getEventClassifier","StartingSoonEvent","eventsToReturn","ev","sort","SortOnStartingAt","listInRunningEvents","topLevelSport","InRunningSport","performCustomService","customServiceName","nameValuePairs","existingCleartextPassword","isLoginAfterSuccessfulRegistration","_performCustomServiceResponse","customServiceHandlerError","items","listTaggedValues","extend","_listTaggedValuesResponse","entities","taggedValues","listExchangeTaggedValues","_listExchangeTaggedValuesResponse","getStartingPrices","_getStartingPricesResponse","listCustomMarkets","customMarketListHandlerName","customParameters","_listCustomMarketsResponse","customMarkets","results","getAccountSummary","_getAccountSummaryResponse","listMarketsStartingSoonIAPIAsync","playMarkets","wantPricedMarketsOnly","listMarketsStartingSoonIAPIAsyncResponse","eventClassifiers","listInRunningMarketsIAPIAsync","listInRunningMarketsIAPIAsyncResponse","oddsLadder","checkSocketConnection","getSessionToken","reestablishConnection","exception","aAPISessionToken","removeConnectionHealthChangeDelegate","delegateIndex","removeSubscribedExchangeEventILDelegate","removeSubscribedGTVILDelegate","removeSubscribedExchangeMarketILDelegate","removeSubscribedExchangeSelectionILDelegate","removeSubscribedMarketScoresILDelegate","removeSubscribedExchangeSelectionPricesILDelegate","removeSubscribedExchangeSelectionFixedOddsPricesILDelegate","removeSubscribedExchangeMarketMatchedAmountILDelegate","removeSubscribedCardILDelegate","removeSubscribedRaceILDelegate","removeSubscribedRacePoolILDelegate","removeSubscribedRunnerILDelegate","removeSubscribedCTVILDelegate","removeSubscribedRTVILDelegate","removeSubscribedAsyncResponseILDelegate","getContestCards","contestCards","getContestPoolsForCard","shortCardName","cardDate","contestPools","contestCard","contestCardDateMatchesCardDate","pools","setDefaultValues","setPersonalPushHealthcheckValues","setUserContext","telebetSessionToken","initialLanguage","numberLogonAttemptsToReturn","_setUserContextResponse","punterId","canDeposit","canWithdraw","canPlaceOrders","cohort","restrictedToFillKillOrders","aDWPointsEarned","isOnLegacyRegime","isIdentityEstablished","isASubPunter","transferFromSportsbook","_transferFromSportsbookResponse","transferToSportsbook","_transferToSportsbookResponse","RegExp","updatePunterDetails","newUsername","nameSpecified","countrySpecified","addressSpecified","emailSpecified","phoneSpecified","secondaryPhoneSpecified","firstQuestionAnswerSpecified","secondQuestionAnswerSpecified","birthDateSpecified","isContactAllowedSpecified","_updatePunterDetailsResponse","updatePunterPreferences","priceFormatSpecified","languageSpecified","forOrderRepriceOptionSpecified","againstOrderRepriceOptionSpecified","includeSettledSelectionsInPAndLSpecified","maxPunterReservationPerMarketSpecified","_updatePunterPreferencesResponse","_getJSONWebTokenResponse","jSONWebToken","getUserContext","getJSONWebToken","establishUserSession","refreshSessionToken","NeitherUserNorTelebetUserSession","partnerToken","partnerUsernameForUserContext","atob","arbitrarySessionInformation","twoFactorAuthenticationCode","trustedDeviceToken","tmxPageId","location","geoLocationToken","requestLocationInformation","getBrowserGeoLocation","latitude","longitude","accuracy","round","_establishUserSessionResponse","LocationNotSpecified","getListOfContestCardsForPunter","listPunterTaggedValues","searchCriteria","contestPunterPTVs","listGenericTaggedValues","searchStrings","getArrayOfTaggedValueNames","map","gtvName","contestGenericTaggedValues","getCardsForCurrentlyActiveContest","setCookie","geoLocateErrorMessage","logonAttempts","punterClassificationId","state","zipcode","wageringCohort","canBackSP","canLaySP","tmxReviewStatus","canAddSubPunters","geolocateInSeconds","getIdleDuration","refreshArbitrarySessionInformation","listCards","_lastKeepAlive","keepAlive","checkExpiredSession","onSessionExpired","ctx","_refreshArbitrarySessionInformationResponse","cookieTimeoutInDays","establishUserSessionEnhanced","identityXRequestId","identityXToken","_establishUserSessionEnhancedResponse","identityXStatus","identityXAuthenticationResponse","identityXCode","identityXMessage","UserContextEnhanced","availableBalance","isRetailPunter","numberFreeBets","sumAmountRemaining","reserved","attemptedAt","lastLogonAttempt","logonSucceeded","lastSuccessfulLogon","establishTelebetSession","partnerTelebetToken","_establishTelebetSessionResponse","getBalance","_getBalanceResponse","withdrawableBalanceAmount","withdrawableBalance","balance","getDefinitiveAvailableBalance","_getDefinitiveAvailableBalanceResponse","externalBalanceObtained","getPunterFundingTotal","_getPunterFundingTotalResponse","totalNetDeposits","turnTwoFactorAuthenticationOn","_turnTwoFactorAuthenticationOnResponse","secretKey","confirmTwoFactorAuthenticationOn","_confirmTwoFactorAuthenticationOnResponse","turnTwoFactorAuthenticationOff","_turnTwoFactorAuthenticationOffResponse","addTrustedDevice","deviceName","_addTrustedDeviceResponse","removeTrustedDevice","_removeTrustedDeviceResponse","listTrustedDevices","_listTrustedDevicesResponse","trustedDevices","setTrustDevices","enable","_setTrustDevicesResponse","listApplicableFTMs","_listApplicableFTMsResponse","fTMs","addFTMR","wantDetailsRetained","nickname","isCurrentActiveWebFTMR","fundsTransferMethodId","_addFTMRResponse","additionalReturnInformation","extraReturnInformation","fTMRId","updateFTMR","_updateFTMRResponse","removeFTMR","_removeFTMRResponse","reinstateFTMR","_reinstateFTMRResponse","calculateFTMRCommissionCharges","isLodgement","_calculateFTMRCommissionChargesResponse","commissionAmount","fTMRAmount","punterAmount","listFTMRs","_listFTMRsResponse","fTMRs","ftmr","ftmp","thisFTMR","thisFTMP","ftmrs","fTMRValues","isMandatory","obfuscateDisplay","lodgementsAreSupported","minLodgementTransactionAmount","maxLodgementTransactionAmount","maxDailyLodgementTransactions","maxWeeklyLodgementTransactions","maxMonthyLodgementTransactions","maxDailyLodgementAmount","maxWeeklyLodgementAmount","maxMonthlyLodgementAmount","lodgementFixedCharge","lodgementSlidingCharge","minLodgementSlidingCharge","maxLodgementSlidingCharge","withdrawalsAreSupported","minWithdrawalTransactionAmount","maxWithdrawalTransactionAmount","maxDailyWithdrawalTransactions","maxWeeklyWithdrawalTransactions","maxMonthyWithdrawalTransactions","maxDailyWithdrawalAmount","maxWeeklyWithdrawalAmount","maxMonthlyWithdrawalAmount","withdrawalChargesAreInclusive","withdrawalFixedCharge","withdrawalSlidingCharge","minWithdrawalSlidingCharge","maxWithdrawalSlidingCharge","getMaxAmountToLodgeOrWithdraw","accessToken","fTMId","transactionType","_getMaxAmountToLodgeOrWithdrawResponse","fundsTransferMethods","fundsTransferMethodType","fundsTransferMethodName","isTransactionTypeSupported","maxAvailableAmount","additionalInfo","minSingleTransactionAmount","maxSingleTransactionAmount","maxDailyAmount","dailyAmountUsed","maxWeeklyAmount","weeklyAmountUsed","maxMonthlyAmount","monthlyAmountUsed","lodgeFunds","grossAmount","_lodgeFundsResponse","fundsTransferPaymentId","withdrawFunds","_withdrawFundsResponse","withdrawalRequestId","paymentGatewayRequestId","getMarketAttributes","attributes","markets","getMaxInstantFundingAmount","_getMaxInstantFundingAmountResponse","maxInstantFundingAmount","listUnclearedACHTransactions","_listUnclearedACHTransactionsResponse","aCHTransactions","transactions","amountRequested","fundsPending","advanceFundingGranted","fundsTransferTransferType","_listGenericTaggedValuesResponse","returnObject","loadEventCache","wantSportsbookMarkets","wantIndirectDescendents","wantMultiplesOnly","_listTopLevelSportsbookEventsResponse","context","excludeMarkets","preloadedExchangemarkets","_listTopLevelExchangeEventsResponse","responseEvent","thisEvent","eventClassifierName","shortcutAllMarkets","isEnabledForMultipleBets","_parentEventClassifierId","parentEventClassifierId","displayOrder","marketTypeIds","keep","marketTypeCount","marketTypes","getChildren","_fillEvents","getParent","getMarkets","SortOnDisplayOrder","thisMarket","Market","responseMarket","marketName","marketType","willBeInRunning","isEnabledForEachWayBetting","isEnabledForSPBetting","tempEvent","mk","getLocalEventCacheSummary","multipleMarketCount","allMarketCount","todaysMarketCount","inrunningMarketCount","todaysInrunningMarketCount","today","lastnight","getFullYear","getMonth","getDate","tonight","marketCount","getCachedEventClassifier","getCachedSubscribedEventClassifier","getCachedSubscribedMarketMatchedAmount","getCachedMarket","getCachedSelection","selectionId","_setTopLevelId","topLevelId","getSession","session","clearSession","setSession","purseIntegraionMode","contestRestriction","listEvents","eventCount","fireOnEventClassifiersChange","evenId","arrayOfEvents","eventI","eventId","m","splice","loadOddsLadder","_loadOddsLadderResponse","getBrokerAccountStatement","postingTypes","endTime","startOffset","numberToReturn","groupByClientGroupReference","embedGroupedPostings","_getBrokerAccountStatementResponse","xmlDoc","posting","postings","description","referenceElement","DOMParser","parseFromString","querySelector","getAttribute","selections","sElements","getElementsByTagName","String","format","postingType","loadXmlDocument","documentElement","postingTypeId","embeddedPostings","getAccountStatement","_getAccountStatementResponse","getExternalSystemToken","externalSystemName","_getExternalSystemTokenResponse","token","getPunterDetails","_getPunterDetailsResponse","effectiveNumberOfCommissionPoints","commissionPointsEarnedThisWeek","category","punterCategoryId","categoryId","punterCategoryName","punterAccountId","activatedAt","panNumber","originalRegistrationDate","getPunterPreferences","_getPunterPreferencesResponse","sendEmail","subject","content","targetCode","sendersEmailAddress","isContentHTML","_sendEmailResponse","addPunterTaggedValue","_addPunterTaggedValueResponse","deletePunterTaggedValue","_deletePunterTaggedValueResponse","getPunterTaggedValue","_getPunterTaggedValueResponse","_listPunterTaggedValuesResponse","getLocationPermission","cookieValue","callbackOnComplete","navigator","geolocation","getCurrentPosition","currentPosition","coords","code","PERMISSION_DENIED","isLocationRequiredForEstablishSession","performCustomServiceParams","locationIsRequired","toLowerCase","listFreeBetEntitlements","statusFilter","bet","freeBetEntitlements","order","amountAwarded","amountRemaining","applicableForSBMultipleBets","orders","totalForSideStake","totalRiskedAmount","sbMultipleBets","sbMultipleBet","sBMultipleBetTotalStake","sBMultipleBetPlacedAt","sBMultipleBetId","selfDeletePunter","_selfDeletePunterResponse","validatePromotionCode","promotionType","_validatePromotionCodeResponse","setParameters","config","logClientEntries","apisNotToBeSentClientLogging","pushHealthcheck","queueing","_maxBootstrapFailedAttempts","bootstrapAttempts","b","BrowserDetect","browser","bv","os","OS","osb","streamingExcludedBrowsers","storeSessionTokenInCookieWithExpiryTime","cookieRefreshRate","cookieTimeout","eventCacheRefreshRate","aapiVersion","pingInterval","profile","gecSystemParamsGTVName","pseudoIntegrationPartnerId","iapiQueueingSettingsGTVName","gtvs","gtv","whitelabelDomain","parsedValue","iapiQueuingSettings","completeGECInitialisation","_regexArrayCommon","headerMatches","concat","subscriptionIds","subI","createUUID","GranularChannelType","InternetBrowser","checkConnection","_ref","_callee2","seconds","instance","waitTime","_context2","timeoutId","_callee","_context","clearTimeout","_x","requiredParams","paramName","SortOnIssuedAt","issuedAt","SortOnPlacedAt","placedAt","SortOnMultiplebetId","multipleBetId","SortOnStartTime","startingAt","SortOnChangedAt","sequenceNumber","xmlString","xDoc","ActiveXObject","loadXML","document","implementation","createDocument","AuthenticationType","BallotOutAction","Blurb","ClientMetricType","market","_thisEventClassifier","fireOnChange","getStartingSoonMarkets","currentTime","hrs","getUTCHours","setUTCHours","allMarkets","Currency","EntityType","InRunningEvent","sport","getInRunningMarkets","thisEventAllMarkets","getInRunningSport","fromIAPI","getInRunningEvents","thisTopLevelEvent","inrunningEvent","IntegrationPartnerParameters","publicKey","pICPasswordOptionId","interfaceVersionLevel","allowableAuthenticationTypeId","allowAnonymousInteraction","picPasswordOptionName","allowableAuthenticationTypeName","LegDetail","legId","sequence","isWin","numberWinningPlaces","numberPlacesIsFixed","eachWayAllowed","orderSignificant","minNumberSelections","maxNumberSelections","minNumberBankers","maxNumberBankers","race","runners","LocalBetStatus","Active","SettledWon","SettledLost","SettledVoid","CashedOut","LogEntryImportance","Severe","Warning","Advice","Info","Fine","Finest","eventClassifier","getStartingSoonEvent","MarketDetail","eventClassifierFullName","isPlayMarket","placePayout","canBeInRunning","isCurrentlyInRunning","numberOfWinningSelections","suspendTime","marketStatusId","withdrawalSequenceNumber","getSelections","getPlaceFraction","isEachWayMarketType","competingSelectionCount","getCompetingSelectionCount","COMPETING_STATUSES","count","selectionStatusId","MarketTradingRestriction","MarketType","MoneyValue","MultipleBet","requestedStake","totalMatchedStake","requestedPrice","averageMatchedPrice","rolloverStake","numberOfUnsettledSelections","unsettledPrice","totalMaxUpside","multipleBetStatusId","commissionRate","isFreeBet","totalCashOutAmount","totalCashOutStake","ipCountryCode","MultipleBetDetail","effectivePrice","settledAt","settlementAmount","MultipleLegStatus","PartnerTelebetToken","PartnerToken","PasswordToken","Percentage","Polarity","For","Against","PriceFormat","Decimal","Fractional","American","PromotionType","Normal","RetentionPromotion","SignOnPromotion","ReferAFriend","DepositBoost","MarketStatus","Inactive","Suspended","Completed","ResultsSet","Settled","Voided","OrderStatus","Filled","Expired","Void","FreeBetEntitlementStatus","Rescinded","Lapsed","Used","PromotionStatus","Upcoming","Open","Closed","Abandoned","SelectionDetail","selectionName","selectionIcon","selectionIconIndex","selectionBlurb","selectionResetCount","withdrawalFactor","forSportsbookPrices","againstSportsbookPrices","forExchangePrices","againstExchangePrices","currentForPrice","currentAgainstPrice","getAgainstExchangePrices","getAgainstSportsbookPrices","getForExchangePrices","getForSportsbookPrices","getMarket","SystemInteractionType","TaxChargingBasis","Timestamp","TitleType","TradeType","priceFormatName","purseIntegrationModeName","hasASubPunter","_parent","_children","Title","Mr","Mrs","Ms","Dr","Other","Sex","Male","Female","QuestionType","PlaceOfBirth","MothersMaidenName","FirstSchool","FavouriteColour","FavouriteHolidayDestination","AllTimeFavouriteJockey","FavouriteAutomobile","FirstPetsName","AllTimeFavouriteHorse","CityOfBirth","Unspecified","PaternalGrandfatherFirstName","ChildhoodFriend","HighschoolMascot","FirstCar","PunterAddress","_instance","address1","address2","city","zip","SEPARATOR","set","punterAddress","get","PunterName","firstName","middleName","lastName","toString","Win","Place","MatchOdds","OverUnder","AsianHandicap","TwoBall","ThreeBall","MatchMarket","SetMarket","Moneyline","Total","Handicap","EachWayNonHandicap","EachWayHandicap","EachWayTournament","RunningBall","MatchBetting","MatchBettingInclDraw","CorrectScore","HalfTimeFullTime","TotalGoals","GoalsScored","Corners","OddsOrEvens","HalfTimeResult","HalfTimeScore","MatchOddsExtraTime","CorrectScoreExtraTime","OverUnderExtraTime","ToQualify","DrawNoBet","HalftimeAsianHcp","HalftimeOverUnder","NextGoal","FirstGoalscorer","LastGoalscorer","PlayerToScore","FirstHalfHandicap","FirstHalfTotal","SetBetting","GroupBetting","MatchplaySingle","MatchplayFourball","MatchplayFoursome","TiedMatch","TopBatsman","InningsRuns","TotalTries","TotalPoints","FrameBetting","ToScoreFirst","ToScoreLast","FirstScoringPlay","OrderFillType","FillAndKill","FillOrKill","FillOrKillDontCancel","SPIfUnmatched","MultipleBetStatus","SettledFor","SettledAgainst","SettledUnclaimed","Unknown","Won","Lost","SelectionStatus","Withdrawn","BallotedOut","SportsBetPriceType","FixedPrice","StartingPrice","BestOddsGuaranteed","ChannelType","Internet","Mobile","Telebetting","API","LightweightPrice","Kiosk","GBEIntegrationSolution","GBEIntegrationSolutionTelebetting","MobileBrowser","TabletBrowser","MobileApplication","TabletApplication","InternetApplication","LiveOperator","SelfService","WithdrawRepriceOption","Reprice","Cancel","DontReprice","FundsTransferTransactionType","WithdrawFunds","LodgeFunds","FundsTransferMethodType","DebitCard","CreditCard","ChequeIn","ChequeOut","ElectronicFundsTransferIn","ElectronicFundsTransferOut","InternetPaymentProvider","BankTransfer","MCard","OTC","Agent","WesternUnion","Paysafe","MoneyBookers","Neteller","ExternalSystem2","ExternalSystem1","OnCourseCash","WebMoney","ACH","PostingType","Settlement","Commission","Transfer","Lodgement","Withdrawal","TransferToSportsbook","TransferFromSportsbook","SinglePurseStakeTransfer","SinglePursePosting","DeviceStakeTransfer","DevicePayoutPayment","Tax","GamePlay","AdvancePayment","Bonus","Reward","Stake","Refund","Adjustment","ProductPurchase","ProductRefund","FTMRStatus","Enabled","Blocked","Removed","PurseIntegrationMode","SinglePurse","FundsTransfer","ContactType","PressAdvertisment","PressArticle","SearchEngine","OtherService","ReferAFriendProgram","TVOrRadio","Promotion","BettingTypeId","Undefined","Both","ExchangeOnly","SportsbookOnly","SystemError","EventClassifierDoesNotExist","MarketNameAlreadyExists","MarketDoesNotExist","SelectionNameAlreadyExists","SelectionDoesNotExist","NewSelectionsProhibited","SelectionNotSuspended","MarketNotSuspended","MarketNotActive","MarketNeitherSuspendedNorActive","SelectionNotActive","InsufficientBrokerFunds","InsufficientVirtualPunterFunds","BrokerDoesNotExist","OrderDoesNotExist","NoUnmatchedAmount","CurrencyNotValid","VirtualPunterDoesNotExist","PunterReservationPerMarketExceeded","AccountDoesNotExist","AccountBalanceNotZero","AccountNotActive","InsufficientFundsInAccount","FundsReservationDoesNotExist","BrokerNameAlreadyExists","BrokerHasOrders","BrokerAlreadyActive","BrokerAlreadySuspended","PaymentInstructionDoesNotExist","CountryCodeDisallowed","NegativeTradingLimit","NegativeAbsoluteLimit","IncompatibleCurrencies","ParentDoesNotExist","MarketAlreadySuspended","SelectionAlreadySettled","MarketCannotBeDeleted","MarketDoesNotSupportInRunning","MarketCannotBeTurnedInRunning","SelectionAlreadySuspended","UnknownEventSubscription","CurrencyAccountAlreadyExists","CurrencyNotSupported","PunterReservationDoesNotExist","RecursiveMove","EventClassifieontainsUnsettledMarkets","LanguageAlreadyExists","LanguageDoesNotExist","KeyPhraseAlreadyExists","KeyPhraseDoesNotExist","TranslationPhraseDoesNotExist","MarketSelectionMismatch","NoResultsPreviouslySpecified","InvalidStateForVoiding","MarketNotInactive","MarketHasHadOrders","MarketNotComplete","UserNotAuthenticated","UserNotAuthorisedForAPI","UserNotAuthorisedForBroker","UsernameAlreadyExists","AuthorisedUserDoesNotExist","APIDoesNotExist","UserAlreadyAuthorisedForAPI","UserAlreadyAuthorisedForBroker","BrokeategoryNameAlreadyExists","BrokeategoryDoesNotExist","CommissionRuleDoesNotExist","UserTypeNameAlreadyExists","UserTypeDoesNotExist","BrokerSuspended","SelectionHasHadOrders","SelectionNotInactive","SelectionNotComplete","SelectionNeitherSuspendedNorActive","AccountHasHadPosting","AccountNotSuspended","DebitPostingsNotAllowedOnAccount","BrokeurrencyAccountAlreadyExists","SelectionNotSettled","TaggedValueDoesNotExist","CurrencyDoesNotExist","CurrencyAlreadyActive","CurrencyNotActive","TransactionDoesNotExist","AccountClosed","ExchangeRateNotRelevant","SelectionIsActive","AccountAlreadyClosed","ParameterFormatError","ResetHasOccurred","TranslationPhrasesExist","BrokeategoryHasBrokers","WithdrawalProhibitedOnMarket","VirtualSelection","KeyPhraseCategoryDoesNotExist","KeyPhraseCategoryAlreadyExists","AuthorisedApplicationNameAlreadyExists","AuthorisedApplicationDoesNotExist","UserAlreadyAuthorisedForApplication","ApplicationNotAuthorisedForUser","TargetAuthorisedUserDoesNotExist","TargetUserNotAuthorisedForAPI","OrderAlreadySuspended","TradingCurrentlySuspended","TradingNotSuspended","NumberOfWinningSelectionsInvalid","InvalidOdds","TranslationPhraseAlreadyExists","SelectionHasVirtualSelection","ParameterMissingError","AccountIsInternalCurrencyAccount","WithdrawalSequenceNumberIsInvalid","MaximumInputRecordsExceeded","StartTimeNotSpecified","BrokerOrderMismatch","VirtualPunterOrderMismatch","MarketHasNoSelections","MarketAlreadyInrunning","RequiredSystemAccountNotConfigured","MarketSettlementInProgress","EventClassifieontainsEventClassifiers","EventClassifierIsBlocked","EventClassifierIsNotBlocked","PunterDoesNotExist","NostroVostroAccountAlreadyExists","FTMRDoesNotExist","FTMRNotKnownToIssuer","PaymentDeclinedByIssuer","PaymentBridgeNotAvailable","PunterSuspended","PunterUsernameAlreadyExists","PunterHasOrders","PunterAlreadyActive","PunterAlreadySuspended","EventClassifierAlreadyExists","MarketAlreadyExists","SelectionAlreadyExists","PunteategoryNameAlreadyExists","PunteategoryDoesNotExist","FundsReservationAlreadyExists","PunterReservationAlreadyExists","FundsTransferMethodNameAlreadyExists","FundsTransferMethodDoesNotExist","CountryDoesNotExist","BINValueAlreadyExists","BINDoesNotExist","FTMRNumberAlreadyExists","NicknameAlreadyExists","ImpliedBINDoesNotExist","InvalidFTMRNumber","FTMRAlreadyBlocked","FTMRAlreadyEnabled","WithdrawalRequestDoesNotExist","WithdrawalRequestNotPending","PunterProhibitedFromPlacingOrders","InsufficientPunterFunds","MinimumBalanceWouldBeBreached","WithdrawalToFundsTransferMethodProhibited","PunterProhibitedFromDepositing","DepositFromBINProhibited","DepositFromFundsTransferMethodProhibited","WithdrawalExceedsAmountDeposited","MaximumPunterFTMRLimitReached","WithdrawalLessThanDeposit","PunterProhibitedFromWithdrawing","WithdrawalToBINProhibited","FTMRIsBlocked","DepositWouldExceedFundsTransferMethodLimit","DepositWouldExceedBINLimit","DepositWouldExceedPunterLimit","WithdrawalWouldExceedFundsTransferMethodLimit","WithdrawalWouldExceedBINLimit","WithdrawalWouldExceedPunterLimit","AccountAlreadySpecifiedForFundsTransferMethod","FTMRDetailsNotSpecified","IncorrectFTMRDetailsSpecified","AccountNotAssociatedWithFundsTransferMethod","StoryDoesNotExist","PaymentOutcomeUnknown","PendingPaymentTransactionDoesNotExist","FTMSpecificError","InvalidUsername","PaymentFailedRiskCheck","NegativeDepositLimit","NegativeWithdrawalLimit","OrderAPIInProgress","NegativeCurrentMinimumBalance","PunterNotLocked","PunterOrderMismatch","ImpliedBINDoesNotExistForFTM","UserAlreadyAuthorisedForPunter","UserNotAuthorisedForPunter","CreditCardNumberNotAvailable","FundsTransferPaymentDoesNotExist","MarketNotEnabledForMultiples","MultipleBetDoesNotExist","MatchedMultipleBetChunkDoesNotExist","MultipleLayerDoesNotExist","MultipleLayerParameterAlreadyExists","MultipleLayerParameterDoesNotExist","LevelsRequestedExceedsMaximum","NoMultipleOfferAvailable","PunterAlreadyRegisteredAsMultipleLayer","MultipleLayeurrentlySuspended","MultipleLayerNotSuspended","InRunningDelayInEffect","PunterHasNotPlacedBet","MultipleSelectionsUnderSameEvent","MultipleSelectionsWithSameName","InvalidNumberOfSelections","MultipleBetAlreadyVoided","DuplicateOrderSpecified","SelectionIsNotWithdrawn","OrderNotSuspended","PunterIsSuspendedFromTrading","PunterHasActiveOrders","PunterNotSuspendedFromTrading","ExpiryTimeInThePast","NoChangeSpecified","SoapHeaderNotSupplied","IncorrectVersionNumber","NoUsernameSpecified","InvalidParameters","NoPasswordSpecified","PunterRestrictedFromAgainstSideOrders","PunterRestrictedFromForSideOrders","PunterRestrictedToFillKillOrders","PaymentConfirmationNotPending","DuplicateAffiliateIdentifierSpecified","AffiliateDoesNotExist","PunterNoteDoesNotExist","PunterNoteAlreadyDeleted","PunterIsBlacklisted","PuntelassificationNameExists","PuntelassificationDoesNotExist","PrivateLiquidityPoolDoesNotExist","AlreadyEnabledForPrivateLiquidityPool","NotEnabledForPrivateLiquidityPool","PunterNotRegisteredAsMultipleLayer","UnacceptableIPAddress","LocalBetDoesNotExist","NotBrokersPrimaryCurrency","MarketNotEnabledForEachWay","EachWayResultsNotSpecified","PlaceStakeExceedsWinStake","MarketNotEnabledForPreferredMatching","LocalBetNotPlaced","IncompletePriceRangeSpecified","EachWayNotAllowedWithVirtualSelections","PunterIdentificationNotEnabled","EachWayParametersNotSpecified","EachWayOrdersHaveBeenPlaced","EachWayIncompatibleWithMarketType","ResetCountIsInvalid","PunterAlreadyRegisteredForHeartbeat","PunterNotRegisteredForHeartbeat","ThresholdSpecifiedTooSmall","PunterTaggedValueDoesNotExist","UnmatchedOrdeouldResult","GenericTaggedValueDoesNotExist","CannotUnsetAtRoot","SystemParameterDoesNotExist","BrokerNotActive","BrokerNotEnabledForExternalSystem","NotRegisteredForExternalSystem","UserAlreadyRegisteredForExternalSystem","ExpiredTAndCVersion","ExternalSystemNicknameUnknown","ExternalSystemNicknameNotAvailable","ExternalSystemUnavailable","UserBlockedOnExternalSystem","WithdrawalWouldExceedSystemLimit","DepositWouldExceedSystemLimit","PICPunterNotKnown","PICPunterNotActive","PICInsufficientFunds","PICSystemError","PICCurrencyNotValid","PICUnavailable","PICTransactionRefused","PunterNotRegisteredToIntegrationPartner","DuplicateReferenceNumbersExist","IntegrationPartnerNameAlreadyExists","IntegrationPartnerDoesNotExist","TermsAndConditionsAlreadyExists","TermsAndConditionsDoesNotExist","PostingDoesNotExist","PostingNotAwaitingApplication","PICDeviceNotKnown","PICDeviceDisabled","PartnerTokenNotAuthenticated","SessionTokenNotAuthenticated","PunterIntegrationPartnerMismatch","SessionTokenNoLongerValid","IntegrationPartnerIsPartnerOperated","IntegrationPartnerNotWhiteLabelDuplicateRegistration","PunterNotFundsTransfer","UsernameDoesNotExist","MaximumOutputRecordsExceeded","PICPunterNotAuthenticated","PasswordAuthenticationNotAllowed","PICPasswordTokenTooOld","PICPasswordNotSpecified","AnonymousOperationNotSupported","IntegrationPartnerDidNotAuthenticate","IntegrationPartnerAccountAlreadyExists","AuthorisedUserNotFinanceUser","DeprecatedAPIVersion","PICPasswordOptionNotSpecified","PunterNotAuthorisedForAPI","PunterReservationNotAwaitingApplication","SinglePurseNotSupported","PunterReservationNotSupported","ChangeOrdersNotSupported","ClientDoesNotExist","UserNotAuthorisedFolient","NoSelectionPriceCurrentlySet","ArbitraryInformationDoesNotExist","UserAlreadyAuthorisedFolient","FeedDoesNotExist","UserNotAuthorisedForFeed","UserAlreadyAuthorisedForFeed","FeedItemDoesNotExist","FeedItemAlreadyExists","MappingInformationDoesNotExist","MappingDoesNotExit","MappingAlreadyExists","ClientCapabilityDoesNotExist","ClientCapabilityAlreadyExists","IsLineBetting","MarketTypeNotLineBetting","MarketContainsUnsettledSelections","NegativeMoneyAmountSpecified","MultipleBetLayParametersAlreadyExists","MultipleBetLayParametersDoesNotExist","ClientAlreadyExists","PoolDoesNotExist","PoolNotAvailableForBetting","SelectionsNotConsistentWithPool","RunnerDoesNotExist","ProviderNotAvailable","PoolBetRejectedByProvider","StakeNotConsistentWithPool","RunnerUnavailableForBetting","RaceNotAvailable","PoolBetDoesNotExist","PoolBetAlreadySettled","TotalStakeIncorrect","CannotDeleteAtRoot","IncompleteTimeRangeSpecified","RaceDoesNotExist","EachWayLayBetsNotAllowed","OrderSettledOrVoided","LocalBetSettledOrVoided","MultipleBetSpansBrokers","PartnerTelebetTokenNotAuthenticated","TelebetSessionTokenNotAuthenticated","NotSessionless","NotTelebetSession","NotTelebetUserSession","NotUserSession","DefaultsNotLoaded","OrdeacheNotPresent","AgentTokenNotAuthenticated","NoAgentSession","AgentSessionAlreadyExists","StakeOutsideAcceptableRange","MarketIsForRealMoney","MarketIsForPlayMoney","MarketIsForPlay","PunterHasPlayCurrency","RingfencedLiquidityPoolMismatch","MatchedOrderDoesNotExist","UserNotAuthorisedForRingfencedLiquidityPool","CantMoveBetweenRingfencedLiquidityPools","EventClassifierAlreadyBlockedForBroker","EventClassifierNotBlockedForBroker","SelectionsInRingfencedLiquidityPool","PunterInRingfencedLiquidityPool","CantTransferBetweenPlayAndRealCurrencies","RequestDidNotAuthenticate","PoolBetNotUnknownStatus","PunterNotAuthenticated","IntegrationPartnerIsStandalone","IntegrationPartnerIsNotStandalone","APIIsDeprecated","PunterHasRealCurrency","CurrentlyUserSession","EventCacheNotPresent","MobileApplicationNotSupported","InsufficientFreeBetStakeAvailable","FreeBetEntitlementDoesNotExist","FreeBetEntitlementNotActive","ExchangeRateProviderDoesNotExist","FXRateOverrideDoesNotExist","FXRateOverrideNotActive","AmountInPuntersCurrencyNotSpecified","CannotChangeFreeBetEntitlementOrder","IntegrationPartnerIsActive","IntegrationPartnerNotActive","UnmatchableAmount","EventClassifierIsNotEmpty","AAPIDoesNotExist","AAPIPunterGroupDoesNotExist","AUSVDoesNotExist","AAPIPunterGroupNameAlreadyExists","NoApplicableCustomHierahy","ConcurrentSessionLimitReached","ConnectionInInvalidState","PunterNotAuthorisedForAAPI","SubscriptionDoesNotExist","PunterIsBanned","AAPIPunterGroupNotEmpty","PunteategoryIsNotEmpty","PoolBetAlreadyExists","PoolBetWasPlacedDirectly","IntegrationPartnerNotExternalPurseProvider","IntegrationPartnerIsNormal","IntegrationPartnerNotNormal","IntegrationPartnerIsExternalGame","IntegrationPartnerNotExternalGame","CardDoesNotExist","PoolBetWasNotPlacedDirectly","TicketSerialNumberNotUnique","RewardRuleDoesNotExist","NoSession","PSIDoesNotExist","PSINameAlreadyExists","PunterAlreadyAssignedToPSI","PunterNotAssignedToPSI","PSIRestrictedToDifferentIntegrationPartner","NotPossibleToRestrictPSIToIntegrationPartner","PSIIsDefaultOrPunterSpecific","PartnerUsernameSpecified","PunterIdSpecified","PuntehangeSequenceNumberDoesNotExist","AAPINotSupported","EnrolmentAttemptDoesNotExist","EnrolmentAttemptNotAuthenticated","PoolBetCancellationRejectedByRule","PoolBetCancellationRejectedByProvider","PoolBetNeitherActiveNorSettledVoid","VideoProviderNotCurrentlyAvailable","RaceVideoDoesNotExist","CardVideoDoesNotExist","FundsTransferMethodNotSupported","FTMRNotPreviouslyUsedForDeposit","TransactionNumberLimitExceeded","TransactionAmountLimitExceeded","OpenTransactionLimitExceeded","SingleTransactionAmountExceeded","FTMRuleAlreadyExists","FTMRuleDoesNotExist","PostingNotUnsuccessfullyApplied","MultipleTransactionsAwaitingCompletion","FTMPunterLimitReached","PaymentDoesNotExist","FTMNotSpecified","FTMNotEnabledForPuntehannel","RaceMeetingDoesNotExist","CardIsMapped","CardNotMapped","CardRaceNumberDoesNotExist","CardRaceNumberIsMapped","CardRaceNumberNotMapped","NotAllCardRaceReferencesMapped","ExternalSystemDoesNotExist","PICSelectionDoesNotExist","PICMarketNotActive","PICSelectionNotActive","PICInvalidPrice","PICInrunningDelayStillInEffect","CustomMarketListHandlerNotKnown","CustomMarketListHandlerSpecificError","ValueIsNotEncrypted","ConnectionNotDropped","PunteashOutRequirementsNotMet","DesiredClosingPositionNotPossible","OrdersSpecifiedNotClosingPosition","OrdersSpecifiedNotMatched","PunterHasActiveOrdersOnMarket","PICPriceChanged","PICBetRejected","CustomServiceHandlerNotKnown","CustomServiceHandlerSpecificError","IncompatibleVisibilities","SPBettingIsNotSupported","EMailAddressAlreadyUsed","ContentItemDoesNotExist","InstantFundingNotSupported","LodgementCannotBeCancelled","PunterLodgementMismatch","CashCardAccountAlreadyRegistered","ActionNotAppropriateAtThisTime","PartnerAccountIsBusy","PunterDeleted","PunterNotSuspended","PunterNotActive","SettingTaggedValueNotAllowed","DeletingTaggedValueNotAllowed","FTMRPunterMismatch","PunterRegistrationNotCompleted","ExternalSystemTimedOut","ProhibitedBySpecialRule","PINNotAuthenticated","PunterNotEnrolled","AccountHasUnsettledTransactions","DuplicateAttempt","AccountHasHadActivity","AccountAssociatedWithOtherPunter","CommissionAmountSpecifiedIsIncorrect","StoreProductDoesNotExist","StoreSubscriptionDoesNotExist","StoreProductNotCurrent","StoreSubscriptionNotCurrent","MaxOnlineEnrollmentAttemptsExceeded","StoreProductAlreadyGranted","StoreSubscriptionAlreadyGranted","SubscriptionDoesNotCoverProduct","SubscriptionInvalidPeriod","StoreProductNotCurrentlyAvailable","MaxStoreProductsReached","StoreProductNotGranted","StoreSubscriptionNotGranted","FollowRequestAlreadyExists","FollowRequestDoesNotExist","PunterAddedNoteAlreadExists","PunterAddedNoteDoesNotExist","AddedPunterNotePunterMismatch","FollowRequestPunterMismatch","LimitExceedsMaximum","CohortDoesNotExist","UnableToChangeCohortCurrently","InsufficientLoyaltyPointsBalance","RuleAlreadyExists","RuleDoesNotExist","SPOrdersNotSupportedOnMarket","ProhibitedFromPlacingSPOrders","NegativeAmountSpecified","CantUndoSPMatching","CantRedoSPMatching","InvalidConfiguration","CannotChangeToSPIfUnmatched","IncompatibleSessionCategory","NoOrdersToCancel","FundsTransferPaymentCannotBeUpdated","PunterAlreadyInCohortSpecified","ConcurrentExecutionNotAllowed","PunterOnOldPointsRegime","RuleConfigurationInconsistent","LocationNotAccurateEnough","LocationNotAcceptable","ContestDoesNotExist","ContestNotOpen","ContestFull","PlayerEnteredMaximumTimes","EntryCriteriaNotSatisfied","EntryCodeNotSpecified","EntryCodeNotAcceptable","EntryDoesNotExist","StakeTooSmall","StakeTooBig","ExposureTooSmall","ExposureTooBig","PriceTooHigh","PriceTooLow","FillTypeNotAllowed","BackNotAllowed","LayNotAllowed","InRunningNotAllowed","PrestartNotAllowed","TimeTooEarly","TimeTooLate","MaximumOrdersPerMarketExceeded","MaximumOrdersPerSelectionExceeded","MarketNotAllowed","MaximumMarketsReached","MarketTypeNotAllowed","ContestTemplateDoesNotExist","ContestTemplateNotOpen","PlayerProfileDoesNotExist","ScreennameAlreadyExists","PlayerProfileAlreadyExists","ContestNameNotUnique","PoweriteriaNotSatisfied","PowerAIInvalid","PowerAINotAllowed","PowerObtainedMaximumActiveTimes","PowerObtainedMaximumTotalTimes","PowerObtainedMaximumTimesInContest","PowerDefinitionDoesNotExist","PowerDefinitionNotActive","PowerNotAllowedInContest","PowerIsContestSpecific","PowerDoesNotExist","PoweonditionNotSatisfied","PowerNotActive","NotAllSelectionsOnSameMarket","JWTNotAuthenticated","PunterLockedExcessiveAttempts","NotSubpunterOfPunterSpecified","NotAllowedToSwitch","LoginCurrentlyProhibited","LoginWithEmailAddressProhibited","OnePunterMustRepresentExternalGame","ContestEntrantsNotAllowed","PunterNotContestEntrant","reCAPTCHATokenRequired","reCAPTCHATokenNotValid","CantReversePosting","MaximumSubscribedMarketsReached","TrustedDevicesNotEnabled","TwoFactorAuthenticationNotEnabled","TrustedDevicesAlreadyEnabled","TwoFactorTokenNotAuthenticated","TwoFactorAuthenticationNotPending","TrustedDeviceAlreadyExists","TrustedDeviceDoesNotExist","TwoFactorAuthenticationAlreadyEnabled","TwoFactorAuthenticationRequired","PunterNotAuthorisedForHostGame","LossLimitWouldBeExceeded","HostGameDoesNotExist","NoCurrentContestForPunter","PunterSelfExcluded","MultipleBetCashOutRiskSchemeNotFound","PunterMultipleBetMismatch","PunterAccaGroupMismatch","AccaGroupDoesNotExist","MultipleBetCashOutOfferNotAvailable","MinimumCashOutStakeBreached","IdentityXTokenNotAuthenticated","LocalBetCashOutRiskSchemeNotFound","PunterLocalBetMismatch","LocalBetCashOutOfferNotAvailable","BetTypeNotAllowed","InvalidPoolCombinations","SSNNotUnique","PunterHasFullSSN","SSNFormatUnacceptable","BetNotAllowedForPunter","PoolBetIsNotParlay","RiskGroupNameAlreadyExists","LiabilityPoolDoesNotExist","FunctionsAllowedDoesNotExist","PriceMarginsDoesNotExist","MaxLiabilitiesDoesNotExist","RiskGroupProfileNameAlreadyExists","RiskGroupProfileDoesNotExist","MaxLiabilitiesNameAlreadyExists","RiskGroupDoesNotExist","InvalidClubName","ClubNameAlreadyExists","ClubDoesNotExist","SequenceNumberAlreadyExists","PunterNotRacingExtensionPunter","PCJWTDidNotAuthenticate","PuntClubAlreadyExists","PuntClubNameNotValid","PunterNotOptedInToPuntClub","PuntClubDoesNotExist","OrdersNotSupportedOnMarket","PostingNotNonWithddrawable","ClientIdAlreadyExists","ScopeNameNotUnique","OAuthClientDoesNotExist","OAuthClientSuspended","OAuthClientNotSuspended","ScopeNameDoesNotExist","OAuthAuthorizationCodeNotValid","OAuthRefreshTokenNotValid","PunterTokenMismatch","OAuthAuthorizationCodeDoesNotExist","OAuthRefreshTokenDoesNotExist","RaceDefinitionFormatError","ContestPunterNotRelated","ContestPuntersNotAllowed","NotEnteredInContest","ContestWithdrawalNotAllowed","ContestHasStarted","EntryAlreadyDisqualified","ContestAlreadyFinalised","EndtimeIsInFuture","EntryNotDisqualified","MaxEntriesWouldBeExceeded","MaxEntriesPerPunterWouldBeExceeded","StateNotAcceptable","ContestRegistrationNotOpen","PunterHasPartialSSN","ContestHasUnsettledPoolBets","ContestEntryHasPoolBets","MaxFailedAttemptsReached","AdditionalActionRequired","ResourceIsBusy","CounterOfferNotValid","CounterOfferExpired","RiskReferralDoesNotExist","ExclusionSourceDoesNotExist","InvalidExclusionStatus","DepositWouldExceedAffordabilityLimit","AffordabilityLimitNotEnabled","PromoCodeAlreadyExists","PromotionDoesNotExist","PromoCodeNotValid","PromotionHasAwards","PromotionIsAbandoned","PromotionInInvalidState","PromotionIsExpired","PunterNotEligibleForPromotion","PunterAlreadyOptedIntoPromotion","UnsupportedPromotionCurrency","ExceedsMaximumNumberOfParticipants","ExceedsMaximumAwardsPerPunter","ExceedsMaximumCreditAmountPerPunter","PunterHasNotOptedIntoPromotion","PromoCodeRequired","PromotionAwardDoesNotExist","PromotionAwardIsReversal","PromotionCreditAmountNotSpecified","DuplicateInputParameter","EnrolmentAttemptExpired","PICMaxRetriesExceeded","ProhibitedFromQuotingSBMultiples","ProhibitedFromPlacingSBMultiples","ProhibitedFromCashOutSBMultiples","SBMultiplesCombinationCountMismatch","SBMultiplesOfferedPriceMismatch","AmbiguousRiskReferralServices","SBMultiplesRejectedByRiskReferral","SBMultiplesReofferedByRiskReferral","SBMultipleBetDoesNotExist","SBMultipleBetAlreadyVoided","SBMultipleBetNotActive","PICPartnerAccountAlreadyExists","MaxOrderThrehsoldExceeded","PunterFailedUniquenessCheck","InvalidStatus","DepositWouldExceedPeriodLimit","DepositWouldExceedSelfImposedVelocityLimits","MonthlyNetLossLimitsNotEnabled","DepositWouldExceedMonthlyNetLossLimit","QueueTokenExpired","InitializationInProgress","WalletNotAvailable","AccountAdjustmentsBlockedOnExternalSystem","PromotionAwardCriteriaNotMet","LocalBetAlreadyVoided","MatchingWaitTimeExceeded","CancelWouldExceedPeriodLimit","PoolBetCancellationSuspended","PINCannotHaveBeenPreviouslyUsed","SubscribedObjectBase","_delegates","_firedDelegates","_interest","delegateId","interest","val","fireDelegates","delegates","webMessage","deltaObject","fireILDelegates","fireDeltaDelegates","changes","_isInitiallyLoaded","addDelegate","removeDelegate","updateObject","deli","_deletedOrderIds","_overlays","exchangeEventTabs","listOrdersChangedSinceXHR","getExchangePricesXHR","_onBlankInfo","wcm","getOrCreateSubscribedSelection","SubscribedExchangeSelection","getOrCreateSubscribedMarket","SubscribedExchangeMarket","getOrCreateSubscribedEvent","SubscribedExchangeEvent","getOrCreateSubscribedEventTabs","SubscribedExchangeEventTab","getOrCreateEventTabs","_onSetAnonymousSessionContext","_onLogonPunter","maximumMessageSize","_onLogoffPunter","_onUnsubscribe","subIds","subId","_onPing","messagesInQueue","lastTime","_onSubscribeMarketInformation","subscriptionId","thisSubscription","_onMarket1","genericId","_onEvent1","_onLanguage2","genericName","raceGrade","_onLanguage4","_onLanguage7","_onEExchangeInfo","isEnabledForMultiples","_onTaggedValue1","taggedName","_onTaggedValue2","_onTab","tabId","thisEventTabs","numberOfMarketsToExpand","addTab","removeTab","_onLanguage14","_onMExchangeInfo","hasChanges","k","managedWhenInrunning","numberOfSelections","bOGAvailable","placeFraction","delayFactor","resultString","_onCurrency3","thisSubscribedMatchedAmount","SubscribedExchangeMarketMatchedAmount","forSideAmount","againstSideAmount","_onLanguage3","marketBlurb","_onSelection1","thisSubscribedExchangeSelection","_onLanguage5","_onSExchangeInfo","settledTime","voidPercentage","leftSideFactor","rightSideFactor","_onSelectionblurb","_onLanguage6","_marketPrices","_onBackLayVolumeCurrencyOddsFormat","numberBackPrices","numberLayPrices","marketByVolume","priceFormatId","selectionPriceKey","SubscribedExchangeSelectionPrices","thisSelectionPrices","layPrices","backPrices","bPrice","displayPrice","priceIndex","eval","stake","aPrice","_onFixedOddsMarketPrices","price","SubscribedExchangeSelectionFixedOddsPrices","backReferencePrice","_onSubscribeDetailedMarketPrices","_onSubscribeFixedOddsMarketPrices","_onSubscribeEventHierarchy","_onSubscribeCustomHierarchy","_onSubscribeSelectionMatchedAmounts","_onSubscribeMarketMatchedAmounts","_onSubscribeEventMatchedAmounts","subscribeCustomHierarchy","wantDirectDescendentsOnly","subscribeDetailedMarketPrices","marketTypesToExclude","excludeI","marketTypesToInclude","includeI","filterByVolume","subscribeEventMatchedAmounts","subscribeItemNames","marketIdStr","subscribeMarketMatchedAmounts","subscribeOrders","subscribePAndLs","subscribePriceHistories","from","to","granularity","subscribeSelectionMatchedAmounts","subscribeFixedOddsMarketPrices","subscribeTrades","filterAmount","tradesFrom","getEventTab","deleteEventTab","loadLocalOrderCache","_listBootStrapOrders","callbackOnILCompletion","wantSettledOrdersOnUnsettledMarkets","_loadLocalOrderCacheResponse","polarityId","polarity","orderId","Order","orderCacheObject","thisOrder","marketTypeId","punterReferenceNumber","pnterReferenceNumber","orderStatusId","expectedSelectionResetCount","expectedWithdrawalSequenceNumber","expiresAt","matchedStake","unmatchedStake","matchedPrice","matchedAgainstStake","cancelOnInRunning","cancelIfSelectionReset","totalForSideMakeStake","totalForSideTakeStake","makeCommissionRate","takeCommissionRate","orderFillType","orderPAndL","maximumSequenceNumber","_listOrdersChangedSince","_listOrdersChangedSinceResponse","structuralChange","unknownMarketIds","needMarketInformation","orderi","getEventName","warn","thisOrderForced","requestedAveragePrice","provisionalMatchedStake","provisionalMatchedAgainstStake","isMarketConfused","commissionBasis","taxAmountDeducted","orderCommission","_processFireOnChange","getExchangePrices","selectionI","wantIcons","justRefreshPrices","thresholdAmount","numberForPricesRequired","numberAgainstPricesRequired","forceLocalOrderCacheUpdate","_forceLocalOrderCacheUpdateResponse","_new","marketPAndL","marketDetail","upsideIfSettledFor","upsideIfSettledPlace","grossUpsideFor","grossUpsideForCommission","grossUpsideAgainst","grossUpsideAgainstCommission","netSelectionPosition","returnObj","selectionIndex","totalStake","totalAgainstSideGain","totalGrossUpsideFor","totalGrossUpsideForCommission","orderItem","includeSettledSelections","eachWayDivisor","thisSelectionId","upsideIfSettledAgainst","commission","polMultiple","againstSideGain","displayPandLNetOfCommission","forSideGain","selectionFigures","Infinity","defaultNetSelectionPosition","listOrdersByTimePlaced","isInternal","sortDescending","orderI","eventClassifierIds","eventClassifierCount","fireOnChangeData","_getFireOnChange","overlayId","listOrdersByTimeChanged","_processFireOnChange2","overlayCount","newArray","oldArray","sortDecending","fireOnChangeArray","offset","max","placeOrders","returnMatchInformation","wantAllOrNothingBehaviour","useFreeBet","ordersRequested","thisSelection","selection","subscribedSelection","fillOrKillThreshold","fillOrKillThresholdSpecified","requestedForSideStake","requestedForSidePrice","requestedAverageForSidePrice","withdrawRepriceOption","withdrawRepriceOptionId","_placeOrdersResponse","ordersToPlace","output","totalStakeDebited","responses","matchedAgainstSideStake","formatDate","changeOrders","orderCount","punterReferenceNumberSpecified","expiresAtSpecified","deltaAmount","withdrawRepriceOptionSpecified","cancelOnInRunningSpecified","cancelIfSelectionResetSpecified","setToBeSPIfUnmatched","_changeOrdersResponse","provisionalMatchedAgainstSideStake","cancelOrders","orderIds","_cancelOrdersResponse","cancelledForSideStake","suspendOrders","_suspendOrdersResponse","orderCache","thisOrderResponse","suspendedForSideStake","unsuspendOrders","_unsuspendOrdersResponse","thisOrderRequest","listExchangeMarketInformation","_listExchangeMarketInformationResponse","subscribeExchangeMarket","AAPIRequest","wantIndirectMarkets","_subscribeExchangeMarketResponse","fireOnSubscribedExchangeMarketITL","fireOnSubscribedExchangeSelectionITL","fireOnSubscribedMarketScoresITL","fireOnSubscribedExchangeMarketDelta","fireOnSubscribedExchangeSelectionDelta","fireOnSubscribedMarketScoresDelta","fireOnITLCycleComplete","getExchangeEvent","_getExchangeEventResponse","eventIdIndex","GBEUtils","isDescendantOf","listOrders","includeFullyMatched","includeFullyUnmatched","includeSuspended","includeUnsuspended","validFromFilter","validToFilter","orderStatusFilter","settledFromFilter","settledToFilter","orderById","minUnmatchedAmount","minMatchedAmount","_listOrdersResponse","totalResultSetSize","responseOrder","orderObject","OrderDetail","lastChangedAt","validFrom","forSideAmountUnmatched","averageForSidePrice","matchingTimestamp","currencyCode","wantMarketDescription","maxNoOfSelectionsToReturn","contextEvents","selectionIds","getExchangePricesResponse","marketArrays","filter","cachedMarket","totalMatchedAmount","marketDescription","ancestryChain","previousEventClassifier","nextEventClassifier","tabs","eventTabs","tab","tabIndex","x","z","isInRunningAllowed","inRunningDelaySeconds","managedWhenInRunning","selectionIconsURL","iconWidth","iconHeight","selectionDeductionFactor","forPriceCount","forSidePrices","ExchangePrice","amountAvailable","formatDecimal","hasRecentlyChanged","againstPriceCount","againstSidePrices","getExchangePricesEnhanced","_getExchangePricesEnhancedResponse","eventClassifierAncestryChain","topLevelEventClassifierId","grandparentEventClassifierId","relatedEventClassifiers","relatedMarkets","getExchangeMarketsBlurb","_getExchangeMarketsBlurbResponse","getExchangeMarketsHistory","_getExchangeMarketsHistoryResponse","selectionCount","matchCount","thisMatch","matchedAmount","time","formattedPrice","getExchangeAggregatedMatchHistory","minimumMatchedAmount","_getExchangeAggregatedMatchHistoryResponse","getOrder","getOrderDetails","_getOrderDetailsResponse","marketStatus","orderStatus","averagePrice","grossSettlementAmount","marketCommission","marketSettledDate","history","auditLog","auditCount","OrderHistoryItem","orderActionTypeId","orderActionType","priceMatched","matchedOrderId","totalAgainstStake","amountUnmatched","wasMakeSpecified","wasMake","listMarketPAndL","marketSettlementFlag","_listMarketPAndLResponse","listPAndLHierarchy","_listPAndLHierarchyResponse","outputEventClassifiers","event","numberSettledOrders","marketCommissionPaid","listMarketPAndLSummary","_listMarketPAndLSummaryResponse","outputMarkets","listSettledPAndL","_listSettledPAndLResponse","listPunterReservations","_listPunterReservationsResponse","punterReservations","reservations","_addPushRegex","_regexArrayExchange","onTopicStatusChange","ExchangeTrade","occurredAt","backersStake","layersLiability","tradeType","_eventClassifierId","marketTypeName","OrderActionType","taxChargingBasis","taxRate","getHistory","_thisObject","isVisibleAsTradingMarket","isVisibleAsPricedMarket","effectiveMarketTradingRestriction","withdrawAction","ballotOutAction","canBeDeadHeated","getTabs","tabArray","SubscribedExchangeMarketNew","SubscribedExchangeSelectionMatchedAmount","SubscribedItemNames","SubscribedMarketScores","SubscribedOrder","layReferencePrice","SubscribedSelectionPAndL","SubscribedSelectionPriceHistory","listSportsbookMarkets","requestParam","getSportsbookPrices","isMultiplesEnabled","aSelection","SportsbookPrice","currentForDisplayPrice","currentForAmountAvailable","prices","currentForPriceDetailedList","forPrice","stakeAvailable","stakes","currentForPriceStakeList","forStake","currentAgainstAmountAvailable","currentAgainstPriceDetailedList","againstPrice","currentAgainstPriceStakeList","againstStake","getSportsbookMarketsBlurb","ignore","marketBlurbs","placeBets","autoOddsAcceptanceOption","betRequests","requestedBets","newBet","cache","counterOfferId","lastBet","bets","betResponses","betResponse","punterGrossAmountRequested","punterPrice","punterPriceRequested","sportsBetPriceType","Bet","availableStake","counterOfferStake","counterOfferPrice","counterOfferValidUntil","listCurrentBets","marketsId","includeCashOutHistory","betArray","localBets","localBet","requestCashOutOffer","localBetIds","localBetId","cashoutOffers","totalCashOutOffer","totalEquityAmount","cashOutBets","wantAllOrNothing","firstRequestedAt","getBetDetails","getBet","getSportsbookPricesEnhanced","currentForPriceStakesDetailed","currentAgainstPriceStakesDetailed","requestSBMultipleBetQuotation","combinationTypes","riskGroupProfileName","placeSBMultipleBet","acceptPriceChange","accaGroupName","customBetType","participants","requestSBMultipleBetCashOut","cashOutSBMultipleBet","cashOutOffer","cashOutEquityPercentage","histories","isEachWay","adjustedStrikePrice","punterNetAmountPlaced","punterGrossAmountPlaced","betStatusId","betStatus","punterPriceWhenSettled","netSettlementAmount","cashOutHistory","cashOutDatetime","cashOutReturnCode","requestedCashOutAmount","fixedPremium","betValuationWithConcession","cashOutAmount","cashOutStake","remainingStake","cashOutHistories","getMultiplesSBBaseCombinations","dg","subType","combinations","totalCombinationCount","finalCombinations","goliath","superHeinz","combination","combinationToPush","betString","combinationCount","combinationType","combinationName","legs","hasAccaGroupName","indexToMove","unshift","typeCount","leg","find","listMultipleBets","multipleBets","betObject","accaGroupId","clientGroupReference","multipleLegs","gbeselection","multipleLegStatusId","multipleLegStatus","iPaddress","iPCountryCode","getMultipleBetDetails","partialMatches","partialMatch","maxUpside","indicativePrice","selectionPrices","selectionPrice","selitem","priceWhenPlaced","priceWhenSettled","multipleLeg","matchedsel","requestMultipleBetQuotation","indexedSelections","minOffer","levels","offers","betQuotations","betQuotation","offer","placeMultipleBets","requestedLegs","requestedBet","requestedLeg","betselection","requestedGrossForSideStake","multipleBetResults","multipleBetResult","thisResult","cashoutMultipleBets","betCashOutRequests","requestMultipleBetCashOutOffer","multipleBetCashOutOffers","listActiveMultipleBets","embedAccaGroupItems","requestParams","getSBMultipleBetDetails","listActiveSBMultipleBets","listSBMultipleBets","placedAfter","placedBefore","freeze"],"sourceRoot":""}