/*
# A component of the Realistic Book software
# from the New Zealand Digital Library Project at the
# University of Waikato, New Zealand.
#
# Copyright (C) 2007 New Zealand Digital Library Project
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*****************************************************************
Realistic Book application
Detect Flash Player 8.0.24 or more plugin
Specify the XHTML input and image cover URL to program
Embed the program to the div tag with id = bookdiv
by Veronica Liesaputra --- 1 August 2007
******************************************************************/
var doc_url;//XHTML url
var img_cover;//image cover url
//check internet browser type
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
var doc_width = -1;
var doc_height = -1;
var doc_style = "";
//These functions will be called by the program
function getDocURL() { return doc_url; }
function getImgCover() { return img_cover; }
function getStageW() { return doc_width; }
function getStageH() { return doc_height; }
function setDocumentTitle(doc_title) { document.title = doc_title; }
function getStyleFile() { return doc_style; }
//set the style of the book
function setBookStyle(s) {doc_style = s;}
//set the size of the book
function setBookSize(dw,dh) {doc_width = dw; doc_height = dh;}
//overload function
function embedBookProgram(args)
{
if (args.length == 0)
alert("Please type the URL for the XHTML input");
else
{
var xhtml_url = args[0];
var height = -1;
var width = -1;
var image_url = "";
if (args.length > 1)
{
if (isNaN(args[1]) == true)
image_url = args[1];
else
height = args[1];
}
if (args.length > 2)
width = args[2];
embedProgram(xhtml_url,image_url,height,width);
}
}
/*
If user has Flash player 8.0.24 or more,
Embed the program to your HTML file inside the div tag with id = bookdiv
Set the doc_url, img_cover, stage_width and stage_height value
Otherwise,
Show user the links to get the flash player
*/
function embedProgram(xhtml_url, image_url, stage_height, stage_width)
{
var flash_plug_html = "";
var flash_width = "100%";
if (stage_width != -1)
flash_width = "" + stage_width;
var flash_height = "100%";
if (stage_height != -1)
flash_height = "" + stage_height;
if (detectFlashPlayerVersion(8,0,24) == false)
{
flash_plug_html += 'This content requires the Adobe Flash Player 8.0.24 or greater.';
flash_plug_html += 'Get Flash';
}
else
{
doc_url = escape(''+xhtml_url);//just in case user forgot the quote
img_cover = escape(''+image_url);
//embed inside object tag for IE
flash_plug_html += '\n';
}
var flash_div = document.getElementById('bookdiv');
flash_div.innerHTML = flash_plug_html;
}
function detectFlashPlayerVersion(reqMajor,reqMinor,reqRevision)
{
if (navigator.plugins != null && navigator.plugins.length > 0)
{
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"])
{
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
var descArray = flashDescription.split(" ");
var tempArrayMajor = descArray[2].split(".");
var versionMajor = tempArrayMajor[0];
var versionMinor = tempArrayMajor[1];
var versionRevision = descArray[3];
if (versionRevision == "")
{
versionRevision = descArray[4];
}
if (versionRevision[0] == "d")
{
versionRevision = versionRevision.substring(1);
}
else if (versionRevision[0] == "r")
{
versionRevision = versionRevision.substring(1);
if (versionRevision.indexOf("d") > 0)
{
versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
}
}
var isGood = isGoodPlugin(reqMajor,reqMinor,reqRevision,versionMajor,versionMinor,versionRevision);
return isGood;
}
}
else if ( isIE && isWin && !isOpera )
{
var version;
var axo;
var e;
try
{
// version will be set for 7.X or greater players
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
version = axo.GetVariable("$version");
// Given "WIN 2,0,0,11"
var tempArray = version.split(" "); // ["WIN", "2,0,0,11"]
var tempString = tempArray[1]; // "2,0,0,11"
var versionArray = tempString.split(","); // ['2', '0', '0', '11']
var isGood = isGoodPlugin(reqMajor,reqMinor,reqRevision,versionArray[0],versionArray[1],versionArray[2]);
return isGood;
}
catch (e) {}
}
return false;
}
/*
Check whether the current flash player plugin passed the required version
*/
function isGoodPlugin(reqMajor,reqMinor,reqRevision,currMajor,currMinor,currRevision)
{
if (currMajor > parseFloat(reqMajor))
{
return true;
}
else if (currMajor == parseFloat(reqMajor))
{
if (currMinor > parseFloat(reqMinor))
{
return true;
}
else if (currMinor == parseFloat(reqMinor))
{
if (currRevision >= parseFloat(reqRevision))
{
return true;
}
}
}
return false;
}