// Webcast Include File
//
//  This file checks for the Real + Windows Player.
//
// last Updated: 07/22/05

var sh_webcastWidth=410;
var sh_webcastHeight=400;
var sh_Autoload=1;
var sh_runPopCheck = 0;

var javascriptVersion1_1 = true;
var detectableWithVB = false;
var pluginFound = false;

function goURL(daURL) 
{
  // if the browser can do it, use replace to preserve back button
  if(javascriptVersion1_1) 
  {
    window.location.replace(daURL);
  } 
  else 
  {
    window.location = daURL;
  }
  return;
}

function redirectCheck(pluginFound, redirectURL, redirectIfFound) 
{
  // check for redirection
  if( redirectURL && ((pluginFound && redirectIfFound) || (!pluginFound && !redirectIfFound)) ) 
  {
    // go away
    goURL(redirectURL);
    return pluginFound;
  } 
  else 
  {
    // stay here and return result of plugin detection
    return pluginFound;
  }	
}

function canDetectPlugins() 
{
  if( detectableWithVB || (navigator.plugins && navigator.plugins.length > 0) ) 
  {
    return true;
  } 
  else
  {
    return false;
  }
}

function detectReal(redirectURL, redirectIfFound) 
{
  pluginFound = detectPlugin('RealPlayer');
  // if not found, try to detect with VisualBasic
  if(!pluginFound && detectableWithVB) 
  {
    pluginFound = (detectActiveXControl('rmocx.RealPlayer G2 Control') || detectActiveXControl('RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)') || detectActiveXControl('RealVideo.RealVideo(tm) ActiveX Control (32-bit)'));
  }	
  return redirectCheck(pluginFound, redirectURL, redirectIfFound);
}

function detectWindowsMedia(redirectURL, redirectIfFound) 
{
  pluginFound = detectPlugin('Windows Media');
  // if not found, try to detect with VisualBasic
  if(!pluginFound && detectableWithVB) 
  {
    pluginFound = detectActiveXControl('MediaPlayer.MediaPlayer.1');
  }
  return redirectCheck(pluginFound, redirectURL, redirectIfFound);
}

function detectPlugin() 
{
  // allow for multiple checks in a single pass
  var daPlugins = detectPlugin.arguments;
  // consider pluginFound to be false until proven true
  var pluginFound = false;
  // if plugins array is there and not fake
  if (navigator.plugins && navigator.plugins.length > 0) 
  {
    var pluginsArrayLength = navigator.plugins.length;
    // for each plugin...
    for (pluginsArrayCounter=0; pluginsArrayCounter < pluginsArrayLength; pluginsArrayCounter++ ) 
    {
      // loop through all desired names and check each against the current plugin name
      var numFound = 0;
      for(namesCounter=0; namesCounter < daPlugins.length; namesCounter++) 
      {
        // if desired plugin name is found in either plugin name or description
        if( (navigator.plugins[pluginsArrayCounter].name.indexOf(daPlugins[namesCounter]) >= 0) || (navigator.plugins[pluginsArrayCounter].description.indexOf(daPlugins[namesCounter]) >= 0) ) 
        {
          // this name was found
          numFound++;
        }   
      }
      // now that we have checked all the required names against this one plugin,
      // if the number we found matches the total number provided then we were successful
      if(numFound == daPlugins.length) 
      {
        pluginFound = true;
        // if we've found the plugin, we can stop looking through at the rest of the plugins
        break;
      }
    }
  }
  return pluginFound;
} // detectPlugin

// Here we write out the VBScript block for MSIE Windows
if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) 
{
  document.writeln('<script language="VBscript">');
  document.writeln('\'do a one-time test for a version of VBScript that can handle this code');
  document.writeln('detectableWithVB = False');
  document.writeln('If ScriptEngineMajorVersion >= 2 then');
  document.writeln('  detectableWithVB = True');
  document.writeln('End If');

  document.writeln('\'this next function will detect most plugins');
  document.writeln('Function detectActiveXControl(activeXControlName)');
  document.writeln('  on error resume next');
  document.writeln('  detectActiveXControl = False');
  document.writeln('  If detectableWithVB Then');
  document.writeln('     detectActiveXControl = IsObject(CreateObject(activeXControlName))');
  document.writeln('  End If');
  document.writeln('End Function');

  document.writeln('\'and the following function handles QuickTime');
  document.writeln('Function detectQuickTimeActiveXControl()');
  document.writeln('  on error resume next');
  document.writeln('  detectQuickTimeActiveXControl = False');
  document.writeln('  If detectableWithVB Then');
  document.writeln('    detectQuickTimeActiveXControl = False');
  document.writeln('    hasQuickTimeChecker = false');
  document.writeln('    Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1")');
  document.writeln('    If IsObject(hasQuickTimeChecker) Then');
  document.writeln('      If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then ');
  document.writeln('        detectQuickTimeActiveXControl = True');
  document.writeln('      End If');
  document.writeln('    End If');
  document.writeln('  End If');
  document.writeln('End Function');

  document.writeln('</scr' + 'ipt>');
}

function tellerror(msg, url, linenumber)
{
  alert('Error:'+msg+'\nLine Number= '+linenumber);
  
  return true;
}
window.onerror=tellerror;

function sh_getObjectRef(objectName)
{
  if(document.all)
    return eval("document.all." + objectName);
  if (document.implementation &&document.implementation.hasFeature && document.implementation.hasFeature("html", "1.0")) 
    return document.getElementById(objectName);
}

// perform checks

if(typeof(sh_playerReal) != "undefined")
{
  if((sh_playerReal == 1) && (!detectReal())) 
  {
    if(sh_getObjectRef("shRealDetect")) 
    {
      sh_objWarning = sh_getObjectRef("shRealDetect").style;
      if(sh_objWarning) sh_objWarning.display = "";
    }
  }
}

if(typeof(sh_playerWM) != "undefined")
{
  if((sh_playerWM == 1) && (!detectWindowsMedia())) 
  {
    if(sh_getObjectRef("shWMDetect")) 
    {
      sh_objWarning = sh_getObjectRef("shWMDetect").style;
      if(sh_objWarning) sh_objWarning.display = "";
    }
  }
}

var sh_win = null;
var sh_popOK = false;
function sh_webcastPopup(mypage,myname) 
{
  sh_LeftPosition = (screen.width) ? (screen.width-sh_webcastWidth)/2 : 0;
  sh_TopPosition = (screen.height) ? (screen.height-sh_webcastHeight)/2 : 0;
  settings = 'height='+sh_webcastHeight+',width='+sh_webcastWidth+',top='+sh_TopPosition+',left='+sh_LeftPosition+',scrollbars=no,resizable=yes,status=no';

  
//sh_win=  window.open(mypage);
//  window.open(mypage,myname,settings);
  sh_win = window.open(mypage,myname,settings);
  if(sh_win && sh_win.window && sh_win.window.focus)
  {
    sh_win.window.focus();
  }
  if (typeof(sh_runPopCheck) != "undefined" && sh_runPopCheck == 1)
    setTimeout("sh_PopCheck()",5000);

}

function sh_PopCheck() 
{
  if(!sh_popOK) 
  {
    // checks to see if the pop-up worked.. if not, unhide a layer.
    //window.status = "did not hear from player!";
    if(sh_getObjectRef("shPopWarning")) 
    {
      sh_objWarning = sh_getObjectRef("shPopWarning").style;
      if(sh_objWarning) sh_objWarning.display = "";
    }
  } 
}

// Seems to be completely useless.  Will be removed once confirmed.
function sh_PlayerOK() 
{
    sh_popOK = true;
}

function sh_webcastAutoload() 
{
  if (sh_Autoload == 1 && typeof(sh_webcastLink) != "undefined") 
  {
    sh_webcastPopup(sh_webcastLink,'webcast');
      window.status = "here";
  }
  else 
    window.status = "here2";
}

window.status = "Browser Check Complete";
