// ==UserScript==
// @name Fast-Codeforces
// @namespace xcxxcx
// @version 0.2.2
// @match *://codeforces.com/*
// @match *://codeforc.es/*
// @match *://codeforces.ml/*
// @description 使您更方便地使用Codeforces
// @require https://code.jquery.com/jquery-3.4.1.min.js
// @author xcxxcx
// @downloadURL none
// ==/UserScript==
var $=unsafeWindow.jQuery,math=unsafeWindow.MathJax;
var Name="fast-codeforces-",JPar=JSON.parse,JStr=JSON.stringify;
var tcount=[],tsum=0;
function gets(dir){
if((Name+dir) in localStorage ===false||localStorage[Name+dir]==="undefined")return void 0;
return JPar(localStorage[Name+dir]);
}
function puts(dir,val){
if(val!==void 0)localStorage[Name+dir]=JStr(val);
else localStorage[Name+dir]="undefined";
}
var user=$(".lang-chooser>div:eq(1)>a:eq(0)").html(),user_csrf=$("[name=X-Csrf-Token]").attr("content");
function Ajax(url,async=false){
var tmp=++tsum;
$.ajax({
async:async,method:"GET",url:url,data:{},success:function(e){tcount[tmp]=e;},
error:function(e){tcount[tmp]="Err";}
});
return tmp;
}
function show_pre(){$("#pageContent,#pre-bar").show();}
function hide_pre(){$("#pageContent,#pre-bar").hide();}
function show_sub(){$("#fc-submit").show();$("#fc-menu-submit").css("background-color","#AAAAAA");}
function hide_sub(){$("#fc-submit").hide();$("#fc-menu-submit").css("background-color","white");}
function getsub(){
var sub=gets("submit");
if(sub!==void 0){$("#fc-submit-form").html(sub);return;}
sub=$(Ajax("/problemset/submit")).find(".submit-form");
sub.find(".aceEditorTd").html(``);
$("#fc-submit-form").html(sub.html());puts("submit",sub.html());
}
function init_sub(){
$("#pageContent").after($(`
`));
getsub();
}
var prolist=[],focpro,promap={};
function showpro(ID){$("#fc-problem-menu-"+ID).addClass("focpro");$("#fc-problem-"+ID+",#fc-bar-problem-"+ID).show();}
function hidepro(ID){$("#fc-problem-menu-"+ID).removeClass("focpro");$("#fc-problem-"+ID+",#fc-bar-problem-"+ID).hide();}
function show_pro(){$("#fc-problem,#fc-bar-problem").show();$("#fc-menu-problem").css("background-color","#AAAAAA");}
function hide_pro(){$("#fc-problem,#fc-bar-problem").hide();$("#fc-menu-problem").css("background-color","white");}
function addpro(x,y){
var tmp=Ajax("/problemset/problem/"+x+"/"+y,true),load=$(`
`),loadstr="";
x+=y;promap[x]=1;$("#fc-problem-menu").append(load);
var t=setInterval(function(){
loadstr=loadstr.length===2?"":loadstr+".";load.find("a").html("Loading "+x+loadstr);
if(tcount[tmp]===void 0)return;
load.remove();
if(tcount[tmp]==="Err"){delete promap[x];alert("添加题目"+x+"失败");}
var pro=$(tcount[tmp]);pro=[pro.find(`.problem-statement`),pro.find(`#sidebar`)];
clearInterval(t);tcount[tmp]=void 0;promap[x]=0;
$("#fc-problem-menu-add").before(`