
<!-- from zxml.js -->

var zXml={useActiveX:(typeof ActiveXObject!="undefined"),useDom:document.implementation&&document.implementation.createDocument,useXmlHttp:(typeof XMLHttpRequest!="undefined")};zXml.ARR_XMLHTTP_VERS=["MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp","Microsoft.XmlHttp"];zXml.ARR_DOM_VERS=["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XmlDom"];function zXmlHttp(){}
zXmlHttp.createRequest=function(){if(zXml.useXmlHttp){return new XMLHttpRequest();}else if(zXml.useActiveX){if(!zXml.XMLHTTP_VER){for(var i=0;i<zXml.ARR_XMLHTTP_VERS.length;i++){try{new ActiveXObject(zXml.ARR_XMLHTTP_VERS[i]);zXml.XMLHTTP_VER=zXml.ARR_XMLHTTP_VERS[i];break;}catch(oError){}}}
if(zXml.XMLHTTP_VER){return new ActiveXObject(zXml.XMLHTTP_VER);}else{throw new Error("Could not create XML HTTP Request.");}}else{throw new Error("Your browser doesn't support an XML HTTP Request.");}};zXmlHttp.isSupported=function(){return zXml.useXmlHttp||zXml.useActiveX;};function zXmlDom(){}
zXmlDom.createDocument=function(){if(zXml.useDom){var oXmlDom=document.implementation.createDocument("","",null);oXmlDom.parseError={valueOf:function(){return this.errorCode;},toString:function(){return this.errorCode.toString()}};oXmlDom.__initError__();oXmlDom.addEventListener("load",function(){this.__checkForErrors__();this.__changeReadyState__(4);},false);return oXmlDom;}else if(zXml.useActiveX){if(!zXml.DOM_VER){for(var i=0;i<zXml.ARR_DOM_VERS.length;i++){try{new ActiveXObject(zXml.ARR_DOM_VERS[i]);zXml.DOM_VER=zXml.ARR_DOM_VERS[i];break;}catch(oError){}}}
if(zXml.DOM_VER){return new ActiveXObject(zXml.DOM_VER);}else{throw new Error("Could not create XML DOM document.");}}else{throw new Error("Your browser doesn't support an XML DOM document.");}};zXmlDom.isSupported=function(){return zXml.useDom||zXml.useActiveX;};var oMozDocument=null;if(typeof XMLDocument!="undefined")
{oMozDocument=XMLDocument;}
else if(typeof Document!="undefined")
{oMozDocument=Document;}
if((null!=oMozDocument)&&!window.opera)
{try{oMozDocument.prototype.readyState=0;}catch(e){}
oMozDocument.prototype.onreadystatechange=null;oMozDocument.prototype.__changeReadyState__=function(iReadyState){try{this.readyState=iReadyState;}catch(e){}
if(typeof this.onreadystatechange=="function"){this.onreadystatechange();}};oMozDocument.prototype.__initError__=function(){this.parseError.errorCode=0;this.parseError.filepos=-1;this.parseError.line=-1;this.parseError.linepos=-1;this.parseError.reason=null;this.parseError.srcText=null;this.parseError.url=null;};oMozDocument.prototype.__checkForErrors__=function(){if(this.documentElement.tagName=="parsererror"){var reError=/>([\s\S]*?)Location:([\s\S]*?)Line Number (\d+), Column (\d+):<sourcetext>([\s\S]*?)(?:\-*\^)/;reError.test(this.xml);this.parseError.errorCode=-999999;this.parseError.reason=RegExp.$1;this.parseError.url=RegExp.$2;this.parseError.line=parseInt(RegExp.$3);this.parseError.linepos=parseInt(RegExp.$4);this.parseError.srcText=RegExp.$5;}};oMozDocument.prototype.loadXML=function(sXml){this.__initError__();this.__changeReadyState__(1);var oParser=new DOMParser();var oXmlDom=oParser.parseFromString(sXml,"text/xml");while(this.firstChild){this.removeChild(this.firstChild);}
for(var i=0;i<oXmlDom.childNodes.length;i++){var oNewNode=this.importNode(oXmlDom.childNodes[i],true);this.appendChild(oNewNode);}
this.__checkForErrors__();this.__changeReadyState__(4);};oMozDocument.prototype.__load__=oMozDocument.prototype.load;oMozDocument.prototype.load=function(sURL){this.__initError__();this.__changeReadyState__(1);this.__load__(sURL);};oMozDocument.prototype.selectSingleNode=function(strXPath)
{var doc=this;if(doc.nodeType!=9)
doc=doc.ownerDocument;var node=doc.evaluate(strXPath,this,null,XPathResult.ANY_UNORDERED_NODE_TYPE,null);if(node!=null)
node=node.singleNodeValue;return(node);};oMozDocument.prototype.selectNodes=function(sXPath){var doc=this;if(doc.nodeType!=9)
doc=doc.ownerDocument;var oResult=doc.evaluate(sXPath,this,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);var aNodes=new Array;if(oResult!=null){var oElement=oResult.iterateNext();while(oElement){aNodes.push(oElement);oElement=oResult.iterateNext();}}
return aNodes;};Node.prototype.__defineGetter__("xml",function(){var oSerializer=new XMLSerializer();return oSerializer.serializeToString(this,"text/xml");});Node.prototype.__defineGetter__("text",function(){var sText="";for(var i=0;i<this.childNodes.length;i++){if(this.childNodes[i].hasChildNodes()){sText+=this.childNodes[i].text;}else{sText+=this.childNodes[i].nodeValue;}}
return sText;});}
function zXslt(){}
zXslt.transformToText=function(oXml,oXslt){if(typeof XSLTProcessor!="undefined"){var oProcessor=new XSLTProcessor();oProcessor.importStylesheet(oXslt);var oResultDom=oProcessor.transformToDocument(oXml);var sResult=oResultDom.xml;if(sResult.indexOf("<transformiix:result")>-1){sResult=sResult.substring(sResult.indexOf(">")+1,sResult.lastIndexOf("<"));}
return sResult;}else if(zXml.useActiveX){return oXml.transformNode(oXslt);}else{throw new Error("No XSLT engine found.");}};function zXPath(){}
zXPath.selectNodes=function(oRefNode,sXPath,oXmlNs){if(typeof XPathEvaluator!="undefined"){oXmlNs=oXmlNs||{};var nsResolver=function(sPrefix){return oXmlNs[sPrefix];};var oEvaluator=new XPathEvaluator();var oResult=oEvaluator.evaluate(sXPath,oRefNode,nsResolver,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);var aNodes=new Array;if(oResult!=null){var oElement=oResult.iterateNext();while(oElement){aNodes.push(oElement);oElement=oResult.iterateNext();}}
return aNodes;}else if(zXml.useActiveX){if(oXmlNs){var sXmlNs="";for(var sProp in oXmlNs){sXmlNs+="xmlns:"+sProp+"="+oXmlNs[sProp]+" ";}
oRefNode.ownerDocument.setProperty("SelectionNamespaces",sXmlNs);}
return oRefNode.selectNodes(sXPath);}else{throw new Error("No XPath engine found.");}};zXPath.selectSingleNode=function(oRefNode,sXPath,oXmlNs){if(typeof XPathEvaluator!="undefined"){oXmlNs=oXmlNs||{};var nsResolver=function(sPrefix){return oXmlNs[sPrefix];};var oEvaluator=new XPathEvaluator();var oResult=oEvaluator.evaluate(sXPath,oRefNode,nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null);if(oResult!=null){return oResult.singleNodeValue;}else{return null;}}else if(zXml.useActiveX){if(oXmlNs){var sXmlNs="";for(var sProp in oXmlNs){sXmlNs+="xmlns:"+sProp+"="+oXmlNs[sProp]+" ";}
oRefNode.ownerDocument.setProperty("SelectionNamespaces",sXmlNs);}
return oRefNode.selectSingleNode(sXPath);}else{throw new Error("No XPath engine found.")}};function zXMLSerializer(){}
zXMLSerializer.prototype.serializeToString=function(oNode){var sXml="";switch(oNode.nodeType){case 1:sXml="<"+oNode.tagName;for(var i=0;i<oNode.attributes.length;i++){sXml+=" "+oNode.attributes[i].name+"=\""+oNode.attributes[i].value+"\"";}
sXml+=">";for(var i=0;i<oNode.childNodes.length;i++){sXml+=this.serializeToString(oNode.childNodes[i]);}
sXml+="</"+oNode.tagName+">";break;case 3:sXml=oNode.nodeValue;break;case 4:sXml="<![CDATA["+oNode.nodeValue+"]]>";break;case 7:sXml="<?"+oNode.nodevalue+"?>";break;case 8:sXml="<!--"+oNode.nodevalue+"-->";break;case 9:for(var i=0;i<oNode.childNodes.length;i++){sXml+=this.serializeToString(oNode.childNodes[i]);}
break;}
return sXml;};
<!-- from gplayer_api_defines.js -->

Exent.API=function()
{};Exent.API.Defines=function()
{};Exent.API.Defines.SessionTypeId={Unknown:"0",RunGame:"10",DownloadGame:"20"};Exent.API.Defines.ErrorId={OK:"0"};Exent.API.Defines.LicenseType={Unknown:"0",PU:"10",PM:"20"};Exent.API.Defines.DownloadListStatus={Unknown:"0",Paused:"10",Resumed:"20"};
<!-- from gplayer_api_notification.js -->

function GPlayerInvokeCB(strXml)
{try
{var xmlDoc=getXMLDOMObject();xmlDoc.loadXML(strXml);var root=xmlDoc.documentElement;var strNotificationId=root.nodeName;switch(strNotificationId)
{case"DownloadInfoNotification":{HandlePlayerDownloadInfoNotification(xmlDoc);break;}
case"ExecutionStateNotification":{HandlePlayerExecutionStateNotification(xmlDoc);break;}
case"ErrorNotification":{HandlePlayerErrorNotification(xmlDoc);break;}
case"LanguageChangedNotification":{HandlePlayerLanguageChangedNotification(xmlDoc);break;}
case"GameMediaChangedNotification":{HandlePlayerGameMediaChangedNotification(xmlDoc);break;}
case"GameAssetDownloadCompleteNotification":{HandlePlayerGameAssetDownloadCompleteNotification(xmlDoc);break;}
case"AllGameAssetsDownloadCompleteNotification":{HandlePlayerAllGameAssetsDownloadCompleteNotification(xmlDoc);break;}
case"ActionNotification":{HandlePlayerActionNotification(xmlDoc);break;}
case"GameShortcutNotification":{HandlePlayerGameShortcutNotification(xmlDoc);break;}
case"DownloadListGameStatusChangedNotification":{HandlePlayerDownloadListGameStatusChangedNotification(xmlDoc);break;}
case"DownloadListStatusChangedNotification":{HandlePlayerDownloadListStatusChangedNotification(xmlDoc);break;}
case"GameRemovedNotification":{HandlePlayerGameRemovedNotification(xmlDoc);break;}}}
catch(e)
{}};function HandlePlayerDownloadInfoNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("DownloadInfoNotification/ContentDescriptor");var strContentId=Node.getAttribute("Id");var strReadyToUse=Node.getAttribute("ReadyToUse");var strFullyCached=Node.getAttribute("FullyCached");var strReadyForOffline=Node.getAttribute("ReadyForOffline");if(strContentId=="0")
{return;}
if(strFullyCached=="1")
{GetApplication().OnGameFullDownloadComplete(strContentId,strReadyForOffline);}
else
{if(strReadyToUse=="1")
{GetApplication().OnGameInitialDownloadComplete(strContentId);}}}
catch(e)
{}};function HandlePlayerExecutionStateNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("ExecutionStateNotification/ContentDescriptor");var strContentId=Node.getAttribute("Id");var strProviderId=Node.getAttribute("ProviderId");var strActive=Node.getAttribute("Active");var strRunning=Node.getAttribute("GameRunning");var strTerminating=Node.getAttribute("Terminating");var strConnectionState=Node.getAttribute("ConnectionState");var strDownloadingState=Node.getAttribute("DownloadingState");var strSessionTypeId=Node.getAttribute("SessionTypeId");if(!IsProviderSupported(strProviderId))
{}
if(strContentId=="0")
{return;}
if(strActive=="0")
{GetApplication().OnGameIdle(strContentId,strProviderId);return;}
if(strTerminating=="1")
{GetApplication().OnGameTerminating(strContentId,strProviderId);return;}
if(strRunning=="1")
{GetApplication().OnGameRunning(strContentId,strProviderId);return;}
if(strConnectionState=="20")
{GetApplication().OnGameAuthenticating(strContentId,strProviderId);return;}
if(strDownloadingState=="20")
{GetApplication().OnGameUpdating(strContentId,strProviderId);return;}
if(strDownloadingState=="40")
{GetApplication().OnGameDownloading(strContentId,strProviderId);return;}
if(strConnectionState=="30")
{GetApplication().OnGameConnecting(strContentId,strProviderId,strSessionTypeId)
return;}
if(strConnectionState=="40")
{GetApplication().OnGameConnected(strContentId,strProviderId)
return;}}
catch(e)
{}};function HandlePlayerErrorNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("ErrorNotification/ContentDescriptor");var strContentId=Node.getAttribute("Id");var strProviderId=Node.getAttribute("ProviderId");var ContentExecutionErrId=Node.getAttribute("ContentExecutionErrId");var strTitle=Node.getAttribute("Title");var strDesc=Node.getAttribute("Description");var strSolution=Node.getAttribute("Solution");if(!IsProviderSupported(strProviderId))
{}
if(strContentId!="0")
{GetApplication().OnGameError(strContentId,strProviderId,ContentExecutionErrId,strTitle,strDesc,strSolution);}
else
{GetApplication().OnPlayerError(strProviderId,ContentExecutionErrId,strTitle,strDesc,strSolution);}}
catch(e)
{}};function HandlePlayerLanguageChangedNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("LanguageChangedNotification/SkinDescriptor");var strSkinCode=Node.getAttribute("Id");var strLangId=Node.getAttribute("LangId");GetApplication().OnLanguageChanged(strSkinCode,strLangId);}
catch(e)
{}};function HandlePlayerGameMediaChangedNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("GameMediaChangedNotification/ContentDescriptor");var strContentId=Node.getAttribute("Id");var strMediaId=Node.getAttribute("MediaId");if(strContentId=="0")
{return;}
GetApplication().OnMediaChanged(strContentId,strMediaId);}
catch(e)
{}};function HandlePlayerGameAssetDownloadCompleteNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("GameMediaChangedNotification/ContentDescriptor");var strContentId=Node.getAttribute("Id");var strProviderId=Node.getAttribute("ProviderId");if(!IsProviderSupported(strProviderId))
{}
var Node=xmlDoc.selectSingleNode("GameMediaChangedNotification/ContentDescriptor/Asset");var strAssetId=Node.getAttribute("Id");var strAssetPath=Node.getAttribute("Path");switch(strAssetId)
{case"GameImage":{GetApplication().OnGameImageUpdated(strContentId,strProviderId,strAssetPath);break;}
case"GameSplashImage":{GetApplication().OnGameSplashImageUpdated(strContentId,strProviderId,strAssetPath);break;}
case"GameEndSplashImage":{GetApplication().OnGameEndSplashImageUpdated(strContentId,strProviderId,strAssetPath);break;}
case"GameMDStrings":{GetApplication().OnGameMDStringsUpdated(strContentId,strProviderId,strAssetPath);break;}}}
catch(e)
{}};function HandlePlayerAllGameAssetsDownloadCompleteNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("GameMediaChangedNotification/ContentDescriptor");var strContentId=Node.getAttribute("Id");var strProviderId=Node.getAttribute("ProviderId");if(!IsProviderSupported(strProviderId))
{}
GetApplication().OnGameAssetsDownloadComplete(strContentId,strProviderId);}
catch(e)
{}};function HandlePlayerActionNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("ActionNotification/SkinDescriptor");var strSkinCode=Node.getAttribute("Id");Node=xmlDoc.selectSingleNode("ActionNotification/SkinDescriptor/ActionInfo");var strInfo=Node.nodeTypedValue;GetApplication().OnActionNotification(strSkinCode,strInfo);}
catch(e)
{}};function HandlePlayerGameShortcutNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("GameShortcutNotification/ContentDescriptor");var strContentId=Node.getAttribute("Id");var strProviderId=Node.getAttribute("ProviderId");var strCmdLineId=Node.getAttribute("CmdlineId");if(!IsProviderSupported(strProviderId))
{}
GetApplication().OnGameShortcut(strContentId,strProviderId,strCmdLineId);}
catch(e)
{}};function HandlePlayerDownloadListGameStatusChangedNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("DownloadListGameStatusChangedNotification/ContentDescriptor");var strContentId=Node.getAttribute("Id");var strProviderId=Node.getAttribute("ProviderId");var strStatus=Node.getAttribute("Status");var strFromPriority=Node.getAttribute("FromPriority");var strToPriority=Node.getAttribute("ToPriority");if(!IsProviderSupported(strProviderId))
{}
switch(strStatus)
{case"10":{GetApplication().OnDownloadListGameAdded(strContentId,strProviderId);break;}
case"20":{GetApplication().OnDownloadListGameRemoved(strContentId,strProviderId);break;}
case"30":{GetApplication().OnDownloadListGamePriorityIncreased(strContentId,strProviderId,strFromPriority,strToPriority);break;}
case"40":{GetApplication().OnDownloadListGamePriorityDecreased(strContentId,strProviderId,strFromPriority,strToPriority);break;}}}
catch(e)
{}};function HandlePlayerDownloadListStatusChangedNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("DownloadListStatusChangedNotification/ProviderDescriptor");var strProviderId=Node.getAttribute("Id");var strStatus=Node.getAttribute("Status");if(!IsProviderSupported(strProviderId))
{}
switch(strStatus)
{case Exent.API.Defines.DownloadListStatus.Resumed:{GetApplication().OnDownloadListResumed(strProviderId);break;}
case Exent.API.Defines.DownloadListStatus.Paused:{GetApplication().OnDownloadListPaused(strProviderId);break;}}}
catch(e)
{}};function HandlePlayerGameRemovedNotification(xmlDoc)
{try
{var Node=xmlDoc.selectSingleNode("GameRemovedNotification/ContentDescriptor");var strContentId=Node.getAttribute("Id");var strSaveInfoKept=Node.getAttribute("SaveInfoKept");GetApplication().OnGameRemoved(strContentId,strSaveInfoKept);}
catch(e)
{}};function IsProviderSupported(strProviderId)
{try
{return GetApplication().IsProviderSupported(strProviderId);}
catch(e)
{return false;}};
<!-- from gplayer_notification_handler.js -->

var g_PlayerNotification;function GetApplication()
{if(!g_PlayerNotification)
{g_PlayerNotification=new Exent.Turnkey.PlayerNotification();if(!g_PlayerNotification)
{}}
return g_PlayerNotification;};Exent.Turnkey=function()
{};Exent.Turnkey.PlayerNotification=function()
{this.OnGameFullDownloadComplete=OnGameFullDownloadComplete;this.OnGameInitialDownloadComplete=OnGameInitialDownloadComplete;this.OnGameIdle=OnGameIdle;this.OnGameTerminating=OnGameTerminating;this.OnGameRunning=OnGameRunning;this.OnGameAuthenticating=OnGameAuthenticating;this.OnGameUpdating=OnGameUpdating;this.OnGameDownloading=OnGameDownloading;this.OnGameConnecting=OnGameConnecting;this.OnGameConnected=OnGameConnected;this.OnGameError=OnGameError;this.OnPlayerError=OnPlayerError;this.OnLanguageChanged=OnLanguageChanged;this.OnMediaChanged=OnMediaChanged;this.OnGameImageUpdated=OnGameImageUpdated;this.OnGameSplashImageUpdated=OnGameSplashImageUpdated;this.OnGameEndSplashImageUpdated=OnGameEndSplashImageUpdated;this.OnGameMDStringsUpdated=OnGameMDStringsUpdated;this.OnGameAssetsDownloadComplete=OnGameAssetsDownloadComplete;this.OnActionNotification=OnActionNotification;this.OnGameShortcut=OnGameShortcut;this.Load=Load;this.OnDownloadListGameAdded=OnDownloadListGameAdded;this.OnDownloadListGameRemoved=OnDownloadListGameRemoved;this.OnDownloadListGamePriorityIncreased=OnDownloadListGamePriorityIncreased;this.OnDownloadListGamePriorityDecreased=OnDownloadListGamePriorityDecreased;this.OnDownloadListResumed=OnDownloadListResumed;this.OnDownloadListPaused=OnDownloadListPaused;this.OnGameRemoved=OnGameRemoved;this.IsProviderSupported=IsProviderSupported;function Load()
{};function OnGameFullDownloadComplete(strContentId,strReadyForOffline)
{try
{refreshPlayButton(strContentId,Exent.Web.Beta.Defines.PlayButtonStatus.Play);}
catch(e){}};function OnGameInitialDownloadComplete(strContentId)
{try
{refreshPlayButton(strContentId,Exent.Web.Beta.Defines.PlayButtonStatus.Play);}
catch(e){}};function OnGameIdle(strContentId,strProviderId)
{try
{refreshPlayButton(strContentId);}
catch(e){}};function OnGameTerminating(strContentId,strProviderId)
{try
{refreshPlayButton(strContentId);}
catch(e){}};function OnGameRunning(strContentId,strProviderId)
{try
{refreshPlayButton(strContentId,Exent.Web.Beta.Defines.PlayButtonStatus.Running);}
catch(e){}};function OnGameAuthenticating(strContentId,strProviderId)
{};function OnGameConnecting(strContentId,strProviderId,strSessionTypeId)
{try
{}
catch(e){}};function OnGameConnected(strContentId,strProviderId)
{};function OnGameUpdating(strContentId,strProviderId)
{try
{}
catch(e){}};function OnGameDownloading(strContentId,strProviderId)
{try
{refreshPlayButton(strContentId,Exent.Web.Beta.Defines.PlayButtonStatus.Downloading);}
catch(e){}};function OnGameError(strContentId,strProviderId,ContentExecutionErrId,strTitle,strDesc,strSolution)
{try
{refreshPlayButton(strContentId);}
catch(e){}};function OnPlayerError(strProviderId,ContentExecutionErrId,strTitle,strDesc,strSolution)
{try
{refreshPlayButton(strContentId);}
catch(e){}};function OnLanguageChanged(strSkinCode,strLangId)
{};function OnMediaChanged(strContentId,strMediaId)
{};function OnGameImageUpdated(strContentId,strProviderId,strImagePath)
{};function OnGameSplashImageUpdated(strContentId,strProviderId,strImagePath)
{};function OnGameEndSplashImageUpdated(strContentId,strProviderId,strImagePath)
{};function OnGameMDStringsUpdated(strContentId,strProviderId,strAssetPath)
{};function OnGameAssetsDownloadComplete(strContentId,strProviderId)
{};function OnActionNotification(strSkinCode,strInfo)
{};function OnGameShortcut(strContentId,strProviderId)
{};function OnDownloadListGameAdded(strContentId,strProviderId)
{try
{refreshPlayButton(strContentId,Exent.Web.Beta.Defines.PlayButtonStatus.InDownloadQueue);}
catch(e){}};function OnDownloadListGameRemoved(strContentId,strProviderId)
{try
{refreshPlayButton(strContentId,Exent.Web.Beta.Defines.PlayButtonStatus.Download);}
catch(e){}};function OnDownloadListGamePriorityIncreased(strContentId,strProviderId,strFromPriority,strToPriority)
{};function OnDownloadListGamePriorityDecreased(strContentId,strProviderId,strFromPriority,strToPriority)
{};function OnDownloadListResumed(strProviderId)
{};function OnDownloadListPaused(strProviderId)
{};function OnGameRemoved(strContentId,strSavedInfoKept)
{try
{refreshPlayButton(strContentId,Exent.Web.Beta.Defines.PlayButtonStatus.Download);}
catch(e){}};function IsProviderSupported(strProviderId)
{if(parseInt(g_strProviderID)==parseInt(strProviderId))
{return true;}};function CTOR(PlayerNotification)
{PlayerNotification.Load();};CTOR(this);};
<!-- from game_info.js -->

function structGameInfo(strPlayerAPIErrCode,strContentId,strDownloadedKB,strInitialDownloadSizeKB,strFullDownloadSizeKB,strActive,strGameRunning,strTerminating,strLastSessionErrorCode,strDownloadPriority,strReadyToUse,strFullyCached,strInitialDownloadTimeLeftSec,strFullDownloadTimeLeftSec)
{this.strPlayerAPIErrCode=strPlayerAPIErrCode;this.strContentId=strContentId;this.strDownloadedKB=strDownloadedKB;this.strInitialDownloadSizeKB=strInitialDownloadSizeKB;this.strFullDownloadSizeKB=strFullDownloadSizeKB;this.strActive=strActive;this.strGameRunning=strGameRunning;this.strTerminating=strTerminating;this.strLastSessionErrorCode=strLastSessionErrorCode;this.strDownloadPriority=strDownloadPriority;this.strReadyToUse=strReadyToUse;this.strFullyCached=strFullyCached;this.strInitialDownloadTimeLeftSec=strInitialDownloadTimeLeftSec;this.strFullDownloadTimeLeftSec=strFullDownloadTimeLeftSec;}
function GetGPlayerGameInfo(strMasterId)
{var CurrentGame=new structGameInfo("","","","","","","","","","","","","","");try
{var strXml=GPlayerApi_GetDownloadInfo(strMasterId);var xmlDoc=getXMLDOMObject();xmlDoc.loadXML(strXml);var nodeContent=xmlDoc.getElementsByTagName("ContentDescriptor").item(0);if(!nodeContent)
{return CurrentGame;}
else
{CurrentGame.strPlayerAPIErrCode=GetAttributeValue(nodeContent,"PlayerAPIErr");if("0"!=CurrentGame.strPlayerAPIErrCode)
{return CurrentGame;}
CurrentGame.strContentId=GetAttributeValue(nodeContent,"Id");CurrentGame.strDownloadedKB=GetAttributeValue(nodeContent,"DownloadedKB");CurrentGame.strInitialDownloadSizeKB=GetAttributeValue(nodeContent,"InitialDownloadKB");CurrentGame.strFullDownloadSizeKB=GetAttributeValue(nodeContent,"FullDownloadKB");CurrentGame.strActive=GetAttributeValue(nodeContent,"Active");CurrentGame.strGameRunning=GetAttributeValue(nodeContent,"GameRunning");CurrentGame.strTerminating=GetAttributeValue(nodeContent,"Terminating");CurrentGame.strReadyToUse=GetAttributeValue(nodeContent,"ReadyToUse");CurrentGame.strFullyCached=GetAttributeValue(nodeContent,"FullyCached");CurrentGame.strInitialDownloadTimeLeftSec=GetAttributeValue(nodeContent,"InitialDownloadTimeLeftSec");CurrentGame.strFullDownloadTimeLeftSec=GetAttributeValue(nodeContent,"FullDownloadTimeLeftSec");}
strXml=GPlayerApi_GetDownloadListInfo(strMasterId,g_strProviderID);xmlDoc.loadXML(strXml);nodeContent=xmlDoc.getElementsByTagName("ContentDescriptor").item(0);if(!nodeContent)
{return CurrentGame;}
else
{var strInDownloadList=GetAttributeValue(nodeContent,"InDownloadList");if("0"==strInDownloadList)
{CurrentGame.strDownloadPriority="0";}
else
{CurrentGame.strDownloadPriority=GetAttributeValue(nodeContent,"Priority");}}}
catch(e)
{}
return CurrentGame;}
function GetGameStatus(CurrentGame)
{iStatus=0;if("1"==CurrentGame.strGameRunning)
{iStatus=5;return iStatus;}
if("1"==CurrentGame.strReadyToUse)
{iStatus=3;return iStatus;}
if("1"==CurrentGame.strActive&&"0"!=CurrentGame.strDownloadPriority)
{iStatus=2;return iStatus;}
if("1"==CurrentGame.strActive&&"0"==CurrentGame.strDownloadPriority)
{iStatus=4;return iStatus;}
if("0"!=CurrentGame.strDownloadPriority)
{iStatus=1;return iStatus;}
if("0"!=CurrentGame.strDownloadPriority||"0"==CurrentGame.strReadyToUse)
{iStatus=6;return iStatus;}
return iStatus;}
function GetAttributeValue(xmlNode,strAttributeName)
{var strValue="";try
{strValue=xmlNode.getAttribute(strAttributeName);if("-1"==strValue||"4294967295"==strValue)
{strValue="";}}
catch(e){}
return strValue;}
<!-- from playerInst.js -->

function InstallEXEtenderEx(strInstallationPackagePath)
{if(g_InstallExetenderInProcessFlag!=0)
{}
g_InstallExetenderInProcessFlag=1;if(""==strInstallationPackagePath)
{strInstallationPackagePath=g_ContextPath+"/do/installEXEtender/default/"+g_strCurrentPartnerName+"/"+g_strInstallerName;}
strInstallationPackagePath+=".exe";g_AfterEXEtenderInstallationPageRefreshInterval=4000;IsPlayerInstallationFinished();window.location.href=strInstallationPackagePath;}
function AfterPlayerInstallationFinished()
{g_InstallExetenderInProcessFlag=0;if(GPlayerApi_IsPlayerInstalled(g_strClientVersion,g_strClientVersionMask,g_strClientSkinID,g_strClientSkinVersion,g_strClientSkinVersionMask,g_ExentCtl))
{deleteSessionCookie("strGameIdAction");deleteSessionCookie("strCmdLine");deleteSessionCookie("strRunGameStatus");window.location.reload();}}
<!-- from dependency.js -->

function compareSWHWdependency(strDB,strPC,iParam1,strParam2)
{var iDependencyArrayCount=0;var Component;var iStart;var iEnd;var strTemp;var arrComponents2D=new Array();var arrDBComponents=strDB.split(";");var strDetectedOS="";iStart=strPC.search("DisplayAdapter");if(iStart!=-1)
{iEnd=strPC.indexOf("]",iStart);if(iEnd>iStart)
{strTemp=strPC.substring(iStart,iEnd);strTemp=strTemp.replace(";",":");strTemp=strTemp.replace(";",":");strPC=strPC.substring(0,iStart)+strTemp+strPC.substring(iEnd,strPC.length);}}
var arrPCComponents=strPC.split(";");excludeComponents(arrDBComponents,arrPCComponents);AddMissingComponentsToPcArray(arrDBComponents,arrPCComponents);for(var i=0;i<arrPCComponents.length;i++)
{Component=updateComponentInfo(arrPCComponents[i],arrDBComponents,strDetectedOS);if(Component.bValid==true)
{arrComponents2D[iDependencyArrayCount]=new Array(Component.strName,Component.iStatus,Component.strMinimum,Component.strRecommended,Component.strDetected,Component.strExtraData1,Component.strExtraData2);iDependencyArrayCount++;if(Component.strName=="OS")
{strDetectedOS=Component.strDetected;}}
else if(Component.strName=="DisplayAdapter"&&strDetectedOS==""&&i<arrPCComponents.length-1)
{arrPCComponents[arrPCComponents.length]=arrPCComponents[i];}}
return arrComponents2D;}
function checkClientVersion(strVersionCheck)
{var strErrorId=strVersionCheck.substring(strVersionCheck.indexOf('<ErrorId>')+9,strVersionCheck.indexOf('</ErrorId>'));var strClientVersion=strVersionCheck.substring(strVersionCheck.indexOf('<Information>')+13,strVersionCheck.indexOf('</Information>'));var iClientInstalled=1;if(strErrorId!="0")
{iClientInstalled=0;}
return iClientInstalled;}
function structComponentData(bValid,strName,iStatus,strMinimum,strRecommended,strDetected,strExtraData1,strExtraData2)
{this.bValid=bValid;this.strName=strName;this.iStatus=iStatus;this.strMinimum=strMinimum;this.strRecommended=strRecommended;this.strDetected=strDetected;this.strExtraData1=strExtraData1;this.strExtraData2=strExtraData2;}
function ComponentDataToString(Component)
{var str;str="bValid = "+Component.bValid+"\n";str+="strName = "+Component.strName+"\n";str+="iStatus = "+Component.iStatus+"\n";str+="strMinimum = "+Component.strMinimum+"\n";str+="strRecommended = "+Component.strRecommended+"\n";str+="strDetected = "+Component.strDetected+"\n";str+="strExtraData1 = "+Component.strExtraData1+"\n";str+="strExtraData2 = "+Component.strExtraData2+"\n";return str;}
function updateComponentInfo(strPCinfo,arrDBComponents,strDetectedOS)
{var Component=new structComponentData(false,"",0,"","","","");Component=GetBasicComponentInfo(strPCinfo,arrDBComponents);if(Component.bValid!=true)
{return Component;}
Component.bValid=false;if(Component.strName=="SoundCard"||Component.strName=="Joystick"||Component.strName=="Mouse"||Component.strName=="DirectPlay"||Component.strName=="DirectXMedia"||Component.strName=="Indeo Audio")
{Component.bValid=false;return Component;}
if(Component.strName=="OS")
{checkOSDependency(Component);return Component;}
if(Component.strName=="DisplayAdapter")
{if(strDetectedOS=="")
{return Component;}
Component=checkDisplayAdapterDependency(Component,strDetectedOS);return Component;}
if(Component.strMinimum==""&&Component.strRecommended=="")
{Component.bValid=false;return Component;}
Component=SetComponentVersions(Component);if(Component.bValid!=true)
{return Component;}
Component.bValid=false;Component=SetComponentStatus(Component);return Component;}
function SetComponentStatus(Component_)
{var Component=Component_;var iDepth=0;var iCompareType=0;if(Component.strName=="Indeo Video"||Component.strName=="Indeo Audio")
{iDepth=2;iCompareType=1;}
if(Component.strDetected=="")
{Component.iStatus=0;}
else if(compareVersions(Component.strDetected,Component.strMinimum,iDepth,iCompareType)==2)
{Component.iStatus=1;}
else if(compareVersions(Component.strDetected,Component.strRecommended,iDepth,iCompareType)==2)
{Component.iStatus=2;}
else
{Component.iStatus=3;}
Component.bValid=true;return Component;}
function SetComponentVersions(Component_)
{var Component=Component_;Component.strMinimum=cleanVersionString(Component.strMinimum);Component.strRecommended=cleanVersionString(Component.strRecommended);Component.strDetected=cleanVersionString(Component.strDetected);if(Component.strMinimum!=""&&Component.strRecommended=="")
{Component.strRecommended=Component.strMinimum;}
else if(Component.strRecommended!=""&&Component.strMinimum=="")
{Component.strMinimum=Component.strRecommended;}
else if(compareVersions(Component.strRecommended,Component.strMinimum,0,0)!=1)
{Component.strRecommended=Component.strMinimum;}
Component.bValid=true;return Component;}
function GetBasicComponentInfo(strPCInfo,arrDBComponents)
{var Component=new structComponentData(false,"",0,"","","","");Component.strName=getOnlyName(strPCInfo);Component.strDetected=getVersion(strPCInfo);Component.strMinimum=getVersionFromComponentsArray(Component.strName,arrDBComponents);if(Component.strMinimum=="")
{Component.strMinimum=getVersionFromComponentsArray(Component.strName+"Min",arrDBComponents);}
Component.strRecommended=getVersionFromComponentsArray(Component.strName+"Rec",arrDBComponents);Component.bValid=true;return Component;}
function checkOSDependency(Component_)
{var Component=Component_;var strRequest=Component.strMinimum;var strMinVersion;var strMaxVersion;Component.strDetected=cleanVersionString(Component.strDetected);Component.strMinimum=FormatOSRequest(strRequest);Component.strRecommended=Component.strMinimum;if(Component.strMinimum=="")
{Component.iStatus=3;Component.bValid=true;return Component;}
if(IsOSInRange(Component.strMinimum,Component.strDetected)==false)
{Component.iStatus=1;Component.bValid=true;return Component;}
Component.iStatus=3;Component.bValid=true;return Component;}
function checkDisplayAdapterDependency(Component_,strDetectedOS)
{var Component=Component_;var strTemp;var arrDetected;var CardName;var bRes;strTemp=Component.strDetected;strTemp=strTemp.substr(1,strTemp.length-2);arrDetected=strTemp.split(":");CardName=arrDetected[0].toUpperCase();switch(arrDetected[1])
{case"4098":if(CardName.search("RADEON")!=-1)
{return Get_RADEON_DisplayAdapterComponent(Component.strName,"RADEON",arrDetected[2],arrDetected[1],strDetectedOS);}
break;case"4318":if(CardName.search("GEFORCE")!=-1)
{return Get_NVIDIA_DisplayAdapterComponent(Component.strName,"NVIDIA GeForce",arrDetected[2],arrDetected[1],strDetectedOS);}
if(CardName.search("RIVATNT")!=-1||CardName.search("RIVA TNT")!=-1)
{return Get_NVIDIA_DisplayAdapterComponent(Component.strName,"NVIDIA RIVA TNT",arrDetected[2],arrDetected[1],strDetectedOS);}
if(CardName.search("VANTA")!=-1)
{return Get_NVIDIA_DisplayAdapterComponent(Component.strName,"NVIDIA Vanta",arrDetected[2],arrDetected[1],strDetectedOS);}
break;}
Component.bValid=false;return Component;}
function Get_NVIDIA_DisplayAdapterComponent(strComponentName,strCardName,strDetectedVertion,strVendorId,strDetectedOS)
{var Component=new structComponentData(false,"",0,"","","","");var arrTemp;var strTemp;Component.bValid=true;Component.strName=strComponentName;Component.strMinimum="";Component.strRecommended="61.76";Component.strExtraData1=strCardName;Component.strExtraData2=strVendorId;Component.strRecommended=cleanVersionString(Component.strRecommended);arrTemp=strDetectedVertion.split(".");strTemp=arrTemp[arrTemp.length-1];if(strTemp.length<3)
{Component.bValid=false;return Component;}
Component.strDetected=strTemp.substring(0,strTemp.length-2);Component.strDetected+=".";Component.strDetected+=strTemp.substring(strTemp.length-2,strTemp.length);Component.strDetected=cleanVersionString(Component.strDetected);if(compareVersions(Component.strDetected,Component.strRecommended,0,0)==2)
{Component.iStatus=2;}
else
{Component.iStatus=3;}
return Component;}
function Get_RADEON_DisplayAdapterComponent(strComponentName,strCardName,strDetectedVertion,strVendorId,strDetectedOS)
{var Component=new structComponentData(false,"",0,"","","","");var arrTemp;var strTemp;Component.bValid=true;Component.strName=strComponentName;Component.strMinimum="";Component.strDetected=strDetectedVertion;Component.strExtraData1=strCardName;Component.strExtraData2=strVendorId;if(compareVersions(2,strDetectedOS,0,0)==2)
{Component.strRecommended="6.14.10.6458";}
else
{Component.strRecommended="4.14.01.9138";}
Component.strRecommended=cleanVersionString(Component.strRecommended);Component.strDetected=cleanVersionString(Component.strDetected);if(compareVersions(Component.strDetected,Component.strRecommended,0,0)==2)
{Component.iStatus=2;}
else
{Component.iStatus=3;}
return Component;}
function FormatOSRequest(strDBReqest)
{var strFormatedRequest;var iStartIndex;var iEndIndex;var arrTest;iStartIndex=strDBReqest.indexOf("[",1);iEndIndex=strDBReqest.indexOf("]",iStartIndex+1);if(iStartIndex+1>=iEndIndex)
{return"";}
strFormatedRequest=strDBReqest.substr(iStartIndex+1,iEndIndex-iStartIndex-1);arrTest=strFormatedRequest.split(".");if(arrTest.length!=5)
{strFormatedRequest="";}
return strFormatedRequest;}
function IsOSInRange(strRange,strOS)
{var arrRange;var strTemp;arrRange=strRange.split(".");if(arrRange.length!=5)
{return false;}
strTemp=""+arrRange[0]+"."+arrRange[1]+"."+arrRange[2];if(compareVersions(strOS,strTemp,3,0)==2)
{return false;}
if(arrRange[3]=="-1")
{arrRange[3]=9999;}
if(arrRange[4]=="-1")
{arrRange[4]=9999;}
strTemp=""+arrRange[0]+"."+arrRange[3]+"."+arrRange[4];if(compareVersions(strOS,strTemp,3,0)==1)
{return false;}
return true;}
function getVersionFromComponentsArray(strName,arrComponents)
{var iIndex;var strCurrentName="";var strCurrentVersion="";for(iIndex=0;iIndex<arrComponents.length;iIndex++)
{strCurrentName=getOnlyName(arrComponents[iIndex]);strCurrentVersion=getVersion(arrComponents[iIndex]);if(strCurrentName==strName)
{return strCurrentVersion;}}
return"";}
function getIndexOfComponentInComponentsArray(strName,arrComponents)
{var iIndex;var strCurrentName="";var strCurrentVersion="";for(iIndex=0;iIndex<arrComponents.length;iIndex++)
{strCurrentName=getOnlyName(arrComponents[iIndex]);if(strCurrentName==strName)
{return iIndex;}}
return-1;}
function cleanVersionString(strVer)
{var strClean="";var iIndex;var chCurrent;var iStatus=0;strVer=""+strVer;for(iIndex=0;iIndex<strVer.length;iIndex++)
{chCurrent=strVer.charAt(iIndex);if(iStatus==1&&chCurrent=='.')
{iStatus=2;strClean+=chCurrent;}
else if(chCurrent<='9'&&chCurrent>='0')
{iStatus=1;strClean+=chCurrent;}
else if(iStatus!=0)
{break;}}
if(iStatus==2)
{strClean=strClean.slice(0,strClean.length-1);}
return strClean;}
function AlignSubVerLen(strVer1,sreVer2)
{var strRet=strVer1;while(strRet.length<sreVer2.length)
{strRet=strRet+"0";}
return strRet;}
function compareVersions(strVer1,strVer2,iDepth,icompareType)
{var iIndex;var iEnd;strVer1=cleanVersionString(strVer1);strVer2=cleanVersionString(strVer2);var arrVer1=strVer1.split(".");var arrVer2=strVer2.split(".");if(icompareType==1)
{iEnd=arrVer1.length;if(arrVer2.length<arrVer1.length)
{iEnd=arrVer2.length;}
for(iIndex=0;iIndex<iEnd;iIndex++)
{if(arrVer1[iIndex].length<arrVer2[iIndex].length)
{arrVer1[iIndex]=AlignSubVerLen(arrVer1[iIndex],arrVer2[iIndex]);}
if(arrVer2[iIndex].length<arrVer1[iIndex].length)
{arrVer2[iIndex]=AlignSubVerLen(arrVer2[iIndex],arrVer1[iIndex]);}}}
var iCurrent1;var iCurrent2;if(iDepth>0&&iDepth<arrVer1.length)
{arrVer1=arrVer1.slice(0,iDepth);}
if(iDepth>0&&iDepth<arrVer2.length)
{arrVer2=arrVer2.slice(0,iDepth);}
for(iIndex=0;iIndex<arrVer1.length;iIndex++)
{if(arrVer2.length-1<iIndex)
{return 1;}
iCurrent1=Number(arrVer1[iIndex]);iCurrent2=Number(arrVer2[iIndex]);if(iCurrent1>iCurrent2)
{return 1;}
if(iCurrent1<iCurrent2)
{return 2;}}
if(arrVer1.length<arrVer2.length)
{return 2;}
return 0;}
function getOnlyName(strInput)
{strInput=""+strInput;var strName="";var iIndex=strInput.indexOf("=");if((iIndex<1)||(iIndex>strInput.length-1))
{return strName;}
strName=strInput.substring(0,iIndex);return strName;}
function getVersion(strInput)
{strInput=""+strInput;var strVersion="";var iIndex=strInput.indexOf("=");if((iIndex<1)||(iIndex>strInput.length-1))
{return strVersion;}
strVersion=strInput.substring(iIndex+1,strInput.length);return strVersion;}
function excludeComponents(arrDBComponents,arrPCComponents)
{var strCurrentName;var removeIndexArray=new Array();var removeIndex=0;for(var iIndex=0;iIndex<arrDBComponents.length;iIndex++)
{strCurrentName=getOnlyName(arrDBComponents[iIndex]);if(strCurrentName=="Client")
{arrDBComponents.splice(iIndex,1);iIndex=iIndex-1;}}}
function AddMissingComponentsToPcArray(arrDBComponents,arrPCComponents)
{var strTemp;var i;for(var iIndex=0;iIndex<arrDBComponents.length;iIndex++)
{strCurrentName=getOnlyName(arrDBComponents[iIndex]);strTemp=strCurrentName;if(strCurrentName=="OS"||strCurrentName=="DirectPlay"||strCurrentName=="DirectXMedia"||strCurrentName=="Indeo Audio")
{continue;}
if(strTemp.length>=3)
{strTemp=strCurrentName.substr(strCurrentName.length-3);}
if("Min"==strTemp||"Rec"==strTemp)
{strCurrentName=strCurrentName.substr(0,strCurrentName.length-3);}
i=getIndexOfComponentInComponentsArray(strCurrentName,arrPCComponents);if(i==-1)
{arrPCComponents[arrPCComponents.length]=strCurrentName+"=";}}}
<!-- from dependencyPrint.js -->

Exent.Web.Beta.Defines.SystemCompatible={Unknown:0,NotPass:1,AlmostPass:2,Pass:3};function printDependency2D(arrComponents2D,strOSMsgWin,strExetenderInstall,iconOK,iconWarning,iconNotOK,iconUnknown,strPlatform,strBGColor)
{var iIndex;var arrSWComponents=new Array();var arrHWComponents=new Array();var Component;var strPrintTable="";var strTemp;if(iconOK==null)
{iconOK="";}
if(iconWarning==null)
{iconWarning="";}
if(iconNotOK==null)
{iconNotOK="";}
if(iconUnknown==null)
{iconUnknown="";}
if(strPlatform==null)
{strPlatform="";}
if(strBGColor==null)
{strBGColor="white";}
for(iIndex=0;iIndex<arrComponents2D.length;iIndex++)
{Component=GetComponentPrintData(arrComponents2D,iIndex,strExetenderInstall);if(Component.iType==1)
{arrSWComponents[arrSWComponents.length]=Component;}
else
{arrHWComponents[arrHWComponents.length]=Component;}}
arrSWComponents=CheckOSAndSetArry(arrSWComponents,strPlatform,strOSMsgWin);strTemp=GetPrintTable(arrSWComponents,"Software",iconOK,iconWarning,iconNotOK,iconUnknown);strTemp+=GetPrintTable(arrHWComponents,"Hardware",iconOK,iconWarning,iconNotOK,iconUnknown);return strTemp;}
function printDependency2DNoUserInfo(arrComponents2D,strOSMsgWin,strPlatform,strBGColor)
{var iIndex;var arrSWComponents=new Array();var arrHWComponents=new Array();var Component;var strPrintTable="";var strTemp;if(strPlatform==null)
{strPlatform="";}
if(strBGColor==null)
{strBGColor="white";}
for(iIndex=0;iIndex<arrComponents2D.length;iIndex++)
{Component=GetComponentPrintData(arrComponents2D,iIndex,"");if(Component.iType==1)
{arrSWComponents[arrSWComponents.length]=Component;}
else
{arrHWComponents[arrHWComponents.length]=Component;}}
arrSWComponents=CheckOSAndSetArry(arrSWComponents,strPlatform,strOSMsgWin);strTemp=GetPrintTableNoUserInfo(arrSWComponents,"Software");strTemp+=GetPrintTableNoUserInfo(arrHWComponents,"Hardware");if(strTemp!="")
{strPrintTable="<table WIDTH='100%' bgcolor="+strBGColor+">";strPrintTable+=strTemp;strPrintTable+="</table>";}
else
{return"";}
return strPrintTable;}
function structPrintComponentData(bValid,bDisplay,strExentName,strPrintName,iType,iStatus,strMinimum,strRecommended,strDetected,strExtention,strUpgradeUrl,strExtraData1,strExtraData2)
{this.bValid=bValid;this.bDisplay=bDisplay
this.strExentName=strExentName;this.strPrintName=strPrintName;this.iType=iType;this.iStatus=iStatus;this.strMinimum=strMinimum;this.strRecommended=strRecommended;this.strDetected=strDetected;this.strExtention=strExtention;this.strUpgradeUrl=strUpgradeUrl;this.strExtraData1=strExtraData1;this.strExtraData2=strExtraData2;}
function getOSNameByCode(osCode,strErrorString)
{codeArray=osCode.split(".");if(codeArray==null||codeArray.legth<3)
{return strErrorString;}
tmp=codeArray[1]+"."+codeArray[2];switch(tmp)
{case"6.0":return"Windows Vista, Windows Server \"Longhorn\"";case"5.2":return"Windows Server 2003, Windows Server 2003 R2";case"5.1":return"Windows XP";case"5.0":return"Windows 2000";case"4.90":return"Windows Me";case"4.10":return"Windows 98";case"4.0":return"Windows 95, Windows NT 4.0";default:return strErrorString;}}
function GetComponentPrintData(arrComponents2D,iIndex,strExetenderInstall)
{var ComponentData=new structPrintComponentData(false,"","","",0,0,"","","","","","");var bRes;ComponentData.bDisplay=true;ComponentData.strExentName=arrComponents2D[iIndex][0];ComponentData.iStatus=arrComponents2D[iIndex][1];ComponentData.strMinimum=arrComponents2D[iIndex][2];ComponentData.strRecommended=arrComponents2D[iIndex][3];ComponentData.strDetected=arrComponents2D[iIndex][4];ComponentData.strExtraData1=arrComponents2D[iIndex][5];ComponentData.strExtraData2=arrComponents2D[iIndex][6];ComponentData.strExtention="";ComponentData.strUpgradeUrl="";ComponentData.bValid=true;switch(ComponentData.strExentName)
{case"DirectX":case"DirectPlay":case"DirectXMedia":ComponentData.strPrintName=ComponentData.strExentName;ComponentData.iType=1;ComponentData.strMinimum=GetSubVersion(ComponentData.strMinimum,1,3);ComponentData.strRecommended=GetSubVersion(ComponentData.strRecommended,1,3);ComponentData.strDetected=GetSubVersion(ComponentData.strDetected,1,3);ComponentData.strUpgradeUrl="http://www.microsoft.com/directx/homeuser/downloads";break;case"OS":if(ComponentData.strMinimum=="")
{ComponentData.bDisplay=false;}
else
{ComponentData.strPrintName="Operating System";ComponentData.strMinimum=getOSNameByCode(ComponentData.strMinimum,"");ComponentData.strRecommended="";ComponentData.strDetected=getOSNameByCode(ComponentData.strDetected,"Unrecognaized");ComponentData.iType=1;}
break;case"QuickTime32":ComponentData.strPrintName=ComponentData.strExentName;ComponentData.iType=1;ComponentData.strMinimum=GetSubVersion(ComponentData.strMinimum,0,1);ComponentData.strRecommended=GetSubVersion(ComponentData.strRecommended,0,1);ComponentData.strDetected=GetSubVersion(ComponentData.strDetected,0,1);ComponentData.strUpgradeUrl="http://www.apple.com/quicktime/download/support/";break;case"Indeo Video":case"Indeo Audio":ComponentData.strPrintName=ComponentData.strExentName;ComponentData.iType=1;ComponentData.strMinimum=GetSubVersion(ComponentData.strMinimum,0,1);ComponentData.strRecommended=GetSubVersion(ComponentData.strRecommended,0,1);ComponentData.strDetected=GetSubVersion(ComponentData.strDetected,0,1);ComponentData.strUpgradeUrl="http://www.ligos.com/index.phtml?&pi=103&n1=products&n2=indeo&n3=download";break;case"Internet Explorer":ComponentData.strPrintName=ComponentData.strExentName;ComponentData.iType=1;ComponentData.strMinimum=GetSubVersion(ComponentData.strMinimum,0,1);ComponentData.strRecommended=GetSubVersion(ComponentData.strRecommended,0,1);ComponentData.strDetected=GetSubVersion(ComponentData.strDetected,0,1);ComponentData.strUpgradeUrl="http://www.microsoft.com/windows/ie/default.htm";break;case"Shock Wave":ComponentData.strPrintName=ComponentData.strExentName;ComponentData.iType=1;ComponentData.strMinimum=GetSubVersion(ComponentData.strMinimum,0,1);ComponentData.strRecommended=GetSubVersion(ComponentData.strRecommended,0,1);ComponentData.strDetected=GetSubVersion(ComponentData.strDetected,0,1);ComponentData.strUpgradeUrl="http://www.shockwave.com";break;case"QuickTime":case"OpenGL":case"MSJet":case"Windows Installer":ComponentData.strPrintName=ComponentData.strExentName;ComponentData.iType=1;ComponentData.strMinimum=GetSubVersion(ComponentData.strMinimum,0,1);ComponentData.strRecommended=GetSubVersion(ComponentData.strRecommended,0,1);ComponentData.strDetected=GetSubVersion(ComponentData.strDetected,0,1);break;case"Client":ComponentData.strPrintName="Free Ride Games Player";ComponentData.iType=1;ComponentData.strUpgradeUrl=strExetenderInstall;break;case"DisplayAdapter":ComponentData.strPrintName=GetDisplayAdapterName(ComponentData.strExtraData1);ComponentData.iType=1;ComponentData.strUpgradeUrl=GetDisplayAdapterUpgradeUrl(ComponentData.strExtraData2);ComponentData.strMinimum=GetSubVersion(ComponentData.strMinimum,0,8);ComponentData.strRecommended=GetSubVersion(ComponentData.strRecommended,0,8);ComponentData.strDetected=GetSubVersion(ComponentData.strDetected,0,8);break;case"CPUSpeed":ComponentData.strPrintName="Processor Speed";ComponentData.iType=2;ComponentData.strExtention="MHz";break;case"RAMPhysical":ComponentData.strPrintName="Memory";ComponentData.iType=2;ComponentData.strExtention="MB";break;case"VideoMem":ComponentData.strPrintName="Video Card Memory";ComponentData.iType=2;ComponentData.strExtention="MB";break;case"SoundCard":ComponentData.strPrintName="Sound Card";ComponentData.iType=2;ComponentData.strMinimum=GetBolean(ComponentData.strMinimum,"Yes","No");ComponentData.strRecommended=GetBolean(ComponentData.strRecommended,"Yes","No");ComponentData.strDetected=GetBolean(ComponentData.strDetected,"Yes","No");break;case"Video3DAcceleration":ComponentData.strPrintName="3D Acceleration";ComponentData.iType=2;ComponentData.strMinimum=GetBolean(ComponentData.strMinimum,"Yes","No");ComponentData.strRecommended=GetBolean(ComponentData.strRecommended,"Yes","No");ComponentData.strDetected=GetBolean(ComponentData.strDetected,"Yes","No");break;case"Joystick":case"Mouse":ComponentData.strPrintName=ComponentData.strExentName;;ComponentData.iType=2;ComponentData.strMinimum=GetBolean(ComponentData.strMinimum,"Yes","No");ComponentData.strRecommended=GetBolean(ComponentData.strRecommended,"Yes","No");ComponentData.strDetected=GetBolean(ComponentData.strDetected,"Yes","No");break;default:ComponentData.bDisplay=false;return ComponentData;break;}
if(ComponentData.strDetected=="")
{ComponentData.strDetected="Unknown";}
return ComponentData;}
function GetDisplayAdapterName(strCardName)
{var str;str="Display Driver";if(strCardName=="")
{return str;}
str+=" ("+strCardName+")";return str;}
function GetDisplayAdapterUpgradeUrl(strVendorId)
{if(strVendorId=="4318")
{return"http://www.nvidia.com/content/drivers/drivers.asp";}
if(strVendorId=="4098")
{return"http://www.ati.com/support/driver.html";}
return"";}
function GetBolean(strOrgValue,strTrue,strFalse)
{if(strOrgValue=="1")
{return strTrue;}
return strFalse;}
function GetSubVersion(strVersion,iStart,iEnd)
{var strSubVersion=""
var iIndex;var arrVersion=strVersion.split(".");var iTemp;if(strVersion=="")
{return"&nbsp;";}
if(iStart<0)
{iStart=0;}
if(iEnd>arrVersion.length-1)
{iEnd=arrVersion.length-1;}
for(iIndex=iStart;iIndex<=iEnd;iIndex++)
{if(iIndex==iStart)
{iTemp=Number(arrVersion[iIndex]);if(isNaN(iTemp))
{iTemp=0;}
strSubVersion+=iTemp.toString();}
else
{strSubVersion+=arrVersion[iIndex];}
strSubVersion+="."}
strSubVersion=strSubVersion.slice(0,strSubVersion.length-1);return strSubVersion;}
function CheckOSAndSetArry(arrSWComponents,strPlatform,strOSMsgWin)
{var iIndex;var Componet=null;var strDetectedOS="";var arrReturn=new Array();var iOSIndex;for(iIndex=0;iIndex<arrSWComponents.length;iIndex++)
{if(arrSWComponents[iIndex].strExentName=="OS")
{iOSIndex=iIndex;Componet=arrSWComponents[iIndex];break;}}
if(Componet==null||Componet.bValid!=true||Componet.strDetected=="")
{return arrSWComponents;}
if(Componet.strDetected.charAt(0)=="1")
{strDetectedOS="9X";}
else if(Componet.strDetected.charAt(0)=="2")
{strDetectedOS="NT";}
else
{return arrSWComponents;}
if(Componet.strMinimum==""&&strPlatform!=""&&strDetectedOS!=strPlatform)
{Componet.iStatus=1;}
return arrSWComponents;}
function GetPrintTable(arrComponents2D,strTitle,iconOK,iconWarning,iconNotOK,iconUnknown)
{var iIndex;var strPrintTable="";var strHeader="";var strTemp;if(arrComponents2D.length==0)
{return"";}
if((!g_bControlInstalled)||(!g_bClientInstalled))
{strHeader="<table class='normalType'><tr><td colspan='5' class='sysReqSectionTitle'>"+strTitle+"</td></tr><tr><td width='170px' class='sysReqTableHeader'>Component</td><td class='sysReqTableHeader' width='90px'>Minimum</td><td class='sysReqTableHeader' width='100px'>Recommended</td></tr>";}
else
{strHeader="<table class='normalType'><tr><td colspan='5' class='sysReqSectionTitle'>"+strTitle+"</td></tr><tr><td align='center' class='sysReqTableHeader'>Status</td><td width='170px' class='sysReqTableHeader'>Component</td><td class='sysReqTableHeader' width='90px'>Minimum</td><td class='sysReqTableHeader' width='100px'>Recommended</td><td class='sysReqTableHeader' width='110px'>Detected</td></tr>";}
for(iIndex=0;iIndex<arrComponents2D.length;iIndex++)
{if(arrComponents2D[iIndex].bValid==false||arrComponents2D[iIndex].bDisplay==false)
{continue;}
strPrintTable+="<tr>";if((g_bControlInstalled)&&(g_bClientInstalled))
{switch(arrComponents2D[iIndex].iStatus)
{case 0:case 2:strTemp=iconWarning;break;case 1:strTemp=iconNotOK;break;case 3:strTemp=iconOK;break;default:strTemp=iconWarning;break;}
strPrintTable+="<td align='center' class='tdcontent'>"+strTemp+"</td>";}
strPrintTable+="<td class='tdcontent'>"+arrComponents2D[iIndex].strPrintName+"</td>";strPrintTable+="<td class='tdcontent'>"+arrComponents2D[iIndex].strMinimum+"</td>";strPrintTable+="<td class='tdcontent'>"+arrComponents2D[iIndex].strRecommended+"</td>";if((g_bControlInstalled)&&(g_bClientInstalled))
{strPrintTable+="<td class='tdcontent'>"+arrComponents2D[iIndex].strDetected;if(arrComponents2D[iIndex].strDetected!="Unknown")
{strPrintTable+=arrComponents2D[iIndex].strExtention;}
strPrintTable+="</td>";}
strPrintTable+="</tr>";}
if(strPrintTable=="")
{return"";}
strPrintTable=strHeader+strPrintTable+"</table>";return strPrintTable;}
function GetPrintTableNoUserInfo(arrComponents2D,strTitle)
{var iIndex;var strPrintTable=""
var strHeader="";var strTemp;if(arrComponents2D.length==0)
{return"";}
strHeader="<tr><td><b>"+strTitle+"</b></td></tr><tr><td><u>Component</u></td><td><u>Minimum</u></td><td><u>Recommended</u></td></tr>";for(iIndex=0;iIndex<arrComponents2D.length;iIndex++)
{if(arrComponents2D[iIndex].bValid==false||arrComponents2D[iIndex].bDisplay==false)
{continue;}
strPrintTable+="<td>"+arrComponents2D[iIndex].strPrintName+"</td>";strPrintTable+="<td>"+arrComponents2D[iIndex].strMinimum+arrComponents2D[iIndex].strExtention+"</td>";strPrintTable+="<td>"+arrComponents2D[iIndex].strRecommended+arrComponents2D[iIndex].strExtention+"</td>";strPrintTable+="</tr>";}
if(strPrintTable=="")
{return"";}
strPrintTable=strHeader+strPrintTable;strPrintTable+="<td></td>";return strPrintTable;}
function PopUpWin(strPlatform,strUserOsDetect,strOSMsgWin)
{var strUserOs="";var strPage="";var strName="name";var strWinprops="";if(strUserOsDetect.charAt(0)=="1")
{strUserOs="xp";}
else
{strUserOs="me";}
strPage=strOSMsgWin+"?UserOsFlag="+strUserOs+"&platform="+strPlatform+"&UserOsDetect="+strUserOsDetect
strWinprops="width=490,height=190,scrollbars=yes,location=no,menubar=yes,resizable=yes,toolbar=no,menubar=no";win=window.open(strPage,strName,strWinprops)
if(parseInt(navigator.appVersion)>=4){win.window.focus();}}
function PrintComponentData(Component)
{var strReturn="";strReturn="bValid: "+Component.bValid;strReturn+=", bDisplay: "+Component.bDisplay;strReturn+=", strExentName: "+Component.strExentName;strReturn+=", strPrintName: "+Component.strPrintName;strReturn+=", iType: "+Component.iType;strReturn+=", iStatus: "+Component.iStatus;strReturn+=", strMinimum: "+Component.strMinimum;strReturn+=", strRecommended: "+Component.strRecommended;strReturn+=", strDetected: "+Component.strDetected;strReturn+=", strExtention: "+Component.strExtention;strReturn+=", strUpgradeUrl: "+Component.strUpgradeUrl;return strReturn;}
function GetSystemCompatibilityTitle()
{if((!g_bControlInstalled)||(!g_bClientInstalled))
{return"";}
else
{return"System Compatibility:";}}
function GetSystemCompatibilityString(strRedirectURL,arrSwHw,strGameOs,strUserOS)
{var strRes;var iTrafficLightColor=Exent.Web.Beta.Defines.SystemCompatible.Pass;var strText="";if(!g_bControlInstalled)
{strRes="";return strRes;}
if(!g_bClientInstalled)
{strRes="";return strRes;}
if(strGameOs!=strUserOS)
{strRes="<img src='"+g_strImageServerUrl+"/sysNotPass.gif' width='15' height='15' alt='Game will not run properly on your system '>";return strRes;}
for(var i=0;i<arrSwHw.length;i++)
{if(arrSwHw[i][0]=="DisplayAdapter")
{continue;}
else if(arrSwHw[i][1]==Exent.Web.Beta.Defines.SystemCompatible.NotPass)
{iTrafficLightColor=Exent.Web.Beta.Defines.SystemCompatible.NotPass;break;}
else if((iTrafficLightColor==Exent.Web.Beta.Defines.SystemCompatible.Pass)&&(arrSwHw[i][1]!=Exent.Web.Beta.Defines.SystemCompatible.Pass))
{iTrafficLightColor=arrSwHw[i][1];}
else if((iTrafficLightColor==Exent.Web.Beta.Defines.SystemCompatible.AlmostPass)&&(arrSwHw[i][1]==Exent.Web.Beta.Defines.SystemCompatible.Unknown))
{iTrafficLightColor=Exent.Web.Beta.Defines.SystemCompatible.Unknown;}}
strRes="";strText="";switch(iTrafficLightColor)
{case Exent.Web.Beta.Defines.SystemCompatible.NotPass:strRes="<img src='"+g_strImageServerUrl+"/sysNotPass.gif' width='15' height='15' alt='Game will not run properly on your system'>";break;case Exent.Web.Beta.Defines.SystemCompatible.Unknown:strRes="<img src='"+g_strImageServerUrl+"/sysUnknown.gif' width='15' height='15' alt='Insufficient system info'>";break;case Exent.Web.Beta.Defines.SystemCompatible.AlmostPass:strRes="<img src='"+g_strImageServerUrl+"/sysAlmostPass.gif' width='15' height='15' alt='Not optimal performance'>";break;case Exent.Web.Beta.Defines.SystemCompatible.Pass:strRes="<img src='"+g_strImageServerUrl+"/sysPass.gif' width='15' height='15' alt='Game will run on your system'>";break;}
if(strRedirectURL=="")
{strRes+=strText;}
else
{strRes+="<a href="+strRedirectURL+">"+strText+"</a>";}
return strRes;}
function GetDependencyString(arrSwHw,strUserOS,bClientInstalled,strRequirementsTitle)
{var strRet;var strDependencyTable;strRet=(printDependency2D(arrSwHw,g_ContextPath+"/main/osMsg.jsp",g_ContextPath+"EXETENDER_LOCATION","<img src='"+g_strImageServerUrl+"/sysPass.gif' width='17' height='15'alt=''>","<img src='"+g_strImageServerUrl+"/sysAlmostPass.gif' width='17' height='15'alt=''>","<img src='"+g_strImageServerUrl+"/sysNotPass.gif' width='17' height='15'alt=''>","<img src='"+g_strImageServerUrl+"/sysAlmostPass.gif' width='17' height='15'alt=''>",strUserOS,"white"));return strRet;}
function GetSwHwArray(strDBDependencies,g_PCDependencies)
{var arrSwHw=compareSWHWdependency(strDBDependencies,g_PCDependencies,0,"");return arrSwHw;}
function checkSystemDependencies(strMasterId,strMasterName,strTrafficLight)
{if(g_bIsOnlinePageLayout==true)
{return false;}
var strFromSystemIncompatibleMessageCookie=getSessionCookie(Exent.Web.Beta.Defines.Cookies.FromSystemIncompatibleMessage);if(strFromSystemIncompatibleMessageCookie=="")
{if(strTrafficLight.indexOf('sysNotPass')>1)
{if("1"==bBlockRedTitle)
{OpenRedTitleMessage(strMasterId,strMasterName);return true;}
else
{OpenIncompatibleMessage(strMasterId,strMasterName,"true");return true;}}
else
if(strTrafficLight.indexOf('sysAlmostPass')>1)
{var dontAskSystemIncompatibleMessage=getPersistentCookie(g_strProviderID+"_"+Exent.Web.Beta.Defines.Cookies.SystemIncompatible);if(dontAskSystemIncompatibleMessage!="true")
{OpenIncompatibleMessage(strMasterId,strMasterName,"false");return true;}}}
return false;}
<!-- from play_game.js -->

var g_strPCDependencies="";var DOWNLOAD_BUTTON_Template="Download %GameName% Game  | %GenreName% Games";var PLAY_BUTTON_Template="Play %GameName% Game  | %GenreName% Games";var DOWNLOADING_BUTTON_Template="Downloading %GameName% Game  | %GenreName% Games";var RUNNING_BUTTON_Template="Downloading %GameName% Game  | %GenreName% Games";var DOWNLOAD_BUTTON_NO_GENRE_Template="Download %GameName% Game";var PLAY_BUTTON_NO_GENRE_Template="Play %GameName% Game ";var DOWNLOADING_BUTTON_NO_GENRE_Template="Downloading %GameName% Game ";var RUNNING_BUTTON_NO_GENRE_Template="Downloading %GameName% Game ";var gameGenre="";function refreshPlayButtons(strProviderId,genre)
{if("all games"!=genre.toLowerCase()&&"search results"!=genre.toLowerCase())
{gameGenre=genre;}
var strXMLreadyToPlayGames=GPlayerApi_GetGamesIdsList(strProviderId,false,false,true,false,false,false,false);setPlayButtonsStates(strXMLreadyToPlayGames,Exent.Web.Beta.Defines.PlayButtonStatus.Play);var strXMLInQueueGames=GPlayerApi_GetGamesIdsList(strProviderId,false,true,false,false,false,false,false);setPlayButtonsStates(strXMLInQueueGames,Exent.Web.Beta.Defines.PlayButtonStatus.InDownloadQueue);var strXMLDownloadingGames=GPlayerApi_GetGamesIdsList(strProviderId,true,true,false,false,false,false,false);setPlayButtonsStates(strXMLDownloadingGames,Exent.Web.Beta.Defines.PlayButtonStatus.Downloading);var strXMLRunningGames=GPlayerApi_GetGamesIdsList(strProviderId,true,false,false,true,false,false,false);setPlayButtonsStates(strXMLRunningGames,Exent.Web.Beta.Defines.PlayButtonStatus.Running);}
function setPlayButtonsStates(strXmlResponse,strButton)
{try
{var xmlDoc=GetXMLDocument();xmlDoc.async=false;xmlDoc.loadXML(strXmlResponse);var strMasterId="";var node1;var node=xmlDoc.selectSingleNode("GetGamesIdsListResponse");for(var i=0;i<node.childNodes.length;i++)
{node1=node.childNodes[i];strMasterId=node1.getAttribute("Id");refreshPlayButton(strMasterId,strButton);}}
catch(e)
{}}
function refreshPlayButton(strMasterid)
{refreshPlayButton(strMasterid,getPlayButton(strMasterid));}
function refreshPlayButton(strMasterid,strButton,strMasterName)
{var strButtonId="btnPlay"+strMasterid;var btnPlayElement=document.getElementById(strButtonId);if(btnPlayElement==null)
{return;}
if(strButton==null||strButton=="")
{strButton=getPlayButton(strMasterid);}
var strToolTip="Download";if((typeof strMasterName=="undefined")||(strMasterName==""))
{strMasterName=btnPlayElement.name;}
if(strButton==Exent.Web.Beta.Defines.PlayButtonStatus.Download)
{btnPlayElement.src=g_strImageServerUrl+"/"+g_downloadButton;if(gameGenre!=""){btnPlayElement.title=DOWNLOAD_BUTTON_Template.replace("%GameName%",strMasterName).replace("%GenreName%",gameGenre);}else{btnPlayElement.title=DOWNLOAD_BUTTON_NO_GENRE_Template.replace("%GameName%",strMasterName);}}
else if(strButton==Exent.Web.Beta.Defines.PlayButtonStatus.Play)
{btnPlayElement.src=g_strImageServerUrl+"/"+g_playButton;if(gameGenre!=""){btnPlayElement.title=PLAY_BUTTON_Template.replace("%GameName%",strMasterName).replace("%GenreName%",gameGenre);}else{btnPlayElement.title=PLAY_BUTTON_NO_GENRE_Template.replace("%GameName%",strMasterName);}}
else if(strButton==Exent.Web.Beta.Defines.PlayButtonStatus.Downloading)
{btnPlayElement.src=g_strImageServerUrl+"/"+g_downloadingButton;if(gameGenre!=""){btnPlayElement.title=DOWNLOADING_BUTTON_Template.replace("%GameName%",strMasterName).replace("%GenreName%",gameGenre);}else{btnPlayElement.title=DOWNLOADING_BUTTON_NO_GENRE_Template.replace("%GameName%",strMasterName);}}
else if(strButton==Exent.Web.Beta.Defines.PlayButtonStatus.Running)
{btnPlayElement.src=g_strImageServerUrl+"/"+g_runningButton;if(gameGenre!=""){btnPlayElement.title=RUNNING_BUTTON_Template.replace("%GameName%",strMasterName).replace("%GenreName%",gameGenre);}else{btnPlayElement.title=RUNNING_BUTTON_NO_GENRE_Template.replace("%GameName%",strMasterName);}}
else if(strButton==Exent.Web.Beta.Defines.PlayButtonStatus.InDownloadQueue)
{btnPlayElement.src=g_strImageServerUrl+"/"+g_inqueueButton;if(gameGenre!=""){btnPlayElement.title=DOWNLOADING_BUTTON_Template.replace("%GameName%",strMasterName).replace("%GenreName%",gameGenre);}else{btnPlayElement.title=DOWNLOADING_BUTTON_NO_GENRE_Template.replace("%GameName%",strMasterName);}}}
function structDirections(strDirections,strDirectionsErrCode,strDirectionsErrString)
{this.strDirections=strDirections;this.strDirectionsErrCode=strDirectionsErrCode;this.strDirectionsErrString=strDirectionsErrString;}
function DownloadAndPlayGame(strMasterId,blnForcePlay,sDirections)
{var strPlayerAPIError;if(isValidObject(sDirections)&&sDirections!="")
{strPlayerAPIError=GPlayerApi_PrepareGameForPlay(strMasterId,g_strProviderID,0,"","",sDirections.strDirections,"",true,false,0);}
else
{if(g_strPCDependencies=="")
{g_strPCDependencies=GPlayerApi_GetPCDependences();g_strPCDependencies=Base64.encode(g_strPCDependencies);}
strPlayerAPIError=GPlayerApi_PrepareGameForPlay(strMasterId,g_strProviderID,1,g_strDirectionUrl,"","","",true,false,0,1,g_strPCDependencies);}
return strPlayerAPIError;}
function AddGameToDownloadList(strMasterId,sDirections,bDoRestore)
{var strPlayerAPIError;if(isValidObject(sDirections)&&sDirections!="")
{strPlayerAPIError=GPlayerApi_AddGameToDownloadList(strMasterId,g_strProviderID,sDirections.strDirections,false,-1,g_strDirectionUrl);}
else
{strPlayerAPIError=GPlayerApi_AddGameToDownloadList(strMasterId,g_strProviderID,"",false,-1,g_strDirectionUrl);}
if("0"!=strPlayerAPIError)
{return strPlayerAPIError;}
else
{refreshPlayButton(strMasterId,Exent.Web.Beta.Defines.PlayButtonStatus.InDownloadQueue);}
strPlayerAPIError=GPlayerApi_ResumeDownloadList(g_strProviderID);if((bDoRestore)&&("0"==strPlayerAPIError))
{GPlayerApi_RestorePlayer("SubsDownloads");}
return strPlayerAPIError;}
function PlayGame(strMasterId,strMasterName,strCmdLine,arrTrafficLight,strInstallationPackagePath,bDoRestore,bEmailCollectionInd)
{PlayGameNew(strMasterId,strMasterName,strCmdLine,arrTrafficLight,strInstallationPackagePath,true,bDoRestore,bEmailCollectionInd);}
function PlayGameNew(strMasterId,strMasterName,strCmdLine,arrTrafficLight,strInstallationPackagePath,bCheckClientVersion,bDoRestore,bEmailCollectionInd)
{if(g_strUserOS=="9X")
{HandleError("1002",strMasterId);return;}
var strActiveGameId=GPlayerApi_GetActiveGameId();if(strMasterId==strActiveGameId)
{return;}
var playButtonAction=getPlayButton(strMasterId);var trackValue=getTrackingEvent(strMasterId);var strTrafficLight="";for(var i=0;i<arrTrafficLight.length;i++)
{if(arrTrafficLight[i][0]==strMasterId)
{strTrafficLight=arrTrafficLight[i][1];}}
var strURL="";var strErrorCode=canRunApplication(strMasterId);if("0"!=strErrorCode)
{HandleError(strErrorCode,strMasterId);return;}
if(true==checkSystemDependencies(strMasterId,strMasterName,strTrafficLight))
{return;}
if(playButtonAction==Exent.Web.Beta.Defines.PlayButtonStatus.Download)
{if(true==checkEmailCollection(strMasterId,bEmailCollectionInd))
{return;}}
if(!g_bControlInstalled)
{performConversion(Exent.Web.Beta.Defines.Tracking.ConversionName.FirstTimeExperience);setSessionCookie("strGameIdAction",strMasterId);setSessionCookie("strCmdLine",strCmdLine);setSessionCookie("strRunGameStatus","wait_to_player_installation");InstallEXEtenderEx(strInstallationPackagePath);return;}
if(bCheckClientVersion)
{if(!g_bClientInstalled)
{setSessionCookie("strGameIdAction",strMasterId);setSessionCookie("strCmdLine",strCmdLine);setSessionCookie("strRunGameStatus","wait_to_player_installation");InstallEXEtenderEx(strInstallationPackagePath);return;}}
deleteSessionCookie(Exent.Web.Beta.Defines.Cookies.FromSystemIncompatibleMessage);var sDirections;var bAddToDownloadList=true;if(playButtonAction==Exent.Web.Beta.Defines.PlayButtonStatus.Play)
{bAddToDownloadList=false;}
var strPlayerAPIError="0";if(playButtonAction==Exent.Web.Beta.Defines.PlayButtonStatus.Play)
{strPlayerAPIError=DownloadAndPlayGame(strMasterId,true,sDirections);}
else if(playButtonAction==Exent.Web.Beta.Defines.PlayButtonStatus.Running)
{}
else
{strPlayerAPIError=AddGameToDownloadList(strMasterId,sDirections,bDoRestore);}
if("0"!=strPlayerAPIError)
{WriteToLog(strPlayerAPIError);HandleError(strPlayerAPIError,strMasterId);}}
function OpenEmailCollectionForm(strMasterId)
{var url=g_strBaseURL+"/do/game?partner="+g_strCurrentPartnerName+"&game="+strMasterId+"&action=emailCollection";if(isIE)
{showModalWindow(url,500,251);}
else
{showModalWindow(url,500,247);}}
function showMessageBox(iconUrl,messageTitle,message)
{var windowUrl=g_strBaseURL+"/do/general?partner="+g_strCurrentPartnerName+"&jspName=messageBox";windowUrl+="&iconUrl="+iconUrl;windowUrl+="&messageTitle="+escape(messageTitle);windowUrl+="&message="+escape(message);if(isIE)
{showModalWindow(windowUrl,350,195);}
else
{showModalWindow(windowUrl,350,195);}}
function OpenRedTitleMessage(strMasterId,strMasterName)
{var convertedMessage=strRedTitleMessage.replace(/%TOKEN_GAME_NAME%/g,strMasterName);convertedMessage=convertedMessage.replace(/%TOKEN_GAME_PAGE_URL%/g,'"'+g_strBaseURL+"/do/game?partner="+g_strCurrentPartnerName+"&game="+strMasterId+"#SystemRequirements"+'"');showMessageBox(g_strImageServerUrl+"/products/"+strMasterId+"/boxshot.jpg","Oops...",convertedMessage);}
function OpenIncompatibleMessage(strMasterId,strMasterName,isRedTitle)
{var windowUrl=g_strBaseURL+"/do/general?partner="+g_strCurrentPartnerName+"&jspName=SystemIncompatibleMessage&contentId="+strMasterId+"&contentName="+escape(strMasterName)+"&isRedTitle="+isRedTitle;if(isIE)
{showModalWindow(windowUrl,450,275);}
else
{showModalWindow(windowUrl,454,275);}}
function GetDirections(strMasterId,bAddToDownloadList,trackValue)
{var sDirections;var strCompnentsParameter="";try
{var strMuid=GPlayerApi_GetPCMuid();if(!bAddToDownloadList)
{if(g_strPCDependencies=="")
{g_strPCDependencies=GPlayerApi_GetPCDependences();}
if(g_strPCDependencies!="")
{strCompnentsParameter="&components="+g_strPCDependencies;}}
var strURL=g_ContextPath+"/do/mediaRGMX?partner="+g_strCurrentPartnerName+"&appId="+strMasterId+"&runIndex=0&muid="+strMuid+"&bAddToDownloadList="+bAddToDownloadList+strCompnentsParameter;strURL=addTrackingParamsToUrl(strURL,trackValue);var xmlDoc=xmlDocLoadURLSync(strURL);var nodeDirections=xmlDoc.getElementsByTagName("Directions");if(null==nodeDirections.item(0))
{sDirections=new structDirections("","","Wrong Directions");return sDirections;}
var nodeErrorCode=xmlDoc.getElementsByTagName("ErrorCode");var nodeErrorString=xmlDoc.getElementsByTagName("ErrorString");if("0"!=nodeErrorCode.item(0).text)
{sDirections=new structDirections("",nodeErrorCode.item(0).text,"Error: Code = "+nodeErrorCode.item(0).text+", Message = "+nodeErrorString.item(0).text);return sDirections;}
var nodeBuffer=xmlDoc.getElementsByTagName("Buffer");if(null==nodeBuffer.item(0))
{sDirections=new structDirections("","","Wrong Directions");return sDirections;}
sDirections=new structDirections(nodeBuffer.item(0).text,nodeErrorCode.item(0).text,nodeErrorString.item(0).text);return sDirections;}
catch(e)
{sDirections=new structDirections("","","Exception in GetDirections() function");return sDirections;}}
function getPlayButton(strGameId)
{if(!g_bClientInstalled||!GPlayerApi_IsActiveXInstalled(g_strActiveXVersion))
{return Exent.Web.Beta.Defines.PlayButtonStatus.Download;}
var currentGame=GetGPlayerGameInfo(strGameId);if("1"==currentGame.strActive&&"0"!=currentGame.strDownloadPriority)
{return Exent.Web.Beta.Defines.PlayButtonStatus.Downloading;}
if("0"<currentGame.strDownloadPriority)
{return Exent.Web.Beta.Defines.PlayButtonStatus.InDownloadQueue;}
if("1"==currentGame.strGameRunning)
{return Exent.Web.Beta.Defines.PlayButtonStatus.Running;}
if("0"==currentGame.strPlayerAPIErrCode&&"1"==currentGame.strReadyToUse)
{return Exent.Web.Beta.Defines.PlayButtonStatus.Play;}
return Exent.Web.Beta.Defines.PlayButtonStatus.Download;}
function canRunApplication(strMasterId)
{var strErrorCode="0";try
{var strURL=g_ContextPath+"/do/directionsSupplier?partner="+g_strCurrentPartnerName+"&callType=canRunApplication&appId="+strMasterId+"&runIndex=0";var xmlDoc=xmlDocLoadURLSync(strURL);var nodeErrorCode=xmlDoc.getElementsByTagName("ErrorCode");if("0"!=nodeErrorCode.item(0).text)
{strErrorCode=nodeErrorCode.item(0).text;return strErrorCode;}
return strErrorCode;}
catch(e)
{return"-1";}}
function checkEmailCollection(strMasterId,bEmailCollectionInd)
{if("1"!=iEmailCollectionLevel)
{var strCookieName=g_strProviderID+"_"+Exent.Web.Beta.Defines.Cookies.EmailCollection;var dontAsk=getPersistentCookie(strCookieName);if(dontAsk!="true")
{if(!isValidObject(bEmailCollectionInd)||bEmailCollectionInd==false)
{OpenEmailCollectionForm(strMasterId);return true;}}}
return false;}
<!-- from base64.js -->

var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;input=Base64._utf8_encode(input);while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}
output=output+
this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+
this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4);}
return output;},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=this._keyStr.indexOf(input.charAt(i++));enc2=this._keyStr.indexOf(input.charAt(i++));enc3=this._keyStr.indexOf(input.charAt(i++));enc4=this._keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2);}
if(enc4!=64){output=output+String.fromCharCode(chr3);}}
output=Base64._utf8_decode(output);return output;},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c);}
else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128);}
else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128);}}
return utftext;},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}
else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}
else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}
return string;}}