/* Funzioni generali */
function formatDate(date, ext) {
	if(lang == 'en') {

		if(date == '0000-00-00 00:00:00')
			return(document.write('not available'));

		mesi = ['january','february','march','april','may','june','july','august','september','october','november','december'];

		var s = /^(\d+)-(\d+)-(\d+)\s(\d+):(\d+):(\d+)$/.exec(date);
		var p = new Date(s[1], s[2] - 1, s[3], s[4], s[5], s[6]);
		var d = parseInt((dates[0].getTime() - p.getTime()) / 1000); /* differenza in secondi dall ora attuale */

		if(ext) {
			if(d <= 0)									return(document.write('now'));
			else if(d < 60)								return(document.write(d + ' second' + (d == 1 ? '' : 's') + ' ago'));

			var m = parseInt(d / 60);

			if(m < 60)									return(document.write(m + ' minute' + (m == 1 ? '' : 's') + ' ago'));
			
			var h = parseInt(m / 60);
			var d = Math.ceil((dates[1].getTime() - p.getTime()) / 86400000);

			if(d == 0)									return(document.write(h + ' hour' + (h == 1 ? '' : 's') + ' ago'));
			else if(d == 1)								return(document.write('yesterday at ' + s[4] + '.' + s[5]));
			else if(d <= 10)							return(document.write(d + ' days ago at ' + s[4] + '.' + s[5]));
			
														document.write(mesi[s[2] - 1] + ' ' + s[3]);
			if(d > 180)									document.write(', ' + s[1]);
														document.write(' at ' + s[4] + '.' + s[5]);
		}
		else {
			if(d <= 0)									return(document.write('now'));
			else if(d < 60)								return(document.write(d + ' sec'));

			var m = parseInt(d / 60);

			if(m < 60)									return(document.write(m + ' min'));
			
			var h = parseInt(m / 60);
			var d = Math.ceil((dates[1].getTime() - p.getTime()) / 86400000);

			if(d == 0)									return(document.write(h + ' h'));
			else										return(document.write(s[2] + '/' + s[3] + ' ' + s[4] + '.' + s[5]));
		}

	} else {
		
		if(date == '0000-00-00 00:00:00')
			return(document.write('non disponibile'));

		mesi = ['gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre'];

		var s = /^(\d+)-(\d+)-(\d+)\s(\d+):(\d+):(\d+)$/.exec(date);
		var p = new Date(s[1], s[2] - 1, s[3], s[4], s[5], s[6]);
		var d = parseInt((dates[0].getTime() - p.getTime()) / 1000); /* differenza in secondi dall ora attuale */
		
		if(ext) {
			if(d <= 0)									return(document.write('in questo istante'));
			else if(d < 60)								return(document.write(d + ' second' + (d == 1 ? 'o' : 'i') + ' fa'));

			var m = parseInt(d / 60);

			if(m < 60)									return(document.write(m + ' minut' + (m == 1 ? 'o' : 'i') + ' fa'));
			
			var h = parseInt(m / 60);
			var d = Math.ceil((dates[1].getTime() - p.getTime()) / 86400000);

			if(d == 0)									return(document.write(h + ' or' + (h == 1 ? 'a' : 'e') + ' fa'));
			else if(d == 1)								return(document.write('ieri alle ' + s[4] + '.' + s[5]));
			else if(d <= 10)							return(document.write(d + ' giorni fa alle ' + s[4] + '.' + s[5]));
			
			if(s[3] == 1 || s[3] == 8 || s[3] == 1)		document.write('l\'');
			else										document.write('il ');
														document.write(s[3] + ' ' + mesi[s[2] - 1]);
			if(d > 180)									document.write(' ' + s[1]);
														document.write(' alle ' + s[4] + '.' + s[5]);
		}
		else {
			if(d <= 0)									return(document.write('ora'));
			else if(d < 60)								return(document.write(d + ' sec'));

			var m = parseInt(d / 60);

			if(m < 60)									return(document.write(m + ' min'));
			
			var h = parseInt(m / 60);
			var d = Math.ceil((dates[1].getTime() - p.getTime()) / 86400000);

			if(d == 0)									return(document.write(h + ' h'));
			else										return(document.write(s[3] + '/' + s[2] + ' ' + s[4] + '.' + s[5]));
		}

	}
}
function padLeft(str, len, chr) { while(str.length < len) str = chr + str; }
function randInt() { return Math.floor(Math.random() * 1000000); }
function stopEvent(e) {
	if (e.stopPropagation){ e.stopPropagation(); e.preventDefault(); }
	else { e.returnValue = false; e.cancelBubble = true; }
	return false;
}


/* Fix per hover su non-<a> in IE */
function ieHover() {
	if(! document.all)
		return false;
		
	new Array('footer-pers','footer-cont','footer-part','footer-info').each(function(elId) {
		var el = $(elId);
		if(el) {
			el.addEvent('mouseover', function() { $(this).addClass('hover'); });
			el.addEvent('mouseout', function() { $(this).removeClass('hover'); });
		}
	});
}
window.onload = function() { ieHover(); }


/* Ajax */
function Ajax(address) {
	this.address = address;
	this.client = new XMLHttpRequest();
	this.data = new Array();
	this.method = 'get';
	this.showloading = true;
	this.onload = false;
	this.onerror = false;
	this.send = function() {
		var self = this;
		this.client.onreadystatechange = function() {
			if(self.client.readyState  == 4) {
				if(self.showloading)
					progressOff();

				try { var status = self.client.status }
				catch (e) { var status = 500 }

				if(status == 200 && self.client.responseText.indexOf('<!--error') == -1) {
					if(typeof self.onload == 'function')			// custom function
						self.onload(self.client.responseText);
					if(self.onload == 'eval')						// eval code
						eval(self.client.responseText);
					else if(self.onload == 'refresh')				// refresh page
						window.location.reload(false);
					else {											// innerHTML (AHAH)
						var output = $(self.onload);
						if(output)
							output.innerHTML = self.client.responseText;
					}
				} else {
					var s = self.client.responseText.indexOf('<!--error: ');
					if(s == -1) {
						if(self.showloading) {
							if(lang == 'en')
								errorOn('Error while loading, please try again');
							else
								errorOn('Errore durante il caricamento, riprova');
						}
					} else {
						var m = self.client.responseText.substring(s + 11, self.client.responseText.indexOf('-->',s));
						if(self.onerror)
							self.onerror(m);
						else {
							if(self.showloading)
								errorOn(m);
						}
					}
				}
			}
		};

		var c = this.data.length;
		if(c > 0) {
			var args = this.data[0];
			for(var i=1; i<c; i++) {
				var name = this.data[i].substring(0,this.data[i].indexOf('='));
				var value = this.data[i].substring(this.data[i].indexOf('=') + 1);

				args = args + '&' + name + '=' + encodeURIComponent(value);
			}
		} else
			var args = false;

		if(this.showloading)
			progressOn();

		if(this.method == 'get') {
			this.client.open('GET', this.address + (args ? '?' + args : ''), true);
			this.client.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT');
			this.client.setRequestHeader('AJAX-Request', 'true');
			this.client.send(null);
		}
		if(this.method == 'post') {
			this.client.open('POST', this.address, true);
			this.client.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			this.client.setRequestHeader('AJAX-Request', 'true');
			this.client.send(args?args:null);
		}
	};
}


/* Preferenze */
var showPreferences = null;
function preferences() {
	if(showFriends) showFriends.hide();
	if(showSearch) showSearch.hide();

	if(! $('preferences')) {
		var preferences = new Element('div');
		preferences.id = 'preferences';
		preferences.injectPreInside('main');

		showPreferences = preferences.effect('height', { duration: 500 });
		showPreferences.hide();

		var req = new Ajax('/my/prefs');
		req.onload = function(text) {
			$('preferences').innerHTML = text;
			showPreferences.toggle();
		}

		req.send();
	}
	else
		showPreferences.toggle();
}

function setPreference(name,value) {
		var req = new Ajax('/my/prefsmod');
		req.data.push(name + '=' + value);

		if(setPreference.arguments[2])
			req.onload = false;
		else
			req.onload = 'eval';

		req.send();
}


/* Blog */
function deleteBlog(id,tbl) {
	var req = new Ajax('/my/blog/del');
	req.data.push('id=' + id);
	req.data.push('tbl=' + tbl);
	req.onload = 'refresh';
	req.send();
}

function deleteBlogComment(id,tbl) {
	var req = new Ajax('/my/blog/com/del');
	req.data.push('id=' + id);
	req.data.push('tbl=' + tbl);
	req.onload = function() {
		$('commento' + id).remove();
	}
	req.send();
}

function segnalaBlog(id,tbl) {
	var req = new Ajax('/segnala/post');
	req.data.push('id=' + id);
	req.data.push('tbl=' + tbl);
	req.onload = 'eval';
	req.send();
}

function sendBlogComment(form) {
	if(form.text.value.length < 1) {
		if(lang == 'en')
			errorOn('You can\'t send empty comments');
		else
			errorOn('Non è possibile inviare commenti vuoti');
		return false;
	}
	if(form.text.value == 'inserisci il testo') {
		form.text.value = '';
		form.text.focus();
		return false;
	}
	var req = new Ajax('/my/blog/com/add');
	req.data.push('postid=' + form.postid.value);
	req.data.push('tbl=' + form.tbl.value);
	req.data.push('text=' + form.text.value.substr(0, 65535));
	req.method = 'post';
	req.onload = function(text) {
		if(text.indexOf('<!--success-->') !== -1) {
			form.innerHTML = text;
			new Fx.Style(form.id, 'height').start(24);
		}
	};
	req.send();
	return false;
}

function voteBlog(divid, id, tbl, ok) {
	var req = new Ajax('/my/blog/vote');
	req.data.push('id=' + id);
	req.data.push('tbl=' + tbl);
	req.data.push('ok=' + ok);
	req.onload = divid;
	req.send();
}


/* Commenti */
function deleteComment(id,tbl) {
	var req = new Ajax('/my/com/del');
	req.data.push('id=' + id);
	req.data.push('tbl=' + tbl);
	req.onload = function() {
		new Fx.Style('commento' + id, 'opacity', {onComplete: function(el){ el.remove(); }}).start(0);
	}
	req.send();
}

function historyComment(id,from,to) {
	if(! $('history' + id)) {
		var hist = new Element('div');
		hist.id = 'history' + id;
		hist.addClass('history');
		hist.injectBefore('info' + id);

		var req = new Ajax('/my/com/cron');
		req.data.push('from=' + from);
		req.data.push('to=' + to);
		req.onload = 'history' + id;
		req.send();
	} else
		$('history' + id).remove();
}

/* TODO: cleanup start */
function addForm(container,before,id,to,obj,gid) {
	var form = document.createElement('form');
	form.className = 'reply' + (id=='self'?' self':'');
	form.id = 'reply' + id;

    /* puede ser un grupo, un evento o un post */
    if(obj)
        form.action = '/groups/actions/com.php';
    else
	    form.action = '/my/com/add';

	form.method = 'post';
	form.onsubmit = function() { return sendComment(this); };
	form.style.height = '0px';
	form.innerHTML = '<textarea onfocus="if(this.value==\'inserisci il testo\')this.value=\'\';" name="text" id="text">inserisci il testo</textarea>' +
		'<input type="hidden" name="to" id="to" value="' + to +'" />' +
        '<input type="hidden" name="obj" id="obj" value="' + obj +'" />' +
        '<input type="hidden" name="gid" id="gid" value="' + gid +'" />' +
		'<input type="submit" value="&nbsp;invia &raquo;&nbsp;" /><br /><div class="gray" style="font-size: 0.9em;margin-top: -3px; padding-bottom: 4px">[b]<b>grassetto</b>[/b], [d]<del>barrato</del>[/d], [i]<i>corsivo</i>[/i], [u]<u>sottolineato</u>[/u]</div>';
    if(before)
		container.insertBefore(form,before);
	else
		container.appendChild(form);
}

function showCommentForm(to) {
	if($('replyself'))
		new Fx.Style('replyself', 'height', {onComplete: function(el){ el.remove(); }}).start(0);
	else {
		addForm($('main'),$('profilocontent'),'self',to);
		new Fx.Style('replyself', 'height', {onComplete: function(el){ el.getElementsByTagName('textarea')[0].focus(); }}).fullHeight();
	}
}

function showReplyForm(id,to) {
	if($('reply' + id))
		new Fx.Style('reply' + id, 'height', {onComplete: function(el){ el.remove(); }}).start(0);
	else {
		addForm($('content' + id),$('info' + id),id,to);
		new Fx.Style('reply' + id, 'height', {onComplete: function(el){ el.getElementsByTagName('textarea')[0].focus(); }}).fullHeight();
	}
}

function showImageCommentForm(id) {
	if($('replyimage'))
		new Fx.Style('replyimage', 'height', {onComplete: function(el){ el.remove(); }}).start(0);
	else {
		addForm($('biggerContainer'),$('biggerImage'),'image','image' + id);
		new Fx.Style('replyimage', 'height', {onComplete: function(el){ el.getElementsByTagName('textarea')[0].focus(); }}).fullHeight();
	}
}


/* cleanup end */

function sendComment(form) {
	if(form.text.value.length < 1) {
		if(lang == 'en')
			errorOn('You can\'t send empty comments');
		else
			errorOn('Non è possibile inviare commenti vuoti');
		return false;
	}
    var req = new Ajax(form.action);
	req.data.push('to=' + form.to.value);
    req.data.push('obj=' + form.obj.value);
    req.data.push('gid=' + form.gid.value);
	req.data.push('text=' + form.text.value.substr(0, 65535));
	req.method = 'post';
	req.onload = function(text) {
		if(text.indexOf('<!--success-->') !== -1) {
			form.innerHTML = text;
			new Fx.Style(form.id, 'height').start(24);
		}
	};
	req.send();
	return false;
}

/* Notifiche */
function deleteNotification(id) {
	var req = new Ajax('/my/notif/del');
	req.data.push('id=' + id);
	req.onload = function() {
		if($('notifications').getChildren().length < 3) {
			new Fx.Style('notifications', 'opacity', { onComplete: function(el){ el.remove(); } }).start(0);
		} else {
			new Fx.Style('notification' + id, 'opacity', { onComplete: function(el){ el.remove(); } }).start(0);
		}
	}
	req.send();
}

function deletePostNotifications(postid, table) {
	var req = new Ajax('/my/notif/delpost');
	req.data.push('postid=' + postid);
	req.data.push('table=' + table);
	req.onload = 'refresh';
	req.send();
}

function deleteAllNotifications() {
	var req = new Ajax('/my/notif/delall');
	req.onload = function() {
		new Fx.Style('notifications', 'opacity', { onComplete: function(el){ el.remove(); } }).start(0);
	}
	req.send();
}


/* Logout */
function logout() {
		window.location.href='/my/logout';
}


/* Ricerca utenti */
var showSearch = null;
function search() {
	if(! $('search')) {
		src = new Element('div');
		src.id = 'search';
		src.setStyle('background', 'white');
		src.injectPreInside('main');

		if(search.arguments && search.arguments[0])
			var req = new Ajax('/my/search?' + search.arguments[0]);
		else
			var req = new Ajax('/my/search');

		req.onload = function(content) {
			$('search').innerHTML = content;
			showSearch = new Fx.Style('search', 'height');
			showSearch.hide();
			showSearch.toggle();
		}
		req.send();
	}

	if(showFriends) showFriends.hide();
	if(showPreferences) showPreferences.hide();
	if(showSearch) showSearch.toggle();
}


/* Friendlist */
var showFriends = null;
function friends() {
	if(! $('friends')) {
		var friends = new Element('div');
		friends.id = 'friends';
		friends.setStyle('background', 'white');
		friends.injectPreInside('main');

		var req = new Ajax('/my/friends');
		req.onload = function(content) {
			$('friends').innerHTML = content;
			showFriends = new Fx.Style('friends', 'height');
			showFriends.hide();
			showFriends.toggle();
		}
		req.send();
	}

	if(showSearch) showSearch.hide();
	if(showPreferences) showPreferences.hide();
	if(showFriends) showFriends.toggle();
}

/* TODO: cleanup start */
function showFriendCom(id,obj,gid) {
	if($('replyFriend'))
		new Fx.Style('replyFriend', 'height', {onComplete: function(el){ el.remove(); }}).start(0);
	else {
		addForm($('layout'),$('main'),'Friend',id,obj,gid);
		new Fx.Style('replyFriend', 'height', {onComplete: function(el){ el.getElementsByTagName('textarea')[0].focus(); }}).fullHeight();
	}
}
/* cleanup end */

function addFriend(id) {
	var req = new Ajax('/my/friendsmod');
	req.data.push('add=' + id);
	req.onload = function(newlink) {
		var link = $('friendLink');
		link.innerHTML = newlink;
		link.href = 'javascript:delFriend(' + id + ');';

		var f = $('friends');
		if(f)
			f.remove();
	}
	req.send();
}

function delFriend(id) {
	var req = new Ajax('/my/friendsmod');
	req.data.push('delete=' + id);
	req.onload = function(newlink) {
		var link = $('friendLink');
		link.innerHTML = newlink;
		link.href = 'javascript:addFriend(' + id + ');';

		var f = $('friends');
		if(f)
			f.remove();
	}
	req.send();
}

function deleteFriend(id) {
	var req = new Ajax('/my/friendsmod');
	req.data.push('delete=' + id);
	req.onload = function() {
		new Fx.Style('friend' + id, 'opacity', {duration: 800, onComplete: function(el){ el.remove(); }}).start(0);
	}
	req.send();
}


/* Blacklist */
function block(comid, userid) {
	var span = $('block' + comid);
	if(span.innerHTML.indexOf('<!--check-->') == -1) {
		if(lang == 'en')
			span.innerHTML = 'are you sure? <a href="javascript:block(' + comid + ',' + userid + ');" class="warn">yes</a><!--check-->';
		else
			span.innerHTML = 'sei sicuro? <a href="javascript:block(' + comid + ',' + userid + ');" class="warn">si</a><!--check-->';
	} else {
		var req = new Ajax('/my/block');
		req.data.push('id=' + userid);
		req.onload = 'block' + comid;
		req.send();
	}
}

function blockByUsername(username) {
	var req = new Ajax('/my/block');
	req.data.push('username=' + username);
	req.onload = 'refresh';
	req.send();
	return false;
}


/* Immagini */
function deleteImage(id) {
	var req = new Ajax('/my/immagini/delete');
	req.data.push('delete=' + id);
	req.onload = function() {
		var img = $('img' + id);
		img.setStyle('height', img.scrollHeight + 'px');

		new Fx.Style('img' + id, 'opacity', {duration: 800, onComplete: function(el){ el.remove(); }}).start(0);
	}
	req.send();
}

function setAvatar(id) {
	var req = new Ajax('/my/immagini/setavatar');
	req.data.push('avatar=' + id);
	req.onload = function() { window.location.href = '/my/immagini/?avatarset=1'; }
	req.send();
}


/* Faves */
function addFave(id) {
	var req = new Ajax('/my/favesmod');
	req.data.push('add=' + id);
	req.onload = function(newlink) {
		if(typeof(faves) != 'undefined')
			faves[id] = true;

		var link = $('faveLink');
		link.innerHTML = newlink;
		link.href = 'javascript:delFave(' + id + ');';
	}
	req.send();
}

function delFave(id) {
	var req = new Ajax('/my/favesmod');
	req.data.push('delete=' + id);
	req.onload = function(newlink) {
		if(typeof(faves) != 'undefined')
			faves[id] = false;

		var link = $('faveLink');
		link.innerHTML = newlink;
		link.href = 'javascript:addFave(' + id + ');';
	}
	req.send();
}


/* Sottoscrizioni ai blog */
function addAggr(id) {
	var req = new Ajax('/my/aggr/mod');
	req.data.push('add=' + id);
	req.onload = function() {

		/* TODO: supportare traduzione */
		alert('Sottoscrizione aggiunta correttamente!\nOra potrai leggere i messaggi di questo blog nel tuo blog reader.');

	}
	req.send();
}

function delAggr(id) {
	var req = new Ajax('/my/aggr/mod');
	req.data.push('delete=' + id);
	req.onload = function() {

		/* TODO: supportare traduzione */
		alert('Sottoscrizione annullata correttamente!');

		window.location.reload(false);
	}
	req.send();
}


/* Progress ed errori */
var hideError = null;
var showProgress = null;

function createProgress() {
	var progress = new Element('div');
	progress.id = 'progress';
	progress.injectBefore('layout');

	showProgress = new Fx.Style('progress', 'opacity', { duration: 200 });
	showProgress.hide();
	
	return progress;
}

function errorOn(msg) {
	var progress = $('progress');
	if(! progress)
		progress = createProgress();

	showProgress.clearTimer();
	showProgress.hide();

	if(hideError)
		clearTimeout(hideError);

	progress.innerHTML = msg;

	progress.setStyles({
		backgroundColor: 'red',
		color: 'white'
	});

	showProgress.set(1);
	hideError = setTimeout("errorOff();",3000);
}

function errorOff() {
	if(showProgress) {
		showProgress.clearTimer();
		showProgress.start(1,0);
	}
}

function progressOn() {
	var progress = $('progress');
	if(! progress)
		progress = createProgress();

	/* TODO: supportare traduzione */
	progress.innerHTML = '<img src="' + layoutimg_host + '/loading.gif" style="vertical-align: middle" /> caricamento in corso...';

	progress.setStyles({
		backgroundColor: 'white',
		color: '#333'
	});

	showProgress.clearTimer();
	showProgress.start(0,0.9);
}

function progressOff() {
	if(showProgress) {
		showProgress.clearTimer();
		showProgress.start(0.9,0);
	}
}


/* Immagini casuali */
function hideRand() {
	$('randExt').style.visibility = 'hidden';
}

function loadRand() {
	if(! $('randExt')) {
		var randlink = $('randLink');

		var rand = new Element('div');
		rand.id = 'randExt';
		
		rand.setStyles({
			left: parseInt(randlink.getLeft() + randlink.scrollWidth - 314) + 'px',
			top: parseInt(randlink.getTop() + randlink.scrollHeight + 3) + 'px',
			visibility: 'hidden'
		});

		rand.innerHTML = '<div id="rand"></div><div class="clearer"></div><div id="randD"></div>';

		rand.injectBefore('layout');
		showRandD(false);
	}

	var req = new Ajax('/my/rand');
	req.onload = function(json) {
		eval('var data = ' + json);
		refreshRand(data);
		if($('randExt').style.visibility == 'hidden')
			$('randExt').style.visibility = 'visible';
	}
	req.send();
}

function refreshRand(dati) {
	if(dati == false)

		/* TODO: supportare traduzione */
		$('rand').innerHTML = 'foto casuali temporaneamente disabilitate, ci scusiamo per l\'inconveniente';
	
	else {
		var ct = ''; for(i=0; i<=2; i++) {
			ct += '<a href="/utenti/' + dati[i][1] + '/immagini" title="' + dati[i][1]+ '">';
			ct += '<img src="' + img_host + '/' + dati[i][0] + '_3.jpg" onmouseover="showRandD(\'<b>' + dati[i][1] + '</b>, ' + dati[i][3].replace('\'','\\\'') + ', ' + dati[i][4] + '\');" onmouseout="showRandD(false);" alt="' + dati[i][1] + '" />';
			ct += '</a>';
		}

		$('rand').innerHTML = ct;
	}
}

function showRandD(data) {
	if(data == false)
		data = 'Passa con il mouse sopra una foto <a href="javascript:hideRand();">nascondi</a>';

	$('randD').innerHTML = data;
}


/* Messages */
var messages = new Array();
var lastMessage = 0;

function createMessage(content) {
	var t = new Element('div');

	if(content.indexOf('Hai') === 0) {
		t.id = 'messageCom';
		t.setStyle('font-weight', 'bold');
		$('commenti').addClass('warn');
	}
	else
		t.id = 'message' + lastMessage++;

	t.innerHTML = content;

	messages.push(t);
	t.injectInside('growlerSpace');
}

function doMessages() {
	$('growlerSpace').style.display = 'block';
}


/* Nuovi commenti */
var checks = 0;
var checkDelay = 30000;
var lastCheck = 0;

function checkComments() {
	var req = new Ajax('/my/com/new');
	req.data.push('t=' + timestamp);
	req.data.push('p=' + page);
	req.showloading = false;
	
	req.onload = function(text) {
		var res = parseInt(text);
		if(res >= 0) {
			
			if(res > 0) {
				var text = 'Hai ' + res + ' nuov' + (res==1?'o':'i') + ' comment' + (res==1?'o':'i') + ', <a href="/utenti/' + escape(nick) + '/commenti">leggil' + (res==1?'o':'i') + '</a>!';
				
				$('commenti').addClass('warn');
				
				if($('messageCom'))
					$('messageCom').innerHTML = text;
				else {
					createMessage(text);
					doMessages();
				}
				
				if(lastCheck != res)
					doBeep();
				lastCheck = res;
			}
			
			checkDelay += 10000;
			setTimeout('checkComments();', checkDelay);
		}
	}
	
	req.send();
	
}


/* Suoni */
function doBeep() {
	if($('sounds')) {		
		sound = new SWFObject('/inc/js/beep.swf', 'sound', '1', '1', '9', '#ffffff');
		sound.write('sounds');
	}
}

/* Campi editabili con un click */
function sendEditable() {
	var form = $(this);
	var addr = form.getProperty('action');
	var fields = form.getChildren();
	
	var req = new Ajax(addr);
	req.data.push('val=' + encodeURIComponent(fields[0].value));
	req.data.push('extra=' + fields[1].value);
	req.onload = function(text){
		var cont = form.getParent();
		cont.innerHTML = text;
	
		if(cont.callback)
			cont.callback(text);

		prepareEditable(cont.id, addr, cont.getProperty('discard'), fields[1].value);
	}
	
	req.send();
	return false;
}

function prepareEditable(elid, addr, discard, extra) {
	var obj = $(elid);
	if(! obj)
		return false;
	
	obj.addClass('editable');

	obj.setProperty('discard', discard);
	obj.addEvent('mouseover', function(){ this.setStyle('background-color', '#ffffcc'); });
	obj.addEvent('mouseout', function(){ this.setStyle('background-color', ''); });
	obj.addEvent('click', function(){
		var form = new Element('form');
		form.setProperties({
			action: addr,
			method: 'get'
		});
		var prev = obj.innerHTML;
		
		if(prev.toLowerCase().replace(/\"/g, '') == discard.toLowerCase().replace(/\"/g, ''))
			prev = '';

		if(prev.indexOf('<') != -1)
			prev = prev.substring(0, prev.indexOf('<'));

		form.innerHTML = '<input type="text" class="val" name="val" value="' + prev + '" /><input type="hidden" name="extra" value="' + extra + '" /><input type="submit" value="modifica &gt;" />';
		form.onsubmit = sendEditable;
		
		obj.removeEvents();
		obj.setStyle('background-color', '');

		obj.innerHTML = '';
		obj.adopt(form);
		form.getFirst().select();
	});
}


/* Accesso all amministrazione */
function showAdminLinks() {
	$$('admin').each(function(link) {
		var newLink = new Element('a');
		newLink.href = '/admin/?ref=' + link.getProperty('r');
		newLink.innerHTML = 'admin';
		link.replaceWith(newLink);
	});
}

function goAdmin(loggedIn) {
	var req = new Ajax('/admin/panel');
	req.onload = 'adminLink';
	req.send();
}

function doAdminLogin(form) {
	var req = new Ajax('/admin/login');
	req.data.push('auth=' + form.auth.value);
	req.onload = function() {
		showAdminLinks();
		goAdmin(true);
	};

	req.send();
	return false;
}


/* Blog in esplora */
function loadBlogs(which) {
	var req = new Ajax('/utenti/esplora/blogs.php');
	req.data.push('which=' + which);
	req.onload = 'blogs';
	req.send();
}


/* Menu */
function showMenu(id,adj) {
	div = $('menu' + id);
	link = $('link' + id);
	div.setStyle('left', link.getLeft() + link.scrollWidth - adj + 'px');
	div.setStyle('top', link.getTop() + link.scrollHeight + 7 + 'px');

	div.setStyle('display', 'block');
	document.onclick = function() {
		hideMenu(id);
	}
}

function hideMenu(id) {
	$('menu' + id).setStyle('display', 'none');
	document.onclick = false;
}


/* functions for Networks & Groups */
function delGComment(gid,cid,type) {
	var req = new Ajax('/groups/actions/del_comment');
	req.data.push('gid=' + gid);
	req.data.push('cid=' + cid);
	req.data.push('type=' + type);
	req.onload = function() {
		new Fx.Style('commento' + cid, 'opacity', {onComplete: function(el){ el.remove(); }}).start(0);
	}
	req.send();
}

/* functions for Invites */
function sendFriendshipRequest(frs)
{
	var req = new Ajax('/utenti/actions/fship_req.php');
	req.data.push('uids=' + frs);
	req.method = 'post';
	req.onload = function(text) {
        if(text.indexOf('<!--success-->') !== -1) {
            var el = document.getElementById('friends_message');
            el.innerHTML = text;

		    new Fx.Style('friends_container', 'opacity', {onComplete: function(el){ el.remove(); }}).start(0);
        }
        else
            alert(text);
	}
	req.send();
}

function sendInvitations(cts,sps) {
	var req = new Ajax('/utenti/actions/send_inv.php');
	req.data.push('contacts=' + cts);
	req.data.push('specials=' + sps);
	req.method = 'post';
	req.onload = function(text) {
        if(text.indexOf('<!--success-->') !== -1) {
            var el = document.getElementById('contacts_message');
            new Fx.Style(el, 'height').start(20);
            el.innerHTML = text;

		    new Fx.Style('contacts_container', 'opacity', {onComplete: function(el){ el.remove(); }}).start(0);
        }
        else
            alert(text);
	}



	req.send();
}
