function isAlien(a){
return isObject(a)&&typeof a.constructor!="function";
};
function isArray(a){
return isObject(a)&&a.constructor==Array;
};
function isBoolean(a){
return typeof a=="boolean";
};
function isEmpty(o){
var i,v;
if(isObject(o)){
for(i in o){
v=o[i];
if(isUndefined(v)&&isFunction(v)){
return false;
}
}
}
return true;
};
function isFunction(a){
return typeof a=="function";
};
function isNull(a){
return typeof a=="object"&&!a;
};
function isNumber(a){
return typeof a=="number"&&isFinite(a);
};
function isObject(a){
return (a&&typeof a=="object")||isFunction(a);
};
function isString(a){
return typeof a=="string";
};
function isUndefined(a){
return typeof a=="undefined";
};
var BROWSER=0;
var USER_AGENT=navigator.userAgent.toLowerCase();
var B_Uknown=0;
var B_Firefox=1;
var B_Mozilla=2;
var B_Opera=3;
var B_IE=4;
if(USER_AGENT.indexOf("firefox")!=-1){
BROWSER=B_Firefox;
}else{
if(USER_AGENT.indexOf("msie")!=-1){
BROWSER=B_IE;
}else{
if(USER_AGENT.indexOf("opera")!=-1){
BROWSER=B_Opera;
}else{
if(USER_AGENT.indexOf("mozilla")!=-1){
BROWSER=B_Mozilla;
}
}
}
}
String.prototype.isAlpha=function(){
return (this>="a"&&this<="z?")||(this>="A"&&this<="Z?");
};
String.prototype.isDigit=function(){
return (this>="0"&&this<="9");
};
String.prototype.isAlphaNum=function(){
return this.isAlpha()||this.isDigit();
};
String.prototype.trim=function(){
var s=this;
while((s.substring(0,1)==" ")||(s.substring(0,1)=="\n")||(s.substring(0,1)=="\r")){
s=s.substring(1,s.length);
}
while((s.substring(s.length-1,s.length)==" ")||(s.substring(s.length-1,s.length)=="\n")||(s.substring(s.length-1,s.length)=="\r")){
s=s.substring(0,s.length-1);
}
return s;
};
String.prototype.replaceAll=function(_2,_3){
var _4=this;
while(_4.indexOf(_2)!=-1){
_4=_4.replace(_2,_3);
}
return _4.toString();
};
function SafeParseInt(_5){
var _6=parseInt(_5,10);
if(isNaN(_6)){
return 0;
}
return _6;
};
function GetUniqueID(){
return ++g_nNextUniqueID;
};
var g_nNextUniqueID=0;
function Delay(_7){
setTimeout(_7,50);
};
function ShowElements(_8,_9){
for(var _a=0;_a<_8.length;++_a){
_8[_a].style.display=_9?"":"none";
}
};
function DeleteAllChildNodes(_b){
if(_b.hasChildNodes()){
while(_b.childNodes.length>=1){
_b.removeChild(_b.firstChild);
}
}
};
function StopEvent(_c){
var _d=_c||window.event;
if(_d.stopPropagation){
_d.stopPropagation();
}else{
_d.cancelBubble=true;
}
};
function Uniform(_e,_f){
return Math.floor(Math.random()*(_f-_e+1))+_e;
};
function Die(_10){
return Uniform(1,_10);
};
function d2(){
return Die(2);
};
function d3(){
return Die(3);
};
function d4(){
return Die(4);
};
function d6(){
return Die(6);
};
function d8(){
return Die(8);
};
function d10(){
return Die(10);
};
function d12(){
return Die(12);
};
function d20(){
return Die(20);
};
function d100(){
return Die(100);
};
function Dice(_11,_12){
var _13=0;
for(var i=0;i<_11;i+=1){
_13+=Die(_12);
}
return _13;
};
function ValidateDisplayNameWithPopup(_15){
if(!ValidateDisplayName(_15)){
alert("\""+_15+"\" is not a valid saved name.  "+"Names must be 1 to 50 characters long and can only "+"contain letters, numbers, and spaces.");
return false;
}
return true;
};
function ValidateDisplayName(_16){
_16=_16.trim();
if(!_16){
return false;
}
if(_16.length>50){
return false;
}
if(!_16.match(/^[a-zA-Z0-9 ]+$/)){
return false;
}
return true;
};
function DisplayNameToStorageKey(_17){
return _17.trim().replaceAll(" ","_");
};
function StorageKeyToDisplayName(_18){
return _18.replaceAll("_"," ");
};
dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
if(o.plugin){
return;
}
switch(o.args.name){
case "-":
o.plugin=new dijit._editor._Plugin({button:new ToolbarNewline()});
}
});
dojo.declare("ToolbarNewline",[dijit._Widget,dijit._Templated],{templateString:"<br>",postCreate:function(){
dojo.setSelectable(this.domNode,false);
},isFocusable:function(){
return false;
}});
var TOOLBAR_PLUGINS=[{name:"dijit._editor.plugins.FontChoice",command:"fontName",generic:true},"fontSize","-","bold","italic","underline","strikethrough","subscript","superscript","removeFormat","|","foreColor","hiliteColor","|","indent","outdent","|","justifyLeft","justifyCenter","justifyRight","justifyFull","|","insertOrderedList","insertUnorderedList","|","undo","redo"];
dojo.declare("Combatant",null,{constructor:function Combatant(_1,_2,_3,_4,_5){
this.UniqueID=GetUniqueID();
this.URL=_1;
this.Name=_2;
this.HP=_3;
this.BaseInitiative=_4;
this.Initiative=_5;
},Duplicate:function(){
return new Combatant(this.URL,this.Name,this.HP,this.BaseInitiative,this.Initiative);
},CompareInitiative:function(_6){
if(this.Initiative<_6.Initiative){
return -1;
}else{
if(this.Initiative>_6.Initiative){
return 1;
}else{
if(this.BaseInitiative<_6.BaseInitiative){
return -1;
}else{
if(this.BaseInitiative>_6.BaseInitiative){
return 1;
}else{
return 0;
}
}
}
}
},Serialize:function(){
return {URL:this.URL,Name:this.Name,HP:this.HP,BaseInitiative:this.BaseInitiative,Initiative:this.Initiative,PageText:(this.URL?null:this.Page.getValue(false)),NotesText:this.Notes.getValue(false)};
},toString:function(){
return "<table class='NoBorders' width='95%'>"+"<tr><td class='Left"+(this.HP<=0?" Dead ":"")+"' style='width:100%'>"+this.Name+"</td>"+"<td class='Right"+(this.HP<=0?" HPDead ":"")+"'><div class='HPPadding' id='CombatantHP"+this.UniqueID+"' onmouseover='CombatantList.Instance.HighlightHP("+this.UniqueID+", true)' onmouseout='CombatantList.Instance.HighlightHP("+this.UniqueID+", false)' onmousedown='StopEvent(arguments[0])' onmouseup='StopEvent(arguments[0])' onclick='StopEvent(arguments[0]); CombatantList.Instance.OnClickHP("+this.UniqueID+")'>"+this.HP+"</div></td>"+(!!_DEBUG_INITIATIVE?("<td class='Right'>Init: "+this.Initiative+"</td>"):"")+"</tr></table>";
}});
dojo.declare("CombatantList",null,{Initialize:function(_1,_2,_3){
CombatantList.Instance.GUIList=new dojo.dnd.Source(_1);
CombatantList.Instance.PagesList=dijit.byId(_2);
CombatantList.Instance.NotesList=dijit.byId(_3);
dojo.connect(dojo.byId("Combatants"),"onclick",this,"OnSelectionChanged");
dojo.connect(CombatantList.Instance.GUIList,"onDropInternal",this,"OnDropInternal");
},GetCount:function(){
return this.GUIList.getAllNodes().length;
},GetIndexOfNode:function(_4){
var _5=this.GUIList.getAllNodes();
for(var i=0;i<_5.length;++i){
if(_5[i]==_4){
return i;
}
}
return -1;
},GetItemByIndex:function(_7){
var _8=this.GetNodeByIndex(_7);
if(_8==null){
return null;
}
return this.GetItemByNode(_8);
},GetItemByNode:function(_9){
return this.GUIList.getItem(_9.id);
},GetNodeByItem:function(_a){
var _b=this.GUIList.getAllNodes();
for(var i=0;i<_b.length;++i){
if(this.GetItemByNode(_b[i])==_a){
return _b[i];
}
}
return null;
},GetDataByNode:function(_d){
var _e=this.GetItemByNode(_d);
if(_e!=null){
return _e.data;
}
return null;
},GetNodeByData:function(_f){
var _10=this.GUIList.getAllNodes();
for(var i=0;i<_10.length;++i){
if(this.GetDataByNode(_10[i])==_f){
return _10[i];
}
}
return null;
},GetNodeByIndex:function(_12){
return this.GUIList.getAllNodes()[_12];
},GetDataByIndex:function(_13){
return this.GetDataByNode(this.GetNodeByIndex(_13));
},GetDataByUniqueID:function(_14){
var _15=null;
this.GUIList.forInItems(function(_16,_17,_18){
if(_16.data.UniqueID==_14){
_15=_16.data;
}
},this.GUIList);
return _15;
},GetAllData:function(){
var _19=[];
var _1a=this.GUIList.getAllNodes();
for(var iNd=0;iNd<_1a.length;++iNd){
_19.push(this.GetDataByNode(_1a[iNd]));
}
return _19;
},UpdateNodeFromData:function(_1c){
nd=this.GetNodeByData(_1c);
if(nd!=null){
nd.innerHTML=_1c.toString();
}
},UpdateDeadStatus:function(_1d,_1e){
var _1f=_1d.getElementsByTagName("td");
for(var _20=0;_20<_1f.length;++_20){
if(_1e){
dojo.addClass(_1f[_20],"Dead");
}else{
dojo.removeClass(_1f[_20],"Dead");
}
}
},AddCombatant:function(_21,_22,_23,_24,_25,_26){
if(_24==null){
_24=this.GetLowestInitiative()-1;
_25=_24;
}
if(_25==null){
_25=_24+d20();
}
var _27=new Combatant(_21,_22,_23,_24,_25);
this.AddCombatantInternal(_27,_26);
return _27;
},AddCombatantInternal:function(_28,_29){
if(_29){
this.GUIList.insertNodes(false,[_28]);
}else{
var _2a=this.GetNodeBeforeInitiative(_28);
if(_2a){
this.GUIList.insertNodes(false,[_28],false,_2a);
}else{
this.GUIList.insertNodes(false,[_28],true,null);
}
}
this.CreatePage(_28);
_28.Notes=new dijit.Editor({plugins:TOOLBAR_PLUGINS});
this.NotesList.addChild(_28.Notes);
if(!_29){
this.EnsureValidInitiatives();
}
},CreatePage:function(_2b){
if(!_2b.URL){
_2b.Page=new dijit.Editor({plugins:TOOLBAR_PLUGINS});
this.PagesList.addChild(_2b.Page);
}else{
if(this.Pages[_2b.URL]==null){
var _2c=GetUniqueID();
_2b.Page=new dijit.layout.ContentPane();
_2b.Page.attr("content","<iframe id='DisplayIframe"+_2c+"' height='100%' width='100%'></iframe>");
_2b.Page.title=_2b.Name;
this.Pages[_2b.URL]=_2b.Page;
this.PagesList.addChild(_2b.Page);
Delay(function(){
dojo.byId("DisplayIframe"+_2c).src=_2b.URL;
});
}else{
_2b.Page=this.Pages[_2b.URL];
}
}
},DuplicateCombatant:function(_2d){
var _2e=_2d.Duplicate();
this.AddCombatantInternal(_2e);
_2e.Notes.setValue(_2d.Notes.getValue(false));
if(!_2e.URL){
_2e.Page.setValue(_2d.Page.getValue(false));
}
},DuplicateSelectedCombatants:function(_2f){
for(var _30=0;_30<_2f;++_30){
var _31=this.GetSelectedCombatants();
for(var _32=0;_32<_31.length;++_32){
this.DuplicateCombatant(_31[_32]);
}
}
},RemoveSelectedCombatants:function(){
if(confirm("Are you sure you want to delete the selected node(s)?")){
this.GUIList.deleteSelectedNodes();
}
},EditSelectedCombatant:function(){
var _33=this.GetSelectedCombatants();
if(_33.length!=1){
alert("You must have exactly 1 combatant selected.");
return;
}
PromptEditCombatant.Instance.Show(_33[0]);
},Clear:function(){
var _34=this.GUIList.getAllNodes();
for(var _35=0;_35<_34.length;++_35){
dojo._destroyElement(_34[_35].id);
}
this.GUIList.clearItems();
},SelectNode:function(_36,_37){
if(_37){
this.GUIList.selectNone();
}
if(_36){
this.GUIList._addItemClass(dojo.byId(_36.id),"Selected");
this.GUIList.selection[_36.id]=1;
}
this.OnSelectionChanged();
},GetSelectedCombatants:function(){
var _38=[];
for(var id in this.GUIList.selection){
if(id in dojo.dnd._empty){
continue;
}
_38.push(this.GUIList.getItem(id).data);
}
return _38;
},IsSelectionEmpty:function(){
return this.GetSelectedCombatants().length==0;
},HighlightHP:function(_3a,_3b){
var oHP=dojo.byId("CombatantHP"+_3a);
if(oHP){
if(_3b){
dojo.addClass(oHP,"HPHover");
}else{
dojo.removeClass(oHP,"HPHover");
}
}
},GetCurrentInitiativeIndex:function(){
var _3d=this.GUIList.getAllNodes();
for(var _3e=0;_3e<_3d.length;++_3e){
if(dojo.hasClass(_3d[_3e],"CurrentInitiativeItem")){
return _3e;
}
}
return -1;
},GetCurrentInitiativeNode:function(){
var _3f=this.GUIList.getAllNodes();
for(var _40=0;_40<_3f.length;++_40){
if(dojo.hasClass(_3f[_40],"CurrentInitiativeItem")){
return _3f[_40];
}
}
return null;
},GetCurrentInitiativeData:function(){
var nd=this.GetCurrentInitiativeNode();
if(nd==null){
return null;
}
return this.GetDataByNode(nd);
},SetCurrentInitiativeIndex:function(_42){
var _43=this.GUIList.getAllNodes();
if(_42>_43.length){
_42=-1;
}
for(var _44 in _43){
if(_44==_42){
dojo.addClass(_43[_44],"CurrentInitiativeItem");
}else{
dojo.removeClass(_43[_44],"CurrentInitiativeItem");
}
}
},SelectCurrentInitiativeItem:function(){
this.SelectNode(this.GetCurrentInitiativeNode(),true);
},AdvanceInitiative:function(){
var _45=this.GetCurrentInitiativeIndex();
var _46=0;
for(_46=_45+1;_46!=_45;++_46){
if(_46>=this.GetCount()||_46<0){
_46=0;
}
if(this.GetDataByIndex(_46).HP>0){
break;
}
}
this.SetCurrentInitiativeIndex(_46);
this.SelectCurrentInitiativeItem();
},RecalculateInitiative:function(_47,_48){
var _49=0;
if(_47>0){
_49=this.GetDataByIndex(_47-1).Initiative;
}else{
_49=this.GetHighestInitiative()+2;
}
var _4a=0;
if(_48<this.GetCount()){
_4a=this.GetDataByIndex(_48).Initiative;
}else{
_4a=this.GetLowestInitiative()-2;
}
var _4b=(_4a-_49)/(_48-_47+1);
var _4c=_49+_4b;
for(var iNd=_47;iNd<_48;++iNd){
var _4e=this.GetDataByIndex(iNd);
var _4f=_4e.Initiative;
_4e.Initiative=_4c;
if(!!_DEBUG_INITIATIVE){
this.UpdateNodeFromData(_4e);
}
if(iNd+1<_48){
var _50=this.GetDataByIndex(iNd+1);
if(_50.Initiative!=_4f){
_4c+=_4b;
}
}
}
},EnsureValidInitiatives:function(){
if(this.GetCount()==0){
return;
}
var _51=this.GetDataByIndex(0).Initiative+1000;
var _52=null;
for(var iDt=0;iDt<this.GetCount();++iDt){
var _54=this.GetDataByIndex(iDt);
if(_54.Initiative>_51){
if(_52==null){
_52=iDt;
}
}else{
if(_52!=null){
this.RecalculateInitiative(_52,iDt);
}
_52=null;
_51=_54.Initiative;
}
}
if(_52!=null){
this.RecalculateInitiative(_52,this.GetCount());
}
},GetLowestInitiative:function(){
if(this.GetCount()==0){
return 0;
}
var _55=this.GetDataByIndex(0).Initiative;
this.GUIList.forInItems(function(_56,_57,_58){
if(_56.data.Initiative<_55){
_55=_56.data.Initiative;
}
},this.GUIList);
return _55;
},GetHighestInitiative:function(){
if(this.GetCount()==0){
return 0;
}
var _59=this.GetDataByIndex(0).Initiative;
this.GUIList.forInItems(function(_5a,_5b,_5c){
if(_5a.data.Initiative>_59){
_59=_5a.data.Initiative;
}
},this.GUIList);
return _59;
},GetNodeBeforeInitiative:function(_5d){
if(this.GetCount()==0){
return 0;
}
var _5e=null;
var _5f=this.GetAllData();
for(var iDt=0;iDt<_5f.length;++iDt){
var _61=_5f[iDt];
if(_61.CompareInitiative(_5d)>=0){
_5e=_61;
}
}
if(!_5e){
return null;
}
return this.GetNodeByData(_5e);
},Serialize:function(){
this.EnsureValidInitiatives();
var _62={CurrentInitiativeIndex:this.GetCurrentInitiativeIndex(),Combatants:[]};
var _63=this.GetAllData();
for(var iDt=0;iDt<_63.length;++iDt){
var _65=_63[iDt];
var _66=_65.Serialize();
_62.Combatants.push(_66);
}
return _62;
},DeSerialize:function(_67){
this.Clear();
for(var iDt=0;iDt<_67.Combatants.length;++iDt){
var _69=_67.Combatants[iDt];
var _6a=this.AddCombatant(_69.URL,_69.Name,_69.HP,_69.BaseInitiative,_69.Initiative,true);
if(!_6a.URL&&_69.PageText){
_6a.Page.setValue(_69.PageText);
}
_6a.Notes.setValue(_69.NotesText);
}
this.SetCurrentInitiativeIndex(_67.CurrentInitiativeIndex);
this.SelectCurrentInitiativeItem();
this.EnsureValidInitiatives();
},Save:function(_6b,_6c){
dojox.storage.put(_6b,this.Serialize(),null,_6c);
},Load:function(_6d,_6e){
var _6f=dojox.storage.get(_6d,_6e);
if(_6f){
this.DeSerialize(_6f);
}
},NewCombat:function(){
if(confirm("Are you sure you want to start a new combat?")){
this.Clear();
}
},AddPlayers:function(_70,_71,_72){
var _73=dojox.storage.get(_70,_71);
if(_73){
for(var iDt=0;iDt<_73.Combatants.length;++iDt){
var _75=_73.Combatants[iDt];
_75.Initiative=_75.BaseInitiative+d20();
while(true){
var _76=prompt(_75.Name,_75.Initiative);
if(_76==null){
return;
}
var _77=parseInt(_76,10);
if(isNaN(_77)){
alert("\""+_76+"\" is not a valid number.");
}else{
_75.Initiative=_77;
break;
}
}
}
for(var iDt=0;iDt<_73.Combatants.length;++iDt){
var _75=_73.Combatants[iDt];
var _78=this.AddCombatant(_75.URL,_75.Name,_75.HP,_75.BaseInitiative,_75.Initiative);
if(!_78.URL&&_75.PageText){
_78.Page.setValue(_75.PageText);
}
}
}
this.EnsureValidInitiatives();
if(_72){
dojox.storage.put("DefaultPlayersKey",_70);
dojox.storage.put("DefaultPlayersNamespace",_71);
}
},AddDefaultPlayers:function(){
var _79=dojox.storage.get("DefaultPlayersKey");
var _7a=dojox.storage.get("DefaultPlayersNamespace");
if(_79&&_7a){
this.AddPlayers(_79,_7a,false);
}
},OnDropInternal:function(_7b,_7c){
var _7d=this.GetCurrentInitiativeData();
var _7e=null;
if(_7d!=null){
_7e=_7d.Initiative;
}
var _7f=this.GetIndexOfNode(_7b[0]);
var _80=_7f+_7b.length;
this.RecalculateInitiative(_7f,_80);
if(_7e!=null){
if(_7d.Initiative!=_7e){
var _81=false;
for(var iDt=0;iDt<this.GetCount();++iDt){
var _83=this.GetDataByIndex(iDt);
if(_83.Initiative<=_7e){
this.SetCurrentInitiativeIndex(iDt);
_81=true;
break;
}
}
if(!_81){
this.SetCurrentInitiativeIndex(0);
}
}
}
},OnSelectionChanged:function(){
for(var id in this.GUIList.selection){
if(id in dojo.dnd._empty){
continue;
}
var _85=this.GUIList.getItem(id).data;
this.PagesList.selectChild(_85.Page);
this.NotesList.selectChild(_85.Notes);
if(!_85.URL){
_85.Page.onNormalizedDisplayChanged();
}
_85.Notes.onNormalizedDisplayChanged();
break;
}
},OnClickHP:function(_86){
var _87=this.GetDataByUniqueID(_86);
if(_87!=null){
PromptModifyHP.Instance.Show(_87);
}
},Pages:[],GUIList:null,PagesList:null,NotesList:null});
CombatantList.Instance=new CombatantList();
dojo.declare("Prompt",null,{constructor:function(){
},SetID:function(_1){
this.m_idDialog=_1;
dojo.connect(dijit.byId(this.m_idDialog),"execute",this,"OnOK");
},SetDefaultParameters:function(_2){
this.m_hParameters=_2;
},RegisterOK:function(_3){
dojo.connect(dijit.byId(this.m_idDialog),"onValidStateChange",function(_4){
dijit.byId(_3).attr("disabled",!_4);
});
var _5=this.m_idDialog;
dojo.connect(dijit.byId(this.m_idDialog),"onKeyPress",function(_6){
switch(_6.charOrCode){
case dojo.keys.ENTER:
var _7=dijit.byId(_5);
if(_7.validate()){
dijit.byId(_3).focus();
_7._onSubmit();
}
break;
}
});
},RegisterCancel:function(_8){
dojo.connect(dijit.byId(_8),"onClick",this,"OnCancel");
},SetupCheckbox:function(_9){
dojo.connect(dijit.byId(_9),"onKeyDown",function(_a){
switch(_a.keyCode){
case dojo.keys.SPACE:
dijit.byId(_9).attr("value",!dijit.byId(_9).attr("value"));
break;
}
});
},GetDialogObject:function(){
return dijit.byId(this.m_idDialog);
},Show:function(_b){
var _c=_b!=null?_b:this.m_hParameters;
if(_c!=null){
for(var _d in _c){
dijit.byId(_d).attr("value",_c[_d]);
}
}
this.GetDialogObject().show();
var _e=this.m_idDialog;
Delay(function(){
dijit.selectInputText(dijit.byId(_e)._firstFocusItem.id);
});
},OnOK:function(_f){
},OnCancel:function(){
dijit.byId(this.m_idDialog).hide();
},m_idDialog:null,m_hParameters:null});
dojo.declare("PromptAddCombatant",Prompt,{constructor:function(){
this.SetID("AddCombatantPrompt");
this.RegisterOK("AddCombatantPromptOK");
this.RegisterCancel("AddCombatantPromptCancel");
this.SetupCheckbox("AddCombatantPromptIgnoreInitiative");
this.SetDefaultParameters({AddCombatantPromptURL:"",AddCombatantPromptName:"",AddCombatantPromptHP:1,AddCombatantPromptIgnoreInitiative:true,AddCombatantPromptBaseInitiative:""});
dojo.connect(dijit.byId("AddCombatantPromptParse"),"onClick",this,"OnParseClick");
dojo.connect(dijit.byId("AddCombatantPromptParse"),"onBlur",this,"OnCancelParse");
dojo.connect(dijit.byId("AddCombatantPromptIgnoreInitiative"),"onChange",this,"OnModifyIgnoreInitiative");
dojo.connect(dijit.byId("AddCombatantPromptBaseInitiative"),"onKeyPress",this,"OnModifyBaseInitiative");
dojo.connect(dijit.byId("AddCombatantPromptBaseInitiative"),"onBlur",this,"OnModifyBaseInitiative");
},Show:function(_10,_11,_12,_13){
this.m_bWaitingForParsing=false;
dijit.byId("AddCombatantPromptParse").attr("disabled",false);
dojo.byId("AddCombatantPromptParsingImage").style.visibility="hidden";
dojo.byId("AddCombatantPromptParsingRow").style.display="none";
Prompt.prototype.Show.call(this,{AddCombatantPromptURL:_10?_10:"",AddCombatantPromptName:_11?_11:"",AddCombatantPromptHP:_12?_12:1,AddCombatantPromptIgnoreInitiative:_13==null,AddCombatantPromptBaseInitiative:_13!=null?_13:""});
},OnOK:function(_14){
var _15=_14.BaseInitiative;
if(!isNumber(_15)){
_15=null;
}
CombatantList.Instance.AddCombatant(_14.URL,_14.Name,_14.HP,_15);
this.OnCancelParse();
},OnParseClick:function(){
dojo.byId("AddCombatantPromptParsingRow").style.display="";
var _16=dijit.byId("AddCombatantPromptURL").attr("value");
if(!_16){
dojo.byId("AddCombatantPromptParsingText").innerHTML="Parsing Failed";
return;
}
dojo.byId("AddCombatantPromptParsingText").innerHTML="Parsing...";
this.m_bWaitingForParsing=true;
dijit.byId("AddCombatantPromptParse").attr("disabled",true);
dojo.byId("AddCombatantPromptParsingImage").style.visibility="visible";
var _17=this;
MonsterParser.ParsePage(_16,function(_18){
_17.OnParseComplete(_18);
});
},OnCancelParse:function(){
if(this.m_bWaitingForParsing){
dojo.byId("AddCombatantPromptParsingText").innerHTML="Parsing Cancelled";
}
this.m_bWaitingForParsing=false;
dijit.byId("AddCombatantPromptParse").attr("disabled",false);
dojo.byId("AddCombatantPromptParsingImage").style.visibility="hidden";
},OnParseComplete:function(_19){
if(!this.m_bWaitingForParsing){
return;
}
if(_19==null){
dojo.byId("AddCombatantPromptParsingText").innerHTML="Parsing Failed - Page Not Found";
}else{
if(!_19.Name&&!_19.HP&&!_19.Initiative){
dojo.byId("AddCombatantPromptParsingText").innerHTML=dojo.byId("ParseError").innerHTML;
}else{
if(_19.Name){
dijit.byId("AddCombatantPromptName").attr("value",_19.Name.trim());
}
if(_19.HP){
dijit.byId("AddCombatantPromptHP").attr("value",SafeParseInt(_19.HP));
}
if(_19.Initiative!=null){
dijit.byId("AddCombatantPromptBaseInitiative").attr("value",SafeParseInt(_19.Initiative));
}
dijit.byId("AddCombatantPromptIgnoreInitiative").attr("value",false);
dojo.byId("AddCombatantPromptParsingText").innerHTML="Parsing Complete";
}
}
this.m_bWaitingForParsing=false;
dijit.byId("AddCombatantPromptParse").attr("disabled",false);
dojo.byId("AddCombatantPromptParsingImage").style.visibility="hidden";
},OnModifyIgnoreInitiative:function(_1a){
if(_1a){
dijit.byId("AddCombatantPromptBaseInitiative").attr("value","");
}
},OnModifyBaseInitiative:function(){
Delay(function(){
if(isNumber(dijit.byId("AddCombatantPromptBaseInitiative").attr("value"))){
dijit.byId("AddCombatantPromptIgnoreInitiative").attr("value",false);
}
});
},m_bWaitingForParsing:false});
dojo.addOnLoad(function(){
PromptAddCombatant.Instance=new PromptAddCombatant();
});
dojo.declare("PromptEditCombatant",Prompt,{constructor:function(){
this.SetID("EditCombatantPrompt");
this.RegisterOK("EditCombatantPromptOK");
this.RegisterCancel("EditCombatantPromptCancel");
this.SetDefaultParameters({});
},Show:function(_1b){
this.m_cbTarget=_1b;
Prompt.prototype.Show.call(this,{EditCombatantPromptURL:this.m_cbTarget.URL,EditCombatantPromptName:this.m_cbTarget.Name,EditCombatantPromptBaseInitiative:this.m_cbTarget.BaseInitiative});
},OnOK:function(_1c){
this.m_cbTarget.Name=_1c.Name;
this.m_cbTarget.BaseInitiative=_1c.BaseInitiative;
if(this.m_cbTarget.URL!=_1c.URL){
this.m_cbTarget.URL=_1c.URL;
CombatantList.Instance.CreatePage(this.m_cbTarget);
CombatantList.Instance.OnSelectionChanged();
}
CombatantList.Instance.UpdateNodeFromData(this.m_cbTarget);
},m_cbTarget:null});
dojo.addOnLoad(function(){
PromptEditCombatant.Instance=new PromptEditCombatant();
});
dojo.declare("PromptDuplicateCombatants",Prompt,{constructor:function(){
this.SetID("DuplicateCombatantsPrompt");
this.RegisterOK("DuplicateCombatantsPromptOK");
this.RegisterCancel("DuplicateCombatantsPromptCancel");
this.SetDefaultParameters({DuplicateCombatantsPromptCount:1});
},OnOK:function(_1d){
CombatantList.Instance.DuplicateSelectedCombatants(_1d.Count);
}});
dojo.addOnLoad(function(){
PromptDuplicateCombatants.Instance=new PromptDuplicateCombatants();
});
dojo.declare("PromptModifyHP",Prompt,{constructor:function(){
this.SetID("ModifyHPPrompt");
this.RegisterOK("ModifyHPPromptOK");
this.RegisterCancel("ModifyHPPromptCancel");
dojo.connect(dijit.byId("ModifyHPPromptDamage"),"onBlur",this,"OnModifyHPPromptDamageUpdate");
dojo.connect(dijit.byId("ModifyHPPromptHP"),"onBlur",this,"OnModifyHPPromptHPUpdate");
},Show:function(_1e){
this.m_cbTarget=_1e;
Prompt.prototype.Show.call(this,{ModifyHPPromptHP:this.m_cbTarget.HP,ModifyHPPromptDamage:0});
},OnModifyHPPromptDamageUpdate:function(){
var _1f=dijit.byId("ModifyHPPromptDamage").attr("value");
dijit.byId("ModifyHPPromptHP").attr("value",this.m_cbTarget.HP-_1f);
},OnModifyHPPromptHPUpdate:function(){
var _20=dijit.byId("ModifyHPPromptHP").attr("value");
dijit.byId("ModifyHPPromptDamage").attr("value",this.m_cbTarget.HP-_20);
},OnOK:function(_21){
this.m_cbTarget.HP=_21.HP;
CombatantList.Instance.UpdateNodeFromData(this.m_cbTarget);
},m_cbTarget:null});
dojo.addOnLoad(function(){
PromptModifyHP.Instance=new PromptModifyHP();
});
dojo.declare("PromptOpen",Prompt,{constructor:function(){
this.SetID("OpenPrompt");
this.RegisterOK("OpenPromptOK");
this.RegisterCancel("OpenPromptCancel");
this.SetupCheckbox("OpenPromptMakeDefault");
this.SetDefaultParameters({OpenPromptMakeDefault:false});
this.m_hLastValue=[];
},Show:function(_22,_23,_24,_25,_26){
this.GetDialogObject().attr("title",_22);
dojo.byId("OpenPromptLabel").innerHTML=_23;
dojo.byId("OpenPromptMakeDefaultRow").style.display=_25?"inherit":"none";
UpdateSavedCombatStore(_24);
this.m_hLastValue[this.m_sNamespace]=dijit.byId("OpenPromptCombatName").attr("value");
var _27=this.m_hLastValue[_24];
if(_27){
dijit.byId("OpenPromptCombatName").attr("value",_27);
}else{
dijit.byId("OpenPromptCombatName").attr("displayedValue","");
}
this.m_sNamespace=_24;
this.m_sOperation=_26;
Prompt.prototype.Show.call(this);
},OnOK:function(_28){
if(_28.CombatName){
CombatantList.Instance[this.m_sOperation](DisplayNameToStorageKey(_28.CombatName),this.m_sNamespace,_28.MakeDefault=="on");
}
},m_sNamespace:"",m_hLastValue:null,m_sOperation:""});
dojo.addOnLoad(function(){
PromptOpen.Instance=new PromptOpen();
});
dojo.declare("PromptSave",Prompt,{constructor:function(){
this.SetID("SavePrompt");
this.RegisterOK("SavePromptOK");
this.RegisterCancel("SavePromptCancel");
this.SetDefaultParameters({});
this.m_hLastValue=[];
},Show:function(_29,_2a,_2b){
this.GetDialogObject().attr("title",_29);
dojo.byId("SavePromptLabel").innerHTML=_2a;
UpdateSavedCombatStore(_2b);
this.m_hLastValue[this.m_sNamespace]=dijit.byId("SavePromptCombatName").attr("value");
var _2c=this.m_hLastValue[_2b];
if(_2c){
dijit.byId("SavePromptCombatName").attr("value",_2c);
}else{
dijit.byId("SavePromptCombatName").attr("displayedValue","");
}
this.m_sNamespace=_2b;
Prompt.prototype.Show.call(this);
},OnOK:function(_2d){
if(ValidateDisplayNameWithPopup(_2d.CombatName)){
CombatantList.Instance.Save(DisplayNameToStorageKey(_2d.CombatName),this.m_sNamespace);
}
},m_sNamespace:"",m_hLastValue:null});
dojo.addOnLoad(function(){
PromptSave.Instance=new PromptSave();
});
dojo.declare("PromptDelete",Prompt,{constructor:function(){
this.SetID("DeletePrompt");
this.RegisterOK("DeletePromptOK");
this.SetDefaultParameters({});
this.m_hLastValue=[];
this.m_oMultiSelect=dijit.byId("DeletePromptCombats");
dojo.connect(dijit.byId("DeletePromptDelete"),"onClick",this,"OnDeleteClick");
},Show:function(_2e,_2f,_30){
this.GetDialogObject().attr("title",_2e);
dojo.byId("DeletePromptLabel").innerHTML=_2f;
this.m_sNamespace=_30;
this.UpdateMultiSelect();
Prompt.prototype.Show.call(this);
},UpdateMultiSelect:function(){
UpdateSavedCombatStore(this.m_sNamespace);
DeleteAllChildNodes(this.m_oMultiSelect.containerNode);
for(var _31=0;_31<SavedCombatStoreData.items.length;++_31){
var _32=SavedCombatStoreData.items[_31];
var _33=document.createElement("option");
_33.value=_32.Name;
_33.text=_32.Name;
this.m_oMultiSelect.containerNode.appendChild(_33);
}
},OnDeleteClick:function(){
var _34=this.m_oMultiSelect.getSelected();
if(_34.length==0){
return;
}
var _35="Are you sure you want to delete the following:";
for(var _36=0;_36<_34.length;++_36){
_35+="\r\n";
_35+=_34[_36].value;
}
if(confirm(_35)){
for(var _36=0;_36<_34.length;++_36){
dojox.storage.remove(DisplayNameToStorageKey(_34[_36].value),this.m_sNamespace);
}
this.UpdateMultiSelect();
}
},m_sNamespace:"",m_oMultiSelect:null});
dojo.addOnLoad(function(){
PromptDelete.Instance=new PromptDelete();
});
var SavedCombatStoreData={identifier:"Name",label:"Name",items:[]};
function UpdateSavedCombatStore(_37){
SavedCombatStoreData.items=[];
var _38=dojox.storage.getKeys(_37);
_38.sort();
for(var iSv=0;iSv<_38.length;++iSv){
if(_38[iSv].length>0&&_38[iSv].substring(0,1)!="_"){
SavedCombatStoreData.items.push({Name:StorageKeyToDisplayName(_38[iSv])});
}
}
SavedCombatStore._getItemsFromLoadedData(SavedCombatStoreData);
};
function GetPageHTML(_1,_2){
dojo.xhrGet({url:"RemotePage.php?URL="+escape(_1),handleAs:"text",load:function(_3,_4){
if(!_3){
_2(false,null);
}else{
_2(true,_3);
}
return _3;
},error:function(_5,_6){
_2(false,null);
return _5;
}});
};
dojo.declare("PageParser",null,{constructor:function(_7){
this.m_hCriteria=_7;
},ParsePage:function(_8,_9){
var _a=this;
GetPageHTML(_8,function(_b,_c){
if(_b){
_9(_a.ParseHTML(_c));
}else{
_9(null);
}
});
},ParseHTML:function(_d){
var _e={};
for(var _f in this.m_hCriteria){
var _10=this.m_hCriteria[_f];
for(var iRX=0;iRX<_10.length;++iRX){
var _12=_10[iRX].exec(_d);
if(_12!=null&&_12.length>1){
_e[_f]=_12[1];
break;
}
}
}
return _e;
},m_hCriteria:null});
var MonsterParser=new PageParser({Name:[/\<span class="xp"\>\s*XP\s*[0-9]+\<\/span\>\<\/span\>\s*([\w\d\s,\(\)]+)\</,/\<title\>([\w\d\s,\(\)]+)\s*\:\:\s*d20srd\.org\<\/title\>/],HP:[/\<b\>HP\<\/b\>\s*(\d+)/,/HP\s*(\d+)/,/(\d+) hp/],Initiative:[/\<b\>Initiative\<\/b\>\s*([\+\-]*\d+)/,/Initiative\s*([\+\-]*\d+)/,/Initiative\<\/a\>\:\<\/th\>\s*\<td\>\<a[^\>]*>([\+\-]*\d+)\<\/a\>\<\/td\>/]});
if(BROWSER==B_Firefox){
window.addEventListener("ExternalAddCombatant",function(_1){
try{
var _2=dojo.fromJson(_1.target.getAttribute("ExternalAddCombatantData"));
_1.target.setAttribute("ExternalAddCombatantData","");
for(var _3=0;_3<_2.length;++_3){
var _4=MonsterParser.ParseHTML(_2[_3].HTML);
if(_4.Name||_4.HP||_4.Initiative){
PromptAddCombatant.Instance.Show(_2[_3].URL,_4.Name,SafeParseInt(_4.HP),SafeParseInt(_4.Initiative));
return;
}
}
PromptAddCombatant.Instance.Show(_2[0].URL);
}
catch(e){
alert("Error recieving data from the extension.");
}
},false);
}
dojo.addOnLoad(function(){
var _1=dijit.byId("Toolbar.Misc");
dojo.connect(_1,"onClick",_1,"_onArrowClick");
CombatantList.Instance.Initialize("Combatants","WebPages","Notes");
dojo.subscribe("SplitterStartDrag",function(){
ShowElements(dojo.doc.body.getElementsByTagName("iframe"),false);
});
dojo.subscribe("SplitterStopDrag",function(){
ShowElements(dojo.doc.body.getElementsByTagName("iframe"),true);
});
dojo.byId("LoadScreen").style.display="none";
if(!dojox.storage.manager.isInitialized()){
dojox.storage.manager.addOnLoad(OnStorageInitialize);
}else{
OnStorageInitialize();
}
});
var bCurrentLoaded=false;
function OnStorageInitialize(){
if(!bCurrentLoaded){
CombatantList.Instance.Load("CombatantList","Current");
}
bCurrentLoaded=true;
};
window.onbeforeunload=function(){
if(bCurrentLoaded){
CombatantList.Instance.Save("CombatantList","Current");
}
if(BROWSER==B_IE){
var _2=window.__flash__removeCallback;
window.__flash__removeCallback=function(_3,_4){
try{
_2(_3,_4);
}
catch(x){
}
};
}
};


