NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Alliance_Evolution Ogame Redesign // @namespace Ogame // @description Générateur de statistique sur l'évolution de l'alliance // @author Lame Noire // @collaborator Chewbaka69 // @version 1.5.2 // @include *.ogame.gameforge.*/game/index.php?page=alliance* // @updateURL https://openuserjs.org/meta/Chewbaka69/Alliance_Evolution_Ogame_Redesign.meta.js // @downloadURL https://openuserjs.org/install/Chewbaka69/Alliance_Evolution_Ogame_Redesign.user.js // @icon https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSxmP3Sxxmds3NtFcBXafgsF8AtY2aFHd5Wlsrg1Nj7Y_GjNovIRw // @license MIT // ==/UserScript== /** * Cette variable permet de détecter les mises à jour * Merci de ne pas y toucher sous peine de ne plus en être informer */ var version = "1.5.2"; var CENTER ="center"; var LEFT = "left"; var RIGHT = "right"; /** * Options par défaut */ var settings = [ "green", "red", "blue", "#CC00FF", "orange", "orange", "yellow", "white", "white", "#4080FF", "#4000FF", "black", 20, 200, 20, 100, 20, 100, 20, 100, 20, 100, 20, 100, 200, 4, CENTER, LEFT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, false, "FR" ]; var lang = ["FR", "EN", "RU"]; /** * Variables de texte, à changer pour les langues */ var langText = [ { ERROR_LOAD : "Une erreur s'est produite lors du chargement des données, pour résoudre le problème les variables sont remise à zéro", NO_PLAYER : "Les données d'un joueur n'ont pas su être chargées, elles seront donc reinitialisées. Voici ses coordonées : ", UP_DATE : "Mise à jour des données", ADD_MEMBER : "Un membre a été ajouté : ", REMOVE_MEMBER : "Un membre a été effacé : ", HEAD : [ "Nom", "Actuellement", "Évolution", "Place", "Points", "%" ], BUTTONS : [ "Mise à jour", "Export", "Normal", "Évolution", "Options", "Import", "Remettre à zéro" ], SETTINGS : [ "Gain", "Perte", "Égalite", "Record", "Boutons", "En tête", "Nom", "Place", "Points", "Ligne pair", "Ligne impair", "Tableau", "Nom", "Nom", "Place", "Place", "Points", "Points", "Place", "Place", "Points", "Points", "%", "%", "Taille maximum", "Taille maximum", "En tête", "Nom", "Place", "Points", "Place", "Points", "%", "Ajuster l'alignement avec [font] pour le BBCode", "Langue" ], DATE : ["De", "jusqu'au"], SOIT : "soit", POINT : "points", EVOL : "Evolution", SETTINGS_TITLE : { HEAD : "Option d'exportation", COLOR :"Couleur", COLORIG : "Vue Évolution", SIZE : { COL : "Largeur des colonnes", COL_HTML : "HTML en px", COL_BBCODE : "BBCODE en caractère", MAX : "Taille maximum", MAX_HTML : "HTML", MAX_BBCODE : "BBCODE" }, ALIGN :"Alignement", EXPORT : "Export", LANG : "Traduction" }, SUBMIT : "Envoyer", ARROW : { UP : "↑", DOWN : "↓" }, SUMMARY : { TITLE : "Résumé", EVOL : ["Évolution en points", "Évolution en place", "Pourcentage d'évolution"], BEST : "Meilleure progression", WORST : "Pire progression" }, IMPORT : { NAME : "Nom", HIGHSCORE : "Place", POINT : "Points" }, MEAN : "Moyenne par membre" }, { ERROR_LOAD : "An error occurred while loading data to solve the problem variables are reset", NO_PLAYER : "Data from a player failed to be loaded, so they will be reset. Here are his coordinates :", UP_DATE : "Update data", ADD_MEMBER : "A member has been added : ", REMOVE_MEMBER : "A member has been removed : ", HEAD : [ "Name", "Currently", "Evolution", "Highscore", "Points", "%" ], BUTTONS : [ "Update", "Export", "Normal", "Evolution", "Settings", "Import", "Reset" ], SETTINGS : [ "Gain", "Loss", "Par", "Record", "Buttons", "Head", "Name", "Highscore", "Points", "Even line", "Odd line", "Table", "Name", "Name", "Highscore", "Highscore", "Points", "Points", "Highscore", "Highscore", "Points", "Points", "%", "%", "Maximum size", "Maximum size", "Head", "Name", "Highscore", "Points", "Highscore", "Points", "%", "Adjust the alignment with [font] for BBCode ", "Language" ], DATE : ["From", "to"], SOIT : "that to say", POINT : "points", EVOL : "Evolution", SETTINGS_TITLE : { HEAD : "Export settings", COLOR :"Color", COLORIG : "Evolution view", SIZE : { COL : "column width", COL_HTML : "HTML (px)", COL_BBCODE : "BBCODE (character)", MAX : "Maximum size", MAX_HTML : "HTML", MAX_BBCODE : "BBCODE" }, ALIGN :"Alignment", EXPORT : "Export", LANG : "Traduction" }, SUBMIT : "Submit", ARROW : { UP : "↑", DOWN : "↓" }, SUMMARY : { TITLE : "Summary", EVOL : ["Point's evolution", "Highscore's evolution", "Percentage of evolution"], BEST : "Best progression", WORST : "Worse progression" }, IMPORT : { NAME : "Name", HIGHSCORE : "Highscore", POINT : "Points" }, MEAN : "mean per member" }, { ERROR_LOAD : "Ошибка при загрузке данных, ради исправления проблемы статистика перезапущена", NO_PLAYER : "Не удалось загрузить Данные игрока, поэтому они очищены. Его координаты :", UP_DATE : "Обновление...", ADD_MEMBER : "Игрок добавлен : ", REMOVE_MEMBER : "Игрок удален : ", HEAD : [ "Ник", "Сейчас", "Прогресс", "Позиция", "Очки", "%" ], BUTTONS : [ "Доступно Обновление", "Экспорт", "Обычный вид", "Прогресс", "Настройки", "Импорт", "Очистка данных" ], SETTINGS : [ "Рост", "Падение", "Без изменений", "показатель", "Управление", "Заголовок", "Ник", "Позиция", "Очки", "Чётные линии", "Нечётные линии", "Тиблица", "Ник", "Ник", "Позиция", "Позиция", "Очки", "Очки", "Позиция", "Позиция", "Очки", "Очки", "%", "%", "Максимальный размер", "Максимальный размер", "Заголовок", "Ник", "Позиция", "Очки", "Позиция", "Очки", "%", "Adjust the alignment with [font] for BBCode ", "Язык" ], DATE : ["От", "до"], SOIT : "что является", POINT : "очков", EVOL : "Развитие альянса", SETTINGS_TITLE : { HEAD : "Настройки Экспорта", COLOR :"Цвет", COLORIG : "Просмотр развития", SIZE : { COL : "Ширина столбика", COL_HTML : "HTML (px)", COL_BBCODE : "BBCODE (знаков)", MAX : "Максимальный Размер", MAX_HTML : "HTML", MAX_BBCODE : "BBCODE" }, ALIGN :"Привязка", EXPORT : "Экспорт", LANG : "Перевод" }, SUBMIT : "Сохранить", ARROW : { UP : "↑", DOWN : "↓" }, SUMMARY : { TITLE : "Итог", EVOL : ["Развитие в очках", "Развитие в рейтинге", "Развитие в процентах"], BEST : "Лучшее развитие", WORST : "Худшее развитие" }, IMPORT : { NAME : "Ник", HIGHSCORE : "Рейтинг", POINT : "Очки" }, MEAN : "что является в среднем для игрока" } ]; var text; var cst = { SETTINGS : { COLOR : { GOOD : 0, BAD : 1, EQ : 2, RECORD : 3, BUTTON : 4 }, EXPORT : { COLOR: { HEAD : 5, NAME : 6, HIGHSCORE : 7, POINT : 8, LINE : [9, 10], TABLE : 11 }, COL_SIZE : { BBCODE : [12,14,16,18,20,22], HTML : [13,15,17,19,21,23], }, SIZE : { BBCODE : 24, HTML : 25 }, ALIGN : { HEAD : 26, NAME : 27, CURRENT_HIGHSCORE : 28, CURRENT_POINT : 29, EVOL_HIGHSCORE : 30, EVOL_POINT : 31, EVOL_PERCENT : 32, FONT : 33 } }, LANG : 34 }, VIEW : { NORMAL : 0, EXPORT : 1, EVOL : 2, OPTION : 3, IMPORT : 4 }, HEAD_DOWN : [0,3,4,3,4,5], HEAD_UP : [1,2], SORT : { NAME : 0, CURRENT_HIGHSCORE : 1, CURRENT_POINT : 2, EVOL_HIGHSCORE : 3, EVOL_POINT : 4, EVOL_PERCENT : 5 }, BUTTONS : { UPDATE : 0, EXPORT : 1, NORMAL : 2, EVOL : 3, OPTION : 4, IMPORT : 5, RESET : 6 } }; var BBCODE = new Encoding( new Balise("[color=", ']', "[/color]"), new Balise("[center", "]", "[/center]"), new Balise("[size=" , "]", "[/size]"), new Balise("[b","]", "[/b]"), new Balise("[u","]", "[/u]"), new Balise("[i","]", "[/i]"), new Balise("[list","]","[/list]"), new Balise("[*","]",""), new Balise("\n","",""), new Balise("[font=", "]", "[/font]") ); var HTML = new Encoding( new Balise("<font color=\"", '">', "</font>"), new Balise("<center",">","</center>"), new Balise("<font size=",">","</font>"), new Balise("<b",">","</b>"), new Balise("<u",">","</u>"), new Balise("<i",">","</i>"), new Balise("<ul",">","</ul>"), new Balise("<li",">","</li>"), new Balise("<br"," />",""), new Balise("<font face="," >","</font>") ); var identifier = [ "AE_NAME", "AE_CURRENT_HIGHSCORE", "AE_CURRENT_POINT", "AE_EVOL_HIGHSCORE", "AE_EVOL_POINT", "AE_EVOL_PERCENT" ]; var submitId ="submitOption"; /** * Variables systèmes */ var one = false; var currentMembers; var savedMembers; var currentAlliance; var savedAlliance; var currentDate; var savedDate; var urldl = "http://userscripts.org/scripts/source/78426.user.js"; var urlinfo = "http://userscripts.org/scripts/show/78426"; var memberListAccess; var allyDataAccess; var currentShowed = cst.VIEW.NORMAL; var tableHTML = document.createElement("table"); var spanExport = document.createElement("div"); var spanImport = document.createElement("div"); var textAreaBBCode = document.createElement("textarea"); var textAreaHTML = document.createElement("textarea"); var option = document.createElement("div"); var buttons = ["","","","","","",""]; for(var i =0; i < buttons.length; ++i){buttons[i] = document.createElement("span");} /** Définit les identifiants*/ var playerName = document.getElementById("playerName").getElementsByTagName('span')[0].textContent; var server = location.href.split('/')[2]; var id = server + "_" + playerName; var stocks = { alliance : id + "__Alliance__", memberList : id + "__MemberList__", date : id + "__Date__", settings : id + "__Settings__" }; /************************************************************** * * * Objects * * * **************************************************************/ function Member(name_, coordonate_, highscore_, point_){ this.name = name_; this.coordonate = coordonate_; this.highscore = highscore_; this.point = point_; this.evol = new Evol(0,0,0); } Member.prototype.compare= function (member){delete this.evol;this.evol = new Evol(this.pointProgress(member), this.highscoreProgress(member), this.percentProgress(member));} Member.prototype.pointProgress = function (member){return (this.point - member.point);} Member.prototype.highscoreProgress = function (member){return (-(this.highscore - member.highscore));} Member.prototype.percentProgress = function (member){return Math.round(((this.point / member.point)-1)*10000)/100;} Member.prototype.equals = function (member){return (this.coordonate == member.coordonate);} function Evol(point_, highscore_, percent_){ this.point = point_; this.highscore = highscore_; this.percent = percent_; this.progress = 0; } function Alliance(name_, tag_, number_){ this.name = name_; this.tag = tag_; this.number = number_; this.point = 0; this.evol = 0; } Alliance.prototype.equals = function (alliance){return (this.name == alliance.name && this.tag == alliance.tag);} function Balise(before_, middle_, after_){ this.before = before_; this.middle = middle_; this.after = after_; } Balise.prototype.format = function (param, text){return (this.before + param + this.middle + text + this.after);} function Encoding(color_, center_, large_, bold_, underline_, italic_, list_, listPoint_, lineBreak_, font_){ this.color = color_; this.center = center_; this.large = large_; this.bold = bold_; this.underline = underline_; this.italic = italic_; this.list = list_; this.listPoint = listPoint_; this.lineBreak = lineBreak_; this.font = font_; } /************************************************************** * * * Fonction principale. * * * **************************************************************/ function mainFunction(){ if(!treatable())return; catchInformations(); loadInformations(); updateInforamtions(); showInformations(); checkupdate(); } function treatable(){ if(one) return false; if((memberListAccess = document.getElementById("member-list")).innerHTML == '') return false; if((allyDataAccess = document.getElementById("allyData").getElementsByTagName("div")[0].getElementsByTagName("table")[0].getElementsByTagName("tbody")[0]).textContent == '') return false; return (one = true); } function checkupdate(){ /*GM_xmlhttpRequest({ method: 'GET', url: urlinfo, onload: function(answers){ var page = answers.responseText; var versionOfScript = page.substring(page.indexOf('<b>Version</b> : ')+17, page.length); versionOfScript = versionOfScript.substring(1, versionOfScript.indexOf("]")); if(version != versionOfScript) buttons[cst.BUTTONS.UPDATE].innerHTML = "<a target='_self' style='cursor:pointer' accesskey='' class='menubutton' href='" + urldl + "'><span class='textlabel'><font color='" + settings[cst.SETTINGS.COLOR.BUTTON] + "'>" + text.BUTTONS[cst.BUTTONS.UPDATE] + "</font></span></a>"; else buttons[cst.BUTTONS.UPDATE].innerHTML = ""; } });*/ } function loadInformations(){ var loadMemberList = cookies.load(stocks.memberList, ""); var loadAlliance = cookies.load(stocks.alliance, ""); var loadDate = cookies.load(stocks.date, ""); var loadSettings = cookies.load(stocks.settings, ""); //option splits = loadSettings.split("|"); for(var i = 0; i<splits.length; ++i){ if(splits[i]) settings[i] = splits[i]; } text = langText[lang.indexOf(settings[cst.SETTINGS.LANG])]; if(!text) text = langText[0]; //si pas de variable if(loadMemberList == "" || loadAlliance == "" || loadDate == ""){ alert(text.ERROR_LOAD); resetInformations(); } var splits = loadAlliance.split("|"); savedAlliance = new Alliance(splits[0], splits[1], splits[2]); savedDate = loadDate; savedMembers = new Array(); var list = ""; if(loadMemberList) list = loadMemberList.split("|"); for(var i = 0; i<list.length; i++){ var str = cookies.load(id + "__" + list[i] + "__", ""); if(str == ""){ alert(text.NO_PLAYER + list[i]); continue; } splits = str.split("|"); var name = splits[0]; var coordonate = splits[1]; var highscore = splits[2]; var point = splits[3]; savedMembers.push(new Member(name, coordonate, highscore, point)); } } function catchInformations(){ /** Informations générale sur l'alliance*/ var allianceName = allyDataAccess.getElementsByTagName("tr")[0].getElementsByTagName("td")[1].getElementsByTagName("span")[0].textContent; var allianceTag = allyDataAccess.getElementsByTagName("tr")[1].getElementsByTagName("td")[1].getElementsByTagName("span")[0].textContent; var numberOfMembers = allyDataAccess.getElementsByTagName("tr")[2].getElementsByTagName("td")[1].getElementsByTagName("span")[0].textContent; currentAlliance = new Alliance(allianceName, allianceTag, numberOfMembers); /**Liste des membres*/ currentMembers = new Array(); var infoMember = memberListAccess.getElementsByTagName("tbody")[0].getElementsByTagName('tr'); for(var i = 0; i < infoMember.length; ++i){ var name = (infoMember[i].getElementsByTagName('td')[0].innerHTML.replace(/(^\s*)|(\s*$)/g,'')); var point = parseInt(infoMember[i].getElementsByTagName('td')[3].title.replace( /[^0-9-]/g, "")); var highscore = infoMember[i].getElementsByTagName('td')[3].getElementsByTagName('a')[0].innerHTML.replace( /[^0-9-]/g, ""); var coordonate = infoMember[i].getElementsByTagName('td')[4].getElementsByTagName('a')[0].textContent; var object = new Member(name, coordonate, highscore, point); currentMembers.push(object); } currentDate = new Date().toLocaleString(); } function updateInforamtions(){ /**Ajoute les nouveaux et retire les anciens membres de la memoire*/ for(var i = 0; i < currentMembers.length; ++i){ if(!arrayContains(savedMembers, currentMembers[i])){ cookies.save(id + "__" + currentMembers[i].coordonate + "__", currentMembers[i].name + "|" + currentMembers[i].coordonate + "|" + currentMembers[i].highscore + "|" + currentMembers[i].point ); savedMembers.push(currentMembers[i]); //popUp(text.ADD_MEMBER + currentMembers[i].name, false, 10000); } } console.log(/a/); console.log(savedMembers.length); console.log(/a/); for(var i = 0; i < savedMembers.length; ++i){ if(!arrayContains(currentMembers, savedMembers[i])){ cookies.erase(id + "__" + savedMembers[i].coordonate + "__"); //popUp(text.REMOVE_MEMBER + savedMembers[i].name, true, 10000); savedMembers.splice(i,1); } } console.log(/b/); /**Sauvegarde les données*/ cookies.save(stocks.alliance, (currentAlliance.name + "|" + currentAlliance.tag + "|" + currentAlliance.number + "|")); var str = currentMembers[0].coordonate; for(var i = 1; i < currentMembers.length; ++i) str += "|" + currentMembers[i].coordonate; cookies.save(stocks.memberList, str); //popUp(text.UP_DATE, false, 10000); } function showInformations(){ for(var i =0; i < buttons.length; ++i){ buttons[i].innerHTML = makeButton(text.BUTTONS[i]); document.getElementById("form_assignRank").insertBefore(buttons[i], memberListAccess); if(i!=buttons.length-1) document.getElementById("form_assignRank").insertBefore(makeSpaces(10), memberListAccess); } document.getElementById("form_assignRank").insertBefore(makeLineBreak(), memberListAccess); document.getElementById("form_assignRank").insertBefore(makeLineBreak(), memberListAccess); insertAfter(buttons[cst.BUTTONS.RESET], memberListAccess); insertAfter(makeLineBreak(), memberListAccess); buttons[cst.BUTTONS.EXPORT].addEventListener("click", function(event){switchDisplay(cst.VIEW.EXPORT);},true); buttons[cst.BUTTONS.NORMAL].addEventListener("click", function(event){switchDisplay(cst.VIEW.NORMAL);},true); buttons[cst.BUTTONS.EVOL].addEventListener("click", function(event){switchDisplay(cst.VIEW.EVOL);},true); buttons[cst.BUTTONS.OPTION].addEventListener("click", function(event){switchDisplay(cst.VIEW.OPTION);},true); buttons[cst.BUTTONS.IMPORT].addEventListener("click", function(event){switchDisplay(cst.VIEW.IMPORT);},true); buttons[cst.BUTTONS.RESET].addEventListener("click", function(event){resetInformations();},true); tableHTML.setAttribute("class", "members zebra bborder"); textAreaBBCode.setAttribute("style", "width:300px;height:100px;overflow:auto;"); textAreaHTML.setAttribute("style", "width:300px;height:100px;overflow:auto;"); textAreaBBCode.setAttribute("onClick", "this.select();"); textAreaHTML.setAttribute("onClick", "this.select();"); document.getElementById("form_assignRank").insertBefore(tableHTML, memberListAccess); document.getElementById("form_assignRank").insertBefore(spanExport, memberListAccess); document.getElementById("form_assignRank").insertBefore(option, memberListAccess); document.getElementById("form_assignRank").insertBefore(spanImport, memberListAccess); spanExport.innerHTML = "<span></span>"; spanExport.insertBefore(textAreaBBCode, spanExport.getElementsByTagName("span")[0]); spanExport.insertBefore(textAreaHTML, spanExport.getElementsByTagName("span")[0]); refresh(); } function resetInformations(){ cookies.eraseAll(); cookies.save(stocks.date, currentDate); cookies.save(stocks.alliance, (currentAlliance.name + "|" + currentAlliance.tag + "|" + currentAlliance.number + "|")); cookies.save(stocks.date, currentDate); var list = new Array(); for(var i = 0; i < currentMembers.length; ++i){ list.push(currentMembers[i].coordonate); cookies.save(id + "__" + currentMembers[i].coordonate + "__", currentMembers[i].name + "|" + currentMembers[i].coordonate + "|" + currentMembers[i].highscore + "|" + currentMembers[i].point ); } var str = list[0]; for(var i = 1; i < list.length; ++i) str += "|" + list[i]; cookies.save(stocks.memberList, str); savedMembers = currentMembers; savedAlliance = currentAlliance; savedDate = currentDate; refresh(); } function makeStatistique(){ var maxPoint = currentMembers[0]; var minPoint = currentMembers[0]; var maxHighscore = currentMembers[0]; var minHighscore = currentMembers[0]; var maxPercent = currentMembers[0]; var minPercent = currentMembers[0]; var name; var before = new Array(); var after = new Array(); for(var i = 0; i< currentMembers.length; ++i){ before.push(savedMembers[i]); after.push(currentMembers[i]); } before.sort(function(a, b){return b.point - a.point;}); after.sort(function(a, b){return b.point - a.point;}); currentAlliance.point = currentAlliance.evol = 0; for(var i=0; i<currentMembers.length; i++){ currentMembers[i].compare(savedMembers[arrayIndexOf(savedMembers, currentMembers[i])]); currentMembers[i].evol.progress = arrayIndexOf(before, currentMembers[i]) - arrayIndexOf(after,currentMembers[i]); currentAlliance.point += currentMembers[i].point; currentAlliance.evol += currentMembers[i].evol.point; if(currentMembers[i].evol.point > maxPoint.evol.point) maxPoint = currentMembers[i]; if(currentMembers[i].evol.point < minPoint.evol.point) minPoint = currentMembers[i]; if(currentMembers[i].evol.highscore > maxHighscore.evol.highscore) maxHighscore= currentMembers[i]; if(currentMembers[i].evol.highscore < minHighscore.evol.highscore) minHighscore = currentMembers[i]; if(currentMembers[i].evol.percent > maxPercent.evol.percent) maxPercent = currentMembers[i]; if(currentMembers[i].evol.percent < minPercent.evol.percent) minPercent = currentMembers[i]; } var stat = new Array(); stat.push(maxPoint); stat.push(minPoint); stat.push(maxHighscore); stat.push(minHighscore); stat.push(maxPercent); stat.push(minPercent); return stat; } function switchDisplay(page){ currentShowed = page; switch(page){ case cst.VIEW.NORMAL: show(memberListAccess); hide(tableHTML); hide(spanExport); hide(buttons[cst.BUTTONS.RESET]); hide(option); hide(spanImport); break; case cst.VIEW.EVOL: show(tableHTML); show(buttons[cst.BUTTONS.RESET]); hide(spanExport); hide(memberListAccess); hide(option); hide(spanImport); tableHTML.innerHTML = makeTable(); document.getElementById(identifier[cst.SORT.NAME]).addEventListener("click",function(event){changeSort(cst.SORT.NAME);},true); document.getElementById(identifier[cst.SORT.CURRENT_HIGHSCORE]).addEventListener("click",function(event){changeSort(cst.SORT.CURRENT_HIGHSCORE);},true); document.getElementById(identifier[cst.SORT.CURRENT_POINT]).addEventListener("click",function(event){changeSort(cst.SORT.CURRENT_POINT);},true); document.getElementById(identifier[cst.SORT.EVOL_HIGHSCORE]).addEventListener("click",function(event){changeSort(cst.SORT.EVOL_HIGHSCORE);},true); document.getElementById(identifier[cst.SORT.EVOL_POINT]).addEventListener("click",function(event){changeSort(cst.SORT.EVOL_POINT);},true); document.getElementById(identifier[cst.SORT.EVOL_PERCENT]).addEventListener("click",function(event){changeSort(cst.SORT.EVOL_PERCENT);},true); break; case cst.VIEW.EXPORT: hide(memberListAccess); hide(tableHTML); hide(buttons[cst.BUTTONS.RESET]); hide(option); show(spanExport); hide(spanImport); textAreaBBCode.innerHTML = toExport(BBCODE); textAreaHTML.innerHTML = toExport(HTML); break; case cst.VIEW.OPTION: hide(memberListAccess); hide(tableHTML); hide(spanExport); hide(buttons[cst.BUTTONS.RESET]); show(option); hide(spanImport); option.innerHTML = makeFormulaire(); document.getElementById(submitId).addEventListener("click",function(event){settingsSubmit();},true); break; case cst.VIEW.IMPORT: hide(memberListAccess); hide(tableHTML); hide(spanExport); hide(buttons[cst.BUTTONS.RESET]); hide(option); show(spanImport); spanImport.innerHTML = makeImport(); document.getElementById(submitId).addEventListener("click",function(event){importSubmit();},true); break; default: break; } } function changeSort(type){ var sortFunction; switch(type){ case cst.SORT.CURRENT_POINT: sortFunction = function(a, b){return b.point - a.point;} break; case cst.SORT.CURRENT_HIGHSCORE: sortFunction = function(a, b){return a.highscore - b.highscore;} break; case cst.SORT.EVOL_HIGHSCORE: sortFunction = function(a, b){return b.evol.highscore - a.evol.highscore;} break; case cst.SORT.EVOL_POINT: sortFunction = function(a, b){return b.evol.point - a.evol.point;} break; case cst.SORT.EVOL_PERCENT: sortFunction = function(a, b){return b.evol.percent - a.evol.percent;} break; case cst.SORT.NAME: sortFunction = function(a, b){return strcmp(a.name, b.name);} break; default: changeSort(cst.SORT.NAME); return; } currentMembers.sort(sortFunction); refresh(); } function makeButton(text){return "<a target='_self' style='cursor:pointer' accesskey='' class='menubutton' ><span class='textlabel'><font color='" + settings[cst.SETTINGS.COLOR.BUTTON] + "'>" + text + "</font></span></a>"} function makeTable(){ var title = "<thead><tr><th> </th><th> </th>" + "<th colspan='2'>" + text.HEAD[cst.HEAD_UP[0]]+ "</th>" + "<th colspan='3'>" + text.HEAD[cst.HEAD_UP[1]] + "</th><th> </th></tr><tr><th> </th>"; for(var i = 0; i<6; ++i) title += "<th id=" + identifier[i] + " style='cursor:pointer'>" + text.HEAD[cst.HEAD_DOWN[i]] + "</th>"; title += "<th style='width:20px'>" + text.ARROW.UP + text.ARROW.DOWN + "</th></tr></thead>"; var str = title + "<tbody>"; var stats = makeStatistique(); for(var i = 0; i < currentMembers.length; ++i){ var arrow = ((currentMembers[i].evol.progress > 0) ? text.ARROW.UP : text.ARROW.DOWN) + " " + (Math.abs(currentMembers[i].evol.progress) == 1 ? "" : Math.abs(currentMembers[i].evol.progress)); var bullet = "<font color='" + ((stats.indexOf(currentMembers[i])>-1) ? settings[cst.SETTINGS.COLOR.RECORD] : "") + "'>•</font>"; if (currentMembers[i].evol.progress == 0)arrow = "-"; if(i%2==0) str += "<tr class='alt'><td>"; else str += "<tr><td>"; str += bullet + "</td><td>" + currentMembers[i].name + "</td><td>" + addPoints(currentMembers[i].highscore) + "</td><td>" + addPoints(currentMembers[i].point) + "</td><td>" + highLight(addPoints(currentMembers[i].evol.highscore), (currentMembers[i].evol.highscore), HTML) + "</td><td>" + highLight(addPoints(currentMembers[i].evol.point), (currentMembers[i].evol.point), HTML) + "</td><td>" + highLight(currentMembers[i].evol.percent + "%", (currentMembers[i].evol.percent), HTML) + "</td><td>" + arrow + "</td></tr>"; } return str + "</tbody>"; } function makeAllianceEvol(type){ var percent = (Math.round((currentAlliance.evol/currentAlliance.point)*10000))/100; return ( currentAlliance.name + " : " + addPoints(currentAlliance.point) + " " + text.POINT + " (" + text.EVOL + " " + highLight(addPoints(currentAlliance.evol), (currentAlliance.evol >= 0), type) + " " + text.SOIT + " " + highLight(percent + "%", (percent >= 0), type) + ")" + type.lineBreak.format("","") + text.MEAN + " : " + addPoints(Math.round(currentAlliance.point/currentMembers.length)) + " " + text.POINT + " (" + text.EVOL + " " + highLight(addPoints(Math.round(currentAlliance.evol/currentMembers.length)), ((Math.round(currentAlliance.evol/currentMembers.length)) >= 0), type) + " " + text.SOIT + " " + highLight(percent + "%", (percent >= 0), type) + ")" + type.lineBreak.format("","") + type.lineBreak.format("","")); } function makeExportsummary(type, stats){ var summary = ""; var line = ""; var subline = ""; var number = [ stats[0].evol.point, stats[1].evol.point, stats[2].evol.highscore, stats[3].evol.highscore, stats[4].evol.percent, stats[5].evol.percent ]; for(var i =0; i<3; ++i){ line = type.listPoint.format("", type.underline.format("", text.SUMMARY.EVOL[i])) + type.lineBreak.format("",""); subline = type.listPoint.format("", text.SUMMARY.BEST + " : " + type.italic.format("", stats[i*2].name) + " (" + highLight(addPoints(number[i*2]), number[i*2], type) + ")") ;//+ type.lineBreak.format("",""); subline += type.listPoint.format("", text.SUMMARY.WORST + " : " + type.italic.format("", stats[i*2+1].name) + " (" + highLight(addPoints(number[i*2+1]), number[i*2+1], type) + ")") ;//+ type.lineBreak.format("",""); subline = type.list.format("", subline); line += subline + type.lineBreak.format("",""); summary += line; } return type.bold.format("", text.SUMMARY.TITLE) + type.lineBreak.format("","") + type.lineBreak.format("","") + type.list.format("", summary); } /** * Renvoit les données sous un format pour forum * @param type Est un object Type qui contient les balises nécessaires */ function toExport(type){ var stats = makeStatistique(); if(type == HTML){ var title = "<span>" + type.large.format(settings[cst.SETTINGS.EXPORT.SIZE.HTML],".: " + text.EVOL + " " + currentAlliance.name + " :.") + "<br>" + text.DATE[0] + " " + savedDate + " " + text.DATE[1] + " " + currentDate + "<br><br>" + makeAllianceEvol(HTML) + "<br><br></span>"+ "<table bgcolor='" + settings[cst.SETTINGS.EXPORT.COLOR.TABLE] + "' border='0' cellspacing='0' cellpadding='0'><thead><tr><th colspan='2'> </th>" + "<th colspan='2' align='" + settings[cst.SETTINGS.EXPORT.ALIGN.HEAD] + "'><font color='" + settings[cst.SETTINGS.EXPORT.COLOR.HEAD] + "'>" + text.HEAD[cst.HEAD_UP[0]]+ "</font></th>" + "<th colspan='3' align='" + settings[cst.SETTINGS.EXPORT.ALIGN.HEAD] + "'><font color='" + settings[cst.SETTINGS.EXPORT.COLOR.HEAD] + "'>" + text.HEAD[cst.HEAD_UP[1]] + "</font></th><th> </th></tr><tr><th> </th>"; for(var i = 0; i<6; ++i) title += "<th style='width:" + settings[cst.SETTINGS.EXPORT.COL_SIZE.HTML[i]] + "px' align='" + settings[cst.SETTINGS.EXPORT.ALIGN.HEAD] + "'><font color='" + settings[cst.SETTINGS.EXPORT.COLOR.HEAD] + "'>" + text.HEAD[cst.HEAD_DOWN[i]] + "</font></th>"; title += "<th><font color='" + settings[cst.SETTINGS.EXPORT.COLOR.HEAD] + "'>" + text.ARROW.UP + text.ARROW.DOWN + "</font></th></tr></thead>"; var str = title + "<tbody>"; var stats = makeStatistique(); for(var i = 0; i < currentMembers.length; ++i){ var arrow = ((currentMembers[i].evol.progress > 0) ? text.ARROW.UP : text.ARROW.DOWN) + " " + (Math.abs(currentMembers[i].evol.progress) == 1 ? "" : Math.abs(currentMembers[i].evol.progress)); if (currentMembers[i].evol.progress == 0)arrow = "-"; var bullet = "<font color='" + ((stats.indexOf(currentMembers[i])>-1) ? settings[cst.SETTINGS.COLOR.RECORD] : "") + "'>•</font>"; str += "<tr bgcolor='" + settings[cst.SETTINGS.EXPORT.COLOR.LINE[i%2]] + "'><td style='width:20px'>"; str += bullet + "</td><td align='" + settings[cst.SETTINGS.EXPORT.ALIGN.NAME] + "'>" + "<font color='" + settings[cst.SETTINGS.EXPORT.COLOR.NAME] + "'>" + currentMembers[i].name + "</font></td><td align='" + settings[cst.SETTINGS.EXPORT.ALIGN.CURRENT_HIGHSCORE] + "'>" + "<font color='" + settings[cst.SETTINGS.EXPORT.COLOR.HIGHSCORE] + "'>" + addPoints(currentMembers[i].highscore) + "</font></td><td align='" + settings[cst.SETTINGS.EXPORT.ALIGN.CURRENT_POINT] + "'>" + "<font color='" + settings[cst.SETTINGS.EXPORT.COLOR.POINT] + "'>" + addPoints(currentMembers[i].point) + "</font></td><td align='" + settings[cst.SETTINGS.EXPORT.ALIGN.EVOL_HIGHSCORE] + "'>" + highLight(addPoints(currentMembers[i].evol.highscore), (currentMembers[i].evol.highscore), HTML) + "</td><td align='" + settings[cst.SETTINGS.EXPORT.ALIGN.EVOL_POINT] + "'>" + highLight(addPoints(currentMembers[i].evol.point), (currentMembers[i].evol.point), HTML) + "</td><td align='" + settings[cst.SETTINGS.EXPORT.ALIGN.EVOL_PERCENT] + "'>" + highLight(currentMembers[i].evol.percent + "%", (currentMembers[i].evol.percent), HTML) + "</td><td align=center>" + arrow + "</td></tr>"; } return type.center.format("",str + "</tbody></table><br><br>") + makeExportsummary(HTML, stats); } var title = type.large.format(settings[cst.SETTINGS.EXPORT.SIZE.BBCODE], ".: " + text.EVOL + " " + currentAlliance.name + " :.") + "\n"; var date = text.DATE[0] + " " + savedDate + " " + text.DATE[1] + " " + currentDate + "\n" + "\n" + "\n"; function makeLine(digit){var res ="";for(var i =0; i<digit; ++i){res += "_"};return res;} var sum = 0; var buttom = ""; for(var i = 0; i < cst.SETTINGS.EXPORT.COL_SIZE.BBCODE.length ;++i){ sum += parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[i]]); buttom += makeLine(parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[i]])) + "|"; } var top = makeLine(sum + 5); var head = type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], top) + "\n"; head += alignText("",parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[0]]),settings[cst.SETTINGS.EXPORT.ALIGN.HEAD], "_",type, settings[cst.SETTINGS.EXPORT.COLOR.HEAD],settings[cst.SETTINGS.EXPORT.COLOR.TABLE], false) + type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], "|"); head += alignText(text.HEAD[cst.HEAD_UP[0]],(parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[1]]) + parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[2]]) + 1),settings[cst.SETTINGS.EXPORT.ALIGN.HEAD], "_",type, settings[cst.SETTINGS.EXPORT.COLOR.HEAD],settings[cst.SETTINGS.EXPORT.COLOR.TABLE], false) + type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], "|"); head += alignText(text.HEAD[cst.HEAD_UP[1]],(parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[3]]) + parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[4]]) + parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[5]]) + 2),settings[cst.SETTINGS.EXPORT.ALIGN.HEAD], "_",type, settings[cst.SETTINGS.EXPORT.COLOR.HEAD],settings[cst.SETTINGS.EXPORT.COLOR.TABLE], false) + type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], "|") + "\n"; for(var i = 0; i < cst.SETTINGS.EXPORT.COL_SIZE.BBCODE.length ;++i) head += alignText(text.HEAD[cst.HEAD_DOWN[i]], parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[i]]), settings[cst.SETTINGS.EXPORT.ALIGN.HEAD], "_", type, settings[cst.SETTINGS.EXPORT.COLOR.HEAD], settings[cst.SETTINGS.EXPORT.COLOR.TABLE], false) + type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], "|"); head += "\n" + type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], buttom) + "\n"; var body =""; var membre; for(var i = 0; i< currentMembers.length; ++i){ member = ""; member += alignText(currentMembers[i].name, parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[0]]), settings[cst.SETTINGS.EXPORT.ALIGN.NAME], "_", type, settings[cst.SETTINGS.EXPORT.COLOR.NAME], settings[cst.SETTINGS.EXPORT.COLOR.LINE[i%2]], false)+ type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], "|") + alignText(currentMembers[i].highscore, parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[1]]), settings[cst.SETTINGS.EXPORT.ALIGN.CURRENT_HIGHSCORE], "_", type, settings[cst.SETTINGS.EXPORT.COLOR.HIGHSCORE], settings[cst.SETTINGS.EXPORT.COLOR.LINE[i%2]], true)+ type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], "|") + alignText(currentMembers[i].point, parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[2]]), settings[cst.SETTINGS.EXPORT.ALIGN.CURRENT_POINT], "_", type, settings[cst.SETTINGS.EXPORT.COLOR.POINT], settings[cst.SETTINGS.EXPORT.COLOR.LINE[i%2]], true)+ type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], "|") + alignText(currentMembers[i].evol.highscore, parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[3]]), settings[cst.SETTINGS.EXPORT.ALIGN.EVOL_HIGHSCORE], "_", type, "", settings[cst.SETTINGS.EXPORT.COLOR.LINE[i%2]], true)+ type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], "|") + alignText(currentMembers[i].evol.point, parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[4]]), settings[cst.SETTINGS.EXPORT.ALIGN.EVOL_POINT], "_", type, "", settings[cst.SETTINGS.EXPORT.COLOR.LINE[i%2]], true)+ type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], "|") + alignText(currentMembers[i].evol.percent, parseInt(settings[cst.SETTINGS.EXPORT.COL_SIZE.BBCODE[5]]), settings[cst.SETTINGS.EXPORT.ALIGN.EVOL_PERCENT], "_", type, "", settings[cst.SETTINGS.EXPORT.COLOR.LINE[i%2]], true)+ type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], "|") + "\n"; body += member; } body += type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.TABLE], buttom) + "\n"; var table = head + body; if(settings[cst.SETTINGS.EXPORT.ALIGN.FONT]) table = type.font.format("Courier New", table); table = type.center.format("", type.color.format(settings[cst.SETTINGS.EXPORT.COLOR.HEAD], title + date) + makeAllianceEvol(type) + "\n\n" + table); return table + "\n\n\n\n" + makeExportsummary(type, stats); } function makeFormulaire(){ var table = "<center><h2><font color=#6F9FC8>" + text.SETTINGS_TITLE.HEAD + "</font></h2><table><tbody><tr><th colspan=4 align=center>" + text.SETTINGS_TITLE.COLOR + "</th></tr><tr><th colspan=4 align=center>" + text.SETTINGS_TITLE.COLORIG + "</th></tr>"; for(var i = 0; i<5; ++i) table += "<tr><td colspan=2>" + text.SETTINGS[i] + "</td><td colspan=2><input id='option" + i + "' value='" + settings[i] + "' size=8></td></tr>"; table += "<tr><th colspan=4>" + text.SETTINGS_TITLE.EXPORT + "</th></tr>"; for(var i = 5; i<12; ++i) table += "<tr><td colspan=2>" + text.SETTINGS[i] + "</td><td colspan=2><input id='option" + i + "' value='" + settings[i] + "' size=8></td></tr>"; table += "<tr><td colspan=4 align=center> </td></tr>"; table += "<tr><th colspan=4 align=center >" + text.SETTINGS_TITLE.SIZE.COL + "</th></tr>"; table += "<tr><th colspan=2 align=center >" + text.SETTINGS_TITLE.SIZE.COL_BBCODE + "</td><th colspan=2 align=center >" + text.SETTINGS_TITLE.SIZE.COL_HTML + "</thj></tr>"; for(var i = 12; i<24; i+=2){ table += "<tr><td>" + text.SETTINGS[i] + "</td><td><input id='option" + i + "' value='" + settings[i] + "' size=4></td>"; table += "<td>" + text.SETTINGS[i+1] + "</td><td><input id='option" + (i+1) + "' value='" + settings[i+1] + "' size=4></td></tr>"; } table += "<tr><td colspan=4 align=center> </td></tr>"; table += "<tr><th colspan=4 align=center>" + text.SETTINGS_TITLE.SIZE.MAX + "</th></tr>"; table += "<tr><th colspan=2 align=center >" + text.SETTINGS_TITLE.SIZE.MAX_BBCODE + "</th><th colspan=2 align=center>" + text.SETTINGS_TITLE.SIZE.MAX_HTML + "</th></tr>"; table += "<tr><td>" + text.SETTINGS[24] + "</td><td><input id='option" + 24 + "' value='" + settings[24] + "' size=4></td>"; table += "<td>" + text.SETTINGS[25] + "</td><td><input id='option" + 25 + "' value='" + settings[25] + "' size=4></td></tr>"; table += "<tr><td colspan=4 align=center> </td></tr>"; table += "<tr><th colspan=4 align=center >" + text.SETTINGS_TITLE.ALIGN + "</th></tr>"; for(var i=26; i<33; ++i){ table += "<tr><td colspan=2>" + text.SETTINGS[i] + "</td><td colspan=2><select id='option" + i + "'>"; table += "<option " + ((settings[i] == LEFT) ? "selected " :" ") + "value='LEFT'>LEFT</option>"; table += "<option " + ((settings[i] == CENTER) ? "selected " :" ") + "value='CENTER'>CENTER</option>"; table += "<option " + ((settings[i] == RIGHT) ? "selected " :" ") + "value='RIGHT'>RIGHT</option>"; table += "</select></td></tr>" } table += "<tr><td colspan=2>" + text.SETTINGS[33] + "</td><td colspan=2><input type='checkbox' id='checkbox' value='checkbox'" + (settings[33] ? "checked" : " ") + "/></td></tr>" table += "<tr><td colspan=4 align=center> </td></tr>"; table += "<tr><th colspan=4 align=center >" + text.SETTINGS_TITLE.LANG + "</th></tr>"; table += "<tr><td colspan=2>" + text.SETTINGS[34] + "</td><td colspan=2><select id='option" + "lang" + "'>"; for(var i=0; i<lang.length; ++i){ table += "<option " + ((settings[34] == lang[i]) ? "selected " :" ") + "value='" + lang[i] + "'>" + lang[i] + "</option>"; } table += "</select></td></tr>" table += "<tr><td colspan=4 align=center> </td></tr>"; table += "<tr><td colspan=2 align=center><input style='width: 200px' id='" + submitId + "' type=submit value='" + text.SUBMIT + "'></td></tr></center>"; return table; } function settingsSubmit(){ for(var i = 0; i<26; ++i) settings[i] = document.getElementById("option" + i).value; var al = [LEFT, CENTER, RIGHT]; for(var i = 26; i<33; ++i) settings[i] = al[document.getElementById("option" + i).selectedIndex]; settings[33] = (document.getElementById("checkbox").checked ? "1" : ""); settings[34] = lang[document.getElementById("option" + "lang").selectedIndex] var saveOption = ""; for (var i = 0; i<settings.length; ++i) saveOption += settings[i] + "|"; cookies.save(stocks.settings, saveOption); } function importSubmit(){ for(var i = 0; i< currentMembers.length; ++i){ currentMembers[i].highscore = document.getElementById("option" + i + "pl").value; currentMembers[i].point = document.getElementById("option" + i + "pts").value; } resetInformations(); } function makeImport(){ var table = "<table><thead><th>" + text.IMPORT.NAME + "</th><th>       " + text.IMPORT.HIGHSCORE + "</th><th> </th><th>       " + text.IMPORT.POINT + "</th></thead><tbody>"; for(var i = 0; i< currentMembers.length; ++i){ table += "<tr><td>" + currentMembers[i].name + "</td>" + "<input id='option" + i + "pl' value='" + currentMembers[i].highscore + "'>" + "<td> </td>" + "<input id='option" + i + "pts' value='" + currentMembers[i].point + "'></tr>"; } table += "<tr> </tr><tr><td colspan=2 align=center><input style='width: 200px' id='" + submitId + "' type=submit value='" + text.SUBMIT + "'></td></tr></center>"; table += "</tbody></table>"; return table; } function refresh(){switchDisplay(currentShowed);} /** * Met le text en avant * @param text Le texte a mettre en evidence * @param bool 1 : good color, -1 : bad color, 0 = eq color * @param type Un object Encoding qui contient les balises * @return le texte en highLigth */ function highLight(text, digit, type){ if(digit == 0) return type.color.format(settings[cst.SETTINGS.COLOR.EQ], text); else if(digit > 0) return type.color.format(settings[cst.SETTINGS.COLOR.GOOD], text); return type.color.format(settings[cst.SETTINGS.COLOR.BAD], text); } /** * Fonction de mise en page d'un element dans une largeur de colonne donnée * @param text Le texte a insérer * @param wide La largeur de la colonne * @param align L'alignement dans la colonne désirer (CENTER, LEFT, RIGHT) * @param space La caractère qui represente l'espace (comme le reste est _ mettre autre chose décale tout :/) * @param type Un objet type qui contient les balises nécessaire * @param textColor La couleur du texte * @param spaceColor La couleur des espaces * @param isNumber Si c'est un nombre, dans ce cas la fonction hightLight est appelée */ function alignText(str, wide, align, space, type, textColor, spaceColor, isNumber){ var text = (isNumber ? addPoints(str) : str); var res = ""; var spaces = ""; var size = text.toString().length; var spaceLeft = 0; var spaceRight = 0; switch(align){ case CENTER: var tmp = wide - size; tmp = Math.round(tmp/2); spaceLeft = tmp; spaceRight = wide - (spaceLeft + size); break; case RIGHT: spaceLeft = wide - size; break; case LEFT: spaceRight = wide - size; break; default: break; } for(var i = 0; i< spaceLeft; ++i)spaces += space; res += type.color.format(spaceColor, spaces); if(isNumber)res += highLight(text, str, type); else res += type.color.format(textColor, text); spaces = ""; for(var i = 0; i< spaceRight; ++i) spaces += space; res += type.color.format(spaceColor, spaces); return res; } /************************************************************** * * * Fonctions utilitaires pack 0.1 * * * **************************************************************/ /** * Atteint un élément à partir d'un chemin de tags. * @param id L'identifier de l'objet de départ * @param tags Liste de tags àsuivre * @param index Liste des index associés au tags * @return l'objet correspondant ou null si il n'est pas trouvé */ function getElementsByList(id, tags, index){ if(tags.length != index.length)return; //donnée invalide var elem; for(var i = 0, elem = document.getElementById(id) ; elem && i < tags.length; elem = elem.getElementsByTagName(tags[i])[index[i]], ++i); return (elem ? elem : null); } /** * Crée une fade box et l'affiche * @param message Message afficher * @param failed Vrai si c'est un message d'erreur, faux dans les autres cas * @param time Le temps pendant lequel la fade box est affichée */ function popUp(message, failed, time){ //unsafeWindow.tb_remove(); if (failed) { unsafeWindow.$("#fadeBoxStyle").attr("class", "failed"); } else { unsafeWindow.$("#fadeBoxStyle").attr("class", "success"); } unsafeWindow.$("#fadeBoxContent").html(message); unsafeWindow.$("#fadeBox").stop(false, true).show().fadeOut(time); } /** * Fonctions de gestion des cookies * @param Recoit un booleen qui indique si il s'agit de Firefox ou pas * @return Renvoit un object contenant les differentes fonctions */ var cookies = coockiesFunctions(navigator.userAgent.indexOf('Firefox')>-1); var cookies = coockiesFunctions(null); var autor = "Lame_noire"; var scriptName = "Alliance_Evolution"; var namespace = autor + "/" + scriptName + "/"; function coockiesFunctions(isFirefox){ return { save : function (key, value){localStorage.setItem(namespace + key, value);}, load : function (key, defaultValue){var res = localStorage.getItem(namespace + key); return (res ? res : defaultValue); }, erase : function (key){localStorage.removeItem(namespace + key);}, eraseAll : function(){ for(var i in localStorage) { if(i.indexOf(namespace) != -1) localStorage.removeItem(i); } }, xmlhttpRequest : function(){} }; } /** * Test si un elem est dans l'array, il faut la méthode equals * @param Array Le tableau sur lequel le test est fait * @param elem L'element chercher * @return boolean */ function arrayContains(array, elem){return (arrayIndexOf(array, elem) != -1);} /** * Renvoit la position d'un element dans un array * @param array Le talbeau * @param elem L'element rechercher * @return Indice de l'element ou -1 si il n'est pas présent */ function arrayIndexOf(array, elem){ for(var i = 0; i < array.length; ++i) if(array[i].equals(elem)) return i; return -1; } /** * Ajoute les points dans les nombres * @Copyright InfoCompte3 */ function addPoints(nombre){ if(nombre - parseInt(nombre) != 0) return nombre; var signe = ''; if (nombre<0){ nombre = Math.abs(nombre); signe = '-'; } nombre=parseInt(nombre); var str = nombre.toString(), n = str.length; if (n <4){return signe + nombre;} return signe + (((n % 3) ? str.substr(0, n % 3) + '.' : '') + str.substr(n % 3).match(new RegExp('[0-9]{3}', 'g')).join('.')); } function show(elem){elem.style.display = "";} function hide(elem){elem.style.display = "none";} /** * String compare * 1 : a > b (ex bbb > aaa) * -1 : b > a * 0 : a==b */ function strcmp(str1, str2){ //Accent ? var a = str1.toLowerCase(); var b = str2.toLowerCase(); if (a == b) return 0; return (a>b?1:-1); } function makeSpaces(nbr){ var spaces = ""; for(var i=0; i<nbr; i++) spaces += '\u00a0'; return document.createTextNode(spaces); } function makeLineBreak(){return document.createElement("br");} function insertAfter(elem, after) { var dad = after.parentNode; if(dad.lastchild == after) dad.appendChild(elem); else dad.insertBefore(elem, after.nextSibling); } function strContains(text, str){return (text.indexOf(str)!=-1);} setInterval(mainFunction, 500);