var CODEBASE            = '/CaveOnline.cab';
var HOMEURL             = '/';
var CLSID               = 'C7936030-390C-429E-9E90-F3984F5AD3BF';
var ObjectID            = 'CaveOnline';
var ComponentName       = ObjectID + '.Launcher';

var VersionMajor        = 0;
var VersionMinor        = 0;
var VersionBuild        = 0;
var VersionExtend       = 3;


function axloop(obj) {
  if (!obj || obj.readyState < 4)
    return;

  if ( obj.object ) 
    top.location.href = HOMEURL;
}

function showObject() {
  var d = document.getElementById('activex');

  d.outerHTML = 
    '<object classid="CLSID:' + CLSID + '" id="' + ObjectID + '"' +
    ' width=0 height=0 hspace=0 vspace=0 viewastext' +
    ' onreadystatechange="axloop(this)"' +
    ' codebase="' + CODEBASE + '#version=' +
    VersionMajor + ',' + VersionMinor + ',' + VersionBuild + ',' + VersionExtend + '"></object>';
}

function _MoveURL(url, msg) {
  try {
    var RealURL = eval(url);
    top.location.href = RealURL;
  } catch(e) {
    if ((null != msg) && ("" != msg))
      alert(msg);
  }
}

function _BlankURL(url) {
  try {
    var RealURL = eval(url);
  } catch(e) {
  }
}

function _chkActivexObject() {
  try {
    if (null == window.CaveOnline)  {
      showObject();
    }

    var WebStarter = new ActiveXObject(ComponentName);
    if (null != WebStarter) {
      return 0;
    } else {
      return -1;
    }
  } catch ( e ) {
    return -1;
  }
}

function _DynamicExecute(idx, other, url) {
  try {
    var WebStarter = new ActiveXObject(ComponentName);
    WebStarter.RunAsAdministrator();
    WebStarter.Launch(idx, other, url);
    _BlankURL("BlankURL");
    _MoveURL("ExecuteURL", "");
  } catch( e ) {
    _MoveURL("InstallURL", "Internet Explorer¿ActiveX¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿");
  }
}

function Execute(idx, other, url) {
  if (0 != _chkActivexObject()) {
    _MoveURL( "InstallURL", "Internet Explorer¿ActiveX¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿" );
    return;
  }

  try {
    window.CaveOnline.RunAsAdministrator();
    window.CaveOnline.Launch(idx, other, url);
    _BlankURL("BlankURL");
    _MoveURL("ExecuteURL", "");
  } catch(e) {
    setTimeout("_DynamicExecute(\""+idx+"\",\""+other+"\",\""+url+"\")", 2000);
  }
}

function Install(bAutoStart, idx, other, url) {
  var IsUpdate = _chkActivexObject();

  if (0 == IsUpdate) {
    if (true == bAutoStart) {
      Execute(idx, other, url);
    } else {
      _MoveURL("ReturnURL", "");
    }
  } else if (1 == IsUpdate) {
    setTimeout("Install("+bAutoStart+",\""+idx+"\",\""+other+"\",\""+url+"\")", 2000);
  } else if (-1 == IsUpdate) {
    setTimeout("location.reload(true)", 15000);
  }
}
