nav4 = window.Event ? true : false;

html=1; numberlines=0; shownonprint=0
var pg1titl=1,pagemem=1;

var gotkey=0,pgnum=1,prevbook=1,prevpage=1,accum="",chbook=0,pgbrk=0
var numboxes=1,moveon=0,dir=1,linectr=0,yinc=0,jumpbk=0;
var defclass,defcolor,grndcolr,lppg,cpl,pg1linctr,pg1top,family,fsize,linht,linsp
var txcolr,txmarg,txtopmarg,refer;

var maxwid,maxht;maxwid=maxwid||750;maxht=maxht||400;
var lmarg,spcng=8,topmarg;lmarg=lmarg||160;topmarg=topmarg||80;
var scrolspeed=16,inctime=10;slidspeed=8
//var defwid0=(maxwid-spcng-lmarg)/2
var lastpad=26

image1 = new Image();
image1.src = "http://www.c3f.com/cgi-bin/logit?"+refer;

if(!defclass)defclass="setintext";
if(!defcolor)defcolor="ffffff";
if(!grndcolr)grndcolr="f0f0f0"
if(!lppg)lppg=25 //21;
if(!cpl)cpl=39 //30;
if(!pg1linctr)pg1linctr=5;
if(!pg1top)pg1top=37 //~12  //40  needs to change w/ txtopmarg
if(!family)family="verdana";
if(!fsize)fsize=11 //10;
if(!linht)linht=13 //11;
if(!linsp)linsp=0;
if(!txcolr)txcolr=333333;
if(!txmarg)txmarg=30
if(!txtopmarg)txtopmarg=30  //40
pretitletop=6; //12 may affect pg1top
function inits(){
  currnum=1;nrows=0;rownum=1;curry=topmarg;currx=lmarg;
  defwid0=(maxwid-spcng-lmarg)/2
  defht=maxht-pretitletop;udmove=defht+44;
  postitletop=txtopmarg-pretitletop-linht-2
  defwid=defwid0-txmarg;xinc=defwid0+spcng;rlmove=2*xinc;
}
inits()

slot2=maxwid+spcng; pageb=spcng+defwid0; orgloc=xinc*2 // more descriptive names

function titlebar(){
  window.document.title="CORE DUMP vol.1 no.1 "+ bktitl[rownum]+" Page "+(pgnum*2-1)+"-"+(pgnum*2)+"  -  JWTBF Multinovel Reader v1.0  -  Bill Gates, your software is shit ";
}
document.write("<style type='text/css'>")
document.write("p"+
   "{border-style:solid;border-top-width:0px;border-bottom-width:0px;"+
   "border-left-width:0px;border-right-width:0px;}"+
   ".setintext,.title{font-family:"+family+";font-size:"+fsize+"px;color:"+txcolr+";line-height:"+linht+"px;}"+
   ".text{font-family:verdana;font-size:11px;line-height:13px;}"+
   ".text1{font-family:verdana;font-size:12px;line-height:14px;}"+
   ".text2{font-family:verdana;font-size:13px;line-height:15px;}"+
   ".text3{font-family:times new;font-size:11px;line-height:13px;}"+
   ".top{margin-top:18px;margin-bottom:0px;}"+
   ".bot{margin-top:11px;margin-bottom:0px;}"+
   ".botpad{margin-top:23px;margin-bottom:0px;}"+
   ".lthalfsp{margin-top:3px;}"+
   ".halfsp{margin-top:-2px;}"+
   "p,.linsp{margin-top:"+linsp+"px;}"+
   "#info{position:absolute;left:"+(defwid+spcng+lmarg+19)+";top:"+(defht+24)+";z-index:20;text-align:center;"+
      "border-style:solid;border-width:1px;border-color:770000;background-color:dddddd;width:20;visibility:hidden;}"+
   "#info2{position:absolute;color:444444;left:161;top:67;font-family:verdana;font-size:8px;z-index:30;}"+
   ".forspacer{font-size:4px;font-height:4px;}"+
   ".title{font-family:courier new;font-size:11px;color:404040;font-weight:100;}")
document.write("</style>")

function whcode(e){ if (nav4) return(e.which); else return(e.keyCode); }
function codes(e) {
  if(moveon)return(0)
  datime()
  code=whcode(e)
  gotkey=0
  if (code==45 || (!nav4 && (code==37 || code==109 || code==189 || code==33))) {prevpg();gotkey=1;} //prev
   else if (code==61 || code==43 || (!nav4 && (code==39 || code==107 || code==187 || code==34))){nexpg();gotkey=1;} //next
//     else if((nav4?code==42:(code==40||code==106))) {proxbook(1);gotkey=1} //DNarrow
//     else if((nav4?code==47:(code==38||code==111))) {proxbook(-1);gotkey=1} //UParrow
//     else if(code==99 || code==67)moveto(prevbook,prevpage) //C to prev bk pg
//     else if(code==98 || code==66)openwin("coredump.htm","crdmp") // B
//     else if(code==98 || code==66)setbook() // Book
//     else if(code==100 || code==68)repag(2) // D repag using Default layout parms
//     else if(code==106 || code==74)jumpmark() // Jump to Bookmark
//     else if(code==107 || code==75)for(i=3;i<=16;i++)hide("ln"+i) // K
//     else if(code==112 || code==80)repag() //Paginate repag using text
//     else if(code==113 || code==81)repag(1) //Q  repag using text1
//     else if(code==114 || code==82)findtag("BOOKMARK") //R 
//     else if(code==122 || code==90)scrollTo(0,0) //Z  scrollTo(0,0)
     else if(code>=48 && code<=57)dodigits(code-48);
     else if(code==13) docr(e)
}
function findtag(soughtag){
 ntags=document.all.length; for(i=0;i<ntags;i++)
  if(document.all[i].tagName==soughtag){book=document.all[i].book;page=document.all[i].page;i=ntags+1;}
  if(i>ntags)return(1);else return(0)
}
function jumpmark(){
 if(findtag("BOOKMARK")){page=Math.floor(++page/2);scrollTo(0,0);moveto(book,page,1)} else {scrollTo(0,0);moveto(1,1,1)}
}
function repag(fmt){
  if(!fmt)  {cpl=39;lppg=25;txtopmarg=30;txmarg=30;pg1top=37;linht=13;defclass="setintext";}
  if(fmt==1){cpl=36;lppg=23;txtopmarg=30;txmarg=14;pg1top=39;linht=13;defclass="text1";}
  if(fmt==2){cpl=52;lppg=35;txtopmarg=30;pg1top=37;linht=13;defclass="setintext";}
  inits();showstr(document.all.blarg.innerHTML);pgnum=1;titlebar()
}
function comm(str){str="<font size=1 face=verdana>"+str+"</a>";setobj("info","top",rownum*(defht+113)-58);setobj("info","visibility","visible");insert("info",str)}
function insert(obj,str){
  if(nav4) with(document[obj]){with(document){open();write(str);close();}}
   else  with(document.all[obj]){innerHTML=str;}
}
function tabler(clas,bg,wid,ht){
 if(!ht)ht=defht
 if(!wid)wid=defwid
 return("<table border=0 height="+ht+" cellpadding="+(nav4?6:8)+" cellspacing=0 width="+(nav4?wid:wid+4)+"><tr><td width="+(nav4?wid:wid+4)+" valign=top bgcolor="+bg+" class="+ clas+">")
}
function gendiv(name,clas,x,y,bord){
  return("<div id="+name+" class=" +clas+" style='position:absolute;padding-left:"+
    txmarg+"px;padding-top:"+pretitletop+"px;border-style:"+bord+
    ";border-color:f0f0f0 777777 f0f0f0 f0f0f0;border-width:1px;background-color:"+
    defcolor+";left:"+x+";top:"+y+";'>")
}
function box(x,y,clas,bg,wid,ht,bord){
  if(currnum%2)currx=lmarg;else currx=lmarg+xinc;if(!x)x=currx;if(!y){y=curry;curry+=yinc;}
  currname="ln"+ currnum++
  if(!clas)clas=defclass;if(!bg)bg=defcolor;if(!wid)wid=0;
  if(!bord)bord="solid"; else bord="none"
  lstr=gendiv(currname,clas,x,y,bord)
  lstr+=tabler(clas,bg,wid,ht)
  return(lstr)
}
function boxend(pagenum){
  if(!pagenum)pagenum=''
  if(nav4)return(pagenum+"<p></p></table></div>")
    else return(pagenum+"</tr></td></table></div>")
}
//  ------------------------------------- page change ------------------------  //

function nexpg(){
 if(2*pgnum<bksiz[rownum]){
   pgnum++;
   show("ln"+2*pgnum);show("ln"+((2*pgnum)-1))   
   pgpairto(slot2);slidectr=slidspeed+1;moveon=1;t=setInterval("slidein()",inctime)
   image1.src = "http://www.c3f.com/cgi-bin/logit?"+pgnum;
 }
}
function prevpg(){
 if(pgnum!=1){setboxids();slidectr=slidspeed+1;moveon=1;t=setInterval("slideout()",inctime)}
}
function pgpairto(x,nosb){
  if(!nosb)setboxids(); x2=x+pageb; setobj(boxid,"left",x); setobj(boxid2,"left",x2);
}
function setboxids(){bx=bkend[rownum-1]+pgnum*2-1;boxid="ln"+bx++; boxid2="ln"+bx}
function slidein(){ if(!slide(-1)){clearInterval(t);show(boxid);show(boxid2);moveon=0;titlebar();} }
function slideout(){
 if(!slide(1)){clearInterval(t);pgnum--;pgpairto(lmarg,1);hide(boxid);hide(boxid2);if(jumpbk)pgnum=jumpbk;jumpbk=0;moveon=0;titlebar()}
}
function slide(dr){
 if(--slidectr){move(boxid,rlmove/(dr*slidspeed),"left");move(boxid2,rlmove/(dr*slidspeed),"left")}
 return(slidectr)
}
//  ------------------------------------ book change ---------------------------  //
function proxbook(dr,repeated){
  if(!repeated){currpg[rownum]=pgnum;unstackto(1,1);}
  if((dr>0 && rownum<nrows)||(dr<0 && rownum>1)){
    rownum+=dr;scrolctr=scrolspeed+1;remains=(defht+44)%scrolspeed
    moveon=1;t=setInterval("scrolupdn("+dr+")",inctime)
   }
}
function scrolupdn(dr){
 if(!scrol(dr)){clearInterval(t);scrollBy(0,dr*remains);moveon=0;titlebar();if(pagemem)moveto(rownum,currpg[rownum])}
}
function scrol(dr){if(--scrolctr)scrollBy(0,(defht+44)/(dr*scrolspeed));return(scrolctr)}

function stackto(topgn){while(pgnum<topgn-1){++pgnum;setboxids();show(boxid);show(boxid2);pgpairto(lmarg);}nexpg()}
function unstackto(topgn,preupdn){
  if(!preupdn){jumpbk=topgn;svpg=pgnum--;}
  while(pgnum>topgn){setboxids();hide(boxid);hide(boxid2);pgnum--;pgpairto(lmarg,1);}
  if(!preupdn){pgnum=svpg;prevpg();}
}
function moveto(book,page,chboth){
  if(chbook || chboth){
     currpg[rownum]=pgnum;unstackto(1,1);
     if(book<rownum)while(book<rownum){scrolctr=2;scrol(-1/scrolspeed);rownum--}
        else if(book>rownum)while(book>rownum){scrolctr=2;scrol(1/scrolspeed);rownum++}
	 chbook=0; titlebar();if(chboth)moveto(0,page); else if(pagemem)moveto(rownum,currpg[book])
    }
    else if(pgnum<page)stackto(page);else if(pgnum!=page)unstackto(page)
}
function move(obj,inc,parm){pos=getobj(obj,parm); setobj(obj,parm,pos+inc);return (0)}
function setbook(){chbook=1;comm("&nbsp");}
function dodigits(num){accum=accum+num;comm(accum);}
function jumpage(){
  if(!chbook){if(accum<=bksiz[rownum]){accum=Math.floor(++accum/2);moveto(rownum,accum)}}
	else if(accum<=nrows)moveto(accum,pgnum)
}
function infonoff(on){if(on)setobj("info","visibility","visible"); else setobj("info","visibility","hidden");}
function docr(e){if(!nav4)e.returnValue=false;if(accum!="")jumpage(); else {comm(pgnum)};infonoff(0);accum="";chbook=0;}
function setobj(obj,parm,val){if(nav4)document[obj][parm]=val; else document.all[obj].style[parm]=val; }
function getobj(obj,parm){if(nav4)currp=document[obj][parm]; else currp=getieobj(obj,parm)
   return(currp)
}
function getieobj(obj, parm){currp=document.all[obj].style[parm];
   if(parm=="top"||parm=="left")currp=parseInt(currp.substring(0,currp.length-2)); return(currp);}
function spacer(ns,ie){
    return("<p style='margin-top:"+ns+";'>")
}
function paginate(str){
  strsize=str.length-1; linectr=pg1linctr
  finpage=""; book1=1; i=0
  while (i<strsize){
     newbk=0;linebuf="";gotalph=0;tag="";nocount=0;pgbrk=0
	 for(j=0;j<cpl+nocount;j++){
	   currchr=str.substring(i+j,i+j+1)
       currcode=currchr.charCodeAt(0)
       if(currcode!=13 && currcode!=32 && currcode!=10 && currchr!="<")gotalph=1
       if(currchr==" ")lastsp=j
       if(currchr=="&"){j+=5;nocount+=6;currchr="&nbsp;"}
       if(shownonprint)if(currcode<32)currchr=currcode
//       if(currcode==13){
//          currchr="xxxxx<br><br><p>yyyyy";linectr++;j=cpl+1+nocount;i=i+j+3
//         }
       if(currchr=="<"){
          tagsize=parsetag(str,j+i)
          currchr=str.substring(i+j,i+j+tagsize+1) // set currch to whole tag
		  tag=str.substring(i+j+1,i+j+2)
		  if(tag=="B" && str.substring(i+j+2,i+j+3)=="R")tag="BR"
		  if(tag=="BR" && numberlines)currchr=linectr+currchr // for debug
		  if(tag=="/" && str.substring(i+j+2,i+j+3)=="P")tag="/P" //put on fin bk end by??
		  if(tag=="N"){newbk=++nrows;if(!gotalph)linectr--;lastlin=linectr;linectr=lppg;set_title(str,j+i)}
		  if(tag=="K"){if(!gotalph)linectr--;lastlin=linectr;linectr=lppg;pgbrk=1}
          if(gotalph && tag=="P"){linectr++;if(numberlines)linebuf+=(linectr-1)}
          if(linectr==lppg-1 && tag!="BR" && tag!="N" && tag!="B" && tag!="I" && tag!="/")currchr="<P class=botpad>"
		  if(tag!="B" && tag!="I" && tag !="/")i=i+j+tagsize+1 //only ch i if tag causes newline
//		  if(tag=="P" || tag=="N")i=i+j+tagsize+1 //only ch i if tag causes newline		  
		  if(tag=="B" || tag=="I" )nocount+=3; if(tag=="/")nocount+=4;
          if(tag=="B" || tag=="I" || tag=="/")j+=tagsize; else j=cpl+1+nocount
        }
	   linebuf+=currchr
     }
     if(j<=cpl+nocount){
	   if(lastsp==j-1 || str.substring(j+i,j+i+1)==" "){i+=cpl+nocount}
        else {linebuf=str.substring(i,i+lastsp);i+=lastsp}
	  }
	 if(numberlines && tag!="BR" && (tag!="P" || linectr<34))linebuf+=" "+linectr  // for debug
	 if(tag!="N")linectr++;
	 if(linectr>=lppg){
	    linectr=0;
        if(!book1){
	        finpage+=linebuf
	        if(i<strsize)finpage+=endpage(pgnum)
            if(newbk){bksiz[nrows-1]=pgnum} //num pgs in prev bk; bk1 has no prev
		   }
	      else {book1=0;finpage="";}
	    if(newbk)pgnum=1; else pgnum++; //ONLY PGNUM++ in paginate,but 1 also in termove
	    if(i<strsize)finpage+=newpage(newbk)
	  } else finpage+=linebuf+(tag!="BR"?"<br>":"");
   }       
  bksiz[nrows]=pgnum // size of last book
  bkend[0]=0;for(i=1;i<=nrows;i++)eval("bkend["+i+"]=bkend["+(i-1)+"]+bksiz["+i+"];")
  numboxes=currnum-1
  lastlin=linectr-1; newbk=100 //so endpage fills last page of last book
  return(finpage+endpage(pgnum)) //+ box()+boxend(++pgnum))
}
function newpage(newbook){ //bump nrows before newpage
 topstr="<center><a href=x onclick='proxbook("+(pgnum%2?-1:1)+");self.focus();return false;' class=title>"+bktitl[nrows]+"</a></center>"+
        "<p style='margin-top:"+postitletop+";'>"
 pg1topstr="<table border=0 height="+pg1top+"><tr>"+
     "<td class=forspacer>&nbsp;</td></tr></table>"+
     "<center><b><a href=x onclick='proxbook(-1);return false;' class=title>"+(pg1titl?bktitl[nrows]:1)+"</a></b></center>"+
     "<table border=0 height="+pg1top+"><tr><td class=forspacer>&nbsp;</td></tr></table>"
   if(newbook){currx=lmarg;if(newbook !=1)curry=curry+udmove}
   retstr=box()
   if(!newbook)return(retstr+topstr)
      else {linectr=pg1linctr;return(retstr+pg1topstr)}
}
function endpage(pagenum){
  if(!pagenum)pagenum=0;pgpadding=""; tofill=lppg-lastlin-1;xtrapg=""
  if(newbk || pgbrk){if(lastlin<lppg-1)pgpadding="<p class=botpad>";for(ii=1;ii<tofill;ii++){pgpadding+="<br>";} } //pad last pg b4 newbk
  if(newbk && pgnum%2){pgnum++;xtrapg=box()+boxend("<center><a href=x onclick='proxbook(1);return false;'>"+(newbk==100?bktitl[nrows]:bktitl[nrows-1])+"</a></center>")}
  if(newbk==100 && xtrapg!=""){numboxes++;bksiz[nrows]++;bkend[nrows]++} //extra pg for final book
  numlink="<a href=x onclick='"+(pagenum%2?"prevpg()":"nexpg()")+";self.focus();return false;'>"+pagenum+"</a>"
  return(pgpadding+(newbk==100?"<p style='margin-top:"+lastpad+"px;'>":"")+ // kluge pad for final bk
     boxend(pagenum?"<p class=bot><center>"+numlink+"</center>":"")+ xtrapg)
}
function parsetag(str,ix){var k=0;while(str.substring(ix+k,ix+k+1)!=">")k++;return(k)}
function set_title(str,ix){
  var k=10, titl=""
  while((aa=str.substring(ix+k,ix+k+1))!=">"){
     if(str.substring(ix+k+1,ix+k+2)!=">")titl+=aa; k++;
   }
  bktitl[nrows]=titl
}
function showstr(str){
if(!html)document.all.shower.innerText=paginate(str)
   else if(html==1)document.all.shower.innerHTML=paginate(str)
     else if(html==2)document.all.shower.innerText=document.all.blarg.innerHTML
       else if(html==3)document.all.shower.innerText=document.all.blarg.innerText
         else if(html==4)document.all.shower.innerText=literal(str)
for(i=3;i<currnum;i++)hide("ln"+i)
}
function literal(str){
  strsize=str.length-1;
  finpage="";i=0;
  while (i<strsize){
	currchr=str.substring(i,++i)
    currcode=currchr.charCodeAt(0)
    if(currcode<32)currchr=currcode
    if(currcode==32)currchr="."
	finpage+=currchr
   }
  return(finpage)
}
function openwin(withfile,windowname,wd,ht) {
  ht = ht || 422; wd = wd || 640; tp = 30; lft = 0
  if(ht==422){ht+=80;wd+=142} else {tp=150;lft=220;}
  if(windowname=="cronly"){ht=414;wd=626;lft=138;tp=109}
  props = "height=" + ht + ",width="+wd+",left="+lft+",top="+tp+",status=0"
  rdrwin = window.open(withfile,windowname,props)
}
document.write("<div id=info></div><div id=info2><a href=javascript:hide('info2') style='color:000000'>HIT<font face=courier size=1><-</font> KEY FOR PREVIOUS PG &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF NO TEXT BELOW USE PLAIN VERSION&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CLICK TO HIDE THIS LINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HIT <font face=courier>-></font> KEY FOR NEXT PG</a></div>")
if(nav4){ document.captureEvents(Event.KEYPRESS);document.onkeypress=codes;}
document.write("</head><body bgcolor="+grndcolr+
   " onKeyDown='codes(event);if(gotkey){gotkey=0;return false;}' onload='if(!nav4){showstr(document.all.blarg.innerHTML);pgnum=1;self.focus();titlebar();startdatim();}'"+
   " vlink=770000 link=770000 alink=770000 bgcolor=fafafa leftmargin=0 marginwidth=0 marginheight=0 topmargin=0 rightmargin=0>")
document.write("<div id=shower>  &nbsp; </div>")
bktitl=new Array(20);bksiz=new Array(20);bkend=new Array(20)
currpg=new Array(20);currpg[0]=1;currpg[1]=1;currpg[2]=1;currpg[3]=1;currpg[4]=1;
document.write("<div id=blarg style='position:absolute;visibility:visible;top:-3000px;'>")
