/*var CServerDetails = Class.create({
	initialize: function() {
		this.current = null;
	},

	show: function(server)
	{
		if (this.current == server) {
			Ubk.hide('server-dtl');
		} else {
			this.current = server;
			pars = 'AZIONE=mostra_riga&TABELLA=v_server&CAMPO-ID=i_server_id&MODE=R&FILE=hp/forum/inside/server.xml&ID=' + server;
			Ubk.follow('server-dtl', 'general.php', pars, true, true, null);
		}
	},
	hide: function()
	{
		Ubk.hide('server-dtl');
	}
});*/

var CServerFrontEnd  = Class.create({
	initialize: function() {
		//this.Details = new CServerDetails();
// 		this.accordion = null;
		this.accordionCurrent = null;
	},

	accStart: function() {
		var accordion = $$("#content .fthumb.forum.svr_list")[0];
		this.accordionCurrent = accordion.select('ul')[0];
	},

 	accActivate: function(desc) {
// 		var act = function() {
// 			this.accordionCurrent = desc.next('ul');
// 			new Effect.BlindDown(this.accordionCurrent, { duration: 0.2 });
// // 			this.accordionCurrent.addClassName('active');
// 		};
// 			, afterFinish: act.bindAsEventListener(this)
		if (desc.next('ul') != this.accordionCurrent) {
			new Effect.BlindUp(this.accordionCurrent, { duration: 0.2 });
			this.accordionCurrent = desc.next('ul');
			new Effect.BlindDown(this.accordionCurrent, { duration: 0.2 });
		}

// 		this.accordionCurrent.removeClassName('active');
// 		this.accordionCurrent = desc.next('ul');
// 		this.accordionCurrent.addClassName('active');
	},
 
	filter: function()
	{
		// nascondo le stats
		$$('#content tbody > tr[class~=control])').invoke('hide');
		$$('#content tbody a[class=close]').each(function(link) {
			link.className = 'open';
		});

		// piglio le righe buone ....
		var rows = $$('#content tbody > tr:not([class~=bot]):not([class~=control])');

		// nascondo tutto
		rows.invoke('hide');

		// filtro poplati
		if ($('filter-pop').checked)
			rows = rows.findAll(function(tr) {
				if (tr.childNodes.length == 1)
					return false;
				switch(tr.childNodes[3].innerHTML[0]) {
					case '0':
					case '-':
						return false;
					default:
						return true;
				}
			});

		// filtro up
		if ($('filter-up').checked) 
			rows = rows.findAll(function(tr) {
				return tr.hasClassName('up');
			});

		// filtro per gioco
		var game = $F('filter-game');
		if (game != '')
			rows = rows.findAll(function(tr) {
				return tr.hasClassName(game);
			});

		// mostra e conta
		var nServers = 0, nPlayers = 0, nMaxPlayers = 0;
		rows.each(function(row) {
			row.show();

			if (row.childElements().length == 1) return;
			
			nServers ++;

			var players = row.childElements()[3].innerHTML.split(' / ');
			if (players[0] != '-') {
				nPlayers    += parseInt(players[0]);
				nMaxPlayers += parseInt(players[1]);
			}
		});

		var totals = $('server-totals').childElements();
		totals[1].update(nServers);
		totals[2].update(nPlayers+' / '+nMaxPlayers);
	},

	toggleUp: function(chk)
	{
		this.filter();
	},

	togglePopulated: function(chk)
	{
		var state = chk.checked;
		if (state) {
			Check.setChecked($('filter-up'), state);
		} else {
			this.filter();
		}
	},

	toggleGame: function(select)
	{
		this.filter();
	},

	toggleStats: function(svr)
	{
		var link = $('lts_' + svr);
		var tr = $(link).up('tr').next('.control');
		var show = function() {
			new Effect.BlindDown(tr, { duration: 0.2 });
			link.className = 'close';
			link.title = Locale.string(347);
		};
		
		if (link.className == 'open') {
			if (!link.hasAttribute('opened')) {
// 				this.getTrafficImage(svr, 'day');
				var p = 'AZIONE=mostra_riga&TABELLA=t_a_server&CAMPO-ID=i_server_id&ID='+svr+'&FILE=hp/forum/inside/server.xml'
				var onComplete = function(request) {
					if (Ubk.isFailure(request)) return;
					tr.down(0).update(request.responseText);
					link.writeAttribute('opened');
					show();
				}
				Ubk.follow(null, 'general.php', p, false, true, onComplete);

			} else {
				show();
			}
		} else {
			new Effect.BlindUp(tr, { duration: 0.2 });
			link.className = 'open';
			link.title = Locale.string(356);
		}
	},
	getTrafficImage: function(server, zoom)
	{
		if ($('svr-traffic-' + server)) {
			var p = 'AZIONE=get_traffic_image&TABELLA=t_a_server&CAMPO-ID=i_server_id&ID='+server+'&ZOOM='+zoom;
			var onComplete = function(request) {
				if (Ubk.isFailure(request)) return;
				$('svr-traffic-' + server).src = request.responseText;
			};
			Ubk.follow(null, 'gaming.php', p, false, true, onComplete);
		}
	},
	getTsImage: function(zoom)
	{
		var p = 'AZIONE=get_ts_image&TABELLA=t_a_server&ZOOM='+zoom;
		var onComplete = function(request) {
			if (Ubk.isFailure(request)) return;
			$('svr-traffic-ts').src = request.responseText;
		};
		Ubk.follow(null, 'gaming.php', p, false, true, onComplete);
	},
	getMachineImage: function(machine, t, zoom)
	{
		var p = 'AZIONE=get_machine_image&TABELLA=t_a_machine&NAME='+machine+'&TYPE='+t+'&ZOOM='+zoom
		var onComplete = function(request) {
			if (Ubk.isFailure(request)) return;
			$('svr-traffic-'+t).src = request.responseText;
		};
		Ubk.follow(null, 'gaming.php', p, false, true, onComplete);
	},
	exec: function(server, action)
	{
		var f = function() {
			var onComplete = function(request) {
				if (Ubk.isFailure(request)) return;
				Ubk.alert('<pre style="font-size: 7pt">' + request.responseText + '</pre>');
// 				Ubk.alert(request.responseText.replace("\n", "<br/>"));
			};
			var p = 'AZIONE=do_script&TABELLA=t_a_server&CAMPO-ID=i_server_id&ID='+server+'&ACTION='+action;
			Ubk.follow(null, 'gaming.php', p, false, false, onComplete);
		};
		Ubk.show('working', f);
	},


	openTS: function(host, port, pwd, nick)
	{
		if (pwd) pwd = prompt('Inserire la password del server');

		var url = 'teamspeak://' + host + ':' + port 
			+ '/nickname=' + encodeURIComponent(nick)
			+ (pwd ? '?password=' + encodeURIComponent(pwd) : '');

		window.open(url, '', '');
	},

	openTSChannel: function(host, port, pwd, nick, channel, channelPwd)
	{
		if (pwd) pwd = prompt('Inserire la password del server');
		if (channelPwd) channelPwd = prompt('Inserire la password del canale');

		var url = 'teamspeak://' + host + ':' + port 
			+ '/nickname=' + encodeURIComponent(nick)
			+ (pwd ? '?password=' + encodeURIComponent(pwd) : '')
			+ '?channel=' + encodeURIComponent(channel)
			+ (channelPwd ? '?channelpassword=' + encodeURIComponent(channelPwd) : '');

		window.open(url, '', '');
	}

});