/*
 * allrights reserved by tategakibunko
 * url : http://tategakibunko.mydns.jp
 * blog : http://tategakibunko.blog83.fc2.com
 */


var V={req:function(d){var c=Host.cgi("ndata");var a=this.parser.getLayout();var e=a.fontSize+":"+a.width+":"+a.height+"@"+screen.width+":"+screen.height;var b="?nid="+this.nid+"&uid="+this.uid+"&fpos="+this.buff_no+"&theme="+this.theme+"&misc="+e;if(this.bm_loading){b+="&bm=true"}if(this.domain=="exh"){b+="&domain=exh"}$.get(c+b,this.rcv)},setMeterRating:function(a){var b=document.getElementById("meter-bar");var c=b.style;c.width=(a<28)?"28%":a+"%";b.className=(V.bm_loading)?"meter-loading":"meter-normal";b.innerHTML=a+"%&nbsp;"},updateMeter:function(a){this.setMeterRating(this.parser.getSeekPercent(a))},rcv:function(b){if(b!=""){V.parser.getTextStream().addBuffer(b);V.buff_no++;V.write(V.page_no)}else{var a=("　テキストデータが見つかりませんでした。\n　このエラーの詳細については<b><a href='http://tategakibunko.blog83.fc2.com/blog-entry-337.html'>こちら</a></b>を参照してください。");V.parser.getTextStream().setBuffer(a,a.length);V.buff_no=V.chunk_count;V.write(V.page_no)}},seekLog:function(c){var b=Host.cgi("slog");var a="?nid="+this.nid+"&writer="+this.uid+"&seek="+c.spos+"&cpos="+c.cpos;$.get(b+a)},write:function(a){try{this.writing=true;this.bm_loading=false;var h=this.parser.outputPage(a);if(h!=""){$("#"+this.containerId).html(h)}this.updateMeter(a);this.writing=false;if(this.login_id!=this.uid&&this.domain=="public"&&!this.iw){if(this.stamp){var c=new Date();if(a-this.prePageNo==1){var f=(c.getTime()-this.stamp.getTime())/1000;var i=this.parser.getPageSeekPos(a);var j=this.parser.getPageSeekPos(this.prePageNo);var b=i.cpos-j.cpos;var d=b*0.0463;if(f>d){this.seekLog(i)}}this.stamp=c;this.prePageNo=a}else{this.prePageNo=a;this.stamp=new Date();this.seekLog(this.parser.getPageSeekPos(a))}}}catch(g){if(g=="BufferEnd"){if(!this.parser.getTextStream().getEOF()){this.req(this.buff_no)}if(this.bm_loading){this.updateMeter(this.iter_page++)}}else{alert(g)}}},next:function(){if(!this.writing&&!this.dlgOpen&&this.parser.hasNextPage()){this.page_no++;this.write(this.page_no)}},prev:function(){if(!this.writing&&!this.dlgOpen&&this.page_no>0){this.page_no--;this.write(this.page_no)}},rewind:function(){if(this.page_no!=0&&!this.dlgOpen){this.page_no=0;this.write(this.page_no)}},bmCookieName:function(a){return"bm-"+a},bmCookiePath:function(a){if($.browser.name=="msie"){return"/"}else{return"/novel/"+a}},bookmark:function(){var c=this.parser.getBookmarkData(this.page_no);var b=this.bmCookieName(this.nid);var d=this.bmCookiePath(this.nid);var a=new Date();a.setTime(a.getTime()+(360*24*60*60*1000));CookieManager.cookie(b,c,{path:d,expires:a});this.addBookmarkLink()},loadBookmark:function(){var a=CookieManager.cookie(this.bmCookieName(this.nid));this.parser.setBookmarkData(a);this.page_no=this.parser.seekTable.length-2;if(this.page_no<0){this.page_no=0}this.bm_loading=true;this.iter_page=0;this.write(this.page_no)},addBookmarkLink:function(){var a=document.getElementById("bm-functions");a.innerHTML=("<a href='javascript:V.loadBookmark()'>栞を開く</a>&nbsp;(<a href='javascript:V.deleteBookmark()'>削除</a>&nbsp;)");a.style.backgroundColor="#FFFABF";setTimeout("document.getElementById('bm-functions').style.backgroundColor = 'transparent';",400)},deleteBookmark:function(){CookieManager.cookie(this.bmCookieName(this.nid),null,{path:this.bmCookiePath(this.nid)});document.getElementById("bm-functions").innerHTML=""},commitConfigDialog:function(){var a=ViewerConfigForm.getValues();ViewerConfig.save(a);var b=this.parser.getLayout();b.setDirection(a.writingMode);b.setFontSize(a.fontSize);b.setFontFamily(a.fontFamily);b.setWidth(a.width);b.setHeight(a.height);b.setLineHeightRate(this.lineHeightRate);b.setLetterSpacingRate(a.letterSpacing);b.setLayoutEngine(a.engine);b.initialize();this.parser.clearCache();this.write(this.page_no);$("#config-form").dialog("close")},closeConfigDialog:function(){$("#config-form").dialog("close")},formatCharCount:function(e){var a="";var c=["","","","",",","万"];var f=e+"字";for(var b=f.length-1;b>=0;b--){var d=f.substring(b,b+1);a=(f.length-1-b<c.length)?d+c[f.length-1-b]+a:d+a}return a},toggleWmode:function(){if(!this.dlgOpen){var a=this.parser.getLayout();var c=a.getDirection();var b=(c=="vertical")?"horizontal":"vertical";a.setDirection(b);a.initialize();this.parser.clearCache();this.write(this.page_no)}},create:function(h,d){this.theme=(typeof d.theme!="undefined")?d.theme:"default";this.iw=(typeof d.iw!="undefined")?d.iw:false;this.containerId=h;this.page_no=0;this.buff_no=0;this.novel_bg_cache="";this.bm_loading=false;this.nid=d.nid;this.uid=d.uid;this.login_id=d.login_id;this.domain=d.domain;this.chunk_count=d.file_count;this.char_count=d.char_count;this.lineHeightRate=1.8;this.engine="table";var o=(screen.height>=1024)?18:(screen.height>=768)?16:14;var k=($.os.name=="win")?"ＭＳ 明朝":"Hiragino Mincho Pro";var j=(typeof d.font_color=="undefined")?"222":d.font_color.toLowerCase();var l="vertical";var m=Math.floor(screen.height*53/100);var a=Math.floor(screen.width*45/100);var b=0.14;var f=400;var i=(this.theme=="minimal")?0:2;if(CookieManager.cookie("writingMode")){l=CookieManager.cookie("writingMode")}if(CookieManager.cookie("fontSize")){o=parseInt(CookieManager.cookie("fontSize"))}if(CookieManager.cookie("fontFamily")){k=decodeURIComponent(CookieManager.cookie("fontFamily"))}if(CookieManager.cookie("height")){m=parseInt(CookieManager.cookie("height"))}if(CookieManager.cookie("width")){a=parseInt(CookieManager.cookie("width"))}if(CookieManager.cookie("letterSpacing")){b=parseFloat(CookieManager.cookie("letterSpacing"))}if(CookieManager.cookie("engine")){this.engine=CookieManager.cookie("engine")}ViewerConfig.save({writingMode:l,fontSize:o,fontFamily:k,width:a,height:m,letterSpacing:b,theme:this.theme,engine:this.engine});if(typeof this.rawText!="undefined"){var g=new WashiTextStream(this.rawText,this.rawText.length,true)}else{var g=new WashiTextStream("",this.char_count,false)}this.parser=new WashiStreamParser(new WashiLayout({width:a,height:m,fontSize:o,fontFamily:k,lineHeightRate:1.8,letterSpacingRate:b,direction:l,charImgRoot:d.charImgRoot,kinsokuCharCount:i,engine:this.engine}),g);var e=this.bmCookieName(this.nid);var c=this.bmCookiePath(this.nid);if(CookieManager.cookie(e)){this.addBookmarkLink()}var n=this;$("a.next").click(function(){n.next();return false});$("a.prev").click(function(){n.prev();return false});$("a.rewind").click(function(){n.rewind();return false});shortcut.add("left",function(){n.next()});shortcut.add("right",function(){n.prev()});shortcut.add("up",function(){n.toggleWmode()});shortcut.add("down",function(){n.toggleWmode()});shortcut.add("ctrl+home",function(){n.rewind()});shortcut.add("ctrl+right",function(){n.rewind()});$("a.open-config-dialog").click(function(){$("#config-form").dialog({bgiframe:true,width:f,resizable:false,modal:true,title:"<span style=\"font-family:'メイリオ'\">表示設定の変更</span>",beforeclose:function(q,p){n.dlgOpen=false}});ViewerConfigForm.load();$("#config-form").dialog("open");n.dlgOpen=true;return false});if(document.getElementById("read-rate-dialog")){ReadRateDialog.setup()}$("input.cancel-config").click(function(){n.closeConfigDialog()});$("input.commit-config").click(function(){n.commitConfigDialog()});if($.browser.name=="msie"){$("#meter").css("height","22px")}JsWheel.init(document.getElementById("novel-container"),function(){n.prev()},function(){n.next()});this.write(this.page_no)}};
