The BookReader source is hosted at http://github.com/openlibrary/bookreader/
- archive.org cvs $Revision: 1.2 $ $Date: 2009-06-22 18:42:51 $
*/
// BookReader()
return this;
};
+(function ($) {
// init()
//______________________________________________________________________________
BookReader.prototype.init = function() {
this.pageScale = this.reduce; // preserve current reduce
// Find start index and mode if set in location hash
- var params = this.paramsFromFragment(window.location.hash);
+ var params = {};
+ if (window.location.hash) {
+ // params explicitly set in URL
+ params = this.paramsFromFragment(window.location.hash);
+ } else {
+ // params not explicitly set, use defaults if we have them
+ if ('defaults' in this) {
+ params = this.paramsFromFragment(this.defaults);
+ }
+ }
// Sanitize/process parameters
//the width set with .attr is ignored by Internet Explorer, causing it to show the image at its original size
//but with this one line of css, even IE shows the image at the proper size
- /*
.css({
'width': $(dummyImage).width()+'px',
'height': $(dummyImage).height()+'px'
'height': $(dummyImage).height(),
'src': $(dummyImage).data('srcURL')
});
- */
// replace with the new img
$(dummyImage).before(img).remove();
// Attempts to jump to page. Returns true if page could be found, false otherwise.
BookReader.prototype.jumpToPage = function(pageNum) {
- var pageIndex = this.getPageIndex(pageNum);
+ var pageIndex;
+
+ // Check for special "leaf"
+ var re = new RegExp('^leaf(\\d+)');
+ leafMatch = re.exec(pageNum);
+ if (leafMatch) {
+ console.log(leafMatch[1]);
+ pageIndex = this.leafNumToIndex(parseInt(leafMatch[1],10));
+ if (pageIndex === null) {
+ pageIndex = undefined; // to match return type of getPageIndex
+ }
+
+ } else {
+ pageIndex = this.getPageIndex(pageNum);
+ }
if ('undefined' != typeof(pageIndex)) {
var leafTop = 0;
//append icon to handle
var handleHelper = $('#BRpager .ui-slider-handle')
- // $$$mang update logic for setting the page number label -- use page numbers if available
.append('<div id="pagenum"><span class="currentpage"></span></div>');
//.wrap('<div class="ui-handle-helper-parent"></div>').parent(); // XXXmang is this used for hiding the tooltip?
var pageNum = this.getPageNum(index);
var pageStr;
if (pageNum[0] == 'n') { // funny index
- pageStr = index + ' / ' + this.numLeafs;
+ pageStr = index + 1 + ' / ' + this.numLeafs; // Accessible index starts at 0 (alas) so we add 1 to make human
} else {
pageStr = 'Page ' + pageNum;
}
this.jumpToPage(params.page);
}
}
-
+
// $$$ process /region
// $$$ process /highlight
}
this.showProgressPopup('Loading audio...');
- ///// whileloading: broken on safari
- ///// onload fires on safari, but *after* the sound starts playing..
+ ///// Many soundManger2 callbacks are broken when using HTML5 audio.
+ ///// whileloading: broken on safari, worked in FF4, but broken on FireFox 5
+ ///// onload: fires on safari, but *after* the sound starts playing, and does not fire in FF or IE9
+ ///// onbufferchange: fires in FF5 using HTML5 audio, but not in safari using flash audio
+ ///// whileplaying: fires everywhere
this.ttsPosition = -1;
var snd = soundManager.createSound({
id: 'chunk'+this.ttsIndex+'-0',
- //url: 'http://home.us.archive.org/~rkumar/arctic.ogg',
url: 'http://'+this.server+'/BookReader/BookReaderGetTTS.php?string=' + escape(data[0][0]) + '&format=.'+this.ttsFormat, //the .ogg is to trick SoundManager2 to use the HTML5 audio player
- whileloading: function(){if (this.bytesLoaded == this.bytesTotal) this.br.removeProgressPopup();}, //onload never fires in FF...
- onload: function(){this.br.removeProgressPopup();} //whileloading never fires in safari...
+ onload: function(){this.br.removeProgressPopup();}, //fires in safari...
+ onbufferchange: function(){if (false == this.isBuffering) this.br.removeProgressPopup();} //fires in FF and IE9
});
snd.br = this;
snd.load();
}
}
}
+})(jQuery);