// ==UserScript==
// @name           CAT sorter
// @namespace      http://www.hightekcafe.com/ikariam
// @description    Sort CAT
// @include        http://s*.ikariam.*/*
// @exclude        http://board.ikariam.*/*
// ==/UserScript==
	var lversion = "0.2";

window.addEventListener('load',  function() 
{ 
try
{
	var page = document.getElementsByTagName('body')[0].id;
	var sort = GM_getValue("sort",1);
	if (page == 'museum') 
	{
	var CATList = document.getElementById('mainview').childNodes[7].childNodes[3].childNodes[1];
	var CATList2 = document.getElementById('mainview').childNodes[7].childNodes[1].childNodes[0].innerHTML;
	var sortboth = 2;
	var changeCAT = 0;
	if (CATList2 == "Request of a cultural assets treaty") {
	var CATList1 = document.getElementById('mainview').childNodes[9].childNodes[3].childNodes[1];
	sortboth = 1;
	changeCAT = 1;
	}
	var test = CATList.innerHTML;
	
	while(sortboth <= 2) {
	if (sortboth == 2 && changeCAT == 1) {
	CATList = CATList1;
	}
		if (sort == 1)
		{
		// Order CAT by name
		var go_in_order = new Array();
		var go_in_order_sort = new Array();
		var new_var = 0;
		var donated_int2, donated_int;
		for (var jj = 1; jj < CATList.rows.length; jj++)
		{
			empty1 = CATList.rows[jj].cells[0].innerHTML;
			playername = CATList.rows[jj].cells[1].innerHTML;
			townname = CATList.rows[jj].cells[2].innerHTML;
			action = CATList.rows[jj].cells[3].innerHTML;
			empty2 = CATList.rows[jj].cells[4].innerHTML;
			//alert(playername+":"+townname);
			go_in_order[new_var]  = new Array(empty1, playername, townname, action, empty2);
			// sorting array
			go_in_order_sort[new_var]  = playername;
			new_var++;
		}
		go_in_order_sort = go_in_order_sort.sort(function charOrdA(a, b){a = a.toLowerCase(); b = b.toLowerCase();if (a>b) return 1;if (a <b) return -1;return 0; });//function(a,b){return b - a}
		var new_order = 1;
		var add_town;
		var ordered_towns = new Array();
		for (var jj2 = 0; jj2 < new_var; jj2++)
		{
			for (var jj3 = 0; jj3 < new_var; jj3++)
			{
				empty1 = go_in_order[jj3][0];
				playername = go_in_order[jj3][1];
				townname = go_in_order[jj3][2];
				action = go_in_order[jj3][3];
				empty2 = go_in_order[jj3][4];
				if (go_in_order_sort[jj2]==playername) {
				add_town = go_in_order[jj3];
				go_in_order[jj3] = [];
				break;
				}
				
			}
			ordered_towns[new_order] = add_town;
			new_order++;
		}
		
		for (var jj4 = 1; jj4 < new_order; jj4++)
		{
		
			CATList.rows[jj4].cells[0].innerHTML=ordered_towns[jj4][0];
			CATList.rows[jj4].cells[1].innerHTML=ordered_towns[jj4][1];
			CATList.rows[jj4].cells[2].innerHTML=ordered_towns[jj4][2];
			CATList.rows[jj4].cells[3].innerHTML=ordered_towns[jj4][3];
			CATList.rows[jj4].cells[4].innerHTML=ordered_towns[jj4][4];
		
		}
		} 
		else if(sort == 2)
		{
		
		// Order CAT by town
		var go_in_order = new Array();
		var go_in_order_sort = new Array();
		var new_var = 0;
		var donated_int2, donated_int;
		for (var jj = 1; jj < CATList.rows.length; jj++)
		{
			empty1 = CATList.rows[jj].cells[0].innerHTML;
			playername = CATList.rows[jj].cells[1].innerHTML;
			townname = CATList.rows[jj].cells[2].innerHTML;
			action = CATList.rows[jj].cells[3].innerHTML;
			empty2 = CATList.rows[jj].cells[4].innerHTML;
			//alert(playername+":"+townname);
			go_in_order[new_var]  = new Array(empty1, playername, townname, action, empty2);
			// sorting array
			go_in_order_sort[new_var]  = townname;
			new_var++;
		}
		go_in_order_sort = go_in_order_sort.sort(function charOrdA(a, b){a = a.toLowerCase(); b = b.toLowerCase();if (a>b) return 1;if (a <b) return -1;return 0; });//function(a,b){return b - a}
		var new_order = 1;
		var add_town;
		var ordered_towns = new Array();
		for (var jj2 = 0; jj2 < new_var; jj2++)
		{
			for (var jj3 = 0; jj3 < new_var; jj3++)
			{
				empty1 = go_in_order[jj3][0];
				playername = go_in_order[jj3][1];
				townname = go_in_order[jj3][2];
				action = go_in_order[jj3][3];
				empty2 = go_in_order[jj3][4];
				if (go_in_order_sort[jj2]==townname) {
				add_town = go_in_order[jj3];
				go_in_order[jj3] = [];
				break;
				}
				
			}
			ordered_towns[new_order] = add_town;
			new_order++;
		}
		
		for (var jj4 = 1; jj4 < new_order; jj4++)
		{
		
			CATList.rows[jj4].cells[0].innerHTML=ordered_towns[jj4][0];
			CATList.rows[jj4].cells[1].innerHTML=ordered_towns[jj4][1];
			CATList.rows[jj4].cells[2].innerHTML=ordered_towns[jj4][2];
			CATList.rows[jj4].cells[3].innerHTML=ordered_towns[jj4][3];
			CATList.rows[jj4].cells[4].innerHTML=ordered_towns[jj4][4];
		
		}
		}
		else
		{
		// Do nothing
		}
	sortboth++;
	}
	}
	// Add options menu
	if (page == 'options')
	{
		var allElements = document.getElementsByTagName('form');

		for (var i = 0; i < allElements.length; i++)
		{
		    var thisElement = allElements[i];
			if (thisElement.elements[0].value == 'Options')
			//if (document.getElementsByTagName("body")[0].id == "options")
			{
				var debug_mode_on,debug_mode_off,sort_on,sort_on2,sort_off;
				var debug_mode 	= GM_getValue('debug_mode','0');
				var sort 	= GM_getValue('sort','1');

				if (debug_mode == 0)
					debug_mode_off =  "checked='checked'";
				if (debug_mode == 1)
					debug_mode_on =  "checked='checked'";
				if (sort == 0)
					sort_off =  "checked='checked'";
				if (sort == 1)
					sort_on =  "checked='checked'";
				if (sort == 2)
					sort_on2 =  "checked='checked'";
				var div;
				div = document.createElement('div');
				div.innerHTML = 
					"<div id='CATSorter'>"+
						"<h3>CAT Sorter V "+lversion+" Options</h3>"+
						"<table cellpadding='0' cellspacing='0'>"+
						"<tr>"+ 
								"<td align='center' colspan='2'><i>Sorting Options<i></td>"+
							"</tr>"+
							"<tr>"+
								"<th>Turn Off Sorting:</th>"+
								"<td><input id='radio_sort0' type='radio' class='radio' name='sort' value='0' "+sort_off+"/>Off</td>"+
							"</tr>"+
							"<tr>"+
								"<th>Sort CAT by player name:</th>"+
								"<td><input id='radio_sort1' type='radio' class='radio' name='sort' value='1' "+sort_on+"/>On</td>"+
							"</tr>"+
							"<tr>"+
								"<th>Sort Cat by town capital:</th>"+
								"<td><input id='radio_sort2' type='radio' class='radio' name='sort' value='2' "+sort_on2+"/>On</td>"+
							"</tr>"+
							"<tr>"+ 
								"<td align='center' colspan='2'><i>Other Options<i></td>"+
							"</tr>"+
							//"<tr>"+
							//	"<th>Divider:</th>"+
								//"<td>On<input id='radio_debug3' type='radio' class='radio' name='debug_mode' value='1' "+debug_mode_on+"/> Off<input id='radio_debug4' type='radio' class='radio' name='debug_mode' value='0' "+debug_mode_off+"/></td>"+
							//"</tr>"+
							"<tr>"+
								"<th>Debug Mode:</th>"+
								"<td>On<input id='radio_debug3' type='radio' class='radio' name='debug_mode' value='1' "+debug_mode_on+"/> Off<input id='radio_debug4' type='radio' class='radio' name='debug_mode' value='0' "+debug_mode_off+"/></td>"+
							"</tr>"+
				        "</table>"+
				    "</div>";
				
				thisElement.insertBefore(div, document.getElementById('options_debug'));
	            
	            document.getElementById('radio_sort0').addEventListener('change',function(event){GM_setValue('sort','0')},true);
	            document.getElementById('radio_sort1').addEventListener('change',function(event){GM_setValue('sort','1')},true);
	            document.getElementById('radio_sort2').addEventListener('change',function(event){GM_setValue('sort','2')},true);
	            document.getElementById('radio_debug3').addEventListener('change',function(event){GM_setValue('debug_mode','1')},true);
	            document.getElementById('radio_debug4').addEventListener('change',function(event){GM_setValue('debug_mode','0')},true);
			}
		}
	}
}
catch(er)
				{
				var debug_mode 	= GM_getValue('debug_mode','0');
				if (debug_mode == 1) {
				alert("CAT Sorter v"+lversion+"\n If you think this is a critical error, post it in the ikariamlibrary.com forums.\n\n\n" + er)
				}
				}
},
    true);