2022-07-16 21:00:02 +00:00
// TODO: Refactor this ugly shit who wrote this lmao
2022-08-24 14:30:30 +00:00
function vote ( type , id , dir ) {
2022-07-16 21:00:02 +00:00
const upvotes = document . getElementsByClassName ( type + '-' + id + '-up' ) ;
const downvotes = document . getElementsByClassName ( type + '-' + id + '-down' ) ;
const scoretexts = document . getElementsByClassName ( type + '-score-' + id ) ;
for ( let i = 0 ; i < upvotes . length ; i ++ ) {
2022-09-04 23:15:37 +00:00
2022-07-16 21:00:02 +00:00
const upvote = upvotes [ i ]
const downvote = downvotes [ i ]
const scoretext = scoretexts [ i ]
const score = Number ( scoretext . textContent ) ;
if ( dir == "1" ) {
if ( upvote . classList . contains ( 'active' ) ) {
upvote . classList . remove ( 'active' )
upvote . classList . remove ( 'active-anim' )
scoretext . textContent = score - 1
votedirection = "0"
} else if ( downvote . classList . contains ( 'active' ) ) {
upvote . classList . add ( 'active' )
upvote . classList . add ( 'active-anim' )
downvote . classList . remove ( 'active' )
downvote . classList . remove ( 'active-anim' )
scoretext . textContent = score + 2
votedirection = "1"
} else {
upvote . classList . add ( 'active' )
upvote . classList . add ( 'active-anim' )
scoretext . textContent = score + 1
votedirection = "1"
}
if ( upvote . classList . contains ( 'active' ) ) {
scoretext . classList . add ( 'score-up' )
scoretext . classList . add ( 'score-up-anim' )
scoretext . classList . remove ( 'score-down' )
scoretext . classList . remove ( 'score' )
} else if ( downvote . classList . contains ( 'active' ) ) {
scoretext . classList . add ( 'score-down' )
scoretext . classList . remove ( 'score-up' )
scoretext . classList . remove ( 'score-up-anim' ) ;
scoretext . classList . remove ( 'score' )
} else {
scoretext . classList . add ( 'score' )
scoretext . classList . remove ( 'score-up' )
scoretext . classList . remove ( 'score-up-anim' ) ;
scoretext . classList . remove ( 'score-down' )
}
}
else {
if ( downvote . classList . contains ( 'active' ) ) {
downvote . classList . remove ( 'active' )
downvote . classList . remove ( 'active-anim' )
scoretext . textContent = score + 1
votedirection = "0"
} else if ( upvote . classList . contains ( 'active' ) ) {
downvote . classList . add ( 'active' )
downvote . classList . add ( 'active-anim' )
upvote . classList . remove ( 'active' )
upvote . classList . remove ( 'active-anim' )
scoretext . textContent = score - 2
votedirection = "-1"
} else {
downvote . classList . add ( 'active' )
downvote . classList . add ( 'active-anim' )
scoretext . textContent = score - 1
votedirection = "-1"
}
if ( upvote . classList . contains ( 'active' ) ) {
scoretext . classList . add ( 'score-up' )
scoretext . classList . add ( 'score-up-anim' )
scoretext . classList . remove ( 'score-down' )
scoretext . classList . remove ( 'score' )
} else if ( downvote . classList . contains ( 'active' ) ) {
scoretext . classList . add ( 'score-down' )
scoretext . classList . remove ( 'score-up-anim' )
scoretext . classList . remove ( 'score-up' )
scoretext . classList . remove ( 'score' )
} else {
scoretext . classList . add ( 'score' )
scoretext . classList . remove ( 'score-up' )
scoretext . classList . remove ( 'score-down' )
scoretext . classList . remove ( 'score-up-anim' )
}
}
}
2023-01-01 11:36:20 +00:00
2022-10-14 11:31:02 +00:00
const xhr = createXhrWithFormKey ( "/vote/" + type . replace ( '-mobile' , '' ) + "/" + id + "/" + votedirection ) ;
2022-10-14 12:01:11 +00:00
xhr [ 0 ] . send ( xhr [ 1 ] ) ;
2022-07-16 21:00:02 +00:00
}
2023-02-27 17:49:30 +00:00
let global _price ;
2022-12-30 15:16:49 +00:00
function pick ( kind , price , coins , marseybux ) {
2023-02-27 17:49:30 +00:00
global _price = price ;
2023-01-01 02:34:12 +00:00
price = parseInt ( price )
2023-01-01 02:35:08 +00:00
coins = parseInt ( coins )
marseybux = parseInt ( marseybux )
2023-01-01 02:32:37 +00:00
2023-04-24 15:08:40 +00:00
const buy = document . getElementById ( 'buy' )
if ( kind == "grass" && coins < price )
buy . disabled = true ;
else if ( kind == "benefactor" && marseybux < price )
buy . disabled = true ;
else if ( coins + marseybux < price )
buy . disabled = true ;
2022-08-06 02:03:10 +00:00
else
2023-04-24 15:08:40 +00:00
buy . disabled = false ;
2022-08-06 02:03:10 +00:00
2022-07-16 21:00:02 +00:00
let ownednum = Number ( document . getElementById ( ` ${ kind } -owned ` ) . textContent ) ;
document . getElementById ( 'giveaward' ) . disabled = ( ownednum == 0 ) ;
document . getElementById ( 'kind' ) . value = kind ;
2022-10-16 22:14:50 +00:00
if ( document . getElementsByClassName ( 'picked' ) . length > 0 ) {
document . getElementsByClassName ( 'picked' ) [ 0 ] . classList . toggle ( 'picked' ) ;
}
2022-07-16 21:00:02 +00:00
document . getElementById ( kind ) . classList . toggle ( 'picked' )
2023-03-19 17:13:45 +00:00
if ( kind == "agendaposter" ) {
document . getElementById ( 'phrase_section' ) . classList . remove ( "d-none" )
2023-03-21 15:27:46 +00:00
document . getElementById ( 'note_section' ) . classList . add ( "d-none" )
2023-03-19 17:13:45 +00:00
}
else {
document . getElementById ( 'phrase_section' ) . classList . add ( "d-none" )
2023-03-21 15:27:46 +00:00
document . getElementById ( 'note_section' ) . classList . remove ( "d-none" )
2023-03-19 17:13:45 +00:00
}
2022-07-16 21:00:02 +00:00
if ( kind == "flairlock" ) {
document . getElementById ( 'notelabel' ) . innerHTML = "New flair:" ;
document . getElementById ( 'note' ) . placeholder = "Insert new flair here, or leave empty to add 1 day to the duration of the current flair. 100 characters max." ;
document . getElementById ( 'note' ) . maxLength = 100 ;
}
2023-05-13 04:53:14 +00:00
else if ( kind == "namelock" ) {
document . getElementById ( 'notelabel' ) . innerHTML = "New username:" ;
document . getElementById ( 'note' ) . placeholder = "Insert new username here, or leave empty to add 1 day to the duration of the current username. 25 characters max." ;
document . getElementById ( 'note' ) . maxLength = 25 ;
}
2022-07-16 21:00:02 +00:00
else {
document . getElementById ( 'notelabel' ) . innerHTML = "Note (optional):" ;
document . getElementById ( 'note' ) . placeholder = "Note to include in award notification" ;
document . getElementById ( 'note' ) . maxLength = 200 ;
}
2023-03-21 18:49:27 +00:00
document . getElementById ( 'award_price_block' ) . classList . remove ( 'd-none' ) ;
document . getElementById ( 'award_price' ) . textContent = price ;
2022-07-16 21:00:02 +00:00
}
2023-04-24 15:08:40 +00:00
function buy ( ) {
2022-07-16 21:00:02 +00:00
const kind = document . getElementById ( 'kind' ) . value ;
url = ` /buy/ ${ kind } `
2022-10-14 11:31:02 +00:00
const xhr = createXhrWithFormKey ( url ) ;
2023-03-10 03:21:02 +00:00
xhr [ 0 ] . onload = function ( ) {
2022-07-16 21:00:02 +00:00
let data
2022-10-14 12:01:11 +00:00
try { data = JSON . parse ( xhr [ 0 ] . response ) }
2023-03-12 09:54:14 +00:00
catch ( e ) { console . error ( e ) }
2022-10-16 22:22:00 +00:00
success = xhr [ 0 ] . status >= 200 && xhr [ 0 ] . status < 300 ;
2022-10-14 10:47:08 +00:00
showToast ( success , getMessageFromJsonData ( success , data ) , true ) ;
if ( success ) {
2022-12-19 16:32:13 +00:00
if ( kind != "lootbox" )
{
document . getElementById ( 'giveaward' ) . disabled = false ;
let owned = document . getElementById ( ` ${ kind } -owned ` )
let ownednum = Number ( owned . textContent ) + 1 ;
2023-01-01 11:36:20 +00:00
owned . textContent = ownednum
2022-12-19 16:32:13 +00:00
}
2022-07-16 21:00:02 +00:00
}
} ;
2022-10-14 12:01:11 +00:00
xhr [ 0 ] . send ( xhr [ 1 ] ) ;
2022-07-16 21:00:02 +00:00
}
2022-10-07 03:25:34 +00:00
function giveaward ( t ) {
2022-10-19 17:54:18 +00:00
const kind = document . getElementById ( 'kind' ) . value ;
2023-03-19 17:13:45 +00:00
2023-03-21 15:27:46 +00:00
const note _id = ( kind == "agendaposter" ? "agendaposter_phrase" : "note" )
2023-03-19 17:13:45 +00:00
2022-11-03 19:08:22 +00:00
postToast ( t , t . dataset . action ,
2023-03-21 15:27:46 +00:00
{
"kind" : kind ,
"note" : document . getElementById ( note _id ) . value
} ,
2022-11-03 19:07:08 +00:00
( ) => {
let owned = document . getElementById ( ` ${ kind } -owned ` )
let ownednum = Number ( owned . textContent ) - 1 ;
owned . textContent = ownednum
if ( ownednum == 0 )
document . getElementById ( 'giveaward' ) . disabled = true ;
2023-01-01 11:36:20 +00:00
}
2022-10-07 03:25:34 +00:00
) ;
}
2022-12-30 12:14:18 +00:00
2023-02-25 19:40:15 +00:00
const awardtabs = document . getElementsByClassName ( 'award-tab' ) ;
const awardsections = document . getElementsByClassName ( 'award-section' ) ;
function switchAwardTab ( ) {
for ( const element of awardtabs )
element . classList . toggle ( 'active' )
for ( const element of awardsections )
element . classList . toggle ( 'd-none' )
}