Ikariam Archive

By Ominous Last update May 31, 2011 — Installed 16,640 times.

There are 29 previous versions of this script.

Add Syntax Highlighting (this will take a few seconds, probably freezing your browser while it works)

// ==UserScript==
// @name		Ikariam Archive
// @namespace	Ikariam Archive
// @author		Ominous
// @description This script saves reports, messages and stores them in an archive. Be aware that this script is not approved, because it mimics a Ikariam Plus feature. Use it on Your own risk.
// @version		0.4.2.4
// @history		0.4.2.4 Re-implementation of spy reports archive
// @history		0.4.1.4 Bulgarian translation /bg/ (tnx mr_antigravity)
// @history		0.4.1.3 France translation broke script, unescaped '
// @history		0.4.1.2 France translation /fr/ (tnx laurielle)
// @history		0.4.1.1 Latvian correction lt>lv (tnx Andrejs)
// @history		0.4.1.0 new version, new css path...
// @history		0.4.0.1 added Latvian translation /lv/ (tnx Andrejs)
// @history		0.4.0.0 added Portuguese translation /pt/ (tnx jomacho)
// @history		0.4.0.0 changed css path due to a change in game version (tnx Cherry)
// @history		0.4.0.0 replaced some buttons texts for actual translations (tnx Cherry)
// @history		0.3.3.4 converted Serbian translation to cirilic /rs/ (tnx s-a-k-a)
// @history		0.3.3.3 added Spanish translation /es/ (tnx Rada974)
// @history		0.3.3.2 conflict with "Vejida`s Spy Protection Check" (tnx aletsan for reporting)
// @history		0.3.3.2 added Romanian translation /ro/ (tnx gheorghe)
// @history		0.3.3.2 added Greek translation /gr/ (tnx aletsan)
// @history		0.3.3.1 added Danish translation /dk/ (tnx MicCo)
// @history		0.3.3.0 css path changed
// @history		0.3.2.0 added Polish translation /pl/ (tnx Morpheush)
// @history		0.3.2.0 added language for ba, rs, com, de (tnx Cherry)
// @history		0.3.2.0 added language support
// @history		0.3.2.0 added autoupdate
// @history		0.3.2.0 patch conflict with other scripts that prevented injecting military arachive and report collecting (tnx for debuging Cherry)
// @history		0.3.2.0 archive expandable by clicking on table row not just arrow icon
// @history		0.3.1.1 hotfix, inbox archive page not populated
// @history		0.3.1 added archiving for outbox messages [tnx JosDaBosS for reminding me of outbox feature of the game :D]
// @history		0.3 v0.3.2 support
// @history		0.3 archive view/functionality redesing
// @history		0.3 one click multyple messages archiving
// @history		0.3 one click multyple reports/messages deleted
// @history		0.2 multi domain support [for thoes who play on more than one server]
// @include		http://s*.ikariam.*/*
// ==/UserScript==

/*
	Copyright (c) 2009, Ominous
	Released under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License: http://creativecommons.org/licenses/by-nc-sa/3.0/
		
	Please if You modify script, maintain my name as original author.
	tnx
*/
var cversion = '0.4.2.4';
var lang = lang();
var time = new Date().getTime()+'';
var getName = window.location.host+'.lastCheck';
var last_check = GM_getValue(getName);
if(!last_check) { GM_setValue(getName,time); }
if(time - last_check > 86400000)
{
	GM_setValue(getName,time);
	GM_xmlhttpRequest({
		method:				"GET",
		url:				"http://userscripts.org/scripts/source/52398.meta.js?sinc="+time,
		headers:			{ Accept:"text/javascript; charset=UTF-8" },
		overrideMimeType:	"application/javascript; charset=UTF-8",
		onload:				function(response) { checkversion(response); }
		});
}
function checkversion(response)
{
	var availableVersion;
	if (response.status == 200)
	{
		var resReg = /\/\/ @version\s+(\d+\.\d+\.\d+\.\d+)/.exec(response.responseText);
		if (resReg != null)
		{
			availableVersion = resReg[1];
		}
	}
	if(availableVersion!=cversion)
	{
		if(confirm(lang.newversion+availableVersion))
		{
			GM_openInTab('http://userscripts.org/scripts/source/52398.user.js');
		}
	}
}
// autoupdate	
function lang()
{
	var host = window.location.host.split('\.');
	if(host.length == 4 && host[3]=='com') { var lang_sw = host[1]; } else { var lang_sw = host[3]; }
	if(!lang_sw) { var lang_sw = 'en'; }
	switch(lang_sw)
	{
		case 'ba':
		lang = {
			'selectall': 'Označi sve',
			'selectnone': 'ništa',
			'selectinvert': 'okreni',
			'save': 'Sačuvaj u arhivu',
			'saveselected': 'Sačuvaj označeno',
			'remove': 'Obriši',
			'removeselected': 'Obriši označeno iz arhive',
			'messages': 'Poruke',
			'sender': 'Pošiljalac',
			'title': 'Naslov',
			'city': 'Grad',
			'date': 'Datum',
			'to': 'Primalac',
			'targetcity': 'Grad meta',
			'action': 'Akcija',
			'battle': 'Borba',
			'savereport': 'Sačuvaj izveštaj',
			'ikariamarchive': 'Ikariam arhiva',
			'alertmultydelete':'Brišete više poruka. Dali ste sigurni?',
			'alertsaved': 'Sačuvano',
			'alertsavefailed': 'Sačuvavanje nije uspelo!!!',
			'newversion': 'Dostupna je nova verzija Ikariam arhive. Instaliraj verziju: '
		}
		break;
		case 'rs':
			lang = {
			'selectall': 'Означи све',
			'selectnone': 'ништа',
			'selectinvert': 'окрени',
			'save': 'Сачувај у архиву',
			'saveselected': 'Сачувај означено',
			'remove': 'Обриши',
			'removeselected': 'Обриши означено из архиве',
			'messages': 'Поруке',
			'sender': 'Пошиљалац',
			'title': 'Наслов',
			'city': 'Град',
			'date': 'Датум',
			'to': 'Прималац',
			'targetcity': 'Град мета',
			'action': 'Акција',
			'battle': 'Борба',
			'savereport': 'Сачувај извештај',
			'ikariamarchive': 'Икариам архива',
			'alertmultydelete':'Бришете више порука. Да ли сте сигурни?',
			'alertsaved': 'Сачувано',
			'alertsavefailed': 'Чување није успело!!!',
			'newversion': 'Доступна је нова верзија Икариам архиве. Инсталирај верзију: '
			}
			break;
		case 'dk':
		lang = {
			'selectall': 'Vælg alt',
			'selectnone': 'Ingen',
			'selectinvert': 'Omvendt',
			'save': 'Gem i arkiv',
			'saveselected': 'Gem valgte',
			'remove': 'Remove',
			'removeselected': 'Fjern det valgte fra arkivet',
			'messages': 'Meddelelser',
			'sender': 'Afsender',
			'title': 'Titel',
			'city': 'By',
			'date': 'Dato',
			'to': 'Til',
			'targetcity': 'Mål by',
			'action': 'Hændelse',
			'battle': 'Kamp',
			'savereport': 'Gem rapport',
			'ikariamarchive': 'Ikariam arkiv',
			'alertmultydelete':'Du er ved at slette flere meddelelser, er Du sikker?',
			'alertsaved': 'Gemt',
			'alertsavefailed': 'Arkivering fejlede!!!',
			'newversion': 'Ny version af Ikariam arhive er tilgængelig. Installere ny version: '
		}
		break;
		case 'en':
		lang = {
			'selectall': 'Select all',
			'selectnone': 'None',
			'selectinvert': 'Invert',
			'save': 'Save in archive',
			'saveselected': 'Save selected',
			'remove': 'Remove',
			'removeselected': 'Remove selected from archive',
			'messages': 'Messages',
			'sender': 'Sender',
			'title': 'Title',
			'city': 'City',
			'date': 'Date',
			'to': 'To',
			'targetcity': 'Target city',
			'action': 'Action',
			'battle': 'Battle',
			'savereport': 'Save report',
			'ikariamarchive': 'Ikariam archive',
			'alertmultydelete':'You are about to delete multiple messages. Are you sure?',
			'alertsaved': 'Saved',
			'alertsavefailed': 'Saving failed!!!',
			'newversion': 'New version of Ikariam archive is available. Install version: '
		}
		break;
		case 'pl':
		lang = {
			'selectall': 'Wszystko',
			'selectnone': 'Nic',
			'selectinvert': 'Odwróć',
			'save': 'Zapisz w archiwum',
			'saveselected': 'Zapisz wybrane ',
			'remove': 'Skasuj',
			'removeselected': 'Skasuj wybrane z archiwum',
			'messages': 'Wiadomości',
			'sender': 'Wysyłający',
			'title': 'Tytuł',
			'city': 'Miasto',
			'date': 'Data',
			'to': 'Do',
			'targetcity': 'Miasto docelowe',
			'action': 'Akcja',
			'battle': 'Bitwa',
			'savereport': 'Zapisz raport',
			'ikariamarchive': 'Ikariam archive',
			'alertmultydelete':'Jesteś pewien, że chcesz usunąć kilka wiadomości?',
			'alertsaved': 'Zapisano',
			'alertsavefailed': 'Zapisywanie nie powiodło się!!!',
			'newversion': 'Nowa wersja "Ikariam arhive" jest już dostępna. Zainstaluj wersje: '
		}
		break;
		case 'ro':
		lang = {
			'selectall': 'Toate',
			'selectnone': 'Niciunul',
			'selectinvert': 'Inversează',
			'save': 'Salvează în arhivă',
			'saveselected': 'Salvează selectate',
			'remove': 'Elimină',
			'removeselected': 'Elimina selectate',
			'messages': 'Mesaje',
			'sender': 'Expeditor',
			'title': 'Titlu',
			'city': 'Oraş',
			'date': 'Data',
			'to': 'Către',
			'targetcity': 'Oraşul ţintă',
			'action': 'Acţiune',
			'battle': 'Bătălie',
			'savereport': 'Salvează raport',
			'ikariamarchive': 'Arhiva Ikariam',
			'alertmultydelete':'Sigur vrei să ştergi mai multe mesaje deodată?',
			'alertsaved': 'Salvat',
			'alertsavefailed': 'Salvarea a eşuat !!',
			'newversion': 'A apărut o nouă versiune a "Ikariam arhive". Tu ai versiunea:'
		}
		break;
		case 'gr':
		lang = {
			'selectall': 'Επιλογή όλων',
			'selectnone': 'Καμία',
			'selectinvert': 'Αντιστροφή επιλογής',
			'save': 'Σώσε στο αρχείο',
			'saveselected': 'Σώσε επιλεγμένα',
			'remove': 'Διαγραφή αναφοράς',
			'removeselected': 'Διέγραξε τις επιλεγμένες απο το αρχείο',
			'messages': 'Μηνύματα',
			'sender': 'Αποστολέας',
			'title': 'Τίτλος',
			'city': 'Πόλη',
			'date': 'Ημ/νία',
			'to': 'Προς',
			'targetcity': 'Πόλη στόχος',
			'action': 'Ενέργεια',
			'battle': 'Μάχη',
			'savereport': 'Σώσε αναφορά',
			'ikariamarchive': 'Ikariam archive',
			'alertmultydelete':'Θα διαγραφούν πολλά μηνύματα. Είσαι σίγουρος?',
			'alertsaved': 'Η αναφορά σώθηκε',
			'alertsavefailed': 'Το σώσιμο απέτυχε!!!',
			'newversion': 'Νέα έκδοση διαθέσιμη. Έκδοση προς εγκατάσταση: '
		}
		break;
		case 'es':
		lang = {
			'selectall': 'Selecciona Todos',
			'selectnone': 'Ninguno',
			'selectinvert': 'Invertir seleccion',
			'save': 'Guardar en Archivo',
			'saveselected': 'Seleccionado Guardar',
			'remove': 'Remover',
			'removeselected': 'Remover lo seleccionado de los Archivos',
			'messages': 'Mensajes',
			'sender': 'Remitente',
			'title': 'Titulo',
			'city': 'Ciudad',
			'date': 'Fecha',
			'to': 'Para',
			'targetcity': 'Ciudad Contrincante',
			'action': 'Accion',
			'battle': 'Batalla',
			'savereport': 'Salvar reporte',
			'ikariamarchive': 'Ikariam archive',
			'alertmultydelete':'Estas a punto de eliminar multiples mensajes. ¿estas seguro?',
			'alertsaved': 'Guardado',
			'alertsavefailed': 'Falló al guardar!!!',
			'newversion': 'Nueva version de Ikariam arhive esta disponible. Instalarla: '
		}
		break;
		case 'pt':
		lang = {
			'selectall': 'Todos',
			'selectnone': 'Nenhum',
			'selectinvert': 'Inverso',
			'save': 'Guardar',
			'saveselected': 'Guardar Seleccionados',
			'remove': 'Remover',
			'removeselected': 'Remover Seleccionados',
			'messages': 'Mensagens',
			'sender': 'Remetente',
			'title': 'Título',
			'city': 'Cidade',
			'date': 'Data',
			'to': 'Para',
			'targetcity': 'Cidade Destino',
			'action': 'Acção',
			'battle': 'Batalha',
			'savereport': 'Guardar Relatório',
			'ikariamarchive': 'Arquivo Ikariam',
			'alertmultydelete':'Tem a certeza que quer eliminar as mensagens seleccionadas?',
			'alertsaved': 'Guardado',
			'alertsavefailed': 'Erro a Guardar',
			'newversion': 'Está disponível nova versão do Ikariam Arquive. Instalar: '
		}
		break;
		case 'lv':
		lang = {
			'selectall': 'Izvēlēties visu',
			'selectnone': 'Izvēlēties neko',
			'selectinvert': 'Pretēji',
			'save': 'Saglabāt arhīvā',
			'saveselected': 'Saglabāt izvēlētos',
			'remove': 'Izdzēst',
			'removeselected': 'Izdzēst izvēlētos',
			'messages': 'Vēstules',
			'sender': 'Sūtītājs',
			'title': 'Nosaukums',
			'city': 'Pilsēta',
			'date': 'Datums',
			'to': 'Kam',
			'targetcity': 'Izvēlētā pilsēta',
			'action': 'Rīcība',
			'battle': 'Kauja',
			'savereport': 'Saglabāt ziņojumu',
			'ikariamarchive': 'Arhīvs',
			'alertmultydelete':'Tu esi izvēlējies izdzēst vairākas vēstules. Vai tu esi pārliecināts?',
			'alertsaved': 'Saglabāts',
			'alertsavefailed': 'Saglabāt neizdevās!!!',
			'newversion': 'Jauna versija Ikariam archive ir pieejama. Instalēt versiju: '
		}
		break;
		case 'fr':
		lang = {
			'selectall': 'Tous',
			'selectnone': 'Aucun',
			'selectinvert': 'Intervertir',
			'save': 'Archiver',
			'saveselected': 'Archiver la sélection',
			'remove': 'Effacer',
			'removeselected': 'Effacer la sélection',
			'messages': 'Messages',
			'sender': 'De',
			'title': 'Objet',
			'city': 'Ville',
			'date': 'Date',
			'to': 'À',
			'targetcity': 'Ville cible',
			'action': 'Action',
			'battle': 'Combat',
			'savereport': 'Archiver le rapport',
			'ikariamarchive': 'Archives Ikariam',
			'alertmultydelete':'Vous êtes sur le point d\'effacer plusieurs messages. Êtes-vous sûr ?',
			'alertsaved': 'Archivé',
			'alertsavefailed': 'Échec de l\'archivage !!',
			'newversion': 'Une nouvelle version d\'Ikariam Achive est disponible. Version d\'installation : '
		}
		break;
		case 'de':
		lang = {
			'selectall': 'Alle',
			'selectnone': 'Keine',
			'selectinvert': 'Auswahl umkehren',
			'save': 'Speichern ins Archiv',
			'saveselected': 'speichere gewählte',
			'remove': 'aus dem Archiv entfernen',
			'removeselected': 'ausgewählte aus dem Archiv entfernen',
			'messages': 'Nachrichten',
			'sender': 'Absender',
			'title': 'Betreff',
			'city': 'Stadt',
			'date': 'Datum',
			'to': 'Empfänger',
			'targetcity': 'Ziel Stadt',
			'action': 'Aktion',
			'battle': 'Kampf',
			'savereport': 'Bericht speichern',
			'ikariamarchive': 'Ikariam Archiv',
			'alertmultydelete':'Du bist dabei, mehrere Nachrichten zu löschen. Bist Du dir sicher?',
			'alertsaved': 'Nachricht gespeichert!',
			'alertsavefailed': '!!!Nachricht nicht gespeichert!!!',
			'newversion': 'Neue Version von Ikariam arhive verfügbar ist. Installieren Version:'
		}
		break;
		case 'bg':
		lang = {
			'selectall': 'Избери всички',
			'selectnone': 'Никой',
			'selectinvert': 'Обратен избор',
			'save': 'Запази в архива',
			'saveselected': 'Запази избраните',
			'remove': 'Премахни',
			'removeselected': 'Премахни избраните от архива',
			'messages': 'Съобщение',
			'sender': 'Подател',
			'title': 'Заглавие',
			'city': 'Град',
			'date': 'Дата',
			'to': 'До',
			'targetcity': 'Град',
			'action': 'Действие',
			'battle': 'Битка',
			'savereport': 'Запази доклада',
			'ikariamarchive': 'Икариамски архив',
			'alertmultydelete':'Ще изтриете множество съобщения. Сигурен ли сте?',
			'alertsaved': 'Запазено',
			'alertsavefailed': 'Архивирането неуспешно!!!',
			'newversion': 'Съществува нова версия на Икариамски архив. Инсталирай версия: '
		}
		default:
		lang = {
			'selectall': 'Select all',
			'selectnone': 'None',
			'selectinvert': 'Invert',
			'save': 'Save in archive',
			'saveselected': 'Save selected',
			'remove': 'Remove',
			'removeselected': 'Remove selected from archive',
			'messages': 'Messages',
			'sender': 'Sender',
			'title': 'Title',
			'city': 'City',
			'date': 'Date',
			'to': 'To',
			'targetcity': 'Target city',
			'action': 'Action',
			'battle': 'Battle',
			'savereport': 'Save report',
			'ikariamarchive': 'Ikariam archive',
			'alertmultydelete':'You are about to delete multiple messages. Are you sure?',
			'alertsaved': 'Saved',
			'alertsavefailed': 'Saving failed!!!',
			'newversion': 'New version of Ikariam archive is available. Install version: '
		}
	}
	return lang;
}

function locator(searchStr)
{
	var searchStr;
	var start = location.search.indexOf(searchStr)+searchStr.length+1;
	var end = (location.search.indexOf('&', start) == -1)? location.search.length : location.search.indexOf('&', start);
	return unescape(location.search.substring(start, end));
}
unsafeWindow.mout = function(e) { e.bgColor="#FDF7DD"; }
unsafeWindow.mover = function(e) { e.bgColor="#ECD5AC"; }
function ViewMsgArchive()
{
	GM_addStyle(".arrow_down { float:left; } .t_row { text-align:center; } .no_d {text-decoration: none;}");

	var reports = '<h3 class="header"><span class="textLabel">'+lang.messages+'</span></h3><table width="100%"><tr><th style="width:10px;"></th><th style="width:24%;">'+lang.sender+'</th><th style="width:24%;">'+lang.title+'</th><th style="width:24%;">'+lang.city+'</th><th>'+lang.date+'</th></tr>';
	var saves = GM_listValues();
	var domain = window.location.host;
	for (var d = 0; d < saves.length; d++)
	{
		if(saves[d].substr(0,domain.length)==domain)
		{
			if(saves[d].replace(domain+'.','').substr(0,4)=='msg_')
			{
				var report 	= GM_getValue(saves[d]);
				var parts 	= report.split('%|%');
				report = '<tr class="entry t_row" onmouseout="mout(this);" onmouseover="mover(this);"><td><input type="checkbox" value="'+saves[d]+'" /> </td><td onClick="toggleView(\''+saves[d]+'\');"> <img src="skin/layout/down-arrow.gif" id="msgi'+saves[d]+'" class="arrow_down" /> '+parts[0]+'</td><td onClick="toggleView(\''+saves[d]+'\');">'+parts[1]+'</td><td onClick="toggleView(\''+saves[d]+'\');">'+parts[2]+'</td><td onClick="toggleView(\''+saves[d]+'\');">'+parts[3]+'</td></tr><tr style="display:none;cursor:default;" class="text entry" id="'+saves[d]+'"><td colspan="5" style="padding:0px;"><p style="text-align: left;">'+parts[4]+'</p><div style="text-align:right;padding: 10px;"><a href="javascript:void(0);" style="" class="button no_d" onClick="deleteFromArchive(\''+saves[d]+'\');">'+lang.remove+'</a></div></td></tr>';
				reports = reports+report;
			}
		}
	}
	reports = reports + '<tr><td colspan="2"><a href="javascript:void(0);" onClick="selectArchived(\'all\');">'+lang.selectall+'</a> | <a href="javascript:void(0);" onClick="selectArchived(\'none\');">'+lang.selectnone+'</a> | <a href="javascript:void(0);" onClick="selectArchived(\'invert\');">'+lang.selectinvert+'</a></td><td colspan="3" style="padding: 10px;"><a href="javascript:void(0);" class="button no_d" onClick="deleteSlectedFromArchive();">'+lang.removeselected+'</a></td></tr></table>';
	return reports;
}
function ViewMsgArchiveOutbox()
{
	GM_addStyle(".arrow_down { float:left; } .t_row { text-align:center; } .no_d {text-decoration: none;}");
	var reports = '<h3 class="header"><span class="textLabel">'+lang.messages+'</span></h3><table width="100%"><tr><th></th><th>'+lang.to+'</th><th>'+lang.title+'</th><th>'+lang.date+'</th></tr>';
	var saves = GM_listValues();
	var domain = window.location.host;
	for (var d = 0; d < saves.length; d++)
	{
		if(saves[d].substr(0,domain.length)==domain)
		{
			if(saves[d].replace(domain+'.','').substr(0,7)=='msgout_')
			{
				var report 	= GM_getValue(saves[d]);
				var parts 	= report.split('%|%');
				report = '<tr class="entry t_row" onmouseout="mout(this);" onmouseover="mover(this);"><td><input type="checkbox" value="'+saves[d]+'" /></td><td onClick="toggleView(\''+saves[d]+'\');"><img src=skin/layout/down-arrow.gif id=msgi"'+saves[d]+'" class="arrow_down" /> '+parts[0]+'</td><td onClick="toggleView(\''+saves[d]+'\');">'+parts[1]+'</td><td onClick="toggleView(\''+saves[d]+'\');">'+parts[2]+'</td></tr><tr style="display:none;cursor:default;" class="text entry" id="'+saves[d]+'"><td colspan="4"><p style="text-align: left;">'+parts[3]+'</p><div style="text-align:right;padding: 10px;"><a href="javascript:void(0);" class="button no_d" onClick="deleteFromArchive(\''+saves[d]+'\');">'+lang.remove+'</a></div></td></tr>';
				reports = reports+report;
			}
		}
	}
	reports = reports + '<tr><td colspan="2"><a href="javascript:void(0);" onClick="selectArchived(\'all\');">All</a> | <a href="javascript:void(0);" onClick="selectArchived(\'none\');">None</a> | <a href="javascript:void(0);" onClick="selectArchived(\'invert\');">Invert</a></td><td colspan="2" style="padding: 10px;"><a href="javascript:void(0);" class="button no_d" onClick="deleteSlectedFromArchive();">'+lang.removeselected+'</a></td></tr></table>';
	return reports;
}
function ViewSpyReports()
{
	GM_addStyle(".arrow_down { float:left; } .no_d {text-decoration: none;}");
	var reports = '<div class="contentBox01" id="msgArchiveContainer"><h3 class="header"> </h3><div class="content"><table style="width:100%; margin:0px;" class="table01"><tr style="text-align:center;border-bottom:1px dotted #E4B873;"><th></th><th>'+lang.targetcity+'</th><th>'+lang.action+'</th><th>'+lang.date+'</th></tr>';
	var saves = GM_listValues();
	var domain = window.location.host;
	for (var d = 0; d < saves.length; d++)
	{	
		if(saves[d].substr(0,domain.length)==domain)
		{
			if(saves[d].replace(domain+'.','').substr(0,4)=='spy_')
			{
				var report 	= GM_getValue(saves[d]);
				var parts 	= report.split('%|%');
				report = '<tr style="border-bottom:1px dotted #E4B873;cursor: pointer;" class="entry" onmouseout="mout(this);" onmouseover="mover(this);"><td style="cursor:default;"><input type="checkbox" value="'+saves[d]+'" /></td><td onClick="toggleView(\''+saves[d]+'\');"><img src=skin/layout/down-arrow.gif id=msgi"'+saves[d]+'" class="arrow_down" /> '+parts[1]+'</td><td onClick="toggleView(\''+saves[d]+'\');">'+parts[0]+'</td><td onClick="toggleView(\''+saves[d]+'\');">'+parts[2]+'</td></tr><tr><td colspan="4" style="display: none;" id="'+saves[d]+'"><table><tr><td>'+parts[3]+'</td></tr></table><div style="text-align:right;padding: 10px;"><a href="javascript:void(0);" class="button no_d" onClick="deleteFromArchive(\''+saves[d]+'\');">'+lang.remove+'</a></div></td></tr>';
				reports = reports+report;
			}
		}
	}
	reports = reports+'<tr><td colspan="2"><a href="javascript:void(0);" onClick="selectArchived(\'all\');">'+lang.selectall+'</a> | <a href="javascript:void(0);" onClick="selectArchived(\'none\');">'+lang.selectnone+'</a> | <a href="javascript:void(0);" onClick="selectArchived(\'invert\');">'+lang.selectinvert+'</a></td><td colspan="3" style="padding: 10px;"><a href="javascript:void(0);" class="button no_d" onClick="deleteSlectedFromArchive();">'+lang.removeselected+'</a></td></tr>';
	return reports+'</table></div><div class="footer"></div></div>';
}
function ViewCombatReports()
{
	GM_addStyle(".arrow_down { float:left; } .t_row { text-align:center; } .no_d {text-decoration: none;}");
	var reports = '<div id="msgArchiveContainer"><table style="width:100%; margin:0px;" class="table01"><tr style="text-align:left;border-bottom:1px dotted #E4B873;"><th style="width: 15px;"></th><th style="width:45%;">'+lang.battle+'</th><th>'+lang.date+'</th></tr>';
	var saves = GM_listValues();
	var domain = window.location.host;
	for (var d = 0; d < saves.length; d++)
	{
		if(saves[d].substr(0,domain.length)==domain)
		{
			if(saves[d].replace(domain+'.','').substr(0,4)=='com_')
			{
				var report 	= GM_getValue(saves[d]);
				var parts 	= report.split('%|%');
				report = '<tr style="border-bottom:1px dotted #E4B873;cursor: pointer;" class="entry" onmouseout="mout(this);" onmouseover="mover(this);"><td style="cursor: default;"><input type="checkbox" value="'+saves[d]+'" /></td><td onClick="toggleView(\''+saves[d]+'\');"><img src="skin/layout/down-arrow.gif" id="msgi'+saves[d]+'" class="arrow_down" /> '+parts[0]+'</td><td onClick="toggleView(\''+saves[d]+'\');">'+parts[1]+'</td></tr><tr><td colspan="3" style="display: none;text-align:left; padding: 0px;" id="'+saves[d]+'"><div id="troopsReport">'+parts[2]+'<div class="result">'+parts[3]+'</div></div><div style="text-align:right;padding: 10px;"><a href="javascript:void(0);" class="button no_d" onClick="deleteFromArchive(\''+saves[d]+'\');">'+lang.remove+'</a></div></td></tr>';
				reports = reports+report;
			}
		}
	}
	reports = reports+'<tr><td colspan="2"><a href="javascript:void(0);" onClick="selectArchived(\'all\');">'+lang.selectall+'</a> | <a href="javascript:void(0);" onClick="selectArchived(\'none\');">'+lang.selectnone+'</a> | <a href="javascript:void(0);" onClick="selectArchived(\'invert\');">'+lang.selectinvert+'</a></td><td colspan="3" style="padding: 10px;"><a href="javascript:void(0);" class="button no_d" onClick="deleteSlectedFromArchive();">'+lang.removeselected+'</a></td></tr>';
	return reports+'</table><div class="footer"></div></div>';
}
unsafeWindow.toggleView = function(id)
{
	var id;
	var row = document.getElementById(id);
	if(row.style.display == 'none')
	{
		row.style.display = '';
	}
	else
	{
		row.style.display = 'none';
	}
}
unsafeWindow.saveSpyReport = function(element)
{
	var report_id = element.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id.replace('tbl_mail','');
	var header = document.getElementById('message'+report_id)
	var owner = header.getElementsByClassName('targetOwner')[0].innerHTML.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	var city = header.getElementsByClassName('targetCity')[0].innerHTML.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	var island = header.getElementsByClassName('targetIsland')[0].innerHTML.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	var mission = header.getElementsByClassName('subject')[0].innerHTML.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	var date = header.getElementsByClassName('date')[0].innerHTML.replace(/^\s\s*/, '').replace(/\s\s*$/, '');

	if(document.getElementById('tbl_mail'+report_id).getElementsByClassName('noReport').length == 0)
	{
	var reportTxt = document.getElementById('tbl_mail'+report_id).getElementsByClassName('report')[0].innerHTML.replace(/^\s\s*/, '').replace(/\s\s*$/, '').replace('id="resources"','style="margin: auto;"');

	var report = mission+'%|%'+owner+' ['+city+']@'+island+' '+'%|%'+date+'%|%'+reportTxt;
	var val_name = window.location.host+'.spy_'+report_id;
	if(window.setTimeout(function() {GM_setValue(val_name,report)},0))
	{
		alert(lang.alertsaved);
	}
	else
	{
		alert(lang.alertsavefailed);
	}
	}
	else
	{
		alert('Failed missions can\'t be saved!');
	}
}
unsafeWindow.deleteFromArchive = function(id)
{
	var id;
	window.setTimeout(GM_deleteValue,0,id);
	document.location.reload();
}
unsafeWindow.DeleteAllReports = function ()
{
	if(confirm('Delete all archived reports?'))
	{
		var saves = GM_listValues();
		for (var d = 0; d < saves.length; d++)
		{
			GM_deleteValue(saves[d]);
		}
	}
}
unsafeWindow.SaveCombatReport = function(id)
{
	var title = document.getElementsByClassName('contentBox01h')[0].getElementsByClassName('header')[0].childNodes[0].nodeValue;
	var date = document.getElementsByClassName('date')[0].innerHTML.replace('(','').replace(')','');
	var battle = document.getElementById('troopsReport').getElementsByClassName('content')[0].innerHTML.replace(/\s+/g,' ');
	var result = document.getElementById('troopsReport').getElementsByClassName('result')[0].innerHTML.replace(/\s+/g,' ');

	var report = title+'%|%'+date+'%|%'+battle+'%|%'+result;
	var val_name = window.location.host+'.com_'+id;
	if(window.setTimeout(function() {GM_setValue(val_name,report)},0))
	{
		alert(lang.alertsaved);
	}
	else
	{
		alert(lang.alertsavefailed);
	}
}
unsafeWindow.messageSave = function(object)
{
	var object;
	var id 		= object.parentNode.parentNode.parentNode.id;
	var ID	 	= id.replace('tbl_reply','');
	var header 	= document.getElementById('message'+ID);
	var msg 	= document.getElementById('tbl_mail'+ID).childNodes[1].childNodes[1].innerHTML;

	var from 	= header.childNodes[5].childNodes[0].innerHTML;
	var title 	= header.childNodes[7].innerHTML;
	var city 	= header.childNodes[9].innerHTML;
	var dt		= header.childNodes[11].innerHTML;
	
	var report = from+'%|%'+title+'%|%'+city+'%|%'+dt+'%|%'+msg;
	var val_name = window.location.host+'.msg_'+ID;
	if(window.setTimeout(function() {GM_setValue(val_name,report)},0))
	{
		alert(lang.alertsaved);
	}
	else
	{
		alert(lang.alertsavefailed);
	}
}
unsafeWindow.messageSaveOutbox = function(object)
{
	var object;
	var id 		= object.parentNode.parentNode.parentNode.id;
	var ID	 	= id.replace('tbl_mail','');
	var header 	= document.getElementById('tbl_mail'+ID).previousSibling.previousSibling;

	var to 	= header.childNodes[5].childNodes[0].innerHTML;;
	var title 	= header.childNodes[7].innerHTML;
	var dt		= header.childNodes[9].innerHTML;
	
	var msg 	= document.getElementById('tbl_mail'+ID).childNodes[1].childNodes[1].innerHTML;

	var report = to+'%|%'+title+'%|%'+dt+'%|%'+msg;
	var val_name = window.location.host+'.msgout_'+ID;
	if(window.setTimeout(function() {GM_setValue(val_name,report)},0))
	{
		alert(lang.alertsaved);
	}
	else
	{
		alert(lang.alertsavefailed);
	}
}
unsafeWindow.saveSelectedMSGS = function()
{
	var selectedMsgs = new Array();
	var allInputs = document.getElementById("deleteMessages").getElementsByTagName("input");
	var b = 0;
	for (var i=0; i<allInputs.length; i++) {
		 if (allInputs[i].getAttribute("type") == "checkbox") {
			 if (allInputs[i].checked) {
				selectedMsgs[b++] = allInputs[i].name.replace("deleteId[","").replace("]","");
			 }
		 }
	}
    for(var i in selectedMsgs)
    {
        var msg = document.getElementById("tbl_mail"+selectedMsgs[i]).childNodes[1].childNodes[1].innerHTML;
        var info = document.getElementById("message"+selectedMsgs[i]);
        var from = info.childNodes[5].childNodes[0].innerHTML;
        var subject = info.childNodes[7].innerHTML;
        var city = info.childNodes[9].innerHTML;
        var date_time = info.childNodes[11].innerHTML;

		var report = from+'%|%'+subject+'%|%'+city+'%|%'+date_time+'%|%'+msg;
		var val_name = window.location.host+'.msg_'+selectedMsgs[i];
		unsafeWindow.saveMSG(val_name,report);
	}
	alert(lang.alertsaved);
}
unsafeWindow.saveSelectedMSGS_outbox = function()
{
	var selectedMsgs = new Array();
	var allInputs = document.getElementById("deleteMessages").getElementsByTagName("input");
	var b = 0;
	for (var i=0; i<allInputs.length; i++) {
		 if (allInputs[i].getAttribute("type") == "checkbox") {
			 if (allInputs[i].checked) {
				selectedMsgs[b++] = allInputs[i].name.replace("deleteId[","").replace("]","");
			 }
		 }
	}
    for(var i in selectedMsgs)
    {
        var msg = document.getElementById("tbl_mail"+selectedMsgs[i]).childNodes[1].childNodes[1].innerHTML;
        var info = document.getElementById("tbl_mail"+selectedMsgs[i]).previousSibling.previousSibling;
        var to = info.childNodes[5].childNodes[0].innerHTML;
        var subject = info.childNodes[7].innerHTML;
        var date_time = info.childNodes[9].innerHTML;

		var report = to+'%|%'+subject+'%|%'+date_time+'%|%'+msg;
		var val_name = window.location.host+'.msgout_'+selectedMsgs[i];
		unsafeWindow.saveMSG(val_name,report);
	}
	alert(lang.alertsaved);
}
unsafeWindow.saveMSG = function(val_name,report) { window.setTimeout(function() {GM_setValue(val_name,report)},0); }
unsafeWindow.deleteSlectedFromArchive = function()
{
	if(confirm(lang.alertmultydelete))
	{
		var selectedMsgs = new Array();
		var allInputs = document.getElementById("msgArchiveContainer").getElementsByTagName("input");
		var b = 0;
		for (var i=0; i<allInputs.length; i++) {
			 if (allInputs[i].getAttribute("type") == "checkbox") {
				 if (allInputs[i].checked) {
					window.setTimeout(GM_deleteValue,0,allInputs[i].value);
				 }
			 }
		}
		document.location.reload();
	}
}
unsafeWindow.selectArchived = function(command)
{
		var selectedMsgs = new Array();
		var allInputs = document.getElementById("msgArchiveContainer").getElementsByTagName("input");
		var b = 0;
		for (var i=0; i<allInputs.length; i++) {
			 if (allInputs[i].getAttribute("type") == "checkbox") {
				if(command == 'all')
				{
					allInputs[i].checked = true;
				}
				if(command == 'none')
				{
					allInputs[i].checked = false;
				}
				if(command == 'invert')
				{
					if(allInputs[i].checked) { allInputs[i].checked = false;} else {allInputs[i].checked = true;}
				}
			 }
		}
}
var view = locator('view');
if(view=='militaryAdvisorReportView')
{
	var button = document.getElementsByClassName('link')[0].childNodes[3];
	button.parentNode.removeChild(button);
	var link_btn = document.createElement('a');
	link_btn.setAttribute('href','javascript:void(0);');
	link_btn.setAttribute('onClick','SaveCombatReport(\''+locator('combatId')+'\');');
	link_btn.setAttribute('class','button');
	link_btn.innerHTML = lang.savereport;
	document.getElementsByClassName('link')[0].appendChild(link_btn);
}
if(view=='militaryAdvisorCombatReportsArchive')
{
	document.getElementsByTagName('body')[0].id = 'militaryAdvisorReportView';
	document.getElementsByClassName('buildingDescription')[0].setAttribute('style','min-height:0px;');
	document.getElementsByTagName('link')[2].href = '/skin/ik_militaryAdvisorReportView_0.4.2.4.css';
	document.getElementById('troopsOverview').getElementsByClassName('content')[0].innerHTML = ViewCombatReports();
}
if(view=='safehouse'&&locator('tab')=='reports')
{
	var buttons = document.getElementsByClassName('next');
	for (var i in buttons)
	{
		buttons[i].innerHTML = '<a href="javascript:void(0);" style="text-decoration: none;" class="button" onClick="saveSpyReport(this);">'+lang.savereport+'</a>';
	}
}
if(view=='safehouse'&&locator('tab')=='archive')
{
	document.getElementById("mainview").childNodes[5].childNodes[1].innerHTML = ViewSpyReports();
}
if(view=='diplomacyAdvisor')
{
	var body = document.getElementsByTagName('body');
	var cbox = document.getElementsByClassName('selection');
	cbox[0].innerHTML = cbox[0].innerHTML + '<a href="javascript:void(0);" style="text-decoration: none;" class="button" onClick="saveSelectedMSGS();">'+lang.saveselected+'</a>';
	var retnode = [];
	var myclass = new RegExp('\\b'+'costAmbrosia'+'\\b');
	var elem = document.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++)
	{
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	for(var i in retnode)
	{
		retnode[i].parentNode.innerHTML = '<a href="javascript:void(0);" style="text-decoration: none;" class="button" onClick="messageSave(this);">'+lang.save+'</a>';
	}
}
if(view=='diplomacyAdvisorOutBox')
{
	var body = document.getElementsByTagName('body');
	var cbox = document.getElementsByClassName('selection');
	cbox[0].innerHTML = cbox[0].innerHTML + '<a href="javascript:void(0);" style="text-decoration: none;" class="button" onClick="saveSelectedMSGS_outbox();">'+lang.saveselected+'</a>';
	var retnode = [];
	var myclass = new RegExp('\\b'+'costAmbrosia'+'\\b');
	var elem = document.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++)
	{
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	for(var i in retnode)
	{
		retnode[i].parentNode.innerHTML = '<a href="javascript:void(0);" style="text-decoration: none;" class="button" onClick="messageSaveOutbox(this);">'+lang.save+'</a>';
	}
}
if(view=='diplomacyAdvisorArchive')
{
	document.getElementById('deleteMessages').childNodes[1].childNodes[1].childNodes[0].childNodes[0].childNodes[0].innerHTML = '> '+lang.ikariamarchive+' <';
	
	var tabel = document.getElementById('deleteMessages').childNodes[1].getElementsByTagName("TBODY")[0];
	var row	= document.createElement("TR");
	var td = document.createElement("TD");

	td.setAttribute('colspan','6');
	td.setAttribute('id','msgArchiveContainer');
	td.setAttribute('style','padding:0px;');
	row.appendChild(td);
	tabel.appendChild(row);


	document.getElementById('msgArchiveContainer').innerHTML = ViewMsgArchive();
}
if(view=='diplomacyAdvisorArchiveOutBox')
{
	document.getElementById('deleteMessages').childNodes[1].childNodes[1].childNodes[0].childNodes[0].childNodes[0].innerHTML = '> '+lang.ikariamarchive+' <';
	
	var tabel = document.getElementById('deleteMessages').childNodes[1].getElementsByTagName("TBODY")[0];
	var row	= document.createElement("TR");
	var td = document.createElement("TD");

	td.setAttribute('colspan','6');
	td.setAttribute('id','msgArchiveContainer');
	td.setAttribute('style','padding:0px;');
	row.appendChild(td);
	tabel.appendChild(row);


	document.getElementById('msgArchiveContainer').innerHTML = ViewMsgArchiveOutbox();
}