this.willChangeToIndex(index);
+ this.ttsStop();
+
if (this.constMode2up == this.mode) {
this.autoStop();
//______________________________________________________________________________
BookReader.prototype.search = function(term) {
//console.log('search called with term=' + term);
+
+ $('#textSrch').blur(); //cause mobile safari to hide the keyboard
+
var url = 'http://'+this.server.replace(/:.+/, ''); //remove the port and userdir
url += '/~edward/inside_jsonp.php?item_id='+this.bookId;
url += '&doc='+this.subPrefix; //TODO: test with subitem
this.searchTerm = term;
this.removeSearchResults();
- this.showProgressPopup();
+ this.showProgressPopup('<img id="searchmarker" src="'+this.imagesBaseURL + 'marker_srch-on.png'+'"> Search results will appear below...');
this.ttsAjax = $.ajax({url:url, dataType:'jsonp', jsonpCallback:'BRSearchCallback'});
}
br.removeSearchResults();
br.searchResults = results;
//console.log(br.searchResults);
+
+ if (0 == results.matches.length) {
+ $(br.popup).text('No matches were found.');
+ setTimeout(function(){
+ $(br.popup).fadeOut('slow', function() {
+ br.removeProgressPopup();
+ })
+ },1000);
+ return;
+ }
+
var i;
for (i=0; i<results.matches.length; i++) {
br.addSearchResult(results.matches[i].text, br.leafNumToIndex(results.matches[i].par[0].page));
.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?
+ // $$$mang, why are these set both here and in bindNavigationHandlers?
$('.BRicon.book_left').bind('click', function() {
+ self.ttsStop();
self.left();
});
$('.BRicon.book_right').bind('click', function() {
+ self.ttsStop();
self.right();
});
var re = new RegExp('{{{(.+?)}}}', 'g');
queryString = queryString.replace(re, '<a href="#" onclick="br.jumpToIndex('+pageIndex+'); return false;">$1</a>')
- $('<div class="search" style="left:' + percentThrough + ';" title="' + uiStringSearch + '"><div class="query">'
+ var marker = $('<div class="search" style="top:'+(-$('#BRcontainer').height())+'px; left:' + percentThrough + ';" title="' + uiStringSearch + '"><div class="query">'
+ queryString + '<span>' + uiStringPage + ' ' + pageNumber + '</span></div>')
.data({'self': this, 'pageIndex': pageIndex })
.appendTo('#BRnavline').bt({
.bind('click', function() {
$(this).data('self').jumpToIndex($(this).data('pageIndex'));
});
+
+ $(marker).animate({top:'-25px'}, 'slow');
}
"<div id='BRtoolbar'>"
+ "<span id='BRtoolbarbuttons'>"
/* XXXmang integrate search */
- + "<form action='javascript:' id='booksearch'><input type='search' id='textSrch' name='textSrch' val='' placeholder='Search inside'/><button type='submit' id='btnSrch' name='btnSrch'>GO</button></form>"
+ + "<form action='javascript:br.search($(\"#textSrch\").val());' id='booksearch'><input type='search' id='textSrch' name='textSrch' val='' placeholder='Search inside'/><button type='submit' id='btnSrch' name='btnSrch'>GO</button></form>"
// XXXmang icons incorrect or handlers wrong
+ "<button class='BRicon info'></button>"
+ "<button class='BRicon share'></button>"
});
jIcons.filter('.zoom_in').bind('click', function() {
+ self.ttsStop();
self.zoom(1);
return false;
});
jIcons.filter('.zoom_out').bind('click', function() {
+ self.ttsStop();
self.zoom(-1);
return false;
});
// XXX fix integration
- $('#booksearch').bind('submit', function() {
- self.search($('#textSrch').val());
- });
+ // XXX Mobile safari was not picking up this handler, so
+ // I explictly set the form action in initToolbar()
+ // $('#booksearch').bind('submit', function() {
+ // self.search($('#textSrch').val());
+ // });
$('#BookReader').die('mousemove.navigation').live('mousemove.navigation',
{ 'br': this },
BookReader.prototype.ttsToggle = function () {
if (false == this.ttsPlaying) {
this.ttsPlaying = true;
- this.showProgressPopup();
+ this.showProgressPopup('Loading audio...');
if(soundManager.supported()) {
this.ttsStart();
} else {
return;
}
- this.showProgressPopup();
+ this.showProgressPopup('Loading audio...');
///// whileloading: broken on safari
///// onload fires on safari, but *after* the sound starts playing..
// showProgressPopup
//______________________________________________________________________________
-BookReader.prototype.showProgressPopup = function() {
- if (soundManager.debugMode) console.log('showProgressPopup index='+this.ttsIndex+' pos='+this.ttsPosition);
+BookReader.prototype.showProgressPopup = function(msg) {
if (this.popup) return;
this.popup = document.createElement("div");
$(this.popup).css({
- top: $('#BRtoolbar').height() + 'px',
- left: $('#BookReader').width()-220 + 'px',
- width: '220px',
- height: '20px',
- }).attr('className', 'BRprogresspopup').appendTo('#BookReader');
+ top: ($('#BookReader').height()*0.5-100) + 'px',
+ left: ($('#BookReader').width()-300)*0.5 + 'px',
+ width: '300px',
+ border: '2px solid black'
+ }).attr('className', 'BRprogresspopup');
- htmlStr = ' ';
+ var bar = document.createElement("div");
+ $(bar).css({
+ height: '20px'
+ }).attr('className', 'BRprogressbar');
+ $(this.popup).append(bar);
- this.popup.innerHTML = htmlStr;
+ if (msg) {
+ var msgdiv = document.createElement("div");
+ msgdiv.innerHTML = msg;
+ $(this.popup).append(msgdiv);
+ }
+
+ $(this.popup).appendTo('#BookReader');
}
// removeProgressPopup
};
$().ready(function(){
$('#BRtoolbar').animate({top:0},3000).animate({top:-40});
- $('#BRnav').animate({bottom:0},3000).animate({bottom:-40});
+ $('#BRnav').animate({bottom:0},3000).animate({bottom:-53});
changeArrow();
- $('.BRnavCntl').animate({opacity:1},4000).animate({opacity:.25},1000);
+ $('.BRnavCntl').animate({opacity:1},3000).animate({height:'43px'}).animate({opacity:1},1000).animate({opacity:.25},1000);
$('.BRnavCntl').click(
function(){
if ($('#BRnavCntlBtm').hasClass('BRdn')) {
$('#BRtoolbar').animate({top:-40});
- $('#BRnav').animate({bottom:-40});
+ $('#BRnav').animate({bottom:-53});
$('#BRnavCntlBtm').addClass('BRup').removeClass('BRdn');
- $('.BRnavCntl').animate({opacity:1},1000).animate({opacity:.25},1000);
+ $('.BRnavCntl').animate({height:'43px'}).animate({opacity:1},1000).animate({opacity:.25},1000);
} else {
$('#BRtoolbar').animate({top:0});
$('#BRnav').animate({bottom:0});
$('#BRnavCntlBtm').addClass('BRdn').removeClass('BRup');
- $('.BRnavCntl').animate({opacity:1});
+ $('.BRnavCntl').animate({opacity:1,height:'30px'});
};
}
);