var Remit = Remit || {};

Remit.tables = (function() {

	var $tables = $('.xmlTable');        

	var decorateTables = function(){

		$('td, th').each(function(){
			$(this).wrapInner('<span><b></b></span>')
		})

		$('td:last-child, th:last-child').addClass('last')
		$('td:first-child, th:first-child').addClass('first')

	}


	var loadXml = function(xmlURL){

		$.ajax({
			type: "GET",
			url: xmlURL,
			complete: function(jqXHR, textStatus){
				var data = jqXHR.responseText
				ConvertXmlToArray($.parseXML(data));
			}
		});
	}

	var ConvertXmlToArray = function(data){

		var result = {},
		$data = $(data).find('row'),
		curtable = null,
		currow = null;


		$data.each(function(){

			var cellArray = $(this).attr('Name').split('_');
			var table = cellArray[0];
			var row = cellArray[1];

			if(curtable != table){
				result[table] = {};
			}

			if(currow != row){
				result[table][row] = [];
			}

			result[table][row].push($(this).attr('Nvalue'))
			curtable = table;
			currow = row

		})


		buildTables(result);

	}

	var buildTables = function(arr){
		for( var table in arr ) {

			var	t = arr[table]

			buildRows(table, t)

		}


		decorateTables();

	}

	var buildRows = function(table, t){

		var $rows = $([]);
		switch(table){
			case 'BETE':
			for( var row in t ) {
				var r = t[row],
				$r = $('<tr></tr>')

				$r.append('<th>'+decimalToRoman(row)+'. blokk</th>')

				for( var cell in r ) {
					$r.append('<td>'+r[cell]+' MW</td>')
				}

				$('#' + table + ' tbody').append($r)
			}

			break;



			case 'TMK':

			$('#' + table + ' thead i.y1').text(t.Y[0])
			$('#' + table + ' thead i.y2').text(t.Y[1])
			delete t.Y
			for( var row in t ) {
				var r = t[row],
				$r = $('<tr></tr>')
				$r.append('<th>'+decimalToRoman(row)+'. blokk</th>')

				for( var cell in r ) {
					$r.append('<td>'+r[cell]+'</td>')
				}

				$('#' + table + ' tbody').append($r)
			}

			break;


			case 'KNTT':

			$('#' + table + ' thead th:first-child').text(t.DATE[0])

			delete t.COUNT
			delete t.DATE

			for( var row in t ) {
				var r = t[row],
				$r = $('<tr></tr>')
				$r.append('<th>'+(row)+'</th>')

				for( var cell in r ) {
					$r.append('<td>'+r[cell]+'</td>')
				}

				$('#' + table + ' tbody').append($r)
			}

			break;

			case 'ATAK':


			for( var row in t ) {
				var r = t[row],
				$r = $('<tr></tr>')
				$r.append('<th>'+decimalToRoman(row)+'. blokk</th>')

				for( var cell in r ) {
					$r.append('<td>'+r[cell]+'</td>')
				}

				$('#' + table + ' tbody').append($r)
			}

			break;


		}


		return $rows;
	}

	var constructObject = function (a, final) {
		var val=a.shift();
		var obj={};
		if (a.length>0) {
			obj[val]=constructObject(a, final);
		} else {
			obj[val]=final;
		}
		return obj;
	}

	var decimalToRoman = function (value) {
		var roman = new Array();
		roman = ["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"];
		var decimal = new Array();
		decimal = [1000,900,500,400,100,90,50,40,10,9,5,4,1];
		if (value <= 0 || value >= 4000) return value;
		var romanNumeral = "";
		for (var i=0; i<roman.length; i++) {
			while (value >= decimal[i]) { 
				value -= decimal[i];
				romanNumeral += roman[i];
			}
		}
		return romanNumeral;
	}

	return {
		init: function(xml) {
			loadXml(xml);
		}
	}

	})();


