/* # 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 var anno_url;// XHTML annotation 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 = ""; var init_page = ""; var http_request = false; //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; } function getStartOpenPage() { return init_page; } function getAnnoURL() { return anno_url; } //set the page where the book will be open to function setOpenPage(num) { init_page = num; } //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 (init_page.length == 0) { var loc = window.location.href; var idx = loc.lastIndexOf("#"); if (idx != -1) { var aftr = loc.substring(idx + 1); if ((aftr.indexOf(".") == -1) && (aftr.indexOf("?") == -1)) init_page = aftr; } } if (args.length == 0) alert("Please type the URL for the XHTML input"); else { var size = [-1, -1]; var file_url = ["","",""]; var slen = 0; var surl = 0; for (var i = 0; i < args.length; i++) { if (isNaN(args[i]) == true) { file_url[surl] = args[i]; surl++; } else { size[slen] = args[i]; slen++; } } embedProgram(file_url[0],file_url[1],size[0],size[1],file_url[2]); } } /* * 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, anno_url, 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,note_url) { 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); if (note_url == "") { var ind = xhtml_url.lastIndexOf("."); if (ind != -1) { note_url = xhtml_url.substring(0, ind) + "_annotation" + xhtml_url.substring(ind, xhtml_url.length); } } anno_url = escape(''+note_url); // embed inside object tag for IE flash_plug_html += '\n'; // embed inside embed tag for netscape, mozilla flash_plug_html += '\n'; flash_plug_html += '\n'; flash_plug_html += '\n'; flash_plug_html += '\n'; flash_plug_html += '\n'; 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; } function makePOSTRequest(url, parameters) { http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { // set type accordingly to anticipated content type // http_request.overrideMimeType('text/xml'); http_request.overrideMimeType('text/html'); } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Cannot create XMLHTTP instance'); return false; } http_request.onreadystatechange = sendStatus; http_request.open('POST', url, true); http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http_request.setRequestHeader("Content-length", parameters.length); http_request.setRequestHeader("Connection", "close"); http_request.send(parameters); } function sendStatus() { if (http_request.readyState == 4) { if (http_request.status == 200) { alert(http_request.responseText); } else { alert('There was a problem with the request.'); } } } function saveText(msg) { var postStr = 'msgFile=' + escape(encodeURIComponent(doc_url)); postStr += '&msgText=' + escape(encodeURIComponent(msg)); makePOSTRequest('send.php',postStr); } function saveNote(msg) { var postStr = 'msgFile=' + escape(encodeURIComponent(anno_url)); postStr += '&msgText=' + escape(encodeURIComponent(msg)); makePOSTRequest('send.php',postStr); } window.onbeforeunload = saveBook; function saveBook() { var flashBook = document["Book"]; if (navigator.appName.indexOf("Microsoft") != -1) { flashBook = window["Book"]; } if (flashBook != null) { flashBook.saveBookNotes(); //flashBook.saveBookTexts(); } }