
bbcjs.trace("<b><font color=green>jst_plugins.js</font> was included.</b>",2);
bbcjs.plugins 						= new Object();
bbcjs.plugins.prototype 			= new bbcjs.Module("plugins", 1, "$Revision: 1.34 $", "$Date: 2005/05/04 16:40:29 $");
bbcjs.plugins.flash					= false;
bbcjs.plugins.flashVersion 			= -1;
bbcjs.plugins.numFlashMovies		= 0;
bbcjs.plugins.real					= false;
bbcjs.plugins.realVersion			= -1;
bbcjs.plugins.numRealmediaMovies	= 0;
bbcjs.plugins.quicktime				= false;
bbcjs.plugins.quicktimeVersion		= -1;
bbcjs.plugins.numQuicktimeMovies	= 0;
bbcjs.plugins.lowversionStr			= "<p>The Flash movie you are trying to view requires Flash player version <<this.version>>, whilst this computer seems to " +
"only have version <<bbcjs.plugins.flashVersion>>. In order to view this movie you must upgrade your Flash " +
"player.</p><p> To do this, visit the <<bbcjs.plugins.wwguides.flash>></p>";
bbcjs.plugins.noflashStr			= "<p>You are trying to view a Flash movie although you have no version of Flash installed. To find out how to " +
"install Flash, go to the <<bbcjs.plugins.wwguides.flash>></p>";
bbcjs.plugins.noquicktimeStr		= "<p>You are trying to view a Quicktime movie although you have no Quicktime player installed. To find out how to " +
"install Quicktime, go to the <<bbcjs.plugins.wwguides.quicktime>></p>";
bbcjs.plugins.norealStr				= "<p>You are trying to view a Realmedia clip although you have no version of Realplayer installed. To find out how to " +
"install RealPlayer, go to the <<bbcjs.plugins.wwguides.real>></p>";
bbcjs.plugins.wwguides				= new Object();
bbcjs.plugins.wwguides.flash 		= "<a href=\"/webwise/askbruce/articles/download/howdoidownloadflashplayer_1.shtml\" onclick=\"return wwguide('flash');\">WebWise Flash install guide</a>";
bbcjs.plugins.wwguides.quicktime 	= "<a href=\"/webwise/askbruce/articles/download/whatareplugins_1.shtml\" onclick=\"return wwguide('quicktime');\">WebWise Quicktime install guide</a>";
bbcjs.plugins.wwguides.real  		= "<a href=\"/webwise/askbruce/articles/download/howdoidownloadrealplayer_1.shtml\" onclick=\"return wwguide('real');\">WebWise RealPlayer install guide</a>";
bbcjs.plugins.checkActivexVersions = function (progid, versionCeiling)
{
var highestVersion = -1;
var objectString;
for (var i=0; i<=versionCeiling; i++)
{
objectString = (versionCeiling > 0)? progid + i : progid;
if (this.checkActivexObject(objectString)) highestVersion = i;
}
return highestVersion;
}
bbcjs.plugins.checkActivexObject = function (progid)
{
objectSuccess = false;
objectString = progid;
execScript('On Error Resume Next: objectSuccess = IsObject(CreateObject(objectString))','VBScript');
if (objectSuccess) bbcjs.trace("<code>"+objectString+"</code> detected",5);
return objectSuccess;
}
bbcjs.plugins.checkNavigatorPluginVersions = function (name, field, versionRegexp)
{
var highestVersion = -1
var currentField, currentVersion, versionMatch;
for (var i=0; i<navigator.plugins.length; i++)
{
currentField = navigator.plugins[i][field];
if (this.checkNavigatorPlugin(name, currentField))
{
versionMatch = currentField.match(versionRegexp);
currentVersion = (versionMatch)? versionMatch[1] : 0;
if (currentVersion > highestVersion) highestVersion = currentVersion;
}
}
return highestVersion;
}
bbcjs.plugins.checkNavigatorPlugin = function (name, field)
{
var pluginSuccess = (field.indexOf(name) > -1)? true : false;
if (pluginSuccess) bbcjs.trace('<code>'+field+'</code> detected',5);
return pluginSuccess;
}
bbcjs.plugins.checkPluginVersions = function (name, field, versionRegexp, progid, versionMax)
{
if (navigator.plugins && navigator.plugins.length)
{
return this.checkNavigatorPluginVersions(name, field, versionRegexp);
}
else
{
return this.checkActivexVersions(progid, versionMax);
}
}
bbcjs.plugins.getFlashVersion = function ()
{
var versionRegexp 	= /\w+ \w+ (\d)\./;
this.flashVersion 	= this.checkPluginVersions("Flash", "description", versionRegexp, "ShockwaveFlash.ShockwaveFlash.", 8);
this.flash 			= this.flashVersion > -1;
bbcjs.trace((this.flash)? "<b>Flash "+this.flashVersion+"</b> detected" : "No Flash detected" ,3);
return this.flashVersion;
}
bbcjs.plugins.getFlashVersion();
bbcjs.plugins.getQuicktimeVersion = function ()
{
var versionRegexp 		= /\w+ [a-zA-z\-]+ (\d)\./;
this.quicktimeVersion 	= this.checkPluginVersions("QuickTime", "name", versionRegexp, "QuickTime.QuickTime.", 6);
this.quicktime 			= this.quicktimeVersion > -1;
bbcjs.trace((this.quicktime)? "<b>Quicktime "+this.quicktimeVersion+"</b> detected" : "No Quicktime detected" ,3);
return this.quicktimeVersion;
}
bbcjs.plugins.getQuicktimeVersion();
bbcjs.plugins.getRealVersion = function ()
{
var versionRegexp 	= null;
this.realVersion 	= this.checkPluginVersions("Real", "description", versionRegexp, "rmocx.RealPlayer G2 Control", 0);
this.real 			= this.realVersion > -1;
bbcjs.trace((this.real)? "<b>Realplayer G2</b> detected" : "No Realplayer detected" , 3);
return this.realVersion;
}
bbcjs.plugins.getRealVersion();
// ####################################################### FLASH EMBED ##################################################################
bbcjs.plugins.FlashMovie = function (src, version, width, height)
{
this.src = src;
this.version = (version)? version : 5;
this.width = (width)? width : "100%";
this.height = (height)? height : "100%";
this.quality = "autohigh";
this.loop = false;
this.play = true;
this.menu = true;
this.htmlString = "";
this.align = "";
this.flashvars = "";
this.bgcolor = "";
this.lowversion = bbcjs.plugins.lowversionStr;
this.noflash = bbcjs.plugins.noflashStr;
// Increase counter of number of flash movies we have on a page.
bbcjs.plugins.numFlashMovies++;
this.id = "flashmovie_"+bbcjs.plugins.numFlashMovies;
this.embed = function ()
{
return bbcjs.plugins.embedFlashMovie(this);
}
}
bbcjs.plugins.embedFlashMovie = function(movObj, version, width, height)
{
//If we've just taken in a url [and a version number], create a new movie object.
if (typeof(movObj)=="string") movObj = new bbcjs.plugins.FlashMovie(movObj, version, width, height);
bbcjs.trace("<b>bbcjs.plugins.embedFlashMovie</b> called...",3);
movObj.htmlString = bbcjs.plugins.getFlashEmbedString(movObj);
document.write(movObj.htmlString);
}
bbcjs.plugins.getFlashEmbedString = function (movObj)
{
var outStr = "";
var fvStr = "";
var fvStrE= "";
var alStr = "";
//If the user has a version capable of playing this file, embed it onto the page
if (movObj.version <= bbcjs.plugins.flashVersion)
{
if (movObj.flashvars != "")
{
fvStr  = '<param name="flashvars" value="'+movObj.flashvars+'">';
fvStrE = ' flashvars="'+movObj.flashvars+'"';
}
if (movObj.align!="") alStr =  'align="'+movObj.align+'"';
bbcjs.trace("Correct version of flash found (need v"+movObj.version+"), embedding movie",2);
outStr = ('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="'+movObj.width+'"'+
' height="'+movObj.height+'" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"'+
' id="'+movObj.id+'"'+alStr+'>'+
fvStr +
'<param name="movie" value="'+movObj.src+'">'+
'<param name="loop" value="'+movObj.loop+'">'+
'<param name="quality" value="'+movObj.quality+'">'+
'<param name="menu" value="'+movObj.menu+'">'+
'<param name="autoplay" value="'+movObj.play+'">');
//if (movObj.flashvars != "") outStr += '<param name="flashvars" value="'+movObj.flashvars+'">';
if (movObj.bgcolor != "")   outStr += '<param name="bgcolor" value="'+movObj.bgcolor+'">';
outStr += ('<embed src="'+movObj.src+'" width="'+movObj.width+'"'+ fvStrE +
' height="'+movObj.height+'" autoplay="'+movObj.play+'" loop="'+movObj.loop+'"'+
' quality="'+movObj.quality+'" menu="'+movObj.menu+'"');
//if (movObj.flashvars != "") outStr += ' flashvars="'+movObj.flashvars+'"';
if (movObj.bgcolor != "")   outStr += ' bgcolor="'+movObj.bgcolor+'"';
outStr += (' pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"'+
' type="application/x-shockwave-flash"></embed>'+
'</object>');
bbcjs.trace("Full flash output:<br />"+bbcjs.HTMLOut(outStr),5);
return outStr;
}
//If we do not have a correct flash version, display an error message.
else
{
bbcjs.trace("Incorrect or no flash found! Showing error message:",2);
var errorstr = movObj.noflash;
if (bbcjs.plugins.flash) errorstr = movObj.lowversion;
//Simple variable replacement, using <<variable>>:
var tvi = "";
var tv = errorstr.match(/\<\<([a-zA-Z0-9\._]*)\>\>/g);
if(tv)
{
for (var i=0; i<tv.length; i++)
{
tvi = tv[i].replace(/[\<\>]/g,"");
tvi = tvi.replace(/this/g, "movObj");
bbcjs.trace("flashEmbed:: replacing '"+tvi+"'",6);
tvi = eval(tvi);
errorstr = errorstr.replace(tv[i],tvi);
}
}
return errorstr;
}
}
// ##################################################### QUICKTIME EMBED ################################################################
bbcjs.plugins.QuicktimeMovie = function (src, version, width, height)
{
this.src = src;
this.version = (version)? version : 6;
this.width = (width)? width : "100%";
this.height = (height)? height : "100%";
this.loop = false;
this.play = true;
this.noquicktime = bbcjs.plugins.noquicktimeStr;
// Store a reference of the number of Quicktime movies we have on a page, then set up an id to reference this movie.
bbcjs.plugins.numQuicktimeMovies++;
this.id = "quicktimemovie_"+bbcjs.plugins.numQuicktimeMovies;
this.embed = function ()
{
return bbcjs.plugins.embedQuicktimeMovie(this);
}
}
bbcjs.plugins.embedQuicktimeMovie = function(movObj, version, width, height)
{
// If we've just taken in a url [and a version number], create a new movie object.
if (typeof(movObj)=="string") movObj = new bbcjs.plugins.QuicktimeMovie(movObj, version, width, height);
bbcjs.trace("<b>bbcjs.plugins.embedQuicktimeMovie</b> called...",3);
movObj.htmlString = bbcjs.plugins.getQuicktimeEmbedString(movObj);
document.write(movObj.htmlString);
}
bbcjs.plugins.getQuicktimeEmbedString = function (movObj)
{
var qtHTML = "";
if (bbcjs.plugins.quicktime)
{
qtHTML += '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="' + movObj.width + '" height="' + movObj.height + '" id="' + movObj.id + '">';
qtHTML += '<param name="src" value="'+movObj.src+'">';
qtHTML += '<param name="loop" value="'+movObj.loop+'">';
qtHTML += '<param name="autostart" value="'+movObj.play+'">';
qtHTML += '<embed type="video/quicktime" src="' + movObj.src + '" width="' + movObj.width + '" height="' + movObj.height + '" id="' + movObj.id + '" loop="'+movObj.loop+'" autostart="'+movObj.play+'"';
qtHTML += '></embed>';
qtHTML += '</object>';
return qtHTML;
}
else
{
bbcjs.trace("No Quicktime player found! Showing error message:",2);
var errorstr = movObj.noquicktime;
//Simple variable replacement, using <<variable>>:
var tvi = "";
var tv = errorstr.match(/\<\<([a-zA-Z0-9\._]*)\>\>/g);
if(tv)
{
for (var i=0; i<tv.length; i++)
{
tvi = tv[i].replace(/[\<\>]/g,"");
tvi = tvi.replace(/this/g, "movObj");
bbcjs.trace("quicktimeEmbed:: replacing '"+tvi+"'",6);
tvi = eval(tvi);
errorstr = errorstr.replace(tv[i],tvi);
}
}
return errorstr;
}
}
// ##################################################### REALMEDIA EMBED ################################################################
bbcjs.plugins.RealmediaMovie = function (src, version, width, height)
{
this.src = src;
this.version = (version)? version : 0;
this.width = (width)? width : "100%";
this.height = (height)? height : "100%";
this.play = true;
this.showControls = true;
this.controlsPosition = 'bottom';
this.noRealmedia = bbcjs.plugins.norealStr;
// Store a reference of the number of Quicktime movies we have on a page, then set up an id to reference this movie.
bbcjs.plugins.numRealmediaMovies++;
this.id = "realmediamovie_"+bbcjs.plugins.numRealmediaMovies;
this.embed = function ()
{
return bbcjs.plugins.embedRealmediaMovie(this);
}
}
bbcjs.plugins.embedRealmediaMovie = function(movObj, version, width, height)
{
// If we've just taken in a url [and a version number], create a new movie object.
if (typeof(movObj)=="string") movObj = new bbcjs.plugins.RealmediaMovie(movObj, version, width, height);
bbcjs.trace("<b>bbcjs.plugins.embedRealmediaMovie</b> called...",3);
movObj.htmlString = bbcjs.plugins.getRealmediaEmbedString(movObj);
document.write(movObj.htmlString);
}
bbcjs.plugins.getRealmediaEmbedString = function (movObj)
{
var rmHTML = "";
var ctHTML = "";
if (bbcjs.plugins.real)
{
rmHTML += '<object classid="CLSID:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA" width="' + movObj.width + '" height="' + movObj.height + '" id="' + movObj.id + '" border="0" MAYSCRIPT>';
rmHTML += '<param name="SRC" value="'+movObj.src+'">';
rmHTML += '<param name="AUTOSTART" value="'+movObj.play+'">';
rmHTML += '<param name="NOLABELS" value="0">';
rmHTML += '<param name="CONTROLS" value="imagewindow">';
rmHTML += '<param name="CONSOLE" value="' + movObj.id + '">';
rmHTML += '<embed type="audio/x-pn-realaudio-plugin" src="' + movObj.src + '" width="' + movObj.width + '" height="' + movObj.height + '" id="' + movObj.id + '" loop="'+movObj.loop+'" autostart="'+movObj.play+'" console="' + movObj.id + '" nojava="false" controls="imagewindow" border="0"';
rmHTML += '></embed>';
rmHTML += '</object>';
if (movObj.showControls)
{
ctHTML += '<object id="RP" classid="CLSID:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA" align="baseline" width="' + movObj.width + '" height="30" border="0" MAYSCRIPT>';
ctHTML += '<param name="SRC" value="'+movObj.src+'">';
ctHTML += '<param name="CONTROLS" value="ControlPanel">';
ctHTML += '<param name="CONSOLE" value="' + movObj.id + '">';
ctHTML += '<embed src="'+movObj.src+'" width="' + movObj.width + '" height="30" nojava="false" controls="ControlPanel" console="' + movObj.id + '" type="audio/x-pn-realaudio-plugin">';
ctHTML += '</embed>';
ctHTML += '</object>';
}
if (movObj.showControls && movObj.controlsPosition == 'top') rmHTML = ctHTML + '<br />' + rmHTML;
if (movObj.showControls && movObj.controlsPosition == 'bottom') rmHTML = rmHTML + '<br />' + ctHTML;
return rmHTML;
}
else
{
bbcjs.trace("No Realmedia player found! Showing error message:",2);
var errorstr = movObj.noRealmedia;
//Simple variable replacement, using <<variable>>:
var tvi = "";
var tv = errorstr.match(/\<\<([a-zA-Z0-9\._]*)\>\>/g);
if(tv)
{
for (var i=0; i<tv.length; i++)
{
tvi = tv[i].replace(/[\<\>]/g,"");
tvi = tvi.replace(/this/g, "movObj");
bbcjs.trace("RealmediaEmbed:: replacing '"+tvi+"'",6);
tvi = eval(tvi);
errorstr = errorstr.replace(tv[i],tvi);
}
}
return errorstr;
}
}

