Advertisement
Guest User

Untitled

a guest
Nov 28th, 2017
540
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 198.76 KB | None | 0 0
  1. !function(e,n,o){function t(e,n){return typeof e===n}function s(){var e,n,o,s,a,i,r;for(var l in c)if(c.hasOwnProperty(l)){if(e=[],n=c[l],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(o=0;o<n.options.aliases.length;o++)e.push(n.options.aliases[o].toLowerCase());for(s=t(n.fn,"function")?n.fn():n.fn,a=0;a<e.length;a++)i=e[a],r=i.split("."),1===r.length?Modernizr[r[0]]=s:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=s),f.push((s?"":"no-")+r.join("-"))}}function a(e){var n=u.className,o=Modernizr._config.classPrefix||"";if(p&&(n=n.baseVal),Modernizr._config.enableJSClass){var t=new RegExp("(^|\\s)"+o+"no-js(\\s|$)");n=n.replace(t,"$1"+o+"js$2")}Modernizr._config.enableClasses&&(n+=" "+o+e.join(" "+o),p?u.className.baseVal=n:u.className=n)}function i(){return"function"!=typeof n.createElement?n.createElement(arguments[0]):p?n.createElementNS.call(n,"http://www.w3.org/2000/svg",arguments[0]):n.createElement.apply(n,arguments)}function r(){var e=n.body;return e||(e=i(p?"svg":"body"),e.fake=!0),e}function l(e,o,t,s){var a,l,f,c,d="modernizr",p=i("div"),h=r();if(parseInt(t,10))for(;t--;)f=i("div"),f.id=s?s[t]:d+(t+1),p.appendChild(f);return a=i("style"),a.type="text/css",a.id="s"+d,(h.fake?h:p).appendChild(a),h.appendChild(p),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(n.createTextNode(e)),p.id=d,h.fake&&(h.style.background="",h.style.overflow="hidden",c=u.style.overflow,u.style.overflow="hidden",u.appendChild(h)),l=o(p,e),h.fake?(h.parentNode.removeChild(h),u.style.overflow=c,u.offsetHeight):p.parentNode.removeChild(p),!!l}var f=[],c=[],d={_version:"3.5.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var o=this;setTimeout(function(){n(o[e])},0)},addTest:function(e,n,o){c.push({name:e,fn:n,options:o})},addAsyncTest:function(e){c.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=d,Modernizr=new Modernizr;var u=n.documentElement,p="svg"===u.nodeName.toLowerCase(),h=d._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];d._prefixes=h;var m=d.testStyles=l;Modernizr.addTest("touchevents",function(){var o;if("ontouchstart"in e||e.DocumentTouch&&n instanceof DocumentTouch)o=!0;else{var t=["@media (",h.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");m(t,function(e){o=9===e.offsetTop})}return o}),Modernizr.addTest("cookies",function(){try{n.cookie="cookietest=1";var e=-1!=n.cookie.indexOf("cookietest=");return n.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT",e}catch(o){return!1}}),s(),a(f),delete d.addTest,delete d.addAsyncTest;for(var v=0;v<Modernizr._q.length;v++)Modernizr._q[v]();e.Modernizr=Modernizr}(window,document);</script>
  2. <script type="text/javascript">$(document).ready(function(){$(window).on("popstate",function(){func.Path.parse()})
  3. if(!String.prototype.startsWith){String.prototype.startsWith=function(searchString,position){position=position||0;return this.indexOf(searchString,position)===position}}
  4. var cp_jQuery_focus=jQuery.prototype.focus;jQuery.prototype.focus=function(){let y=this.scrollTop();let ret=cp_jQuery_focus.apply(this,arguments);this.scrollTop(y);delete cp_jQuery_focus;return ret}
  5. jQuery.prototype.extend({isElementAnimated:function(){return this.filter(':animated').length},isElementExistent:function(){return this.length},fwClick:function(func,closeMenu){if(typeof func=='function'){this.addClass('fwclick');this.data('task',func);this.data('close-menu',closeMenu);return this}
  6. return console.error("Invalid function parm for fwClick function")},setUUID:function(uuid){this.data('uuid',uuid);return uuid},getUUID:function(){return this.data('uuid')},removeUUID:function(){this.removeData('uuid')},disableSelection:function(){return this.attr('unselectable','on').css('user-select','none')},enableSelection:function(){return this.attr('unselectable','off').css('user-select','initial')},scrollBar:function(){if(Modernizr.touchevents){return this.addClass('touchevents')}
  7. if(this.hasClass('scrollbar-container')){return _$.fn.scrollBar.Update(this)}
  8. let axis={x:(this.css('overflow-x')==='scroll'),y:(this.css('overflow-y')==='scroll')}
  9. if(!axis.x&&!axis.y)return;this.addClass('scrollbar-container');if(typeof arguments[0]==='object'){for(let key in arguments[0]){this.data(key,arguments[0][key])}}
  10. let $scrollbarRail;if(axis.x){if(!this.data('scrollX'))this.data('scrollX',0)}
  11. if(axis.y){if(!this.data('scrollY'))this.data('scrollY',0)}
  12. _Mutation.init.observe(this[0],{attributes:!0,attributeFilter:['data-mutation'],childList:!0});_$.fn.scrollBar.Update(this)}})
  13. const COMMENT_REMOVED_BY_TERMS=1;const COMMENT_REMOVED_BY_OWNER=2;const COMMENT_REMOVED_HARD=3;const NEWS_TYPE_RECENT_RELEASE=0;const NEWS_TYPE_ARTICLE=1;const NEWS_TYPE_UPDATES=2;const _=undefined;const $$=jQuery;delete jQuery;delete $;const $$io=io;delete io;const $navBody=$$('nav.Body');var socket=$$io.connect('/v1');var _String={splice:function($string,startPoint,delCount,strAppend){strAppend=strAppend||"";return $string.slice(0,startPoint)+strAppend+$string.slice(startPoint+Math.abs(delCount))},exSplice:function($string,startPoint,endPoint,strAppend){strAppend=strAppend||"";return $string.slice(0,startPoint)+strAppend+$string.slice(startPoint+Math.abs(endPoint-startPoint))},sanitizeHTML:function($string){return $string.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;')},desanitizeHTML:function($string){return $string.replace(/\&amp\;/g,'&').replace(/&lt\;/g,'<').replace(/\&gt\;/g,'>')},prepare:function($string){let links=[],c=0;$string=$string.replace(/(?:www.|https?\:\/\/)[^\s]+/gi,function(match,offset){links.push('<a target="_blank" href="'+(!match.startsWith("http")?"http://":"")+match+'">'+match+'</a>');return "ahref-"+c++})
  14. $string=$string.replace(new RegExp(_$.vars.$emoticonPattern,'gi'),function(match){match=match.toLowerCase();let result;if(typeof _$.vars.Data.$Emoticons[match]!='undefined'){result=$$("<div>",{class:"isEmoticon"}).width(_$.vars.Data.$Emoticons[match].width);$$("<div>",{class:'img Tooltip','data-tip-txt':_$.vars.Data.$Emoticons[match].name,'data-tip-delay':.6,'data-tip-pos':'top'}).appendTo(result).css({background:'url("/styles/default/images/Emoticons/'+_$.vars.Data.$Emoticons[match].src+'") center center / contain no-repeat'})}
  15. return(result)?result[0].outerHTML:match})
  16. for(let i=0;i<links.length;i++){$string=$string.replace(/ahref-\d/gi,function(match){return links[+match.substring(6)]})}
  17. $string=$string.replace(/([^a-zA-Z0-9])\1{5,}/g,function(match,offset){return match.substring(0,3)})
  18. return $string}}
  19. var _Object={sortBy:function(obj,field,arrkey){let sortable=[];for(let key in obj){if(obj.hasOwnProperty(key))sortable.push([key,obj[key]])}
  20. sortable.sort(function(a,b){let x,y;if(arrkey){x=a[1][field][arrkey].toLowerCase();y=b[1][field][arrkey].toLowerCase()}
  21. else{x=a[1][field].toLowerCase();y=b[1][field].toLowerCase()}
  22. return x<y?-1:x>y?1:0})
  23. obj={};for(let i=0;i<sortable.length;i++){obj[sortable[i][0]]=sortable[i][1]}
  24. return obj}}
  25. var _RegExp={quote:function($string){return $string.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}}
  26. var _Date={Format:function(timestamp){return $lang[$lang.set].LANG_DAYS[timestamp.getDay()]+", "+timestamp.getDate()+" "+$lang[$lang.set].LANG_MONTHS[timestamp.getMonth()]+" "+timestamp.getFullYear()+" at "+pad(timestamp.getHours(),2)+":"+pad(timestamp.getMinutes(),2)}}
  27. var _Mutation={init:new MutationObserver(function(mutations){mutations.forEach(_Mutation.call)}),call:function(mutation){let $self=$$(mutation.target);_$.fn.scrollBar.Update($self);if(typeof $self.data('update')=='function')$self.data('update')($self)},anim:function(elem){return elem.attr('data-mutation',!0)}}
  28. let wndModalSwitch;let $lang;let $socket={insertAnime:"cl->Anime->Insert",updateAnime:"cl->Anime->Update",deleteAnime:"cl->Anime->Delete",sendChatMessage:"cl->Chat->sendMessage",postComment:"cl->Comments->Post",replyComment:"cl->Comments->Reply",deleteComment:"cl->Comments->Delete",editComment:"cl->Comments->Edit",Notification:"cl->Notification->Push",Disconnect:"cl->Disconnect",emit:{Reconnect:"Client->Reconnect",Session:"User->Session",Register:"User->Register",Login:"User->Login",Logout:"User->Logout",changeAvatar:"User->changeAvatar",loadProfile:"User->loadProfile",loadAnime:{All:"Anime->Load->All",Specific:"Anime->Load->Specific"},insertAnime:"Anime->Insert",editAnime:"Anime->Edit",deleteAnime:"Anime->Delete",loadEpisodes:"Episodes->Load",countEpisodes:"Episodes->Count",insertEpisode:"Episodes->Insert",editEpisode:"Episodes->Edit",deleteEpisode:"Episodes->Delete",loadChat:"Chat->Load",sendChatMessage:"Chat->sendMessage",loadChatUsers:"Chat->Load->Users",loadNews:{All:"News->Load->All",Specific:"News->Load->Specific"},loadComment:{All:"Comments->Load->All"},postComment:"Comments->Post",replyComment:"Comments->Reply",deleteComment:"Comments->Delete",editComment:"Comments->Edit",createReport:{Comments:"Report->Create->Comments"}}}
  29. let pad=function(num,max){num=num.toString();return(num.length<max)?pad("0"+num,max):num}
  30. let loginAs={User:function($user){delete _$.vars.$guestLogged;delete $user.Auth;_$.vars.$userLogged=$user;_$.fn.Notification.Push('e916',"You have been logged in as "+$user.Username+"! If this is not your account, please relog with your own account!");_$.fn.Window.updateHeader();_$.fn.Widget.Chat.updateAccess();function v2B(){setCookie("_v2b",prompt("Insert your beta key here:"),1);location.reload()}
  31. if($user.Access.Level<4){$$("li.Button#v2B").remove();let $social_network=$$('ul.List#social-network');$$("<li>",{class:"Button",id:"v2B",text:"Incearcă versiunea v2B"}).fwClick(v2B).appendTo($social_network)}},Guest:function($guest){delete _$.vars.$userLogged;_$.vars.$guestLogged=$guest;_$.fn.Notification.Push('e912',"You have been assigned Guest "+$guest.Id+" until you log in with your own account!");_$.fn.Window.updateHeader();_$.fn.Widget.Chat.updateAccess()}}
  32. let Lang={add:function(lang,langCode,text){$lang[lang][langCode]=text},get:function(langCode){let customArgs=1;let text=$lang[$lang.set][langCode]||langCode;if(arguments[customArgs]){for(let i=0;i<arguments[customArgs].length;i++){text=text.replace("{"+parseInt(i)+"}",arguments[customArgs][i])}}
  33. return text}}
  34. const LOADING_ERROR=0;const LOADING_CHANGE=1;var func={Init:{interface:function(ack){function openDiscord(){let fnContinue=function(){window.open('https://discord.gg/PWFBvzB');func.Popup.Destroy()}
  35. let $content=$$("<div>",{id:"openDiscord"});$$("<span>",{id:"span-1",text:"Ne bucurăm că dorești să ne vizitezi și pe server-ul de Discord!"}).appendTo($content);$$("<span>",{id:"span-2",html:"<i class=\"Icon\">&#xf071;</i> Înainte de a continua, îti vom explica câteva reguli cu care va trebui să te conformezi: "}).appendTo($content);let $ul_1=$$("<ul>",{id:"ul-1"}).appendTo($content);$$("<li>",{text:"1. Trebuie să stăpânești cei 7 ani de acasă"}).appendTo($ul_1);$$("<li>",{text:"2. Limbajul inadecvat este pedepsit ca atare"}).appendTo($ul_1);$$("<li>",{text:"3. Imaginile obscene nu își au locul pe niciun canal de pe server"}).appendTo($ul_1);$$("<li>",{html:"4. Spam-ul este permis doar pe canalul dedicat acestuia (<span id=\"channel\">#spam</span>)"}).appendTo($ul_1);$$("<span>",{id:"span-3",text:"Ce mai trebuie să știi înainte de a continua (dacă este prima ta conectare): "}).appendTo($content);let $ul_2=$$("<ul>",{id:"ul-2"}).appendTo($content);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Singurul canal de tip text accesibil utilizatorilor simpli este <span id=\"channel\">#spam</span> "}).appendTo($ul_2);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Pentru a beneficia în totalitate de privilegile de membru, după conectare va trebui să te identifici, printr-un mesaj direct (DM), unui membru din administrare cu numele curent de pe <span id=\"channel\">app.yokoanime.com</span>"}).appendTo($ul_2);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> <span id=\"maids\">Nadeko</span> vă va întâmpina la conectare cu un mesaj de bun venit și instrucțiuni pentru cum poți deveni membru, purtați-vă frumos cu ea ^_^"}).appendTo($ul_2);$$("<span>",{id:"span-4",html:"<i class=\"Icon\">&#xf06a;</i> Pentru ajutor sau mai multe informații ne puteți găsi pe serverul de Discord, suntem online în permanență (pe timpul zilei)"}).appendTo($content);func.Popup.Create({id:"openDiscord",width:600,modal:!0,title:"Intră pe Discord",content:$content,buttons:{continue:{icon:'f058',text:"Acceptă",func:fnContinue},return:{icon:'f0a8',text:"Refuză",func:func.Popup.Destroy}}})}
  36. func.Loading.state("main","Preparing the Jutsu Clones");_$.fn.Window.createHeader();let $banner=$$("<div>",{class:"Banner"}).appendTo($navBody);$$("<a>",{href:"http://app.yokoanime.com/",class:"img"}).appendTo($banner);let $social_network=$$("<ul>",{class:"List",id:"social-network"});$$("<li>",{class:"Button",id:"Discord",text:"Alătură-te nouă pe Discord"}).fwClick(openDiscord).appendTo($social_network);$$("<li>",{class:"Button",id:"Facebook",text:"Urmărește-ne pe Facebook"}).appendTo($social_network);$social_network.appendTo($banner);$$("<nav>",{class:"Middle"}).appendTo($navBody);$$("<nav>",{class:"Sidebar",id:"Left"}).appendTo($navBody);$$("<nav>",{class:"Sidebar",id:"Right"}).appendTo($navBody);$$('nav.Copyright').appendTo($navBody);return ack()},session:function(ack){func.Loading.state("main","Writing your name in the Death Note");_$.fn.ajax({url:'/findSession.jx',data:{auth:localStorage.getItem('Session-Auth')},done:function(data){if(data.Profile)loginAs.User(data);else loginAs.Guest(data);return ack()}})},emoticons:function(ack){func.Loading.state("main","Preparing 3D Maneuver Gear");_$.fn.ajax({url:'/emoticons/loadAll.jx',done:function(data){_$.vars.Data.$Emoticons=data;let regexPattern=[];for(let key in data){let image=new Image();regexPattern.push('('+_RegExp.quote(key)+')');image.src='../styles/default/images/Emoticons/'+data[key].src}
  37. _$.vars.$emoticonPattern=regexPattern.join('|');return ack()}})},lang:function(ack){func.Loading.state("main","Assassinating Koro-sensei");$$.getJSON("/data/lang_app.json",function(data){$lang=data;return ack()})},anime:function(ack){func.Loading.state("main","Charging Rei-gun");_$.fn.ajax({url:'/anime/loadAll.jx',done:function(data){_$.vars.Data.$Anime=data;let $animeList=$$('ul.List#animeDropdown').empty();let $animeli;for(let key in data){$animeli=_$.fn.Tooltip.Add($$("<li>").appendTo($animeList),{delay:.2},"$"+key);$$("<a>",{href:"http://app.yokoanime.com/anime/"+key,class:"Button",id:key,text:data[key].Title.original}).data({key:key}).appendTo($animeli)}
  38. $animeList.scrollBar();return ack()}})},chat:function(ack){func.Loading.state("main","Over-clocking Pikachu");_$.fn.ajax({url:'/chat/loadAll.jx',done:function(data){_$.vars.tmp.$loadedChat=data;return ack()}})}},HTML:{defaultTitle:"Yoko Anime -- Serii anime traduse in limba romana",defaultDescription:"Urmareste seriile tale de anime-uri preferate la calitate buna: Boruto, Attack on Titan, si multe altele, subtitrate in limba romana de catre cei mai buni traducatori!",title:function(newTitle){newTitle=newTitle||func.HTML.defaultTitle;$$('head title').remove();$$('head').append('<title>'+newTitle+'</title>')},description:function(newDescription){newDescription=newDescription||func.HTML.defaultDescription;$$('meta[name=description]').remove();$$('head').append('<meta name="description" content="'+newDescription+'">')}},Path:{parse:function(){let loadIndex=function(){_$.fn.News.Load(!1)}
  39. href=window.location.pathname.substring(1).split('/');if(href[0]=='anime'){if(href[2]=='episode'||href[2]=='ep'){return _$.fn.Anime.loadSpecific(href[1],href[3])}
  40. return _$.fn.Anime.loadSpecific(href[1])}
  41. if(href[0]=='user'){return _$.fn.User.loadProfile(href[1])}
  42. _$.fn.News.Load(!1)}},Menu:{Result:{prepareMenu:function(attachedTo,options){options=options||{};$$('.sl-Menu#Result').remove();let tag=(attachedTo.prop("tagName")=="UL")?"<li>":"<div>";let $menu=$$(tag,{class:"sl-Menu",id:"Result"}).appendTo(attachedTo);$menu.width(options.width||attachedTo.width()+100)
  43. $menu.data({height:80});$menu.position({of:attachedTo,my:"center bottom",at:"center+"+options.offsetX+" top+"+options.offsetY||0,collision:"none none"})
  44. return $menu},isMenuToggled:function($menu){return $menu.data('toggled')},isMenuReady:function(attachedTo){let find=attachedTo.find('.sl-Menu#Result');return(find.length)?find:!1},toggleMenu:function(attachedTo,prep){let $menu=func.Menu.Result.isMenuReady(attachedTo);function show($menu){func.Menu.Result.showMenu($menu)}
  45. function hide($menu){func.Menu.Result.hideMenu($menu)}
  46. if($menu){if(func.Menu.Result.isMenuToggled($menu)){hide($menu)}
  47. else{show($menu)}
  48. return}
  49. return prep($menu)},showMenu:function($menu,ack){$menu.data({toggled:!0});$menu.css({borderWidth:'1px'});$menu.stop().animate({height:80,opacity:1},400,"easeOutExpo",()=>{return(typeof ack=='function')?ack():!1})},hideMenu:function($menu,ack){$menu.data({toggled:!1});$menu.stop().animate({height:0,opacity:0},400,"easeOutExpo",()=>{$menu.remove();return(typeof ack=='function')?ack():!1})}}},Modal:{load:function(Id){},unload:function(){if(!wndModalSwitch)return;let $modal=$$('.Modal');wndModalSwitch.show().animate({opacity:1});delete wndModalSwitch;$modal.remove()}},Menu:{Context:{Create:function(options){options=options||{};options.id=options.id||"Default";$$("nav.contextMenu").remove();let b=0;let $contextMenu=$$("<nav>",{class:"contextMenu",id:options.id});let $content=$$("<div>",{class:"Content",id:"menu-context"}).appendTo($contextMenu);if(options.buttons){let $ctrl=$$("<section>",{class:"Control"});let $button;for(let button in options.buttons){$button=$$("<div>",{class:"Button",text:options.buttons[button].text}).fwClick(options.buttons[button].func);if(options.buttons[button].icon)$$("<i>",{class:"Icon",html:"&#x"+options.buttons[button].icon+";"}).prependTo($button);$button.appendTo($ctrl);b++}
  50. $ctrl.appendTo($content)}
  51. $contextMenu.appendTo($navBody);$contextMenu.position({of:options.target,at:"center center",my:"center bottom-12"})
  52. let height=$content.height();$content.css({opacity:0,height:0});$content.stop().animate({opacity:1,height:height},400,"easeOutExpo");return $contextMenu},Destroy:function($menu){$menu=$menu||$$('nav.contextMenu');if($menu){let $content=$menu.children('.Content#menu-context');$content.stop().animate({opacity:0,height:0},400,"easeOutExpo",()=>{$content.parent().remove()})}},}},Popup:{Banned:function(data){let title;let $content=$$("<div>");let $flex_image=$$("<div>",{class:"flex-split",id:"image"}).appendTo($content);let $flex_text=$$("<div>",{class:"flex-split",id:"text"}).appendTo($content);if(data.suspend&&data.suspend.length){title="Cont suspendat";$$("<span>",{id:"span-1",html:"<i class=\"Icon\">&#xf071;</i> Ne pare rău să te informăm că acest cont de utilizator a fost suspendat!"}).appendTo($flex_text);let $ul_1=$$("<ul>",{id:"ul-1"}).appendTo($flex_text);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Numărul de abateri: <span id=\"info\">"+data.suspendLen+"</span>"}).appendTo($ul_1);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Perioadă: <span id=\"info\">"+_Date.Format(new Date(+data.suspend[0].timeFrom))+" - "+_Date.Format(new Date(+data.suspend[0].timeTo))+"</span>"}).appendTo($ul_1);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Motivul suspendării:"}).appendTo($ul_1);$$("<li>",{id:"reason",text:data.suspend[0].Reason}).appendTo($ul_1);$$("<span>",{id:"span-2",text:"Nu ezita să ne contactezi în cazul în care consideri că ai fost nedreptățit:"}).appendTo($flex_text);let $ul_2=$$("<ul>",{id:"ul-2"}).appendTo($flex_text);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> pe Discord: <span id=\"link\"><a href=\"https://discord.gg/PWFBvzB\" target=\"_blank\">click</a></span>"}).appendTo($ul_2);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> la adresa de E-Mail: <span id=\"link\">placeholder@yokoanime.com</span>"}).appendTo($ul_2);$$("<span>",{id:"span-4",html:"<i class=\"Icon\">&#xf071;</i> Abaterile repetate pot duce la suspendarea permanentă și irevocabilă a contului!"}).appendTo($flex_text)}
  53. else if(data.restrict&&data.restrict.length){title="Acces restricționat";$$("<span>",{id:"span-1",html:"<i class=\"Icon\">&#xf071;</i> Ne pare rău să te informăm că acest cont de utilizator are acces restricționat!"}).appendTo($flex_text);let $ul_1=$$("<ul>",{id:"ul-1"}).appendTo($flex_text);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Numărul de abateri: <span id=\"info\">"+data.restrictLen+"</span>"}).appendTo($ul_1);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Perioadă: <span id=\"info\">"+_Date.Format(new Date(+data.restrict[0].timeFrom))+" - "+_Date.Format(new Date(+data.restrict[0].timeTo))+"</span>"}).appendTo($ul_1);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Motivul restricționării:"}).appendTo($ul_1);$$("<li>",{id:"reason",text:data.restrict[0].Reason}).appendTo($ul_1);$$("<span>",{id:"span-2",text:"Nu ezita să ne contactezi în cazul în care consideri că ai fost nedreptățit:"}).appendTo($flex_text);let $ul_2=$$("<ul>",{id:"ul-2"}).appendTo($flex_text);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> pe Discord: <span id=\"link\"><a href=\"https://discord.gg/PWFBvzB\" target=\"_blank\">click</a></span>"}).appendTo($ul_2);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> la adresa de E-Mail: <span id=\"link\">placeholder@yokoanime.com</span>"}).appendTo($ul_2);$$("<span>",{id:"span-3",text:"Ce înseamnă să am acces restricționat?"}).appendTo($flex_text);let $ul_3=$$("<ul>",{id:"ul-3"}).appendTo($flex_text);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Nu mai poți lăsa comentarii în niciuna dintre secțiuni"}).appendTo($ul_3);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Nu mai poți interacționa cu utilizatorii de pe chat"}).appendTo($ul_3);$$("<li>",{html:"<i class=\"Icon\">&#xf0a9;</i> Șansele de a intra in echipa sunt din ce în ce mai scăzute în funcție de numărul de abateri"}).appendTo($ul_3);$$("<span>",{id:"span-4",html:"<i class=\"Icon\">&#xf071;</i> Accesul restricționat crește riscul de a avea contul suspendat la următoarele abateri!"}).appendTo($flex_text)}
  54. func.Popup.Create({id:"userBanned",modal:!0,width:800,title:title,content:$content,buttonsAlign:"center",buttons:{ok:{icon:'f058',text:"OK",func:func.Popup.Destroy},}})},Create:function(options){options=options||{};options.id=options.id||"Default";options.width=options.width||500;options.height=options.height||"auto";options.modal=(typeof options.modal!='undefined')?options.modal:!1;options.title=options.title||"Default";options.buttons=(typeof options.buttons=='object')?options.buttons:{};$$("nav.Popup").remove();let $popup=$$("<nav>",{class:"Popup",id:options.id});let $dialog=$$("<div>",{class:"Dialog"}).appendTo($popup);$dialog.css({width:options.width,height:options.height})
  55. if(options.modal)$popup.addClass('modal');let $title_bar=$$("<label>",{class:"Title",text:options.title}).appendTo($dialog);if(options.buttons.close){$$("<i>",{class:"Button",id:"close-dialog"}).fwClick(func.Popup.Destroy).appendTo($dialog);delete options.buttons.close}
  56. let $body_section=$$("<section>",{class:"Body"});$body_section.append(options.content).appendTo($dialog);if(options.buttons){let $control_section=$$("<section>",{class:"Control"});$control_section.css({textAlign:options.buttonsAlign||"right"});let $button;for(let button in options.buttons){$button=$$("<div>",{class:"Button",text:options.buttons[button].text}).fwClick(options.buttons[button].func);if(options.buttons[button].icon)$$("<i>",{class:"Icon",html:"&#x"+options.buttons[button].icon+";"}).prependTo($button);$button.appendTo($control_section)}
  57. $control_section.appendTo($dialog)}
  58. $popup.appendTo($navBody).animate({opacity:1},400,"easeOutExpo");$dialog.position({of:$$(window),at:"center center",my:"center center"})
  59. $dialog.draggable({containment:$navBody,handle:$title_bar})
  60. return $popup},Destroy:function(){let $popup=$$("nav.Popup");if($popup.length){$popup.stop().animate({opacity:0},400,"easeOutExpo",function(){$$(this).remove()})}}},Loading:{genuine:function(id){let $loading=$$('div.Screen.Loading#'+id);if($loading.data('id')==id)return $loading;return!1},valid:function(id,uuid){let $loading;if(!($loading=func.Loading.genuine(id)))return;if(_$.fn.UUID.Compare($loading,uuid))return!0;return!1},start:function(id,$parent,settings,ack){settings=(typeof settings!="object")?{}:settings;let $loading=$$("<div>",{class:"Screen Loading",id:id})
  61. $loading.css({position:settings.position||"absolute"});let uuid=_$.fn.UUID.Generate();$loading.data({id:id,uuid:uuid,f_onError:settings.f_onError||!1})
  62. $parent=$parent||$$('body');$parent.children('.Screen.Loading').remove();let $loadingIcon=$$("<ul>",{class:"Icon",id:"Loading"});$$("<li>",{class:"Bar"}).appendTo($loadingIcon);$$("<li>",{class:"Bar"}).appendTo($loadingIcon);let $last=$$("<li>",{class:"Bar"}).appendTo($loadingIcon);$loadingIcon.addClass(settings.pos||'top');let text=settings.text||"Loading";$$("<li>",{class:"Status",text:text}).appendTo($loadingIcon);$loadingIcon.appendTo($loading);let OnAnimationIteration=function(evt){let $loading=$$(evt.target).parent().parent();if($loading.data("remove")<Date.now()){func.Loading.finish($loading.data('id'))}}
  63. $last.on('webkitAnimationIteration oanimationiteration msAnimationIteration animationiteration',OnAnimationIteration);$loading.appendTo($parent).animate({opacity:1},function(){if(typeof ack=='function')ack(uuid)})},remove:function(id,time){time=(typeof time=='undefined')?1000:time;let $loading;if(!($loading=func.Loading.genuine(id)))return;$loading.data({remove:Date.now()+time})},finish:function(id,ack){let $loading;if(!($loading=func.Loading.genuine(id)))return;$loading.animate({opacity:0},400,function(){$loading.remove();if(typeof ack=="function")ack()})},state:function(id,text,state){state=(typeof state=='undefined')?1:state;let $loading;if(!($loading=func.Loading.genuine(id)))return;let $loadingIcon=$loading.children();if(text){let $status=$$($loading).find(".Status");if(!$status.isElementExistent())$$("<li>",{'class':"Status"}).appendTo($loadingIcon);$status.text(text)}
  64. if(state==LOADING_ERROR){if(typeof $loading.data('f_onError')=='function'){$loadingIcon.remove();$loading.data('f_onError')()}
  65. else{$loadingIcon.addClass('failed');func.Loading.remove(id)}}}}}
  66. function isUserLogged(){return(typeof _$.vars.$userLogged=="object")}
  67. function isUserIdEq(id){return(isUserLogged()&&_$.vars.$userLogged.Id==id)}
  68. function hasAccess(level){return(isUserLogged()&&_$.vars.$userLogged.Access.Level<=level)}
  69. function hasAccessAt(section){return(isUserLogged()&&(_$.vars.$userLogged.Access.Special[section+"Mod"]||hasAccess(4)))}
  70. function hasAccessAgainst(data){return(isUserLogged()&&(data==-1||hasAccess(data.Access.Level)||isUserIdEq(data.Id)))}
  71. var _$={socketWaiting:{},socketRequest:undefined,imageUploaded:undefined,vars:{$userLogged:undefined,$guestLogged:undefined,$emoticonPattern:undefined,Data:{$Emoticons:{},$Anime:undefined,$News:[],$Tooltip:{},},tmp:{$loadedUser:undefined,$loadedAnime:undefined,$loadedNews:{},$loadedComments:[],$loadedChat:{},$chatScroll:undefined,$Loading:{},refreshAS:undefined}},sfxAPI:{soundList:{chatNotification:{src:'/styles/default/sounds/chatNotification.wav?ver=0.2',volume:0.15}},createSound:function(){for(let key in _$.sfxAPI.soundList){$$('head').append('<audio id="'+key+'" src="'+_$.sfxAPI.soundList[key].src+'"></audio>');_$.sfxAPI.setVolume(key,_$.sfxAPI.soundList[key].volume)}},playSound:function(id){document.getElementById(id).play()},setVolume:function(id,volume){document.getElementById(id).volume=volume},getVolume:function(id){return document.getElementById(id).volume}},fn:{isDefined:function($object){return(typeof $object!=="undefined")?!0:!1},isFileUploadSupported:function(){if(window.File&&window.FileReader){return!0}
  72. _$.fn.Notification.Push('e914',"Your browser does not support file uploading. Please change your browser in order to continue!");return!1},sanitizeFile:function(fileName){return fileName.replace(/[^a-z0-9_\-. ]/gi,'_')},sanitizeCSSId:function(css){return _$.fn.sanitizeFile(css.replace(/ /g,"-"))},getDomain:function(url){var regex=/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i;url=regex.exec(url)[1];return url.split('.').reverse()[1]},Preload:function(){let $preload=$$("<preload>",{'class':'preload',html:"&#xe911; Preload"}).insertBefore('body');setTimeout($preload.remove,100);_$.sfxAPI.createSound()},ajax:function($prep){$$.ajax({url:$prep.url,type:($prep.data)?'post':'get',data:($prep.data)?$prep.data:"",dataType:'json',timeout:10000}).done(function(){if(typeof $prep.done=='function')$prep.done.apply(this,arguments)}).fail(function(jqXHR,status,error){if(jqXHR.responseText)_$.fn.Notification.Push('e911',jqXHR.responseText);if(typeof $prep.fail=='function')$prep.fail.apply(this,arguments)}).always(function(){if(typeof $prep.always=='function')$prep.always.apply(this,arguments)})},UUID:{Generate:function(){let d=Date.now();if(window.performance&&typeof window.performance.now==="function"){d+=performance.now()}
  73. let uuid='00000000-0000-4000-8000-000000000000'.replace(/[08]/g,function(c){let r=(d+Math.random()*16)%16|0;d=Math.floor(d/16);return(c=='x'?r:(r&0x3|0x8)).toString(16)})
  74. return uuid},Compare:function(uuid,uuid2){return(uuid instanceof $$)?(uuid.getUUID()==uuid2):(uuid==uuid2)}},scrollBar:{onScrollFinish:function(self){let positionPct={x:self.scrollLeft()/(self[0].scrollWidth-self.width()),y:self.scrollTop()/(self[0].scrollHeight-self.height())}
  75. if(self.data('callback')&&self.data('callback')["onScrollFinish"])self.data('callback').onScrollFinish(self,positionPct)},Update:function(self){if(!self.is(":visible"))return;if(self.hasClass('scrollbar-container')){let $scrollbarRail,$scrollbarThumb,thumbSizePct,thumbPos;if(self.data('scrollX')!==undefined){self.data('scrollX',self.width()*.8);$scrollbarRail=self.children('div.scrollbar-rail.x');if(!$scrollbarRail.isElementExistent()){$scrollbarRail=$$("<div>",{'class':"scrollbar-rail x"}).appendTo(self);$$("<div>",{'class':"scrollbar-thumb x"}).appendTo($scrollbarRail)}
  76. $scrollbarThumb=$scrollbarRail.children();thumbPos=$scrollbarThumb[0].offsetLeft;$scrollbarRail.width(0);$scrollbarThumb.css({display:"none"});$scrollbarRail.width(self[0].scrollWidth);thumbSizePct=clamp(self.width()/$scrollbarRail.width(),.1,.5);$scrollbarThumb.width(thumbSizePct*self.width());_$.fn.scrollBar.moveThumb.x(self,self.scrollLeft());$scrollbarThumb.css({display:$scrollbarRail.width()>self.width()?'block':'none'})}
  77. if(self.data('scrollY')!==undefined){self.data('scrollY',self.height()*.8);$scrollbarRail=self.children('div.scrollbar-rail.y');if(!$scrollbarRail.isElementExistent()){$scrollbarRail=$$("<div>",{class:"scrollbar-rail y"}).appendTo(self);$$("<div>",{class:"scrollbar-thumb y"}).appendTo($scrollbarRail)}
  78. $scrollbarThumb=$scrollbarRail.children();thumbPos=$scrollbarThumb[0].offsetTop;$scrollbarRail.height(0);$scrollbarThumb.css({display:"none"});$scrollbarRail.height(self[0].scrollHeight);thumbSizePct=clamp(self.height()/$scrollbarRail.height(),.1,.5);$scrollbarThumb.height(thumbSizePct*self.height());_$.fn.scrollBar.moveThumb.y(self,self.scrollTop());$scrollbarThumb.css({display:$scrollbarRail.height()>self.height()?'block':'none'})}}
  79. if(self.data('callback')&&self.data('callback')["onScrollUpdate"])self.data('callback').onScrollUpdate(self)},scrollTo:function(self,axis,position){if(!self.hasClass('scrollbar-container'))return;_$.fn.scrollBar.startScrolling(self,axis,(position-self.height())-self.scrollTop())},stopScrolling:function(self){return self.stop("scrolling").removeClass('is-scrolling')},startScrolling:function(self,axis,amount,anim){if(!self.hasClass('scrollbar-container')||!amount)return;anim=(typeof anim=='undefined')?!0:!1;axis=axis||((self.data('scrollX')!==undefined)?'right':'down');let $scrollingThumb,$scrollingRail,scrollingPos,scrollingPosPct,scrollingRailPos,scrollingThumbPos;self.addClass('is-scrolling');if(axis=='left'||axis=='right'){$scrollingRail=self.children('.scrollbar-rail.x');if((axis=='left'&&self.scrollLeft()==0)||(axis=='right'&&self.scrollLeft()+self.width()>=$scrollingRail.width())){return _$.fn.scrollBar.stopScrolling(self)}
  80. scrollingPos=(amount==='end')?$scrollingRail.width()-self.width():(amount==='start')?0:clamp(self.scrollLeft()+ +amount,0,$scrollingRail.width()-self.width());self.stop("scrolling").animate({scrollLeft:scrollingPos},{easing:"easeOutExpo",queue:"scrolling",complete:function(){_$.fn.scrollBar.stopScrolling(self)}})
  81. self.dequeue("scrolling");$scrollingThumb=$scrollingRail.children();scrollingPosPct=scrollingPos/($scrollingRail.width()-self.width());scrollingRailPos=(scrollingPosPct*self.width())-(scrollingPosPct*$scrollingThumb.width());scrollingThumbPos=clamp(scrollingPos+scrollingRailPos,0,$scrollingRail.width()-$scrollingThumb.width());if(!anim){$scrollingThumb.css({left:scrollingThumbPos});_$.fn.scrollBar.onScrollFinish(self);return}
  82. $scrollingThumb.stop().animate({left:scrollingThumbPos},{easing:"easeOutExpo",complete:function(){_$.fn.scrollBar.onScrollFinish(self)}})}
  83. if(axis=='up'||axis=='down'){$scrollingRail=self.children('.scrollbar-rail.y');if((axis=='up'&&self.scrollTop()==0)||(axis=='down'&&self.scrollTop()+self.height()>=$scrollingRail.height())){return _$.fn.scrollBar.stopScrolling(self)}
  84. scrollingPos=(amount==='end')?$scrollingRail.height()-self.height():(amount==='start')?0:clamp(self.scrollTop()+ +amount,0,$scrollingRail.height()-self.height());self.stop("scrolling").animate({scrollTop:scrollingPos},{easing:"easeOutExpo",queue:"scrolling",complete:function(){_$.fn.scrollBar.stopScrolling(self)}})
  85. self.dequeue("scrolling");$scrollingThumb=$scrollingRail.children();scrollingPosPct=scrollingPos/($scrollingRail.height()-self.height());scrollingRailPos=(scrollingPosPct*self.height())-(scrollingPosPct*$scrollingThumb.height());scrollingThumbPos=clamp(scrollingPos+scrollingRailPos,0,$scrollingRail.height()-$scrollingThumb.height());if(!anim){$scrollingThumb.css({top:scrollingThumbPos});_$.fn.scrollBar.onScrollFinish(self);return}
  86. $scrollingThumb.stop().animate({top:scrollingThumbPos},{easing:"easeOutExpo",complete:function(){_$.fn.scrollBar.onScrollFinish(self)}})}},moveThumb:{x:function(self,scrollingPos){if(!self.hasClass('scrollbar-container')){return}
  87. scrollingPos=scrollingPos||self.scrollLeft();let $scrollingRail=self.children('.scrollbar-rail.x');let $scrollingThumb=$scrollingRail.children();let scrollingPosPct=scrollingPos/($scrollingRail.width()-self.width());let scrollingRailPos=(scrollingPosPct*self.width())-(scrollingPosPct*$scrollingThumb.width());let scrollingThumbPos=clamp(scrollingPos+scrollingRailPos,0,$scrollingRail.width()-$scrollingThumb.width());$scrollingThumb.css({left:scrollingThumbPos});_$.fn.scrollBar.onScrollFinish(self)},y:function(self,scrollingPos){if(!self.hasClass('scrollbar-container')){return}
  88. scrollingPos=scrollingPos||self.scrollTop();let $scrollingRail=self.children('.scrollbar-rail.y');let $scrollingThumb=$scrollingRail.children();let scrollingPosPct=scrollingPos/($scrollingRail.height()-self.height());let scrollingRailPos=(scrollingPosPct*self.height())-(scrollingPosPct*$scrollingThumb.height());let scrollingThumbPos=clamp(scrollingPos+scrollingRailPos,0,$scrollingRail.height()-$scrollingThumb.height());$scrollingThumb.css({top:scrollingThumbPos});_$.fn.scrollBar.onScrollFinish(self)}},getPositionPct:function(self,axis){if(!self.hasClass('scrollbar-container')){return}
  89. return(axis=='y')?(self.scrollTop()/(self[0].scrollHeight-self.height())):(axis=='x')?(self.scrollLeft()/(self[0].scrollWidth-self.width())):{"x":self.scrollTop()/(self[0].scrollHeight-self.height()),"y":self.scrollLeft()/(self[0].scrollWidth-self.width())}}},Widget:{Comments:{Load:function($parent,sectionId){_$.vars.tmp.$loadedComments=[];let $commentSection=$$("<nav>",{class:"Widget isComment"}).data({Section:sectionId}).appendTo($parent);let uuid=$commentSection.setUUID(_$.fn.UUID.Generate());func.Loading.start("comments",$commentSection,{text:"Loading comments..."},function(uuid){_$.fn.ajax({url:'/comments/loadAll.jx',data:{Section:sectionId},done:function(data){if(!func.Loading.valid('comments',uuid))return;_$.vars.tmp.$loadedComments=data;$commentSection.removeUUID();func.Loading.finish('comments');_$.fn.Widget.Comments.Show()}})})},addComment:function($data,num){if($data.isDeleted==COMMENT_REMOVED_HARD)return!1;let $commentWrapper=$$("<li>",{class:'Comment',id:'c'+$data.Id}).data({Id:'c'+$data.Id});let $left=$$("<div>",{id:"Left"}).appendTo($commentWrapper);$$("<div>",{id:"userAvatar"}).appendTo($left).css({background:'url("/styles/default/images/Users/'+$data.User.Profile.Avatar+'")',backgroundSize:"cover",backgroundPosition:"center center"})
  90. let $right=$$("<div>",{id:"Right"}).appendTo($commentWrapper);let $commentInfo=$$("<div>",{class:"commentInfo"}).appendTo($right);$$("<span>",{id:"Id",text:num||" "}).appendTo($commentInfo);_$.fn.Tooltip.Client($$("<a>",{id:"User"}),$data).appendTo($commentInfo);let datePosted=new Date(+$data.dateAdded);$$("<span>",{id:"Date",text:_Date.Format(datePosted)}).appendTo($commentInfo);if($data.isApproved&&!$data.isDeleted){if($data.isReported){_$.fn.Tooltip.Add($$("<i>",{class:"Icon",id:"Reported"}),Lang.get("LANG->COMMENTS->REPORTEDTIMES",[$data.isReported])).appendTo($commentInfo)}
  91. if($data.Edited.length){let dateEdited=new Date(+$data.Edited[0]);_$.fn.Tooltip.Add($$("<i>",{class:"Icon",id:"Edited"}),Lang.get("TOOLTIP:LANG->COMMENT->EDITED",[_Date.Format(dateEdited)])).appendTo($commentInfo)}
  92. $$("<div>",{id:"Message",html:"<span>"+_String.prepare(_String.sanitizeHTML($data.Message))+"</span>"}).appendTo($right);if(isUserLogged()){$controlWrapper=$$("<div>",{class:"controlWrapper"}).appendTo($right);if(isUserIdEq($data.User.Id)||hasAccess(4)||hasAccessAt("comment")){$$("<div>",{class:"Button",id:"Delete",text:"Delete"}).data({task:OnCommentDelete}).appendTo($controlWrapper);$$("<div>",{class:"Button",id:"Edit",text:"Edit"}).data({task:OnCommentEdit}).appendTo($controlWrapper)}
  93. if(!hasAccess(4))$$("<div>",{class:"Button",id:"Report",text:"Report"}).data({task:"Report"}).appendTo($controlWrapper);$$("<div>",{class:"Button",id:"Reply",text:"Reply"}).data({task:"Reply"}).appendTo($controlWrapper)}
  94. let $replySection=$$("<nav>",{class:"isReply"}).appendTo($right);let $replyList=$$("<ul>",{class:"List",id:"Reply"}).appendTo($replySection);$replyList.scrollBar()}
  95. else{_$.fn.Widget.Comments.updateSpecial($data,$commentWrapper)}
  96. return $commentWrapper},addReply:function($data,num){if($data.isDeleted==COMMENT_REMOVED_HARD)return!1;let $replyWrapper=$$("<li>",{class:'Reply',id:'r'+$data.Id}).data({Id:'r'+$data.Id});let $left=$$("<div>",{id:"Left"}).appendTo($replyWrapper);$$("<div>",{id:"userAvatar"}).appendTo($left).css({background:'url("/styles/default/images/Users/'+$data.User.Profile.Avatar+'")',backgroundSize:"cover",backgroundPosition:"center center"});let $right=$$("<div>",{id:"Right"}).appendTo($replyWrapper);let $replyInfo=$$("<div>",{class:"replyInfo"}).appendTo($right);$$("<span>",{id:"Id",text:num||" "}).appendTo($replyInfo);_$.fn.Tooltip.Client($$("<a>",{id:"User"}),$data).appendTo($replyInfo);let datePosted=new Date(+$data.dateAdded);let formattedTime=$lang[$lang.set].LANG_DAYS[datePosted.getDay()]+", "+datePosted.getDate()+" "+$lang[$lang.set].LANG_MONTHS[datePosted.getMonth()]+" "+datePosted.getFullYear()+" at "+pad(datePosted.getHours(),2)+":"+pad(datePosted.getMinutes(),2);$$("<span>",{id:"Date",text:formattedTime}).appendTo($replyInfo);if($data.isApproved&&!$data.isDeleted){if($data.isReported){_$.fn.Tooltip.Add($$("<i>",{class:"Icon",id:"Reported"}),Lang.get("LANG->COMMENTS->REPORTEDTIMES",[$data.isReported])).appendTo($replyInfo)}
  97. if($data.Edited.length){let dateEdited=new Date(+$data.Edited[0]);_$.fn.Tooltip.Add($$("<i>",{class:"Icon",id:"Edited"}),Lang.get("TOOLTIP:LANG->COMMENT->EDITED",[_Date.Format(dateEdited)])).appendTo($replyInfo)}
  98. $$("<div>",{id:"Message",html:_String.prepare(_String.sanitizeHTML($data.Message))}).appendTo($right);if(isUserLogged()){$controlWrapper=$$("<div>",{class:"controlWrapper"}).appendTo($right);if(isUserIdEq($data.User.Id)||hasAccess(4)||hasAccessAt("comment")){$$("<div>",{class:"Button",id:"Delete",text:"Delete"}).data({task:OnCommentDelete}).appendTo($controlWrapper);$$("<div>",{class:"Button",id:"Edit",text:"Edit"}).data({task:OnCommentEdit}).appendTo($controlWrapper)}
  99. if(!hasAccess(4))$$("<div>",{class:"Button",id:"Report",text:"Report"}).data({task:"Report"}).appendTo($controlWrapper)}}
  100. else{_$.fn.Widget.Comments.updateSpecial($data,$replyWrapper)}
  101. return $replyWrapper},postComment:function($data){let $commentList=$$(".Widget.isComment .List#Comments");let $commentWrapper=_$.fn.Widget.Comments.addComment($data).prependTo($commentList).addClass('new');let $replyList=$commentWrapper.find('ul.List#Reply');let commentHeight=$commentWrapper.height();$commentWrapper.height(0);$commentWrapper.animate({height:commentHeight},{duration:400,easing:"swing",progress:function(){_Mutation.anim($$(this).parents('ul.List#Comments'))},complete:function(){$commentWrapper.css({height:"auto"})}})
  102. let fade=function(){$commentWrapper.removeClass('new')}
  103. setTimeout(fade,10000);_$.fn.Notification.Push('e0c9',"A new comment has been added by "+$data.User.Profile.Nickname);_$.fn.Widget.Comments.updateLabel()},replyComment:function($data){let $commentList=$$(".Widget.isComment .List#Comments");let $replyList=$commentList.find("li.Comment#"+$data.Section+" ul.List#Reply");let $replyWrapper=_$.fn.Widget.Comments.addReply($data).prependTo($replyList).addClass('new');let replyHeight=$replyWrapper.height();$replyWrapper.height(0);$replyWrapper.animate({height:replyHeight},{duration:400,easing:"swing",progress:function(){_Mutation.anim($$(this).parent());_Mutation.anim($$(this).parents('ul.List#Comments'))},complete:function(){$replyWrapper.css({height:"auto"})}})
  104. let fade=function(){$replyWrapper.removeClass('new')}
  105. setTimeout(fade,10000);_$.fn.Notification.Push('e0c9',"A new reply has been added by "+$data.User.Profile.Nickname)},Next:function(){let $commentList=$$('ul.List#Comments');let len=$commentList.children('li').length;let $commentWrapper,$replyList,$replyWrapper;for(let i=len;i<len+10&&i<_$.vars.tmp.$loadedComments.length;i++){$commentWrapper=_$.fn.Widget.Comments.addComment(_$.vars.tmp.$loadedComments[i],i+1);if(!$commentWrapper)continue;$commentWrapper.appendTo($commentList);$replyList=$commentWrapper.find('ul.List#Reply');$replyList.scrollBar();for(let j=0;j<_$.vars.tmp.$loadedComments[i].Replies.length;j++){$replyWrapper=_$.fn.Widget.Comments.addReply(_$.vars.tmp.$loadedComments[i].Replies[j],j+1);if(!$replyWrapper)continue;$replyWrapper.appendTo($replyList)}}
  106. _$.fn.Widget.Comments.updateLabel()},Show:function(){let $commentSection=$$(".Widget.isComment");$$("<label>",{id:"commentList",text:"No comments"}).appendTo($commentSection);$$("<label>",{id:"postComment",text:"Post a Comment"}).appendTo($commentSection);$$("<textarea>",{id:"postComment"}).data('key',"#postComment").appendTo($commentSection);$$("<div>",{class:"Button",id:"postComment",text:"Post Comment "}).appendTo($commentSection).fwClick(try_postComment);let $commentList=$$("<ul>",{'class':"List",'id':"Comments"}).appendTo($commentSection);$commentList.scrollBar();return!_$.vars.tmp.$loadedComments.length||_$.fn.Widget.Comments.Next()},updateLabel:function(){$$(".Widget.isComment label#commentList").text(_$.vars.tmp.$loadedComments.length+" comment"+((_$.vars.tmp.$loadedComments.length!=1)?"s":""))},updateSpecial:function($data,$wrapper){let $special=$$("<div>",{class:"Background",id:"Special"}).appendTo($wrapper);let $reason=$$("<span>",{id:"Special"}).appendTo($wrapper);let type=($data.Section.charAt(0)=='c')?Lang.get("G:LANG->COMMENT->REPLY"):Lang.get("G:LANG->COMMENT->COMMENT");if($data.isDeleted){$special.addClass('deleted');$reason.addClass('deleted');if($data.isDeleted==COMMENT_REMOVED_BY_TERMS){$reason.text(Lang.get("I:LANG->COMMENT->DELETED->REASON",[type,Lang.get("I:LANG->COMMENT->DELETED->REASON->TERMS")]))}
  107. else if($data.isDeleted==COMMENT_REMOVED_BY_OWNER){$reason.text(Lang.get("I:LANG->COMMENT->DELETED->REASON",[type,Lang.get("I:LANG->COMMENT->DELETED->REASON->OWNER")]))}}
  108. else if(!$data.isApproved){$special.addClass('unapproved');$reason.addClass('unapproved').text(Lang.get("I:LANG->COMMENT->UNAPPROVED->REASON",[type]))}}},Chat:{Show:function(){let $Sidebar=$$('nav.Sidebar#Right');let $Chat=$$("<nav>",{class:"Widget isChat"}).empty().appendTo($Sidebar);let $Label=$$("<label>",{class:"Title",text:"Chat"}).appendTo($Chat);let $messagesWrapper=$$("<ul>",{class:"List",id:"Messages"}).appendTo($Chat);let $Control=$$("<div>",{class:"Control"}).appendTo($Chat);for(let key in _$.vars.tmp.$loadedChat){_$.fn.Widget.Chat.printMessage(_$.vars.tmp.$loadedChat[key])}},updateAccess:function(){let $msgList=$$("nav.Widget.isChat ul.List#Messages li#messageData");if(!$msgList){return}
  109. $msgList.find("i#chatEdit").remove();if(hasAccessAt("chat")){let data;$msgList.each(function(){data=_$.vars.tmp.$loadedChat[$$(this).data('key')];if(hasAccessAgainst((data.Guest)?-1:data.User)){$$("<i>",{id:"chatEdit"}).insertAfter($$(this).find('span#Time'))}})}
  110. _$.fn.scrollBar.Update($$("nav.Widget.isChat ul.List#Messages"))},printMessage:function(data){let $messageList=$$("nav.Widget.isChat ul.List#Messages");let $message=$$("<li>",{id:"messageData"}).data({key:data.Id}).css({opacity:0});let datePosted=new Date(+data.dateAdded);$$("<div>",{id:"Avatar"}).appendTo($message).css({background:'url("/styles/default/images/Users/'+((data.Guest)?'Default/Avatar':data.User.Profile.Avatar)+'")',backgroundSize:"cover",backgroundPosition:"center center"})
  111. let Time=pad(datePosted.getHours(),2)+":"+pad(datePosted.getMinutes(),2);let $messageWrapper=$$("<div>",{id:"Message"}).appendTo($message);if(data.User){if(data.User.Access.Special.chatMod){_$.fn.Tooltip.Add($$("<i>",{id:"chatMod"}).prependTo($messageWrapper),Lang.get("LANG->TOOLTIP->CHAT->MODERATOR"))}
  112. if(data.User.Access.Level<=3){_$.fn.Tooltip.Add($$("<i>",{id:"chatAdmin"}).prependTo($messageWrapper),Lang.get("LANG->TOOLTIP->CHAT->ADMIN"))}}
  113. if(hasAccessAt("chat")){if(hasAccessAgainst((data.Guest)?-1:data.User)){$$("<i>",{id:"chatEdit"}).prependTo($messageWrapper)}}
  114. _$.fn.Tooltip.Client($$("<a>",{id:"User"}),data).appendTo($messageWrapper);_$.fn.Tooltip.Add($$("<span>",{id:"Time",text:Time+' '}),_Date.Format(datePosted)).prependTo($messageWrapper);$messageWrapper=$$("<span>",{id:"Text",text:": "}).appendTo($messageWrapper);data.Message=_String.prepare($messageWrapper.text()+_String.sanitizeHTML(data.Message));$messageWrapper.html(data.Message);$message.animate({opacity:1},400);let count=$messageList.children("li#messageData");if(count.length>200){delete _$.vars.tmp.$loadedChat[$$(count[0]).data('Id')];count[0].remove()}
  115. $message.appendTo($messageList)},hideEmoticons:function(){let $emoticonList=$$(".Widget.isChat ul.List#emoticonList");let $emoticonListButton=$$(".Widget.isChat .Button#emoticonList");if($emoticonList.data('Toggle')){$emoticonListButton.click()}}}},News:{Load:function(){arguments=Array.prototype.slice.apply(arguments);let updateHistory=(typeof arguments[arguments.length-1]=="boolean")?arguments.pop():!1;let $get={From:arguments[0]||0,Amount:arguments[1]||50,Type:arguments[2]||NEWS_TYPE_RECENT_RELEASE}
  116. if(updateHistory){window.history.pushState(history.state,"","/#!/")}
  117. func.HTML.title();func.HTML.description();$$('body').stop().animate({scrollTop:0},400,"easeOutExpo");let prevPage=(_$.vars.tmp.$loadedNews.page<0)?_$.vars.tmp.$loadedNews.page:0;let $nav=$$('nav.Middle').empty();let $section=$$("<section>",{class:"News"}).appendTo($nav);let $wrapper=$$("<div>",{class:"contentWrapper"}).appendTo($section);let OnLoadingError=function(){let $loading=$section.children('.Screen.Loading');let $error=$$("<div>",{class:"Error"}).appendTo($loading);let $reason=$$("<div>",{id:"Reason"}).appendTo($error);$$("<i>",{class:"SVGIcon"}).appendTo($reason);let text=($get.From==0)?"We don't have any news to load up":"We can't find any more news to load";$$("<span>",{text:text}).appendTo($reason);let $ctrl=$$("<ul>",{class:"controlWrapper"}).appendTo($error);let $btnRefresh=$$("<li>",{class:"Button",id:"Refresh",text:"Go back"}).appendTo($ctrl);let refresh=function(){if(_$.vars.tmp.refreshAS>Date.now())return;_$.vars.tmp.refreshAS=Date.now()+5000;_$.fn.News.Load()}
  118. $btnRefresh.fwClick(refresh)}
  119. resetLoadVars();headerDeselectMenu();headerDeselectMenuItem();func.Loading.start("news",$section,{f_onError:OnLoadingError},function(uuid){_$.fn.ajax({url:'/news/loadAll.jx',data:$get,done:function(data){if(!func.Loading.valid('news',uuid))return;if(!data){return func.Loading.state('news',_,LOADING_ERROR)}
  120. _$.vars.tmp.$loadedNews.data=data;_$.vars.tmp.$loadedNews.from=$get.From;_$.vars.tmp.$loadedNews.page=(prevPage)?$get.Amount+prevPage:0;_$.vars.tmp.$loadedNews.type=NEWS_TYPE_RECENT_RELEASE;_$.fn.News.Show()}})})},Show:function(from,next){next=(typeof next=='undefined')?5:next;let $section=$$('section.News div.contentWrapper').css({opacity:0});let $newsList=$section.find('ul.List#News');$section.empty();$newsList=$$("<ul>",{class:"List",id:"News"}).appendTo($section);let $news=_$.vars.tmp.$loadedNews.data;if(_$.vars.tmp.$loadedNews.page>=$news.length){return _$.fn.News.Load(_$.vars.tmp.$loadedNews.from+50)}
  121. if(_$.vars.tmp.$loadedNews.page<0){return _$.fn.News.Load(clampMin(_$.vars.tmp.$loadedNews.from-50,0))}
  122. let $newsItem,datePosted;for(let i=_$.vars.tmp.$loadedNews.page;i<_$.vars.tmp.$loadedNews.page+next&&i<$news.length;i++){$newsItem=$$("<li>",{class:"News"}).data({key:i}).appendTo($newsList);datePosted=new Date(+$news[i].dateAdded);$$("<span>",{class:"Line",id:"datePosted",text:_Date.Format(datePosted)}).appendTo($newsItem);$$("<span>",{class:"Line",id:"Author",text:"Posted by: "}).append(_$.fn.Tooltip.Client($$("<a>",{id:"User"}),$news[i])).appendTo($newsItem);let $href;$$("<span>",{class:"Line",id:"Title"}).append($href=$$("<a>",{text:$news[i].Title})).appendTo($newsItem);let $preview=$$("<div>",{class:"Preview"}).appendTo($newsItem);if($news[i].Type==NEWS_TYPE_RECENT_RELEASE){if($news[i].Data.anime){let $animeDetail=$$("<ul>",{class:"List",id:"animeDetail"}).appendTo($newsItem);if($news[i].Data.anime.Title.english){$$("<li>",{class:"Item",id:"englishTitle"}).append($$("<label>",{text:"English Title"})).append($$("<span>",{text:$news[i].Data.anime.Title.english})).appendTo($animeDetail)}
  123. else{$$("<li>",{class:"Item",id:"originalTitle"}).append($$("<label>",{text:"Original Title"})).append($$("<span>",{text:$news[i].Data.anime.Title.original})).appendTo($animeDetail)}
  124. let episodeStr=($news[i].Data.anime.Episodes===0)?"OVA":($news[i].Data.anime.Episodes==undefined)?($news[i].Data.anime.episodeCount+" ep. (ongoing)"):($news[i].Data.anime.Episodes+" ep.");$$("<li>",{class:"Item",id:"Episodes"}).append($$("<label>",{text:"Episodes"})).append($$("<span>",{text:episodeStr})).appendTo($animeDetail);$$("<li>",{class:"Item",id:"Genre"}).append($$("<label>",{text:"Genre"})).append($$("<span>",{text:$news[i].Data.anime.Genre})).appendTo($animeDetail);$$("<li>",{class:"Item",id:"Duration"}).append($$("<label>",{text:"Duration"})).append($$("<span>",{text:$news[i].Data.anime.Duration+" min. per ep."})).appendTo($animeDetail);let Rating="";for(let j=2;j<=$news[i].Data.anime.Rating;j+=2){Rating+="<i>&#xe90f;</i>"}
  125. if($news[i].Data.anime.Rating%2){Rating+="<i>&#xe90e;</i>"}
  126. for(let j=2;j<=10-$news[i].Data.anime.Rating;j+=2){Rating+="<i>&#xe90d;</i>"}
  127. $$("<li>",{class:"Item",id:"Rating"}).append($$("<label>",{text:"Rating"})).append($$("<span>",{html:Rating+" ("+$news[i].Data.anime.Rating.toFixed(2)+") "})).appendTo($animeDetail);if(!$news[i].Data.episode){$$("<li>",{class:"Item",id:"Coordinator"}).append($$("<label>",{text:"Coordinator"})).append($$("<span>",{text:$news[i].Data.anime.Coordinator})).appendTo($animeDetail);$href.attr('href',"http://app.yokoanime.com/anime/a"+$news[i].Data.anime.animeId);if($lang.set=="en")$$("<div>",{class:"Text",text:$news[i].Data.anime.Description.ro}).appendTo($newsItem);else $$("<div>",{class:"Text",text:$news[i].Data.anime.Description.ro}).appendTo($newsItem);if($news[i].Data.anime.Video){$$("<video>",{loop:!0,autoplay:!0}).append($$("<source>",{src:$news[i].Data.anime.Video})).appendTo($preview)}
  128. else{$$("<img>",{src:$news[i].Data.anime.Image}).appendTo($preview)}}
  129. else{let $episodeDetail=$$("<ul>",{class:"List",id:"episodeDetail"}).appendTo($newsItem);$$("<li>",{class:"Item",id:"Episode"}).append($$("<label>",{text:"Episode"})).append($$("<span>",{text:$news[i].Data.episode.Episode})).appendTo($episodeDetail);$$("<li>",{class:"Item",id:"Title"}).append($$("<label>",{text:"Title"})).append($$("<span>",{text:($lang.set=="en")?$news[i].Data.episode.Title.ro:$news[i].Data.episode.Title.ro})).appendTo($episodeDetail);if($news[i].Data.episode.Schedule<new Date().getTime()){$$("<li>",{class:"Item",id:"Schedule"}).prepend($$("<label>",{text:"Playable from"})).append($$("<span>",{text:_Date.Format(new Date(+$news[i].Data.episode.Schedule))})).appendTo($episodeDetail)}
  130. $$("<li>",{class:"Item",id:"Translators"}).append($$("<label>",{text:"Translators"})).append($$("<span>",{text:$news[i].Data.episode.Translators})).appendTo($episodeDetail);$$("<li>",{class:"Item",id:"Encoder"}).append($$("<label>",{text:"Encoder"})).append($$("<span>",{text:$news[i].Data.episode.Encoder})).appendTo($episodeDetail);$$("<li>",{class:"Item",id:"Verifiers"}).append($$("<label>",{text:"Verifiers"})).append($$("<span>",{text:$news[i].Data.episode.Verifiers})).appendTo($episodeDetail);$href.attr('href',"http://app.yokoanime.com/anime/a"+$news[i].Data.anime.animeId+"/episode/e"+$news[i].Data.episode.episodeId);if($lang.set=="en")$$("<div>",{class:"Text",text:$news[i].Data.episode.Description.ro}).appendTo($newsItem);else $$("<div>",{class:"Text",text:$news[i].Data.episode.Description.ro}).appendTo($newsItem);if($news[i].Data.episode.Video){$$("<video>",{loop:!0,autoplay:!0}).append($$("<source>",{src:$news[i].Data.episode.Video})).appendTo($preview)}
  131. else{$$("<img>",{src:$news[i].Data.episode.Image}).appendTo($preview)}}}}}
  132. $$("<div>",{class:'controlWrapper'}).appendTo($section);$$("<div>",{class:'controlWrapper'}).prependTo($section);let $ctrl=$section.find('.controlWrapper');let title=Lang.get((_$.vars.tmp.$loadedNews.type==NEWS_TYPE_RECENT_RELEASE)?"LANG->NEWS->RECENT->RELEASES":"LANG->NEWS->RECENT->ARTICLES",[(((_$.vars.tmp.$loadedNews.page+_$.vars.tmp.$loadedNews.from)/next)+(+1))]);$$("<span>",{id:"Title",text:title}).appendTo($ctrl);let nextPage=function(){$$('body').stop().animate({scrollTop:0},400,"easeOutExpo");_$.vars.tmp.$loadedNews.page+=next;_$.fn.News.Show()}
  133. let prevPage=function(){$$('body').stop().animate({scrollTop:0},400,"easeOutExpo");_$.vars.tmp.$loadedNews.page-=next;_$.fn.News.Show()}
  134. if($newsList.children().length==next)$$("<div>",{class:"Button",id:"nextPage",text:"Next"}).fwClick(nextPage).appendTo($ctrl);if(_$.vars.tmp.$loadedNews.page!=0||_$.vars.tmp.$loadedNews.from!=0)$$("<div>",{class:"Button",id:"prevPage",text:"Previous"}).fwClick(prevPage).appendTo($ctrl);func.Loading.finish('news');$section.stop().animate({opacity:1},400)}},Report:{$Data:undefined,Load:function(Page,callback){Page--;delete _$.fn.Report.$Data;var err=!1;func.Loading.start("admin",{parent:".Window#AdminCP nav.Panel"},function(){socket.emit('Report:Load',{Page:Page},function(data){delete _$.socketRequest;if(_$.fn.isDefined(data.error)){$$('.Window#Loading-admin .Icon#Loading .Status').text("No reports found").css({color:"red"});return setTimeout(func.Loading.finish,400,"admin")}
  135. else if(_$.fn.isDefined(data.success)){_$.fn.Report.$Data=data.success;var datestr,timestr;var $reportItem,$reportButton;func.Loading.finish("admin",function(){for(let i=0;i<_$.fn.Report.$Data.length;i++){$reportItem=$$("<li>",{'class':"reportItem"}).appendTo('.Window#AdminCP nav.Panel#ACP_MODERATE_REPORTS > ul').animate({opacity:1});$reportHandler=$$("<ul>",{'class':"Button "+_$.fn.Report.$Data[i].Status.replace(/ /g,"_"),'id':_$.fn.Report.$Data[i].reportId}).appendTo($reportItem).data("id",i);$$("<li>",{'id':"reportShort",text:"Report #"+_$.fn.Report.$Data[i].reportId+" - Assigned to "+_$.fn.Report.$Data[i].Name+" by "+_$.fn.Report.$Data[i].reporterName+" for reason: "+_$.fn.Report.$Data[i].Reason}).appendTo($reportHandler);$$("<li>",{'id':"reportStatus",text:_$.fn.Report.$Data[i].Status+((_$.fn.Report.$Data[i].adminId)?" by "+_$.fn.Report.$Data[i].adminName:"")}).appendTo($reportHandler);datestr=new Date(_$.fn.Report.$Data[i].dateAdded);timestr=$lang[$lang.set].LANG_DAYS[datestr.getDay()]+", "+datestr.getDate()+" "+$lang[$lang.set].LANG_MONTHS[datestr.getMonth()]+" "+datestr.getFullYear()+" at "+pad(datestr.getHours(),2)+":"+pad(datestr.getMinutes(),2);$$("<li>",{'id':"reportOpener",text:"This report has been opened by "+_$.fn.Report.$Data[i].reporterName+" on "+timestr}).appendTo($reportHandler);$$("<li>",{'id':"reportDescription",text:_$.fn.Report.$Data[i].Description}).appendTo($reportHandler);var $reportButtons=$$("<li>",{'id':"reportButtons"}).appendTo($reportHandler);if(_$.fn.Report.$Data[i].adminId){datestr=new Date(_$.fn.Report.$Data[i].dateClosed);timestr=$lang[$lang.set].LANG_DAYS[datestr.getDay()]+", "+datestr.getDate()+" "+$lang[$lang.set].LANG_MONTHS[datestr.getMonth()]+" "+datestr.getFullYear()+" at "+pad(datestr.getHours(),2)+":"+pad(datestr.getMinutes(),2);$$("<li>",{'id':"reportCloser",text:"This report has been closed by "+_$.fn.Report.$Data[i].adminName+" on "+timestr}).insertBefore($reportButtons);$$("<li>",{'id':"reportAnswer",text:_$.fn.Report.$Data[i].Answer}).insertBefore($reportButtons);$$("<div>",{'class':"Button",'id':"reportOAnswer",text:"Open report"}).appendTo($reportButtons);$$("<div>",{'class':"Button",'id':"reportRReport",text:"Delete Report"}).appendTo($reportButtons)}
  136. else{$$("<div>",{'class':"Button",'id':"reportAnswer",text:"Answer Report"}).appendTo($reportButtons)}}})}
  137. if(typeof callback=="function"){callback(err)}})})}},User:{CP:{Reload:function(){var $currentPanel=$$('.Window#UserAccountCP nav.Panel').attr('id');_$.fn.User.CP.Panel($currentPanel)},Load:function($overlayObject,callback){var $windowObject=$$("<div>",{'class':"Window",'id':"UserAccountCP"}).appendTo($overlayObject);var $sidebar=$$("<nav>",{'class':"Sidebar",'id':"Left",'data-scrollable-y':"100"}).appendTo($windowObject);$$("<label>",{'id':"UACP_Account",text:"Account"}).appendTo($sidebar);$$("<ul>",{'class':"Menu",'id':"UACP_Account"}).append($$("<li>",{'class':"Button",'id':"UACP_PROFILE_INFO",text:"Basic Information"})).append($$("<li>",{'class':"Button",'id':"UACP_CHANGE_AVATAR",text:"Change Avatar"})).append($$("<li>",{'class':"Button",'id':"UACP_CHANGE_SIGNATURE",text:"Change Signature"})).append($$("<li>",{'class':"Button",'id':"UACP_SETTINGS",text:"Settings"})).append($$("<li>",{'class':"Button",'id':"UACP_PRIVACY",text:"Privacy"})).appendTo($sidebar);$$("<label>",{'id':"UACP_Community",text:"Community"}).appendTo($sidebar);$$("<ul>",{'class':"Menu",'id':"UACP_Community"}).append($$("<li>",{'class':"Button",'id':"UACP_FRIEND_LIST",text:"Friend List"})).append($$("<li>",{'class':"Button",'id':"UACP_BLOCK_LIST",text:"Block List"})).append($$("<li>",{'class':"Button",'id':"UACP_MY_CONTENT",text:"My Content"})).appendTo($sidebar);$$("<label>",{'id':"UACP_Private_Messages",text:"Private Messages"}).appendTo($sidebar);$$("<ul>",{'class':"Menu",'id':"UACP_Private_Messages"}).append($$("<li>",{'class':"Button",'id':"UACP_MY_INBOX",text:"My Inbox"})).append($$("<li>",{'class':"Button",'id':"UACP_MY_SPAM",text:"My Spam"})).append($$("<li>",{'class':"Button",'id':"UACP_SEND_MESSAGE",text:"Send Message"})).append($$("<li>",{'class':"Button",'id':"UACP_PM_SETTINGS",text:"Settings"})).appendTo($sidebar);$$("<nav>",{'class':"Panel"}).appendTo($windowObject);$windowObject.animate({opacity:1},200,function(){$$.each($windowObject.children(),function(index,value){$$(this).animate({opacity:1},400,function(){if($$(this).hasClass('Sidebar')){$$(this).addClass('scrollable')}})});if(typeof callback=="function"){callback()}})},Panel:function(acp){acp=acp||"main";var createContent=function(){delete _$.imageUploaded;var Title=$$(".Window#UserAccountCP nav.Sidebar .Button#"+acp).text();$$('.Window#UserAccountCP nav.Panel').remove();var $userPanel=$$("<nav>",{'class':"Panel",'id':acp}).appendTo('.Window#UserAccountCP').animate({opacity:1},400);$$("<label>",{text:Title}).appendTo($userPanel);var $background=$$("<div>",{'class':"Background",'id':"UACP__Avatar"}).appendTo($userPanel);$background.css({background:'url("/styles/default/images/Users/'+_$.vars.$userLogged.Profile.Avatar+'")',backgroundSize:"cover",backgroundPosition:"center center"});var $panelContent=$$("<ul>",{'class':"scrollable",'data-scrollable-y':"100"}).appendTo($userPanel);switch(acp){case "UACP_PROFILE_INFO":$$("<li>",{'class':"Section",'id':"UACP__changeName"}).append($$("<span>",{'class':"Title",text:"Change Name"})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__Username"}).append($$("<label>",{text:"Username: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Username,'disabled':!0})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__displayName"}).append($$("<label>",{text:"Display name: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.Nickname})).append($$("<span>",{text:"This is the name that everyone will see, it is not recommended to be the same as your Username"})).appendTo($panelContent);$$("<li>",{'class':"Section",'id':"UACP__changeEMail"}).append($$("<span>",{'class':"Title",text:"Change E-Mail"})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__EMail"}).append($$("<label>",{text:"E-Mail: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.EMail,'disabled':!0})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__retypeEMail"}).append($$("<label>",{text:"Retype E-Mail: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.EMail,'disabled':!0})).appendTo($panelContent);$$("<li>",{'class':"Section",'id':"UACP__changePassword"}).append($$("<span>",{'class':"Title",text:"Change Password"})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__newPassword"}).append($$("<label>",{text:"New Password: "})).append($$("<input>",{'type':"password"})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__retypeNewPassword"}).append($$("<label>",{text:"Retype New Password: "})).append($$("<input>",{'type':"password"})).appendTo($panelContent);var $profileInfo=(_$.vars.$userLogged.profileInfo)?JSON.parse(_$.vars.$userLogged.profileInfo):{};$$("<li>",{'class':"Section",'id':"UACP__profileInfo"}).append($$("<span>",{'class':"Title",text:"Personal Information"})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__firstName"}).append($$("<label>",{text:"First Name: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.firstName||""})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__lastName"}).append($$("<label>",{text:"Last Name: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.lastName||""})).appendTo($panelContent);var $menuItem=$$("<li>",{'class':"Input",'id':"chooseGender"}).appendTo($panelContent);$$("<label>",{text:"Gender: "}).appendTo($menuItem);$$("<input>",{'type':"text",'disabled':"true",value:_$.vars.$userLogged.Profile.Gender||""}).appendTo($menuItem);$$("<div>",{'class':"Button",'id':"chooseGender"}).append($$("<span>",{text:_$.vars.$userLogged.Profile.Gender||"Not selected"})).append($$("<i>",{'class':"Icon",'id':"Arrow"})).appendTo($menuItem);var $menuHandler=$$("<li>",{'class':"hasMenu"}).appendTo($panelContent);$menuHandler=$$("<ul>",{'class':"List scrollable",'id':"chooseGender",'data-scrollable-y':"192"}).appendTo($menuHandler);$$("<li>",{'class':"Option",text:"Male"}).appendTo($menuHandler);$$("<li>",{'class':"Option",text:"Female"}).appendTo($menuHandler);$$("<li>",{'class':"Option",text:"Not selected"}).appendTo($menuHandler);$$("<li>",{'class':"Input",'id':"UACP__DateOfBirth"}).append($$("<label>",{text:"Date of Birth: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.DateOfBirth||""})).appendTo($panelContent);$$("<li>",{'class':"Section",'id':"UACP__contactInformation"}).append($$("<span>",{'class':"Title",text:"Contact Information"})).appendTo($panelContent);if(_$.vars.$userLogged.Profile.EMail&&_$.vars.$userLogged.Profile.EMail.length){for(let i=0;i<_$.vars.$userLogged.Profile.EMail.length;i++){$$("<li>",{'class':"Input",'id':"UACP__EMail-"+i}).append($$("<label>",{text:"E-Mail: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.EMail[i]})).appendTo($panelContent)}}
  138. else{$$("<li>",{'class':"Input",'id':"UACP__EMail-0"}).append($$("<label>",{text:"E-Mail: "})).append($$("<input>",{'type':"text",value:""})).appendTo($panelContent)}
  139. $$("<li>",{'class':"Button",'id':"UACP__EMailControl"}).append(_$.fn.Tooltip.Add($$("<div>",{'class':"Button",'id':"UACP__addEMail",text:"Add E-Mail"}),Lang.get("LANG->TOOLTIP->UACP->ADDEMAIL"))).append(_$.fn.Tooltip.Add($$("<div>",{'class':"Button",'id':"UACP__removeEMail",text:"Remove E-Mail"}),Lang.get("LANG->TOOLTIP->UACP->DELEMAIL"))).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__Skype"}).append($$("<label>",{text:"Skype: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.Skype||""})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__Facebook"}).append($$("<label>",{text:"Facebook: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.Facebook||""})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__Twitter"}).append($$("<label>",{text:"Twitter: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.Twitter||""})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__Instagram"}).append($$("<label>",{text:"Instagram: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.Instagram||""})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__Twitch"}).append($$("<label>",{text:"Twitch: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.Twitch||""})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__Steam"}).append($$("<label>",{text:"Steam: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.Steam||""})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__Battlenet"}).append($$("<label>",{text:"Battle.net: "})).append($$("<input>",{'type':"text",value:_$.vars.$userLogged.Profile.Battlenet||""})).appendTo($panelContent);$$("<li>",{'class':"Section",'id':"UACP__passwordConfirmation"}).append($$("<span>",{'class':"Title",text:"Confirm Password"})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__Password"}).append($$("<label>",{text:"Password: "})).append($$("<input>",{'type':"password"})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__retypePassword"}).append($$("<label>",{text:"Retype Password: "})).append($$("<input>",{'type':"password"})).appendTo($panelContent);$$("<li>",{'id':"UACP__Confirm"}).append(_$.fn.Tooltip.Add($$("<div>",{'class':"Button",'id':"UACP__Confirm",text:"Confirm"}),Lang.get("LANG->TOOLTIP->UACP->CONFIRM"))).appendTo($panelContent);break;case "UACP_CHANGE_AVATAR":$$("<li>",{'class':"Section",'id':"UACP__changeAvatar"}).append($$("<span>",{'class':"Title",text:"Change Avatar"})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"UACP__browseImage"}).append($$("<label>",{text:"Image: "})).append($$("<input>",{'type':"file",'name':"UACP__browseImage"})).append($$("<input>",{'type':"text",'disabled':"true",placeholder:"image files (maximum size 512 KiB)"})).appendTo($panelContent);$$("<li>",{'id':"UACP__imageControl"}).append($$("<div>",{'class':"Button",'id':"UACP__browseImage",text:"Browse Image"})).append($$("<div>",{'class':"Button",'id':"UACP__uploadImage",text:"Upload Image"})).appendTo($panelContent);$$("<li>",{'class':"Section",'id':"UACP__previewAvatar"}).append($$("<span>",{'class':"Title",text:"Preview Avatar:"})).appendTo($panelContent);$$("<li>",{'class':"Image"}).append($$("<div>",{'class':"Preview",id:"x16"})).appendTo($panelContent);$$("<li>",{'class':"Image"}).append($$("<div>",{'class':"Preview",id:"x32"})).appendTo($panelContent);$$("<li>",{'class':"Image"}).append($$("<div>",{'class':"Preview",id:"x64"})).appendTo($panelContent);$$("<li>",{'class':"Image"}).append($$("<div>",{'class':"Preview",id:"x128"})).appendTo($panelContent);$$.each($$('.Window#UserAccountCP nav.Panel#UACP_CHANGE_AVATAR .Image .Preview'),function(index,value){var size=$$(this).attr('id').substring(1);$$(this).css({width:size+"px",height:size+"px",background:'url("/styles/default/images/Users/'+_$.vars.$userLogged.Profile.Avatar+'")',backgroundSize:"cover",backgroundPosition:"center center"})})
  140. $$("<li>",{'id':"UACP__Confirm"}).append(_$.fn.Tooltip.Add($$("<div>",{'class':"Button",'id':"UACP__Confirm",text:"Confirm"}),Lang.get("LANG->TOOLTIP->UACP->CONFIRM"))).appendTo($panelContent);break;case "UACP_CHANGE_SIGNATURE":var textareacontrol=function($textareaObject){var $control=$$("<ul>",{'class':"CTRL",'id':"for__Textarea"}).prependTo($textareaObject);var buttons=["bold","italic","underline","strikethrough","text-color","fill-color","justify","left","center","right"]
  141. for(let i=0;i<buttons.length;i++){_$.fn.Tooltip.Add($$("<li>",{'class':"is__button",'id':buttons[i]}),Lang.get("TEXTAREA->"+buttons[i].toUpperCase())).appendTo($control)}
  142. return $textareaObject}
  143. $$("<li>",{'class':"Section",'id':"UACP__changeSignature"}).append($$("<span>",{'class':"Title",text:"Change Signature"})).appendTo($panelContent);textareacontrol($$("<li>",{'class':"Input",'id':"UACP__Signature"}).append($$("<textarea>",{'class':"scrollable",'data-scrollable-y':"100",text:_$.vars.$userLogged.Signature||""})).appendTo($panelContent));$$("<li>",{'class':"Section",'id':"UACP__signatureRules"}).append($$("<span>",{'class':"Title",text:"Content not allowed:"})).appendTo($panelContent);$$("<li>",{'id':"UACP__Confirm"}).append(_$.fn.Tooltip.Add($$("<div>",{'class':"Button",'id':"UACP__Confirm",text:"Confirm"}),Lang.get("LANG->TOOLTIP->UACP->CONFIRM"))).appendTo($panelContent);break;case "ACP_EPISODE_NEW":break;case "ACP_EPISODE_EDIT":break}}
  144. if($$('.Window#UserAccountCP').length){return createContent()}
  145. _$.fn.Window.showOverlay();_$.fn.User.CP.Load($$('.Overlay'),function(){createContent()})}},loadProfile:function(Id){arguments=Array.prototype.slice.apply(arguments);let updateHistory=(typeof arguments[arguments.length-1]=="boolean")?arguments.pop():!1;if(updateHistory){window.history.pushState(history.state,"","/#!/user/"+Id+"/")}
  146. $$('body').stop().animate({scrollTop:210},400,"easeOutExpo");let $nav=$$('nav.Middle').empty();let $section=$$("<section>",{class:"User"}).appendTo($nav);let $wrapper=$$("<div>",{class:"contentWrapper"}).appendTo($section);if(_$.vars.$userLogged&&_$.vars.$userLogged.Id==Id){_$.vars.tmp.$loadedUser=_$.vars.$userLogged;_$.vars.tmp.$loadedUser.isOnline=!0;_$.fn.User.showProfile(Id);return}
  147. let OnLoadingError=function(){let $loading=$section.children('.Screen.Loading');let $error=$$("<div>",{class:"Error"}).appendTo($loading);let $reason=$$("<div>",{id:"Reason"}).appendTo($error);$$("<i>",{class:"SVGIcon"}).appendTo($reason);$$("<span>",{text:"There is no user with that ID"}).appendTo($reason);let $ctrl=$$("<ul>",{class:"controlWrapper"}).appendTo($error);let $btnRefresh=$$("<li>",{class:"Button",id:"Refresh",text:"Refresh"}).appendTo($ctrl);delete _$.vars.tmp.$loadedUser;let refresh=function(){if(_$.vars.tmp.refreshAS>Date.now())return;_$.vars.tmp.refreshAS=Date.now()+5000;_$.fn.User.loadProfile(Id)}
  148. $btnRefresh.fwClick(refresh)}
  149. resetLoadVars();headerDeselectMenu();headerDeselectMenuItem();func.Loading.start("user",$section,{f_onError:OnLoadingError},function(uuid){_$.fn.ajax({url:'/user/loadSpecific.jx',data:{Id:Id},done:function(data){if(!func.Loading.valid('user',uuid))return;if(!data){func.HTML.title("Yoko Anime -- Invalid user specified");func.HTML.description();return func.Loading.state('user',_,LOADING_ERROR)}
  150. _$.vars.tmp.$loadedUser=data;_$.fn.User.showProfile(Id)}})})},showProfile:function(Id){func.HTML.title("Yoko Anime -- User ("+_$.vars.tmp.$loadedUser.Id+"): "+_$.vars.tmp.$loadedUser.Profile.Nickname);func.HTML.description();let $section=$$('section.User div.contentWrapper').empty().css({opacity:0});let status=_$.vars.tmp.$loadedUser.isOnline?"online":"offline";$$("<span>",{id:"Nickname",text:_$.vars.tmp.$loadedUser.Profile.Nickname+" ("+_$.vars.tmp.$loadedUser.Id+")"}).appendTo($section);$$("<div>",{id:"Status"}).append($$("<span>",{class:status,text:status})).appendTo($section);let $visitors=$$("<ul>",{class:"List",id:"Visitors"}).appendTo($section);$$("<li>",{class:"Label",text:"Recent visitors"}).appendTo($visitors);$$("<li>",{class:"Item",text:"Placeholder"}).appendTo($visitors);$$("<li>",{class:"Item",text:"Placeholder"}).appendTo($visitors);$$("<li>",{class:"Item",text:"Placeholder"}).appendTo($visitors);$$("<li>",{class:"Item",text:"Placeholder"}).appendTo($visitors);$$("<li>",{class:"Item",text:"Placeholder"}).appendTo($visitors);let $avatar=$$("<div>",{class:"Avatar",id:"Profile"}).appendTo($section);$avatar.css({backgroundImage:'url("/styles/default/images/Users/'+_$.vars.tmp.$loadedUser.Profile.Avatar+'")',backgroundSize:"cover",backgroundPosition:"center center"})
  151. let $control=$$("<ul>",{class:"List",id:"Control"}).appendTo($section);$$("<li>",{class:"Button",text:"Placeholder"}).appendTo($control);$$("<li>",{class:"Button",text:"Placeholder"}).appendTo($control);$$("<li>",{class:"Button",text:"Placeholder"}).appendTo($control);$$("<li>",{class:"Button",text:"Placeholder"}).appendTo($control);$$("<li>",{class:"Button",text:"Placeholder"}).appendTo($control);let $dataWrapper=$$("<ul>",{class:"List",id:"dataProfile"}).appendTo($section);$$("<li>",{id:"Id"}).prepend($$("<label>",{text:"Id"})).append($$("<span>",{text:_$.vars.tmp.$loadedUser.Id})).appendTo($dataWrapper);$$("<li>",{id:"Username"}).prepend($$("<label>",{text:"Username"})).append($$("<span>",{text:_$.vars.tmp.$loadedUser.Username||"(Private)"})).appendTo($dataWrapper);$$("<li>",{id:"Nickname"}).prepend($$("<label>",{text:"Nickname"})).append($$("<span>",{text:_$.vars.tmp.$loadedUser.Profile.Nickname})).appendTo($dataWrapper);$$("<li>",{id:"Access"}).prepend($$("<label>",{text:"Access"})).append($$("<span>",{text:_$.vars.tmp.$loadedUser.Access.Name}).css({color:_$.vars.tmp.$loadedUser.Access.Color})).appendTo($dataWrapper);$$("<li>",{id:"dateJoined"}).prepend($$("<label>",{text:"Date joined"})).append($$("<span>",{text:_Date.Format(new Date(+_$.vars.tmp.$loadedUser.Logs.dateJoined))})).appendTo($dataWrapper);$$("<li>",{id:"lastSeen"}).prepend($$("<label>",{text:"Last seen"})).append($$("<span>",{text:(_$.vars.tmp.$loadedUser.Logs.dateSeen)?_Date.Format(new Date(+_$.vars.tmp.$loadedUser.Logs.dateSeen)):"(Private)"})).appendTo($dataWrapper);let $profile=_$.vars.tmp.$loadedUser.Profile;$$("<li>",{class:"Section"}).prepend($$("<span>",{text:"[Profile Information]"})).appendTo($dataWrapper);$$("<li>",{id:"firstName"}).prepend($$("<label>",{text:"First name"})).append($$("<span>",{text:$profile.firstName||" - "})).appendTo($dataWrapper);$$("<li>",{id:"lastName"}).prepend($$("<label>",{text:"Last name"})).append($$("<span>",{text:$profile.lastName||" - "})).appendTo($dataWrapper);$$("<li>",{id:"Gender"}).prepend($$("<label>",{text:"Gender"})).append($$("<span>",{text:$profile.Gender||" - "})).appendTo($dataWrapper);$$("<li>",{id:"dateOfBirth"}).prepend($$("<label>",{text:"Date of Birth"})).append($$("<span>",{text:$profile.DateOfBirth||" - "})).appendTo($dataWrapper);$$("<li>",{class:"Section"}).prepend($$("<span>",{text:"[Contact Information]"})).appendTo($dataWrapper);if($profile.EMail&&$profile.EMail.length){for(let i=0;i<$profile.EMail.length;i++){$$("<li>",{id:"EMail-"+i}).prepend($$("<label>",{text:"First name"})).append($$("<span>").append($$("<a>",{href:"mailto:"+$profile.EMail[i],text:$profile.EMail[i]}))).appendTo($dataWrapper)}}
  152. else{$$("<li>",{id:"EMail-0"}).prepend($$("<label>",{text:"E-Mail"})).append($$("<span>",{text:" - "})).appendTo($dataWrapper)}
  153. if($profile.Skype){$$("<li>",{id:"Skype"}).prepend($$("<label>",{text:"Skype"})).append($$("<span>",{text:$profile.Skype||" - "})).appendTo($dataWrapper)}
  154. if($profile.Facebook){$$("<li>",{id:"Facebook"}).prepend($$("<label>",{text:"Facebook"})).append($$("<span>",{text:$profile.Facebook||" - "})).appendTo($dataWrapper)}
  155. if($profile.Twitter){$$("<li>",{id:"Twitter"}).prepend($$("<label>",{text:"Twitter"})).append($$("<span>",{text:$profile.Twitter||" - "})).appendTo($dataWrapper)}
  156. if($profile.Instagram){$$("<li>",{id:"Instagram"}).prepend($$("<label>",{text:"Instagram"})).append($$("<span>",{text:$profile.Instagram||" - "})).appendTo($dataWrapper)}
  157. if($profile.Twitch){$$("<li>",{id:"Twitch"}).prepend($$("<label>",{text:"Twitch"})).append($$("<span>",{text:$profile.Twitch||" - "})).appendTo($dataWrapper)}
  158. if($profile.Steam){$$("<li>",{id:"Steam"}).prepend($$("<label>",{text:"Steam"})).append($$("<span>",{text:$profile.Steam||" - "})).appendTo($dataWrapper)}
  159. if($profile.Battlenet){$$("<li>",{id:"battleNet"}).prepend($$("<label>",{text:"Battle.net"})).append($$("<span>",{text:$profile.Battlenet||" - "})).appendTo($dataWrapper)}
  160. if($profile.Signature){$$("<li>",{class:"Section"}).prepend($$("<span>",{text:"[Brief Description]"})).appendTo($dataWrapper);$$("<li>",{id:"Signature"}).prepend($$("<span>",{text:$profile.Signature})).appendTo($dataWrapper)}
  161. func.Loading.finish('user');$section.animate({opacity:1},400)},updateAvatar:function(){$$('.Icon#Avatar').css({background:'url("/styles/default/images/Users/'+_$.vars.$userLogged.Profile.Avatar+'")',backgroundSize:"cover",backgroundPosition:"center center"})},updateDisplayName:function(){$$('.Info#displayName').text(_$.vars.$userLogged.Profile.Nickname)}},Anime:{loadEpisodes:function($animeId,ack){socket.emit($socket.emit.loadEpisodes,{animeId:$animeId},function(data,fn){delete _$.socketRequest;if(_$.fn.isDefined(data.success)){_$.vars.tmp.$loadedAnime.episodeList=data.success}
  162. if(typeof ack=="function"){ack()}})},loadSpecific:function(Id){arguments=Array.prototype.slice.apply(arguments);let updateHistory=(typeof arguments[arguments.length-1]=="boolean")?arguments.pop():!1;let episode=arguments[1]||undefined;if(updateHistory){let href="/#!/anime/"+Id+"/";if(episode)href+="episode/"+episode+"/";window.history.pushState(history.state,"",href)}
  163. $$('body').stop().animate({scrollTop:210},400,"easeOutExpo");if(_$.vars.tmp.$loadedAnime&&"a"+_$.vars.tmp.$loadedAnime.animeId==Id){_$.fn.Anime.Show(episode);return}
  164. let $nav=$$('nav.Middle').empty();let $section=$$("<section>",{class:"Anime"}).appendTo($nav);let $wrapper=$$("<div>",{class:"contentWrapper"}).appendTo($section);let OnLoadingError=function(){let $loading=$section.children('.Screen.Loading');let $error=$$("<div>",{class:"Error"}).appendTo($loading);let $reason=$$("<div>",{id:"Reason"}).appendTo($error);$$("<i>",{class:"SVGIcon"}).appendTo($reason);$$("<span>",{text:"We could not load the anime information for you"}).appendTo($reason);let $ctrl=$$("<ul>",{class:"controlWrapper"}).appendTo($error);let $btnRefresh=$$("<li>",{class:"Button",id:"Refresh",text:"Refresh"}).appendTo($ctrl);delete _$.vars.tmp.$loadedAnime;let refresh=function(){if(_$.vars.tmp.refreshAS>Date.now())return;_$.vars.tmp.refreshAS=Date.now()+5000;_$.fn.Anime.loadSpecific(Id,episode,!1)}
  165. $btnRefresh.fwClick(refresh)}
  166. resetLoadVars();headerDeselectMenu();headerDeselectMenuItem();func.Loading.start("anime",$section,{f_onError:OnLoadingError},function(uuid){_$.fn.ajax({url:'/anime/loadSpecific.jx',data:{Id:Id.substring(1)},done:function(data){if(!func.Loading.valid('anime',uuid))return;if(!data){func.HTML.title("Yoko Anime -- Invalid anime specified");func.HTML.description();return func.Loading.state('anime',_,LOADING_ERROR)}
  167. _$.vars.tmp.$loadedAnime=data[Id];func.HTML.title("Yoko Anime -- Loading anime: "+_$.vars.tmp.$loadedAnime.Title.original);func.HTML.description();headerSelectMenuItem(Id);_$.fn.Anime.Show(episode)}})})},Show:function($episodeId){let $section=$$('section.Anime div.contentWrapper').empty().css({opacity:0});let $data={anime:_$.vars.tmp.$loadedAnime,episode:{}};if($episodeId){let findEpisodeIdByNumber=function(){for(let key in $data.anime.episodeList){if($data.anime.episodeList[key].Episode==$episodeId)return key}
  168. return $episodeId}
  169. if($episodeId.charAt(0)!="e"){$episodeId=findEpisodeIdByNumber();if(!$data.anime.episodeList[$episodeId]){func.HTML.title("Yoko Anime -- "+_$.vars.tmp.$loadedAnime.Title.original+" -- Invalid episode specified");func.HTML.description();return _$.fn.Anime.loadSpecific("a"+$data.anime.animeId,_,!0)}}}
  170. $data.episode=_$.vars.tmp.$loadedAnime.episodeList[$episodeId]||!1;let hrefEpisode=function(index,$btn){let episodeId;if(!index){for(episodeId in $data.anime.episodeList){break}}
  171. else{for(episodeId in $data.anime.episodeList){}}
  172. let activeEpisodeId="e"+$data.episode.episodeId;if(episodeId==activeEpisodeId||!episodeId){return}
  173. $btn.attr('href',"http://app.yokoanime.com/anime/a"+$data.anime.animeId+"/episode/"+episodeId)}
  174. let datePosted=(!$data.episode)?new Date(+$data.anime.dateAdded):new Date(+$data.episode.dateAdded);$$("<span>",{class:"Line",id:"datePosted",text:_Date.Format(datePosted)}).appendTo($section);$$("<span>",{class:"Line",id:"postedBy",text:"Posted by: "}).appendTo($section).append(_$.fn.Tooltip.Client($$("<a>",{id:"User"}),(!$data.episode)?$data.anime:$data.episode)).appendTo($section);$$("<span>",{class:"Line",id:"Title",text:$data.anime.Title.original+(($data.episode)?(" -- Ep. "+$data.episode.Episode):"")}).appendTo($section);let $animeControl=$$("<div>",{class:"animeControl",id:"Play"}).appendTo($section);let $hrefHome=$$("<a>",{class:"Button",id:(!$data.episode)?"Home":"Return",text:(!$data.episode)?"Home":"Return"}).appendTo($animeControl);$hrefHome.attr('href',($hrefHome.attr('id')=="Home")?"http://app.yokoanime.com/":("http://app.yokoanime.com/anime/a"+$data.anime.animeId));hrefEpisode(!0,$$("<a>",{class:"Button",id:"playFirst",text:"Play first episode"}).appendTo($animeControl));$$("<div>",{class:"Button",id:"showEpisodes",text:"Show episodes"}).fwClick(_$.fn.Anime.listEpisodes).appendTo($animeControl);hrefEpisode(!1,$$("<a>",{class:"Button",id:"playLast",text:"Play last episode"}).appendTo($animeControl));let $preview=$$("<div>",{class:"Preview",id:"Cover"}).appendTo($section);let $episodeList=$$("<ul>",{class:"List",id:"Episodes"}).appendTo($section);$episodeList.position({of:$preview,at:"center top",my:"center top"})
  175. $episodeList.scrollBar();let currentDate=new Date().getTime();let $episodeli,$href;for(let key in $data.anime.episodeList){if(+$data.anime.episodeList[key].Schedule>currentDate)continue;$episodeli=$$("<li>").appendTo($episodeList);$href=$$("<a>",{class:"Button",text:"Ep. "+pad($data.anime.episodeList[key].Episode,2)+" - "+(($lang.set=="en")?$data.anime.episodeList[key].Title.ro:$data.anime.episodeList[key].Title.ro)}).appendTo($episodeli);if(!$data.episode.episodeId||$data.episode.episodeId!=key.substring(1))$href.attr('href',"http://app.yokoanime.com/anime/a"+_$.vars.tmp.$loadedAnime.animeId+"/episode/"+key);if(+$data.anime.episodeList[key].Schedule+172800000>currentDate){$href.addClass('new')}}
  176. $episodeList.css({display:"none",opacity:0,height:0});let $dataWrapper=$$("<ul>",{class:"List",id:(!$data.episode)?"dataAnime":"dataEpisode"}).appendTo($section);if(!$data.episode){func.HTML.title("Yoko Anime -- "+$data.anime.Title.original);func.HTML.description($data.anime.Description.ro);$$("<li>",{id:"originalTitle"}).append($$("<label>",{text:"Original Title"})).append($$("<span>",{text:$data.anime.Title.original})).appendTo($dataWrapper);if($data.anime.Title.english){$$("<li>",{id:"englishTitle"}).append($$("<label>",{text:"English Title"})).append($$("<span>",{text:$data.anime.Title.english})).appendTo($dataWrapper)}
  177. let episodeStr=($data.anime.Episodes===0)?"OVA":($data.anime.Episodes==undefined)?($data.anime.episodeCount+" ep. (ongoing)"):($data.anime.Episodes+" ep.");$$("<li>",{id:"Episodes"}).prepend($$("<label>",{text:"Episodes"})).append($$("<span>",{text:episodeStr})).append($$("<div>",{class:"Button",id:"showEpisodes",text:"Show episodes"}).fwClick(_$.fn.Anime.listEpisodes)).appendTo($dataWrapper);$$("<li>",{id:"Duration"}).prepend($$("<label>",{text:"Duration"})).append($$("<span>",{text:$data.anime.Duration+" min. per ep."})).appendTo($dataWrapper);$$("<li>",{id:"Genre"}).prepend($$("<label>",{text:"Genre"})).append($$("<span>",{text:$data.anime.Genre})).appendTo($dataWrapper);let Rating="";for(let j=2;j<=$data.anime.Rating;j+=2){Rating+="<i>&#xe90f;</i>"}
  178. if($data.anime.Rating%2){Rating+="<i>&#xe90e;</i>"}
  179. for(let j=2;j<=10-$data.anime.Rating;j+=2){Rating+="<i>&#xe90d;</i>"}
  180. $$("<li>",{id:"Rating"}).prepend($$("<label>",{text:"Rating"})).append($$("<span>",{html:Rating+" ("+$data.anime.Rating.toFixed(2)+") "})).appendTo($dataWrapper);$$("<li>",{id:"releaseDate"}).prepend($$("<label>",{text:"Release Date"})).append($$("<span>",{text:$data.anime.releaseDate})).appendTo($dataWrapper);$$("<li>",{id:"Coordinator"}).prepend($$("<label>",{text:"Coordinator"})).append($$("<span>",{text:$data.anime.Coordinator})).appendTo($dataWrapper);$$("<li>",{id:"Translators"}).prepend($$("<label>",{text:"Translators"})).append($$("<span>",{text:$data.anime.Translators})).appendTo($dataWrapper);$$("<li>",{id:"Encoders"}).prepend($$("<label>",{text:"Encoders"})).append($$("<span>",{text:$data.anime.Encoders})).appendTo($dataWrapper);$$("<li>",{id:"Verifiers"}).prepend($$("<label>",{text:"Verifiers"})).append($$("<span>",{text:$data.anime.Verifiers})).appendTo($dataWrapper);$$("<li>",{id:"Description"}).prepend($$("<label>",{text:"Description"})).append($$("<span>",{text:($lang.set=="en")?$data.anime.Description.ro:$data.anime.Description.ro})).appendTo($dataWrapper);$$("<li>",{id:"myAnimeListId"}).prepend($$("<label>",{text:"myAnimeList Id"})).append($$("<span>",{html:'<a href="http://myanimelist.net/anime/'+$data.anime.myAnimeList+'" target="_blank">'+$data.anime.myAnimeList+'</a>'})).appendTo($dataWrapper);if($data.anime.Video){$$("<video>",{loop:!0,autoplay:!0}).append($$("<source>",{src:$data.anime.Video})).appendTo($preview)}
  181. else{$$("<img>",{src:$data.anime.Image}).appendTo($preview)}
  182. _$.fn.Widget.Comments.Load($section,"a"+$data.anime.animeId)}
  183. else{func.HTML.title("Yoko Anime -- "+$data.anime.Title.original+" -- Ep. "+$data.episode.Episode);func.HTML.description($data.episode.Description.ro)
  184. $$("<li>",{id:"ro_Title"}).prepend($$("<label>",{text:"Title (EN)"})).append($$("<span>",{text:$data.episode.Title.en})).appendTo($dataWrapper);$$("<li>",{id:"en_Title"}).prepend($$("<label>",{text:"Title (RO)"})).append($$("<span>",{text:$data.episode.Title.ro})).appendTo($dataWrapper);$$("<li>",{id:"Episode"}).data('key',$episodeId).prepend($$("<label>",{text:"Episode"})).append($$("<span>",{text:"#"+$data.episode.Episode})).appendTo($dataWrapper);datePosted=new Date(+$data.episode.Schedule);$$("<li>",{id:"Schedule"}).prepend($$("<label>",{text:"Playable from"})).append($$("<span>",{text:_Date.Format(datePosted)})).appendTo($dataWrapper);$$("<li>",{id:"Description"}).prepend($$("<label>",{text:"Description"})).append($$("<span>",{text:($lang.set=="en")?$data.episode.Description.ro:$data.episode.Description.ro})).appendTo($dataWrapper);let $episodeControl=$$("<li>",{class:"episodeControl"}).appendTo($dataWrapper);for(let i=0;i<$data.episode.Source.length;i++){if($data.episode.Source[i].length){$$("<div>",{class:"Button",id:"Source-"+i,text:_$.fn.getDomain($data.episode.Source[i])}).data({src:i}).appendTo($episodeControl)}}
  185. $$("<div>",{class:"Button",id:"Refresh",text:"Refresh"}).data({genuine:"Refresh"}).appendTo($episodeControl);$episodeControl.children('div:first-child').click();$$("<li>",{id:"Translators"}).prepend($$("<label>",{text:"Translators"})).append($$("<span>",{text:$data.episode.Translators})).appendTo($dataWrapper);$$("<li>",{'id':"Encoders"}).prepend($$("<label>",{text:"Encoder"})).append($$("<span>",{text:$data.episode.Encoder})).appendTo($dataWrapper);$$("<li>",{'id':"Verifiers"}).prepend($$("<label>",{text:"Verifiers"})).append($$("<span>",{text:$data.episode.Verifiers})).appendTo($dataWrapper);if($data.episode.Video){$$("<video>",{loop:!0,autoplay:!0}).append($$("<source>",{src:$data.episode.Video})).appendTo($preview)}
  186. else{$$("<img>",{src:$data.episode.Image}).appendTo($preview)}
  187. _$.fn.Widget.Comments.Load($section,"e"+$data.episode.episodeId)}
  188. func.Loading.finish('anime');$section.stop().animate({opacity:1},400)},listEpisodes:function(){let $preview=$$('nav.Middle section.Anime div.Preview :last-child');let $episodeList=$$('nav.Middle section.Anime ul.List#Episodes');if(!$episodeList.data('toggle')){$episodeList.css({display:"block"});$episodeList.stop().animate({opacity:1,height:$preview.height()},{duration:400,progress:function(){_Mutation.anim($$(this))}})
  189. $episodeList.data({toggle:!0});$$('nav.Middle section.Anime .Button#showEpisodes').text("Hide episodes")}
  190. else{$episodeList.stop().animate({opacity:0,height:0},{duration:400,progress:function(){_Mutation.anim($$(this))},complete:function(){$episodeList.css({display:"none"})}})
  191. $episodeList.data({toggle:!1});$$('nav.Middle section.Anime .Button#showEpisodes').text("Show episodes")}},loadVideo:function($episodeId,$sourceId){let $episodeControl=$$('nav.Middle section.Anime ul.List#dataEpisode li.episodeControl');$$('nav.Middle section.Anime ul.List#dataEpisode li.episodeVideo').remove();let $episodeVideo=$$("<li>",{class:"episodeVideo"}).insertAfter($episodeControl);let $iframe=$$("<iframe>",{id:"episode",src:_$.vars.tmp.$loadedAnime.episodeList[$episodeId].Source[$sourceId],allowfullscreen:"true",scrolling:"no"}).appendTo($episodeVideo)}},Menu:{Create:function($parent,id,label,items){let $menu=$$("<li>",{class:"dropdownMenu",id:id}).appendTo($parent);$$("<label>",{class:"prefix",text:label}).appendTo($menu);$$("<input>",{type:"text",disabled:"true"}).data('key',items[0]).appendTo($menu);$$("<div>",{class:"Button",'id':id}).append($$("<span>",{text:items[0]})).append($$("<i>",{class:"Icon",id:"Arrow"})).appendTo($menu);let $menuHandler=$$("<li>",{class:"isDropdownMenu"}).appendTo($parent);let $menuItems=$$("<ul>",{class:"List",id:id}).appendTo($menuHandler);for(let i=0;i<items.length;i++){$$("<li>",{class:"Option",text:items[i]}).data('key',items[i]).appendTo($menuItems)}}},Overlay:{Append:function(ack,Id){let $Overlay=$$(".Overlay");if($Overlay.isElementExistent()){$Overlay.remove()}
  192. $Overlay=$$("<section>",{class:"Overlay",id:Id}).appendTo('body');return ack($Overlay)},Remove:function(Id){let $Overlay=$$(".Overlay#"+Id);$Overlay.stop().animate({opacity:0},200,function(){$Overlay.remove()})}},Window:{createHeader:function(){$$("<nav>",{class:"Header"}).appendTo($navBody);let $navObject=$$("<ul>",{class:"List",id:"Header"}).appendTo('nav.Header').animate({opacity:1},400);$$("<li>",{class:"Button",id:"Change",text:"What is new?"}).appendTo($navObject);$$("<li>",{class:"Button",id:"F_A_Q_",text:"F A Q"}).appendTo($navObject);let $issues=$$("<li>",{class:"Status",id:"Issues"});_$.fn.Tooltip.Add($$("<i>",{class:"Icon",id:"issuesStatus"}).appendTo($issues).fwClick(resultTest),{pos:'bottom'},Lang.get('LANG->SERVER->HEALTHY'));$issues.appendTo($navObject);function resultTest($btn){func.Menu.Result.toggleMenu($issues,($menu)=>{$menu=func.Menu.Result.prepareMenu($issues,{offsetY:42,width:300});func.Menu.Result.showMenu($menu,()=>{func.Loading.start('issuesMenu',$menu,{pos:"center"},()=>{func.Loading.finish('issuesMenu',()=>{$menu.animate({height:150,width:450,left:$menu.position().left-75},()=>{let content=$$("<div>",{class:"Result",id:"unavailable"});$$("<span>",{class:"unavailable",text:"indisponibil"}).appendTo(content);content.appendTo($menu).animate({opacity:1})})})})})})}
  193. $$("<li>",{class:"Button",id:"Anime",text:"Anime"}).data({genuine:"Anime"}).append($$("<i>",{class:"Icon",id:"Arrow"})).appendTo($navObject);$$("<li>").append($$("<ul>",{class:"List",id:"animeDropdown"})).appendTo($navObject);$$("<li>",{class:"Button",id:"Manga",text:"Manga"}).data({genuine:"Manga"}).append($$("<i>",{class:"Icon",id:"Arrow"})).appendTo($navObject);$$("<li>").append($$("<ul>",{class:"List",id:"mangaDropdown"})).appendTo($navObject);let $search=$$("<li>",{class:"Input",id:"Search"}).append($$("<div>",{class:"Icon",id:"Search"})).append($$("<input>",{type:"text"})).prependTo($navObject);$$("<li>").append($$("<ul>",{class:"List scrollable",id:"searchDropdown"})).insertAfter($search)},updateHeader:function(){let $Header=$$('ul.List#Header');$Header.children('.Input#Search').prevAll().remove();if(!_$.vars.$userLogged){$$("<li>",{class:"Button",id:"Login",text:"Log In"}).fwClick(_$.fn.Window.openLogin).prependTo($Header).animate({opacity:1},400);return}
  194. let $notification=$$("<li>",{class:"Status",id:"Notification"});_$.fn.Tooltip.Add($$("<i>",{class:"Icon fwclick",id:"notificationStatus"}).fwClick(resultTest).appendTo($notification),{pos:'bottom'},Lang.get("LANG->USER->NOTIFICATION",[_$.vars.$userLogged.Notifications||0]));$notification.prependTo($Header);function resultTest($btn){func.Menu.Result.toggleMenu($notification,($menu)=>{$menu=func.Menu.Result.prepareMenu($notification,{offsetX:12,offsetY:42,width:300});func.Menu.Result.showMenu($menu,()=>{func.Loading.start('notificationMenu',$menu,{pos:"center"},()=>{func.Loading.finish('notificationMenu',()=>{$menu.animate({height:150,width:450,left:$menu.position().left-75},()=>{let content=$$("<div>",{class:"Result",id:"unavailable"});$$("<span>",{class:"unavailable",text:"indisponibil"}).appendTo(content);content.appendTo($menu).animate({opacity:1})})})})})})}
  195. let $user=$$("<li>",{class:"Button",id:"User"}).data({genuine:"User"}).append($$("<i>",{class:"Icon",id:"Avatar"})).append($$("<span>",{class:"Info",id:"displayName"})).append($$("<i>",{class:"Icon",id:"Arrow"})).prependTo($Header).css({opacity:1});let $dropdownMenu;$$("<li>").append($dropdownMenu=$$("<ul>",{class:"List",id:"userDropdown"})).insertAfter($user);let $user_stats=$$("<li>",{class:'flex-split',id:'user-stats'}).appendTo($dropdownMenu);let $user_stats_ul=$$("<ul>").appendTo($user_stats);$$("<li>",{class:'user-stats',id:'reputation',text:"Reputation"}).append($$("<span>",{id:'value',text:"1337"})).appendTo($user_stats_ul);$$("<li>",{class:'user-stats',id:'placeholder'}).append($$("<span>",{id:'value',text:"TBA"})).appendTo($user_stats_ul);$$("<li>",{class:'user-stats',id:'placeholder'}).append($$("<span>",{id:'value',text:"TBA"})).appendTo($user_stats_ul);$$("<li>",{class:'user-stats',id:'placeholder'}).append($$("<span>",{id:'value',text:"TBA"})).appendTo($user_stats_ul);$$("<li>",{class:'user-stats',id:'placeholder'}).append($$("<span>",{id:'value',text:"TBA"})).appendTo($user_stats_ul);$$("<li>",{class:'user-stats',id:'ip-address',text:"IP Address"}).append($$("<span>",{id:'value',text:_$.vars.$userLogged.ipAddress[_$.vars.$userLogged.ipAddress.length-1]})).appendTo($user_stats_ul);let $user_info=$$("<li>",{class:'flex-split',id:'user-info'}).appendTo($dropdownMenu);$$("<div>",{class:'user-info',id:"Username"}).append($$("<span>",{text:_$.vars.$userLogged.Username})).appendTo($user_info);$$("<div>",{class:'user-info',id:'Avatar'}).appendTo($user_info).css({background:'url("/styles/default/images/Users/'+_$.vars.$userLogged.Profile.Avatar+'")',backgroundSize:"cover",backgroundPosition:"center center"})
  196. $$("<div>",{class:'user-info',id:'Access'}).append($$("<span>",{text:_$.vars.$userLogged.Access.Name}).css({color:_$.vars.$userLogged.Access.Color})).appendTo($user_info);let $user_nav=$$("<li>",{class:'flex-split',id:'user-nav'}).appendTo($dropdownMenu);let $user_nav_ul=$$("<ul>").appendTo($user_nav);function loadProfile(){_$.fn.User.loadProfile(_$.vars.$userLogged.Id,!0)}
  197. if(_$.vars.$userLogged.Access.Level<6)$$("<li>",{class:"Button",id:"user-nav-acp",text:"Administration"}).fwClick(_$.fn.Admin.CP.Load,$user).appendTo($user_nav_ul);$$("<li>",{class:"Button",id:"user-nav-uacp",text:"Account Settings"}).appendTo($user_nav_ul);$$("<li>",{class:"Button",id:"user-nav-inbox",text:"My Inbox"}).appendTo($user_nav_ul);$$("<li>",{class:"Button",id:"user-nav-profile",text:"My Profile"}).fwClick(loadProfile,$user).appendTo($user_nav_ul);$$("<li>",{class:"Button",id:"user-nav-logout",text:"Logout"}).fwClick(tryLogout,$user).appendTo($user_nav_ul);_$.fn.User.updateAvatar();_$.fn.User.updateDisplayName()},showOverlay:function(callback){callback=callback||null;let $overlayObject=$$(".Overlay");if($overlayObject.isElementAnimated()){return}
  198. if($overlayObject.isElementExistent()){$overlayObject.empty()}
  199. else{$overlayObject=$$("<div>",{'class':"Overlay"}).appendTo('body');$overlayObject.css({display:'block'}).animate({opacity:1},200)}
  200. if(typeof callback=="function"){callback($overlayObject)}},removeOverlay:function(){var $overlayObject=$$(".Overlay");if($overlayObject.isElementAnimated()){return}
  201. $overlayObject.stop().animate({opacity:0},200,function(){$$('.Overlay').remove()})},openLogin:function(){$$('div[id^="__lpform"]').remove();wndModalSwitch=$$('nav.Body');$$(".Modal").remove();let $wndLogin=$$("<div>",{class:"Modal Login"}).insertAfter(wndModalSwitch);wndModalSwitch.hide().css({opacity:0});let $panel=$$("<nav>",{class:"Panel",id:"Login"}).appendTo($wndLogin);let $bg=$$("<div>",{class:"Background",id:"Cover"}).appendTo($panel);let $btnClose=$$("<i>",{class:"Button",id:"Close"}).appendTo($panel).fwClick(func.Modal.unload);_$.fn.Tooltip.Add($btnClose,Lang.get("LANG->ESCAPE"));let $wrapper=$$("<section>",{class:"Wrapper"}).appendTo($panel);$$("<label>",{id:"Title",text:"Log In"}).appendTo($wrapper);let $alternative=$$("<ul>",{class:"List",id:"alternative"}).appendTo($wrapper);$$("<li>",{class:"Button",id:"Facebook",text:"Facebook"}).appendTo($alternative);$$("<li>",{class:"Button",id:"GooglePlus",text:"Google+"}).appendTo($alternative);$$("<hr>",{id:"or",text:"or"}).appendTo($wrapper);let $form=$$("<ul>",{class:"List",id:"Form"}).appendTo($wrapper);$$("<li>",{class:"Input",id:"Username"}).append($$("<i>",{class:"Icon",id:"Username"})).append($$("<input>",{type:"text",placeholder:"username"})).appendTo($form);$$("<li>",{class:"Input",id:"Password"}).append($$("<i>",{class:"Icon",id:"Password"})).append($$("<input>",{type:"password",placeholder:"password"})).appendTo($form);$$("<li>",{class:"Button",id:"Submit",text:"Log In"}).appendTo($form).fwClick(tryLogin);let $remember=$$("<li>",{class:"rememberMe"}).appendTo($form);$$("<input>",{class:"CheckBox",id:"loginRemember",name:"loginRemember",type:"checkbox",checked:"true"}).appendTo($remember);$$("<label>",{class:"CheckBox_Label",id:"loginRemember",for:"loginRemember",text:"Keep me signed in!"}).appendTo($remember);$$("<hr>",{id:"line"}).appendTo($wrapper);let $accounthelp=$$("<ul>",{class:"List",id:"accountHelp"}).appendTo($wrapper);$$("<li>",{id:"createAccount",html:"Don't have an account? "}).append($$("<a>",{text:"Create a new account!"}).fwClick(_$.fn.Window.openRegister)).appendTo($accounthelp);let $btnRecover=$$("<li>",{id:"recoverAccount",html:"<a>Recover your account</a>"}).appendTo($accounthelp);$panel.animate({opacity:1},400,function(){$panel.animate({height:'500px'},200,function(){$bg.animate({opacity:.2},400);$wrapper.animate({opacity:1},400)})})},openRegister:function(){$$('div[id^="__lpform"]').remove();wndModalSwitch=$$('nav.Body');$$(".Modal").remove();let $wndLogin=$$("<div>",{class:"Modal Register"}).insertAfter(wndModalSwitch);wndModalSwitch.hide().css({opacity:0});let $panel=$$("<nav>",{class:"Panel",id:"Register"}).appendTo($wndLogin);let $bg=$$("<div>",{class:"Background",id:"Cover"}).appendTo($panel);let $btnClose=$$("<i>",{class:"Button",id:"Close"}).appendTo($panel).fwClick(func.Modal.unload);let $btnBack=$$("<i>",{class:"Button",id:"Back"}).appendTo($panel).fwClick(_$.fn.Window.openLogin);_$.fn.Tooltip.Add($btnClose,Lang.get("LANG->ESCAPE"));_$.fn.Tooltip.Add($btnBack,Lang.get("LANG->RETURN"));let $wrapper=$$("<section>",{class:"Wrapper"}).appendTo($panel);$$("<label>",{id:"Title",text:"Register"}).appendTo($wrapper);let $alternative=$$("<ul>",{class:"List",id:"alternative"}).appendTo($wrapper);$$("<li>",{class:"Button",id:"Facebook",text:"Facebook"}).appendTo($alternative);$$("<li>",{class:"Button",id:"GooglePlus",text:"Google+"}).appendTo($alternative);$$("<hr>",{id:"or",text:"or"}).appendTo($wrapper);let $form=$$("<ul>",{class:"List",id:"Form"}).appendTo($wrapper);$$("<li>",{class:"Input",id:"Username"}).append($$("<i>",{class:"Icon",id:"Username"})).append($$("<input>",{type:"text",placeholder:"username"})).appendTo($form);$$("<li>",{class:"Input",id:"Password"}).append($$("<i>",{class:"Icon",id:"Password"})).append($$("<input>",{type:"password",placeholder:"password"})).appendTo($form);$$("<li>",{class:"Input",id:"confirmPassword"}).append($$("<i>",{class:"Icon",id:"confirmPassword"})).append($$("<input>",{type:"password",placeholder:"confirm password"})).appendTo($form);$$("<li>",{class:"Input",id:"EMail"}).append($$("<i>",{class:"Icon",id:"EMail"})).append($$("<input>",{type:"text",placeholder:"e-mail"})).appendTo($form);$$("<li>",{class:"Button",id:"Submit",text:"Register"}).appendTo($form).fwClick(tryRegister);$$("<hr>",{id:"line"}).appendTo($wrapper);let $accounthelp=$$("<ul>",{class:"List",id:"accountHelp"}).appendTo($wrapper);let $btnTerms=$$("<li>",{id:"ToS",html:"By clicking on Register, Facebook or Google+ you agree to our <a href=\"#\">Terms of Service</a>!"}).appendTo($accounthelp);$panel.animate({opacity:1},400,function(){$panel.animate({height:'555px'},200,function(){$bg.animate({opacity:.2},400);$wrapper.animate({opacity:1},400)})})},Spinner:{Create:function($Target,Text){let $loadingWrapper=$$("<ul>",{class:"Icon",id:"Loading"}).append($$("<li>")).append($$("<li>")).append($$("<li>")).insertAfter($Target);$loadingWrapper.position({of:$Target,at:"center center",my:"center center"})
  202. if(Text){$$("<li>",{'class':"Status",text:(typeof Text==='string')?Text:"Loading"}).appendTo($loadingWrapper)}},Destroy:function($Target){$Target=$$($Target);let $Loading=$Target.nextAll('.Icon#Loading');if($Loading)$Loading.remove()}},showLoader:function($objectTarget,$append,$text){var $loadingObject=$$("<ul>",{'class':"Icon",'id':"Loading"}).append($$("<li>")).append($$("<li>")).append($$("<li>")).insertAfter($objectTarget);if($append){$loadingObject.appendTo($objectTarget)}
  203. if($text){$$("<li>",{'class':"Status",text:"Loading"}).appendTo($loadingObject)}},removeLoader:function($objectTarget,$append){$objectTarget=$$($objectTarget);var $loadingObject=$objectTarget.next('.Icon#Loading');if($append){$loadingObject=$objectTarget.find('.Icon#Loading')}
  204. $loadingObject.remove()}},Admin:{$Episodes:undefined,CP:{Reload:function(){let $currentPanel=$$('.Modal.AdminCP nav.Panel').data('Id');_$.fn.Admin.CP.Panel($currentPanel)},Load:function(ack){let $ACP=$$('.Modal.AdminCP');if($ACP.isElementExistent()){if(typeof ack=='function')ack();return}
  205. wndModalSwitch=$$('nav.Body');$$('.Modal').remove();$ACP=$$("<div>",{class:"Modal AdminCP"}).insertAfter(wndModalSwitch);wndModalSwitch.hide().css({opacity:0});let $banner=$$("<div>",{class:"Banner"}).appendTo($ACP);let $bannertxt=$$("<span>").appendTo($banner);$bannertxt.append("Admin");$$("<span>",{text:"CPanel"}).appendTo($bannertxt);$$("<span>",{id:"Version",text:"v1.0a"}).appendTo($bannertxt);let $userstatus=$$("<ul>",{class:"List",id:"User"}).appendTo($banner);if(_$.vars.$userLogged){$$("<li>",{class:"Item",text:"Name: "}).append($$("<span>",{text:_$.vars.$userLogged.Profile.Nickname+" ("+_$.vars.$userLogged.Username+") "})).appendTo($userstatus);$$("<li>",{class:"Item",text:"IP: "}).append($$("<span>",{text:_$.vars.$userLogged.ipAddress[_$.vars.$userLogged.ipAddress.length-1]})).appendTo($userstatus);$$("<li>",{class:"Item",text:"Access: "}).append($$("<span>",{text:_$.vars.$userLogged.Access.Name}).css({color:_$.vars.$userLogged.Access.Color})).appendTo($userstatus);$$("<li>",{class:"Item",text:"E-Mail: "}).append($$("<span>",{text:_$.vars.$userLogged.EMail})).appendTo($userstatus)}
  206. let $panel=$$("<nav>",{class:"Panel"}).appendTo($ACP);if(_$.vars.$userLogged.Access.Level<=6){let $menu=$$("<nav>",{class:"Menu"}).appendTo($ACP);$$("<ul>",{class:"Menu",id:"User"}).append($$("<li>",{class:"Label",id:"User",text:"User"})).append($$("<li>",{class:"Button",id:"Placeholder-1",text:"Placeholder"})).append($$("<li>",{class:"Button",id:"Placeholder-2",text:"Placeholder"})).append($$("<li>",{class:"Button",id:"Placeholder-3",text:"Placeholder"})).append($$("<li>",{class:"Button",id:"Placeholder-4",text:"Placeholder"})).appendTo($menu);$$("<ul>",{class:"Menu",id:"Moderation"}).append($$("<li>",{class:"Label",id:"Moderation",text:"Moderation"})).append($$("<li>",{class:"Button",id:"moderateUsers",text:"Users"})).append($$("<li>",{class:"Button",id:"moderatePosts",text:"Posts"})).append($$("<li>",{class:"Button",id:"moderateComments",text:"Comments"})).append($$("<li>",{class:"Button",id:"moderateNews",text:"News"})).append($$("<li>",{class:"Button",id:"moderateReports",text:"Reports"})).appendTo($menu);$$("<ul>",{class:"Menu",id:"Anime"}).append($$("<li>",{class:"Label",id:"Anime",text:"Anime"})).append($$("<li>",{class:"Button",id:"insertAnime",text:"Post a new Anime"})).append($$("<li>",{class:"Button",id:"editAnime",text:"Edit an Anime"})).append($$("<li>",{class:"Button",id:"insertEpisode",text:"Post a new episode"})).append($$("<li>",{class:"Button",id:"editEpisode",text:"Edit an episode"})).appendTo($menu);$$("<ul>",{class:"Menu",id:"Manga"}).append($$("<li>",{class:"Label",id:"Manga",text:"Manga"})).append($$("<li>",{class:"Button",id:"insertManga",text:"Post a new Manga"})).append($$("<li>",{class:"Button",id:"editManga",text:"Edit a Manga"})).append($$("<li>",{class:"Button",id:"insertChapter",text:"Post a new chapter"})).append($$("<li>",{class:"Button",id:"editChapter",text:"Edit a chapter"})).appendTo($menu);$$("<ul>",{class:"Menu",id:"News"}).append($$("<li>",{class:"Label",id:"News",text:"News"})).append($$("<li>",{class:"Button",id:"Placeholder-5",text:"Placeholder"})).append($$("<li>",{class:"Button",id:"Placeholder-6",text:"Placeholder"})).append($$("<li>",{class:"Button",id:"Placeholder-7",text:"Placeholder"})).append($$("<li>",{class:"Button",id:"Placeholder-8",text:"Placeholder"})).appendTo($menu)}
  207. else{let $noAccess=$$("<div>",{class:"noAccess"}).appendTo($panel);$$("<i>",{class:"SVGIcon",id:"accessDenied"}).appendTo($noAccess);$$("<span>",{id:"Message",text:Lang.get("LANG->ACP->DENIED")}).appendTo($noAccess)}
  208. $$("<div>",{class:"Button",id:"closeTip",text:Lang.get("LANG->ESCAPE")}).fwClick(func.Modal.unload).appendTo($ACP);if(typeof ack=='function')return ack()},Panel:function(acp){let createContent=function(){let $ACP=$$('.Modal.AdminCP');let Title=$$(".Modal.AdminCP nav.Menu .Button#"+acp).text();$ACP.children('nav.Panel').remove();$adminPanel=$$("<nav>",{class:"Panel",id:acp}).data({Id:acp}).appendTo($ACP);$$("<label>",{text:Title}).appendTo($adminPanel);if(acp=="insertAnime"){let $Form=$$("<ul>",{class:"List",id:"Form"}).appendTo($adminPanel);$$("<li>",{class:"Input",id:"originalTitle"}).append($$("<label>",{text:"Title (Original)"})).append($$("<input>",{type:"text",placeholder:"e.g. Shingeki no Kyojin (Not sure? Leave it empty)"})).appendTo($Form);$$("<li>",{class:"Input",id:"englishTitle"}).append($$("<label>",{text:"Title (English)"})).append($$("<input>",{type:"text",placeholder:"e.g. Attack on Titan"})).appendTo($Form);$$("<li>",{class:"Input",id:"Episodes"}).append($$("<label>",{text:"# of episodes"})).append($$("<input>",{type:"text",placeholder:"e.g. 124"})).appendTo($Form);$$("<li>",{class:"Input",id:"Duration"}).append($$("<label>",{text:"Duration"})).append($$("<input>",{type:"text",placeholder:"e.g. 24"})).appendTo($Form);$$("<li>",{class:"Input",id:"Genre"}).append($$("<label>",{text:"Genre"})).append($$("<input>",{type:"text",placeholder:"e.g. Horror"})).appendTo($Form);$$("<li>",{class:"Input",id:"Rating"}).append($$("<label>",{text:"Rating"})).append($$("<input>",{type:"text",placeholder:"(taken from myAnimeList) e.g. 7.20"})).appendTo($Form);$$("<li>",{class:"Input",id:"Date"}).append($$("<label>",{text:"Release date"})).append($$("<input>",{type:"text",placeholder:"e.g. 20/01/2016"})).appendTo($Form);$$("<li>",{class:"Input",id:"Coordinator"}).append($$("<label>",{text:"Coordinator"})).append($$("<input>",{type:"text",placeholder:"e.g. chosen"})).appendTo($Form);$$("<li>",{class:"Input",id:"Translators"}).append($$("<label>",{text:"Translators"})).append($$("<input>",{type:"text",placeholder:"e.g. Demo, Necrolisia, Coraaa"})).appendTo($Form);$$("<li>",{class:"Input",id:"Encoders"}).append($$("<label>",{text:"Encoders"})).append($$("<input>",{type:"text",placeholder:"e.g. Coraaa, NeftyChan12, Necrolisia"})).appendTo($Form);$$("<li>",{class:"Input",id:"Verifiers"}).append($$("<label>",{text:"Verifiers"})).append($$("<input>",{type:"text",placeholder:"e.g. chosen, Coraaa, NeftyChan12"})).appendTo($Form);$$("<li>",{class:"Input",id:"Image"}).append($$("<label>",{text:"Image"})).append($$("<input>",{type:"text",placeholder:"e.g. (any direct image source)"})).appendTo($Form);$$("<li>",{class:"Input",id:"Video"}).append($$("<label>",{text:"Video"})).append($$("<input>",{type:"text",placeholder:"e.g. (any direct video source)"})).appendTo($Form);$$("<li>",{class:"Input",id:"Tags"}).append($$("<label>",{text:"Tags"})).append($$("<input>",{type:"text",placeholder:"e.g. horror, group, gore, 18+"})).appendTo($Form);$$("<li>",{class:"Input",id:"ro_Description"}).append($$("<label>",{html:"Description (Romanian)"})).append($$("<textarea>")).appendTo($Form);$$("<li>",{class:"Input",id:"en_Description"}).append($$("<label>",{text:"Description (English)"})).append($$("<textarea>")).appendTo($Form);$$("<li>",{class:"Input",id:"myAnimeList"}).append($$("<label>",{text:"myAnimeList Id"})).append($$("<input>",{type:"text",placeholder:"e.g. 392"})).appendTo($Form);let $btnConfirm;$$("<li>",{class:"ItemCtrl",id:"Submit"}).append($btnConfirm=$$("<div>",{class:"Button",id:"submitData",text:"Confirm"})).appendTo($Form);$btnConfirm.fwClick(insertAnime);let $preview=$$("<ul>",{class:"List",id:"Preview"}).appendTo($adminPanel);$$("<li>",{id:"imagePreview"}).appendTo($preview);$$("<li>",{id:"videoPreview"}).appendTo($preview)}
  209. else if(acp=="insertEpisode"){let $Form=$$("<ul>",{class:"List",id:"Form"}).appendTo($adminPanel);let $menuItem=$$("<li>",{class:"dropdownMenu",id:"chooseAnime"}).appendTo($Form);$$("<label>").appendTo($menuItem);$$("<input>",{type:"text",disabled:"true"}).appendTo($menuItem);$$("<div>",{class:"Button",id:"chooseAnime"}).append($$("<span>",{text:'Anime, I choose you!'})).append($$("<i>",{class:"Icon",id:"Arrow"})).appendTo($menuItem);var $menuHandler=$$("<li>",{class:"isDropdownMenu"}).appendTo($Form);$menuHandler=$$("<ul>",{class:"List",id:"chooseAnime"}).appendTo($menuHandler);for(let key in _$.vars.Data.$Anime){$$("<li>",{class:"Option",text:_$.vars.Data.$Anime[key].Title.original}).data({key:key}).appendTo($menuHandler)}
  210. $$("<li>",{class:"Input",id:"ro_Title"}).append($$("<label>",{text:"Title (Romanian)"})).append($$("<input>",{type:"text",placeholder:"e.g. O Lumină în Întunericul Disperării"})).appendTo($Form);$$("<li>",{class:"Input",id:"en_Title"}).append($$("<label>",{text:"Title (English)"})).append($$("<input>",{type:"text",placeholder:"e.g. A Light in the Darkness of Despair"})).appendTo($Form);$$("<li>",{class:"Input",id:"Episode"}).append($$("<label>",{text:"Episode #no"})).append($$("<input>",{type:"text",placeholder:"e.g. 20"})).appendTo($Form);$$("<li>",{class:"Input",id:"Date"}).append($$("<label>",{text:"Scheduled Date"})).append($$("<input>",{type:"text",placeholder:"e.g. 20/01/2018 00:00 (leave it empty if you want to post it now)"})).appendTo($Form);$$("<li>",{class:"Input",id:"Translators"}).append($$("<label>",{text:"Translators"})).append($$("<input>",{type:"text",placeholder:"e.g. Demo"})).appendTo($Form);$$("<li>",{class:"Input",id:"Encoder"}).append($$("<label>",{text:"Encoder"})).append($$("<input>",{'type':"text",placeholder:"e.g. Coraaa"})).appendTo($Form);$$("<li>",{class:"Input",id:"Verifiers"}).append($$("<label>",{text:"Verifiers"})).append($$("<input>",{'type':"text",placeholder:"e.g. NeftyChan12"})).appendTo($Form);$$("<li>",{class:"Input",id:"Image"}).append($$("<label>",{text:"Image"})).append($$("<input>",{type:"text",placeholder:"e.g. (any direct image source)"})).appendTo($Form);$$("<li>",{class:"Input",id:"Video"}).append($$("<label>",{text:"Video"})).append($$("<input>",{type:"text",placeholder:"e.g. (any direct video source)"})).appendTo($Form);$$("<li>",{class:"Input",id:"Source-1"}).append($$("<label>",{text:"Source #1"})).append($$("<input>",{type:"text",placeholder:'e.g. https://openload.co/embed/1YhZ8dkTLG8/'})).appendTo($Form);$$("<li>",{class:"Input",id:"Source-2"}).append($$("<label>",{text:"Source #2"})).append($$("<input>",{type:"text",placeholder:'(optional) e.g. https://www.solidfiles.com/e/62BDqqwW5pz3D'})).appendTo($Form);$$("<li>",{class:"Input",id:"Source-3"}).append($$("<label>",{text:"Source #3"})).append($$("<input>",{type:"text",placeholder:'(optional) e.g. https://www.mp4upload.com/embed-dphej6f73r47.html'})).appendTo($Form);$$("<li>",{class:"Input",id:"ro_Description"}).append($$("<label>",{html:"Description (Romanian)"})).append($$("<textarea>")).appendTo($Form);$$("<li>",{class:"Input",id:"en_Description"}).append($$("<label>",{text:"Description (English)"})).append($$("<textarea>")).appendTo($Form);let $btnConfirm;$$("<li>",{class:"ItemCtrl",id:"Submit"}).append($btnConfirm=$$("<div>",{class:"Button",id:"submitData",text:"Confirm"})).appendTo($Form);$btnConfirm.fwClick(insertEpisode);let $preview=$$("<ul>",{class:"List",id:"Preview"}).appendTo($adminPanel);$$("<li>",{id:"imagePreview"}).appendTo($preview);$$("<li>",{id:"videoPreview"}).appendTo($preview)}
  211. switch(acp){case "ACP_MODERATE_REPORTS":_$.fn.Report.Load(1);break;case "ACP_ANIME_EDIT":if(introScr){}
  212. var $menuItem=$$("<li>",{'class':"Input",'id':"chooseAnime"}).appendTo($panelContent);$$("<label>",{text:"Anime: "}).appendTo($menuItem);$$("<input>",{'type':"text",'disabled':"true"}).appendTo($menuItem);$$("<div>",{'class':"Button",'id':"chooseAnime"}).append($$("<span>",{text:'Anime, I choose you!'})).append($$("<i>",{'class':"Icon",'id':"Arrow"})).appendTo($menuItem);var $menuHandler=$$("<li>",{'class':"hasMenu"}).appendTo($panelContent);$menuHandler=$$("<ul>",{'class':"List",'id':"chooseAnime"}).appendTo($menuHandler);for(let key in _$.vars.Data.$Anime){$$("<li>",{'class':"Option",text:_$.vars.Data.$Anime[key].Title,'data-key':key}).appendTo($menuHandler)}
  213. break;case "ACP_EPISODE_EDIT":if(introScr){}
  214. var $menuItem=$$("<li>",{'class':"Input",'id':"chooseAnime"}).appendTo($panelContent);$$("<label>",{text:"Anime: "}).appendTo($menuItem);$$("<input>",{'type':"text",'disabled':"true"}).appendTo($menuItem);$$("<div>",{'class':"Button",'id':"chooseAnime"}).append($$("<span>",{text:'Anime, I choose you!'})).append($$("<i>",{'class':"Icon",'id':"Arrow"})).appendTo($menuItem);var $menuHandler=$$("<li>",{'class':"hasMenu"}).appendTo($panelContent);$menuHandler=$$("<ul>",{'class':"List",'id':"chooseAnime"}).appendTo($menuHandler);for(let key in _$.vars.Data.$Anime){$$("<li>",{'class':"Option",text:_$.vars.Data.$Anime[key].Title,'data-key':key}).appendTo($menuHandler)}
  215. break}}
  216. _$.fn.Admin.CP.Load(createContent)},editEpisode:function(phase,episodeId){phase=phase||"List";var $panelContent=$$('.Window#AdminCP nav.Panel#ACP_EPISODE_EDIT > ul:not([id="Loading"])');switch(phase){case "List":$menuItem=$$("<li>",{'class':"Input",'id':"chooseEpisode"}).appendTo($panelContent);$$("<label>",{text:"Episode: "}).appendTo($menuItem);$$("<input>",{'type':"text",'disabled':"true"}).appendTo($menuItem);$$("<div>",{'class':"Button",'id':"chooseEpisode"}).append($$("<span>",{text:'Episode, I choose you!'})).append($$("<i>",{'class':"Icon",'id':"Arrow"})).appendTo($menuItem);$menuHandler=$$("<li>",{'class':"hasMenu"}).appendTo($panelContent);$menuHandler=$$("<ul>",{'class':"List",'id':"chooseEpisode"}).appendTo($menuHandler);for(let key in _$.fn.Admin.$Episodes){$$("<li>",{'class':"Option",text:"#"+_$.fn.Admin.$Episodes[key].episodeNo+" - "+_$.fn.Admin.$Episodes[key].Title,'data-key':key}).appendTo($menuHandler)}
  217. break;case "Data":var $episodeData=_$.fn.Admin.$Episodes[episodeId];$$('.Window#AdminCP nav.Panel .Background#imageUploaded').remove();$$('<div>',{'class':"Background",'id':"imageUploaded"}).insertBefore($panelContent).css({background:'url("/styles/default/images/Anime/a'+$episodeData.animeId+'/Ep_'+_$.fn.sanitizeFile($episodeData.episodeNo.toString())+'_-_e'+$episodeData.episodeId+'")',backgroundSize:"cover",backgroundPosition:"center top"});$$("<li>",{'class':"deleteEpisode"}).append(_$.fn.Tooltip.Add($$("<div>",{'class':"Button",'id':"deleteData",text:"Delete from database"}),Lang.get("LANG_TT_DELETE_ENTRY"))).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"episodeTitle"}).append($$("<label>",{text:"Title: "})).append($$("<input>",{'type':"text",value:$episodeData.Title})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"episodeNo"}).append($$("<label>",{text:"Episode #no: "})).append($$("<input>",{'type':"text",value:$episodeData.episodeNo})).appendTo($panelContent);var dateSchedule=new Date(+$episodeData.Schedule);var formattedTime=pad(dateSchedule.getDate(),2)+"/"+pad(dateSchedule.getMonth()+1,2)+"/"+dateSchedule.getFullYear()+" "+pad(dateSchedule.getHours(),2)+":"+pad(dateSchedule.getMinutes(),2);$$("<li>",{'class':"Input",'id':"episodeSchedule"}).append($$("<label>",{text:"Schedule: "})).append($$("<input>",{'type':"text",value:formattedTime})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"episodeTranslators"}).append($$("<label>",{text:"Translators: "})).append($$("<input>",{'type':"text",value:$episodeData.Translators})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"episodeEncoder"}).append($$("<label>",{text:"Encoder: "})).append($$("<input>",{'type':"text",value:$episodeData.Encoder})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"episodeVerifiers"}).append($$("<label>",{text:"Verifiers: "})).append($$("<input>",{'type':"text",value:$episodeData.Verifiers})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"ACP__browseImage"}).append($$("<label>",{text:"Image: "})).append($$("<input>",{'type':"file",'name':"ACP__browseImage"})).append($$("<input>",{'type':"text",'disabled':"true",placeholder:"image files (maximum size 2 MiB)"})).appendTo($panelContent);$$("<li>",{'id':"ACP__imageControl"}).append($$("<div>",{'class':"Button",'id':"ACP__browseImage",text:"Choose Image"})).append($$("<div>",{'class':"Button",'id':"ACP__uploadImage",text:"Upload Image"})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"episodeDescription"}).append($$("<label>",{text:"Description: "})).append($$("<textarea>",{text:$episodeData.Description})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"episodeSource-1"}).append($$("<label>",{text:"Source #1: "})).append($$("<input>",{'type':"text",value:$episodeData.Source[0]})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"episodeSource-2"}).append($$("<label>",{text:"Source #2: "})).append($$("<input>",{'type':"text",value:$episodeData.Source[1]})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"episodeSource-3"}).append($$("<label>",{text:"Source #3: "})).append($$("<input>",{'type':"text",value:$episodeData.Source[2]})).appendTo($panelContent);$$("<li>",{'class':"episodeSubmit"}).append($$("<div>",{'class':"Button",'id':"submitData",text:"Confirm"})).appendTo($panelContent);break}},editAnime:function($animeId,Episodes){var $panelContent=$$('.Window#AdminCP nav.Panel#ACP_ANIME_EDIT > ul:not([id="Loading"])');var $animeData=_$.vars.Data.$Anime[$animeId];$$('.Window#AdminCP nav.Panel .Background#imageUploaded').remove();$$('<div>',{'class':"Background",'id':"imageUploaded"}).insertBefore($panelContent).css({background:'url("/styles/default/images/Anime/a'+$animeData.animeId+'/Cover")',backgroundSize:"cover",backgroundPosition:"center top"});$$("<li>",{'class':"deleteAnime"}).append($$("<div>",{'class':"Button",'id':"deleteData",text:"Delete from database"})).appendTo($panelContent);_$.fn.Tooltip.Add($$('.Window#AdminCP nav.Panel .Button[id^="delete"]'),Lang.get("LANG_TT_DELETE_ENTRY"));$$("<li>",{'class':"Input",'id':"animeTitle"}).append($$("<label>",{text:"Title: "})).append($$("<input>",{'type':"text",value:$animeData.Title})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeSeason"}).append($$("<label>",{text:"Season: "})).append($$("<input>",{'type':"text",value:$animeData.Season})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeEpisodes"}).append($$("<label>",{text:"# of episodes: "})).append($$("<input>",{'type':"text",value:$animeData.Episodes})).append($$("<span>",{text:"("+Episodes+" episodes playing on Yoko)"})).appendTo($panelContent);if(Episodes){$$('.Window#AdminCP nav.Panel .Input#animeEpisodes label:last-child').css({color:"red"})}
  218. $$("<li>",{'class':"Input",'id':"animeDuration"}).append($$("<label>",{text:"Duration: "})).append($$("<input>",{'type':"text",value:$animeData.Duration})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeGenre"}).append($$("<label>",{text:"Genre: "})).append($$("<input>",{'type':"text",value:$animeData.Genre})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeRating"}).append($$("<label>",{text:"Rating: "})).append($$("<input>",{'type':"text",value:$animeData.Rating})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeDate"}).append($$("<label>",{text:"Release date: "})).append($$("<input>",{'type':"text",value:$animeData.releaseDate})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeCoordinator"}).append($$("<label>",{text:"Coordinator: "})).append($$("<input>",{'type':"text",value:$animeData.Coordinator})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeTranslators"}).append($$("<label>",{text:"Translators: "})).append($$("<input>",{'type':"text",value:$animeData.Translators})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeEncoders"}).append($$("<label>",{text:"Encoders: "})).append($$("<input>",{'type':"text",value:$animeData.Encoders})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeVerifiers"}).append($$("<label>",{text:"Verifiers: "})).append($$("<input>",{'type':"text",value:$animeData.Verifiers})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"ACP__browseImage"}).append($$("<label>",{text:"Image: "})).append($$("<input>",{'type':"file",'name':"ACP__browseImage"})).append($$("<input>",{'type':"text",'disabled':"true",placeholder:"image files (maximum size 2 MiB)"})).appendTo($panelContent);$$("<li>",{'id':"ACP__imageControl"}).append($$("<div>",{'class':"Button",'id':"ACP__browseImage",text:"Choose Image"})).append($$("<div>",{'class':"Button",'id':"ACP__uploadImage",text:"Upload Image"})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeTags"}).append($$("<label>",{text:"Tags: "})).append($$("<input>",{'type':"text",value:$animeData.Tags})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"animeDescription"}).append($$("<label>",{text:"Description: "})).append($$("<textarea>",{text:$animeData.Description})).appendTo($panelContent);$$("<li>",{'class':"Input",'id':"myAnimeList"}).append($$("<label>",{text:"myAnimeList Id: "})).append($$("<input>",{'type':"text",value:$animeData.myAnimeList})).appendTo($panelContent);$$("<li>",{'class':"animeSubmit"}).append($$("<div>",{'class':"Button",'id':"submitData",text:"Confirm"})).appendTo($panelContent)}}},Err:{Input:{Show:function($object,err){$object=$$($object);let $icon=_$.fn.Tooltip.Add($$("<i>",{'class':"Icon",'id':"inputError"}),err).insertAfter($object);$icon.position({of:$object,at:'right+25 center',my:'right center',collision:'none'})
  219. return!0},removeAll:function(){$$('.Icon#inputError').remove()}}},Notification:{Push:function(icon,text,timeout){timeout=(typeof timeout=='undefined')?5000:timeout;var $notification=$$('<li>').appendTo('.List#Notification');$notification.animate({height:"13px",paddingTop:"10px",paddingBottom:"10px",marginTop:"1px",opacity:1},400,"easeOutExpo");$$('<i>',{'class':"Icon",'id':"Notification",html:"&#x"+icon+";"}).appendTo($notification);$$('<span>',{'id':"Message",text:text}).appendTo($notification);var count=$$('.List#Notification li').length-3;setTimeout(_$.fn.Notification.Remove,(count>0)?timeout+count*2000:timeout,$notification)},Remove:function($notification){$notification.animate({height:"0",paddingTop:"0",paddingBottom:"0",opacity:0},400,"easeInExpo",function(){$$(this).remove()})}},Input:{Validate:function(form,$data){var error;switch(form){case "REPORT_PROFILE":if(!$data.Reason.length){error=_$.fn.Err.Input.Show('.Input#chooseReason','LANG_REPORT_REASON_INVALID')}
  220. if($data.Description.length<128){error=_$.fn.Err.Input.Show('.Input#reportDescription','LANG_DESCRIPTION_SHORT')}
  221. return error;case "REPORT_ANSWER":if($data.Answer.length<128){error=_$.fn.Err.Input.Show('nav.Dialog ul.Message#ACP_reportAnswer .Input#reportAnswer','LANG_DESCRIPTION_SHORT')}
  222. return error}}},Button:{isEnabled:function($btn){return!(btn.hasClass('disabled'))},isDisabled:function($btn){return $btn.hasClass('disabled')},Enable:function($objectButton){$objectButton=$$($objectButton);$objectButton.removeClass("disabled")},Disable:function($objectButton){$objectButton=$$($objectButton);$objectButton.addClass("disabled")}},Dialog:{Show:function(Title,Icon,$buttonObj,insertMessage){if(typeof insertMessage!="function"){return}
  223. $$('nav.Dialog').remove();var $Dialog=$$("<nav>",{'class':"Dialog"}).appendTo('body');var $Box=$$("<div>",{'class':"Box"}).appendTo($Dialog);var $Title=$$("<div>",{'class':"Title",text:Title}).appendTo($Box);$$("<i>",{'class':"Icon",'id':"Dialog",html:"&#x"+Icon+";"}).prependTo($Title);var $messageObj=$$("<div>",{'class':"Message"}).appendTo($Box);insertMessage($messageObj);var $buttonList=$$("<ul>",{'class':"List",'id':"dialogButton"}).appendTo($Box);var $button;for(let key in $buttonObj){$button=$$("<li>",{'class':"Button",'id':$buttonObj[key].id+"-"+key,text:key}).appendTo($buttonList);if($buttonObj[key].tooltip){_$.fn.Tooltip.Add($button,$buttonObj[key].tooltip)}}
  224. $Dialog.animate({opacity:1},400,"easeOutExpo",function(){$Dialog.css({display:"block"})})},Hide:function(){$$('nav.Dialog').animate({opacity:0},200,"easeOutExpo",function(){$$(this).css({display:"none"})})}},Tooltip:{$Visible:0,$Timer:undefined,Add:function($element){let args=1;let options=(typeof arguments[args]=="object")?arguments[args++]:{};$element.addClass('Tooltip').data({tipTxt:arguments[args]||"Unknown text",tipDelay:options.delay||.6,tipPos:options.pos||"top"})
  225. return $element},Client:function($element,$data){let key;if($data.User){$data=$data.User;key="$u"+$data.Id;$element.text(($data.Id)?$data.Profile.Nickname:"<deleted>");$element.css({color:($data.Access)?$data.Access.Color:"#d1d1d1"}).addClass('Button');if($data.Id)$element.attr({href:"http://app.yokoanime.com/user/"+$data.Id});if($data.Id&&$data.Access.Level<=10)$element.css({fontWeight:600})}
  226. if($data.Guest){$data=$data.Guest;key="$g"+$data.Id;$element.text("Guest "+$data.Id);$element.css({color:"#d1d1d1"}).addClass('Button')}
  227. if(!_$.vars.Data.$Tooltip[key])_$.vars.Data.$Tooltip[key]=$data;this.Add($element,key);return $element},Show:function($DOMElement){if(!$DOMElement.data('tipTxt')){return}
  228. _$.fn.Tooltip.Hide();_$.fn.Tooltip.$Visible=$DOMElement.data('tipTxt');let __Show=function($DOMElement){$$("div.isTooltip").remove();let id=$DOMElement.data('tipTxt');if(!id)return;let $tooltipObject=$$("<div>",{class:"isTooltip",id:id}).prependTo('body');$tooltipObject.animate({opacity:1},200);let __Anime=function(){if(id.substring(0,2)!="$a"){return}
  229. $tooltipObject.position({of:$DOMElement,at:'right top',my:'left+10 top+10',collision:'flipfit'})
  230. let $animeData=_$.vars.Data.$Anime[id.substr(1)];let $tooltipPreview=$$("<div>",{class:"tooltipPreview"}).appendTo($tooltipObject);if($animeData.Video){$$("<video>",{loop:!0,autoplay:!0}).append($$("<source>",{src:$animeData.Video})).appendTo($tooltipPreview)}
  231. else{$$("<div>").css({background:'url("'+$animeData.Image+'")',backgroundSize:"cover",backgroundPosition:"center top"}).appendTo($tooltipPreview)}
  232. let genre=$animeData.Genre.split(", ");if(genre.length>5){genre.splice(5,genre.length-5,"...")}
  233. let $tooltipInfo=$$("<ul>",{class:"List",id:"tooltipInfo"}).appendTo($tooltipObject);if($animeData.Title.english){$$("<li>",{class:"tooltipItem"}).prepend($$("<label>",{class:"prefix",text:"English Title: "})).append($$("<label>",{class:"content",text:$animeData.Title.english})).appendTo($tooltipInfo)}
  234. else{$$("<li>",{class:"tooltipItem"}).prepend($$("<label>",{class:"prefix",text:"Original Title: "})).append($$("<label>",{class:"content",text:$animeData.Title.original})).appendTo($tooltipInfo)}
  235. $$("<li>",{class:"tooltipItem"}).prepend($$("<label>",{class:"prefix",text:"Genre: "})).append($$("<label>",{class:"content",text:genre.join(", ")})).appendTo($tooltipInfo);let episodeStr=($animeData.Episodes===0)?"OVA":($animeData.Episodes==undefined)?($animeData.episodeCount+" ep. (ongoing)"):($animeData.Episodes+" ep.");$$("<li>",{class:"tooltipItem"}).prepend($$("<label>",{class:"prefix",text:"Episodes: "})).append($$("<label>",{class:"content",text:episodeStr})).appendTo($tooltipInfo);$$("<li>",{class:"tooltipItem"}).prepend($$("<label>",{class:"prefix",text:"Coordinator: "})).append($$("<label>",{class:"content",text:$animeData.Coordinator})).appendTo($tooltipInfo)}
  236. let __Client=function(){if(!_$.vars.Data.$Tooltip[id]){return}
  237. let data=_$.vars.Data.$Tooltip[id];$tooltipObject.addClass('bottom');$tooltipObject.addClass('right');$tooltipObject.position({of:$DOMElement,at:'right top-70',my:'right bottom',collision:'none'})
  238. var $tooltipBackground=$$("<div>",{class:"tooltip__Background"}).appendTo($tooltipObject);var $tooltipAvatar=$$("<div>",{class:"tooltip__userAvatar"}).appendTo($tooltipObject);$tooltipAvatar.css({background:'url("/styles/default/images/Users/'+((data.Profile)?data.Profile.Avatar:"Default/Avatar")+'")',backgroundSize:"cover",backgroundPosition:"center center"})
  239. var $tooltip__userDetails=$$("<div>",{class:"tooltip__userDetails"}).appendTo($tooltipObject);if(id.substring(0,2)=="$u"){$$("<span>",{id:"Nickname",text:(data.Id)?data.Profile.Nickname:"<deleted user>"}).css({color:(data.Id)?data.Access.Color:"#d1d1d1"}).appendTo($tooltip__userDetails);$$("<span>",{id:"Access",text:(data.Id)?("("+data.Access.Name+")"):"<deleted>"}).css({color:(data.Id)?data.Access.Color:"#d1d1d1"}).appendTo($tooltip__userDetails)}
  240. else if(id.substring(0,2)=="$g"){$$("<span>",{id:"Nickname",text:"Guest "+data.Id}).css({color:"#d1d1d1"}).appendTo($tooltip__userDetails)}
  241. $$("<span>",{id:"ipAddress",text:((_$.vars.$userLogged&&(_$.vars.$userLogged.Access.Level<5||_$.vars.$userLogged.Access.Special.chatMod))?("IP: "+data.ipAddress):"")}).css({color:(data.Access)?data.Access.Color:"#d1d1d1"}).appendTo($tooltip__userDetails)}
  242. if(id.charAt(0)=='$'){__Anime();__Client()}
  243. else{$tooltipObject.text(id.match(/LANG/g)?$lang[$lang.set][id]:id);if($DOMElement.data('tipPos')=='top'){$tooltipObject.addClass('bottom');$tooltipObject.addClass('right');$tooltipObject.position({of:$DOMElement,at:'center+12 top-8',my:'right bottom',collision:'none'})}
  244. else if($DOMElement.data('tipPos')=='bottom'){$tooltipObject.addClass('top');$tooltipObject.addClass('right');$tooltipObject.position({of:$DOMElement,at:'center+12 bottom+12',my:'right top',collision:'none'})}}}
  245. _$.fn.Tooltip.$Timer=setTimeout(__Show,$DOMElement.data('tipDelay')*1000,$DOMElement)},Hide:function(){clearTimeout(_$.fn.Tooltip.$Timer);if(_$.fn.Tooltip.$Visible){delete _$.fn.Tooltip.$Visible;$$('div.isTooltip').first().animate({opacity:0},200,function(){if(!_$.fn.Tooltip.$Visible){$$('div.isTooltip').remove()}})}}}}}
  246. let connectionError=!1;let disconnected=!1;socket.on($socket.Disconnect,function($res){socket.disconnect();switch($res.reason){case "GUEST_DUPLICATE_IP":_$.fn.Notification.Push('e914',"Another Guest has connected to the webpage with your IP Address (Only 1 connection per IP is allowed)")}})
  247. socket.on('connect_error',function(){if(connectionError)
  248. return;_$.fn.Notification.Push('e913',"You have lost the connection to server... retrying in a few seconds");connectionError=!0})
  249. socket.on('connect',function(){if(!disconnected)
  250. return;_$.fn.Notification.Push('e912',"Attempting to recover your session data...");_$.fn.ajax({url:'/findSession.jx',data:{auth:localStorage.getItem('Session-Auth')},done:function(data){if(data.Profile)loginAs.User(data,!0);else loginAs.Guest(data,!0)},fail:function(){_$.fn.Notification.Push('f071',"Your session could not be recovered, you are now offline")}})
  251. connectionError=!1;disconnected=!1})
  252. socket.on('disconnect',function(){disconnected=!0;_$.fn.Notification.Push('e911',"You have been disconnected from the server")})
  253. socket.on("cl->Notification->Push",function($res){_$.fn.Notification.Push($res.icon,$res.notification,$res.timeout)})
  254. socket.on("cl->Anime->insertAnime",function($res){let Id="a"+$res.animeId;if(!_$.vars.Data.$Anime)return;_$.vars.Data.$Anime[Id]=$res;let $animeList=$$('ul.List#animeDropdown');let $animeli=_$.fn.Tooltip.Add($$("<li>",{class:"new"}).prependTo($animeList),{delay:.2},"$"+Id);$$("<a>",{href:"http://app.yokoanime.com/anime/"+Id,class:"Button",text:$res.Title.original}).data({key:Id}).appendTo($animeli)})
  255. socket.on($socket.updateAnime,function(data){let $animeId="a"+data.animeId;if(_$.vars.Data.$Anime||_$.vars.Data.$Anime[$animeId]){$$('ul.List#animeDropdown a#'+$animeId).replaceWith($$("<a>",{href:"http://app.yokoanime.com/anime/"+$animeId,class:"Button",id:$animeId,text:data.Title.original}).data({key:$animeId}));_$.vars.Data.$Anime[$animeId]=data}})
  256. socket.on($socket.deleteAnime,function($animeId){if(_$.vars.Data.$Anime||_$.vars.Data.$Anime[$animeId]){$$('ul.List#animeDropdown a#'+$animeId).remove();delete _$.vars.Data.$Anime[$animeId]}})
  257. socket.on('cl->Chat->postChatMessage',function($res){if($res){_$.fn.Widget.Chat.printMessage($res)}})
  258. socket.on("cl->Comments->postComment",function($res){let $commentWidget=$$('.Widget.isComment');if($commentWidget.data('Section')!=$res.Section)return;_$.vars.tmp.$loadedComments.unshift($res);_$.fn.Widget.Comments.postComment($res)})
  259. socket.on("cl->Comments->postReply",function($res){let $comment=$$(".Widget.isComment li.Comment#"+$res.Section);if(!$comment.length||$comment.data('Id')!=$res.Section)return;for(let i=0;i<_$.vars.tmp.$loadedComments;i++){if("c"+_$.vars.tmp.$loadedComments[i].Id==$res.Section){_$.vars.tmp.$loadedComments[i].Replies.unshift($res)}}
  260. _$.fn.Widget.Comments.replyComment($res)})
  261. socket.on($socket.deleteComment,function($res){let $wrapper=$$(".Widget.isComment li#"+$res.commentId);if(!$wrapper.length||$wrapper.data('Id')!=$res.commentId)return;$wrapper.children('div#Right').children('div:first-child').nextAll().remove();let $data=_$.vars.tmp.$loadedComments[$res.commentId]
  262. $data.isDeleted=$res.deleteType;_$.fn.Widget.Comments.updateSpecial($data,$wrapper);let isReply=($res.commentId.charAt(0)=='r')?!0:!1})
  263. socket.on($socket.editComment,function($res){let $wrapper=$$(".Widget.isComment li#"+$res.Id);if(!$wrapper.length||$wrapper.data('Id')!=$res.Id)return;let $Message=$wrapper.children('div#Right').children('div#Message');$Message.html(_String.prepare(_String.sanitizeHTML($res.Message)));let dateEdited=new Date(+$res.Edited[0]);_$.fn.Tooltip.Add($$("<i>",{class:"Icon",id:"Edited"}),Lang.get("TOOLTIP:LANG->COMMENT->EDITED",[_Date.Format(dateEdited)])).appendTo($Message.prev());_$.vars.tmp.$loadedComments[$res.Id].Message=$res.Message})
  264. $$(document.body).on('click','a',function(evt){let link=$$(this);let href=link.attr('href');if(href){evt.preventDefault();if(href==window.location.href){return}
  265. if(link.hasClass('link-cancel')){return}
  266. history.pushState("","",link.attr('href'));func.Path.parse()}})
  267. $$(document.body).click(function(evt){if(!$$(evt.target).closest('nav.contextMenu').length){func.Menu.Context.Destroy()}})
  268. $$(document.body).on('keypress','textarea',function(evt){var textarea=$$(evt.target);if(textarea.is(':focus')){switch(evt.keyCode){case 10:case 13:if(evt.ctrlKey||evt.shiftKey){let text=textarea.val();let pos=textarea.prop("selectionStart");textarea.val(_String.splice(text,pos,0,"\n"));textarea.scrollTop(textarea[0].scrollHeight-textarea.height());textarea.prop("selectionEnd",pos+1);return evt.preventDefault()}
  269. else{switch(textarea.data('key')){case "#chat":textarea.next('.Button#Send').click();break;case "#postComment":textarea.next('.Button#postComment').click();break;case "#postReply":textarea.next('.controlWrapper').children('.Button#postReply').click();break}
  270. return evt.preventDefault()}
  271. break}}})
  272. $$(document.body).on('change','input[type="file"]',function(event){let fileName=$$(event.target)[0].files[0];$$(event.target).next().val(_$.fn.isDefined(fileName)?fileName.name:fileName)})
  273. function browseImage($btn){$btn.parent().prev().children('input[type="file"]').click()}
  274. let cache=0;function uploadImage($btn){if(!_$.vars.$userLogged){return}
  275. if(_$.socketRequest){return}
  276. var $uploadButton=$btn;var reqId=$uploadButton.parents('nav.Panel').attr('id');var reqType=reqId.split('_')[0];var error;var $imgData={File:$uploadButton.parent().prev().children('input[type="file"]')[0].files[0],Title:(reqType=="ACP")?$$('.Window#AdminCP nav.Panel .Item[id*="Title"] input').val().trim():(reqType=="UACP")?"Avatar_"+_$.vars.$userLogged.Id:"unknown_upload"}
  277. _$.fn.Err.Input.removeAll();if(!_$.fn.isDefined($imgData.File)){error=_$.fn.Err.Input.Show($uploadButton.parent().prev(),'LANG->EMPTY->IMAGE')}
  278. if($imgData.Title.length<3){error=_$.fn.Err.Input.Show('.Window#AdminCP nav.Panel .Item[id*="Title"] input:last-child','LANG->SHORT->TITLE')}
  279. if(!error){var fd=new FormData();var fileName=_$.fn.sanitizeFile($imgData.Title);fd.append('file',$imgData.File,fileName);_$.fn.Button.Disable($uploadButton);_$.fn.Window.Spinner.Create($uploadButton);_$.socketRequest=$$.ajax({url:'/'+reqType+'_uploadImage',type:'POST',data:fd,processData:!1,contentType:!1,success:function(){delete _$.socketRequest;_$.imageUploaded={File:fileName,Name:$imgData.Title}
  280. cache++;switch(reqType){case "ACP":$$('.Background#imageUploaded').remove();$$('<div>',{'class':"Background",'id':"imageUploaded"}).insertBefore($$('.Window#AdminCP nav.Panel#'+reqId+' > ul')).css({background:'url("/styles/default/images/tmp/'+fileName+'?ver=1.'+cache+'")',backgroundSize:"cover",backgroundPosition:"center top"});break;case "UACP":$$('.Window#UserAccountCP nav.Panel .Background#UACP__Avatar, .Window#UserAccountCP nav.Panel#'+reqId+' > ul > .Image .Preview').css({background:'url("/styles/default/images/tmp/'+fileName+'?ver=1.'+cache+'")',backgroundSize:"cover",backgroundPosition:"center top"})
  281. break}
  282. _$.fn.Button.Enable($uploadButton);_$.fn.Notification.Push('e91e',"Your image has been uploaded successfully")},error:function(xhr){if(xhr.responseText){var error=JSON.parse(xhr.responseText);_$.fn.Err.Input.Show(error.object[0],error.name[0])}
  283. _$.fn.Notification.Push('e911',"Your image upload process has failed");setTimeout(function(){delete _$.socketRequest;_$.fn.Button.Enable($uploadButton)},5000)},complete:function(){_$.fn.Window.Spinner.Destroy($uploadButton)}})}}
  284. $$(document.body).on('click','.dropdownMenu .Button[id^="choose"]',function(event){let $buttonObject=$$(event.target);if(!$buttonObject.hasClass('Button')){$buttonObject=$buttonObject.parents('.Button')}
  285. let $menuHandler=$buttonObject.parent().next();let $menuContent=$menuHandler.children();if($buttonObject.hasClass('isActive')){$buttonObject.removeClass('isActive');$menuContent.stop().animate({height:"0"},400,"easeOutExpo")}
  286. else{$menuContent.width($buttonObject.width()+8);$buttonObject.addClass('isActive');$menuHandler.position({of:$buttonObject,at:"center bottom+5",my:"center top"});let height=$menuContent.height(),autoHeight=$menuContent.css({height:"auto"}).height();$menuContent.height(height);$menuContent.stop().animate({height:autoHeight},400,"easeOutExpo")}})
  287. $$(document.body).on('mouseenter','[class*="Tooltip"]',function(event){var $object=($$(event.target).hasClass('Tooltip'))?$$(event.target):$$(event.target).parents('.Tooltip');_$.fn.Tooltip.Show($object)})
  288. $$(document.body).on('mouseleave','[class*="Tooltip"]',function(){_$.fn.Tooltip.Hide()})
  289. let $scrollingThumb;let $scrolling={};$$(document.body).on('mousedown','.scrollbar-thumb',function(evt){$scrollingThumb=$$(evt.target);$scrollingThumb.parent().parent().addClass('is-scrolling');$scrollingThumb.data('grabOffsetX',clamp(evt.pageX-$scrollingThumb.offset().left,0,$scrollingThumb.width())+1);$scrollingThumb.data('grabOffsetY',clamp(evt.pageY-$scrollingThumb.offset().top,0,$scrollingThumb.height())+1);$$(document.body).disableSelection();$$(document.body).css({cursor:"pointer"})})
  290. $$(document.body).on('mouseup',function(evt){if($scrollingThumb){let $scrollingContainer=$scrollingThumb.parent().parent();$scrollingContainer.removeClass('is-scrolling');_$.fn.scrollBar.onScrollFinish($scrollingContainer);$scrollingThumb=undefined;$$(document.body).enableSelection();$$(document.body).css({cursor:"auto"})}})
  291. $$(document.body).on('mousemove',function(evt){if($scrollingThumb){let $scrollingRail=$scrollingThumb.parent();let $scrollingContainer=$scrollingRail.parent();let positionPct,scrollPosition,railPosition,thumbPosition;if($scrollingThumb.hasClass('x')){let thumbWidth=$scrollingThumb.width();let containerWidth=$scrollingContainer.width();let mouseOffsetX=clamp(evt.pageX-$scrollingContainer.offset().left,0,containerWidth);let railWidth=$scrollingContainer[0].scrollWidth;let railOffsetX=clamp(evt.pageX-$scrollingRail.offset().left,0,railWidth);positionPct=(mouseOffsetX-$scrollingThumb.data('grabOffsetX'))/(containerWidth-$scrollingThumb.data('grabOffsetX')-(thumbWidth-$scrollingThumb.data('grabOffsetX')));positionPct=clamp(positionPct,0,1);scrollPosition=clamp(positionPct*(railWidth-$scrollingContainer.width()));$scrollingContainer.scrollLeft(scrollPosition);railPosition=(positionPct*containerWidth)-(positionPct*thumbWidth);thumbPosition=clamp(scrollPosition+railPosition,0,railWidth-$scrollingThumb.width());$scrollingThumb.css({left:thumbPosition})}
  292. else if($scrollingThumb.hasClass('y')){let thumbHeight=$scrollingThumb.height();let containerHeight=$scrollingContainer.height();let mouseOffsetY=clamp(evt.pageY-$scrollingContainer.offset().top,0,containerHeight);let railHeight=$scrollingContainer[0].scrollHeight;let railOffsetY=clamp(evt.pageY-$scrollingRail.offset().top,0,railHeight);positionPct=(mouseOffsetY-$scrollingThumb.data('grabOffsetY'))/(containerHeight-$scrollingThumb.data('grabOffsetY')-(thumbHeight-$scrollingThumb.data('grabOffsetY')));positionPct=clamp(positionPct,0,1);scrollPosition=clamp(positionPct*(railHeight-$scrollingContainer.height()));$scrollingContainer.scrollTop(scrollPosition);railPosition=(positionPct*containerHeight)-(positionPct*thumbHeight);thumbPosition=clamp(scrollPosition+railPosition,0,railHeight-$scrollingThumb.height());$scrollingThumb.css({top:thumbPosition})}}})
  293. $$(document.body).on('mousewheel DOMMouseScroll',function(event){if($$(event.target).prop("tagName")=="TEXTAREA")return;let $scrollElement=($$(event.target).hasClass('scrollbar-container'))?$$(event.target):$$($$(event.target).parents('.scrollbar-container')[0]);if($scrollElement.hasClass('scrollbar-container')){event.preventDefault();let delta=(event.type=='DOMMouseScroll')?event.originalEvent.detail:event.originalEvent.wheelDelta*-1;let axis={x:$scrollElement.data('scrollX'),y:$scrollElement.data('scrollY')}
  294. switch(event.type){case "mousewheel":case "DOMMouseScroll":if(delta>0){_$.fn.scrollBar.startScrolling($scrollElement,(axis.x?"right":"down"),axis.x||axis.y)}
  295. else{_$.fn.scrollBar.startScrolling($scrollElement,(axis.x?"left":"up"),-axis.x||-axis.y)}
  296. break}}})
  297. $$(document.body).on('keyup',function(evt){if(evt.keyCode===27){if(wndModalSwitch){return func.Modal.unload()}}})
  298. $$(document.body).on('click','nav.Dialog ul.List#dialogButton .Button:not(.disabled)',function(event){var $buttonPressed=$$(event.target);if(!_$.vars.$userLogged.id){return}
  299. var reportAnswer=function(Status){_$.fn.Err.Input.removeAll();var indexInArray=$$('.Window#AdminCP nav.Panel#ACP_MODERATE_REPORTS ul.Button.isActive').data('id');var $reportData={reportId:_$.fn.Report.$Data[indexInArray].reportId,Status:Status,Answer:$$('nav.Dialog ul.Message#ACP_reportAnswer .Input#reportAnswer textarea').val().trim()}
  300. var error=_$.fn.Input.Validate("REPORT_ANSWER",$reportData);if(!error){_$.fn.Button.Disable('nav.Dialog ul.List#dialogButton .Button');_$.fn.Window.showLoader('nav.Dialog ul.List#dialogButton .Button#ACP_Report-Discard');_$.socketRequest=!0;socket.emit('Report:Answer',$reportData,function(data){if(_$.fn.isDefined(data.error)){if(_$.fn.isDefined(data.error.name)){for(let i=0;i<data.error.name.length;i++){_$.fn.Err.Input.Show(data.error.object[i],data.error.name[i])}}
  301. setTimeout(function(){delete _$.socketRequest;_$.fn.Button.Enable('nav.Dialog ul.List#dialogButton .Button')},5000)}
  302. else if(_$.fn.isDefined(data.success)){delete _$.socketRequest;_$.fn.Admin.ACP.Panel("ACP_MODERATE_REPORTS");_$.fn.Dialog.Show("Report closed","e911",{"Ok":"Report-Ok"},function($messageObj){$$("<span>",{'class':"center",text:"The report has been successfully closed!"}).appendTo($messageObj);$$("<span>",{'class':"center",text:"Thank you for doing such an amazing job \^\_\^"}).appendTo($messageObj)})}
  303. _$.fn.Window.removeLoader('nav.Dialog ul.List#dialogButton .Button#ACP_Report-Discard')})}
  304. return}
  305. switch($buttonPressed.attr('id')){case "ACP_Report-Resolve":return reportAnswer("Resolved");case "ACP_Report-Cancel":return reportAnswer("Cancelled");case "Report-Report":if(_$.socketRequest){return}
  306. if(_$.vars.tmp.$loadedUser.id==_$.vars.$userLogged.id){return}
  307. _$.fn.Err.Input.removeAll();var $reportData={userId:_$.vars.tmp.$loadedUser.id,Reason:$$('nav.Dialog .Message#reportProfile .Input#chooseReason input').val().trim(),Description:$$('nav.Dialog .Message#reportProfile .Input#reportDescription textarea').val().trim()}
  308. error=_$.fn.Input.Validate("REPORT_PROFILE",$reportData);if(!error){_$.fn.Button.Disable('nav.Dialog ul.List#dialogButton .Button#Report-Report');_$.fn.Window.showLoader('nav.Dialog ul.List#dialogButton .Button#Report-Report');_$.socketRequest=!0;socket.emit('Profile:Report',$reportData,function(data){if(_$.fn.isDefined(data.error)){if(_$.fn.isDefined(data.error.name)){for(let i=0;i<data.error.name.length;i++){_$.fn.Err.Input.Show(data.error.object[i],data.error.name[i])}}
  309. setTimeout(function(){delete _$.socketRequest;_$.fn.Button.Enable('nav.Dialog ul.List#dialogButton .Button#Report-Report')},5000)}
  310. else if(_$.fn.isDefined(data.success)){delete _$.socketRequest;_$.fn.Dialog.Show("Report "+_$.vars.tmp.$loadedUser.displayName,"e911",{"Ok":"Report-Ok"},function($messageObj){$$("<span>",{'class':"center",text:"Your report has been successfully sent."}).appendTo($messageObj);$$("<span>",{'class':"center",text:"Please allow us a maximum of 24h to solve your issue!"}).appendTo($messageObj)})}
  311. _$.fn.Window.removeLoader('nav.Dialog ul.List#dialogButton .Button#Report-Report')})}
  312. return}
  313. _$.fn.Dialog.Hide()});$$(document.body).on('click','nav.Dialog .Message#reportProfile ul.List#chooseReason li',function(event){var $reasonItem=$$(event.target);var $reasonButton=$$('.Button#chooseReason');$reasonButton.click();$reasonButton.find('label').text($reasonItem.text());$$('nav.Dialog .Input#chooseReason input').val($reasonItem.text())});var searchTimeout;$$(document.body).on('input focusout focusin','.List#Header .Input#Search input',function(event){var $Input=$$(event.target);var $searchDropdown=$Input.parent().next().children('ul.List');var slideResult=function(){$$('.List#Header .Button.isActive').click();$searchDropdown.parent().position({of:$Input,at:"center bottom+9",my:"center top"});$searchDropdown.stop().animate({height:"177px"},400,"easeOutExpo",function(){if($Input.val().length>=3){if(!$searchDropdown.children().length){_init()}}})}
  314. var _init=function(){func.Loading.start("search",{parent:$searchDropdown,overlayed:!1},"Searching...");searchTimeout=setTimeout(_search,2000,$Input.val())}
  315. var _clear=function(){clearTimeout(searchTimeout);func.Loading.remove("search")}
  316. var _search=function(query){socket.emit("Search",{Search:query},function(data,fn){if(data.error){$$("<li>",{'class':"Status",text:"No matches found",style:"color: red; font-size: 13px"}).appendTo($$('div.Window#Loading-search ul').empty())}
  317. else{func.Loading.finish("search",function(){var $resultItem;var $searchInfo;for(let i=0;i<data.success.length;i++){switch(data.success[i].Class){case "u":$resultItem=$$("<li>",{'class':data.success[i].Class,'id':data.success[i].Id}).appendTo($searchDropdown);$$("<div>",{'class':"Background",'id':"searchResult"}).appendTo($resultItem).css({background:'url("/styles/default/images/Users/'+data.success[i].Profile.Avatar+'")',backgroundSize:"cover",backgroundPosition:"center center"});$$("<div>",{'class':"resultImage"}).appendTo($resultItem).css({background:'url("/styles/default/images/Users/'+data.success[i].Profile.Avatar+'")',backgroundSize:"cover",backgroundPosition:"center center"});$searchInfo=$$("<ul>",{'class':"List",'id':"searchInfo"}).appendTo($resultItem);$$("<li>",{'class':"infoItem",'id':"resultUser"}).append($$("<label>",{'class':"prefix",text:"User:"})).append($$("<label>",{'class':"content",text:data.success[i].Profile.Nickname})).appendTo($searchInfo);$$("<li>",{'class':"infoItem",'id':"resultAccess"}).append($$("<label>",{'class':"prefix",text:"Access:"})).append($$("<label>",{'class':"content",text:data.success[i].Access.Name})).appendTo($searchInfo);$$('li.user .List#searchInfo #resultAccess label.content').css({color:data.success[i].Access.Color});break;case "a":$resultItem=$$("<li>",{'class':data.success[i].Class,'data-key':data.success[i].animeId}).appendTo($searchDropdown);$searchInfo=$$("<ul>",{'class':"List",'id':"searchInfo"}).appendTo($resultItem);$$("<li>",{'class':"infoItem",'id':"resultAnime"}).append($$("<label>",{'class':"prefix",text:"Anime:"})).append($$("<label>",{'class':"content",text:data.success[i].Title})).appendTo($searchInfo);$$("<li>",{'class':"infoItem",'id':"resultCoordinator"}).append($$("<label>",{'class':"prefix",text:"Coordinator:"})).append($$("<label>",{'class':"content",text:data.success[i].Coordinator})).appendTo($searchInfo);$$("<li>",{'class':"infoItem",'id':"resultEpisodes"}).append($$("<label>",{'class':"prefix",text:"Episodes:"})).append($$("<label>",{'class':"content",text:data.success[i].Episodes})).appendTo($searchInfo);break}}})}})}
  318. switch(event.type){case "focusin":slideResult();break;case "focusout":_clear();$searchDropdown.stop().delay(100).animate({height:0},400,"easeOutExpo");break;case "input":_clear();if($Input.val().length<3){return}
  319. _init();if($searchDropdown.height()){if($searchDropdown.children().length){return $searchDropdown.empty()}}
  320. break}})
  321. $$(document.body).on('click',".List#searchDropdown > li",function(event){if(_$.socketRequest){return}
  322. var $resultButton=$$(event.target);if($resultButton.hasClass('user')){return _$.fn.User.loadProfile($resultButton.attr('id'),!0)}
  323. if($resultButton.hasClass('anime')){return _$.fn.Anime.loadSpecific($resultButton.data("key"),!0)}});function headerDeselectMenu(menu){if(!menu)$$('.List#Header > .Button.isActive').click();else if(menu.hasClass('isActive'))menu.click()}
  324. function headerSelectMenu(evt){let $btnItem=$$(evt.target);if(!$btnItem.hasClass('Button')){$btnItem=$btnItem.parents('.Button')}
  325. if($btnItem.attr('id')!==$btnItem.data('genuine'))return;let $activeButton=$btnItem.parent().children('.isActive');let $activeMenu=$activeButton.next().children();if($btnItem.attr('id')!=$activeButton.attr('id')){$activeButton.removeClass('isActive');$activeMenu.stop().css({height:"0"});$activeMenu.find('li').css({display:"none"})}
  326. let $buttonMenu=$btnItem.next().children();if($btnItem.hasClass('isActive')){$btnItem.removeClass('isActive');$buttonMenu.stop().animate({height:"0"},400,"easeOutExpo");$buttonMenu.find('li').css({display:"none"})}
  327. else{$btnItem.addClass('isActive');let height=210;if($btnItem.data('genuine')==="User"){height=250}
  328. $buttonMenu.stop().animate({height:height},400,"easeOutExpo",function(){$buttonMenu.find('li').css({display:"block"});if($btnItem.data('genuine')==="User"){let user_nav=$buttonMenu.children('#user-nav').find('li');let user_info=$buttonMenu.children('#user-stats').find('li');user_nav.css({opacity:0}).stop();user_nav.each(function(index){setTimeout(()=>{$$(this).stop().animate({opacity:1},200,"linear")},index*75)})
  329. user_info.css({opacity:0}).stop();user_info.each(function(index){setTimeout(()=>{$$(this).stop().animate({opacity:1},200,"linear")},index*75)})}
  330. _$.fn.scrollBar.Update($buttonMenu)})}}
  331. $$(document.body).on('click','.List#Header .Button#Anime, .List#Header .Button#Manga, .List#Header .Button#User',headerSelectMenu);function tryRegister($btnRegister){if(_$.vars.$userLogged||_$.fn.Button.isDisabled($btnRegister)){return}
  332. _$.fn.Err.Input.removeAll();let $post={Username:$$('.Modal.Register .Input#Username input').val().trim(),pwd:$$('.Modal.Register .Input#Password input').val().trim(),pwdConfirm:$$('.Modal.Register .Input#confirmPassword input').val().trim(),EMail:$$('.Modal.Register .Input#EMail input').val().trim()}
  333. _$.fn.Button.Disable($btnRegister);_$.fn.Window.Spinner.Create($btnRegister);let reset=function(){_$.fn.Button.Enable($$('.Modal.Register .Button#Submit'))}
  334. let uuid=$btnRegister.setUUID(_$.fn.UUID.Generate());_$.fn.ajax({url:'/Register.jx',data:$post,done:function(result){if(!_$.fn.UUID.Compare($btnRegister,uuid,!0)){return}
  335. if(!result||result.error){if(result.error){for(let i=0;i<result.error.name.length;i++){_$.fn.Err.Input.Show(result.error.object[i],Lang.get(result.error.name[i],result.error.custom[i]))}}}
  336. else{_$.fn.Notification.Push('e916',"Your account has been successfully created and it will be active within 5 minutes!");return _$.fn.Window.openLogin()}},always:function(){setTimeout(reset,5000);_$.fn.Window.Spinner.Destroy($btnRegister)}})}
  337. function tryLogout($btnLogout){if(!_$.vars.$userLogged){return}
  338. _$.fn.ajax({url:'/Logout.jx',done:function(result){if(result){func.Modal.unload();loginAs.Guest(result);localStorage.removeItem('Session-Auth')}}})}
  339. function tryLogin($btnLogin){if(_$.vars.$userLogged||_$.fn.Button.isDisabled($btnLogin)){return}
  340. _$.fn.Err.Input.removeAll();let $post={Username:$$('.Modal.Login .Input#Username input').val(),pwd:$$('.Modal.Login .Input#Password input').val()}
  341. let remember=$$('.Modal.Login .CheckBox#loginRemember').is(':checked');_$.fn.Button.Disable($btnLogin);_$.fn.Window.Spinner.Create($btnLogin);let reset=function(){_$.fn.Button.Enable($$('.Modal.Login .Button#Submit'))}
  342. let uuid=$btnLogin.setUUID(_$.fn.UUID.Generate());_$.fn.ajax({url:'/Login.jx',data:$post,done:function(result){if(!_$.fn.UUID.Compare($btnLogin,uuid,!0))return;if(!result||result.error){if(result.error){for(let i=0;i<result.error.name.length;i++){_$.fn.Err.Input.Show(result.error.object[i],Lang.get(result.error.name[i],result.error.custom[i]))}}}
  343. else{if(result.ban){func.Modal.unload();return func.Popup.Banned(result.ban)}
  344. if(remember){localStorage.setItem('Session-Auth',result.Auth)}
  345. func.Modal.unload();loginAs.User(result);return}},always:function(){setTimeout(reset,5000);_$.fn.Window.Spinner.Destroy($btnLogin)}})}
  346. $$(document.body).on('click','.CTRL#for__Textarea .is__button',function(event){var $button=$$(event.target);var $textarea=$button.parent().next('textarea');var startPoint=$textarea[0].selectionStart;var endPoint=$textarea[0].selectionEnd;var wholeText=$textarea.val();var selectedText=(startPoint==endPoint)?"Insert Text":wholeText.substring(startPoint,endPoint);var i=$button.attr('id');var tag={'bold':"b",'italic':"i",'underline':"u",'strikethrough':"s",'text-color':"color",'fill-color':"highlight",'justify':"justify",'left':"left",'center':"center",'right':"right",'special':undefined}
  347. $textarea.val(_String.exSplice(wholeText,startPoint,endPoint,"["+tag[i]+"]"+selectedText+"[/"+tag[i]+"]"));startPoint+=tag[i].length+2;endPoint=startPoint+selectedText.length;$textarea.focus();$textarea[0].selectionStart=startPoint;$textarea[0].selectionEnd=endPoint})
  348. $$(document.body).on('click','li.isDropdownMenu > ul.List li.Option',function(evt){let $item=$$(event.target);let $btn=$item.parent().parent().prev().children('.Button');$btn.click();$btn.children('span').text($item.text());$btn.prev().data({key:$item.data('key')})})
  349. function try_postComment($postButton){if(_$.fn.Button.isDisabled($postButton)){return}
  350. let $commentBody=$$('.Widget.isComment');_$.fn.Err.Input.removeAll();let $post={Section:$commentBody.data('Section'),Message:$commentBody.children("textarea#postComment").val().trim()}
  351. _$.fn.Button.Disable($postButton);_$.fn.Window.Spinner.Create($postButton);let reset=function($btn){_$.fn.Button.Enable($btn)}
  352. let uuid=$commentBody.setUUID(_$.fn.UUID.Generate());_$.fn.ajax({url:'/comments/postComment.jx',data:$post,done:function(result){if(!_$.fn.UUID.Compare($commentBody,uuid,!0))return;if(!result||result.error){setTimeout(reset,3000,$postButton);if(result.error){for(let i=0;i<result.error.name.length;i++){_$.fn.Err.Input.Show(result.error.object[i],Lang.get(result.error.name[i],result.error.custom[i]))}}}
  353. else{$$(".Widget.isComment textarea#postComment").val("");_$.fn.Button.Enable($postButton)}},fail:function(){setTimeout(reset,3000,$postButton)},always:function(){_$.fn.Window.Spinner.Destroy($postButton)}})}
  354. $$(document.body).on('click',".Widget.isComment .Button#Reply",function(evt){let $replyButton=$$(evt.target);if($replyButton.attr('id')!==$replyButton.data('task'))return;$$('nav.isReply div.postWrapper').remove();let $navReply=$replyButton.parent().next();let $postWrapper=$$("<div>",{class:"postWrapper"}).prependTo($navReply);$$("<label>",{id:"postReply",text:"Post a Reply"}).appendTo($postWrapper);$$("<textarea>",{id:"postReply"}).data({key:"#postReply"}).appendTo($postWrapper);let $replyControl=$$("<div>",{class:"controlWrapper"}).appendTo($postWrapper);$$("<div>",{class:"Button",id:"postReply",text:"Post Reply"}).appendTo($replyControl).fwClick(try_postReply);$$("<div>",{class:"Button",id:"cancelReply",text:"Cancel"}).appendTo($replyControl);let $commentList=$$('.Widget.isComment ul.List#Comments');let $comment=$postWrapper.parents('li.Comment');let height=$postWrapper.height();$postWrapper.height(0);$postWrapper.stop().animate({height:height},{duration:400,easing:"easeOutExpo",progress:function(){_Mutation.anim($$(this).parents('ul.List#Comments'))}})})
  355. $$(document.body).on('click',".fwclick",function(evt){let $btn=$$(evt.target);if(typeof $btn.data('task')=="function")$btn.data('task')($btn);if($btn.data('close-menu'))headerDeselectMenu($btn.data('close-menu'))})
  356. function OnCommentEdit($btn){if($$('.Widget.isComment #Message textarea').length)$$('.Widget.isComment #Right > .controlWrapper > .Button#Cancel').click();let $comment=$$($btn.parents('li')[0]);let Id=$comment.data('Id');let $Message=$$($comment.find('#Message')[0]);let $textarea=$$("<textarea>",{text:_$.vars.tmp.$loadedComments[Id].Message});$Message.empty();$textarea.appendTo($Message);$textarea.focus();let clearEdit=function(cancel){if(cancel)$Message.html(_String.prepare(_String.sanitizeHTML(_$.vars.tmp.$loadedComments[Id].Message)));$btn_confirm.remove();$btn_cancel.remove();$textarea.remove();_$.fn.Err.Input.removeAll()}
  357. let confirm=function(self){if(!_$.vars.$userLogged)return;if($textarea.val().trim()==_$.vars.tmp.$loadedComments[Id].Message){return clearEdit(!0)}
  358. let $post={commentId:Id,commentMessage:$textarea.val().trim()}
  359. _$.fn.Err.Input.removeAll();_$.fn.Button.Disable(self);_$.fn.Window.Spinner.Create(self);socket.emit($socket.emit.editComment,$post,function($res){_$.fn.Window.Spinner.Destroy(self);let reset=function(){_$.fn.Button.Enable(self)}
  360. if(!$res||$res.error){if($res.error){for(let i=0;i<$res.error.name.length;i++){_$.fn.Err.Input.Show($res.error.object[i],Lang.get($res.error.name[i],$res.error.custom[i]))}}}
  361. else{_$.fn.Notification.Push('ea10',Lang.get("N:LANG->COMMENT->EDIT->SUCCESS"));return clearEdit()}
  362. setTimeout(reset,5000)})}
  363. let cancel=function(){return clearEdit(!0)}
  364. let $ctrlWrapper=$Message.next('.controlWrapper');var $btn_cancel=$$("<div>",{class:"Button",id:"Cancel",text:"Cancel"}).data({task:cancel}).prependTo($ctrlWrapper);var $btn_confirm=$$("<div>",{class:"Button",id:"Confirm",text:"Confirm"}).data({task:confirm}).prependTo($ctrlWrapper)}
  365. function OnCommentDelete($btn){let showModal=function($overlay){let $comment=$btn.parents('li');let $modal=$$("<nav>",{class:"Modal",id:"Dialog"}).appendTo($overlay);let $title=$$("<div>",{class:"titleBar",text:Lang.get("I:LANG->COMMENT->DELETE->TITLE")}).appendTo($modal);let Id=$$($comment[0]).data('Id');let $body=$$("<div>",{class:"deleteComment"}).appendTo($modal);$$("<span>",{id:"nfo",text:Lang.get("I:LANG->COMMENT->DELETE")}).appendTo($body);$$("<span>",{id:"message",html:$btn.parent().prev().html()}).appendTo($body);$$("<span>",{id:"user",text:Lang.get("I:LANG->COMMENT->DELETE->BY")}).append(_$.fn.Tooltip.Client($$("<a>",{id:"User",text:_$.vars.tmp.$loadedComments[Id].User.Profile.Nickname}),_$.vars.tmp.$loadedComments[Id])).appendTo($body);$$("<span>",{id:"warning",text:Lang.get("W:LANG->COMMENT->DELETE")}).appendTo($body);let confirm=function(self){if(!_$.vars.$userLogged)return;let $post={commentId:Id}
  366. _$.fn.Err.Input.removeAll();_$.fn.Button.Disable(self);_$.fn.Window.Spinner.Create(self);socket.emit($socket.emit.deleteComment,$post,function($res){_$.fn.Window.Spinner.Destroy(self);let reset=function(){_$.fn.Button.Enable(self)}
  367. if(!$res||$res.error){if($res.error){for(let i=0;i<$res.error.name.length;i++){_$.fn.Err.Input.Show($res.error.object[i],Lang.get($res.error.name[i],$res.error.custom[i]))}}}
  368. else{_$.fn.Overlay.Remove("dlg_commentDelete");_$.fn.Notification.Push('ea10',Lang.get("N:LANG->COMMENT->DELETE->SUCCESS"))}
  369. setTimeout(reset,5000)})}
  370. let cancel=function(){_$.fn.Overlay.Remove("dlg_commentDelete")}
  371. let $ctrl=$$("<div>",{id:"ctrl"}).appendTo($body);$$("<div>",{class:"Button",id:"btn_confirm",text:"Confirm"}).data('task',confirm).appendTo($ctrl);$$("<div>",{class:"Button",id:"btn_cancel",text:"Cancel"}).data('task',cancel).appendTo($ctrl)}
  372. _$.fn.Overlay.Append(showModal,"dlg_commentDelete")}
  373. $$(document.body).on('click',".Widget.isComment .Button#Report",function(evt){if(!_$.vars.$userLogged)return;let $btn_Report=$$(evt.target);if($btn_Report.attr('id')!==$btn_Report.data('task'))return;let showModal=function($overlay){let $comment=$btn_Report.parents('li');let Id=$$($comment[0]).data('Id');let $modal=$$("<nav>",{class:"Modal",id:"Report"}).appendTo($overlay);let $title=$$("<div>",{class:"titleBar",text:Lang.get("TITLE:LANG->COMMENT->REPORT",_$.vars.tmp.$loadedComments[Id],Id.substring(1))}).appendTo($modal);let $body=$$("<ul>",{id:"Comments"}).appendTo($modal);$$("<li>",{id:"reportRecap"}).append($$("<label>",{class:'prefix',id:"reportRecap",text:"Text: "})).append($$("<label>",{class:'content',id:"reportRecap",html:$btn_Report.parent().prev().html()})).appendTo($body);let items=["Offensive Language","Inappropiate Language","Spamming","Advertising","Racism","Other"];_$.fn.Menu.Create($body,"chooseReason","Pick a reason: ",items)
  374. $$("<li>",{id:"reportDescription"}).append($$("<label>",{class:'prefix',id:"reportDescription",text:"Brief Description: "})).append($$("<textarea>")).appendTo($body);let confirm=function(self){if(!_$.vars.$userLogged)return;let $post={Section:Id,Reason:$$("nav.Modal#Report .dropdownMenu#chooseReason input").data('key'),Description:$$("nav.Modal#Report li#reportDescription textarea").val().trim()}
  375. _$.fn.Err.Input.removeAll();_$.fn.Button.Disable(self);_$.fn.Window.Spinner.Create(self);socket.emit($socket.emit.createReport.Comments,$post,function($res){_$.fn.Window.Spinner.Destroy(self);let reset=function(){_$.fn.Button.Enable(self)}
  376. if(!$res||$res.error){if($res.error){for(let i=0;i<$res.error.name.length;i++){_$.fn.Err.Input.Show($res.error.object[i],Lang.get($res.error.name[i],$res.error.custom[i]))}}}
  377. else{_$.fn.Overlay.Remove("Report");_$.fn.Notification.Push('ea10',Lang.get("N:LANG->COMMENT->REPORT->SUCCESS"))}
  378. setTimeout(reset,5000)})}
  379. let cancel=function(){_$.fn.Overlay.Remove("Report")}
  380. let $btns=$$("<li>",{id:"reportButton"}).appendTo($body);$$("<div>",{class:"Button",id:"btn_reportConfirm",text:"Confirm"}).data('task',confirm).appendTo($btns);$$("<div>",{class:"Button",id:"btn_reportCancel",text:"Cancel"}).data('task',cancel).appendTo($btns)}
  381. _$.fn.Overlay.Append(showModal,"Report")})
  382. $$(document.body).on('click',".Widget.isComment nav.isReply .postWrapper .Button#cancelReply",function(evt){let $cancelButton=$$(evt.target);let $postWrapper=$cancelButton.parent().parent();let $commentList=$$('.Widget.isComment ul.List#Comments');$postWrapper.stop().animate({height:0},{duration:400,easing:"easeOutExpo",progress:function(){_Mutation.anim($$(this).parents('ul.List#Comments'))},complete:function(){$postWrapper.remove()}})})
  383. function try_postReply($postButton){if(_$.fn.Button.isDisabled($postButton)){return}
  384. let $commentBody=$$('.Widget.isComment');_$.fn.Err.Input.removeAll();let $post={Section:$$($postButton.parents('li.Comment')[0]).data('Id'),Message:$commentBody.find("nav.isReply .postWrapper textarea#postReply").val().trim()}
  385. _$.fn.Button.Disable($postButton);_$.fn.Window.Spinner.Create($postButton);let reset=function($btn){_$.fn.Button.Enable($btn)}
  386. let uuid=$commentBody.setUUID(_$.fn.UUID.Generate());_$.fn.ajax({url:'/comments/postReply.jx',data:$post,done:function(result){if(!_$.fn.UUID.Compare($commentBody,uuid,!0))return;if(!result||result.error){setTimeout(reset,3000,$postButton);if(result.error){for(let i=0;i<result.error.name.length;i++){_$.fn.Err.Input.Show(result.error.object[i],Lang.get(result.error.name[i],result.error.custom[i]))}}}
  387. else{$commentBody.find('nav.isReply .postWrapper textarea#postReply').val("");_$.fn.Button.Enable($postButton)}},fail:function(){setTimeout(reset,3000,$postButton)},always:function(){_$.fn.Window.Spinner.Destroy($postButton)}})}
  388. const MAX_TIME_ALLOWED=3000;const MAX_TIME_ALLOWED_GUEST=7000;$$(document.body).on('focus',".Widget.isChat .Control textarea",function(){_$.fn.Widget.Chat.hideEmoticons()})
  389. $$(document.body).on('click',".Widget.isChat ul.List#emoticonList li.isEmoticon div.img",function(event){let $emoticon=$$(event.target);let $textarea=$$(".Widget.isChat .Control textarea");let Message=$textarea.val();let startPoint=$textarea[0].selectionStart;let emoticonKey=_String.desanitizeHTML($emoticon.data('key'));Message=_String.splice(Message,startPoint,0,emoticonKey+" ");$textarea.val(Message);$textarea[0].selectionStart=startPoint+emoticonKey.length+1})
  390. $$(document.body).on('click',".Widget.isChat .Control .Button#emoticonList",function(event){let $emoticonList=$$('ul.List#emoticonList');let $emoticonButton=$$(event.target);let $wrapper=$emoticonButton.parent();let Toggle=$emoticonList.data('Toggle')|!1;if(Toggle){$emoticonList.data('Toggle',!1);$emoticonList.stop().animate({opacity:0},function(){$emoticonList.remove()})}
  391. else{if($emoticonList){let $textarea=$$(".Widget.isChat .Control textarea");$emoticonList=$$("<ul>",{'class':"List",'id':"emoticonList"}).appendTo($wrapper);$emoticonList.position({of:$textarea,at:'center top-8',my:'center bottom',collision:'none'})
  392. let result;for(let key in _$.vars.Data.$Emoticons){result=$$("<li>",{class:"isEmoticon"}).appendTo($emoticonList).width(_$.vars.Data.$Emoticons[key].width);_$.fn.Tooltip.Add($$("<div>",{class:'img'}),_$.vars.Data.$Emoticons[key].name).data({key:key}).appendTo(result).css({background:'url("/styles/default/images/Emoticons/'+_$.vars.Data.$Emoticons[key].src+'") center center / contain no-repeat'})}}
  393. $emoticonList.data('Toggle',!0);$emoticonList.stop().animate({opacity:1})}})
  394. $$(document.body).on('click',".Widget.isChat .Control .Button#userList",function(event){let $userList=$$('div.List#userList');if($userList.isElementAnimated()){return}
  395. let Toggle=!!($userList.css("opacity"));if(Toggle){$userList.stop().animate({opacity:0},function(){$userList.remove()})
  396. func.Loading.finish('userList')}
  397. else{let $userListButton=$$(event.target);let $wrapper=$userListButton.parent();let $textarea=$$(".Widget.isChat .Control textarea");$userList=$$("<div>",{'class':"List",'id':"userList"}).appendTo($wrapper);$userList.scrollBar();$userList.position({of:$textarea,at:'center top-8',my:'center bottom',collision:'none'})
  398. $userList.stop().animate({opacity:1},showList);function showList(){let uuid=$userList.setUUID(_$.fn.UUID.Generate());func.Loading.start('userList',$userList,{},function(uuid){_$.fn.ajax({url:'/chat/listUsers.jx',done:function(data){if(!func.Loading.valid('userList',uuid))return;if(!data){return func.Loading.state('userList',"No active or online users found !",LOADING_ERROR)}
  399. func.Loading.finish('userList',function(){let $activeLabel=$$("<label>",{class:"List",id:"isActive",text:"Active Users"}).appendTo($userList);let $activeList=$$("<ul>",{class:"List",id:"isActive"}).appendTo($userList);let $onlineLabel=$$("<label>",{class:"List",id:"isOnline",text:"Idle Users"}).appendTo($userList);let $onlineList=$$("<ul>",{class:"List",id:"isOnline"}).appendTo($userList);function userSorting(a,b){if(a.Guest&&b.Guest){if(a.Guest.Id<b.Guest.Id){return-1}
  400. if(a.Guest.Id>b.Guest.Id){return 1}
  401. return 0}
  402. if(a.User&&b.User){if(a.User.Access.Level<b.User.Access.Level){return-1}
  403. if(a.User.Access.Level>b.User.Access.Level){return 1}
  404. if(a.User.Profile.Nickname<b.User.Profile.Nickname){return-1}
  405. if(a.User.Profile.Nickname>b.User.Profile.Nickname){return 1}
  406. return 0}
  407. if(a.User&&b.Guest){return-1}
  408. if(a.Guest&&b.User){return 1}
  409. return 0}
  410. data.sort(userSorting);let is_guest,$userRow;let active=0,idle=0;for(let i=0;i<data.length;i++){is_guest=!(data[i].User);$userRow=$$("<li>");if(!is_guest){if(data[i].User.Access.Special.chatMod){_$.fn.Tooltip.Add($$("<i>",{id:"chatMod"}).prependTo($userRow),Lang.get("LANG->TOOLTIP->CHAT->MODERATOR"))}
  411. if(data[i].User.Access.Level<=3){_$.fn.Tooltip.Add($$("<i>",{id:"chatAdmin"}).prependTo($userRow),Lang.get("LANG->TOOLTIP->CHAT->ADMIN"))}}
  412. _$.fn.Tooltip.Client($$("<a>",{id:"User"}),data[i]).appendTo($userRow);if(data[i].isActive){active++;$userRow.appendTo($activeList)}
  413. else{idle++;$userRow.appendTo($onlineList)}}
  414. $activeLabel.text("("+active+") "+$activeLabel.text());$onlineLabel.text("("+idle+") "+$onlineLabel.text());_$.fn.scrollBar.Update($userList)})}})})}}})
  415. function try_postChatMessage($postButton){if(_$.fn.Button.isDisabled($postButton)){return}
  416. if(!_$.vars.$userLogged){return _$.fn.Notification.Push('e914',Lang.get("LANG->USER->CHAT->NOT_LOGGED"))}
  417. _$.fn.Widget.Chat.hideEmoticons();_$.fn.Err.Input.removeAll();let $post={Message:$$(".Widget.isChat .Control textarea").val().trim()}
  418. let reset=function($btn){_$.fn.Button.Enable($btn)}
  419. _$.fn.Button.Disable($postButton);_$.fn.Window.Spinner.Create($postButton);_$.fn.ajax({url:'/chat/postMessage.jx',data:$post,done:function(result){if(!result||result.error){setTimeout(reset,3000,$postButton);if(result.error.name){for(let i=0;i<result.error.name.length;i++){_$.fn.Err.Input.Show(result.error.object[i],Lang.get(result.error.name[i],result.error.custom[i]))}}}
  420. else{if(result.ban){return func.Popup.Banned(result.ban)}
  421. $$(".Widget.isChat .Control textarea").val("");_$.fn.Button.Enable($postButton)}},fail:function(){setTimeout(reset,3000,$postButton)},always:function(){_$.fn.Window.Spinner.Destroy($postButton)}})}
  422. $$(document.body).on('click','nav.Widget.isChat ul.List#Messages i#chatEdit',function(evt){if(hasAccessAt("chat")){let msgId=$$(evt.target).parents('li#messageData').data('key');let userId=(_$.vars.tmp.$loadedChat[msgId].Guest)?-1:_$.vars.tmp.$loadedChat[msgId].User.Id
  423. let userStr=(_$.vars.tmp.$loadedChat[msgId].Guest)?("Guest "+_$.vars.tmp.$loadedChat[msgId].Guest.Id):_$.vars.tmp.$loadedChat[msgId].User.Profile.Nickname;let delMessage=function(){func.Popup.Create({id:"deleteChatMessage",modal:!0,title:"Stergere mesaj",content:"Esti de acord sa stergi mesajul acesta?",buttons:{close:!0,continue:{icon:'f058',text:"Acceptă",func:func.Popup.Destroy},}})}
  424. let editMessage=function(){func.Popup.Create({id:"editChatMessage",modal:!0,title:"Editare mesaj",content:"Esti de acord sa editezi mesajul acesta?",buttons:{close:!0,continue:{icon:'f058',text:"Acceptă",func:func.Popup.Destroy},}})}
  425. let buttons={delMessage:{icon:'f057',text:"Remove Message",func:delMessage},editMessage:{icon:'f044',text:"Edit Message",func:editMessage}}
  426. if(!isUserIdEq(userId)){let warn=function(){func.Popup.Create({id:"warnUser",modal:!0,title:"Avertizeaza utilizator",content:"Esti de acord sa avertizezi utilizatorul acesta?",buttons:{close:!0,continue:{icon:'f058',text:"Acceptă",func:func.Popup.Destroy},}})}
  427. let ban=function(){func.Popup.Create({id:"banUser",modal:!0,title:"Baneaza utilizator",content:"Esti de acord sa banezi utilizatorul acesta?",buttons:{close:!0,restrict:{icon:'f058',text:"Restrict",fuserRestricted},suspend:{icon:'f058',text:"Suspend",func:userBanned},ban:{icon:'f058',text:"Ban",func:userBanned},}})}
  428. buttons.warn={icon:'f071',text:"Warn "+userStr,func:warn};buttons.ban={icon:'f05e',text:"Ban "+userStr,func:ban}}
  429. func.Menu.Context.Create({id:"chatModeration",target:$$(evt.target),buttons:buttons})
  430. evt.stopPropagation()}})
  431. $$(document.body).on('click','.Window#UserAccountCP nav.Sidebar#Left .Button:not(".isActive")',function(event){if(_$.socketRequest){return}
  432. var $lastButton=$$('.Window#UserAccountCP nav.Sidebar#Left .Button.isActive')
  433. var $thisButton=$$(event.target);$lastButton.removeClass('isActive');$thisButton.addClass('isActive');_$.fn.User.CP.Panel($thisButton.attr('id'))})
  434. $$(document.body).on('click','li.hasMenu > .List li',function(event){var Item=$$(event.target).text();var $button=$$('.Button#chooseGender');$button.click();$button.find('span').text(Item);$$('.Window#UserAccountCP nav.Panel#UACP_PROFILE_INFO .Input#chooseGender input').val(Item)})
  435. $$(document.body).on('click','.Window#UserAccountCP nav.Panel#UACP_CHANGE_SIGNATURE li#UACP__Confirm .Button',function(event){if(_$.socketRequest){return}
  436. var $Confirm=$$(event.target);var $profileData={Signature:$$('.Input#UACP__Signature textarea').val().trim(),}
  437. _$.fn.Err.Input.removeAll();_$.fn.Button.Disable($Confirm);_$.fn.Window.Spinner.Create($Confirm);_$.socketRequest=!0;socket.emit('UACP->Signature->Update',$profileData,function(data){if(data.error){if(data.error.name){for(let i=0;i<data.error.name.length;i++){_$.fn.Err.Input.Show(data.error.object[i],data.error.name[i])}}
  438. setTimeout(function(){delete _$.socketRequest;_$.fn.Button.Enable($Confirm)},5000)}
  439. else if(data.success){delete _$.socketRequest;_$.fn.Notification.Push('e916',"Your User Account signature has been changed!");_$.vars.$userLogged.Signature=data.success.Signature;_$.fn.User.CP.Reload()}
  440. _$.fn.Window.Spinner.Destroy($Confirm)})});$$(document.body).on('click','.Window#UserAccountCP nav.Panel#UACP_CHANGE_AVATAR li#UACP__Confirm .Button',function(event){if(_$.socketRequest){return}
  441. if(!_$.vars.$userLogged){return _$.fn.Notification.Push('e914',"You have to be logged in to update your User Account Avatar.")}
  442. var $avatarData={imageSrc:undefined}
  443. if(_$.imageUploaded){$avatarData.imageSrc=_$.imageUploaded.File}
  444. _$.fn.Err.Input.removeAll();var $Confirm=$$(event.target);_$.fn.Button.Disable($Confirm);_$.fn.Window.Spinner.Create($Confirm);_$.socketRequest=!0;socket.emit($socket.emit.changeAvatar,$avatarData,function(data){_$.fn.Window.Spinner.Destroy($Confirm);var reset=function(){delete _$.socketRequest;_$.fn.Button.Enable($Confirm)}
  445. if(data.error){if(data.error.name){for(let i=0;i<data.error.name.length;i++){_$.fn.Err.Input.Show(data.error.object[i],data.error.name[i])}}}
  446. else{reset();_$.fn.Notification.Push('e916',"Your User Account Avatar has been successfully changed!");_$.vars.$userLogged.Profile.Avatar=data;_$.fn.User.updateAvatar();_$.fn.User.CP.Reload();return}
  447. setTimeout(reset,5000)})})
  448. $$(document.body).on('click','.Window#UserAccountCP nav.Panel#UACP_PROFILE_INFO li#UACP__Confirm .Button',function(event){if(_$.socketRequest){return}
  449. var $Confirm=$$(event.target);var $profileData={Password:$$('.Input#UACP__Password input').val().trim(),retypePassword:$$('.Input#UACP__retypePassword input').val().trim(),displayName:$$('.Input#UACP__displayName input').val().trim(),newPassword:$$('.Input#UACP__newPassword input').val().trim(),retypeNewPassword:$$('.Input#UACP__retypeNewPassword input').val().trim(),firstName:$$('.Input#UACP__firstName input').val().trim(),lastName:$$('.Input#UACP__lastName input').val().trim(),Gender:$$('.Input#chooseGender input').val().trim(),DateOfBirth:$$('.Input#UACP__DateOfBirth input').val().trim(),EMail:EMail=[],Skype:$$('.Input#UACP__Skype input').val().trim(),Facebook:$$('.Input#UACP__Facebook input').val().trim(),Twitter:$$('.Input#UACP__Twitter input').val().trim(),Instagram:$$('.Input#UACP__Instagram input').val().trim(),Twitch:$$('.Input#UACP__Twitch input').val().trim(),Steam:$$('.Input#UACP__Steam input').val().trim(),Battlenet:$$('.Input#UACP__Battlenet input').val().trim()}
  450. for(let i=0;i<$$('.Window#UserAccountCP nav.Panel#UACP_PROFILE_INFO .Input[id^="UACP__EMail-"]').length;i++){if(!$$('.Input#UACP__EMail-'+i+' input').val().trim().length){break}
  451. $profileData.EMail.push($$('.Input#UACP__EMail-'+i+' input').val().trim())}
  452. _$.fn.Err.Input.removeAll();_$.fn.Button.Disable($Confirm);_$.fn.Window.showLoader($Confirm);_$.socketRequest=!0;socket.emit('UACP->ProfileInfo->Update',$profileData,function(data){if(_$.fn.isDefined(data.error)){if(_$.fn.isDefined(data.error.name)){for(let i=0;i<data.error.name.length;i++){_$.fn.Err.Input.Show(data.error.object[i],data.error.name[i])}}
  453. setTimeout(function(){delete _$.socketRequest;_$.fn.Button.Enable($Confirm)},5000)}
  454. else if(_$.fn.isDefined(data.success)){delete _$.socketRequest;_$.fn.Notification.Push('e916',"Your profile has been updated successfully!");if(data.success.pwd&&_$.fn.isDefined(localStorage.getItem('Session-Auth'))){localStorage.setItem('Session-Auth',data.success)}
  455. _$.vars.$userLogged.displayName=data.success.displayName||_$.vars.$userLogged.displayName;_$.vars.$userLogged.profileInfo=data.success.profileInfo;_$.fn.User.updateDisplayName();_$.fn.User.CP.Reload()}
  456. _$.fn.Window.removeLoader($Confirm)})})
  457. $$(document.body).on('click','.Window#UserAccountCP nav.Panel#UACP_PROFILE_INFO li#UACP__EMailControl .Button',function(event){var $button=$$(event.target);switch($button.attr('id')){case "UACP__addEMail":var len=$$('.Window#UserAccountCP nav.Panel#UACP_PROFILE_INFO li[id^="UACP__EMail-"]').length;if(len==4){_$.fn.Notification.Push('e911',"You cannot add more E-Mail fields!");return}
  458. var $field=$$("<li>",{'class':"Input",'id':"UACP__EMail-"+len}).append($$("<label>",{text:"E-Mail: "})).append($$("<input>",{'type':"text"})).insertBefore($button.parent());$field.css({opacity:0}).animate({opacity:1});break;case "UACP__removeEMail":var len=$$('.Window#UserAccountCP nav.Panel#UACP_PROFILE_INFO li[id^="UACP__EMail-"]').length;if(len==1){_$.fn.Notification.Push('e911',"You cannot remove all your E-Mail fields!");return}
  459. var $fields=$$('.Window#UserAccountCP nav.Panel#UACP_PROFILE_INFO li[id^="UACP__EMail-"]');$fields[len-1].remove();break}})
  460. $$(document.body).on('click','nav.Middle .Window#userProfile ul.List#profileButtons .Button:not(.disabled)',function(event){var $buttonPressed=$$(event.target);var id=_$.vars.tmp.$loadedUser.id;if(!_$.vars.$userLogged){return}
  461. switch($buttonPressed.attr('id')){case "reportProfile":if(_$.vars.$userLogged.id==id||_$.vars.tmp.$loadedUser.id){return}
  462. var $dialogBtn={"Report":{id:"Report"},"Cancel":{id:"Cancel"}}
  463. _$.fn.Dialog.Show("Report "+_$.vars.tmp.$loadedUser.displayName,"e911",$dialogBtn,function($messageObj){$messageObj.replaceWith($messageObj=$$("<ul>",{'class':'Message','id':"reportProfile"}));$$("<li>",{text:"You are about to report the user `"+_$.vars.tmp.$loadedUser.displayName+"` ("+id+")"}).appendTo($messageObj);$$("<li>",{text:"Please select a reason and tell us more about it so we can solve it as soon as possible!"}).appendTo($messageObj);var $dialogItem=$$("<li>",{'class':"Input",'id':"chooseReason"}).appendTo($messageObj);$$("<label>",{text:"Reason: "}).appendTo($dialogItem);$$("<input>",{'type':"text",'disabled':"true"}).appendTo($dialogItem);$$("<div>",{'class':"Button",'id':"chooseReason"}).append($$("<label>",{text:'Pick a reason'})).append($$("<i>",{'class':"Icon",'id':"Arrow"})).appendTo($dialogItem);var $menuHandler=$$("<li>",{'class':"hasMenu"}).appendTo($messageObj);$menuHandler=$$("<ul>",{'class':"List scrollable",'id':"chooseReason",'data-scrollable-y':"192"}).appendTo($menuHandler);$$("<li>",{text:"Inappropiate Profile"}).appendTo($menuHandler);$$("<li>",{text:"Offensive Language"}).appendTo($menuHandler);$$("<li>",{text:"Spamming or Advertising"}).appendTo($menuHandler);$$("<li>",{text:"Racism"}).appendTo($menuHandler);$$("<li>",{text:"Custom"}).appendTo($menuHandler);$$("<li>",{'class':"Input",'id':"reportDescription"}).append($$("<label>",{text:"Description: "})).append($$("<textarea>")).appendTo($messageObj);$$("<li>",{text:"Warning: Be aware that the false reports will get you warned (or even banned)."}).appendTo($messageObj);$$("<li>",{text:"Please double-check and make sure you are reporting the right user with the right reason."}).appendTo($messageObj)});break}});function resetLoadVars(){_$.vars.tmp.$loadedNews={};delete _$.vars.tmp.$loadedUser;delete _$.vars.tmp.$loadedAnime}
  464. function headerDeselectMenuItem(){$$('ul.List#Header ul.List > li.isActive').removeClass('isActive')}
  465. function headerSelectMenuItem(key){$$('ul.List#Header ul.List > li > a#'+key).parent().addClass('isActive')}
  466. $$(document.body).on('click','ul.List#Header .List#animeDropdown > li > a.Button',function(evt){let $btnItem=$$(evt.target);if(_$.vars.tmp.$loadedAnime&&"a"+_$.vars.tmp.$loadedAnime.animeId==$btnItem.data('key')){return evt.preventDefault()}})
  467. $$(document.body).on('click','a.Tooltip#User',function(evt){let $btn=$$(evt.target);if($btn.data('tipTxt').substring(2)==_$.vars.tmp.$loadedUser.Id){return evt.preventDefault()}})
  468. $$(document.body).on('click','nav.Middle section.Anime ul.List#dataEpisode li.episodeControl .Button:not(".isActive")',function(evt){let $btnSource=$$(evt.target);if($btnSource.data('genuine')==$btnSource.attr('id')&&$btnSource.data('genuine')=="Refresh"){$$('nav.Middle section.Anime ul.List#dataEpisode li.episodeVideo').insertAfter($$('nav.Middle section.Anime ul.List#dataEpisode li.episodeControl'));return}
  469. let $lastSource=$$('nav.Middle section.Anime ul.List#dataEpisode li.episodeControl .Button.isActive');$lastSource.removeClass('isActive');$btnSource.addClass('isActive');let sourceId=$btnSource.data('src')||0;let episodeId=$$('nav.Middle section.Anime ul.List#dataEpisode #Episode').data('key');_$.fn.Anime.loadVideo(episodeId,sourceId)});$$(document.body).on('click','.Modal.AdminCP nav.Menu .Button:not(".isActive")',function(event){var $lastButton=$$('.Modal.AdminCP nav.Menu .Button.isActive')
  470. var $thisButton=$$(event.target);$lastButton.removeClass('isActive');$thisButton.addClass('isActive');_$.fn.Admin.CP.Panel($thisButton.attr('id'),!0)});$$(document.body).on('click','.Window#AdminCP nav.Panel#ACP_MODERATE_REPORTS ul.Button',function(event){var $reportPressed=$$(event.target);switch($reportPressed.attr('id')){case "reportRReport":return;case "reportOAnswer":return;case "reportAnswer":var reportId=$$('.Window#AdminCP nav.Panel#ACP_MODERATE_REPORTS ul.Button.isActive').data('id');var $dialogBtn={"Resolve":{id:"ACP_Report",tooltip:"LANG_TT_REPORT_RESOLVE"},"Cancel":{id:"ACP_Report",tooltip:"LANG_TT_REPORT_CANCEL"},"Discard":{id:"ACP_Report",tooltip:"LANG_TT_REPORT_DISCARD"},}
  471. _$.fn.Dialog.Show("Answering Report no: "+_$.fn.Report.$Data[reportId].reportId,"e911",$dialogBtn,function($messageObj){$messageObj.replaceWith($messageObj=$$("<ul>",{'class':'Message','id':"ACP_reportAnswer"}));$$("<li>",{'id':"reportShort",text:"Report "+_$.fn.Report.$Data[reportId].reportId+" - Assigned to "+_$.fn.Report.$Data[reportId].Name+" by "+_$.fn.Report.$Data[reportId].reporterName+" for reason: "+_$.fn.Report.$Data[reportId].Reason}).appendTo($messageObj);var datestr=new Date(_$.fn.Report.$Data[reportId].dateAdded);var timestr=$lang[$lang.set].LANG_DAYS[datestr.getDay()]+", "+datestr.getDate()+" "+$lang[$lang.set].LANG_MONTHS[datestr.getMonth()]+" "+datestr.getFullYear()+" at "+pad(datestr.getHours(),2)+":"+pad(datestr.getMinutes(),2);$$("<li>",{'id':"reportOpener",text:"This report has been opened by "+_$.fn.Report.$Data[reportId].reporterName+" on "+timestr}).appendTo($messageObj);$$("<li>",{'id':"reportDescription",text:_$.fn.Report.$Data[reportId].Description}).appendTo($messageObj);$$("<li>",{text:"Answer to this report (with a minimum of 128 characters):"}).appendTo($messageObj);$$("<li>",{'class':"Input",'id':"reportAnswer"}).append($$("<textarea>")).appendTo($messageObj)});return}
  472. var $reportActive=$$('.Window#AdminCP nav.Panel#ACP_MODERATE_REPORTS > ul > li > .Button.isActive');if($reportPressed.attr('id')!=$reportActive.attr('id')){$reportActive.removeClass('isActive');$reportActive.stop().css({height:"13px"})}
  473. if($reportPressed.hasClass('isActive')){$reportPressed.removeClass('isActive');$reportPressed.stop().animate({height:"13px"},400,"easeOutExpo")}
  474. else{$reportPressed.addClass('isActive');var height=$reportPressed.height(),autoHeight=$reportPressed.css({height:"auto"}).height();$reportPressed.height(height);$reportPressed.stop().animate({height:autoHeight},400,"easeOutExpo")}});$$(document.body).on('click','.Window#AdminCP nav.Panel .List#chooseAnime li',function(event){var $animeItem=$$(event.target);var $animeButton=$$('.Button#chooseAnime');var $chooseAnime=$$('.Window#AdminCP nav.Panel .Input#chooseAnime');$chooseAnime.next().nextAll().remove();var animeId=$animeItem.data('key');switch($animeItem.parents('nav.Panel').attr('id')){case "ACP_ANIME_EDIT":func.Loading.start("admin",{parent:".Window#AdminCP nav.Panel"},function(){socket.emit($socket.emit.countEpisodes,{animeId:animeId},function(data,fn){if(_$.fn.isDefined(data.error)){_$.fn.Notification.Push('e915',"Unknown error while counting anime episodes. Please contact the Server Administrator!");$$('.Window#Loading-admin .Icon#Loading .Status').text("Error while counting anime episodes...").css({color:"red"});return}
  475. if(_$.fn.isDefined(data.success)){func.Loading.finish("admin",function(){_$.fn.Admin.CP.editAnime(animeId,data.success)})}})})
  476. break;case "ACP_EPISODE_EDIT":func.Loading.start("admin",{parent:".Window#AdminCP nav.Panel"},function(){})
  477. break}
  478. $animeButton.click();$animeButton.find('span').text($animeItem.text());$chooseAnime.children('input').data('key',animeId)})
  479. $$(document.body).on('click','.Window#AdminCP nav.Panel .List#chooseEpisode li',function(event){var $episodeItem=$$(event.target);var $episodeButton=$$('.Button#chooseEpisode');var $chooseEpisode=$$('.Window#AdminCP nav.Panel .Input#chooseEpisode');$chooseEpisode.next().nextAll().remove();var episodeId=$episodeItem.data('key');func.Loading.start("admin",{parent:".Window#AdminCP nav.Panel"},function(){if(_$.fn.Admin.$Episodes[episodeId]){func.Loading.finish('admin',function(){_$.fn.Admin.CP.editEpisode("Data",episodeId)})}
  480. else{$$('.Window#Loading-admin .Icon#Loading .Status').text("Invalid episode");setTimeout(func.Loading.finish,400,"admin")}});$episodeButton.click();$episodeButton.find('span').text($episodeItem.text());$chooseEpisode.children('input').data('key',episodeId)});$$(document.body).on('click','.Window#AdminCP nav.Panel .Button[id^="delete"]',function(event){var $buttonObject=$$(event.target);if($buttonObject.hasClass('isActive')){$buttonObject.removeClass('isActive');return}
  481. $buttonObject.addClass('isActive')});$$(document.body).on('change','.Modal.AdminCP nav.Panel .Input#Image input',function(evt){$$(evt.target).data({changed:!0})})
  482. $$(document.body).on('focusout','.Modal.AdminCP nav.Panel .Input#Image input',function(evt){if($$(evt.target).data('changed')){let source=$$(evt.target).val();let preview=$$('.Modal.AdminCP nav.Panel ul.List#Preview #imagePreview');preview.empty();if(source){$$("<div>").css({background:'url("'+source+'")',backgroundSize:"cover",backgroundPosition:"center center"}).appendTo(preview)}
  483. $$(evt.target).data({changed:!1})}})
  484. $$(document.body).on('change','.Modal.AdminCP nav.Panel .Input#Video input',function(evt){$$(evt.target).data({changed:!0})})
  485. $$(document.body).on('focusout','.Modal.AdminCP nav.Panel .Input#Video input',function(evt){if($$(evt.target).data('changed')){let source=$$(evt.target).val();let preview=$$('.Modal.AdminCP nav.Panel ul.List#Preview #videoPreview');preview.empty();if(source){$$("<video>",{loop:!0,autoplay:!0}).append($$("<source>",{src:source})).appendTo(preview)}
  486. $$(evt.target).data({changed:!1})}})
  487. function insertEpisode($btnConfirm){let $panel=$btnConfirm.parents('nav.Panel');if($panel.attr('id')!==$panel.data('Id')||_$.fn.Button.isDisabled($btnConfirm)){return}
  488. _$.fn.Err.Input.removeAll();let $post={animeId:$$('nav.Panel#insertEpisode .dropdownMenu#chooseAnime input').data('key'),ro_Title:$$('nav.Panel#insertEpisode .Input#ro_Title input').val().trim(),en_Title:$$('nav.Panel#insertEpisode .Input#en_Title input').val().trim(),Episode:$$('nav.Panel#insertEpisode .Input#Episode input').val().trim(),Date:$$('nav.Panel#insertEpisode .Input#Date input').val().trim(),Translators:$$('nav.Panel#insertEpisode .Input#Translators input').val().trim(),Encoder:$$('nav.Panel#insertEpisode .Input#Encoder input').val().trim(),Verifiers:$$('nav.Panel#insertEpisode .Input#Verifiers input').val().trim(),Image:$$('nav.Panel#insertEpisode .Input#Image input').val().trim(),Video:$$('nav.Panel#insertEpisode .Input#Video input').val().trim(),Source1:$$('nav.Panel#insertEpisode .Input#Source-1 input').val().trim(),Source2:$$('nav.Panel#insertEpisode .Input#Source-2 input').val().trim(),Source3:$$('nav.Panel#insertEpisode .Input#Source-3 input').val().trim(),ro_Description:$$('nav.Panel#insertEpisode .Input#ro_Description textarea').val().trim(),en_Description:$$('nav.Panel#insertEpisode .Input#en_Description textarea').val().trim()}
  489. let regex=/(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})(?::(\d{2}))?/g
  490. if($post.Date.length){let splitSchedule=regex.exec($post.Date);if(!splitSchedule){_$.fn.Err.Input.Show('nav.Panel#insertEpisode .Input#Date input','Invalid formatting (e.g. 12/01/2018 01:23)')}
  491. if((splitSchedule[1]<1||splitSchedule[1]>31)||(splitSchedule[2]<1||splitSchedule[2]>12)||(splitSchedule[3]<2000||splitSchedule[3]>2020)){_$.fn.Err.Input.Show('nav.Panel#insertEpisode .Input#Date input','Invalid date inserted, please make sure the date is valid (dd/mm/yyyy)')}
  492. if((splitSchedule[4]<0||splitSchedule[4]>23)||(splitSchedule[5]<0||splitSchedule[5]>59)||(splitSchedule[6]&&(splitSchedule[6]<0||splitSchedule[6]>59))){_$.fn.Err.Input.Show('nav.Panel#insertEpisode .Input#Date input','Invalid time inserted, please make sure the time is valid (hh:mm[:ss])')}
  493. let finalSchedule=new Date();console.log(splitSchedule);finalSchedule.setFullYear(splitSchedule[3],splitSchedule[2]-1,splitSchedule[1]);finalSchedule.setHours(splitSchedule[4],splitSchedule[5],splitSchedule[6]||0);console.log(finalSchedule.getTime());$post.Date=finalSchedule.getTime()}
  494. _$.fn.Button.Disable($btnConfirm);_$.fn.Window.Spinner.Create($btnConfirm);let reset=function($btn){_$.fn.Button.Enable($btn)}
  495. let uuid=$btnConfirm.setUUID(_$.fn.UUID.Generate());_$.fn.ajax({url:'/anime/insertEpisode.jx',data:$post,done:function(result){if(!_$.fn.UUID.Compare($btnConfirm,uuid,!0))return;if(!result||result.error){setTimeout(reset,5000,$btnConfirm);if(result.error){for(let i=0;i<result.error.name.length;i++){_$.fn.Err.Input.Show(result.error.object[i],Lang.get(result.error.name[i],result.error.custom[i]))}}}
  496. else{_$.fn.Button.Enable($btnConfirm);_$.fn.Admin.CP.Reload();return}},fail:function(){setTimeout(reset,5000,$btnConfirm)},always:function(){_$.fn.Window.Spinner.Destroy($btnConfirm)}})}
  497. function insertAnime($btnConfirm){let $panel=$btnConfirm.parents('nav.Panel');if($panel.attr('id')!==$panel.data('Id')||_$.fn.Button.isDisabled($btnConfirm)){return}
  498. _$.fn.Err.Input.removeAll();let $post={originalTitle:$$('nav.Panel#insertAnime .Input#originalTitle input').val().trim(),englishTitle:$$('nav.Panel#insertAnime .Input#englishTitle input').val().trim(),Episodes:$$('nav.Panel#insertAnime .Input#Episodes input').val().trim(),Duration:$$('nav.Panel#insertAnime .Input#Duration input').val().trim(),Genre:$$('nav.Panel#insertAnime .Input#Genre input').val().trim(),Rating:$$('nav.Panel#insertAnime .Input#Rating input').val().trim(),releaseDate:$$('nav.Panel#insertAnime .Input#Date input').val().trim(),Coordinator:$$('nav.Panel#insertAnime .Input#Coordinator input').val().trim(),Translators:$$('nav.Panel#insertAnime .Input#Translators input').val().trim(),Encoders:$$('nav.Panel#insertAnime .Input#Encoders input').val().trim(),Verifiers:$$('nav.Panel#insertAnime .Input#Verifiers input').val().trim(),Image:$$('nav.Panel#insertAnime .Input#Image input').val().trim(),Video:$$('nav.Panel#insertAnime .Input#Video input').val().trim(),Tags:$$('nav.Panel#insertAnime .Input#Tags input').val().trim(),ro_Description:$$('nav.Panel#insertAnime .Input#ro_Description textarea').val().trim(),en_Description:$$('nav.Panel#insertAnime .Input#en_Description textarea').val().trim(),myAnimeList:$$('nav.Panel#insertAnime .Input#myAnimeList input').val().trim()}
  499. _$.fn.Button.Disable($btnConfirm);_$.fn.Window.Spinner.Create($btnConfirm);let reset=function($btn){_$.fn.Button.Enable($btn)}
  500. let uuid=$btnConfirm.setUUID(_$.fn.UUID.Generate());_$.fn.ajax({url:'/anime/insertAnime.jx',data:$post,done:function(result){if(!_$.fn.UUID.Compare($btnConfirm,uuid,!0))return;if(!result||result.error){setTimeout(reset,5000,$btnConfirm);if(result.error){for(let i=0;i<result.error.name.length;i++){_$.fn.Err.Input.Show(result.error.object[i],Lang.get(result.error.name[i],result.error.custom[i]))}}}
  501. else{_$.fn.Button.Enable($btnConfirm);_$.fn.Admin.CP.Reload();return}},fail:function(){setTimeout(reset,5000,$btnConfirm)},always:function(){_$.fn.Window.Spinner.Destroy($btnConfirm)}})}
  502. $$(document.body).on('click','.Window#AdminCP nav.Panelx .Button#submitDatax',function(event){var adminPanelId=$$(event.target).parents('nav.Panel').attr('id');var buttonId=$$(event.target).attr('id');let $postButton=$$(event.target);if(_$.socketRequest){return}
  503. $$('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData').removeClass('success');_$.fn.Err.Input.removeAll();var error;switch(buttonId){case 'submitData':switch(adminPanelId){case 'ACP_insertAnime':return;case 'ACP_ANIME_EDIT':if($$('.Window#AdminCP nav.Panel .Button[id^="delete"]').hasClass('isActive')){var $animeId=$$('.Input#chooseAnime input').data('key');_$.fn.Button.Disable('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData');_$.fn.Window.showLoader('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData');_$.socketRequest=!0;socket.emit($socket.emit.deleteAnime,{animeId:$animeId},function(data){if(data.error){if(data.error.name){for(let i=0;i<data.error.name.length;i++){_$.fn.Err.Input.Show(data.error.object[i],data.error.name[i])}}
  504. setTimeout(function(){delete _$.socketRequest;_$.fn.Button.Enable('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData')},5000)}
  505. else if(data.success){delete _$.socketRequest;_$.fn.Button.Enable('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData');_$.fn.Admin.CP.Panel("ACP_ANIME_EDIT")}
  506. _$.fn.Window.removeLoader('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData')});return}
  507. var $submitData={animeId:$$('.Input#chooseAnime input').data('key').trim(),Title:$$('.Input#animeTitle input').val().trim(),Season:+$$('.Input#animeSeason input').val(),Episodes:+$$('.Input#animeEpisodes input').val(),Duration:+$$('.Input#animeDuration input').val(),Genre:$$('.Input#animeGenre input').val().trim(),Rating:+$$('.Input#animeRating input').val(),releaseDate:$$('.Input#animeDate input').val().trim(),Coordinator:$$('.Input#animeCoordinator input').val().trim(),Translators:$$('.Input#animeTranslators input').val().trim(),Encoders:$$('.Input#animeEncoders input').val().trim(),Verifiers:$$('.Input#animeVerifiers input').val().trim(),Tags:$$('.Input#animeTags input').val().trim(),Description:$$('.Input#animeDescription textarea').val().trim(),myAnimeList:+$$('.Input#myAnimeList input').val(),imageSrc:(_$.fn.isDefined(_$.imageUploaded))?_$.imageUploaded.File:undefined}
  508. error=_$.fn.Input.Validate(adminPanelId,$submitData);if(!error){var releaseDate=$submitData.releaseDate.split('/');$submitData.releaseDate=pad(releaseDate[0],2)+'/'+pad(releaseDate[1],2)+'/'+releaseDate[2]}
  509. adminPanelId=$socket.emit.editAnime;break;case "ACP_EPISODE_NEW":var $submitData={animeId:$$('.Input#chooseAnime input').data('key').trim(),Title:$$('.Input#episodeTitle input').val().trim(),episodeNo:+$$('.Input#episodeNo input').val(),Schedule:$$('.Input#episodeSchedule input').val().trim(),Translators:$$('.Input#episodeTranslators input').val().trim(),Encoder:$$('.Input#episodeEncoder input').val().trim(),Verifiers:$$('.Input#episodeVerifiers input').val().trim(),Description:$$('.Input#episodeDescription textarea').val().trim(),Source:[$$('.Input#episodeSource-1 input').val().trim(),$$('.Input#episodeSource-2 input').val().trim(),$$('.Input#episodeSource-3 input').val().trim()],imageSrc:undefined}
  510. error=_$.fn.Input.Validate(adminPanelId,$submitData);if(_$.fn.isDefined(_$.imageUploaded)){$submitData.imageSrc=_$.imageUploaded.File;if(_$.imageUploaded.Name!==$submitData.Title){error=_$.fn.Err.Input.Show('.Input#episodeImage','LANG_IMAGE_REUPLOAD')}}
  511. else{error=_$.fn.Err.Input.Show('.Window#AdminCP nav.Panel .Input[id*="Image"]','LANG_IMAGE_EMPTY')}
  512. adminPanelId=$socket.emit.insertEpisode;break;case "ACP_EPISODE_EDIT":if($$('.Window#AdminCP nav.Panel .Button[id^="delete"]').hasClass('isActive')){var $delData={animeId:$$('.Input#chooseAnime input').data('key'),episodeId:$$('.Input#chooseEpisode input').data('key')}
  513. _$.fn.Button.Disable('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData');_$.fn.Window.showLoader('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData');_$.socketRequest=!0;socket.emit($socket.emit.deleteEpisode,$delData,function(data){if(data.error){if(data.error.name){for(let i=0;i<data.error.name.length;i++){_$.fn.Err.Input.Show(data.error.object[i],data.error.name[i])}}
  514. setTimeout(function(){delete _$.socketRequest;_$.fn.Button.Enable('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData')},5000)}
  515. else if(data.success){delete _$.socketRequest;_$.fn.Button.Enable('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData');_$.fn.Admin.CP.Panel("ACP_EPISODE_EDIT")}
  516. _$.fn.Window.removeLoader('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData')});return}
  517. var $submitData={animeId:$$('.Input#chooseAnime input').data('key').trim(),episodeId:$$('.Input#chooseEpisode input').data('key').trim(),Title:$$('.Input#episodeTitle input').val().trim(),episodeNo:+$$('.Input#episodeNo input').val(),Schedule:$$('.Input#episodeSchedule input').val().trim(),Translators:$$('.Input#episodeTranslators input').val().trim(),Encoder:$$('.Input#episodeEncoder input').val().trim(),Verifiers:$$('.Input#episodeVerifiers input').val().trim(),Description:$$('.Input#episodeDescription textarea').val().trim(),Source:[$$('.Input#episodeSource-1 input').val().trim(),$$('.Input#episodeSource-2 input').val().trim(),$$('.Input#episodeSource-3 input').val().trim()],imageSrc:(_$.fn.isDefined(_$.imageUploaded))?_$.imageUploaded.File:undefined}
  518. error=_$.fn.Input.Validate(adminPanelId,$submitData);adminPanelId=$socket.emit.editEpisode;break}
  519. if(!error){_$.fn.Button.Disable('.Window#AdminCP nav.Panel li[class*="Submit"] .Button#submitData');_$.fn.Window.Spinner.Create($postButton);_$.socketRequest=!0;socket.emit(adminPanelId,$post,function($res){_$.fn.Window.Spinner.Destroy($postButton);let reset=function(){delete _$.socketRequest;_$.fn.Button.Enable($postButton)}
  520. if(!$res||$res.error){if($res.error){for(let i=0;i<$res.error.name.length;i++){_$.fn.Err.Input.Show($res.error.object[i],$res.error.name[i])}}}
  521. else{_$.fn.Button.Enable($postButton);_$.fn.Admin.CP.Reload();return reset()}
  522. setTimeout(reset,5000)})}
  523. break}})
  524. function isOdd(num){return num%2}
  525. function clampMin(num,min){return(num<min?min:num)}
  526. function clampMax(num,max){return(num>max?max:num)}
  527. function clamp(num,min,max){return clampMax(clampMin(num,min),max)}
  528. function getRandomInt(min,max){return Math.round(Math.random()*(max-min))+min}
  529. function toFixed(value,precision){precision=precision||0;let power=Math.pow(10,precision),absValue=Math.abs(Math.round(value*power)),result=(value<0?'-':'')+String(Math.floor(absValue/power));if(precision>0){let fraction=String(absValue%power),padding=new Array(Math.max(precision-fraction.length,0)+1).join('0');result+='.'+padding+fraction}
  530. return result}
  531. function startApp(){let finish=function(){func.Loading.finish("main",function(){$navBody.show().animate({opacity:1});func.Path.parse();let $messageList=$$("nav.Widget.isChat ul.List#Messages");$messageList.scrollBar({update:function($self){if(_$.fn.scrollBar.getPositionPct($self,'y')>=.8&&!$self.hasClass('is-scrolling'))_$.fn.scrollBar.startScrolling($self,"down","end")}})
  532. if(_$.vars.$userLogged&&_$.vars.$userLogged.Bans&&(_$.vars.$userLogged.Bans.suspend.length)){func.Popup.Banned(_$.vars.$userLogged.Bans);tryLogout()}})}
  533. let start=function(){_$.fn.Preload();$navBody.hide();func.Init.lang(function(){func.Init.interface(function(){func.Init.session(function(){func.Init.emoticons(function(){func.Init.anime(function(){func.Init.chat(finish)})})})})})}
  534. func.Loading.start("main",_,{position:"fixed",text:"Throwing Shurikens"},start)}
  535. startApp()})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement