Chimera Jira

Add features to Jira pages

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name        Chimera Jira
// @author      John Colosi
// @namespace   http://johncolosi.com
// @include     https://jira.vrsn.com/*
// @require     https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @require     https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.13/clipboard.min.js
// @version     2023.2.6
// @description Add features to Jira pages
// @change      Adding a feature to replace long numeric Jira IDs with common first names
// ==/UserScript==


// Constants
var MillisPerSecond = 1000;
var MillisPerMinute = 60 * MillisPerSecond;
var MillisPerHour = 60 * MillisPerMinute;
var MillisPerHalfHour = 30 * MillisPerMinute;
var Clocks = ["=----", "-=---", "--=--", "---=-", "----=","---=-", "--=--", "-=---"];


// Variables
var jxInterval;
var jxRunning = false;
var jxLastClickTime = null;
var jxThisClickTime = null;
var jxBankedTime = null;
var jxTargetTime = null;
var clipboard = new Clipboard('.jxBtnCopy');
var isKanban = false;


// Replace long numeric Jira IDs
var jiraNames = [ "Kayson", "Nicholas", "Jonah", "Aranza", "Mikaela", "Armani", "Averie", "Luciana", "Kaleb", "Jayson", "Baylor", "Cayden", "Anahi", "Myla", "Louise", "Casen", "Yareli", "Athena", "Celeste", "Giselle", "Rhett", "Carolyn", "Austyn", "Angel", "Kyleigh", "Coleman", "Quinn", "Valentino", "Alan", "Ophelia", "Ainsley", "Selah", "Abdullah", "Maximilian", "Titus", "Amaris", "Arjun", "Wesley", "Cheyenne", "Skye", "Xavier", "Evelyn", "Gabrielle", "Anson", "Anthony", "Briana", "Bridget", "Juliette", "Remington", "Clyde", "Patricia", "Peyton", "Briley", "Jaelynn", "Victoria", "Emiliano", "Aminah", "Emmy", "Jorge", "Alyson", "Janessa", "Summer", "Kyler", "Cedric", "Ashlynn", "Nyla", "Dexter", "Kobe", "Sasha", "Paisley", "Everlee", "Vicente", "Axl", "Colin", "Evelynn", "Patience", "Jayceon", "Elizabeth", "Frank", "Rory", "Lena", "Kaison", "Ashton", "Simone", "Azaria", "Thatcher", "Scarlett", "Marjorie", "Amia", "Gloria", "Nadia", "Hunter", "Camila", "Annalee", "Will", "Azariah", "Kyrie", "Antonia", "Kannon", "Ashley", "Kaya", "Mayson", "Dahlia", "Clay", "Miley", "Harper", "Aliza", "Ariella", "Renee", "Kathleen", "Devon", "Brentley", "Emilio", "Derrick", "Chance", "Jade", "Kaylynn", "Lilian", "Madilyn", "Aislinn", "Berkley", "Joaquin", "Ryker", "Alaia", "Maisie", "Carla", "Kylan", "Ciara", "Amelia", "Princeton", "Manuel", "Robin", "Moises", "Lilianna", "Rodrigo", "Madilynn", "Angelina", "Khalil", "Oscar", "Aubree", "Emerie", "Malaysia", "Kayleigh", "Tiana", "Anika", "Felix", "Parker", "Julio", "Sky", "Lexi", "Sharon", "Curtis", "Hana", "Kolten", "King", "Dorothy", "Brinley", "Felicity", "Aileen", "Joe", "Harleigh", "Braelyn", "Madisyn", "Adelaide", "Emmalee", "Mckinley", "Marshall", "Aryan", "Westin", "Dani", "Harmony", "Abdiel", "Regan", "Jamie", "Jaxen", "Emery", "Ruby", "Alexis", "Perla", "Fletcher", "Blaine", "Emmitt", "Kaliyah", "Alyvia", "Sam", "Karlee", "Wendy", "Charlie", "Jewel", "Ray", "Noah", "Kiara", "Annabelle", "Mckenzie", "Jazlyn", "Janiya", "Edwin", "Sidney", "Bruce", "Kevin", "Naomi", "Dax", "Lea", "Phoenix", "Eden", "Finley", "Aidan", "Virginia", "Dallas", "Heath", "Amaya", "Austin", "Giancarlo", "Kassidy", "Zariyah", "Alexandria", "Noemi", "Tate", "Aldo", "Brayan", "Kailani", "Holland", "Tanner", "Crew", "Wren", "Emilia", "Devin", "Hallie", "Arian", "Terrence", "Immanuel", "Giovanni", "Alisa", "Aiden", "Blaise", "Jacob", "Billy", "Natalie", "Zackary", "Nikolas", "Lucian", "Emmie", "Jenna", "Ezequiel", "Royce", "Penelope", "Emersyn", "Alyssa", "Reyna", "Reese", "Jessie", "Tristen", "Marilyn", "Bryce", "Grace", "Melany", "Blakely", "Daisy", "Scarlette", "Aliah", "Dulce", "Estella", "Nehemiah", "Gracelynn", "Liana", "Lilyana", "Yosef", "Raylan", "Leona", "Noel", "Ronan", "Jerome", "Zion", "Jaylene", "Averi", "Catalina", "Jazmine", "Beckett", "Matilda", "Hadlee", "Emerson", "Ace", "Ingrid", "Piper", "Kristina", "Laura", "Ramon", "Maliyah", "Daniela", "Zoe", "Javion", "Kayden", "Jayde", "Luz", "Zoie", "Mustafa", "Kyle", "Yasmin", "Elisha", "Allie", "Charlee", "Elise", "Zaylee", "Kali", "Anderson", "Kiley", "Kalani", "Cody", "Georgia", "Jakob", "Brian", "Megan", "Bayleigh", "Eli", "Mila", "Arya", "Leland", "Willie", "Adeline", "Archer", "Luke", "America", "Joey", "Brandon", "Jesse", "Erika", "Katelynn", "Paris", "Macey", "Kate", "Corinne", "Irene", "Logan", "Luis", "Gabriella", "Hugh", "Liberty", "Monserrat", "Eve", "Hannah", "Sarai", "Brenna", "Aylin", "Nathanael", "Marley", "Marianna", "Bianca", "Sawyer", "Rebekah", "Corey", "Damari", "Arabella", "August", "Amiya", "Clare", "Micah", "Jayda", "Evan", "Joanna", "Gwen", "Saige", "Titan", "Zion", "Evalynn", "Veda", "Omar", "Julian", "Allen", "Myra", "Kira", "Kara", "Tinsley", "Skylar", "Tommy", "Kaelyn", "Kylee", "Fabian", "Bella", "Carl", "Jamari", "Eddie", "Joel", "Samuel", "Zane", "Grayson", "Alaina", "Zelda", "Roy", "Jonathan", "Natalia", "Angie", "Alissa", "John", "Holly", "Genevieve", "Beckham", "Preston", "Ellis", "Galilea", "Bennett", "Delilah", "Lillianna", "Madeline", "Hattie", "Iris", "Adrienne", "Vihaan", "Albert", "Paityn", "Crystal", "Josephine", "Cory", "Andi", "Rory", "Zoey", "Avianna", "Winston", "Kingston", "Violet", "Kameron", "Emerson", "Dominik", "Amya", "Regina", "Javon", "Angelique", "Grady", "Yamileth", "Hadley", "Alessandra", "Teagan", "Astrid", "Wilson", "Laylah", "Dorian", "Veronica", "Nathaniel", "Briggs", "Sutton", "Karen", "Makenzie", "Lara", "Donald", "Roselyn", "Sloane", "Ulises", "Andrea", "Cade", "Elijah", "Hendrix", "Andy", "Pierce", "Quincy", "Rivka", "Isabella", "Giovanna", "Kole", "Rylan", "Serena", "Danielle", "Mckayla", "Gianna", "Sonia", "Kash", "Gunner", "Rhys", "Jeremy", "Braylen", "Amy", "Collins", "Cora", "Andre", "Peyton", "Jasmine", "Leila", "Jedidiah", "Clark", "Jesus", "Anna", "Emilee", "Xander", "Kalel", "Hassan", "Lochlan", "Harry", "Jude", "Eden", "Nikolai", "Lawrence", "Arden", "Elisabeth", "Zavier", "Thomas", "Milan", "Samir", "Elliott", "Amare", "Amirah", "Lylah", "Giovani", "James", "Vivaan", "Liv", "Declan", "Makayla", "Avery", "Gideon", "Kristen", "Atlas", "Meredith", "Tenley", "Leonardo", "Farrah", "Braeden", "Alvin", "Rodney", "Blair", "Raiden", "Milana", "Nataly", "Rachel", "Brantlee", "Alejandro", "Aubriella", "India", "Dennis", "Braylee", "Kaden", "Landyn", "Kendrick", "Roger", "Zechariah", "Max", "Itzel", "Kristian", "Sergio", "Alayah", "Destiny", "Arielle", "Tony", "Miranda", "Demetrius", "Enoch", "Henrik", "Maleah", "Castiel", "Maddie", "Danny", "Cara", "Eduardo", "Ricardo", "Millie", "Reuben", "Mitchell", "Nayeli", "Amayah", "Jennifer", "Kai", "Alfonso", "Elyse", "Mary", "Emanuel", "Presley", "Misael", "Joy", "Amani", "Jaden", "Iliana", "Jolene", "Mercy", "Whitney", "Trinity", "Ivory", "Ameer", "Knox", "Meilani", "Malaya", "Case", "Paisleigh", "Jocelyn", "Addisyn", "Maxton", "Ronald", "River", "Dominic", "Issac", "Lane", "Joslyn", "Mylah", "Alice", "Deacon", "Brooke", "Bentlee", "Natasha", "Dominick", "Dustin", "Parker", "Cassius", "Axel", "Conner", "Kora", "Blaze", "Katelyn", "Kenya", "Robyn", "Myles", "Orion", "Cristian", "Darian", "Angeline", "Charlize", "Lincoln", "Gavin", "Eloise", "Marissa", "Adalynn", "Raymond", "Luka", "Reid", "Matteo", "Tatiana", "Marina", "Karina", "Terry", "Lydia", "Dean", "Rylie", "Francesca", "Estelle", "Olivia", "Reese", "Harlan", "Kendall", "Bobby", "Siena", "Brooklynn", "Douglas", "Alana", "Cali", "Morgan", "Annabella", "Julie", "Addyson", "Linda", "Fernanda", "Anabella", "Sydney", "Adelyn", "Kaylie", "Ayla", "Easton", "Lennon", "Gerardo", "Ariadne", "Aviana", "Mohammad", "Angela", "Mario", "Amalia", "Alexis", "Larry", "Christine", "Jayden", "Brett", "Christina", "Jaylynn", "Lorelai", "Layla", "Bryleigh", "Gauge", "Hope", "Jack", "Sophia", "Lyric", "Adriel", "Kaiden", "Remi", "Adilynn", "Zaiden", "Enrique", "Milo", "Kamden", "Kelly", "Kamdyn", "Ivan", "Noelle", "Fatima", "Nico", "Abril", "Jose", "Reina", "Brody", "Noe", "Elliott", "Mattie", "Daxton", "Graysen", "Alisha", "Leah", "Rowan", "Cooper", "Lance", "Willow", "Cataleya", "Isabela", "August", "Kadence", "Aiyana", "Mohamed", "Zachariah", "Nova", "Jaylah", "Madeleine", "Harley", "Rylee", "Hunter", "Joseph", "Harrison", "Marie", "Alianna", "Alonso", "Kolby", "Aurelia", "Aarav", "Braxton", "Lennox", "Channing", "Payton", "Boston", "Paige", "Nelson", "Rosemary", "Kellen", "Alexzander", "Miles", "Jaxson", "Michelle", "Cole", "Lauryn", "Adelina", "Kaydence", "Finnley", "Giuliana", "Harlow", "Maximiliano", "Warren", "Augustus", "Louisa", "Owen", "Adrien", "Cameron", "Evangeline", "Darren", "Kody", "Moshe", "Julieta", "Kaia", "Ismael", "Peter", "Chloe", "Audrina", "Tegan", "Eileen", "Alberto", "Rebecca", "Livia", "Tristan", "Maximus", "Ryan", "Kailey", "Kenna", "Mae", "Zuri", "Charlotte", "Lailah", "Annabel", "Alina", "Emmet", "Gregory", "Eliza", "Colton", "Ann", "Bonnie", "Olive", "Mariana", "Benjamin", "Sarah", "Ezra", "Trent", "Monroe", "Giana", "Jon", "Alaysia", "Esther", "Riley", "Sonny", "Prince", "Nathalia", "Braiden", "Giavanna", "Layton", "Camilla", "Jonathon", "Chana", "Elsie", "Kassandra", "Jenny", "Elliot", "Danica", "Leonidas", "Juliet", "Casey", "Jace", "Araceli", "Elina", "Markus", "Nylah", "Bode", "Armani", "Kelvin", "Kyla", "Nathaly", "Nixon", "Conor", "Maya", "Mekhi", "Montserrat", "Ryder", "Mira", "Amber", "Madelyn", "Sara", "Briar", "Logan", "Jamal", "Kasey", "Vivienne", "Libby", "Otto", "Leo", "Baylee", "Ella", "Alayna", "Saul", "Rowan", "Jaycee", "Hadassah", "Kason", "Samson", "Scarlet", "Raphael", "Brynn", "Courtney", "Jessica", "Jasmin", "Shiloh", "Izaiah", "Alec", "Lyric", "Ariah", "Bowen", "Quinton", "Kayla", "Paulina", "Kayden", "Fisher", "Autumn", "Jazmin", "Walter", "Jayden", "Stefan", "Rhea", "Lilly", "Anais", "Ayleen", "Elaina", "Elliana", "Raul", "Mina", "Dillon", "Mavis", "Alicia", "Jocelynn", "Cash", "Ellis", "Lexie", "Pedro", "Liliana", "Otis", "Allison", "Aliyah", "Bailee", "Jacoby", "Jaida", "Kade", "Troy", "Lindsey", "Aisha", "Terrance", "Lizbeth", "Keegan", "Ariyah", "Halle", "Cristiano", "Danna", "Gemma", "Greyson", "Dalia", "Alonzo", "Zaria", "Avalyn", "Gianni", "Roland", "Karson", "Beatrice", "Uriah", "Juliana", "Kieran", "Forrest", "Jordyn", "Jett", "Mariam", "Tucker", "Kathryn", "Ramona", "Natalee", "Seth", "Braden", "Armando", "Jordan", "April", "Royal", "Stephen", "Erica", "Camron", "Santiago", "Heidi", "Cason", "Jordy", "Eric", "Brock", "Kensington", "Caroline", "Ariya", "Waylon", "Lee", "Byron", "Dallas", "Jaelyn", "Hailee", "Nevaeh", "Carson", "Zahra", "Ronin", "Rayna", "Gia", "Raelynn", "Kaelynn", "Michael", "Milena", "Henley", "Landon", "Bryan", "Franco", "Jonas", "Sloan", "Kasen", "Maggie", "Tiffany", "Mauricio", "Abby", "Zendaya", "Ava", "Kaylin", "Crosby", "Vance", "Gustavo", "Robert", "Stetson", "Kolton", "Hayley", "Spencer", "Cannon", "Aaliyah", "Haylee", "Anaya", "Axton", "Salvador", "Aydin", "David", "Emmalyn", "George", "Raven", "Ty", "Gwendolyn", "Emelia", "Marlee", "Skyla", "Romina", "Rosa", "Adrian", "Journey", "Avery", "Houston", "Emmaline", "Rose", "Moses", "Julissa", "Odin", "Jax", "Aryana", "Eleanor", "Enzo", "Khloe", "Hudson", "Carlee", "Juniper", "Urijah", "Tinley", "Tripp", "Jagger", "Aimee", "Frankie", "Elias", "Taylor", "Callan", "Renata", "Breanna", "Evie", "Amari", "Camden", "Edith", "Maxwell", "Charlie", "Jillian", "Sebastian", "Nathan", "Dakota", "Aden", "Corbin", "Kareem", "Ayden", "Kamryn", "Johanna", "Ember", "Alani", "Noa", "Brooks", "Judith", "Maia", "Priscilla", "Gracelyn", "Temperance", "Cynthia", "Amara", "Melvin", "Jemma", "Brittany", "Emery", "Brennan", "Harley", "Graham", "Nina", "Fernando", "Leslie", "Rex", "Melina", "Mark", "Vincent", "Kailee", "Apollo", "Freya", "Yaritza", "Dane", "Paula", "Gabriel", "Azalea", "Madalyn", "Johnathan", "Arlo", "Dwayne", "Aniya", "Aubrey", "Roman", "Ethan", "Abigail", "Ayva", "Kendall", "Carlos", "Aadhya", "Vaughn", "Ari", "Brooklyn", "Joziah", "Kallie", "Aaden", "Kase", "Maison", "Ryann", "Maverick", "Carmelo", "Jordan", "Josue", "Clarissa", "Faye", "Damien", "Sean", "Sage", "Brianna", "Estrella", "Kynlee", "Chaya", "Raylee", "Trace", "Anabelle", "Nora", "Mathias", "Frances", "Micheal", "Tatum", "Zachary", "Katherine", "Tamia", "Aspen", "Chris", "Marc", "Brenda", "Dante", "Duke", "Randy", "Simon", "Denise", "Moriah", "Kimber", "Julianne", "Benson", "Princess", "Daniella", "Salma", "Hezekiah", "Felipe", "Gerald", "Isaias", "Sabrina", "Jayleen", "Julia", "Amiyah", "Kailyn", "Hector", "Aleena", "Stevie", "Alannah", "Shayla", "Jimmy", "Bryson", "Skylar", "Ford", "Arturo", "Muhammad", "Lewis", "Hadleigh", "Clayton", "Alanna", "Akira", "Rosie", "Lacey", "Davis", "Coen", "Claire", "Carly", "Remy", "Matias", "Leyla", "Shannon", "Legend", "Kiana", "Terrell", "Kaleigh", "Cecilia", "Emmanuel", "Christopher", "Joyce", "Allyson", "Marley", "Cayson", "Amos", "Thea", "Jimena", "Elena", "Sofia", "Ellie", "Orlando", "Zaire", "Martin", "Aubrie", "Yaretzi", "Lucas", "Caitlyn", "Maximo", "Memphis", "Ernesto", "Frida", "Saylor", "Dylan", "Carter", "Lily", "Jared", "Nash", "Draven", "Esme", "Adan", "Adley", "Wyatt", "Sincere", "Lillie", "Nia", "Harold", "Ibrahim", "Isaiah", "Sylas", "Izabella", "Franklin", "Rowen", "Azariah", "Raquel", "Isabelle", "Dariel", "Cameron", "Kellan", "Zander", "Helen", "Raegan", "Tatum", "Melissa", "Tyler", "Ian", "Imani", "Caiden", "Tori", "London", "Alondra", "Colette", "Antonella", "Keith", "Payton", "Frederick", "Darwin", "Caden", "Reece", "Ali", "Junior", "Lucille", "Poppy", "Belen", "Kaylee", "Mathew", "Levi", "Lauren", "Barrett", "Lila", "Ellen", "Zaniyah", "Holden", "Kori", "Maryam", "Norah", "Finley", "Phoebe", "Esmeralda", "Marcel", "Bria", "Yousef", "Milania", "Cruz", "Elisa", "William", "Harlee", "Kenny", "Garrett", "Maxim", "Patrick", "Cambria", "Arianna", "Elianna", "Alison", "Maria", "Braydon", "Roberto", "Killian", "Caitlin", "Vada", "Kinslee", "Jacqueline", "Kaitlynn", "Gwyneth", "Abraham", "Camryn", "Omari", "Charleston", "Brayden", "Ahmed", "Kennedy", "Raina", "Taya", "Donovan", "Marcus", "Audrey", "Lamar", "Leia", "Sawyer", "Rayan", "Brady", "Spencer", "Cyrus", "Elsa", "Derek", "Viviana", "Annie", "Ariel", "Johan", "Alivia", "Kamari", "Mallory", "Collin", "Briella", "Promise", "Lorenzo", "Analia", "Isabel", "Avalynn", "Darius", "Royal", "Aliya", "Conrad", "Myah", "Alisson", "Ayana", "Aitana", "June", "Evalyn", "Kinsley", "Luna", "Rafael", "Chanel", "Antonio", "Lilith", "Jake", "Ben", "Korbin", "Aurora", "Aubrianna", "Aya", "Shiloh", "Willa", "Cohen", "Amanda", "Margot", "Bo", "Katie", "Blake", "Charles", "Paloma", "Eugene", "Nickolas", "Julien", "Neymar", "Emily", "Braelynn", "Helena", "Ivanna", "Hailey", "Langston", "Kyndall", "Jaime", "Hayden", "Ellison", "Diana", "Rey", "Jasiah", "Amina", "Victor", "Jermaine", "Reed", "Eliana", "Ahmad", "Kinley", "Davian", "Rene", "Adele", "Colt", "Carlie", "Kingsley", "Dana", "Maeve", "Michaela", "Sierra", "Addalyn", "Jefferson", "Rayne", "Cecelia", "Sariah", "Bronson", "Pearl", "Ariana", "Colby", "Paul", "Adaline", "Ezekiel", "Lilia", "Brylee", "Fiona", "Yusuf", "Lilyanna", "Toby", "Karter", "Kaysen", "Landry", "Ares", "Iker", "Journee", "Meghan", "Carolina", "Mya", "Nancy", "Maci", "Mara", "Janiyah", "Jamie", "Heavenly", "Josiah", "Kyra", "Canaan", "Jameson", "Chad", "Camille", "Zara", "Savanna", "Keaton", "Magnus", "Gannon", "Aniyah", "Adelynn", "Coraline", "Kennedi", "Everleigh", "Blake", "Henry", "Nola", "Quinn", "Molly", "Brynlee", "Ashlyn", "Uriel", "Malachi", "Ally", "Daniel", "Desiree", "Keagan", "Nicole", "Emory", "Gage", "Daphne", "Abram", "Brielle", "Damon", "Kenzie", "Mabel", "Thalia", "Gordon", "Brecken", "Aleah", "Jase", "Nolan", "Asia", "Londyn", "Marisol", "Clementine", "Neriah", "Joshua", "Ryleigh", "Melody", "Soren", "Ivy", "Luciano", "Shane", "Amelie", "Morgan", "Chelsea", "Cherish", "Steven", "Tyson", "Alden", "London", "Emmett", "Marcos", "Paxton", "Brantley", "Richard", "Abel", "Harper", "Mason", "Lucia", "Kensley", "Pyper", "Diamond", "Julius", "Charleigh", "Chase", "Cullen", "Drake", "Dalary", "Hayes", "Ireland", "Samiyah", "Joelle", "Penny", "Kaitlyn", "Andrew", "Angelo", "Melanie", "Sarahi", "Cassandra", "Raelyn", "Everett", "Devyn", "Anastasia", "Lawson", "Abbigail", "Kai", "Marleigh", "Francis", "Dalton", "Amira", "Callie", "Dixie", "Elaine", "Judson", "Macy", "Josie", "Aubri", "Rosalie", "Scott", "Wayne", "Adonis", "Daleyza", "Anya", "Kaiya", "Aubrielle", "Bodhi", "Remington", "Rayden", "Casey", "Taliyah", "Isaac", "Dash", "Chaim", "Neil", "Duncan", "Laney", "Thiago", "Major", "Louis", "Kaidence", "Rylan", "Haven", "Caleb", "Oliver", "Lola", "Grant", "Taryn", "Maurice", "Alexander", "Jaxon", "Tabitha", "Genesis", "Philip", "Kane", "Skyler", "Tessa", "Keyla", "Maddox", "Sage", "Saniyah", "Elian", "Karlie", "Theodore", "Alexia", "Addilynn", "Colten", "Laila", "Kylie", "Xzavier", "Maliah", "Alena", "Mackenzie", "Zayden", "Flynn", "Theo", "Romeo", "Branson", "Catherine", "Cain", "Kimberly", "Ana", "Trenton", "Angel", "Adalyn", "Elora", "Wade", "Alijah", "Noor", "Danika", "Selena", "Ximena", "Anne", "Lachlan", "Jaiden", "Esperanza", "Zariah", "Kamila", "Jamir", "Sullivan", "Nathalie", "Keira", "Carmen", "Beau", "Miah", "Valeria", "Lukas", "Delaney", "Phoenix", "Finnegan", "Reagan", "Amari", "Janelle", "Alexandra", "Jolie", "Timothy", "Magnolia", "Sophie", "Porter", "Ellery", "Talon", "Hugo", "Jadiel", "Mateo", "Alfredo", "Celine", "Aaron", "Jairo", "Brycen", "Diego", "Luca", "Malik", "Taylor", "Jerry", "Mollie", "Landen", "Lilah", "Gael", "Wynter", "Emmeline", "Phillip", "Bentley", "Zayn", "Kyree", "Treasure", "Stephanie", "Lennon", "Adam", "Ryland", "Ryan", "Riley", "Van", "Kendra", "Brendan", "Hamza", "Callum", "Cesar", "Jaliyah", "Asher", "Mack", "Skyler", "Zeke", "Talia", "Landry", "Zainab", "Tobias", "Shaun", "Lainey", "Hank", "Gary", "Etta", "Kohen", "Jaylee", "Alejandra", "Carina", "Ayaan", "Allan", "Marlon", "Madyson", "Celia", "Susan", "Matthias", "Madison", "Kenia", "Amora", "Johnny", "Connor", "Reginald", "Malcolm", "Deandre", "Ronnie", "Joselyn", "Jackson", "Emely", "Bailey", "Marco", "Sienna", "Milan", "Kamryn", "Aron", "Jayce", "Micah", "Jaylen", "Lisa", "Diya", "Faith", "Janae", "Isla", "Paislee", "Ricky", "Bristol", "Serenity", "Miya", "Calvin", "Erik", "Karter", "Dimitri", "Dayton", "Kaylani", "Thaddeus", "Travis", "Greta", "Edison", "Juan", "Alex", "Edward", "Chandler", "Belle", "Cadence", "Sylvia", "Reyansh", "Ayanna", "Lucca", "Atticus", "Jeffrey", "Meadow", "Kian", "Bruno", "Martha", "Vienna", "Vincenzo", "Santino", "Messiah", "Caylee", "Bradley", "Weston", "Leighton", "Zain", "Jason", "Avah", "Walker", "Jalen", "Laurel", "Mia", "Marcelo", "Jordynn", "Shelby", "Dakota", "Jessa", "Rudy", "Emmalynn", "Jane", "Cassidy", "Drew", "Augustine", "Santana", "Erin", "Jamison", "Jensen", "Elle", "Leilani", "Aria", "Cordelia", "Cindy", "Khaleesi", "Aliana", "Heather", "Abrielle", "Arthur", "Matthew", "Chandler", "Justin", "Adriana", "Sterling", "Katalina", "Shawn", "Addison", "Tomas", "Lyla", "Sariyah", "Damian", "Callen", "Kimora", "Kenley", "Adrianna", "Tara", "Russell", "Annalise", "Teresa", "Barbara", "Dilan", "Brice", "Demi", "Samara", "Vivian", "Charley", "Zayne", "Anniston", "Jaylin", "Oakley", "Bryant", "Lorelei", "Amir", "Layne", "Konnor", "Arely", "Ada", "Kyson", "Heaven", "Elliot", "Judah", "Finn", "Leanna", "Deborah", "Andres", "Kenneth", "Bethany", "Braylon", "Dayana", "Alaya", "Carter", "Everly", "Claudia", "Samantha", "Trevor", "Lilliana", "Mariyah", "Macie", "Miriam", "Ruben", "Griffin", "Malakai", "Niko", "Justus", "Jayla", "Naya", "Leonel", "Jazlynn", "Javier", "Yahir", "Justice", "Jasper", "Erick", "Savannah", "Haley", "River", "Harvey", "Quentin", "Sadie", "Lana", "Hanna", "Ruth", "Lucy", "Silas", "Lindsay", "Audriana", "Malia", "Benton", "Justice", "Trey", "Mikayla", "Kelsey", "Milani", "Liam", "Ellianna", "Bryanna", "Karsyn", "Jaxton", "Madalynn", "Nala", "Aryanna", "Brent", "Aanya", "Hayden", "Vivien", "Lionel", "Stella", "Nicolas", "Lia", "Valerie", "Dawson", "Madelynn", "Guillermo", "Israel", "Denver", "Madden", "Kristopher", "Jeffery", "Gabriela", "Eva", "Jana", "Mariah", "Francisco", "Kairi", "Leonard", "Christian", "Lina", "Jeremiah", "Gracie", "Vera", "Miller", "Emma", "Jay", "Vanessa", "Solomon", "Mohammed", "Hazel", "Julianna", "Addilyn", "Asa", "Edgar", "Miguel", "Rohan", "Sandra", "Emory", "Maddison", "Camdyn", "Karla", "Paola", "Desmond", "Ariel", "Makai", "Ari", "Brodie", "Alma", "Davion", "Winter", "Dylan", "Lillian", "Brenden", "Annika", "Alia", "Alessandro", "Elin", "Rocco", "Miracle", "Kiera", "Charli", "Guadalupe", "Oakley", "Leon", "Valentina", "Lennox", "Leighton", "Lyra", "Esteban", "Clara", "Pablo", "Alexa", "Leandro", "Zaid", "Rogelio", "Ansley", "Remy", "Angelica", "Marvin", "Mckenna", "Margaret", "Makenna", "Anders", "Emilie", "Monica", "Jada", "Londynn", "Gunnar", "Harmoni", "Nasir", "Stanley" ];
var jiraNamesCount = jiraNames.length;


// Avoid conflicts
this.$ = this.jQuery = jQuery.noConflict(true);


// Initialize on "load"
$(document).ready(function() {

    $('body').prepend("<div id='jxTimer' class='jxBtnOff jxBtnCopy'><span id='jxTimerText'>Start</span></div>");
    document.getElementById("jxTimer").addEventListener (
        "click", timer_click, false
    );

    $('body').prepend("<div id='jxClock'><span id='jxClockText'></span></div>");
    clock_init();

    // Replace Jira IDs, but wait a bit so they're loaded
    setTimeout(replaceJiraIdWithNumber, 500);
    //setTimeout(replaceJiraIdWithName, 500);

});


/**
 * Replace 5-digit Jira Identifiers with 3 digits
 */
function replaceJiraIdWithNumber() {
    $("div.ghx-key:not('.jxJiraNameSkip')").each(function() {
        $(this).addClass('jxJiraNameSkip');
        if ($(this).length<1) return;
        var child = $(this).children('.js-key-link').first();
        if (child.length<1) return;
        var key = child.attr('title');
        if (key.length<1) return;

        var list = key.split("-",2);
        var project = list[0];
        var id = list[1];
        var shortId = pad3(Number(id)%1000);

        var spanTop = $('<span/>');
        spanTop.addClass('ghx-issue-key-link');

        var spanName = $('<span/>');
        spanName.addClass('js-key-link');
        spanName.addClass('jxJiraName');
        spanName.text(project+"-"+shortId);
        spanTop.append(spanName);

        child.empty();
        child.append(spanTop);
    });
    setTimeout(replaceJiraIdWithNumber, 1000);
}


/**
 * Replace 5-digit Jira Identifiers with a human-readable name
 */
function replaceJiraIdWithName() {
    $("div.ghx-key:not('.jxJiraNameSkip')").each(function() {
        $(this).addClass('jxJiraNameSkip');
        if ($(this).length<1) return;
        var child = $(this).children('.js-key-link').first();
        if (child.length<1) return;
        var key = child.attr('title');
        if (key.length<1) return;

        var list = key.split("-",2);
        var project = list[0];
        var id = list[1];
        var name = jiraNames[parseInt(id) % jiraNamesCount];

        var spanTop = $('<span/>');
        spanTop.addClass('ghx-issue-key-link');

        var spanName = $('<span/>');
        spanName.addClass('js-key-link');
        spanName.addClass('jxJiraName');
        spanName.text(name);
        spanTop.append(spanName);

        var spanKey = $('<span/>');
        spanKey.addClass('js-key-link');
        spanKey.text(key);
        spanTop.append(spanKey);

        child.empty();
        child.append(spanTop);
    });
    setTimeout(replaceJiraIDs, 1000);
}


/**
 * Clock features - show a count-down clock counting to the half-hour
 */
function clock_init() {
    setInterval(clock_show, 1000);
    var now = new Date().getTime();
    var over = now % MillisPerHalfHour;
    var start = now - over;
    jxTargetTime = start + MillisPerHalfHour;
    var delay = 0 - Math.trunc(over / 1000);
    $('#jxClock').css('animation-delay',delay+'s');
    clock_show();
}

function clock_show() {
    var text;
    var time = new Date().getTime();
    var secondsLeft = Math.trunc((jxTargetTime - time)/1000);
    if (secondsLeft < 0) text = "End";
    else {
        var minutes = Math.trunc(secondsLeft / 60);
        var seconds = pad(secondsLeft % 60);
        text = minutes+":"+seconds;
    }
    $('#jxClockText').text(text);
}


/**
 * Timer features - keep a count-up timer to capture how long the actual scrum takes, click to click
 */
function timer_click() {
    jxThisClickTime = new Date().getTime();

    // RESET
    if (jxThisClickTime-jxLastClickTime < 250) {
        jxBankedTime=0;
        timer_clear();
        $('#jxTimerText').text('Start');
    }

    // START
    else if (!jxRunning) {
        jxInterval = setInterval(timer_spin, 83);
        $('#jxTimer').addClass('jxBtnOn');
        $('#jxTimer').removeClass('jxBtnOff');
        jxRunning = true;
    }

    // STOP
    else {
        jxBankedTime += jxThisClickTime - jxLastClickTime;
        timer_clear();
        timer_show();
    }

    jxLastClickTime = jxThisClickTime;
}

function timer_clear() {
    clearInterval(jxInterval);
    $('#jxTimer').addClass('jxBtnOff');
    $('#jxTimer').removeClass('jxBtnOn');
    jxRunning = false;
}

function timer_spin() {
    var index = Math.trunc((new Date().getTime() % 1000) / 125);
    $('#jxTimerText').text(Clocks[index]);
}

function timer_show() {
    var delta = jxBankedTime;
    delta %= MillisPerHour;

    var jxMin = Math.floor(delta/MillisPerMinute);
    delta %= MillisPerMinute;
    var jxSec = pad(Math.floor(delta/MillisPerSecond));
    delta %= MillisPerSecond;

    $('#jxTimerText').text(jxMin+":"+jxSec);

    var d = new Date();
    var date = pad(d.getMonth()+1)+"/"+pad(d.getDate());
    var time = pad(jxMin)+":"+jxSec;
    $('#jxTimerText').attr('data-clipboard-text',date+" - "+time);
}


/**
 * Utility features
 */
function pad(x) {
    return (x<10) ? '0'+x : x;
}
function pad3(x) {
    return (x<100) ? (x<10 ? '00'+x : '0'+x) : x;
}