// Javascript Utility library with functions for:
// --Browser detection functions, version, shockwave/flash/java plug-ins
// --Platform detection for operating system

// NOTE: depends on activex.vbs for IE detection functions
function stripslashes(str) {
  str=str.replace(/\\'/g,'\'');
  str=str.replace(/\\"/g,'"');
  str=str.replace(/\\0/g,'\0');
  str=str.replace(/\\\\/g,'\\');
  return str;
}

function getFlashInlineInstallerPath()
{
  return "http://www.mybarbie.biz/templates/barbie/asset/flash_express_install.swf";
}
/*
This functions handle flash and shockwave detection for Plugins and ActiveX controls.
For activeX detection the detection_axdetect.vbs script should also be included in the page.
*/
function detection_shockwaveVersion()
{
  return (browser_ie() && !browser_mac())
  ? detection_shockwaveAxVersion()
  : detection_shockwaveNsVersion();
}

function detection_flashVersion()
{
  return (browser_ie() && !browser_mac())
  ? detection_flashAxVersion()
  : detection_flashNsVersion();
}

function detection_shockwaveNsVersion()
{
  // this function returns a floating point value which should
  // be the version of the Shockwave plugin or 0.0 this function
  // only returns useful information if called from Netscape or
  // IE Mac 5.0+

  // Set these local variables to avoid the Netscape 4 crashing bug.
  var thearray = navigator.plugins
  var arraylen = thearray.length

  // Step through each plugin in the array.
  for (var i=0; i < arraylen; i++)
  {
    // Set these local variables to avoid the Netscape 4 crashing bug.
    var theplugin = thearray[i]
    var thename   = theplugin.name
    var thedesc   = theplugin.description

    // If the plugin is Shockwave...
    if (thename.indexOf("Shockwave") != -1 && thename.indexOf("Director") != -1)
    {
      var versionString = thedesc.substring(thedesc.indexOf("version ") + 8);

      if (versionString.indexOf(".") > 0)
      {
        var versionMajor = versionString.substring(0,versionString.indexOf("."));
        var versionMinor = versionString.substring(versionString.indexOf(".") + 1);

        if (versionMinor.indexOf(".") > 0)
        {
          versionMinor = versionMinor.substring(0,versionString.indexOf("."))
          + versionMinor.substring(versionMinor.indexOf(".") + 1)
        }

        return parseFloat(versionMajor + "." + versionMinor);
      }

      else return parseFloat(versionString);
    }
  }

  return 0.0;
}

//***************************
// Netscape detection,
// returns the version of Shockwave plugin found or 0.0

function detection_flashNsVersion()
{
  // this function returns a floating point value which should be the version of the Shockwave plugin or 0.0
  // this function only returns useful information if called from Netscape or IE Mac 5.0+

  // Set these local variables to avoid the Netscape 4 crashing bug.
  var thearray = navigator.plugins
  var arraylen = thearray.length

  // Step through each plugin in the array.
  for (var i=0; i < arraylen; i++) {
    // Set these local variables to avoid the Netscape 4 crashing bug.
    theplugin = thearray[i]
    thename   = theplugin.name
    thedesc   = theplugin.description

    // If the plugin is Flash...
    if (thename.indexOf("Shockwave") != -1 && thename.indexOf("Flash") != -1)
    {
      var versionString = thedesc.substring(thedesc.indexOf("Flash ") + 6);

      // Look for an " r".  Whatever's after the "r" is the minor version. For
      // example, "Flash 4.0 r12" is minor release 12 of Flash 4.
      var versionLoc = versionString.indexOf(" r");

      if (versionLoc != -1)
      {
        // If there is an "r", then everything before the " r" is the major version...
        var versionMajor = versionString.substring(0,versionLoc);

        // ...and everything after is the minor version.
        var versionMinor = parseInt(versionString.substring(versionLoc + 2));

        // pad with zeroes
        if (versionMinor < 10) versionMajor += "0";

        // Format the final version string as x.xyy where x.x is the major version
        // and yy is the minor release version.

        return parseFloat(versionMajor + versionMinor);
      }
      else return parseFloat(versionString);
    }
  }

  return 0.0;
}

//***************************
// For detecting the ActiveX of shockwave for ie win.
// Requires a vbscript function be included on the page
// to do the actual checking returns version found or 0.0

function detection_shockwaveAxVersion()
{
  // This function returns a floating point value which should be the version
  // of the Shockwave control or 0.0 this function should only be called from
  // Internet Explorer for Windows loop backwards through the versions until
  // we get a bite
  for (var i=8;i>0;i--) {
    var versionString = VBGetShockwaveVersion(i);
    // if we get 1.0 we assume it is actually 6.0 or less
    if (versionString != "0.0") return (versionString == "1.0" ? 6.0 : parseFloat(versionString));
  }
  return 0.0;
}

function detection_flashAxVersion()
{
  // This function returns a floating point value which should
  // be the version of the Shockwave control or 0.0.
  // This function should only be called from Internet Explorer
  // for Windows.

  // loop backwards through the versions until we get a bite
  for (var i=8;i>0;i--)
  {
    var versionNum = VBGetFlashVersion(i);
    if (versionNum != 0)
    {
      var versionMajor = Math.floor(versionNum / 65536);
      var versionMinor = versionNum % 65536;
      var versionMiddle = ".";
      for (var j=100;i>5;i/=10)
      {
        if (versionMinor < j) versionMiddle += "0";
      }
      return parseFloat(versionMajor + versionMiddle + versionMinor);
    }
  }
  return 0.0;
}

// ****************************
// Java detection
function detection_JavaEnabled() {

  return navigator.javaEnabled();
}

// ************************************************************************
// Browser detection functions
function browser_getVersion(inUserAgent)
{
  if (!inUserAgent) inUserAgent = navigator.userAgent;

  if (inUserAgent.indexOf("MSIE ") != -1)
    return "IE" + parseFloat(inUserAgent.substring(inUserAgent.indexOf("MSIE ") + 5));
  if (inUserAgent.indexOf("Netscape6/") != -1)
    return "N" + parseFloat(inUserAgent.substring(inUserAgent.indexOf("Netscape6/") + 10));
  if (inUserAgent.indexOf("Mozilla/") != -1)
    return "M" + parseFloat(inUserAgent.substring(inUserAgent.indexOf("Mozilla/") + 8));

  return 0;
}

function browser_getPlatform(agent)
{
  if (!agent) {
    agent = navigator.userAgent;
  }
  var platform = 'unknown'
  if      (agent.indexOf('Win') != -1)   {
    platform = 'win';
  }
  else if (agent.indexOf('Mac') != -1)   {
    platform = 'mac';
  }
  else if (agent.indexOf('IRIX') != -1)  {
    platform = 'irix';
  }
  else if (agent.indexOf('Linux') != -1) {
    platform = 'linux';
  }
  else if (agent.indexOf('BSD') != -1)   {
    platform = 'bsd';
  }
  return platform;
}

//UNITY RELATED FUNCTIONS

function detectUnityWebPlayer()
{
  var tInstalled = false;
  if(navigator.appVersion.indexOf("MSIE") != -1 && navigator.appVersion.toLowerCase().indexOf("win") != -1)
  {
    tInstalled = DetectUnityWebPlayerActiveX();
  }
  else
  {
    if(navigator.mimeTypes && navigator.mimeTypes["application/vnd.unity"])
    {
      if(navigator.mimeTypes["application/vnd.unity"].enabledPlugin && navigator.plugins && navigator.plugins["Unity Player"])
      {
        tInstalled = true;
      }
    }
  }
  return tInstalled;
}

function getUnityInstallerPath()
{
  var tDownloadURL = "";
  var hasXpi = navigator.userAgent.toLowerCase().indexOf( "firefox" ) != -1;

  // Use standalone installer
  if(1)
  {
    if(navigator.platform == "MacIntel")
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/webplayer-i386.dmg";
    else if(navigator.platform == "MacPPC")
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/webplayer-ppc.dmg";
    else if(navigator.platform.toLowerCase().indexOf("win") != -1)
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayer.exe";
    return tDownloadURL;
  }
  // Use XPI installer
  else
  {
    if(navigator.platform == "MacIntel")
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayerOSX.xpi";
    else if(navigator.platform == "MacPPC")
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayerOSX.xpi";
    else if(navigator.platform.toLowerCase().indexOf("win") != -1)
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayerWin32.xpi";
    return tDownloadURL;
  }
}

// END UNITY FUNCTIONS

/* PRINT FLASH TAG */
function PrintGame(containerId, src, width, height, fileid ,params,filetype,plugin)
{
  var type, bgcolors;

  if(src.indexOf(".swf") != -1 && filetype == 1)
    type = "FLASH";
  else if((src.indexOf(".dcr") != -1 || src.indexOf(".dir") != -1) && filetype == 2 )
    type = "SHOCKWAVE";
  else if(src.indexOf(".unity3d") != -1 && filetype == 3)
    type = "UNITY";
  else if(filetype == 6)
    type = "IFRAME";
  else if(filetype == 5)
    type = "CUSTOM";
  //the options param contains two booleans, hasMenu and isOpaque.  It is delimited by | as hasMenu|isOpaque
  bgcolors = "#91e3ff";


  switch(type)
  {
    case "FLASH":
      printFlashGame(src,containerId,bgcolors,width,height,params);
      break;

    case "SHOCKWAVE":
      printShockwaveGame(src,containerId,width,height,bgcolors,params);
      break;

    case "UNITY":
      printUnityGame(params,width,height,src,containerId);
      break;

    case "IFRAME":
      printIFrameGame(containerId,width,height,fileid,plugin);
      break;

    case "CUSTOM":
      printCustom(containerId,src,plugin);
      break;

    default:
      printError(containerId);
  }
}

function printFlashGame(src,containerId,bgcolors,width,height,swparams)
{
  if(detection_flashVersion() != 0){
    var flashvars = false;
    var params = {
      menu: "false",
      bgcolor: bgcolors
    };
    if(swparams != "undefined") {
      params['flashvars'] = swparams.split('flashvars=')[1];
      var wparams = swparams.split('&flashvars=')[0];
      var ps = wparams.split('&');
      for(var i = 0; i < ps.length; i++)
      {
        var key = ps[i].split("=")[0];
        params[key] = ps[i].split("=")[1];
      }
    }
    var attributes = {
      id: "gameobject",
      name: "gameobject"
    };
    if(src.indexOf('://') == -1){
      src = '/files/file/' + src;
    }
    swfobject.embedSWF(src, containerId.split('#')[1], width, height, "9.0.0", getFlashInlineInstallerPath() , flashvars, params, attributes);
  } else {
    var installurl = (!browser_ie() && browser_mac()) ? "http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_osx_ub.dmg" : "http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player.exe";
    var installerHTML = '<div id="gameobject"><div class="flash_alert" style="margin-top:130px">In order to play this game you need to have the Flash Player installed.<br/></br>Please click the link below to install the plugin.</div>';
    installerHTML += '<div style="margin-top:20px;" align="center" id="UnityPrompt">';

    installerHTML += '</div>';

    installerHTML += '<a href="'+ installurl +'" _target="_blank"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" border="0"/></a>';
    installerHTML += '</div>';

    installerHTML += '<div class="flash_alert" style="margin-top:20px">After completing the install please refresh the page to play the game.</span></div>';

    $(containerId).html ( installerHTML );
    $(containerId).css("visibility" , "visible");
  }
}

function printShockwaveGame(src,containerId,width,height,bgcolor,swparams)
{
  if(detection_shockwaveVersion() != 0){
    var flashvars = false;
    if(swparams != "undefined") {
      alert(swparams);
      flashvars = new Array();
      flashvars['flashvars'] = swparams.split('flashvars=')[1];
      var wparams = swparams.split('&flashvars=')[0];
      var ps = wparams.split("&");
      for(var i = 0; i < ps.length; i++)
      {
        var key = ps[i].split("=")[0];
        flashvars[key] = ps[i].split("=")[1];
      }
    }
    if(src.indexOf('://') == -1){
      src = '/files/file/' + src;
    }
    var version = detection_shockwaveVersion();
    //if(hasMenu)
    var swfRemoteStr = "swSaveEnabled=\'false\' swVolume=\'true\' swRestart=\'false\' swPausePlay=\'false\' swFastForward=\'false\' swContextMenu=\'true\'";
    // else
    //   swfRemoteStr = "swSaveEnabled=\'false\' swVolume=\'true\' swRestart=\'false\' swPausePlay=\'false\' swFastForward=\'false\' swContextMenu=\'false\'";

    var objectTag = '<object id="gameobject" classid="clsid:166B1BCA-3F9C-11CF-8075-444553540000" type="application/x-director" codebase="http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=' + version + '" width="' + width + '" height="' + height + '">';
    objectTag += '<param name="SRC" value="' + src + '" />';
    objectTag += '<param name="PlayerVersion" value="' + version + '">';
    objectTag += '<param name="BGCOLOR" value="' + bgcolor + '" />';

    //param names need to be uppercase for Skyworks
    for(key in flashvars)
      objectTag += '<param name="' + key.toUpperCase() + '" value="' + flashvars[key] + '" />';

    objectTag += '<param name="SWSTRETCHSTYLE" value="none" />';
    objectTag += '<param name="SWREMOTE" value="' + swfRemoteStr + '"/>';
    objectTag += '<embed id="gameembed" src="' +  src + '" PlayerVersion="' + version + '" bgColor="' + bgcolor + '" width="' + width + '" height="' + height + '" swStretchStyle="fill" ';

    for(key in flashvars)
      objectTag += key.toUpperCase() + '="' + flashvars[key] + '" ';

    objectTag += 'swRemote="' + swfRemoteStr + '" type="application/x-director" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveDirector"></embed>';
    objectTag += '</object>';

    $(containerId).html ( objectTag );
    $(containerId).css("visibility" , "visible");

    if(navigator.userAgent.indexOf("Gecko") != -1)
      window.location = "#";
  } else { // prompt to install shockwave
    var installurl = (!browser_ie() && browser_mac()) ? "http://fpdownload.macromedia.com/get/shockwave/default/english/macosx/latest/Shockwave_Installer_Slim.dmg" : "http://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/latest/Shockwave_Installer_Slim.exe";
    var installerHTML = '<div id="gameobject"><div class="flash_alert" style="margin-top:130px">In order to play this game you need to have the Shockwave Player installed.<br/></br>Please click the link below to install the plugin.</div>';
    installerHTML += '<div style="margin-top:20px;" align="center" id="UnityPrompt">';

    installerHTML += '</div>';

    installerHTML += '<a href="'+ installurl +'" _target="_blank"><img src="http://www.adobe.com/images/shared/download_buttons/get_adobe_shockwave_player.png" border="0"/></a>';
    installerHTML += '</div>';

    installerHTML += '<div class="flash_alert" style="margin-top:20px">After completing the install please refresh the page to play the game.</span></div>';
    $(containerId).html (installerHTML);
    $(containerId).css("visibility" , "visible");
  }
}

function printUnityGame(swparams,width,height,src,containerId)
{
  //check if the user has the Unity player installed
  if(detectUnityWebPlayer())
  {
    var unityParameters = "";
    for(key in swparams)
      unityParameters += key + '=' + swparams[key] + '&';

    var objectTag = '<object id="gameobject" classid="clsid:444785F1-DE89-4295-863A-D46C3A781394" width="' + width + '" height="' + height + '">';
    objectTag += '<param name="src" value="' + src + '?' + unityParameters + '"/>';
    objectTag += '<param name="disableContextMenu" value="true" />';
    objectTag += '<embed id="gameembed" src="' + src + '?' + unityParameters + '" width="' + width + '" height="' + height + '" type="application/vnd.unity" pluginspage="http://www.unity3d.com/unity-web-player-2.x" disableContextMenu="true" />';
    objectTag += '</object>';

    $(containerId).html (objectTag);
    $(containerId).css("visibility" , "visible");

    if(navigator.userAgent.indexOf("Gecko") != -1)
      window.location = "#";
  }
  else	//prompt the user to install the Unity Player
  {
    var installerPath = getUnityInstallerPath();
    var installerHTML = '<div id="gameobject"><div class="flash_alert" style="margin-top:130px">In order to play this game you need to have the Unity Web Player installed.<br/></br>Please click the link below to install the plugin.</div>';
    installerHTML += '<div style="margin-top:20px;" align="center" id="UnityPrompt">';

    if(installerPath != "")
    {
      installerHTML += '<a href="' + installerPath + '"><img src="http://webplayer.unity3d.com/installation/getunity.png" border="0"/></a>';
      installerHTML += '</div>';
      installerHTML += '<iframe name="InstallerFrame" height="0" width="0" frameborder="0"></iframe>';
    }
    else
    {
      installerHTML += '<a href="javascript: window.open("http://www.unity3d.com/unity-web-player-2.x");"><img src="http://webplayer.unity3d.com/installation/getunity.png" border="0"/></a>';
      installerHTML += '</div>';
    }

    installerHTML += '<div class="flash_alert" style="margin-top:20px">After completing the install please refresh the page to play the game.</span></div>';
    $(containerId).html( installerHTML );
    $(containerId).css("visibility" , "visible");

  }
}

function printIFrameGame(containerId,width,height,fileid,plugin)
{
  var objectTag = '<iframe id="gameobject" src="/nohotlink/iframe.php?joc=' + fileid + '" width="' + width + '" height="' + height + '" scrolling="no" frameborder="0"></iframe>';
  $(containerId).html( objectTag );
  
 switch(plugin){
    case 1:
      if(detection_flashVersion() == 0)
      {
        var installurl = (!browser_ie() && browser_mac()) ? "http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_osx_ub.dmg" : "http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player.exe";
        var installerHTML = '<div id="gameobject"><div class="flash_alert" style="margin-top:130px">In order to play this game you need to have the Flash Player installed.<br/></br>Please click the link below to install the plugin.</div>';
        installerHTML += '<div style="margin-top:20px;" align="center" id="UnityPrompt">';

        installerHTML += '</div>';

        installerHTML += '<a href="'+ installurl +'" _target="_blank"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" border="0"/></a>';
        installerHTML += '</div>';

        installerHTML += '<div class="flash_alert" style="margin-top:20px">After completing the install please refresh the page to play the game.</span></div>';

        $(containerId).html ( installerHTML );
        $(containerId).css("visibility" , "visible");
      }
      break;
    case 2:
      if(detection_shockwaveVersion() == 0)
      { // prompt to install shockwave
        installurl = (!browser_ie() && browser_mac()) ? "http://fpdownload.macromedia.com/get/shockwave/default/english/macosx/latest/Shockwave_Installer_Slim.dmg" : "http://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/latest/Shockwave_Installer_Slim.exe";
        installerHTML = '<div id="gameobject"><div class="flash_alert" style="margin-top:130px">In order to play this game you need to have the Shockwave Player installed.<br/></br>Please click the link below to install the plugin.</div>';
        installerHTML += '<div style="margin-top:20px;" align="center" id="UnityPrompt">';

        installerHTML += '</div>';

        installerHTML += '<a href="'+ installurl +'" _target="_blank"><img src="http://www.adobe.com/images/shared/download_buttons/get_adobe_shockwave_player.png" border="0"/></a>';
        installerHTML += '</div>';

        installerHTML += '<div class="flash_alert" style="margin-top:20px">After completing the install please refresh the page to play the game.</span></div>';
        $(containerId).html (installerHTML);
        $(containerId).css("visibility" , "visible");
      }
      break;
    case 3:
      if(!detectUnityWebPlayer())
      {
        var installerPath = getUnityInstallerPath();
        installerHTML = '<div id="gameobject"><div class="flash_alert" style="margin-top:130px">In order to play this game you need to have the Unity Web Player installed.<br/></br>Please click the link below to install the plugin.</div>';
        installerHTML += '<div style="margin-top:20px;" align="center" id="UnityPrompt">';

        if(installerPath != "")
        {
          installerHTML += '<a href="' + installerPath + '"><img src="http://webplayer.unity3d.com/installation/getunity.png" border="0"/></a>';
          installerHTML += '</div>';
          installerHTML += '<iframe name="InstallerFrame" height="0" width="0" frameborder="0"></iframe>';
        }
        else
        {
          installerHTML += '<a href="javascript: window.open("http://www.unity3d.com/unity-web-player-2.x");"><img src="http://webplayer.unity3d.com/installation/getunity.png" border="0"/></a>';
          installerHTML += '</div>';
        }

        installerHTML += '<div class="flash_alert" style="margin-top:20px">After completing the install please refresh the page to play the game.</span></div>';
        $(containerId).html( installerHTML );
        $(containerId).css("visibility" , "visible");

      }
      break;

  }
  
  $(containerId).css("visibility" , "visible");

  if(navigator.userAgent.indexOf("Gecko") != -1)
    window.location = "#";
}

function printCustom(containerId,src,plugin){
  var objectTag = stripslashes(src);

  //Damn that IE crap -> we have to do this the old fashioned way for IE to work
  var divId = containerId.split("#")[1];
  document.getElementById(divId).innerHTML = objectTag;

  switch(plugin){
    case 1:
      if(detection_flashVersion() == 0)
      {
        var installurl = (!browser_ie() && browser_mac()) ? "http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_osx_ub.dmg" : "http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player.exe";
        var installerHTML = '<div id="gameobject"><div class="flash_alert" style="margin-top:130px">In order to play this game you need to have the Flash Player installed.<br/></br>Please click the link below to install the plugin.</div>';
        installerHTML += '<div style="margin-top:20px;" align="center" id="UnityPrompt">';

        installerHTML += '</div>';

        installerHTML += '<a href="'+ installurl +'" _target="_blank"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" border="0"/></a>';
        installerHTML += '</div>';

        installerHTML += '<div class="flash_alert" style="margin-top:20px">After completing the install please refresh the page to play the game.</span></div>';

        $(containerId).html ( installerHTML );
        $(containerId).css("visibility" , "visible");
      }
      break;
    case 2:
      if(detection_shockwaveVersion() == 0)
      { // prompt to install shockwave
        installurl = (!browser_ie() && browser_mac()) ? "http://fpdownload.macromedia.com/get/shockwave/default/english/macosx/latest/Shockwave_Installer_Slim.dmg" : "http://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/latest/Shockwave_Installer_Slim.exe";
        installerHTML = '<div id="gameobject"><div class="flash_alert" style="margin-top:130px">In order to play this game you need to have the Shockwave Player installed.<br/></br>Please click the link below to install the plugin.</div>';
        installerHTML += '<div style="margin-top:20px;" align="center" id="UnityPrompt">';

        installerHTML += '</div>';

        installerHTML += '<a href="'+ installurl +'" _target="_blank"><img src="http://www.adobe.com/images/shared/download_buttons/get_adobe_shockwave_player.png" border="0"/></a>';
        installerHTML += '</div>';

        installerHTML += '<div class="flash_alert" style="margin-top:20px">After completing the install please refresh the page to play the game.</span></div>';
        $(containerId).html (installerHTML);
        $(containerId).css("visibility" , "visible");
      }
      break;
    case 3:
      if(!detectUnityWebPlayer())
      {
        var installerPath = getUnityInstallerPath();
        installerHTML = '<div id="gameobject"><div class="flash_alert" style="margin-top:130px">In order to play this game you need to have the Unity Web Player installed.<br/></br>Please click the link below to install the plugin.</div>';
        installerHTML += '<div style="margin-top:20px;" align="center" id="UnityPrompt">';

        if(installerPath != "")
        {
          installerHTML += '<a href="' + installerPath + '"><img src="http://webplayer.unity3d.com/installation/getunity.png" border="0"/></a>';
          installerHTML += '</div>';
          installerHTML += '<iframe name="InstallerFrame" height="0" width="0" frameborder="0"></iframe>';
        }
        else
        {
          installerHTML += '<a href="javascript: window.open("http://www.unity3d.com/unity-web-player-2.x");"><img src="http://webplayer.unity3d.com/installation/getunity.png" border="0"/></a>';
          installerHTML += '</div>';
        }

        installerHTML += '<div class="flash_alert" style="margin-top:20px">After completing the install please refresh the page to play the game.</span></div>';
        $(containerId).html( installerHTML );
        $(containerId).css("visibility" , "visible");

      }
      break;

  }
  $(containerId).css("visibility" , "visible");

  if(navigator.userAgent.indexOf("Gecko") != -1)
    window.location = "#";
}

function printError(containerId)
{
  $(containerId).html ("<strong>Error: Game type not supported</strong>");
}

//UNITY RELATED FUNCTIONS
function getUnity()
{
  if(navigator.appVersion.indexOf("MSIE") != -1 && navigator.appVersion.toLowerCase().indexOf("win") != -1)
    return document.getElementById("gameobject");
  else if(navigator.appVersion.toLowerCase().indexOf("safari") != -1)
    return document.getElementById("gameobject");
  else
    return document.getElementById("gameembed");
}

function detectUnityWebPlayer()
{
  var tInstalled = false;
  if(navigator.appVersion.indexOf("MSIE") != -1 && navigator.appVersion.toLowerCase().indexOf("win") != -1)
  {
    tInstalled = DetectUnityWebPlayerActiveX();
  }
  else
  {
    if(navigator.mimeTypes && navigator.mimeTypes["application/vnd.unity"])
    {
      if(navigator.mimeTypes["application/vnd.unity"].enabledPlugin && navigator.plugins && navigator.plugins["Unity Player"])
      {
        tInstalled = true;
      }
    }
  }
  return tInstalled;
}

function getUnityInstallerPath()
{
  var tDownloadURL = "";
  var hasXpi = navigator.userAgent.toLowerCase().indexOf( "firefox" ) != -1;

  // Use standalone installer
  if(1)
  {
    if(navigator.platform == "MacIntel")
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/webplayer-i386.dmg";
    else if(navigator.platform == "MacPPC")
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/webplayer-ppc.dmg";
    else if(navigator.platform.toLowerCase().indexOf("win") != -1)
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayer.exe";
    return tDownloadURL;
  }
  // Use XPI installer
  else
  {
    if(navigator.platform == "MacIntel")
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayerOSX.xpi";
    else if(navigator.platform == "MacPPC")
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayerOSX.xpi";
    else if(navigator.platform.toLowerCase().indexOf("win") != -1)
      tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayerWin32.xpi";
    return tDownloadURL;
  }
}
/* END PRINT FLASH TAG */

/* Browser detection */
function browser_ie()
{
  return (document.all && !window.opera) ? true : false;
}
function browser_mac() {
  return (navigator.appVersion.indexOf("Macintosh") != -1);
}
/* Browser detection*/

/****************************************************** SWFOBJECT **********************************************************/
/*	SWFObject v2.2 <http://code.google.com/p/swfobject/>
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
var swfobject=function(){
  var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){
    var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;
    if(typeof t.plugins!=D&&typeof t.plugins[S]==r){
      ab=t.plugins[S].description;
      if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){
        T=true;
        X=false;
        ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");
        ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);
        ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);
        ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0
      }
    }else{
      if(typeof O.ActiveXObject!=D){
        try{
          var ad=new ActiveXObject(W);
          if(ad){
            ab=ad.GetVariable("$version");
            if(ab){
              X=true;
              ab=ab.split(" ")[1].split(",");
              ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]
            }
          }
        }catch(Z){}
      }
    }
    return{
      w3:aa,
      pv:ag,
      wk:af,
      ie:X,
      win:ae,
      mac:ac
    }
  }(),k=function(){
    if(!M.w3){
      return
    }
    if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){
      f()
    }
    if(!J){
      if(typeof j.addEventListener!=D){
        j.addEventListener("DOMContentLoaded",f,false)
      }
      if(M.ie&&M.win){
        j.attachEvent(x,function(){
          if(j.readyState=="complete"){
            j.detachEvent(x,arguments.callee);
            f()
          }
        });
        if(O==top){
          (function(){
            if(J){
              return
            }
            try{
              j.documentElement.doScroll("left")
            }catch(X){
              setTimeout(arguments.callee,0);
              return
            }
            f()
          })()
        }
      }
      if(M.wk){
        (function(){
          if(J){
            return
          }
          if(!/loaded|complete/.test(j.readyState)){
            setTimeout(arguments.callee,0);
            return
          }
          f()
        })()
      }
      s(f)
    }
  }();
  function f(){
    if(J){
      return
    }
    try{
      var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));
      Z.parentNode.removeChild(Z)
    }catch(aa){
      return
    }
    J=true;
    var X=U.length;
    for(var Y=0;Y<X;Y++){
      U[Y]()
    }
  }
  function K(X){
    if(J){
      X()
    }else{
      U[U.length]=X
    }
  }
  function s(Y){
    if(typeof O.addEventListener!=D){
      O.addEventListener("load",Y,false)
    }else{
      if(typeof j.addEventListener!=D){
        j.addEventListener("load",Y,false)
      }else{
        if(typeof O.attachEvent!=D){
          i(O,"onload",Y)
        }else{
          if(typeof O.onload=="function"){
            var X=O.onload;
            O.onload=function(){
              X();
              Y()
            }
          }else{
            O.onload=Y
          }
        }
      }
    }
  }
  function h(){
    if(T){
      V()
    }else{
      H()
    }
  }
  function V(){
    var X=j.getElementsByTagName("body")[0];
    var aa=C(r);
    aa.setAttribute("type",q);
    var Z=X.appendChild(aa);
    if(Z){
      var Y=0;
      (function(){
        if(typeof Z.GetVariable!=D){
          var ab=Z.GetVariable("$version");
          if(ab){
            ab=ab.split(" ")[1].split(",");
            M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]
          }
        }else{
          if(Y<10){
            Y++;
            setTimeout(arguments.callee,10);
            return
          }
        }
        X.removeChild(aa);
        Z=null;
        H()
      })()
    }else{
      H()
    }
  }
  function H(){
    var ag=o.length;
    if(ag>0){
      for(var af=0;af<ag;af++){
        var Y=o[af].id;
        var ab=o[af].callbackFn;
        var aa={
          success:false,
          id:Y
        };

        if(M.pv[0]>0){
          var ae=c(Y);
          if(ae){
            if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){
              w(Y,true);
              if(ab){
                aa.success=true;
                aa.ref=z(Y);
                ab(aa)
              }
            }else{
              if(o[af].expressInstall&&A()){
                var ai={};

                ai.data=o[af].expressInstall;
                ai.width=ae.getAttribute("width")||"0";
                ai.height=ae.getAttribute("height")||"0";
                if(ae.getAttribute("class")){
                  ai.styleclass=ae.getAttribute("class")
                }
                if(ae.getAttribute("align")){
                  ai.align=ae.getAttribute("align")
                }
                var ah={};

                var X=ae.getElementsByTagName("param");
                var ac=X.length;
                for(var ad=0;ad<ac;ad++){
                  if(X[ad].getAttribute("name").toLowerCase()!="movie"){
                    ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")
                  }
                }
                P(ai,ah,Y,ab)
              }else{
                p(ae);
                if(ab){
                  ab(aa)
                }
              }
            }
          }
        }else{
          w(Y,true);
          if(ab){
            var Z=z(Y);
            if(Z&&typeof Z.SetVariable!=D){
              aa.success=true;
              aa.ref=Z
            }
            ab(aa)
          }
        }
      }
    }
  }
  function z(aa){
    var X=null;
    var Y=c(aa);
    if(Y&&Y.nodeName=="OBJECT"){
      if(typeof Y.SetVariable!=D){
        X=Y
      }else{
        var Z=Y.getElementsByTagName(r)[0];
        if(Z){
          X=Z
        }
      }
    }
    return X
  }
  function A(){
    return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)
  }
  function P(aa,ab,X,Z){
    a=true;
    E=Z||null;
    B={
      success:false,
      id:X
    };

    var ae=c(X);
    if(ae){
      if(ae.nodeName=="OBJECT"){
        l=g(ae);
        Q=null
      }else{
        l=ae;
        Q=X
      }
      aa.id=R;
      if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){
        aa.width="310"
      }
      if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){
        aa.height="137"
      }
      j.title=j.title.slice(0,47)+" - Flash Player Installation";
      var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;
      if(typeof ab.flashvars!=D){
        ab.flashvars+="&"+ac
      }else{
        ab.flashvars=ac
      }
      if(M.ie&&M.win&&ae.readyState!=4){
        var Y=C("div");
        X+="SWFObjectNew";
        Y.setAttribute("id",X);
        ae.parentNode.insertBefore(Y,ae);
        ae.style.display="none";
        (function(){
          if(ae.readyState==4){
            ae.parentNode.removeChild(ae)
          }else{
            setTimeout(arguments.callee,10)
          }
        })()
      }
      u(aa,ab,X)
    }
  }
  function p(Y){
    if(M.ie&&M.win&&Y.readyState!=4){
      var X=C("div");
      Y.parentNode.insertBefore(X,Y);
      X.parentNode.replaceChild(g(Y),X);
      Y.style.display="none";
      (function(){
        if(Y.readyState==4){
          Y.parentNode.removeChild(Y)
        }else{
          setTimeout(arguments.callee,10)
        }
      })()
    }else{
      Y.parentNode.replaceChild(g(Y),Y)
    }
  }
  function g(ab){
    var aa=C("div");
    if(M.win&&M.ie){
      aa.innerHTML=ab.innerHTML
    }else{
      var Y=ab.getElementsByTagName(r)[0];
      if(Y){
        var ad=Y.childNodes;
        if(ad){
          var X=ad.length;
          for(var Z=0;Z<X;Z++){
            if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){
              aa.appendChild(ad[Z].cloneNode(true))
            }
          }
        }
      }
    }
    return aa
  }
  function u(ai,ag,Y){
    var X,aa=c(Y);
    if(M.wk&&M.wk<312){
      return X
    }
    if(aa){
      if(typeof ai.id==D){
        ai.id=Y
      }
      if(M.ie&&M.win){
        var ah="";
        for(var ae in ai){
          if(ai[ae]!=Object.prototype[ae]){
            if(ae.toLowerCase()=="data"){
              ag.movie=ai[ae]
            }else{
              if(ae.toLowerCase()=="styleclass"){
                ah+=' class="'+ai[ae]+'"'
              }else{
                if(ae.toLowerCase()!="classid"){
                  ah+=" "+ae+'="'+ai[ae]+'"'
                }
              }
            }
          }
        }
        var af="";
        for(var ad in ag){
          if(ag[ad]!=Object.prototype[ad]){
            af+='<param name="'+ad+'" value="'+ag[ad]+'" />'
          }
        }
        aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";
        N[N.length]=ai.id;
        X=c(ai.id)
      }else{
        var Z=C(r);
        Z.setAttribute("type",q);
        for(var ac in ai){
          if(ai[ac]!=Object.prototype[ac]){
            if(ac.toLowerCase()=="styleclass"){
              Z.setAttribute("class",ai[ac])
            }else{
              if(ac.toLowerCase()!="classid"){
                Z.setAttribute(ac,ai[ac])
              }
            }
          }
        }
        for(var ab in ag){
          if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){
            e(Z,ab,ag[ab])
          }
        }
        aa.parentNode.replaceChild(Z,aa);
        X=Z
      }
    }
    return X
  }
  function e(Z,X,Y){
    var aa=C("param");
    aa.setAttribute("name",X);
    aa.setAttribute("value",Y);
    Z.appendChild(aa)
  }
  function y(Y){
    var X=c(Y);
    if(X&&X.nodeName=="OBJECT"){
      if(M.ie&&M.win){
        X.style.display="none";
        (function(){
          if(X.readyState==4){
            b(Y)
          }else{
            setTimeout(arguments.callee,10)
          }
        })()
      }else{
        X.parentNode.removeChild(X)
      }
    }
  }
  function b(Z){
    var Y=c(Z);
    if(Y){
      for(var X in Y){
        if(typeof Y[X]=="function"){
          Y[X]=null
        }
      }
      Y.parentNode.removeChild(Y)
    }
  }
  function c(Z){
    var X=null;
    try{
      X=j.getElementById(Z)
    }catch(Y){}
    return X
  }
  function C(X){
    return j.createElement(X)
  }
  function i(Z,X,Y){
    Z.attachEvent(X,Y);
    I[I.length]=[Z,X,Y]
  }
  function F(Z){
    var Y=M.pv,X=Z.split(".");
    X[0]=parseInt(X[0],10);
    X[1]=parseInt(X[1],10)||0;
    X[2]=parseInt(X[2],10)||0;
    return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false
  }
  function v(ac,Y,ad,ab){
    if(M.ie&&M.mac){
      return
    }
    var aa=j.getElementsByTagName("head")[0];
    if(!aa){
      return
    }
    var X=(ad&&typeof ad=="string")?ad:"screen";
    if(ab){
      n=null;
      G=null
    }
    if(!n||G!=X){
      var Z=C("style");
      Z.setAttribute("type","text/css");
      Z.setAttribute("media",X);
      n=aa.appendChild(Z);
      if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){
        n=j.styleSheets[j.styleSheets.length-1]
      }
      G=X
    }
    if(M.ie&&M.win){
      if(n&&typeof n.addRule==r){
        n.addRule(ac,Y)
      }
    }else{
      if(n&&typeof j.createTextNode!=D){
        n.appendChild(j.createTextNode(ac+" {"+Y+"}"))
      }
    }
  }
  function w(Z,X){
    if(!m){
      return
    }
    var Y=X?"visible":"hidden";
    if(J&&c(Z)){
      c(Z).style.visibility=Y
    }else{
      v("#"+Z,"visibility:"+Y)
    }
  }
  function L(Y){
    var Z=/[\\\"<>\.;]/;
    var X=Z.exec(Y)!=null;
    return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y
  }
  var d=function(){
    if(M.ie&&M.win){
      window.attachEvent("onunload",function(){
        var ac=I.length;
        for(var ab=0;ab<ac;ab++){
          I[ab][0].detachEvent(I[ab][1],I[ab][2])
        }
        var Z=N.length;
        for(var aa=0;aa<Z;aa++){
          y(N[aa])
        }
        for(var Y in M){
          M[Y]=null
        }
        M=null;
        for(var X in swfobject){
          swfobject[X]=null
        }
        swfobject=null
      })
    }
  }();
  return{
    registerObject:function(ab,X,aa,Z){
      if(M.w3&&ab&&X){
        var Y={};

        Y.id=ab;
        Y.swfVersion=X;
        Y.expressInstall=aa;
        Y.callbackFn=Z;
        o[o.length]=Y;
        w(ab,false)
      }else{
        if(Z){
          Z({
            success:false,
            id:ab
          })
        }
      }
    },
    getObjectById:function(X){
      if(M.w3){
        return z(X)
      }
    },
    embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){
      var X={
        success:false,
        id:ah
      };

      if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){
        w(ah,false);
        K(function(){
          ae+="";
          ag+="";
          var aj={};

          if(af&&typeof af===r){
            for(var al in af){
              aj[al]=af[al]
            }
          }
          aj.data=ab;
          aj.width=ae;
          aj.height=ag;
          var am={};

          if(ad&&typeof ad===r){
            for(var ak in ad){
              am[ak]=ad[ak]
            }
          }
          if(Z&&typeof Z===r){
            for(var ai in Z){
              if(typeof am.flashvars!=D){
                am.flashvars+="&"+ai+"="+Z[ai]
              }else{
                am.flashvars=ai+"="+Z[ai]
              }
            }
          }
          if(F(Y)){
            var an=u(aj,am,ah);
            if(aj.id==ah){
              w(ah,true)
            }
            X.success=true;
            X.ref=an
          }else{
            if(aa&&A()){
              aj.data=aa;
              P(aj,am,ah,ac);
              return
            }else{
              w(ah,true)
            }
          }
          if(ac){
            ac(X)
          }
        })
      }else{
        if(ac){
          ac(X)
        }
      }
    },
    switchOffAutoHideShow:function(){
      m=false
    },
    ua:M,
    getFlashPlayerVersion:function(){
      return{
        major:M.pv[0],
        minor:M.pv[1],
        release:M.pv[2]
      }
    },
    hasFlashPlayerVersion:F,
    createSWF:function(Z,Y,X){
      if(M.w3){
        return u(Z,Y,X)
      }else{
        return undefined
      }
    },
    showExpressInstall:function(Z,aa,X,Y){
      if(M.w3&&A()){
        P(Z,aa,X,Y)
      }
    },
    removeSWF:function(X){
      if(M.w3){
        y(X)
      }
    },
    createCSS:function(aa,Z,Y,X){
      if(M.w3){
        v(aa,Z,Y,X)
      }
    },
    addDomLoadEvent:K,
    addLoadEvent:s,
    getQueryParamValue:function(aa){
      var Z=j.location.search||j.location.hash;
      if(Z){
        if(/\?/.test(Z)){
          Z=Z.split("?")[1]
        }
        if(aa==null){
          return L(Z)
        }
        var Y=Z.split("&");
        for(var X=0;X<Y.length;X++){
          if(Y[X].substring(0,Y[X].indexOf("="))==aa){
            return L(Y[X].substring((Y[X].indexOf("=")+1)))
          }
        }
      }
      return""
    },
    expressInstallCallback:function(){
      if(a){
        var X=c(R);
        if(X&&l){
          X.parentNode.replaceChild(l,X);
          if(Q){
            w(Q,true);
            if(M.ie&&M.win){
              l.style.display="block"
            }
          }
          if(E){
            E(B)
          }
        }
        a=false
      }
    }
  }
}();
