// ==UserScript==
// @name Ikariam Yardımcı Araç
// @autor BaRyU
// @email maganda_47@hotmail.com
// @namespace Ikariam
// @description Ikariam'a bazı yararlı kısayollar ekler.
// @include http://*.ikariam.net/*
// @exclude http://board.ikariam.*/
// ==/UserScript==
/*-------------------------------------
Propriétés du script
--------------------------------------*/
var DEBUT=new Date();
var url=document.URL;
var name='KronosLanguage';
var myLanguage = GM_getValue(name+"_","");
if(myLanguage=='') myLanguage='en';
var url=document.URL;//on récupére l'url du site.
if(/fr/.test(url))//en fonction de l'url on prend les regex(dépend de la langue du site).
var regex=new Array(
new RegExp(/Terrain|construire/),
new RegExp(/J/),
new RegExp(/h/),
new RegExp(/m/),
new RegExp(/s/));
else if(/org/.test(url))
var regex=new Array(
new RegExp(/Free|build/),
new RegExp(/D/),
new RegExp(/h/),
new RegExp(/m/),
new RegExp(/s/));
else
var regex=new Array(
new RegExp(/Terrain|construire/),
new RegExp(/J/),
new RegExp(/h/),
new RegExp(/m/),
new RegExp(/s/));
//En fonction du language du naviguateur on va utiliser un langage associé.
switch(myLanguage){
case 'fr':
var lang=new Array(
' Fini à ',
'Fermer',
'Upgrader plus tard.',
'File de construction',
'Ajouter un bâtiment.',
'Construire dans',
'heures','minutes et',
'secondes',
'valider',
'Langue utilisée :',
'Temps d\'exécution',
'Pas de bâtiment en attente.',
'Bois',
'Luxe');
break;
case 'en':
var lang=new Array(
' bitişi ',
'Kapat',
'Sonra yükselt.',
'Inşa listesi',
'Inşa ekle.',
'Inşa edilme',
'saat',
'dakika ve',
'saniye',
'onayla',
'Kullanılan dil :',
'Geçikme zamanı',
'Inşa yok ve bekleniyor.',
'Odun',
'Lux');
break;
/*
case 'sp'://Thank to A.Rosemary
var lang=new Array(
' termina a las ',
'Cerrar',
'Actualizar más tarde.',
'Lista de construcción',
'Añadir edificio.',
'Construir en',
'horas',
'minutos y',
'segundos',
'confirmar',
'Idioma usado :',
'Tiempo de ejecución');
break;
*/
default:
var lang=new Array(
' Fini à ',
'Fermer',
'Upgrader plus tard.',
'File de construction',
'Ajouter un bâtiment.',
'Construire dans',
'heures',
'minutes et',
'secondes',
'valider',
'Langue utilisée :',
'Temps d\'exécution',
'Pas de bâtiment en attente.',
'Bois',
'Luxe');
break;
}
var autor='Kronos(Merwin)';
var name='Kronos';
var version=' 0.2a';
/*-------------------------------------
Création de div, br, link etc...
-------------------------------------*/
function urlBase()
{
var href= location.href;
var arret= href.indexOf('?');
href=href.substr(0,arret);
return href;
}
function wood(urlSite)
{
GM_xmlhttpRequest( {
method: 'GET',
url : urlSite,
onload: function(reponse) {
var wood='';
wood=reponse.responseText;
wood=wood.match(/id="valueResource" >\+[0-9]*</);
if(wood.length!=0){
wood=wood[0].match(/\+[0-9]*/);
var idIle=idIleRecup();
var chemin=document.getElementById('Kronos');
chemin.appendChild(createBr());
chemin.appendChild(createLink(lang[13]+'('+wood+')','index.php?view=resource&type=resource&id='+idIle));
}
}
});
}
function trade(urlSite)
{
GM_xmlhttpRequest( {
method: 'GET',
url : urlSite,
onload: function(reponse) {
var ress='', trade='';
var text=reponse.responseText;
var debut=text.indexOf('id="mainview');
var fin=text.indexOf('id="valueWorkCosts');
text=text.substr(debut,fin);
ress=text.match(/<h1>[a-zA-Zè ]*<\/h1>/);
ress=ress[0].replace(/<h1>/,'');
ress=ress.replace(/<\/h1>/,'');
trade=text.match(/id="valueResource" >\+[0-9]*</);
if(trade.length!=0){
trade=trade[0].match(/\+[0-9]*/);
var idIle=idIleRecup();
var chemin=document.getElementById('Kronos');
chemin.appendChild(createBr());
chemin.appendChild(createLink(ress+'('+trade+')','index.php?view=tradegood&type=tradegood&id='+idIle));
}
}
});
}
function urlParse(url,param)//on récupére une des valeurs get d'une url(son nom est le param.
{
var chaine=url;//On récupére l'url du site.
chaine=chaine.substring(1);
var dz=chaine.indexOf("#",0);
if(dz!=-1) {
chaine=chaine.substring(0,dz);}
chaine=chaine+"&";
if(chaine.indexOf(param,0)!=-1){
var pos=chaine.indexOf(param,0);
var pos2=chaine.indexOf("=",pos);
var pos3=chaine.indexOf("&",pos);
contenu=chaine.substring(pos2+1,pos3);}
return contenu;
}
function ajoutCSS(css,parent)
{
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
parent.appendChild(style);
return style;
}
function createDiv(id,classN,html)// On ajoute un div
{
var body, div;// on initialise les variables body et div
div = document.createElement('div');//on crée le div
div.id = id;//on lui ajoute l'id
div.className = classN;//le class
div.appendChild(document.createTextNode(html));//on lui ajoute du texte
//parent.appendChild(div);//et on l'ajoute au parent.
return div;
}
function createLink(nom,href)
{
var lien=document.createElement('a');//création d'un lien
lien.setAttribute('href', href);//On ajoute le href
lien.appendChild(document.createTextNode(nom));//On ajoute le text.
return lien;
}
function link(href)
{
location.href=href;
}
function createInput(name,type,size,value,id)//fonction de création input
{
var input= document.createElement('input');
input.setAttribute('name',name);
input.setAttribute('type',type);
if(size != '') input.setAttribute('size',size);
if(value != '') input.setAttribute('value',value);
input.setAttribute('id',id);
return input;
}
function createBr()//fonction de création saut de ligne
{
return document.createElement('br');
}
function levelBat()// Ajout d'un du level sur les batiments.
{
var css = '.pointsLevelBat{' +
'background-color:#FDF8C1;' +
'-moz-border-radius: 1em;' +
'border: 2px solid #918B69;'+
'border-radius: 1em;' +
'font-family: Sylfaen, "Times New Roman", sans-serif;' +
'font-size:12px;' +
'font-weight:bold;' +
'text-align:center;' +
'position:absolute;' +
'width:18px;' +
'cursor: pointer;'+
'height:15px;' +
'visibility: visible;' +
'margin-top: 10px;'+
'margin-left: 25px;'+
'z-index:50;}';
var style=ajoutCSS(css,document.getElementById('Kronos'));
var divContent=document.getElementById('locations');
if(divContent)
{
var href,node,title;
for(var i = 0; i < 15; i++)
{
node=document.getElementById('position'+i).getElementsByTagName('a')[0];
title = node.title;
href=node.href;
if(!(regex[0].test(title)))
{
var num = /[0-9]*$/.exec(title);
var href=node.href;
div=createDiv('pointLevelBat' + i,'pointsLevelBat',num);
document.getElementById('position'+i).appendChild(div);
div.setAttribute('lien', href);
div.addEventListener('click', function(){window.location.href = this.getAttribute('lien');},true);
//document.getElementById('Kronos').appendChild(document.createTextNode(href));
div.style.visibility = "visible";
div.title = node.title;
}
}
}
}
/*--------------------------------------------------------
Création des fonctions de temps.
---------------------------------------------------------*/
function mktimeMini(Tdays,Thours,Tminuts,Tseconds)//Transforme des variables en temps
{
var Temps = (Tdays * 86400 + Thours*3600 + Tminuts * 60+ Tseconds*1);
return Temps;
}
function setTextTime(temps)// Crée le temps de fin.
{
var Temps = new Date();
Temps.setTime(Temps.getTime() + temps*1000);
if(Temps.getMinutes()<10)var Tminuts= '0'+Temps.getMinutes();
else var Tminuts= Temps.getMinutes();
if(Temps.getHours()<10)var Thours= '0'+Temps.getHours();
else var Thours= Temps.getHours();
if(Temps.getSeconds()<10)var Tseconds= '0'+Temps.getSeconds();
else var Tseconds= Temps.getSeconds();
var Temps = lang[0]+Thours+':'+Tminuts+':'+Tseconds;
return Temps;
}
function constructionTempsFin()//Ajoute le temps de fin de construction des bâtiments.
{
if(document.getElementById('cityCountdown'))
{
var remix= document.getElementById('cityCountdown').innerHTML;
var sauv=remix;
remix = remix.replace(regex[1],'');
remix = remix.replace(regex[2],'');
remix = remix.replace(regex[3],'');
remix = remix.replace(regex[4],'');
var regexp=/ /;
var tableau=remix.split(regexp);
var tempsFin = 0;
if(regex[1].test(sauv) && regex[2].test(sauv)) tempsFin= mktimeMini(tableau[0],tableau[1],0,0);
else if(regex[2].test(sauv) && regex[3].test(sauv)) tempsFin= mktimeMini(0,tableau[0],tableau[1],0);
else if(regex[3].test(sauv) && regex[4].test(sauv)) tempsFin= mktimeMini(0,0,tableau[0],tableau[1]);
else if(regex[1].test(sauv)) tempsFin= mktimeMini(tableau[0],0,0,0);
else if(regex[2].test(sauv)) tempsFin= mktimeMini(0,tableau[0],0,0);
else if(regex[3].test(sauv)) tempsFin= mktimeMini(0,0,tableau[0],0);
else if(regex[4].test(sauv)) tempsFin= mktimeMini(0,0,0,tableau[0]);
TempsFin2 = setTextTime(tempsFin);
var test = document.createElement('div');
test.className='timetofinish';
var middle = document.createElement('span');
middle.className='middle';
var text = document.createTextNode(TempsFin2)
middle.appendChild(text);
var after = document.createElement('span');
after.className='after';
for(var i = 0; i<15;i++)
{
var parent = document.getElementById('position'+i);
var nbDiv=parent.getElementsByTagName('div');
if(nbDiv.length > 1)
{
if(parent.getElementsByTagName('div')[0].className=='constructionSite')
{
parent=parent.getElementsByTagName('div')[1];
parent.removeChild(parent.getElementsByTagName('span')[3]);
parent.appendChild(middle);
parent.appendChild(after);
}
}
}
}
}
/*---------------------
Ajout du panel dans le menu
---------------------*/
function panelInfo()//Ajoute un element en plus dans le menu.
{
var panel= document.createElement('div');
panel.setAttribute('class', 'dynamic');
var titre=document.createElement('h3');
titre.setAttribute('class', 'header');
titre.appendChild(document.createTextNode(name+version));
var corps=document.createElement('div');
corps.setAttribute('class','content');
corps.setAttribute('id','Kronos');
var footer=document.createElement('div');
footer.setAttribute('class','footer');
var script=document.createElement('script');
script.setAttribute('type','text/css');
script.appendChild(document.createTextNode('#Kronos{font-align:center;}'));
panel.appendChild(script);
var saut= document.createElement('br');
panel.appendChild(titre);
panel.appendChild(corps);
panel.appendChild(footer);
if(document.getElementById('container2'))
{
document.getElementById('container2').insertBefore(panel, document.getElementById('mainview'));
}
}
function options()
{
var div=createElement('div');
}
function idIleRecup()
{
//récupération de l'id de la ville :
if(document.getElementById('cityNav'))
{
var text=document.getElementById('cityNav').innerHTML;
var debut=text.indexOf('view=island&id=');
var fin=text.length;
text=text.substr(debut,fin);
var fin=text.indexOf('" tabindex');
var href=text.substr(19,fin-19);
return href;
}
}
/*------------------------
/\
/ ! \ Function Principal.
------
------------------------*/
function principal()
{
panelInfo();
var chemin=document.getElementById('Kronos');
var idIle=idIleRecup();
var base=urlBase();
wood(base+'?view=resource&type=resource&id='+idIle);
trade(base+'?view=tradegood&type=tradegood&id='+idIle);
constructionTempsFin();
levelBat();
var list=document.createElement('div');//List des batiments.
chemin.appendChild(list);
var script = document.createElement('style');
script.setAttribute('type','text/css');
script.appendChild(document.createTextNode('\n.popup\n{\nz-index: 1000;\nposition: absolute;\ntop: 30%;\nleft: 35%;\nwidth: 400px;\nheight: 250px;\nbackground-color: #DBB562;\nborder: 3px solid #CE9928;\n}'));
chemin.appendChild(script);// On inscrit les styles dans le script
chemin.appendChild(document.createTextNode(lang[10]+' '+navigator.language));
var FIN=new Date();
chemin.appendChild(createBr());
chemin.appendChild(document.createTextNode(lang[11]+' : '+(FIN-DEBUT)+'ms'));
//document.getElementById('Kronos').appendChild(document.createTextNode(myLanguage));
}
principal();//Appel de la fonction principal.
/********************
GreaseMonkey Settings :
********************/
GM_registerMenuCommand("Dili Degiştir", promptLanguage);
function promptLanguage()
{
var name='Script Dili';
var myLanguage = GM_getValue(name+"_","");
var newLanguage = false;
while(newLanguage!='fr' && newLanguage!='tr' && newLanguage!='pt' && newLanguage!='sp')
{
var newLanguage = prompt("Ikariam Koloni Aracı :\n Hangi dili kullanıyorsun?\n(fr:Fransızca; tr:Türkçe; pt: Portekizce) \nLanguage: " +myLanguage);
if(newLanguage=='fr' || newLanguage=='tr' || newLanguage=='pt' || newLanguage=='sp')
{
GM_setValue(name+"_",newLanguage);
break;
}
}
}