// ==UserScript==
// @name atcoder-traffic
// @namespace https://greatest.deepsurf.us/users/201019
// @description beta.atcoder.jpとatcoder.jpのコンテストサイトを行き来する etc.
// @version 3.1
// @author euglenese
// @match https://atcoder.jp/contests/*
// @match https://*.contest.atcoder.jp/*
// ==/UserScript==
var joi_pdf_number = [
[20, 21, 23, 24],
[20, 21, 22, 24],
[20, 21, 22, 23],
[20, 21, 22, 23]
];
function location_match(regex){
return location.href.match(new RegExp(regex));
}
function erase(text, regex){
return text.replace(new RegExp(regex), "");
}
var contest_name, position_name, linked;
function position_name_change(before, after){
if(position_name == before){
position_name = after;
}
}
var beta_contest_URL = "https\:\/\/atcoder\.jp\/contests\/";
var https = "https\:\/\/";
var contest_URL = "\.contest\.atcoder\.jp\/";
var any_string = "[0-9a-z-_#]+";
var any_string2 = "[0-9a-z-_#]*";
var any_slash = "[0-9a-z-_#/]+";
var any_char = "[0-9a-z-_#]";
var any_digit = "[0-9]";
if(location_match(beta_contest_URL)){
if(location_match(beta_contest_URL + any_string + "\/" + any_slash)){
contest_name = erase(location.href, beta_contest_URL).split("/")[0];
position_name = erase(location.href, beta_contest_URL + contest_name + "/");
position_name_change("tasks", "assignments");
position_name_change("submissions", "submissions/all");
linked = "https://" + contest_name + ".contest.atcoder.jp/" + position_name;
}else{
contest_name = erase(location.href, beta_contest_URL).split("/")[0];
linked = "https://" + contest_name + ".contest.atcoder.jp/";
}
$(".contest-title").attr("href", linked);
}else{
if(location_match(https + any_string + contest_URL + any_slash)){
contest_name = erase(erase(location.href, https), contest_URL + any_slash);
position_name = erase(location.href, https + contest_name + contest_URL);
position_name_change("submissions/all", "submissions");
linked = "https://atcoder.jp/contests/" + contest_name + "/" + position_name;;
}else{
contest_name = erase(erase(location.href, https), contest_URL);
linked = "https://atcoder.jp/contests/" + contest_name;
}
$(".brand").removeAttr("href");
$(".contest-name").replaceWith(function() {
$(this).replaceWith("<span class='contest-name'><a href='" + linked + "'>" + $(this).text() + "</a></span>");
});
$(".contest-name a").css("color", "white");
$(".contest-name a").css("text-decoration", "none");
for(var i in [0, 1]){
$("time").eq(i).replaceWith(function() {
var url = "https://www.timeanddate.com/worldclock/fixedtime.html?iso=" + $(this).text().substr(0, 4) + $(this).text().substr(5, 2) + $(this).text().substr(8, 2) + "T" + $(this).text().substr(11, 2) + $(this).text().substr(14, 2) + "&p1=248";
$(this).replaceWith("<time class='timezone-fixed'><a href='" + url + "'>" + $(this).text() + "</a></time>");
});
$("time a").eq(i).css("color", "#ccc");
$("time a").css("text-decoration", "none");
}
}
var joi_years = "(2007|2008|2009|2010|2011|2012)";
if(location_match(beta_contest_URL + "joisc" + joi_years + "\/tasks\/joisc" + joi_years + "_") || location_match(https + "joisc" + joi_years + contest_URL + "tasks\/joisc" + joi_years + "_")){
var this_year;
if(location_match(beta_contest_URL + "joisc" + joi_years + "\/tasks\/joisc" + joi_years + "_")){
this_year = erase(erase(location.href, beta_contest_URL + "joisc"), "\/tasks\/joisc" + joi_years + "_" + any_string);
}else{
this_year = erase(erase(location.href, https + "joisc"), contest_URL + "tasks\/joisc" + joi_years + "_" + any_string);
}
this_year = parseInt(this_year);
for(var i = 0; i < 4; i++){
var url;
if(this_year == 2008 || this_year == 2009){
url = "https://www.ioi-jp.org/camp/" + this_year + "/" + this_year + "-sp-tasks/" + this_year + "-sp_tr-day" + (i + 1) + "_" + joi_pdf_number[this_year - 2007][i] + ".pdf";
}else if(this_year <= 2010){
url = "https://www.ioi-jp.org/camp/" + this_year + "/" + this_year + "-sp-tasks/" + this_year + "-sp-day" + (i + 1) + "_" + joi_pdf_number[this_year - 2007][i] + ".pdf";
}else{
url = "https://www.ioi-jp.org/camp/" + this_year + "/" + this_year + "-sp-tasks/" + this_year + "-sp-day" + (i + 1) + ".pdf";
}
$("#task-statement").append("<a href='" + url + "'>PDFリンク (Day " + (i + 1) + ")</a><br>");
}
}