function Msg(uid,alias){

	//element where will be visualized the inbox area header 
	var headerViewElement;
	this.headerViewElement=headerViewElement;	//div che conterra l'header dell'area messaggi (per i test 'testo')
	var allmsgViewElement;
	this.allmsgViewElement=allmsgViewElement;	//here will be visualized the received messages

	this.singlemsgRow='singlemsgRow';			//elemento che conterra la riga di un singolo messaggio nell'elenco messaggi
	this.singlemsgClickable='';				//elemento contenuto in singlemsgRow che conterra l'area clickabile per andare sul messaggio
	this.singlemsgId='singlemsgId';			//elemento contenuto in singlemsgRow che conterra l'area con identita mittente messaggio
	
	
	this.msg_buf = new Array();				//Buffer in cui MOMENTANEAMENTE vemgono memorizzati 10 messaggi, VIENE RIEMPITO da this.inbox
	this.msg_buf_len=5;
	this.msg_buf_start= 0;					//valore iniziale
	this.msg_buf_ind=0;						//indice corrente msg nel buffer, di default parte dal primo (che dovrebbe essere il piu recente)
	this.msg_buf_displ=0;					//displacement del buffer di msg rispetto alla totalita di msg(per ora inuztilizzato)
	this.Msg_bufInd=0;									//...se 0 vuol dire che parte dall'inizio della totalita dei msg
	
	this.Bmsg_buf=new Array();				//analogo bacheca
	this.BtotMsg='';						//analogo bacheca
	this.Bmsg_buf_start=0;					//analogo bacheca
	this.Bmsg_buf_len=3;					//analogo bacheca

	this.msgOut_buf_start=0;
	this.BmsgOut_buf_start=0;
	
	//this.current_msg='';					//messaggio attualmente letto
	this.currentMsg='';						//mid messaggio attualmente letto
	this.totMsg='';						//total number of messages
	this.msgAreaContainer;
	this._msgAreaContainer;
	this.msgDelete='';
	this._msgMain;									//contenitore dei contenitori di questa sezione
	//this.readmsgAreaTobeStarted = 0;					//flag che se settato a 1 implica il reset dell'area this._msgMain(sarà settat
	this.readmsgAreaContainer='content_inbox_messaggi';	//contenitore dell'area relativa al messaggio in lettura
	this.Container={};
	this.Components={};
	this.Container['visu_single_msg']='content_inbox_messaggi';//this.readmsgAreaContainer='content_inbox_messaggi';
	this.Container['numerazione_pagine']='numerazione_pagine';
	this.Components['readmsg']=new Array();
	this.Components['writemsg']=new Array();
	
this.Components['readmsg'][0]='numerazione_pagine';
//this.Components['readmsg'][1]='content_inbox_messaggi';//this.readmsgAreaContainer='content_inbox_messaggi';
this.Components['readmsg'][1]='visu_single_msg';//this.readmsgAreaContainer='content_inbox_messaggi';
this.Components['readmsg'][2]='numerazione_pagine';

this.Components['writemsg'][0]='write_single_msg';
this.Container['write_single_msg']='content_inbox_messaggi';

/*this.Container['readmsg'][0]='outbox';
this.Container['readmsg'][1]='header_inbox';
this.Container['readmsg'][2]='content_inbox_messaggi';//this.readmsgAreaContainer='content_inbox_messaggi';
this.Container['readmsg'][3]='numerazione_pagine_outbox';
*/
	
	//elemento #visita corrispondente al box riportante l'identita della persona che ha inviato il msg che si sta leggendo o a cui si sta rispondendo
	this.fillMsgSenderPath='#mainContent > #content_inbox_messaggi > >#visita';
	this.currentReadMsg={};						// oggetto curent read message, sarà l'ultimo messaggio letto. Utile nella composizione della risposta al msg
	this.msgNotifContainer='layer5_content';	//contenitore della notifica esistenza invito buddy pendente dall'utente che avevamo invitato in buddy
	
	this.first=1;
	this.Bfirst=1;
	this.writemsgFirst=1;
	this.readmsgFirst=1;
	this.mode='';
	this.Bmode='';
	
	//CREARE FUNZIONE START CHE carichi this.msg_buf
	this.sendedmsg=function(tex,o){
		//deve esserci un layer floattante pronto a ricever
		//alert('qui');
		this.floatlayer;
		//creare il contenuto html in funzione di tex/ans e metterlo nel content del this.floatlayer;
		ans= JSON.parse(tex);
		if (ans.status == 200) {
			//alert(tex);
			h='Messaggio inviato correttamente';
		}
		else {
			h='Errore:'+ans.errormsg;
		}
		$('#'+_msg.msgNotifContainer).empty().append(h).parent().show();	
		//alert('answer:'+this.answer);
		if (this.answer==1)  $('#menucontent_my input[@name="inbox"]').livequery(function(){$(this).trigger('click');}); //rispondi
		else if (this.answer==2) $('#menucontent_my input[@name="outbox"]').livequery(function(){$(this).trigger('click');});				//forward
		//else  $('#menucontent > input[@name="inbox"]').livequery(function(){$(this).trigger('click');});
		else {
				_container=_msg._msgAreaContainer;
				_nav.setupMainContent("msg_outbox",_container);
				_msg.mode='out';
				ur='/messages/ricevuti2?l='+_msg.msg_buf_len+'&s='+_msg.msgOut_buf_start+'&out=1';
				updtElem(ur,_msg,'outbox',_container);
		}	
	}


	this.sendedBmsg=function(tex,o){
		ans= JSON.parse(tex);
		if (ans.status == 200) {
			chi_sei();
		}
		else if (ans.status == 503) alert('sei in black list, nn puoi inviare nessun messaggio');
		else alert('errore');
	/*
		//creare il contenuto html in funzione di tex/ans e metterlo nel content del this.floatlayer;
		ans= JSON.parse(tex);
		if (ans.status == 200) {
			//alert(tex);
			h='Messaggio inviato correttamente';
		}
		else {
			h='Errore:'+ans.errormsg;
		}
		$('#'+_msg.msgNotifContainer).empty().append(h).parent().show();	
		//alert('answer:'+this.answer);
		if (this.answer==1)  $('#menucontent > input[@name="inbox"]').livequery(function(){$(this).trigger('click');});
		else if (this.answer==2) $('#outbox').livequery(function(){$(this).trigger('click');});
		//else  $('#menucontent > input[@name="inbox"]').livequery(function(){$(this).trigger('click');});
		else {
				_container=_msg._msgAreaContainer;
				_nav.setupMainContent("msg_outbox",_container);
				_msg.mode='out';
				ur='/messages/ricevuti2?l='+_msg.msg_buf_len+'&s='+_msg.msgOut_buf_start+'&out=1';
				updtElem(ur,_msg,'outbox',_container);
		}	
	*/
	}

	

	/*scrive la pagina per invio nuovo msg: può essere chiamata 
				-per invio msg in risposta ad un altro (titolo, dest, did) saranno stati riempiti dalla funzione chiamante
				-per invio msg ex novo a partire probabilmente del msg box contatta o dal submenu-identita
					-titolo	stringa titolo msg
					-dest	stringa destinatario
					-did		uid destinatario
	*/			
	this.writemsg=function(){
		//_msg.answer	1	rispondi
		//			2	inoltra
		struct=this.createWriteMsgHtmlStruct();
		//$('#'+this.readmsgAreaContainer).empty().append(struct);//uso la variabile this.readmsgAreaContainer perchè il contenitore è (per ora) lo stesso sia per readMsg() che per writeMsg()
		$('#'+this.Container['write_single_msg']).empty().append(struct);//uso la variabile this.readmsgAreaContainer perchè il contenitore è (per ora) lo stesso sia per readMsg() che per writeMsg()

		//ora riempio il div "visita" che contiene il thumb microidentita che venendo caricato asincronicamente è meglio che venga caricato una volta che ho la struttura atta a contenerlo
		//alert ('ppppppppppppppppppppppppppp '+ans.from_nick);
		//if (this.answer==1) this.fillMsgSender(ans.from_nick);

		//gli bindo il click
		//		è da bindare
		//			-blocca contatto
		//			-aggiungi agli amici
		//			-rispondi
		//BINDARE GLI ELEMENTI DELLA STRUCT
		if (this.writemsgFirst){			//al brimo passaggio creo i bind con livequery
			bindevent('readmsgThumb');
			bindevent('writeMsgHtmlStruct');
			this.writemsgFirst=0;
		}	
		//this.writemsg_fill(ans.msg);
		this.writemsg_fill(this.currentReadMsg);
	}	
	
	this.readmsg_fill=function(msg){
		$('#content_inbox_messaggi > > #messaggio_inbox > #msg_body').empty().append(msg.body);
		$('#content_inbox_messaggi > > #messaggio_inbox > span > #msg_title').text(msg.title);
		$('#content_inbox_messaggi > > #messaggio_inbox > span > #msg_title').attr('msid',msg.mid);
		$('#content_inbox_messaggi > div > #data_messaggio').text(msg.data);
		
		}
	
	this.writemsg_fill=function(msg){
		if (this.answer==1){
			//riempio title msg e destination secondo a chi si sta rispondendo
			$('#msgform_a').attr('value',msg.from_nick);
			$('#msgform_titolo').attr('value','Re['+msg.title+']');
			$('#msgform_titolo').attr('msid',msg.mid);
			//riempio i campi simili al readmsg del msg originale riportato sotto quello che si sta per scrivere
			$('#content_inbox_messaggi > > #messaggio_inbox > #msg_body').text(msg.body);
			$('#content_inbox_messaggi > > #messaggio_inbox > span > #msg_title').text(msg.title);
			$('#content_inbox_messaggi > > div > #data_messaggio').text(msg.data);
		}
		else if (this.answer==2){
			$('#msgform_titolo').attr('value','Fw['+msg.title+']');
			$('#msgform_testo').attr('value','Fw['+msg.body+']');
		}
		else	{
			$('#msgform_a').attr('value',msg.from_nick);
		}
	}

	//parsa risposta server per lettura singolo msg e poi chiama chi riempie
	this.readmsg=function(tex,o){
		var ans= JSON.parse(tex);
		
		var ind=-1;
		if (ans.status == 200) {
			//title,body,from,to
				ans.msg['title']=decodeURI(ans.msg['title']);
				ans.msg['body']=decodeURI(ans.msg['body']);
				_msg.currentReadMsg=ans.msg;
				//alert(ans.msg['body'].length);
				if (_msg.mode=='in') struct=_msg.createMsgHtmlStruct();
				else struct=_msg.createReadOutMsgHtmlStruct();
				//$('#'+_msg.readmsgAreaContainer).empty().append(struct);
				
				struct2=_msg.numerazione_pagine_outboxStruct();
				//alert(struct2);
				$('#'+_msg.Container['numerazione_pagine']).empty().append(struct2);
				$('#'+_msg.Container['visu_single_msg']).empty().append(struct);
				//$('#'+_msg.Container['numerazione_pagine']).empty().append(struct2);
				//ora riempio il div "visita" che contiene il thumb microidentita che venendo caricato asincronicamente è meglio che venga caricato una volta che ho la struttura atta a contenerlo
				if (_msg.mode=='in') _msg.fillMsgSender(ans.msg.from);
				else _msg.fillMsgSender(ans.msg.to);
				//gli bindo il click
				if (_msg.readmsgFirst){
					bindevent('readmsgThumb');
					//		è da bindare
					//			-blocca contatto
					//			-aggiungi agli amici
					//			-rispondi
					//BINDARE GLI ELEMENTI DELLA STRUCT
					bindevent('readMsgHtmlStruct');
					_msg.readmsgFirst=0;
				}	
				
			nextinf=ans.prev;
			nextsup=ans.next;
			tot=ans.totMsg;
			pos=ans.pos;
			_msg.fill_nextlnk(nextinf,nextsup,tot,pos);
				_msg.readmsg_fill(ans.msg);
			//riempio barra_contatto
			
			//nel caso fosse pieno il buffer dei messaggi allora devo aggiornare lo stato del msg appena letto MA SOLO NEL CASO CHE QUESTO ERA UNO NON LETTO
			if (_msg.mode=='in')
				if (_msg.msg_buf.length>0) {
					for (r=0;r<_msg.msg_buf.length;r++){
						if (_msg.msg_buf[r].id == _msg.currentMsg) {ind=r;}
					}	
					if (ind != -1)
					if (_msg.msg_buf[ind].state== 0) {
						_msg.msg_buf[ind].state=1;
					}
				}
			sync('readmsg');
		}	
		else {
			alert(ans.errormsg);
		}
	}	

/*	this.getBufInfSup=function(){
					Tot_bufInd=_msg.Msg_bufInd+_msg.msg_buf_start;
					
					if ((Tot_bufInd) < 1) nextinf=-1;				//se primo msg (piu vecchio), togli "link x msg precedente"
					else nextinf=_msg.Msg_bufInd-1;
					if ((Tot_bufInd) >= (_msg.totMsg-1)) {
						nextsup=-1;		//se ultimo msg (piu recente), togli "link x msg successivo"
						}
					else {nextsup=_msg.Msg_bufInd+1;}
					_msg.fill_nextlnk(nextinf,nextsup);
	}

*/
	//ritorna la posizione del currentMsg nel buffer msg_buf
	this.getMsg_bufInd=function(mid){
		//alert(this.msg_buf.length);
		ind=-1;
		if (this.msg_buf.length>0) {
			for (r=0;r<this.msg_buf.length;r++){
				if (this.msg_buf[r].id == this.currentMsg) ind=r;
			}
		}	
		return ind;		
	}
	
	this.fill_nextListLnk=function(nextinf,nextsup,totMsg,buf_start){
		if (nextsup>-1) {
			$('#numerazione_pagine_outbox > #successivo > a').attr('nextsup',nextsup);
			$('#numerazione_pagine_outbox > #successivo > a').text('successivo -->>');
			bindevent_loc('nextsupL');
		}
		else $('#numerazione_pagine_outbox > #successivo > a').text('');	
		if (nextinf>-1) {
			$('#numerazione_pagine_outbox > #precedente > a').attr('nextinf',nextinf);
			$('#numerazione_pagine_outbox > #precedente > a').text('<<-- precedente');
			bindevent_loc('nextinfL');
		}	
		else $('#numerazione_pagine_outbox > #precedente > a').text('.');
		buf_start=parseInt(buf_start);
		this.msg_buf_len=parseInt(this.msg_buf_len);
		var n=Math.ceil((1+buf_start)/this.msg_buf_len);
		//alert(this.msg_buf_start+'  '+this.msg_buf_len+'   '+n);
		var totPag=Math.ceil(parseInt(totMsg)/parseInt(this.msg_buf_len));
		//alert(this.totMag+'dddd'+parseInt(this.msg_buf_len));
		$('#numerazione_pagine_outbox > #numerazione').text(n+'/'+totPag);
}
	
	this.fill_nextlnk=function(nextinf,nextsup,tot,pos){
		if (nextsup>-1) {
			$('#numerazione_pagine > #successivo > a').attr('nextsup',nextsup);
			//$('#content_inbox_messaggi > #numerazione_pagine > #successivo > a').livequery
			bindevent_loc('nextsup');
		}	
		else $('#numerazione_pagine > #successivo > a').text('');
		if (nextinf>-1) {
			$('#numerazione_pagine > #precedente > a').attr('nextinf',nextinf);
			bindevent_loc('nextinf');
		}	
		else $('#numerazione_pagine > #precedente > a').text('.');
		//n=this.Msg_bufInd+1;
		pos++;
		//$('#content_inbox_messaggi > #numerazione_pagine > #numerazione').text(n+'/'+this.totMsg);
		$('#numerazione_pagine > #numerazione').text(pos+'/'+tot);
	}

		
	function bindevent_loc(what){
		switch (what) {

		case "nextsupL":
			idstr='#numerazione_pagine_outbox > #successivo > a';
			$(idstr).livequery(function(){
				$(this).unbind('click').click(function(){
					nextsup=$(this).attr('nextsup');
					_container=_msg._msgAreaContainer;
					if (_msg.mode == 'in') {
						_msg.msg_buf_start=nextsup;
						ur='/messages/ricevuti2?l='+_msg.msg_buf_len+'&s='+_msg.msg_buf_start;
						updtElem(ur,_msg,'inbox',_container);
				}	
				else {
					_msg.msgOut_buf_start=nextsup;
					ur='/messages/ricevuti2?l='+_msg.msg_buf_len+'&s='+_msg.msgOut_buf_start+'&out=1';
					updtElem(ur,_msg,'outbox',_container);
				}	
				});
			});		
		break;
		case "nextsupB":
			idstr='#numerazione_pagine_bacheca > #successivo > a';
			$(idstr).livequery(function(){
				$(this).unbind('click').click(function(){
					nextsup=$(this).attr('nextsup');
					_container=_msg._msgAreaContainer;
					if (_msg.Bmode == 'in') {
						_msg.Bmsg_buf_start=nextsup;
						//updtElem('/messages/readlistbacheca?uid='+_notifica.id+'&l='+_msg.Bmsg_buf_len+'&s='+_msg.Bmsg_buf_start,_msg,'readlistbacheca',container);
						ur='/messages/readlistbacheca?uid='+_notifica.id+'&l='+_msg.Bmsg_buf_len+'&s='+_msg.Bmsg_buf_start;
						updtElem(ur,_msg,'readlistbacheca',_container);
				}	
				else {
					_msg.BmsgOut_buf_start=nextsup;
					ur='/messages/readlistbacheca?uid='+_chisono.oid+'&l='+_msg.Bmsg_buf_len+'&s='+_msg.BmsgOut_buf_start;
					updtElem(ur,_msg,'readlistbacheca',_container);
				}	
				});
			});		
		break;
		case "nextinfB":
			idstr='#numerazione_pagine_bacheca > #precedente > a';
			$(idstr).livequery(function(){
				$(this).unbind('click').click(function(){
					nextinf=$(this).attr('nextinf');
					_container=_msg._msgAreaContainer;
					if (_msg.Bmode == 'in') {
						_msg.Bmsg_buf_start=nextinf;	
						ur='/messages/readlistbacheca?uid='+_notifica.id+'&l='+_msg.Bmsg_buf_len+'&s='+_msg.Bmsg_buf_start;
						updtElem(ur,_msg,'readlistbacheca',_container);
					}	
					else {
						_msg.BmsgOut_buf_start=nextinf;	
						ur='/messages/readlistbacheca?uid='+_chisono.oid+'&l='+_msg.Bmsg_buf_len+'&s='+_msg.BmsgOut_buf_start;
						updtElem(ur,_msg,'readlistbacheca',_container);
					}	
				});
			});		
		break;
		case "nextinfL":
			idstr='#numerazione_pagine_outbox > #precedente > a';
			$(idstr).livequery(function(){
				$(this).unbind('click').click(function(){
					nextinf=$(this).attr('nextinf');
					_container=_msg._msgAreaContainer;
					if (_msg.mode == 'in') {
						_msg.msg_buf_start=nextinf;	
						ur='/messages/ricevuti2?l='+_msg.msg_buf_len+'&s='+_msg.msg_buf_start;
						updtElem(ur,_msg,'inbox',_container);
					}	
					else {
						_msg.msgOut_buf_start=nextinf;	
						ur='/messages/ricevuti2?l='+_msg.msg_buf_len+'&s='+_msg.msgOut_buf_start+'&out=1';
						updtElem(ur,_msg,'outbox',_container);
					}	
				});
			});		
		break;
		case "nextsup":
			idstr='#numerazione_pagine > #successivo > a';
			$(idstr).livequery(function(){
				$(this).unbind('click').click(function(){
				mid=$(this).attr('nextsup');
				if (_msg.mode=='in') ur='/messages/read2?mid='+mid;
				else ur='/messages/read2?out=1&mid='+mid;
				_msg.currentMsg=mid;
				_container=document.getElementById(_msg.allmsgViewElement);
				updtElem(ur,_msg,'readmsg',_container);
				});
			});		
		break;
		case "nextinf":
			idstr='#numerazione_pagine > #precedente > a';
			$(idstr).livequery(function(){
				$(this).unbind('click').click(function(){
				mid=$(this).attr('nextinf');
				if (_msg.mode=='in') ur='/messages/read2?mid='+mid;
				else ur='/messages/read2?out=1&mid='+mid;
				_msg.currentMsg=mid;
				_container=document.getElementById(_msg.allmsgViewElement);
				updtElem(ur,_msg,'readmsg',_container);
				});
			});		
		break;
			
		case "msgListItemClickon":	//corretto
			idstr='div#'+_msg.allmsgViewElement+' > > div#'+_msg.singlemsgClickable;
			
			$(idstr).livequery(function(){
				$(this).click(function(){
					_container=_msg._msgMain;
					_nav.setupMainContent("msg_read",_container);

					mid=$(this).attr('mid');
					//_container=_msg.allmsgViewElement;
				if (_msg.mode=='in') ur='/messages/read2?mid='+mid;
				else ur='/messages/read2?out=1&mid='+mid;
					_msg.currentMsg=mid;
					_container=document.getElementById(_msg.allmsgViewElement);
					updtElem(ur,_msg,'readmsg',_container);
				});
			});
		break;
		
		case "deletemsg":	//corretto
			idstr='div#'+_msg.allmsgViewElement+' > > div#'+_msg.msgDelete;
			$(idstr).livequery(function(){
				$(this).unbind('click').click(function(){
					mid=$(this).parent().attr('mid');
					_msg.currentMsg=mid;
					//alert(_msg.currentMsg);
					_container=_msg._msgAreaContainer;
					//_nav.setupMainContent("msg",_container);
					if (_msg.mode=='in') ur='/messages/cancella2?mid='+mid;
					else ur='/messages/cancella2?out=1&mid='+mid;
					updtElem(ur,_msg,'delmsgck',_container);
					//$(this).parent().remove();
				});
			});		
		break;
		
		case "Bdeletemsg":	//corretto
			idstr='div#'+_msg.allmsgViewElement+' > > div#'+_msg.msgDelete;
			idstr='div#home_bacheca_content  img[alt="cancella"]';
			$(idstr).livequery(function(){
				$(this).unbind('click').click(function(){
					mid=$(this).parent().attr('mid');
					_msg.BcurrentMsg=mid;
					//alert(_msg.currentMsg);
					_container=_msg._msgAreaContainer;
					//_nav.setupMainContent("msg",_container);
					if (_msg.Bmode=='in') ur='/messages/cancellamsgbache?mode=in&mid='+mid;
					else ur='/messages/cancellamsgbache?mode=out&mid='+mid;
					updtElem(ur,_msg,'Bdelmsgck',_container);
					//$(this).parent().remove();
				});
			});		
		break;
		}
	}	


	//funzione che ha il compito di inizializzare il buffer dei msg (_msg.msg_buf)
	//viene chiamata all'inizio dal myjq.js tra le operazioni di default
	this.startMsg=function(){
			url='/messages/ricevuti2?l='+_msg.msg_buf_len+'&s='+_msg.msg_buf_start;
			$.getJSON(url,function(ans){
				//alert(tex);
				//ans=JSON.parse(tex);
				if (ans.status == 200){
					_msg.msg_buf=ans.dati;
					_msg.totMsg=ans.tot;
					//this.printallmsg2(m_js.dati,m_js.tot,o);
				}
				else {
					alert(ans.errormsg);
				}	
			});	
	}	
	//riempie l'elemento #visita corrispondente al box riportante l'identita della persona che ha inviato il msg che si sta leggendo o a cui si sta rispondendo
	//	TODO	il path per arrivare all'elemento da riempire è hard coded quindi un domani potrebbe creare problemi, 
	//		ad esempio ci potrebbero essere problemi ad usare la stessa funzione con lo stesso path per readMsg() & writeMsg()
	this.fillMsgSender=function(from){
		str=from;
		url='/profile/getuserpart2?str='+str;
			$.getJSON(url,function(ans){
				usrs = new Array();
				usrs = ans.usrs;
				for (r=0;r<usrs.length;r++){
					userthumb=_nav.userthumb2(usrs[r]);
					$(_msg.fillMsgSenderPath).empty().append(userthumb);
					_msg.currentReadMsg.from_nick=usrs[r].nick;//nn ha senso per la lista msg ma lo ha per il readMsg()
					//$('#mainContent > #content_inbox_messaggi > >#visita').empty().append(userthumb);
					}
				});	
	}	



	//crea contenitori del messaggio e roba affine (eventuale intestazione) 
	this.numerazione_pagine_outboxStruct=function(){
	h='<div id="precedente" style="width:200px;float:left;text-align:left;" ><a class="linkr"><<-- precedente</a></div>  '
	+'<div id="numerazione" style="width:270px;float:left;text-align:center;font:Verdana;font-size:12px;color:#333333">1/110</div>'   
	+'<div id="successivo" style="width:200px;float:right;text-align:right;"><a class="linkr">successivo -->></a></div>'
	+'<br>';
	return h;
	}

	this.createMsgHtmlStruct=function(){
	h='<div style="background-color:#E4E4E4;height:150px">'
	+'<br> '
	+'<div id="data_messaggio"></div>';

	h+='<div id=\'visita\'>';//questo sara riempito ascincronamente via chiamata a url='http://meetutest/profile/getUserPart?str='+str;
	
	h+='</div>'
	+'<div id="messaggio_inbox" > '
	+'<span class="rosso"><strong msid="" id="msg_title">titolo</strong></span><br />'
	+'<div id="msg_body"></div>'
	+'</div></div>'
	+'<div id="barra_contatto">'
	+'	<img src="../application/views/img/blacklist.gif" alt="black list" align="absbottom" /> '
	+'	<a id="blocca_contatto" target="_blank" class="link">Blocca contatto</a>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
	+'	<img src="../application/views/img/amici.gif" alt="amici" width="16" height="16" align="absbottom" />'
	+'	<a id="aggiungi_amici" target="_blank" class="link">Aggiungi agli amici</a> </div>'
	+'<div id="rispondi"><img src="../application/views/img/forward.gif" alt="rispondi" align="absbottom" /> <a target="_blank" class="link">Rispondi</a></div><br><br>';
	return h;
	}

	this.createReadOutMsgHtmlStruct=function(){
	h='<div style="background-color:#E4E4E4;height:150px;">'
	+'<div id="data_messaggio"></div>';

	h+='<div id=\'visita\'>';//questo sara riempito ascincronamente via chiamata a url='http://meetutest/profile/getUserPart?str='+str;
	
	h+='</div>'
	+'<div id="messaggio_inbox"> '
	+'<span class="rosso"><strong id="msg_title">titolo</strong></span><br />'
	+'<div id="msg_body"></div>'
	+'</div></div>'
	+'<div id="barra_contatto">'
	+'	<img src="../application/views/img/blacklist.gif" alt="black list" align="absbottom" /> '
	+'	<a id="blocca_contatto" target="_blank" class="link">Blocca contatto</a>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
	+'	<img src="../application/views/img/amici.gif" alt="amici" width="16" height="16" align="absbottom" />'
	+'	<a id="aggiungi_amici" target="_blank" class="link">Aggiungi agli amici</a> </div>'
	+'<div id="rispondi"><img src="../application/views/img/forward.gif" alt="inoltra" align="absbottom" /> <a target="_blank" class="link">Inoltra</a></div><br><br>';
	return h;
	}	
	
	this.createWriteMsgHtmlStruct=function(){
		h='<div id="numerazione_pagine"><span class="rosso">Scrivi messaggio</span></div>  '
		+'<div id="form_messaggio" >'
		+'<fieldset>'
		+'<div id="msgform_a_div">';
		if (this.answer==2) h+='<label >A:</label><input name="a" id="msgform_a" type="text" size="53" />'
		else h+='<label >A:</label><input name="a" id="msgform_a" type="text" readonly="true" size="53" />'
		h+='</div>'
		+'<div id="msgform_titolo_div"><label>Titolo:</label><input name="titolo" msid="0" id="msgform_titolo" type="text"  size="53" /></div>'
		+'<div id="msgform_testo_div"><label>Testo:</label><textarea name="testo" id="msgform_testo" cols="50" rows="3" onKeyPress=check_length("msgform_testo","msg","contatore_msg"); onKeyDown=check_length("msgform_testo","msg","contatore_msg");></textarea><div id="contatore_msg">500</div>'
		+'<span class="footer"></span></div>'
		+'</fieldset>'
		+'<div id="cancella" >'
		//+'<input name="Cancella" type="button" value="Cancella" class="Bottone" /></div>'
		+'</div>'
		+'<div id="invia">'
		+'<input name="Invia" type="button" value="Invia" class="Bottone" /></div></div>';
		if (this.answer==1){
			h+='<div id="numerazione_pagine" ><span class="rosso">Messaggio originale</span></div><br>'
	+'<div style="background-color:#E4E4E4;height:150px;">'
			+'<div id="data_messaggio"><br><br><br><br></div>';
	
			h+='<div id=\'visita\'></div>';//questo sara riempito ascincronamente via chiamata a url='http://meetutest/profile/getUserPart?str='+str;
			h+='<div id="messaggio_inbox"> '
			+'<span class="rosso"><strong id="msg_title">titolo</strong></span><br />'
			+'<div id="msg_body"></div>'
			+'</div></div>';
		}	
		return h;
	}	

	this.readlistbacheca=function(tex,o){//this.inbox=function(tex,o){
		var nextsupL;
		var nextinfL;
		aans = new Array();
		//alert(tex);
		aans=JSON.parse(tex);
		if (aans.status == 200){
			if ((aans.relation == 2) && (_msg.Bmode != 'in')) {
				$('div#scrivi_bacheca').remove();
			}	
			_msg.Bmsg_buf=aans.dati;
			_msg.BtotMsg=parseInt(aans.tot);
			if (aans.start) _msg.Bmsg_buf_start=parseInt(aans.start);
			else _msg.Bmsg_buf_start=0;
			if ((_msg.Bmsg_buf_start-_msg.Bmsg_buf_len)<0) {
				if (_msg.Bmsg_buf_start > 0) nextinfL=0;
				else nextinfL=-1;
			}	
			else nextinfL=_msg.Bmsg_buf_start-_msg.Bmsg_buf_len;
			if ((_msg.Bmsg_buf_start+_msg.Bmsg_buf_len)>=_msg.BtotMsg) nextsupL=-1;
			else nextsupL=_msg.Bmsg_buf_start+_msg.Bmsg_buf_len;
			_msg.Bfill_nextListLnk(nextinfL,nextsupL,_msg.BtotMsg,_msg.Bmsg_buf_start);
			//alert (_msg.Bmsg_buf.length);
			//alert(tex);
			//alert ((aans.relation));
			_msg.Bprintallmsg2(_msg.Bmsg_buf,_msg.BtotMsg,o);
		}
		else {
			alert(aans.errormsg);
		}	
	}

	this.Bfill_nextListLnk=function(nextinf,nextsup,totMsg,buf_start){
		if (nextsup>-1) {
			$('#numerazione_pagine_bacheca > #successivo > a').attr('nextsup',nextsup);
			$('#numerazione_pagine_bacheca > #successivo > a').text('successivo -->>');
			bindevent_loc('nextsupB');
		}
		else $('#numerazione_pagine_bacheca > #successivo > a').text('');	
		if (nextinf>-1) {
			$('#numerazione_pagine_bacheca > #precedente > a').attr('nextinf',nextinf);
			$('#numerazione_pagine_bacheca > #precedente > a').text('<<-- precedente');
			bindevent_loc('nextinfB');
		}	
		else $('#numerazione_pagine_bacheca > #precedente > a').text('.');
		buf_start=parseInt(buf_start);
		this.Bmsg_buf_len=parseInt(this.Bmsg_buf_len);
		var n=Math.ceil((1+buf_start)/this.Bmsg_buf_len);
		var totPag=Math.ceil(parseInt(totMsg)/parseInt(this.Bmsg_buf_len));
		$('#numerazione_pagine_bacheca > #numerazione').text(n+'/'+totPag);
		if ((nextsup<0) && (nextinf<0)) $('#numerazione_pagine_bacheca > #numerazione').text('');
}

	this.Bprintallmsg2=function(msgs,tot,o){
		var cont='';		var str='';		var newh='';
		this.singlemsgClickable='titolo_inbox';this.msgDelete='cancella_inbox';
		if (msgs.length > 0){
			for (r=0;r<msgs.length;r++){
				newh+=this.BcreateMsgRowHtmlStruct(msgs[r]);
				str+=msgs[r].from+',';
				/*if (_msg.Bmode == 'in') str+=msgs[r].from+',';
				else str+=msgs[r].to+',';*/
			}
				id='#'+_msg.msgAreaContainer;
				$(id+' #home_bacheca_content').empty().append(newh);

			str=str.substr(0,str.length-1);
			url='/profile/getuserpart2?str='+str;
				$.getJSON(url,function(ans){
					usrs = new Array();
					usrs = ans.usrs;
					for (r=0;r<usrs.length;r++){
						userthumb=_nav.userthumb2(usrs[r]);
						$('#home_bacheca_content').find('div[@mid="'+msgs[r].id+'"]').find('#visita').empty().append(userthumb);
					}
				});
				if (this.Bfirst) {
					bindevent_loc('Bdeletemsg');
					//bindevent('BmsgUserthumb');
					this.Bfirst=0;
				}
		}
	else {
				newh='.....Nessun messaggio......';	
				id='#'+_msg.msgAreaContainer;
				$(id+' #home_bacheca_content').empty().append(newh); //TODO    ERRORE!!!!!!!! CORREGGERE
	}		
}	
	this.BcreateMsgRowHtmlStruct=function(msg){
		if (_msg.Bmode == 'in') {
			h='<div id="contenitore_testo_bacheca" mid='+msg.id+'>';
			//if (msg.state == 1) h+='<div id="stato" style="width:80px; height:40px;padding-left:5px; vertical-align:middle; float:left; font-family:Verdana; font-size:11px;  color: #666666; text-align:center; padding-top:20px; background-color:#E4E4E4"><img src="../application/views/img/mail_on.gif" alt="posta" align="texttop" /> Letto</div>';
			//else h+='<div id="stato" style="width:80px; height:40px;padding-left:5px; vertical-align:middle; float:left; font-family:Verdana; font-size:11px;  color: #666666; text-align:center; padding-top:20px; background-color:#E4E4E4"><img src="../application/views/img/posta.gif" alt="posta" align="texttop" /> Nuovo</div>';
			h+='<div id="visita"></div>';
			h+='<div id="testo_bacheca"  mid='+msg.id+'><img src="../application/views/img/close.gif" alt="cancella" width="16" height="16"  align="right" />'+msg.body+'</div></div>';
			//h+='</div>';
		}
		else {
			h='<div id="contenitore_testo_bacheca" mid='+msg.id+'>';
			//if (msg.state == 1) h+='<div id="stato" style="width:80px; height:40px;padding-left:5px; vertical-align:middle; float:left; font-family:Verdana; font-size:11px;  color: #666666; text-align:center; padding-top:20px; background-color:#E4E4E4"><img src="../application/views/img/mail_on.gif" alt="posta" align="texttop" /> Letto</div>';
			//else h+='<div id="stato" style="width:80px; height:40px;padding-left:5px; vertical-align:middle; float:left; font-family:Verdana; font-size:11px;  color: #666666; text-align:center; padding-top:20px; background-color:#E4E4E4"><img src="../application/views/img/posta.gif" alt="posta" align="texttop" /> Nuovo</div>';
			h+='<div id="visita"></div>';
			if (_notifica.id == msg.from) 
				h+='<div id="testo_bacheca"  mid='+msg.id+'><img src="../application/views/img/close.gif" alt="cancella" width="16" height="16"  align="right" />'+msg.body+'</div></div>';
			else h+='<div id="testo_bacheca"  mid='+msg.id+'>'+msg.body+'</div></div>';
			//h+='</div>';
		}
		return h;
	}

		

	//this is the entry-point function (called when inbox menu tag is clicked)
	// function called to read server answer when we want the list of msg sended TO me
	this.inbox=function(tex,o){
		var nextsupL;
		var nextinfL;
		m_js = JSON.parse(tex);
		ans=JSON.parse(tex);
		if (ans.status == 200){
			_msg.msg_buf=m_js.dati;
			_msg.totMsg=parseInt(m_js.tot);
			if (m_js.start) _msg.msg_buf_start=parseInt(m_js.start);
			else _msg.msg_buf_start=0;
			if ((_msg.msg_buf_start-_msg.msg_buf_len)<0) {
				if (_msg.msg_buf_start > 0) nextinfL=0;
				else nextinfL=-1;
			}	
			else nextinfL=_msg.msg_buf_start-_msg.msg_buf_len;
			if ((_msg.msg_buf_start+_msg.msg_buf_len)>=_msg.totMsg) nextsupL=-1;
			else nextsupL=_msg.msg_buf_start+_msg.msg_buf_len;
			_msg.fill_nextListLnk(nextinfL,nextsupL,_msg.totMsg,_msg.msg_buf_start);
			_msg.printallmsg2(_msg.msg_buf,_msg.totMsg,o);
		}
		else {
			alert(ans.errormsg);
		}	
	}
	
	// function called to read server answer when we want the list of msg sended FROM me
	this.outbox=function(tex,o){
		//var msg_buf_start=0;
		var nextsupL;
		var nextinfL;
		m_js = JSON.parse(tex);
		ans=JSON.parse(tex);
		if (ans.status == 200){
			_msg.msgOut_buf=m_js.dati;
			_msg.totMsgOut=parseInt(m_js.tot);
			_msg.msgOut_buf_start=parseInt(m_js.start);
			if ((_msg.msgOut_buf_start-_msg.msg_buf_len)<0) {
				if (_msg.msgOut_buf_start > 0) nextinfL=0;
				else nextinfL=-1;
			}	
			else nextinfL=_msg.msgOut_buf_start-_msg.msg_buf_len;
			if ((_msg.msgOut_buf_start+_msg.msg_buf_len)>=_msg.totMsgOut)  nextsupL=-1;
			else nextsupL=_msg.msgOut_buf_start+_msg.msg_buf_len;
			_msg.fill_nextListLnk(nextinfL,nextsupL,_msg.totMsgOut,_msg.msgOut_buf_start);
			
			_msg.printallmsg2(_msg.msgOut_buf,_msg.totMsgOut,o);
		}
		else {
			alert(ans.errormsg);
		}	
	}

	//delete a msg after a click on the delete link in the msg list
	//TBD : what to do with total number of msg
	this.delmsgck=function(tex,o){
		ans=JSON.parse(tex);
		if (ans.status == 200) {
			if (_msg.mode=='in') {
				for (r=0;r<this.msg_buf.length;r++){
			 		if (this.msg_buf[r].id == this.currentMsg){
			 			if (this.msg_buf[r].state== 0) {
			 				this.msg_buf.splice(r,1);
			 				sync('delmsgck');
			 			}
			 			else this.msg_buf.splice(r,1);
			 		}
				}
			}	
			else {
				for (r=0;r<this.msgOut_buf.length;r++){
			 		if (this.msgOut_buf[r].id == this.currentMsg){
			 			if (this.msgOut_buf[r].state== 0) {
			 				this.msgOut_buf.splice(r,1);
			 			}
			 			else this.msgOut_buf.splice(r,1);
			 		}
				}
			}	
		}
		else {
			alert(ans.errormsg);
		}
		if (_msg.mode == 'out') this.printallmsg2(this.msgOut_buf,0,o);
		else this.printallmsg2(this.msg_buf,0,o);			
	}

	//delete a bacheca msg after a click on the delete link in the msg bacheca
	//TBD : what to do with total number of msg
	this.Bdelmsgck=function(tex,o){
		ans=JSON.parse(tex);
		if (ans.status == 200) {
			if (_msg.Bmode=='in') {
				for (r=0;r<this.Bmsg_buf.length;r++){
			 		if (this.Bmsg_buf[r].id == this.BcurrentMsg){
			 			if (this.Bmsg_buf[r].state== 0) {
			 				this.Bmsg_buf.splice(r,1);
			 				//sync('delmsgck');
			 			}
			 			else this.Bmsg_buf.splice(r,1);
			 		}
				}
			}	
			else {
				for (r=0;r<this.Bmsg_buf.length;r++){
			 		if (this.Bmsg_buf[r].id == this.currentMsg){
			 			if (this.Bmsg_buf[r].state== 0) {
			 				this.Bmsg_buf.splice(r,1);
			 			}
			 			else this.Bmsg_buf.splice(r,1);
			 		}
				}
			}	
		}
		else {
			alert(ans.errormsg);
		}
		if (_msg.Bmode == 'in')
		updtElem('/messages/readlistbacheca?uid='+_notifica.id+'&l='+_msg.Bmsg_buf_len+'&s='+_msg.Bmsg_buf_start,_msg,'readlistbacheca',container);
		else 
		updtElem('/messages/readlistbacheca?uid='+_chisono.oid+'&l='+_msg.Bmsg_buf_len+'&s='+_msg.Bmsg_buf_start,_msg,'readlistbacheca',container);	
		/*if (_msg.Bmode == 'out') this.Bprintallmsg2(this.BmsgOut_buf,0,o);
		else {
			//this.Bprintallmsg2(this.Bmsg_buf,0,o);
			updtElem('/messages/readlistbacheca?uid='+_notifica.id+'&l='+_msg.Bmsg_buf_len+'&s='+_msg.Bmsg_buf_start,_msg,'readlistbacheca',container);
			
		}*/	
	}
	
	/*funzione creata per modificare il testo riportante lo stato msg nella lista msg visualizzata(cosa però nn necessaria)-----al momento INUTILIZZATA*/
	this.printmsgState=function(msg){
			if (msg.state == 1) stateHtml='<img src="../application/views/img/mail_on.gif" alt="posta" align="texttop" /> Letto';
			else stateHtml='<img src="../application/views/img/posta.gif" alt="posta" align="texttop" /> Nuovo';
			return stateHtml;
	}	

	this.inboxhead=function ($notread,o){
		var newhtml='';
		newhtml='il tuo inbox ha '+$notread+' messaggi non letti';
		
		header_elm=o.getElementsByTagName("div")[this.headerViewElement];
		header_elm.innerHTML=newhtml;
	}	
	
	this.createMsgRowHtmlStruct=function(msg){
		if (_msg.mode == 'in') {
			h='<div id="messaggio" mid='+msg.id+' style="border:solid 1px #000000; width:672px; height:60px; margin-top:2px">';
			//alert (msg.title);
			if (msg.state == 1) h+='<div id="stato" style="width:80px; height:40px;padding-left:5px; vertical-align:middle; float:left; font-family:Verdana; font-size:11px;  color: #666666; text-align:center; padding-top:20px; background-color:#E4E4E4"><img src="../application/views/img/mail_on.gif" alt="posta" align="texttop" /> Letto</div>';
			else h+='<div id="stato" style="width:80px; height:40px;padding-left:5px; vertical-align:middle; float:left; font-family:Verdana; font-size:11px;  color: #666666; text-align:center; padding-top:20px; background-color:#E4E4E4"><img src="../application/views/img/posta.gif" alt="posta" align="texttop" /> Nuovo</div>';
			h+='<div id="visita_inbox"></div>';
			h+='<div id="titolo_inbox"  mid='+msg.id+' style=" width:198px; height:45px; float:left; font-family:Verdana; font-size:12px; color: #333333; padding-top:15px; background-color:#E4E4E4; padding-left:3px; padding-right:3px;cursor:pointer">'+unescape(msg.title)+'</div>';
			h+='<div id="data_inbox" style="float:left; width:100px; height:40px; padding-top:20px; font-family:Verdana; font-size:11px; color:#999999; text-align:center ">'+msg.data+'</div>'
			+'<div id="cancella_inbox" style="width:75px; height:40px; padding-top:20px; float: left; font:Verdana; font-size:11px; color:#666666; background-color:#E4E4E4; padding-left:5px" ><a class="link"><img src="../application/views/img/trash.gif" alt="cancella" border="0" align="texttop" /> cancella</a></div>'
			+'</div>';
		}
		else {
			h='<div id="messaggio" mid='+msg.id+' style="border:solid 1px #000000; width:672px; height:60px; margin-top:2px">';
			h+='<div id="visita_inbox"></div>';
			h+='<div id="titolo_inbox"  mid='+msg.id+' style=" width:198px; height:45px; float:left; font-family:Verdana; font-size:12px; color: #333333; padding-top:15px; background-color:#E4E4E4; padding-left:3px; padding-right:3px;cursor:pointer" class="link">'+unescape(msg.title)+'</div>';
			h+='<div id="data_inbox" style="float:left; width:100px; height:40px; padding-top:20px; font-family:Verdana; font-size:11px; color:#999999; text-align:center ">'+msg.data+'</div>'
			+'<div id="cancella_inbox" style="width:75px; height:40px; padding-top:20px; float: left; font:Verdana; font-size:11px; color:#666666; background-color:#E4E4E4; padding-left:5px" ><a class="link"><img src="../application/views/img/trash.gif" alt="cancella" border="0" align="texttop" /> cancella</a></div>'
			+'</div>';
		}
		
		return h;
	}
	
	this.printallmsg2=function(msgs,tot,o){
		var cont='';		var str='';		var newh='';
		
		this.singlemsgClickable='titolo_inbox';
		this.msgDelete='cancella_inbox';
		//alert(msgs.length);
		if (msgs.length > 0){
			for (r=0;r<msgs.length;r++){
				newh+=this.createMsgRowHtmlStruct(msgs[r]);
				if (_msg.mode == 'in') str+=msgs[r].from+',';
				else str+=msgs[r].to+',';
			}
				//al fine di separare logica e presentazione il div qui sotto potrebbe essere creato in _nav
				//newh='<div id="content_inbox" style="border:none; width:693px; height:390px; margin-left:5px; margin-top:0px; font:Verdana;overflow:auto;">'
				//newh='<div id="content_inbox">';
				//+newh+'</div>';	
				id='#'+_msg.msgAreaContainer;
				$(id+' #content_inbox').empty().append(newh);
				//$(id).append(newh);

			str=str.substr(0,str.length-1);
			url='/profile/getuserpart2?str='+str;
			
				$.getJSON(url,function(ans){
					usrs = new Array();
					usrs = ans.usrs;
					for (r=0;r<usrs.length;r++){
						userthumb=_nav.userthumb2(usrs[r]);
						$('#content_inbox').find('div[@mid="'+msgs[r].id+'"]').find('#visita_inbox').empty().append(userthumb);
					}
				
				//bindevent_loc('msgListItemClickon');
				//bindevent_loc('deletemsg');
				});
				if (this.first) {
					bindevent_loc('msgListItemClickon');
					bindevent_loc('deletemsg');
					bindevent('msgUserthumb');
					this.first=0;
				}
		}
	else {
				newh='.....Nessun messaggio......';	
				id='#'+_msg.msgAreaContainer;
				$(id+' #content_inbox').empty().append(newh); //TODO    ERRORE!!!!!!!! CORREGGERE
	}		
}	

	function userstamp2(j) {
		var cont='';
		//cont+="<div id='visita' utente='"+j.id+"'>";
		//cont+="<div id="+divname+" utente='"+j.uid+"'>";
		cont+="	<div id='identita_mini' utente='"+j.uid+"'>";
		cont+="		<div id='foto_mini' utente='"+j.uid+"'><img src='"+j.image+"' width='42px' height=45px'></div>";
		cont+="		<div id='status_mini'><img src='../application/views/img/stato_off_small.png' alt='off-line' width='21' height='25' border='0' /></div>";
		cont+="	</div>";
		cont+="	<div id='info_mini'>";
		cont+="		<span class='alis_mini'>"+j.nick+"</span><br />";
		cont+=		j.age+" anni<br />"+j.sex;
		cont+="		<img src='../application/views/img/uomo_16x16.gif' alt='uomo' width='16' height='16' align='absmiddle' />";
		cont+="	</div>";
		//cont+="</div>";
		
			return cont;	
	}
	function userstamp(j,divname) {
		//var	divname=this.singlemsgId
		var cont='';
		
		//cont+="<div id='visita' utente='"+j.id+"'>";
		cont+="<div id="+divname+" utente='"+j.uid+"'>";
		cont+="	<div id='identita_mini'>";
		cont+="		<div id='foto_mini' utente='"+j.uid+"'><img src='"+j.image+"' width='42px' height=45px'></div>";
		cont+="		<div id='status_mini'><img src='../application/views/img/stato_off_small.png' alt='off-line' width='21' height='25' border='0' /></div>";
		cont+="	</div>";
		cont+="	<div id='info_mini'>";
		cont+="		<span class='alis_mini'>"+j.nick+"</span><br />";
		cont+=		j.age+" anni<br />"+j.sex;
		cont+="		<img src='../application/views/img/uomo_16x16.gif' alt='uomo' width='16' height='16' align='absmiddle' />";
		cont+="	</div>";
		cont+="</div>";
		
			return cont;	
	}




}


