/* MAILBOX RELATED FUNCTIONS */

//used by the flash chat to update the number of unread message
var getUnreadMail = function (nbMail) { 
	$('nb_unread_mails').innerHTML = nbMail; 
};

//used to enhanced email list viewing
var toggleMail = function (el) { 
	el.parentNode.parentNode.className = ( el.checked === false ) ? el.className : el.className + ' selected';
};

//enable the current user to mail another user
var mailTo = function(id_user) { 
	if (cs.id_user > 0) { 
		setLocation('module=mail&action=write&id_user=' + id_user ); 
	} else if (cs.id_user === id_user) {
		setLocation('module=profil');
	} else { 
		open_popunder($('subscribe')); 
	} 
};

//enable the current user to view a selected mail
var viewMail = function (e) { 
	var rgMsg = /^mail-(\d+)$/,a = getEventTarget(e); 
	if(a.nodeName.toLowerCase() === 'input' && a.type==='checkbox') { 
		toggleMail(a); 
		return; 
	} 
	var b = a.parentNode.id.match(rgMsg); 
	if (b === null) { 
		return; 
	} 
	setLocation('module=mail&id_message=' + b[1] + '&action=view');
};

//mail infoBulles
var infoBulles = {
	'start' : function(event) {
		var o = getEventTarget(event);
		if (o.nodeName === 'TD' && /show_message/.test(o.className)) {
			var mess = o.getElementsByTagName('div')[0];	
			if (mess && /hidden_message/.test(mess.className)) {
				var pos  = getNodePos(o);
				var posInit = getNodePos($('content'));
				var info = $('infobulles');
				info.childNodes[1].innerHTML = mess.innerHTML;
				info.style.display = 'block';
				info.style.left    = pos.x + 50 - posInit.x + 'px';
				info.style.top     = pos.y - 5 - posInit.y - info.offsetHeight + 'px';
			}
		}
	},
	'stop' : function() {
		$('infobulles').style.display = 'none';
	}
};

//select mails
var selectMails = function (formId,type) {
	var f = $(formId);
	if (typeof type === 'string' || /^(all|none|read|unread)$/.test(type)){
		for(var i = 0, j = f.elements.length; i < j; i += 1){
			if( f.elements[i].type === 'checkbox') {
				f.elements[i].checked = false;
				switch(type){
					case 'all':
						f.elements[i].checked = true;
						break;
					case 'read':
					case 'unread':
						f.elements[i].checked = false;
						if (f.elements[i].className === type) {
							f.elements[i].checked = true;
						}
						break;
				}
				toggleMail(f.elements[i]);
			}
		} 
	}
};

//send a message
var sendMessage = function(event){ 
	stopEvent(event);
	var err = {}, fields = ['pseudo','title','message'];
	for (var i = 0, o, err, p, count = 0, j = fields.length; i < j; i += 1) {
		p = $(fields[i]);
		err = getNextElement(p.parentNode.parentNode);
		if (!err || !/errorText/.test(err.className)) {
			err = document.createElement('div');
			err.className = 'errorText';
			insertAfter(err, p.parentNode.parentNode);
		}
		err.innerHTML = '';
		o = p.value.replace(/(^\s+)|(\s+$)/, '');
		switch (fields[i]) {
			case 'title':
				if (o === '' || o.length < 3 || o.length > 128) {
					err.innerHTML=cs.errorText['m_title'];
					count += 1;
				}
				break;
			case 'pseudo':
				if (!cs.regex.pseudo.test(o)) {
					err.innerHTML=cs.errorText['m_nickname'];
					count += 1;
				}
				break;
			case 'message':
				if(o === '' || o.length < 3 || o.length > 500) {
					err.innerHTML=cs.errorText['m_message'];
					count += 1;
				}
				break;
		}
	}
	if (count > 0) {
		return false;
	} else {
		sendForm('fwrite');
	}
};

//efface les mails selectionnes
var updateMailbox = function(event) { 
	var f = $('fmailbox'), doSubmit = false;
	for (var i = 0, j = f.elements.length; i < j; i++) {
		if (f.elements[i].type === 'checkbox' && f.elements[i].checked === true) {
			doSubmit = true;	
			break;
		}
	}
	stopEvent(event);
	if (doSubmit === true) {
		sendForm('fmailbox'); 
	} else {
		window.alert(cs.errorText.no_message_selected);
	}
};

var checkPseudo = function(){

	var showResult = function(e) {
		if (cs.HR.form.status == 200) {
			var res = getNextElement($('pseudo').parentNode.parentNode);
			var m = $('main_content');
			var o = getFirstElement(m);
			if (o.className=='recipient'){
				removeNode(o);
			}
			switch (cs.HR.form.responseText) {
				case 'RESERVED': res.innerHTML = cs.errorText['nickname_reserved']; break;
				case 'FORBIDDEN': res.innerHTML = cs.errorText['nickname_forbidden']; break;
				case 'KO': res.innerHTML = cs.errorText['m_nickname']; break;
				default:
						   res.innerHTML = '';
						   var frag = document.createElement('div');
						   frag.className='recipient';
						   frag.innerHTML = cs.HR.form.responseText;
						   m.insertBefore(frag,getFirstElement(m));
						   break;
			}
		}
	};

	return function(){
		if(cs.HR.form !== null){
			cs.HR.form.abort();
		}
		var p = $('pseudo'),res = getNextElement(p.parentNode.parentNode);
		if (!res || !/errorText/.test(res.className)) {
			res = document.createElement('div');
			res.className = 'errorText';
			insertAfter(res,p.parentNode.parentNode);
		}
		res.innerHTML='';
		if (!cs.regex.pseudo.test(p.value)) {
			res.innerHTML=cs.errorText['nickname'];
			p.focus();
			return;
		} 
		cs.HR.form = sAjax(window.location.pathname, 'module=ajax&action=check_pseudo&pseudo=' + p.value, showResult, {'method':'post','mime':'plain'});
	};

}();

var cleanUp = function (event) {
	stopEvent(event);
	if (confirm(cs.wording.boxCleanup)) {
		var o = getEventTarget(event);
		setLocation(o.search.substring(1) + '&ajax=1');
	}
};


