Source for "Kronos Utils"

By Kronos
Has no other scripts.


// ==UserScript==
// @name           Kronos Utils
// @autor          Merwin
// @email          merwinkronos@gmail.com
// @namespace      Kronos
// @description    Divers petits utilitaires.
// @include        http://*.ikariam.*/*
// @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(
	' Finish at ',
	'Close',
	'Upgrade later.',
	'Building list',
	'Add building.',
	'Build at',
	'hours',
	'minutes and',
	'seconds',
	'confirm',
	'Language used :',
	'Time of execution',
	'No building in waiting.',
	'Wood',
	'Luxe');
	break;
        case 'pt'://Thank to Tico
var lang=new Array(
' acaba às ',
'Fechar',
'Evoluir mais tarde.',
'Lista de construção',
'Adicionar edificio.',
'Construir em',
'horas',
'minutos e',
'segundos',
'confirmar',
'Lingua usada :',
'Tempo de execução',
'Nenhum Edificio em espera.',
'Madeira',
'Luxo');
break;
case 'da':
var lang=new Array(
' Færdig kl. ',
'Luk',
'Opgrader senere.',
'Bygnings liste',
'Tilføj bygning.',
'Byg kl.',
'timer',
'minutter og',
'sekunder',
'bekræft',
'Sprog brugt :',
'Udførelsestid',
'Ingen bygning venter.',
'Træ',
'Luxe');
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.3a';
/*-------------------------------------
Création de div, br, link etc...
-------------------------------------*/
function urlBase()
{
	var href= location.href;
	var arret= href.indexOf('?');
	if(arret!=-1)
		href=href.substr(0,arret);
	return href;
}
function valueRecupJS(nameValue){
	if(document.getElementById('cityResources').getElementsByTagName('script')[0]){
	 var text=document.getElementById('cityResources').getElementsByTagName('script')[0].innerHTML;
	 text=text.substr(text.indexOf(nameValue+' = '), text.length);
	 text=text.substr(nameValue.length+3,text.indexOf(';')-(nameValue.length+3));
	 return text;
	}
}
function recupNameRess(){
	if(document.getElementById('cityResources').getElementsByTagName('script')[0]){
		var _a=document.getElementById('cityResources');
		var text=_a.getElementsByTagName('script')[0].innerHTML;
		text=text.substr(text.indexOf('currTradegood'),text.length);
		text=text.substr(text.indexOf('value_'),text.indexOf('.innerHTML')-text.indexOf('value_')-2);
		for(var i = 0; i < _a.getElementsByTagName('li').length; i++){
			var _b=_a.getElementsByTagName('li')[i].getElementsByTagName('span');
			if(_b[1].id==text){
				return _b[0].innerHTML;
			}
		}
	}
}
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 secondsToHours(bySeconds){
	if(!isNaN(bySeconds)){
		var byHour=Math.ceil(bySeconds*3600);
		return byHour;
	}
}

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&amp;id=');
		if(debut!=-1)
		{
			var fin=text.length;
			text=text.substr(debut,fin);

			var fin=text.indexOf('" tabindex');
			var href=text.substr(19,fin-19);
		}
		else
			var href;
		return href;
	}
}
/*------------------------
   /\
/  !   \    Function Principal.
------
------------------------*/
function principal()
{
	recupNameRess();
	var luxeByHours=secondsToHours(valueRecupJS('startTradegoodDelta'));
	var woodByHours=secondsToHours(valueRecupJS('startResourcesDelta'));
	var nameLuxe=recupNameRess();
	panelInfo();
	var chemin=document.getElementById('Kronos');
	var idIle=idIleRecup();
	var base=urlBase();
	constructionTempsFin();
	levelBat();



	var list=document.createElement('div');//List des batiments.
	list.appendChild(createLink(lang[13]+': +'+woodByHours+'',base+'?view=resource&type=resource&id='+idIle));
	list.appendChild(createBr());
	list.appendChild(createLink(nameLuxe+' +'+luxeByHours+'',base+'?view=tradegood&type=tradegood&id='+idIle));
	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("Ikariam Kronos Tools: Your language", promptLanguage);
function promptLanguage()
{
	var name='KronosLanguage';
	var myLanguage = GM_getValue(name+"_","");
	var newLanguage = false;
	while(newLanguage!='fr' && newLanguage!='en' && newLanguage!='pt' && newLanguage!='da')
	{
	var newLanguage = prompt("Ikariam Kronos Tools :\n What language do you speak?\n(fr:French; en:English; pt: Portuguese) \nLanguage: " +myLanguage);
		if(newLanguage=='fr' || newLanguage=='en' || newLanguage=='pt' || newLanguage=='da')
		{
			GM_setValue(name+"_",newLanguage);
			break;
		}
	}
}