var BookReader={Version:'0.4.5', Released:'20080707', FontSize:'S', NowLoading:false, CookieManager:null, AutoLoading:true, original:null, dom:null, pages:[''], anchors:[], currentline:0, currentpage:0, ImageStack:[], AnchorStack:[], loadTheme:function(){var s=$A(document.getElementsByTagName("script")).find(function(s){return (s.src && s.src.match(/bookreader\.js(\?.*)?$/))});var theme=(tmp=s.src.match(/\?.*theme=([a-z0-9]*)/)) ? tmp[1]:'default';var language=(tmp=s.src.match(/\?.*language=([a-z0-9_]*)/)) ? tmp[1]:'ja';var path=s.src.replace(/bookreader\.js(\?.*)?$/,'');var themePath=path+'themes/'+theme+'/';var os='default';if(navigator.userAgent.indexOf('Mac OS X') > -1) os='mac';if(navigator.userAgent.indexOf('Windows NT 6') > -1) os='vista';document.write('<sc'+'ript type="text/javascript" src="'+path+'languages/'+language+'.js"></script>');document.write('<sc'+'ript type="text/javascript" src="'+themePath+os+'.js"></script>');document.write('<link rel="stylesheet" type="text/css" href="'+themePath+'style.css" media="screen" />');document.write('<link rel="stylesheet" type="text/css" href="'+themePath+os+'.css" media="screen" />');}, autoload:function(){if(BookReader.AutoLoading) BookReader.load();if(anc=location.hash) BookReader.go2anchor(anc);}, load:function(){BookReader.original=$$('div#bookreader').first();BookReader.dom=new Element('div', {'id':'br_body'});Element.insert(BookReader.original, {after:BookReader.dom});BookReader.loadCookie();BookReader.updatePages();BookReader.setKeyEvent();}, updatePages:function(){if(this.NowLoading) return;this.NowLoading=true;BookReader.makePages();BookReader.showPages();BookReader.go2first();this.NowLoading=false;}, makePages:function(){BookReader.pages=[''];BookReader.anchors=[];BookReader.currentline=0;BookReader.currentpage=0;BookReader.original.childElements().each(function(elm){var tag=elm.tagName;var fontsize=BookReader.FontSize;var maxline=BookReader.Theme[fontsize].MaxLine;var maxletter=BookReader.Theme[fontsize].MaxLetter;var maxletterH2=BookReader.Theme[fontsize].MaxLetterH2;switch (tag){case 'DIV':case 'P':s=elm.innerHTML;t=BookReader.Utils.dividelines(s, maxletter);t.each(function(line){if(BookReader.currentline >= maxline || line == '<HR />'){BookReader.insertPage();} if(line != '<HR />'){if(elm.align == 'right'){BookReader.pages[BookReader.pages.length-1]+='<P class="'+fontsize+' right">'+line+'</P>';} else if(elm.align == 'center'){BookReader.pages[BookReader.pages.length-1]+='<P class="'+fontsize+' center">'+line+'</P>';} else {BookReader.pages[BookReader.pages.length-1]+='<P class="'+fontsize+'">'+line+'</P>';} BookReader.currentline++;}});break;case 'H1':if(BookReader.currentline >= maxline-3){BookReader.insertPage();} BookReader.pages[BookReader.pages.length-1]+='<H1 class="'+fontsize+'">'+elm.innerHTML+'</H1>';BookReader.currentline+=3;break;case 'H2':t=BookReader.Utils.dividelines(elm.innerHTML, maxletterH2);if(BookReader.currentline >= maxline-t.length*2){BookReader.insertPage();} t.each(function(line){BookReader.pages[BookReader.pages.length-1]+='<H2 class="'+fontsize+'">'+line+'</H2>';BookReader.currentline+=2;});break;case 'H3':if(BookReader.currentline >= maxline-2){BookReader.insertPage();} if(BookReader.currentline > 0){BookReader.pages[BookReader.pages.length-1]+='<P>&nbsp;</P>';BookReader.currentline+=1;} BookReader.pages[BookReader.pages.length-1]+='<H3 class="'+fontsize+'">'+elm.innerHTML+'</H3>';BookReader.currentline+=1;break;case 'HR':if(BookReader.currentline > 0) BookReader.insertPage();break;case 'IMG':w=elm.readAttribute('width');if(!w || w > BookReader.Theme.LineWidth) w=BookReader.Theme.LineWidth;alt=elm.readAttribute('alt');temp='<IMG src="'+elm.readAttribute('src')+'" width="'+w+'" style="margin-top:10px;" />';if(alt) temp+='<P class="caption">'+elm.readAttribute('alt')+'</P>';if(BookReader.pages.length == 1 && BookReader.pages[0] == ''){BookReader.pages[0]+=temp;BookReader.insertPage();} else BookReader.ImageStack.push(temp);break;}});BookReader.insertImage();}, insertPage:function(){BookReader.insertAnchor();BookReader.insertImage();BookReader.pages.push('');BookReader.currentline=0;}, insertAnchor:function(){if(BookReader.AnchorStack.length){BookReader.AnchorStack.each(function(anc){BookReader.anchors[anc]=BookReader.pages.length-1;});BookReader.AnchorStack=[];}}, insertImage:function(){if(BookReader.ImageStack.length){BookReader.ImageStack.each(function(image){BookReader.pages.push(image);});BookReader.ImageStack=[];}}, showPages:function(){var html='';var t=0.40;BookReader.pages.each(function(page, index){html+='<DIV class="page"><DIV class="box">'+page+'</DIV><SPAN class="folio">'+(index+1)+'</SPAN></DIV>';});html='<DIV style="width:'+ (BookReader.pages.length*(BookReader.Theme.PageWidth+1)+BookReader.Theme.PageMarginLeft) +'px" id="br_container">'+html+'</DIV>';html+='<A class="br_nav_button" id="br_nav_prev2" href="#" title="'+BookReader.Language.ButtonTitleGoToPrev2.replace('#',BookReader.Theme.Columns)+'" onclick="BookReader.go2prev2();return false;" onmouseover="new Effect.Opacity (this,{from:'+t+', to:0.99, duration:0.2})" onmouseout="new Effect.Opacity (this,{from:0.99, to:'+t+', duration:1.0})">&nbsp;</A>';html+='<A class="br_nav_button" id="br_nav_prev" href="#" title="'+BookReader.Language.ButtonTitleGoToPrev+'" onclick="BookReader.go2prev();return false;" onmouseover="new Effect.Opacity (this,{from:'+t+', to:0.99, duration:0.2})" onmouseout="new Effect.Opacity (this,{from:0.99, to:'+t+', duration:1.0})">&nbsp;</A>';html+='<A class="br_nav_button" id="br_nav_next" href="#" title="'+BookReader.Language.ButtonTitleGoToNext+'" onclick="BookReader.go2next();return false;" onmouseover="new Effect.Opacity (this,{from:'+t+', to:0.99, duration:0.2})" onmouseout="new Effect.Opacity (this,{from:0.99, to:'+t+', duration:1.0})">&nbsp;</A>';html+='<A class="br_nav_button" id="br_nav_next2" href="#" title="'+BookReader.Language.ButtonTitleGoToNext2.replace('#',BookReader.Theme.Columns)+'" onclick="BookReader.go2next2();return false;" onmouseover="new Effect.Opacity (this,{from:'+t+', to:0.99, duration:0.2})" onmouseout="new Effect.Opacity (this,{from:0.99, to:'+t+', duration:1.0})">&nbsp;</A>';html+='<TABLE id="br_pagenation" cellspacing="0">';BookReader.pages.each(function(page, index){html+='<TD id="br_pagenation_'+index+'" onclick="BookReader.go2page('+index+');"></TD>';});html+='</TABLE>';html='<DIV id="br_fixedframe">'+html+'</DIV>';BookReader.dom.innerHTML=html;setTimeout("new Effect.Opacity ('br_nav_prev2',{from:0.00, to:"+t+", duration:1.0});", 200);setTimeout("new Effect.Opacity ('br_nav_prev',{from:0.00, to:"+t+", duration:1.0});", 200);setTimeout("new Effect.Opacity ('br_nav_next2',{from:0.00, to:"+t+", duration:1.0});", 200);if(BookReader.pages.length <= 1){setTimeout("new Effect.Opacity ('br_nav_next',{from:0.00, to:"+t+", duration:1.0});", 200);} else {setTimeout("new Effect.Opacity ('br_nav_next',{from:0.00, to:0.99, duration:0.7});", 200);setTimeout("new Effect.Opacity ('br_nav_next',{from:0.99, to:0.00, duration:0.7});", 1000);setTimeout("new Effect.Opacity ('br_nav_next',{from:0.00, to:0.99, duration:0.7});", 1800);setTimeout("new Effect.Opacity ('br_nav_next',{from:0.99, to:0.00, duration:0.7});", 2600);setTimeout("new Effect.Opacity ('br_nav_next',{from:0.00, to:0.99, duration:0.7});", 3400);setTimeout("new Effect.Opacity ('br_nav_next',{from:0.99, to:0.00, duration:0.7});", 4200);setTimeout("new Effect.Opacity ('br_nav_next',{from:0.00, to:"+t+", duration:0.7});", 5000);}}, go2anchor:function(anc){if((anc=anc.replace('#','')) && BookReader.anchors[anc]){setTimeout("BookReader.go2page("+BookReader.anchors[anc]+")",500);}}, go2prev2:function(){BookReader.go2page(BookReader.currentpage-BookReader.Theme.Columns+1);}, go2prev:function(){BookReader.go2page(BookReader.currentpage);}, go2next:function(){BookReader.go2page(BookReader.currentpage+1);}, go2next2:function(){BookReader.go2page(BookReader.currentpage+BookReader.Theme.Columns);}, go2first:function(){BookReader.go2page(0);}, go2last:function(){BookReader.go2page(BookReader.pages.length-1);}, go2page:function(p){container=$('br_container');if(!BookReader.NowLoading && p <= BookReader.currentpage) BookReader.currentpage=p - 1;else BookReader.currentpage=p;if(BookReader.currentpage < 0){BookReader.currentpage=0;new Effect.Move (container,{x:BookReader.Theme.PageMarginLeft-30, y:0, mode:'absolute', duration:0.2});setTimeout("new Effect.Move (container,{x:BookReader.Theme.PageMarginLeft, y:0, mode:'absolute', duration:0.2})", 200);} else if(BookReader.currentpage > BookReader.pages.length-1){BookReader.currentpage=BookReader.pages.length-1;new Effect.Move (container,{x:-(BookReader.currentpage*(BookReader.Theme.PageWidth+1)-BookReader.Theme.PageMarginLeft+30), y:0, mode:'absolute', duration:0.2});setTimeout("new Effect.Move (container,{x:-(BookReader.currentpage*(BookReader.Theme.PageWidth+1)-BookReader.Theme.PageMarginLeft), y:0, mode:'absolute', duration:0.2})", 200);} else {new Effect.Move (container,{x:-(BookReader.currentpage*(BookReader.Theme.PageWidth+1)-BookReader.Theme.PageMarginLeft), y:0, mode:'absolute', duration:0.5});} BookReader.pages.each(function(page, p){$('br_pagenation_'+p).style.backgroundColor='';});if($('br_pagenation_'+BookReader.currentpage)) $('br_pagenation_'+BookReader.currentpage).style.backgroundColor='#999999';if($('br_pagenation_'+(BookReader.currentpage+1))) $('br_pagenation_'+(BookReader.currentpage+1)).style.backgroundColor='#999999';}, setKeyEvent:function(){Event.observe(document, 'keydown', function(e){var c=(e.charCode) ? e.charCode:e.keyCode;switch (c){case 63232:case 63276:case 33:case 66:case Event.KEY_UP:BookReader.go2prev2();return false;case 63233:case 63277:case 32:case 34:case Event.KEY_DOWN:BookReader.go2next2();return false;case 63234:case 80:case Event.KEY_LEFT:BookReader.go2prev();return false;case 63235:case 78:case Event.KEY_RIGHT:BookReader.go2next();return false;case 63273:case 36:BookReader.go2first();return false;case 63275:case 35:BookReader.go2last();return false;}});}, changeFontSize:function(size){size=(size == 'L' || size == 'M') ? size:'S';if(size == BookReader.Theme.FontSize) return;BookReader.FontSize=size;BookReader.updatePages();if(BookReader.CookieManager){BookReader.CookieManager.setCookie('bookreader.fontsize', size);}}, loadCookie:function(){if(typeof CookieManager=='undefined') return;BookReader.CookieManager=new CookieManager();var size=BookReader.CookieManager.getCookie('bookreader.fontsize');if(size == 'L' || size == 'M') BookReader.FontSize=size;}, deactivate:function(){BookReader.dom.style.display='none';BookReader.original.style.display='block';}, activate:function(){BookReader.dom.style.display='block';BookReader.original.style.display='none';}};BookReader.Utils={dividelines:function(str, maxletter){var kinsokuOkuri='「『（〈([{';var kinsokuModoshi='。、」』）〉.,!)]}';str=escape(str);lines=[];pos=0, n=0, len=0, dif=1, w=1, tag=false, tagstr='', tagpos=-1, entity=false, entstr='', nobr=false;while (pos < str.length){if(str.charAt(pos) == "%" && str.charAt(pos+1) == "u"){dif=6, w=2;} else if(str.charAt(pos) == "%"){dif=3, w=1;} else {dif=1, w=1.1;} c=unescape(str.substr(pos, dif));if(c == '<'){tag=true;tagpos=pos;} if(!tag && c == '&'){entity=true;} if(tag){tagstr+=c;pos+=dif;len+=0;} else if(entity){entstr+=c;pos+=dif;len+=0;} else {if(len == 0 && pos > 0　&& kinsokuModoshi.indexOf(c) > -1){lines[lines.length-1]+=c;pos+=dif;len=0;n=pos;} else {if(len == 0){lines.push(c);}　else {lines[lines.length-1]+=c;　} pos+=dif;len+=w;nobr=false;}} if(c == '>' && tagstr != ''){tagname=tagstr.match(/\w+/i).toString().toUpperCase();closing=(null != tagstr.match(/\/\w+/i));o='';getAtt=function(str, attlist){temp={};attlist.split(',').each(function(attname){r=new RegExp(attname+'=\"([^\"]*)\"', 'i');r2=new RegExp(attname+'=([^\"\s>]+)', 'i');if(t=str.match(r)){temp[attname]=t[1];} else if(t=str.match(r2)){temp[attname]=t[1];} else {temp[attname]='';}});return temp;};switch (tagname){case 'SPAN':case 'STRONG':case 'STRIKE':case 'EM':case 'I':case 'B':case 'DEL':o=tagstr;break;case 'A':if(closing){o=tagstr;} else {att=getAtt(tagstr, 'name,href,target');if(att.name) BookReader.AnchorStack.push(att.name);o='<a';if(att.href){o+=' href="'+att.href+'"';if(att.target) o+=' target="'+att.target+'"';if((!att.target || att.target == '_self') && (null != att.href.match(/^#/i))) o+=' onclick="BookReader.go2anchor(\''+att.href+'\');"';} o+='>';} break;case 'BR':if(nobr){nobr=false} else {o=tagstr};break;case 'HR':lines.push('<HR />');len=0;break;case 'IMG':letterwidth=BookReader.Theme.LineWidth / BookReader.Theme[BookReader.FontSize].MaxLetter;att=getAtt(tagstr, 'src,width,alt,class');if(!att.width) att.width=letterwidth*2.0;if(att['class'] != 'illustration'){o='<img src="'+att.src+'" style="" width="'+att.width+'" alt="'+att.alt+'">';len+=att.width/letterwidth;} break;}if(o){if(len == 0){lines.push(o);} else {lines[lines.length-1]+=o;　} len+=0.1;} if(tagname == 'BR'){len=0;n=pos;} tag=false;tagstr='';tagpos=-1;} if(entity && c == ';'){if(len == 0){lines.push(entstr);} else {lines[lines.length-1]+=entstr;　} len+=1;entity=false;entstr='';} if(len >= maxletter || pos == str.length){if(kinsokuOkuri.indexOf(c) > -1){lines[lines.length-1]=lines[lines.length-1].substr(0,lines[lines.length-1].length-1);n=pos-dif;len=w;lines.push(c);} else {n=pos;len=0;} nobr=true;}} return lines;}};BookReader.loadTheme();Event.observe(window, 'load', function(){BookReader.autoload();});