
// Üzenet Jelölő Script
// version 1.0.0
// 2009-08-17
// --------------------------------------------------------------------
//
// This is a Greasemonkey user script.  To install it, you need
// Greasemonkey 0.3 or later: http://greasemonkey.mozdev.org/
// Then restart Firefox and revisit this script.
// Under Tools, there will be a new menu item to "Install User Script".
// Accept the default configuration and install.
//
// To uninstall, go to Tools/Manage User Scripts,
// select "Üzenet Jelölő", and click Uninstall.
//
// --------------------------------------------------------------------
//
// ==UserScript==
// @name          Üzenet Jelölő
// @namespace     http://www.freeweb.hu/sipkacbt/script/
// @description   Script for Ikariam v.0.3.1
// @include       http://*.hu.ikariam.com/index.php
// @include	  	  http://*.hu.ikariam.com/index.php?action=Messages*
// @include       http://*.hu.ikariam.com/index.php?view=sendIKMessage&msgType=51*
// @include       http://*.hu.ikariam.com/index.php?view=sendIKMessage&allyId*
// @include       http://*.hu.ikariam.com/index.php?view=diplomacyAdvisor*
// @exclude	  	  http://*.hu.ikariam.com/index.php?view=diplomacyAdvisorTreaty
// @exclude       http://*.hu.ikariam.com/index.php?view=diplomacyAdvisorAlly
// ==/UserScript==

// ------------------------------------------------------------------------
// ------------- BŐVÍTHETŐ KATEGÓRIÁK KEZDETE -----------------------------
//
// ------------------ Kategóriák definiálásának kezdete ------------------- 
//
alap = new Object();
	alap.label = 'Körüzenet - ';
fontos = new Object();
	fontos.label = alap.label + 'FONTOS'; //Fontos = --fontos--
	fontos.code = '--fontos--';
	fontos.color = '#fd8279';
	fontos.active = '#f07a72';
hadugy = new Object();
	hadugy.label = alap.label +'HADÜGY'; //Hadugy = --hadugy--
	hadugy.code = '--hadugy--';
	hadugy.color = '#fb5656';
	hadugy.active = '#ee5050';
informacio = new Object();
	informacio.label = alap.label + 'INFORMÁCIÓ'; //Információ = --informa--
	informacio.code = '--inform--';
	informacio.color = '#f1f099';
	informacio.active = '#e3e28f';
kereskedelem = new Object();
	kereskedelem.label = alap.label + 'KERESKEDELEM'; //Kereskedelem = --keresk--
	kereskedelem.code = '--keresk--';
	kereskedelem.color = '#bbe9b4';
	kereskedelem.active = '#b0dca9';
kultur = new Object();
	kultur.label = alap.label + 'KULTUR'; //Kultur = --kultur--
	kultur.code = '--kultur--';
	kultur.color = '#edd6c6';
	kultur.active = '#dfc6b4';
kozerdeku = new Object();
	kozerdeku.label = alap.label + 'KÖZÉRDEKŰ'; //Közérdekű = --kozerd--
	kozerdeku.code = '--kozerd--';
	kozerdeku.color = '';
	kozerdeku.active = '';
vicc = new Object();
	vicc.label = alap.label + 'VICC'; //Vicc = --vicccc--
	vicc.code = '--vicccc--';
	vicc.color = '#d4cdfa';
	vicc.active = '#c5bdeb';
erdektelen = new Object();
	erdektelen.label = alap.label + 'ÉRDEKTELEN'; //Érdektelen = --erdekt--
	erdektelen.code = '--erdekt--';
	erdektelen.color = '#e7e6e6';
	erdektelen.active = '#dad7d7';
kerdes = new Object();
	kerdes.label = alap.label + 'KÉRDÉS'; //Kérdés = --kerdes--
	kerdes.code = '--kerdes--';
	kerdes.color = '#c4e1ce';
	kerdes.active = '#b5d6c1';
valasz = new Object();
	valasz.label = alap.label + 'VÁLASZ'; //Válasz = --valasz--
	valasz.code = '--valasz--';
	valasz.color = '#c4e1ce';
	valasz.active = '#b5d6c1';	
privat = new Object();
	privat.label = 'Üzenet'; //Üzenet
	privat.color = '#cbdbf9';
	privat.active = '#bbccec';		
//
// ------------------ Kategóriák definiálásának vége ----------------------
//
// ------------------ Megjelenítendő kategóriák beállításának kezdete -----
//
var propertyArray = new Array();
	propertyArray.push(fontos, hadugy, informacio, kereskedelem, kultur, kerdes, valasz, vicc, erdektelen)
//
// ------------------ Megjelenítendő kategóriák beállításának vége --------
//
// ------------- BŐVÍTHETŐ KATEGÓRIÁK VÉGE --------------------------------
// ------------------------------------------------------------------------

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

url = window.location.href;
HTMLbody = document.getElementsByTagName('body')[0];
bodyID = HTMLbody.id;

if (url.indexOf('view=sendIKMessage') > 0 && url.indexOf('msgType=51') > 0) {
	subject = document.getElementById('mailSubject');
	for(i=0; i<subject.childNodes.length; i++) {
		for(z=0; z<subject.childNodes[i].childNodes.length; z++) {
			if(subject.childNodes[i].tagName == 'SPAN' && subject.childNodes[i].childNodes[z].tagName == 'SPAN') {
				var oldSpan = subject.childNodes[i].childNodes[z];
				oldSpan.parentNode.removeChild(oldSpan);
				var newSpan = document.createElement('span');
				subjOption = '<select style="font-size: 12px; height: 19px;" id="msgSel">';
				subjOption = subjOption + '<option value="" selected="selected">Körüzenet - Szövetség</option>';
				for(s = 0; s < propertyArray.length; s++) {
					subjOption = subjOption + '<option value="' + propertyArray[s].code + '">' + propertyArray[s].label + '</option>';
				}
				subjOption = subjOption + '</select>';
				newSpan.innerHTML = subjOption;
				subject.appendChild(newSpan);
			}
		}
	}
	
	var msgTypeSel = document.getElementById('msgSel');
	msgTypeSel.addEventListener('change',
		function() {
			var ertek = msgTypeSel.value;
			var textarea = '';
			var szoveg = document.getElementById('text');
			textarea = szoveg.value;
			vanSpec = textarea.slice(0, 2);
			ertSpec = textarea.slice(0, 10);
			if(vanSpec == '--') {
				textarea = textarea.replace(/--[a-z]{6}--/,ertek);
			} else {
				if(vanSpec.charCodeAt() == 10) {
					textarea = ertek + textarea;
				} else {
					textarea = ertek + '\n' + textarea;
				}	
			}
			szoveg.value = textarea;
		},
	false);
}

function TRSearch(i, trID) {
	normalMessage = 0;
	modifyTR[i] = document.getElementById('message' + trID);
	for(t = 0; t < modifyTR[i].childNodes.length; t++) {
		if(modifyTR[i].childNodes[t].tagName == 'TD') {
			if(modifyTR[i].childNodes[t].innerHTML == 'Körüzenet - Szövetség') {
				return t;
			} else if(modifyTR[i].childNodes[t].innerHTML == 'Üzenet') {
				normalMessage = 1;
				return (t, normalMessage);
			}
		}
	}
}

function TRChanger(i, t, newSubject, BGcolor, BGcolorActive) {
	modifyTR[i].childNodes[t].innerHTML = newSubject;
	modifyTR[i].style.backgroundColor = BGcolor;
	modifyTR[i].addEventListener('mouseover',
		function() {
			this.style.backgroundColor = BGcolorActive;
		},
	false);
	modifyTR[i].addEventListener('mouseout',
		function() {
			this.style.backgroundColor = BGcolor;
		}, 
	false);			
}

function oTRSearch(oi) {
	onormalMessage = 0;
	omodifyTR[oi] = otableElement[1].rows[oi];;
	for(ot = 0; ot < omodifyTR[oi].childNodes.length; ot++) {
		if(omodifyTR[oi].childNodes[ot].tagName == 'TD') {
			if(omodifyTR[oi].childNodes[ot].innerHTML == 'Körüzenet - Szövetség') {
				return ot;
			} else if(omodifyTR[oi].childNodes[ot].innerHTML == 'Üzenet') {
				onormalMessage = 1;
				return (ot, onormalMessage);
			}
		}
	}
}

function oTRChanger(oi, ot, newSubject, BGcolor, BGcolorActive) {
	omodifyTR[oi].childNodes[ot].innerHTML = newSubject;
	omodifyTR[oi].style.backgroundColor = BGcolor;
	omodifyTR[oi].addEventListener('mouseover',
		function() {
			this.style.backgroundColor = BGcolorActive;
		},
	false);
	omodifyTR[oi].addEventListener('mouseout',
		function() {
			this.style.backgroundColor = BGcolor;
		}, 
	false);			
}

if(bodyID == 'diplomacyAdvisor') {
	var tableElement = document.getElementsByTagName('table');
	var modifyTR = new Array();
	for (n = 0; n < tableElement.length; n++) {
		if(tableElement[n].id == 'messages') {
			headerTR = tableElement[n];
			for(i = 0; i < headerTR.rows.length; i++) {
				tmpID = headerTR.rows[i].id;
      			trType = tmpID.slice(0,7)
				if(trType == 'message') {
					trID = tmpID.slice(7);
					contentTR = document.getElementById('tbl_mail' + trID);
					content = contentTR.childNodes[1].childNodes[1].innerHTML;
					codeFound = content.slice(0, 2);
					code = content.slice(0, 10);
					
					if(codeFound == '--') {
						TRSearch(i, trID);											// funkcióhívás tartalom keresésére TRSearch 
																					// 		hívási paraméterek: 		(i, trID)
																					//		visszatérési paraméterek:	(t)
						for(s = 0; s < propertyArray.length; s++) {
							if(code == propertyArray[s].code) {
								TRChanger(i, t, propertyArray[s].label, propertyArray[s].color, propertyArray[s].active);
																					// funkcióhívás tartalom cserére TRChanger 
																					// 		hívási paraméterek: 		(i, t, newSubject, BGcolor, BGcolorActive)
							} 
						}
					} else if(codeFound != '--') {
						TRSearch(i, trID);
						if (normalMessage == 1) {
							TRChanger(i, t, privat.label, privat.color, privat.active);
						}
					}	
				}
			}
		}
	}

} else if(bodyID == 'diplomacyAdvisorOutBox') {
	var otableElement = document.getElementsByTagName('table');
	var omodifyTR = new Array();
	
	oheaderTR = otableElement[1];
	for(oi = 0; oi < oheaderTR.rows.length; oi++) {
		otmpTR = otableElement[1].rows[oi];
		if(trim(otmpTR.className) == 'entry') {
			omessageHeader = oi;
		}
		if(trim(otmpTR.className) == 'text') {
			omessageBody = oi;
			ocontent = otmpTR.childNodes[1].childNodes[1].innerHTML;
			ocodeFound = ocontent.slice(0, 2);
			ocode = ocontent.slice(0, 10);

			if(ocodeFound == '--') {
				oTRSearch(omessageHeader);												// funkcióhívás tartalom keresésére oTRSearch 
																						// 		hívási paraméterek: 		(omessageHeaderD)
																						//		visszatérési paraméterek:	(ot)
				
				for(s = 0; s < propertyArray.length; s++) {
					if(ocode == propertyArray[s].code) {
						oTRChanger(omessageHeader, ot, propertyArray[s].label, propertyArray[s].color, propertyArray[s].active);	
																						// funkcióhívás tartalom cserére oTRChanger 
					}																	// 		hívási paraméterek: 		(omessageBody, ot, newSubject, BGcolor, BGcolorActive)
				
				}
			} else if(ocodeFound != '--') {
				oTRSearch(omessageHeader);
				if (onormalMessage == 1) {
					oTRChanger(omessageHeader, ot, privat.label, privat.color, privat.active); 
				}
			}
		}
	}
}
