var recname_store = '';
var rec_store = '';
var rec_html = '';
var id_store = '';
var isnow = '';

$(document).ready(function() {
	
	if(pagezone == "mailindex") {
		allThreads();
	}
	
	$('.filt_mail_refresh').click(function() {
		$('div#mail_listing').empty();
		allThreads();
	});

	$('#commNewmail').click(function() {
		var to = this.id;
		$('#profile_mailbox').toggle(500);
										 
	});
	
	// NEW MAIL VIA PROFILE
	$('#profile_mailbox form').submit(function(e){
					e.preventDefault();
								
					var subject = "";
					var message = $("#mailTxt").val();
					var mId = $('.box_newinput').attr('id');
					var action = 2;
					
					if(prvdoubleclick == 0) {
						sendMail(action, subject, message, mId);
						prvdoubleclick = 1;
					}
					
					// prevent doubleclick, allow firing submit after timeout of xxxx milliseconds
					setTimeout(function(){ 
						prvdoubleclick = 0;
					}, 1000);
	});
	
	
	// NEW MAIL
	$('#box_mail_compose form').submit(function(e){
					e.preventDefault();
					
					var txt_subject = $("#txt_subject").val();
					var message = $("#txt_message").val();
					var action = 1;
					
					var receivers = id_store;
					
					if(receivers == '') {
						var msg_norec = '<span style="font-weight: bold; color: #ff0033;">'+str_mail_selrec+'</span>';
						$('#receiverlist').html(msg_norec).Pulsate(300,3);
					}
					else {
						if(prvdoubleclick == 0) {
							sendMail(action, txt_subject, message, receivers);
							prvdoubleclick = 1;
						}
						// prevent doubleclick, allow firing submit after timeout of xxxx milliseconds
						setTimeout(function(){ 
							prvdoubleclick = 0;
						}, 1000);
					}
	});
	
	$('#recselector').change(function() {
		
		var udata = this.value;
		var method = "add";
		// $('div#receivermsg ').empty();
		
		handleMailReceivers(udata, method);
		
		document.mail_compose_new.recselector.selectedIndex = 0; // set optionslist to null
	});
	
	
	// initialize();
	
});


function initialize(headers, replies) {

	if(headers == 1) {
		$('.mail_subject_to, .mail_subject_from').unbind();
		
		$('.mail_subject_to, .mail_subject_from').click(function() {
			
			var threadID = this.id;		
			
			// check if mail_thread div is opened, only when closed fire ajax
			
			isnow = $('#mail_thread_'+threadID).css('display');		
			var action = "show";
			
			if(isnow == "none") {
				readThread(threadID, action, 0); // read mailcontent funtion 
			}
			else {
				setTimeout(function(){ // der optik wegen... :)
					$('#mail_thread_'+threadID).empty();
				}, 250);
			}
			$('div#mail_thread_'+threadID).toggle();
		});
	}
	
	
	if(replies == 1) {
		$('.mail_action_reply').unbind();
		
		$('.mail_action_reply').click(function() {
			var bothids = this.id;
			bothids = bothids.split(".");
			
			var trid = bothids[0];
			var replyid = bothids[1];
			var action = "reply";
			
			// check if thread is opened or closed
			isnow = $('#mail_thread_'+trid).css('display');		
			
			if(isnow == "none") {
				// open mail_thread DIV
				$('div#mail_thread_'+trid).toggle(150);
				readThread(trid, action, replyid);
			}
			else {
				$('#rep_'+replyid).toggle(150);
				fullCreateMail(replyid);
			}
		});
	}
	
	$('.mail_action_cancel').unbind();
	
	$('.mail_action_cancel').click(function() {
	
		var bothid = this.id;
		
		bothid = bothid.split(".");
		
		var del_id = bothid[1];
		var thread_id = bothid[0];
		var confirm = 'n';
		
		deleteMail(thread_id, del_id, confirm);
	});
	

}


function deleteMail(threadid, deleteid, confirm) {

	var loadergif = '<div class="ajaxloader"></div>';
	
	isnow = $('#mail_thread_'+threadid).css('display');		
	if(isnow == "none") {
		$('div#mail_thread_'+threadid).toggle(150);
	}
	
	$('#mail_thread_'+threadid).html(loadergif);
	
	var input = threadid +'|'+ deleteid +'|'+ confirm;
	
	// ajax
		$.ajax({ 	
			   type: "POST",
			   url: '/dyn/maildel/',
			   dataType: 'json',
			   timeout: 7000,
			   data: 'search=' + input,
			   global: 'false',
			   success: function(json) {
				   
				   var response = json.data[0].rsp;
				   
				   var content = '';
				   
				   if(response == 1) {
				   		content += '<div class="box_mail_reply" style="background-color: #ff0033;">'+str_mail_mesdel+'</div>';
				   }
				   if(response == 2) {
				   		content += '<div class="box_mail_reply" style="background-color: #ff0033;">';
				   		content += '<div>'+str_mail_delcontext+'</div>';
				   		content += '<div><span id="confirm_yes" style="cursor: pointer;"><strong>'+str_mail_delete+'</strong></span> | <span id="confirm_no" style="cursor: pointer;">'+str_mail_cancel+'</span></div>';
				   		
				   		content += '</div>';
				   }
				   
				   $('#mail_thread_'+threadid).html(content);
				   
				   // hide message screen when deleted. 
				   if(response == 1) {
				   		setTimeout(function(){ 
				   			$('#mail_thread_'+threadid).empty();
							$('#mail_thread_'+threadid).hide();
							allThreads();
				  		}, 2000);
				   }
				   
				   $('span#confirm_yes').click(function() {
				   		var confirm = 'y';
				   		deleteMail(threadid, deleteid, confirm);
				   });
				   $('span#confirm_no').click(function() {
				   		$('#mail_thread_'+threadid).empty();
						$('#mail_thread_'+threadid).hide();
				   });
				   
			   }
		});
	// end ajax

	
	

}

function allThreads() {
	
	// get filter vars
	
	var filter_received = 0;
	var filter_sent = 0;
	
	var filter_group = $("input:radio[name='filter_group']:checked").val(); // 1=all, 2=contacts
	
	if( $("input[name='filter_sent']:checked").is(":checked")) {
		filter_sent = 1;
	}
	if( $("input[name='filter_received']").is(":checked")) {
		filter_received = 1;
	}
	
	var filter_name = $("input[name='filter_name']").val();
	
	var mailfilters = filter_group+'|'+filter_sent +'|'+ filter_received+'|'+filter_name;

	$('div#mail_listing').empty();
	
	var loadergif = '<div class="ajaxloader"></div>';
	$('div#mail_listing').html(loadergif);
	
	// ajax
		$.ajax({ 	
			   type: "POST",
			   url: '/dyn/mails/',
			   dataType: 'json',
			   data: 'search=' + mailfilters,
			   timeout: 7000,
			   global: 'false',
			   success: function(json) {
			   	
			   		var length = json.data.length;
			   		var content = '';
			   		var who = 0;
			   		var target = 'from';
				    var target_txt = '';
				    
				    var mailnums = json.data[0].items;
				    
				    if(mailnums > 0) {
				   		for(i=0; i<length; i++) {
					   			
						   		who = json.data[i].to;
						   		if(who == 1) {
						   			target = 'from';
						   			target_txt = 'Von:'
						   		}
					   			else {
					   				target = 'to';
					   				target_txt = 'An:'
					   			}
					   			
					   			content += '<div class="mail_index_'+target+'">';
					   				content += '<div style="padding: 7px 4px 7px 4px; font-size: 16px; font-weight: bold; color: #484848;">';
					   				content += ''+json.data[i].allmails+'';
					   				if(json.data[i].newmails > 0) {
					   					content += '<span id="newmails_'+json.data[i].threadid+'" style="font-size: 11px; font-weight: bold; color: #4F4F4F">('+json.data[i].newmails+')</span>';
					   				}
					   				content += '</div>';
					   			content += '</div>';
					   			content += '<div class="mail_subject_'+target+'" id="'+json.data[i].threadid+'">';
					   				content += '<div class="mail_subject_'+target+'_upper">'+target_txt+' '+json.data[i].person+'';
					   					content += '<span class="mail_subject_tiny">';
					   					content += ', am '+json.data[i].time+' ';
					   					if(json.data[i].time != json.data[i].threadupdate){
					   					content += '- upgedated am '+json.data[i].threadupdate+' ';
					   					}
					   					content += '</span>';
					   				content += '</div>';
					   				content += '<div class="mail_subject_lower">'+json.data[i].subject+'</div>';
					   			content += '</div>';
					   			content += '<div class="mail_subject_action_'+target+'">';
					   				// content += '<div class="mail_action_refresh"></div>';
					   			
					   				content += '<div id="'+json.data[i].threadid+'.'+json.data[i].id+'" class="mail_action_cancel"></div>';
					   				if(target == "from") {
					   					content += '<div class="mail_action_reply" id="'+json.data[i].threadid+'.'+json.data[i].id+'"></div>';
				   					}
					   				content += '<div id="clearDiv"></div>';
					   			content += '</div>';
					   			content += '<div id="clearDiv"></div>';
					   			content += '<div id="mail_thread_'+json.data[i].threadid+'" name="mail_thread"></div>';
					   			content += '<div class="mail_spacer"></div>'; 			
					   			
					   			
				   		}
				    }
				   	else {
				   			content += '<div style="background-color: #FFFFFF; padding-bottom: 2px;">';
				   			content += '<div class="nf_line_info">'+str_mail_nomsg+'</div>';
				   			content += '</div>';
				   	}
			   		
			   		$('div#mail_listing').html(content);
			   		
			   		$("div[name='mail_thread']").hide();
			   		
			   		var headers = 1;
			   		var replies = 1;
			   		initialize(headers, replies);
			   		
			   } // success
		});
	
	
}


function readThread(threadID, action, replyid) {
	// slide down threadcontent box and load data via ajax
	
	var loadergif = '<div class="ajaxloader"></div>';
	
	if(action != 'reload') { // dont show loadergif after reply refresh of thread
		$('div#mail_thread_'+threadID).html(loadergif);
	}
	
	
		// ajax
		$.ajax({ 	
			   type: "POST",
			   url: '/dyn/mailread/',
			   dataType: 'json',
			   timeout: 7000,
			   data: 'search=' + threadID,
			   global: 'false',
			   success: function(json) {
			   	
			   	   var length = json.data.length;
				   
				   var rsp = json.data[0].rsp;
				   var content = '';
				   var who = 0;
				   var target = 'from';
				   var target_txt = '';
				   
				   who = json.data[0].to;
				   
				   if(who == 1) {target = 'from';}
				   else {target = 'to';}
				   
				   content += '<div class="mail_content_'+target+'" name="mail_content">'+json.data[0].content+'</div>';
				   content += '<div class="box_mail_reply" id="rep_'+json.data[0].id+'"></div>';
				   
				   if(length > 1) {
				   	
				   		for(i=1; i<length; i++) {
				   			
					   		who = json.data[i].to;
					   		if(who == 1) {
					   			target = 'from';
					   			target_txt = 'Von:'
					   		}
				   			else {
				   				target = 'to';
				   				target_txt = 'An:'
				   			}
					   	
					   		// display replies to this mail thread
					   		content += '<div class="mail_noindex"></div>';
					   		content += '<div class="mail_subject_'+target+'">';
					   			content += '<div class="mail_subject_'+target+'_upper">'+target_txt+' '+json.data[i].person+'<span class="mail_subject_tiny">, '+str_mail_am+' '+json.data[i].time+' </span></div>';
					   			content += '<div class="mail_subject_lower">'+json.data[i].subject+'</div>';
					   		content += '</div>';
					   		content += '<div class="mail_subject_action_'+target+'">';
					   			content += '<div id="'+threadID+'.'+json.data[i].id+'" class="mail_action_cancel"></div>';
					   		if(target == "from"){
					   			content += '<div class="mail_action_reply" id="'+threadID+'.'+json.data[i].id+'"></div>';
					   		}
					   			content += '<div id="clearDiv"></div>';
					   		content += '</div>';
					   		content += '<div id="clearDiv"></div>';
					   		content += '<div class="mail_content_'+target+'" name="mail_content">'+json.data[i].content+'</div>';
					   		content += '<div class="box_mail_reply" id="rep_'+json.data[i].id+'">&nbsp;</div>';
				   		}
				   }
				   
				   
				   $('div#mail_thread_'+threadID).html(content);
				   
				   $('span#newmails_'+threadID).empty();
				   
				   $('.box_mail_reply').hide();
				   
				    var headers = 0;
			   		var replies = 1;
			   		initialize(headers, replies);
				   
				   if(action == "reply") {
				   		$('#rep_'+replyid).show();
				   		fullCreateMail(replyid);
				   }
				   else {
				  		//$('.box_mail_reply').hide();
				   }
			   }
		});
	

}


function fullCreateMail(mailid) { // create mail stuff, input fields, ...
	var content = '';
	content += '<div><strong>Deine Antwort</strong></div>';
	content += '<form>';
	content += '<div><textarea id="replytxt_'+mailid+'" class="content_input_textarea_half"></textarea></div>';
	content += '<div style="float: left;"><input id="'+mailid+'" type="submit" class="content_input_submit" value="'+str_mail_formsend+'" name="fullmail_submit">&nbsp;</div>';
	content += '<div class="inline_replyentry_message_'+mailid+'" style="float: left;"></div><div id="clearDiv"></div>';
	content += '</form>';
	
	$('#rep_'+mailid).html(content);
	
	$('#rep_'+mailid+' form').submit(function(e) {
			e.preventDefault();
			var message = $('#replytxt_'+mailid).val();
			var action = 3;
			var subject;
			var mId = mailid;
			sendMail(action, subject, message, mId);
			
	});
}


function handleMailReceivers(udata, method) {
	
	udata = udata.split("|");
	var userid = udata[0];
	var name = udata[1];
	var picurl = udata[2];
	
	
	// check store if user exists
		
	var lst = rec_store.split(",");
		
	var inleng = lst.length;
	var unique = 0;
	
	
	if(inleng > 0) {
		for(i=0; i<inleng; i++) {
			
				var tmp_list = lst[i].split("|");
				
				
				var list_userid = tmp_list[0];
				var list_username = tmp_list[1];
								
				if(list_userid != 0 || list_userid != '') {
																
						if(list_userid == userid) {
							unique = 1;
						}
						else {
							//alert("existing |" + listname +' | '+ name);
						}
				}
		}
	}
	
	if(unique == 0) {
			// check count > maxreceivers
			if(userid != 0) {
				if(inleng > 10) {					
					var mail_errmsg = '<strong>'+str_mail_maxrec+'</strong>';
					$("span#mail_errmsg").html(mail_errmsg);
					// drop message that max receivers are reached
					
					setTimeout(function(){ 
							$("span#mail_errmsg").empty();
						}, 3000);
					}
					
				else if(inleng <= 10) {
					rec_store += userid +'|'+ name +'|'+picurl+',';
					
					id_store += userid + ','; // receivers values
					createMailReceiverList(userid, name, picurl);

				}
			}
			else {
				emptyRecMsg();	
			}
			
	}
	else if(unique == 1){
		$('div#receiverlist').effect("pulsate", {times: 2}, 700);
	}
	
	// write values to hidden form elem
	// var id_html = '<input type="hidden" name="receivers" value="'+id_store+'" />';
	// $("div#allrecids").html(id_html);
	
	$("#allreceivers").val(id_store)
	
	// html output to target div
	
	$("div#receiverlist").html(rec_html).jScrollPane({scrollbarWidth:15, scrollbarMargin:5});
	
	$('div.usr_imgbox_list').bind(
						'click', 
						function(){
							$(this).fadeOut(
								250,
								function() {
									$(this).remove();
								}
							);
							updateMailReceivers(this.id);
						
							return false;
						} 
					);
	
		
}


function createMailReceiverList(id, name, pic) {
		
	rec_html += '<div id="'+id+'" class="usr_imgbox_list">';
		rec_html += '<div class="usr_img_list">';
			rec_html += '<img border="0" src="/images/users/75/'+pic+'" width="25" height="25" />';
		rec_html += '</div>';
		rec_html += '<div class="usr_imgtitle_list"><div class="innerpad_5">'+name+'</div></div>';
		rec_html += '<div id="clearDiv"></div>';
	rec_html += '</div>';
}


function updateMailReceivers(id) {
	
	var del_user = id;
	var method = "del";
	
	var del = rec_store.split(",");
		
	var delleng = del.length;	
	
	var new_store = '';
	rec_html = '';
	id_store = '';
	
	if(delleng > 0) {
		for(i=0; i<delleng; i++) {
			
				var tmp_list = del[i].split("|");
				
				
				var list_userid = tmp_list[0];
				var list_username = tmp_list[1];
				var list_userpic = tmp_list[2];
				

				
				if(list_userid == del_user) {
					// delete this user	
				}
				else if(list_userid != del_user && (list_userid)){
					new_store += list_userid+'|'+list_username+'|'+list_userpic+',';
					
					id_store += list_userid + ',';
					
					createMailReceiverList(list_userid, list_username, list_userpic);
				}
		}
	}
		
	rec_store = new_store;
	
	$("#allreceivers").val(id_store);

	$("div#receiverlist").jScrollPane({scrollbarWidth:15, scrollbarMargin:5}); 
	
	emptyRecMsg();
}

function emptyRecMsg() {
	
	if(rec_store == ''){
		setTimeout(function(){ 
			var msg_rec = str_mail_selrec;
			$("div#receiverlist").html(msg_rec);
		}, 300);
	}	
}



function sendMail(action, txtSubject, txtMessage, ids) {
	
	if(txtMessage != '') {
		
		var srch = action +'|'+ txtSubject +'|'+ txtMessage +'|'+ ids;
		
		if(action == 1) { // new via inbox
			var boxname = "#box_mail_compose";
			var subjectfield = "#txt_subject";
			var contentfield = "#txt_message";
			var messagedom = ".inline_newentry_message";
		}
		else if(action == 2) { // new via userprofile 
			var boxname = "#profile_mailbox";
			var subjectfield = "#non_existing";
			var contentfield = "#mailTxt";
			var messagedom = ".inline_newentry_message";
		}
		else if(action == 3) { // reply via inbox
			var boxname = "#rep_"+ids;
			var subjectfield = "#non_existing";
			var contentfield = "#replytxt_"+ids;
			var messagedom = ".inline_replyentry_message_"+ids;
		}
		
		var loadergif = '<div class="ajaxloader"></div>';
		$("div"+messagedom).html(loadergif);
		
		// ajax
		$.ajax({ 	
			   type: "POST",
			   url: '/dyn/mail/',
			   dataType: 'json',
			   timeout: 7000,
			   data: 'search=' + srch,
			   global: 'false',
			   success: function(json) {
				   
				   var rsp = json.data[0].rsp;
				   
				   if(rsp == 1) {
						// result ok
						var succmsg = str_mail_sent;
						setTimeout(function(){
											$(boxname).hide();
											// clear fields
											$(messagedom).empty();
											$(contentfield).attr({value: ""});
											$(subjectfield).attr({value: ""});
											resetStores(); // reset data stores
											if(action == 1) {
												$('#receiverlist').empty();
											}
											else if(action == 3) {
												readThread(json.data[0].threadID, "reload", 0);
											}
											},2000);
											
				   }
				   else if(rsp == 2) { // only spaces
						var succmsg = str_mail_emptysub;
				   }
				   else if(rsp == 3) { // too short
						var succmsg = str_mail_emptytext;
				   }
				   else if(rsp == 4) { // session timeout
						var succmsg = "ERROR";
				   }
				   
				   $("div"+messagedom).html(succmsg);  
			   }
		});
	
	} // field !empty
	else {
		var succmsg = str_mail_fillall;
		$("div.inline_newentry_message").html(succmsg); 
	}
}

function resetStores() {
	recname_store = '';
	rec_store = '';
	rec_html = '';
	id_store = '';
}
