(function($) {

	//console.log("startup");

	// EVENTS START
	$(document).bind("startcalc", function() {
		//console.log("startcalc");
		//LOADER.calcAverage();
		//console.dir(results);

	});
	$(function() {
		$(".ekomi_allebewertungen").bind("click", function() {
			//console.log("click:alle");
			var tempheight = $('body').height();
			//console.log("height:" + tempheight);

			location.href = "#tab_Root Server";

			$(".line").css("position", "relative");

			//	var oTable = $('table.display').dataTable();
			//oTable.fnAdjustColumnSizing();

			//$(".line").css("visibility", "hidden");
			//$(".line").css("margin-top", "10px");

			$(".line").attr("height", 0).show();

			$(".line").animate({

				height : "400px",
				opacity : 1.0
			}, 1000, function() {

				//console.log("gaga");

				$('html, body').animate({
					scrollTop : tempheight
				}, 500);

			});
			return false;

		});
	});
	// EVENTS END

	// CONFIG START
	var config = {
		//	"target" : ".ekomi_box",

		"Root Server" : [12727, 12682, 12480, 12505, 12102, 12102],
		"MultiServer" : [12486, 10852],
		"Managed Server" : [12689],
		"Virtual Server" : [12514, 12513, 12512, 12286]

	};

	var results = {};
	results.avg = 0;
	// set overall average-variable
	var all_items = 0;
	//var now = moment();

	moment.relativeTime = {
		future : "in %s",
		past : "%s",
		s : "Sekunden",
		m : "Vor einer Minute",
		mm : "Vor %d Minuten",
		h : "Vor einer Stunde",
		hh : "Vor %d Stunden",
		d : "Vor einem Tag",
		dd : "Vor %d Tagen",
		M : "Vor einem Monat",
		MM : "Vor %d Monaten",
		y : "Vor 1 Jahr",
		yy : "Vor %d Jahren"
	};

	//--- CONFIG END

	// --- GETJSON START
	// read json's and populate results-Object

	// alle gruppen
	for(group in config) {
		results[group] = {};
		results[group]["items"] = [];
		results[group].table = "";
		// create group-object

		for(var i = 0; i < config[group].length; ++i) {

			//console.log(config[group][i]);
			var id = config[group][i];

			//$.getJSON('json/' + id + '.json', null, dostuff);

			//after
			$.ajax({
				url : '/freenet/json/' + id + '.json',
				dataType : 'json',
				async : false,
				success : function(json) {
					//success code
					//console.dir(json);
					//console.log(json[i].bewertung)
					//var temp = results[group];
					//console.log("type:"+results[group] );
					results[group]["items"] = json;

					//results[group].avg = results[group].avg + Number(json[i].bewertung);
					//results[group].average =  Number(results[group].average)+Number(json[i].bewertung);
					for(var i = 0; i < json.length; ++i) {
						//console.log(Number(json[i].bewertung));

						//console.log("bewertung"+Number(json[i].bewertung));

						var day = moment(Number(json[i].abgegeben) * 1000).fromNow();
						//console.log(day);

						results[group].table = results[group].table + '<tr class="bewertung' + Number(json[i].bewertung) + '">';
						results[group].table = results[group].table + '<td>' + Number(json[i].abgegeben) + '</td>';
						results[group].table = results[group].table + '<td class="nowrap">' + day + '</td>';
						//results[group].table = results[group].table + '<td>' + day + '</td>';
						results[group].table = results[group].table + '<td>' + Number(json[i].produkt_id) + '</td>';
						results[group].table = results[group].table + '<td>' + String(json[i].meinung) + '</td>';
						results[group].table = results[group].table + '<td><div class="rating rate' + Number(json[i].bewertung) + '">' + /*Number(json[i].bewertung) + */'</div></td>';
						results[group].table = results[group].table + '</tr>';

						if( typeof results[group].avg === "undefined") {
							results[group].avg = 0;
							results[group].avg = Number(results[group].avg) + Number(json[i].bewertung)
							results.avg = results.avg + Number(json[i].bewertung);
							//console.log(results[group].avg);
						} else {

							results[group].avg = Number(results[group].avg) + Number(json[i].bewertung)
							results.avg = results.avg + Number(json[i].bewertung);
						}

						if(i == json.length - 1) {

							//console.log("group_ende"+json.length);
							// durchschnitt ausrechnen

							results[group].avg = Number((Number(results[group].avg) / json.length).toFixed(2));
							//results[group].table = results[group].table + '</tbody>	</table>';

						};
						all_items++;
					}

				}
			});

		}

	}

	// calculate the overall average
	results.avg = Number((Number(results.avg) / all_items).toFixed(2));

	//console.log("results:ok");
	// GETJSON END

	//console.log("all_items:" + all_items)
	//console.log("avg:" + results.avg)

	// create the stars
	var html_stars = '<div class="rating_total_outer"><div class="rating_total_inner" style="width:' + calcStarWidth(results.avg) + 'px;">&nbsp;<p>' + results.avg + ' / 5</p></div></div>'
	var html_right = '<div class="ekomi_right"><p>Mach dich schlau:</p><a href="" class="ekomi_allebewertungen"><img src="/freenet/img/btn_allebewertungen.png" width="143" height="21"></a></div>';

	buildBox(".ekomi_box", '<div class="ekomi_left"><a href="https://www.ekomi.de/de/?strato_pro_bewertungen" target="_blank"><img src="/freenet/img/ekomi_logo.gif"></a></div>', html_stars, html_right);
	$(".ekomi_box").attr("height", 0).show();

	$(".ekomi_box").animate({
		height : "100px",
		opacity : 1.0
	}, 1500);

	//console.dir(results);

	// FUNCTIONS START

	function createTables() {
		//console.log("create tables");

		var tabs = "";
		var panes = "";
		var container = "";

		for(group in results) {

			if(group !== "avg") {
				//console.log("group" + group);

				//console.log(results[group].table);

				var temp = results[group].table;
				results[group].table = '<table cellpadding="0" cellspacing="0" border="0" class="display" id="table_' + group + '"><thead><tr><th>unixtime</th><th>Zeit</th><th>Produkt-ID</th>	<th>Meinung</th><th>Bewertung</th>	</tr>	</thead>	<tbody>' + temp + '</tbody>	</table>';
				tabs = tabs + '<div class="tab" id="tab_' + group + '"><a href="#tab_' + group + '">' + group + '</a>';
				tabs = tabs + '<div>' + results[group].table + '</div>'
				tabs = tabs + '</div>';

				//$(".ekomi_box").before(results[group].table);

				//panes = panes + '<div class="yes">'+results[group].table+'</div>';

			}
			//console.log(typeof group);
		}

		//tabs = '<ul class="css-tabs">'+tabs+'</ul>';
		panes = '<div class="css-panes">' + panes + '</div>';
		//tabs = tabs + '</div>';
		tabs = '<div class="line"><div class="tabs">' + tabs + '</div></div>';
		//console.log(tabs)
		//console.log(panes)

		$(".footerline").before(tabs);

		/*
		*
		*

		<div id="tab1">
		<a href="#tab1">Registerkarte&nbsp;1</a>
		<div>Es kann schon sein dass jemand sagen wird...</div>
		</div>

		*
		*
		*/

		//$(".ekomi_box").before(tabs);
		//$(".ekomi_box").before(panes);

		$('table.display').dataTable({
			"bJQueryUI" : true,
			"bPaginate" : false,
			"bLengthChange" : false,
			"bFilter" : false,
			"bSort" : true,
			"bInfo" : false,
			"bAutoWidth" : true,
			"aaSorting" : [[0, "desc"]],
			"aoColumns" : [{
				"bVisible" : false
			}, null, {
				"bVisible" : false
			}, null, null]
		});

	}

	function buildBox(target, left, middle, right) {
		target = ".ekomi_box";
		/*
		 var $left = "<div class='ekomi_left'><img src='img/ekomi_logo.gif'></div>";
		 var $middle = "<div class='ekomi_middle'>middle</div>";
		 var $right = "<div class='ekomi_right'>right</div>";
		 */
		$("#main_end").css("padding-top","0px");
		$("#main_end").css("margin-top","-20px");
		var $box = left + "<div class='ekomi_middle'><h2>STRATO PRO Kundenbewertungen</h2><div class='gesamt'>Gesamtbeurteilung:</div>" + middle + "</div>" + right;

		// inject to the DOM now
		$(target).append($box);

		//console.log(target);
		//console.log("_buildBox");

		createTables();
		//$("ul.css-tabs").tabs("div.css-panes >div.yes");

	}

	// Create the yellow star graphic
	function calcStarWidth(rating) {
		var res = rating * 21.5;
		// width of star + space
		return Number(res.toFixed(2));
	}

	//console.dir(results);

	//getJSON(config.product_id);
	// FUNCTIONS END

})(jQuery);

