主题: [原创]alexa 工具条全部js源代码 浏览人数:1470
[这个贴子最后由cee999在 2005/07/28 09:49pm 第 1 次编辑]
使用,请把‘〈’、‘〉’替换为‘<’、‘>’。
〈!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"〉
〈html〉
〈head〉
〈OBJECT STYLE="display:none;" ID="BrowserProxy" CLASSID="CLSID:69A72A8A-84ED-4a75-8CE7-263DBEF3E5D3"〉〈/OBJECT〉
〈title〉Bootstrap〈/title〉
〈!-- Alexa 7.0 Binary Bootstrap script --〉
〈!-- Copyright 1999-2003 Alexa Internet, Inc. All Rights Reserved. --〉
〈script language="Javascript" type="text/javascript"〉
〈!--
// how often to check for update from server
//
var CHECK_UPDATE_INTERVAL = 8640000;
// url to use when checking for network connection
//
var TEST_CONNECT_FILE = "http://client.alexa.com/holiday/script/images/pixel.gif";
// start file in resource dll (iframed)
//
var LOCAL_START_FILE = "res://AlxRes.dll/CHTML/index.html";
// start file to use when loading remote
//
var REMOTE_START_FILE = "http://client.alexa.com/holiday/script/index.html";
// Registry keys
//
var REG_UPDATE_KEY = "lastupdate"; /* name of key to get last update time from. */
var REG_TOGGLE_REMOTE = "loadremote"; /* name of key to get remote load toggle from. */
var REG_AMZNID = "amzn_id"; /* name of key to retrieve amazon ID from */
var REG_BRAND = "brand"; /* name of key to get branding flag (bool) from. */
var REG_ASSOCINFOREADY = "brandDataReady"; /* name of key to flag when branding data has been retrieved. */
var g_bCheckedBrand = false;
var g_sAmznID = "";
// set up error handling
//
try {
window.onerror = null;
window.onerror = window_onerror;
} catch(ex) {}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function getReg(sKey)
{
return BrowserProxy.System.ReadClientState(sKey);
}
//--〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function dout(sMsg)
{
BrowserProxy.OutputDebugMessage(sMsg + "/n");
}
// error handler
//
function window_onerror(sMsg, sUrl, nLine) {
try {
var aErrorData=new Array();
var sScope='';
var sImage="http://log.alexa.com/error.gif?clientversion=7.0&";
var sDelimeter="";
var oImage=new Image();
var i;
// error was caused by browser event?
//
if (window.event) {
window.event.returnValue=true;
}
if (typeof(window_onerror.caller) == 'function') {
// name of function where error occured was passed
//
sScope=stripFunctionName(window_onerror.caller.toString());
} else {
// global call - don't worry about scope
//
sScope='(global call)';
}
try {
// capture browserproxy info for error reporting
//
if (( BrowserProxy ) && ( typeof(BrowserProxy) == 'object' ) && ( typeof(BrowserProxy.host) == 'object' )) {
aErrorData['bp']=escape(BrowserProxy.Version);
aErrorData['url']=escape(BrowserProxy.Host.Location);
// if there was an url loaded, get that so we have some error context
//
if(!aErrorData['url']) {
aErrorData['url']="unknown";
}
}
} catch(ex) {
// browserproxy wasn't able to load.
//
aErrorData['bp']='failed';
}
try {
// calling object derived from JSObj - grab the object's OID.
if ( window_onerror.caller.oID ) {
aErrorData['id']=escape( window_onerror.caller.oID );
}
} catch(ex) {
}
// append error message, scope, and line number (if available)
//
aErrorData['errorMessage']=escape(sMsg);
aErrorData['scope']=escape(sScope);
aErrorData['line']=nLine;
var ePage = "http://client.alexa.com/holiday/script/fatal.html?";
// cat the string together into a regular querystring
//
BrowserProxy.OutputDebugMessage("Script error occurred:");
for (i in aErrorData) {
sImage += sDelimeter+i+"="+aErrorData[i];
ePage+=sDelimeter+i+"="+aErrorData[i];
sDelimeter="&";
BrowserProxy.OutputDebugmessage(i + ": " + aErrorData[i] + "/n");
}
// fire a message back to log the error
//
oImage.src=sImage;
// if we were still loading, check for an update
//
if (g_bLoading) {
if (window.parent) {
try {
// block here, since we can't do much else
window.parent.document.parentWindow.setTimeout("checkUpdate(true)",1);
} catch(ex) {
// no parent??
}
}
}
// send user to fatal page.
location.href=ePage;
} catch(ex) {}
return true;
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
/* base objects - this rarely, if ever, changes. */
function JSAll() {
this.objects = new Object();
this.last_error = new Array();
this.unique = new Unique();
this.register = JSAll_register;
this.clobberUID = JSAll_clobberUID;
this.clobberGID = JSAll_clobberGID;
function JSAll_register(oObject) {
if (!oObject) {
return '';
}
if (!this.objects[oObject.oType]) {
this.objects[oObject.oType] = new Array();
}
regUID = this.unique.get(oObject.oType);
if (oObject.oID!='') {
for (var si in this.objects) {
for (var sObject in this.objects[si]) {
if (this.objects[si][sObject].oID==oObject.oID) {
delete this.objects[si][sObject];
this.objects[si][regUID]=oObject;
}
}
}
}
oObject.oID = '';
this.objects[oObject.oType][regUID]=oObject;
return regUID;
}
function JSAll_clobberUID(oObject) {
for (var si in this.objects) {
for (var sObject in this.objects[si]) {
if (this.objects[si][sObject]!=null) {
if (this.objects[si][sObject].oID==oObject.oID) {
delete this.objects[si][sObject];
}
}
}
}
}
function JSAll_clobberGID(oObject) {
for (var si in this.objects) {
for (var sObject in this.objects[oObject.oType]) {
this.clobberUID(oObject);
}
}
}
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function Unique() {
var o = new Object();
o.m_nVal = new Number(0);
o.m_nUnique = Unique.nUnique++;
o.get = Unique_get;
return o;
function Unique_get(sType) {
var myChar=0;
var rVal = new String();
var newVal = new String();
if (eval(sType + ".ID")) {
rVal = eval(sType + ".ID");
} else {
for (i = 0; i 〈 sType.length; i++) {
myChar = sType.charCodeAt(i)-65;
newVal += myChar.toString(16);
}
if (newVal.length 〉 24) {
newVal = newVal.substring(0,24);
}
rVal = newVal;
eval(sType + ".ID = '" + rVal +"'");
rVal += String(65+(this.m_nVal%26)).toString(16)+String(this.m_nUnique).toString(16)+"_"+String(this.m_nVal++).toString(16);
}
return rVal;
}
}
Unique.nUnique = 1;
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function JSObj() {
this.oType = new String("JSObj");
this.oID = new String();
this.last_error = new String();
this.create = JSObj_create;
this.destroy = JSObj_destroy;
this.isRegistered = JSObj_isRegistered;
function JSObj_create() {
this.oID = jsAll.register(this);
}
function JSObj_destroy() {
jsAll.clobberUID(this);
}
function JSObj_isRegistered(sEvent) {
if (et) {
return et.check(sEvent,this);
}
}
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function XML()
{
var o = new JSObj();
o.oType="XML";
o.bIsXMLHTTP = false;
try {
o._xmlobj = new ActiveXObject("Microsoft.XMLDOM");
} catch (ex) {
try {
o._xmlobj = new ActiveXObject("Msxml2.DOMDocument");
o.bIsXMLHTTP = true;
} catch(ex) {
}
} finally {
o.err = true;
}
if (o._xmlobj)
{
o._xmlobj.validateOnParse = false;
o._xmlobj.resolveExternals = false;
o._xmlobj.preserveWhiteSpace = false;
}
o.selectSingleNode = XML_selectSingleNode;
o.create();
return o;
function XML_selectSingleNode(sXPath)
{
return this._xmlobj.selectSingleNode(sXPath);
}
}
function aborted()
{
return;
}
//--〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function AlxXML()
{
var o = new XML();
o.oType = "AlxXML";
try {
o._bpxml = BrowserProxy.System.GetAlxXML();
o._bpxml.async = true;
} catch(ex) {
}
o.create();
o.load = AlxXML_load;
o.ready = AlxXML_ready;
o.abort = AlxXML_abort;
o.readyImpl = AlxXML_readyImpl_virtual;
o.setEventHandlers = AlxXML_setEventHandlers;
o._destroy = o.destroy;
o.destroy = AlxXML_destroy;
return o;
function AlxXML_destroy()
{
if (this._bpxml)
{
this._bpxml.abort();
this._bpxml.OnReadyStateChange = aborted;
}
this._destroy();
}
function AlxXML_setEventHandlers()
{
// spoof event handler
var sFName = this.oType+this.oID+"_onReadyStateChange";
eval("function "+sFName+"() { "+getObjRef(this)+".ready(); }");
this._bpxml.OnReadyStateChange = eval(sFName);
}
function AlxXML_readyImpl_virtual()
{
return true;
}
function AlxXML_load(sUrl)
{
this.m_bLoading = true;
this._bpxml.load(sUrl);
}
function AlxXML_ready()
{
if (this._bpxml.ReadyState == 4)
{
this._xmlobj.loadXML(this._bpxml.XML);
if (this._parser)
{
this._parser.destroy();
this._parser = null;
}
this._parser = new XMLParser(this._xmlobj);
this.readyImpl();
return true;
}
}
function AlxXML_abort()
{
this._bpxml.abort();
}
}
//--〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function XMLParser(oXMLDOM) {
var o = new JSObj();
o.oType = "XMLParser";
o.XMLDOM = oXMLDOM;
o.get = XMLParser_get;
o.transform = XMLParser_transform;
o.create();
return o;
function XMLParser_get(sXPath) {
var oNodeList = null;
var oNode = null;
var aReturn = new Array();
var oItems = null;
var oItem = null;
var oAttributes = null;
var oAttribute = null;
var nItems = 0;
if ( !this.XMLDOM.parsed ) {
return null;
}
oNodeList = this.XMLDOM.selectNodes(sXPath);
if ( oNodeList.length == 0 ) {
return '';
}
oItems = new Enumerator(oNodeList);
for (oItems.moveFirst(); !oItems.atEnd(); oItems.moveNext()) {
oItem = oItems.item();
if ( oItem.attributes ) {
oAttributes = new Enumerator(oItem.attributes);
aReturn[nItems] = new Object();
for (oAttributes.moveFirst(); !oAttributes.atEnd(); oAttributes.moveNext()) {
oAttribute = oAttributes.item();
aReturn[nItems][oAttribute.name.toLowerCase()] = oAttribute.value;
}
} else {
// $$$$ doesn't quite work. In the case that text nodes also have attributes.
return oItem.text;
}
nItems++;
}
return aReturn;
}
function XMLParser_transform(oStyleXMLDOM) {
if ( oStyleXMLDOM.xml == '' ) {
return '';
}
var sResult = this.XMLDOM.transformNode(oStyleXMLDOM);
return sResult;
}
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
var jsAll = new JSAll();
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function ConnectionDependentExec(sOkCmd, sErrCmd, nRetryCount, nRetryInterval) {
var o = new JSObj();
o.oType = "ConnectionDependentExec";
o.sCmd = sOkCmd;
o.sErrCmd = sErrCmd;
o.retryCount = nRetryCount;
o.retryInterval = nRetryInterval;
o.pTimeout = null;
o.bReady = false;
o.testConnect = ConnectionDependentExec_testConnect;
o.onError = ConnectionDependentExec_onError;
o.onReadyStateChange = ConnectionDependentExec_onReadyStateChange;
o._destroy = o.destroy;
o.destroy = ConnectionDependentExec_destroy;
o.testFile = TEST_CONNECT_FILE;
o.create();
return o;
function ConnectionDependentExec_testConnect() {
// make a dummy request to the server.
this.oImage = new Image();
this.oImage.id = "img_"+this.oID;
this.oImage.onerror = ConnectionDependentExec_onError;
this.oImage.onreadystatechange = ConnectionDependentExec_onReadyStateChange;
this.oImage.src = this.testFile;
}
function ConnectionDependentExec_onError() {
if (!this.oID) {
jsAll.objects.ConnectionDependentExec[String(this.id).replace("img_","")].onError();
} else {
if (this.retryCount != 0) {
this.oImage = null;
this.pTimeout = setTimeout("jsAll.objects.ConnectionDependentExec['"+this.oID+"'].testConnect()",this.retryInterval);
this.retryCount = this.retryCount-1;
return true;
}
if (this.sErrCmd != "") {
eval(this.sErrCmd);
}
this.bReady = true;
BrowserProxy.OutputDebugMessage("calling error condition/n");
return false;
}
}
function ConnectionDependentExec_onReadyStateChange() {
if ((!this.oID) && (this.readyState == "complete")) {
// $$$ pass to CDE native.
jsAll.objects.ConnectionDependentExec[String(this.id).replace("img_","")].onReadyStateChange();
} else {
if (this.pTimeout !== null) {
ClearTimeout(this.pTimeout);
}
this.pTimeout = null;
if (this.sCmd != '') {
eval(this.sCmd);
}
BrowserProxy.OutputDebugMessage("readystate complete./n");
this.bReady = true;
}
}
function ConnectionDependentExec_destroy() {
this.oImage = null;
this._destroy();
}
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function ConnectionDependentExecEx(sCmd, sErrCmd, nRetryCount, nRetryInterval, sFilename) {
var o = new ConnectionDependentExec(sCmd, sErrCmd, nRetryCount, nRetryInterval);
o.oType = "ConnectionDependentExecEx";
o.testFile = sFilename;
o.create();
return o;
}
function BrandingCDE(sCallback)
{
var o = new ConnectionDependentExec("", "", 5, 5);
o.sCmd = getObjRef(o)+".checkBranding()";
o.sErrCmd = "void(0)";
o.checkBranding = BrandingCDE_checkBranding;
o.callback = sCallback;
o.handleFeed = BrandingCDE_handleFeed;
o.xml = null;
return o;
function BrandingCDE_checkBranding()
{
this.xml = new AlxXML();
this.xml.setEventHandlers();
this.xml.readyImpl = BrandingCDE_ready;
this.xml.callback = this.callback;
this.xml.handleFeed = this.handleFeed;
this.xml.load("http://cgi.alexa.com/associates/cgi-bin/getassocinfo.cgi?amzn_id="+g_sAmznID);
}
function BrandingCDE_ready()
{
this.handleFeed();
if (this.callback) {
eval(this.callback);
}
}
function BrandingCDE_handleFeed() {
// DevNotify: Scope change.. runs in this.xml scope of BrandingCDE prototype
try {
var sError = this._parser.get("/alexa/error/@type");
if (sError == "param") {
// clear entries
//
var aKeys = new Array("amzn_name", "amzn_url", "partner_searchname", "partner_searchroot", "brand", "brandimgw", "brandDataReady");
for (var i in aKeys) {
BrowserProxy.System.SaveClientState(aKeys[i], "");
}
return;
} else if (sError == "mysql") {
return;
}
var aData = this._parser.get("/alexa/assoc");
if (aData)
{
if (aData[0])
{
aData = aData[0];
var loc_amzn_id = BrowserProxy.System.ReadClientState("amzn_id");
BrowserProxy.System.SaveClientState("amzn_id", ((aData['id']) ? unescape(aData['id']) : loc_amzn_id));
BrowserProxy.System.SaveClientState("", ((aData['id']) ? unescape(aData['id']) : loc_amzn_id));
BrowserProxy.System.SaveClientState("amzn_name", ((aData['name']) ? unescape(aData['name']) : ""));
BrowserProxy.System.SaveClientState("amzn_url", ((aData['url']) ? unescape(aData['url']) : ""));
BrowserProxy.System.SaveClientState("partner_searchname", ((aData['searchname']) ? unescape(aData['searchname']) : ""));
BrowserProxy.System.SaveClientState("partner_searchprefix", ((aData['searchprefix']) ? unescape(aData['searchprefix']) : ""));
BrowserProxy.System.SaveClientState("partner_searchroot", ((aData['searchroot']) ? unescape(aData['searchroot']) : ""));
BrowserProxy.System.SaveClientState("brand", ((aData['brand'] == 0) ? "false" : "true"));
BrowserProxy.System.SaveClientState("brandimgw", ((aData['width']) ? unescape(aData['width']) : ""));
BrowserProxy.System.SaveClientState("brandDataReady", "true");
}
}
return;
} catch (ex) {
blue();
dout("error: " + ex.message);
}
}
}
function getObjRef(oObj)
{
var sType = oObj.oType;
var sID = oObj.oID;
return "jsAll.objects['"+sType+"']['"+sID+"']";
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
// support functions (global)
var g_oUpdateXMLDom = null;
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function loadFrame(sSrc) {
var oFrame = document.all['ifTB'];
oFrame.scrolling = "no";
oFrame.frameborder = 0;
document.all['ifTB'].src = sSrc;
}
var g_bForce = false;
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function checkUpdate(bForce) {
if (bForce) {
g_bForce = true;
}
dout("g_bForce == " + g_bForce);
// confirm that BrowserProxy exists, make request and assign return method
//
g_oUpdateXMLDom = BrowserProxy.System.GetAlxXML();
g_oUpdateXMLDom.async = true;
g_oUpdateXMLDom.validateonparse = false;
g_oUpdateXMLDom.onReadyStateChange = checkUpdate_onReadyStateChange;
var sCurrentBinVersion = BrowserProxy.Version;
try {
var sCurrentResVersion = BrowserProxy.ResourceVersion;
} catch(ex) {
var sCurrentResVersion = "";
}
if (bForce) {
var br = BrowserProxy.Update.RunUpdate("all","http://client.alexa.com/holiday/update/","","");
} else {
dout("Update loading XML");
var sUrl = "http://client.alexa.com/holiday/update.xml?seed="+Math.floor((Math.random()*32768))+"&binver="+sCurrentBinVersion+"&resver="+sCurrentResVersion;
g_oUpdateXMLDom.load(sUrl);
}
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function checkUpdate_onReadyStateChange() {
var sType ="";
if (g_oUpdateXMLDom.readyState == 4) {
// parse update xml and figure out what to do.
var omsXMLDOM = new ActiveXObject("Microsoft.XMLDOM");
omsXMLDOM.loadXML(g_oUpdateXMLDom.xml);
dout("loaded XML " + g_oUpdateXMLDom.xml);
var oxpContainer = new XMLParser(omsXMLDOM);
// check for version string
var oUpdate = oxpContainer.get("/alexa/update/version");
if (oUpdate) {
if (g_bForce == true) {
sType = "res";
}
var sRegVer = BrowserProxy.ResourceVersion;
if (sRegVer != oxpContainer.get("/alexa/update/version/@script")) {
sType = "res";
}
var sRegVer = BrowserProxy.Version;
if (sRegVer != oxpContainer.get("/alexa/update/version/@binary")) {
sType = "all";
}
if ((sType) && (sType != "")) {
// get md5s to pass in
var sScriptMD5 = oxpContainer.get("/alexa/update/version/@scriptmd5");
var sBinaryMD5 = oxpContainer.get("/alexa/update/version/@binarymd5");
var sUrl = "http://client.alexa.com/holiday/update/";
var bResult = BrowserProxy.Update.RunUpdate(sType,sUrl,sScriptMD5,sBinaryMD5);
if (bResult == true) {
var oRegKeys= oxpContainer.get("/alexa/update/version/registry/node");
for (var si in oRegKeys) {
switch (oRegKeys['type']) {
case "add":
BrowserProxy.System.SaveClientState(oRegKeys['valuename'],oRegKeys['valuevalue']);
break;
case "remove":
BrowserProxy.System.SaveClientState(oRegKeys['valuename'],"");
break;
}
}
}
}
}
}
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function deferUpdate() {
BrowserProxy.System.SaveClientState("lastupdate","0");
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function window_onload(nContinue) {
switch (nContinue)
{
case 0:
dout("Entering runlevel 0");
nContinue++;
// check for visibility
//
if (BrowserProxy.Visible == false)
{
setTimeout("if (BrowserProxy.Visible == false) { window.location.href = 'about:blank'; }", 300);
}
// check for server connection
// assign src to iFrame from alxres
var bCheck = false;
g_sAmznID = getReg(REG_AMZNID);
bInfoReady = (getReg(REG_ASSOCINFOREADY) == "false") || (getReg(REG_ASSOCINFOREADY) == "");
if ((g_sAmznID != "") && (bInfoReady))
{
// goto runlevel 1
} else {
if ((g_sAmznID != "") && (parseInt(new Date().getTime()) - getReg(REG_UPDATE_KEY) 〉= CHECK_UPDATE_INTERVAL)) {
// check update - runlevel 1.
} else {
// skip runlevel 1,2
nContinue+=2;
}
}
window_onload(nContinue);
break;
case 1:
nContinue++;
dout("in window_onload : 2");
// check brandimage
//
var nLastUpdate = getReg(REG_UPDATE_KEY);
nLastUpdate = (nLastUpdate == "") ? 0 : nLastUpdate;
if (parseInt(new Date().getTime()) - nLastUpdate 〉= CHECK_UPDATE_INTERVAL) {
brandReady();
break;
}
var bImageOkay = BrowserProxy.Update.CheckBrandImage(g_sAmznID);
if (!bImageOkay) {
brandReady();
break;
}
case 2:
nContinue++;
dout("in window_onload : 1");
// need to block on call to ocdeBrand.testConnect() so that the toolbar has a branded image to load
//
// have associate ID but no extended info.
//
g_bCheckedBrand = true;
var ocdeBrand = new BrandingCDE("window_onload(3)");
ocdeBrand.testConnect();
break;
case 3:
dout("in window_onload : 3");
var nTime = new Date().getTime();
var nLastUpdate = getReg(REG_UPDATE_KEY);
if (nLastUpdate == "")
{
BrowserProxy.System.SaveClientState(REG_UPDATE_KEY, nTime);
}
nLastUpdate = (nLastUpdate == "") ? nTime : nLastUpdate;
if ((nLastUpdate) && (nTime - nLastUpdate 〉= CHECK_UPDATE_INTERVAL)) {
BrowserProxy.System.SaveClientState(REG_UPDATE_KEY,nTime);
// non-blocking call into deferred update runner
//
setTimeout("window_onload_deferred(false)",20000);
}
case 4:
dout("in window_onload : 4");
var bValid = (BrowserProxy.Valid == 1);
var bToggleRemote = (getReg(REG_TOGGLE_REMOTE) == "true");
if (bValid) {
if (!bToggleRemote) {
// for debugging purposes, we can require a remote load
// but in normal circumstances we've got a valid dll. Proceed with local load.
// and check for connection to Resource DLL
loadLocal();
}
}
if ((!bValid) || (bToggleRemote)) {
// did not auth this time, so it may mean that we have an unclean resource DLL.
// Load script from server and check for an update.
loadRemote();
}
break;
}
return;
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function brandReady(ocdeBrand) {
// check associate's ID
BrowserProxy.Update.FetchBrandImage(g_sAmznID);
//alert(g_sAmznID);
window_onload(2);
}
function getObjectRef(oObj)
{
return "jsAll.objects."+oObj.oType+"['"+oObj.oID+"']";
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function loadLocal(bFound) {
if (!bFound) {
var sCmd ="loadLocal(true);";
var sErrCmd ="loadRemote();";
var ocdeLoad = new ConnectionDependentExecEx(sCmd, sErrCmd,1,10, "res://AlxRes.dll/IMAGE/pixel.gif");
ocdeLoad.testConnect();
return true;
}
loadFrame(LOCAL_START_FILE);
return true;
}
function loadRemote() {
var sCmd = "loadFrame('"+REMOTE_START_FILE+"')";
var ocdeLoad = new ConnectionDependentExec(sCmd,"err_failed()",5,20000);
ocdeLoad.testConnect();
// in every case where we load remote (except where bToggleRemote is set),
// we have a bad resource dll.
if (getReg(REG_TOGGLE_REMOTE) != "true") {
setTimeout("window_onload_deferred(true)",20000);
}
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function window_onload_deferred(bForce) {
var ocdeUpdate = new ConnectionDependentExec("checkUpdate("+bForce+")","deferUpdate()",5,10000);
ocdeUpdate.testConnect();
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function err_failed() {
}
// --〉
〈/script〉
〈script language="Javascript" type="text/javascript"〉
〈!--
function window_onunload()
{
for (var si in jsAll.objects.JSObj)
{
jsAll.objects.JSObj[si].destroy();
jsAll.objects.JSObj[si] = null;
delete jsAll.objects.JSObj[si];
}
}
// --〉
〈/script〉
〈/head〉
〈body οnlοad="window_onload(0);" οnunlοad="window_onunload();" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" style="border:0;margin:0;overflow:hidden;background-color:menu;"〉
〈iframe name="ifTB" width="100%" height="100%" scrolling="no" border="0" topmargin="0" leftmargin="0" src="about:blank" style="scrolling:no;border:0;margin:0;overflow:hidden;background-color:menu;"〉
〈body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" style="border:0;margin:0;overflow:hidden;background-color:menu;"/〉
〈/iframe〉
〈/body〉
〈/html〉[DISABLELBCODE]