function DiceRollerModel(){var n=this;this.RollDie=function(){return Math.floor(Math.random()*6+1)},this.RollDice=function(t,i,r,u){for(var f=0,h=new Array(t),s,e,o=1;o<=t;o++)s=n.RollDie(),h[o-1]=s,f+=s;return f+=parseInt(i),f<1&&(f=1),r>0&&(f*=parseInt(r)),e=new DiceResultsModel,e.Dice=h,e.Result=f,u&&(e.Margin=u-f),e}}function DiceRollerController(){var n=this;n.model=new DiceRollerModel,n.numRolls=$("#NumberOfRolls"),n.numDice=$("#NumberOfDice"),n.modifier=$("#Modifier"),n.target=$("#Target"),n.multiple=$("#Multiple"),n.showDice=$("#ShowEquation"),n.submit=$("#rollDice"),n.output=$("#output"),n.submit.click(function(){$("form")[0].checkValidity()&&n.output.html(n.RollvsTarget())}),this.RollvsTarget=function(){for(var o="",t="",s=0,h=0,r=1;r<=n.numRolls.val();r++){var u="",c="",f="",e="",i=n.model.RollDice(n.numDice.val(),n.modifier.val(),n.multiple.val());n.target.val()>0&&(i.Result<=n.target.val()?(f="ok",e="success",u="(Pass by "+(n.target.val()-i.Result)+")",s++):(f="remove",e="danger",u="(Fail by "+(i.Result-n.target.val())+")",h++)),n.showDice.is(":checked")&&(c="["+i.Dice.toString()+"]"),o+="<div class='resultRow'><span class='glyphicon alert-"+e+" glyphicon-"+f+"' aria-hidden='true'><\/span>"+i.Result+" "+u+" "+c+"<\/div>"}return n.target.val()>0&&(t+="<div id='countResults'>",t+="<span class='label label-success'> Success: "+s+"<\/span>",t+="<span class='label label-danger'> Fail: "+h+"<\/span>",t+="<\/div>"),t+o}}function DiceResultsModel(){this.Dice=null,this.Result=null,this.Margin=null}function Loader(){var n=this;n.screen=$("#loaderScreen"),n.icon=$("#loaderIcon"),n.show=function(){n.screen.fadeIn(),n.icon.fadeIn()},n.hide=function(){n.screen.fadeOut(),n.icon.fadeOut()},n.toggle=function(){n.screen.fadeToggle(),n.icon.fadeToggle()}}function AjaxRequest(){var n=this;n.send=function(n,t,i){var r={type:"POST",beforeSend:function(){},success:function(){return!0},error:function(){alert("An error has occured. Please try again later.")},complete:function(){r.loader&&PageLoader.hide()},loader:!0,async:!0};$.extend(r,i),r.loader&&PageLoader.show(),$.ajax({type:r.type,url:n,contentType:"application/json; charset=utf-8",data:t!=null?JSON.stringify(t):"",beforeSend:r.beforeSend,success:r.success,error:r.error,complete:r.complete,async:r.async})}}function Menu(){var n=this;n.wrapper=$("#menuWrapper"),n.menu=$("#menu"),n.list=$("#menu ul"),n.html=$("html"),n.content=$("#content"),n.pageTitle=$("#pageTitle"),n.DiceModel=new DiceRollerModel,n.RollDice=$("#menuRollDice"),n.RollResult=$("#menuRollResult"),n.DonateButton=$("#donateButton"),Modernizr.touch?$("#menumusic").removeAttr("target"):$('[data-toggle="tooltip"]').tooltip({html:!0});n.wrapper.on("click",function(t){n.toggleMenu(t)}).on("click","nav",function(){e.stopPropagation()});this.toggleMenu=function(t,i){(!i||!n.html.hasClass("menu-opening"))&&(i||n.html.hasClass("menu-opening")||i==undefined)&&(n.html.toggleClass("menu-opening"),n.html.hasClass("menu-opening")?setTimeout(function(){n.wrapper.css("overflow-y","auto")},250):n.wrapper.css("overflow-y","hidden"))};n.RollDice.on("click",function(){var t=n.DiceModel.RollDice(3,0,0);n.RollResult.html(t.Result)});n.RollDice.delayedCallback({callback:function(){Ajax.send("/DiceRoller/SaveRoll",{roll:n.RollResult.html()},{loader:!1})},delay:500,events:"click"})}function Notification(){var n=this;n.alert={changeLog:!1,support:!1},n.text=$("#notificationText"),n.dismiss=$("#notificationDismiss"),this.Initialize=function(){n.dismiss.on("click",n.HideNotification);var t=[];n.alert.changeLog&&t.push("<strong>New version released!<\/strong> <a href='/Changelog'>View the release notes<\/a>"),n.alert.support&&t.push('<strong>We need your help!<\/strong> <a href="https://www.patreon.com/codebyclockwork?ty=h" target="_blank">Support us on Patreon!<\/a>'),t.length>0&&n.ShowNotification(t)},this.ShowNotification=function(t){$("html").addClass("notification");var i="";$(t).each(function(){i+=this+"<br/>"}),n.text.html(i)},this.HideNotification=function(){Ajax.send("/Account/ClearAllAlerts",null,{loader:!1})}}function Utilities(){var n=this;this.NumbersOnly=function(t,i,r){function f(n){i&&(n?i.fadeIn():i.hide())}var u=jQuery.extend({numbersOnlyError:"Only Numbers Allowed",allowedKeyCodes:[8,0],maxDigits:6,maxDigitsError:"Must Be Less Than {0} Digits",zeroAllowed:!1,zeroError:"Zero Amount Not Valid"},r);u.maxDigitsError=u.maxDigitsError.replace("{0}",u.maxDigits+1),jQuery(t).keypress(function(t){var o=jQuery(this),r,e;jQuery.inArray(t.which,u.allowedKeyCodes)>-1||(r=!1,!r&&!n.isTextSelected(o)&&u.maxDigits>0&&o.val().length>=u.maxDigits&&(e=u.maxDigitsError,r=!0),!r&&(t.which==32||isNaN(String.fromCharCode(t.which)))&&(e=u.numbersOnlyError,r=!0),r||u.zeroAllowed||o.val().length!=0||t.which!=48&&t.which!=96||(e=u.zeroError,r=!0),r&&(t.preventDefault(),i&&i.html(e)),f(r))}),jQuery(t).blur(function(){f(!1)})},this.isTextSelected=function(n){return(n=n[0],typeof n.selectionStart=="number")?n.selectionStart==0&&n.selectionEnd==n.value.length:typeof document.selection!="undefined"?(n.focus(),document.selection.createRange().text==n.value):void 0},this.GetModel=function(n){var t={},i={};return $("form").find("input, select, checkbox").each(function(){var n,i;$(this).attr("type")!="hidden"&&$(this).prop("name").length&&(n=$(this).val(),$(this).is(":checkbox")&&(n=$(this).is(":checked")),i=$(this).prop("name")?$(this).prop("name"):$(this).prop("id"),t[i]=n)}),i[n||"model"]=t,i},this.Querystring=function(){var r=[],t,n=document.URL.split("?")[1],i;if(n!=undefined)for(n=n.split("&"),i=0;i<n.length;i++)t=n[i].split("="),r.push(t[1]),r[t[0]]=t[1];return r},this.IncrementValue=function(){var r=$(this),t=r.closest(".autoIncrementWrapper").find("#"+r.attr("target")),i;t.is(":disabled")||(t.val().trim().length===0&&t.val("0"),i=n.checkDecimalPrecision(parseFloat(t.val())+parseFloat($(this).attr("step")),parseInt($(this).attr("precision"))),t.attr("max")&&i>parseFloat(t.attr("max")))||t.val(i)},this.DecrementValue=function(){var r=$(this),t=r.closest(".autoIncrementWrapper").find("#"+r.attr("target")),i;if(!t.is(":disabled")){if(t.val().trim().length===0&&t.val("0"),i=n.checkDecimalPrecision(parseFloat(t.val())-parseFloat($(this).attr("step")),parseInt($(this).attr("precision"))),t.attr("min")&&i<parseFloat(t.attr("min")))if(t.attr("lowerBoundBlank")==="true")i="";else return;t.val(i)}},this.checkDecimalPrecision=function(n,t){return t&&t>0?n.toFixed(t):n},this.isElementInViewport=function(n){var t=n.getBoundingClientRect(),r=window.innerWidth||doc.documentElement.clientWidth,u=window.innerHeight||doc.documentElement.clientHeight,i=function(n,t){return document.elementFromPoint(n,t)};return t.right<0||t.bottom<0||t.left>r||t.top>u?!1:n.contains(i(t.left,t.top))||n.contains(i(t.right,t.top))||n.contains(i(t.right,t.bottom))||n.contains(i(t.left,t.bottom))}}function RegExpFormatter(){var n=this;n.Escape=function(n){return(n+"").replace(/[.?+^$[\]\\(){}|-]/g,"\\$&")},n.WildCardFormat=function(t){return new RegExp("^"+n.Escape(t).replace("*",".*")+".*","i")}}var PageLoader,Ajax,Utilities,Notification,RegExFormatter;$(function(){var i,r,n,t,u;PageLoader=new Loader,Ajax=new AjaxRequest,Utilities=new Utilities,RegExBuilder=new RegExpFormatter,Notification=new Notification,i=$("#hamburger"),r=new Menu;i.on("click",r.toggleMenu);n=$("input"),t=n.filter("[type=number]"),n.focusout(function(){var n=$(this);n.val($.trim(n.val()))}),n.focusin(function(){$(this).select()}),t.not("[min]").attr("min","0"),t.not("[max]").attr("max","999999");$(".autoIncrementValue").on("click",Utilities.IncrementValue);$(".autoDecrementValue").on("click",Utilities.DecrementValue);$('.autoIncrementWrapper input[type="number"]').addClass("form-control"),$(".bootstrapswitch").bootstrapSwitch(),setInterval(function(){Ajax.send("/Home/KeepSessionAlive",null,{loader:!1,error:function(){}})},6e4),u=new Konami(function(){var n=$('<img src="/content/images/dragon.gif?rnd='+Math.random()+'" id="konami" />').appendTo("body");n.delay(3590).queue(function(){$(this).remove()}),n=$()})}),$.fn.clickList=function(n,t){function c(){var n=i.not(".selectAll").filter(function(){return $(this).data("active")});n.length===i.length-1?o(u,!0):o(u,!1)}function o(n,t){n.removeClass(e),t&&n.addClass(e),n.data("active",t)}function l(n){n.toggleClass(e),n.data("active",n.hasClass(e))}var e="list-group-item-info",f=$(this),i=$(this).find("li"),u,r,s,h;if(typeof n=="string"){if(n==="getActive")return i.not(".selectAll").filter(function(){return $(this).data("active")});if(n==="toggleInputs"&&(typeof t===Boolean?i.find("input").fadeToggle(t):i.find("input").fadeToggle()),n==="selectAllActive")return i.filter(".selectAll").data("active")}else{if(r=jQuery.extend({IncludeSelectAll:!0,SelectAllText:"Select All",SelectAllByDefault:!0,IncludeInput:!1,InputType:"number",InputText:"0",InputClass:"",InputAttributes:{},SelectAllInput:!1,SingleInput:!1,SelectNoneText:"None"},n),r.IncludeSelectAll){$(this).prepend($("<li/>",{"class":"list-group-item selectAll",text:r.SelectAllText})),i=f.find("li"),u=i.filter(".selectAll");f.on("click",".selectAll",function(){u.data("active",!u.data("active")),i.each(function(){o($(this),u.data("active"))})});r.SelectAllByDefault&&u.click()}if(r.IncludeInput){s=jQuery.extend({"class":"pull-right col-xs-3"+r.InputClass,type:r.InputType,value:r.InputText},r.InputAttributes),h=$("<input/>",s),i.each(function(){$(this).append(h.clone())});f.on("click","li input",function(n){n.stopPropagation()});r.SelectAllInput||u.find("input").remove()}if(r.SingleInput){$(this).prepend($("<li/>",{"class":"list-group-item list-group-item-info",text:r.SelectNoneText})),i=f.find("li");f.on("click","li",function(){i.each(function(){o($(this),!1)})})}f.addClass("clickList row"),i.addClass("noselect col-xs-12");f.on("click","li",function(n){$(n.target).hasClass(".selectAll")||(l($(this)),r.IncludeSelectAll&&c())});return this}}