// (c)2010 Michael Holtstrom

if(window!=window.top){top.location.href=self.location.href;}
var debug=false;var quiet=true;var dbglevel=0;var main={};main.dblclk=false;main.user_id=0;main.sheets=Array();main.nsheets=0;main.xhr=null;main.topObj=null;main.load=function()
{main.debug();dbg('main.load');main.xhr=new Xhr();pop.init();pop.add('rcpage');pop.add('rcsheet');pop.add('rcbox');util.add(document,'contextmenu',util.cancel);util.add(document,'mouseup',main.bodyMouseUp);var abl=[1,1];rules['strength']=new Attribute('Strength',abl);rules['constitution']=new Attribute('Constitution',abl);rules['dexterity']=new Attribute('Dexterity',abl);rules['intelligence']=new Attribute('Intelligence',abl);rules['wisdom']=new Attribute('Wisdom',abl);rules['charisma']=new Attribute('Charisma',abl);var str=rules['strength'];var con=rules['constitution'];var dex=rules['dexterity'];var int=rules['intelligence'];var wis=rules['wisdom'];var cha=rules['charisma'];var sav=[0,0];rules['fortitude']=new Attribute('Fortitude',sav,con);rules['reflex']=new Attribute('Reflex',sav,dex);rules['will']=new Attribute('Will',sav,wis);var skl=[0,0];rules['search']=new Attribute('Search',skl,int);rules['spot']=new Attribute('Spot',skl,wis);rules['listen']=new Attribute('Listen',skl,wis);rules['balance']=new Attribute('Balance',skl,dex);rules['climb']=new Attribute('Climb',skl,str);rules['hide']=new Attribute('Hide',skl,dex);rules['jump']=new Attribute('Jump',skl,str);rules['move silently']=new Attribute('Move Silently',skl,dex);rules['profession sailor']=new Attribute('Profession Sailor',skl,wis);rules['sense motive']=new Attribute('Sense Motive',skl,wis);rules['tumble']=new Attribute('Tumble',skl,dex);rules['swim']=new Attribute('Swim',skl,str);rules['gather information']=new Attribute('Gather Information',skl,cha);var msc=[0,0];rules['base attack']=new Attribute('Base Attack',msc,null);rules['armor class']=new Attribute('Armor Class',msc,dex);rules['initiative']=new Attribute('Initiative',msc,dex);main.dbinit();};main.bodyMouseUp=function(e)
{e=e||window.event;if(!util.isrc(e)){return;}
dbg('main.bodyMouseUp');pop.raise(e,at('rcpage'),main,null);return util.cancel(e);};main.rcNewSheet=function(menu)
{dbg('main.rcNewSheet');var id=main.nsheets++;main.sheets[id]=new Sheet(0,id,menu.offsetTop,menu.offsetLeft,0,'widgets/avatar.png',60,68,'Character',true);main.sheets[id].save(true);};main.ffinit=function()
{dbg('main.ffinit');if(localStorage.nsheets==undefined){}
else if(localStorage.nsheets!=null&&localStorage.nsheets!='')
{main.nsheets=JSON.parse(localStorage.nsheets);for(var x=0;x<main.nsheets;x++)
{var data='';if(localStorage['s'+x]==undefined){}
else if(localStorage['s'+x]!=null&&localStorage['s'+x]!='')
{data=localStorage['s'+x];}
main.loadhlpr(x,data,(main.nsheets==1));}}
main.loadhlpr2();};main.dbdata=function(data,opened)
{dbg('main.dbdata');var x=main.sheets.length;main.loadhlpr(x,data,opened);localStorage['s'+x]=data;main.nsheets=main.sheets.length;localStorage.nsheets=main.nsheets;};main.loadhlpr=function(x,data,opened,parsed)
{dbg('main.loadhlpr');var gotit=false;if(data==null||data!='')
{var save=null;if(data==null)
{save=parsed;}
else
{save=JSON.parse(data);}
if(save.length>0)
{main.sheets[x]=new Sheet(save[0],x,save[1][0],save[1][1],save[1][2],save[1][3],save[1][4],save[1][5],save[1][6],opened);gotit=true;var pgs=save[1][7];for(var i=1;i<pgs;i++){main.sheets[x].pgdwnimpl();}}
for(var i=2;i<save.length;i++)
{var box=main.sheets[x].addBox(save[i][0],save[i][1],save[i][2],save[i][3],true);for(var j=0;j<save[i][4].length;j++)
{var ent=main.sheets[x].addEntry(box,'blank...',1,0);if(save[i][4][j][0]==2){ent.obj.load2(save[i][4][j][1],save[i][4][j][2]);}
else if(save[i][4][j][0]==1){ent.obj.load1(save[i][4][j][1]);}
else{ent.obj.load0(save[i][4][j][1],save[i][4][j][2]);}}}}
if(gotit){main.sheets[x].dirty=false;}
else
{err.msg('Something went wrong.');main.sheets[x]=new Sheet(0,x,40,30,0,'widgets/avatar.png',60,68,'Character',opened);}};main.loadhlpr2=function()
{dbg('main.loadhlpr2');if(main.nsheets==0)
{main.nsheets++;main.sheets[0]=new Sheet(0,0,40,30,0,'widgets/avatar.png',60,68,'Character',true);main.sheets[0].save(true);}};main.join1=function()
{if(main.xhr.pending){return;}
dbg('main.join1');pop.show('rcjoin');at('joinname').focus();}
main.join2=function()
{if(main.dblclk){return;}
main.dblclk=true;dbg('main.join2');if(util.checktxt(at('joinname'),'Name',30,true)&&util.checktxt(at('joinemail'),'Email',100,false)&&util.checktxt(at('joinpass1'),'Password',30,true)&&util.checktxt(at('joinpass2'),'Password Again',30,true))
{if(at('joinpass1').value!=at('joinpass2').value)
{err.msg("Your passwords don't match.");}
else
{err.msg("Processing...");main.xhr.join(at('joinname').value,at('joinemail').value,at('joinpass1').value);at('joinpass1').value='';at('joinpass2').value='';}}
main.dblclk=false;};main.login1=function()
{if(main.xhr.pending){return;}
dbg('main.login1');pop.show('rclogin');if(at('loginname').value=='')
{at('loginname').focus();}
else
{at('loginpass').focus();}}
main.login2=function()
{if(main.dblclk){return;}
main.dblclk=true;dbg('main.login2');if(util.checktxt(at('loginname'),'Name',30,true)&&util.checktxt(at('loginpass'),'Password',30,true))
{err.msg("Processing...");main.xhr.login(at('loginname').value,at('loginpass').value);at('loginpass').value='';}
main.dblclk=false;};main.loginjoin=function(res,login)
{dbg('main.loginjoin');if(!login&&res=='1'||login&&res!='0')
{pop.hide();if(login){err.msg("Successfully logged in.");}
else{err.msg("Account successfully created.");}
at('join').className='gone';at('logout').className='clickable';main.user_id=util.cookie('user_id');if(login&&main.nsheets==1&&!(main.sheets[0].dirty))
{main.sheets[0].cleanup();localStorage['s0']='';main.sheets[0]=null;main.nsheets=0;localStorage.nsheets=0;}
if(main.nsheets>0)
{err.msg('Saving...');}
for(var i=0;i<main.nsheets;i++)
{main.sheets[i].save(true);main.sheets[i].xhr.save(main.sheets[i]);}
if(login&&res!='1')
{err.msg('Loading...');var saves=JSON.parse(res);for(var i=0;i<saves.length;i++)
{var x=main.nsheets;main.loadhlpr(x,null,false,saves[i]);localStorage['s'+x]=JSON.stringify(saves[i]);;main.nsheets++;localStorage.nsheets=main.nsheets;}}}
else{err.sess();}}
main.logout=function()
{if(main.dblclk){return;}
main.dblclk=true;dbg('main.logout');for(var x=0;x<main.nsheets;x++)
{main.sheets[x].cleanup();localStorage['s'+x]='';main.sheets[x]=null;}
main.nsheets=0;localStorage.nsheets=0;util.setCookie('user_id','');util.setCookie('user_nonce','');main.user_id=0;at('logout').className='gone';at('join').className='';main.dblclk=false;};main.lost=function()
{if(main.dblclk){return;}
if(document.lgnfrm.name.value=='')
{err.msg('First, enter your user name so that we can look up your email.');return true;}
else
{main.dblclk=true;}};main.unload=function()
{for(var i=0;i<main.nsheets;i++)
{main.sheets[i].cleanup();main.sheets[i]=null;}};main.debug=function()
{if(debug)
{var obj=document.createElement("textarea");obj.className='debug';obj.id='dbgtxt';obj.style.zIndex=999;document.body.appendChild(obj);}};main.preload=function()
{main.imgs=Array();var x=0;var hots=['closer','edit','font','layout','pagedown','pageup','print','reset','save','open','close'];for(var i=0;i<hots.length;i++)
{main.imgs[x]=new Image();main.imgs[x].src='widgets/'+hots[i]+'.gif';x++;main.imgs[x]=new Image();main.imgs[x].src='widgets/'+hots[i]+'..gif';x++;}
var simp=['crake.png','dragger.gif','ghost,png','icon.png','msgx.gif','nothing.gif','trash.png','avatar.png'];for(var i=0;i<simp.length;i++)
{main.imgs[x]=new Image();main.imgs[x].src='widgets/'+simp[i];x++;}};main.preload();function at(val){return document.getElementById(val);};function dbg(str,now)
{if(!debug){return;}
if(!now){if(quiet){return;}}
var o=at('dbgtxt');o.value=str+"\n"+o.value;if(o.value.length>1200){o.value=o.value.substr(0,800);}};function dbgx(str)
{if(dbglevel==0){return;}
dbg(str);};