// Mailviewer logic for MailDepot 2.0

var MailViewer2 = {
	StorageGUID: "",
	TransactionID: "",
	ActionIDX: 1,
	NoJQueryDialog: false,      // True for full size message view (For OX)
	DisableAttachments: false,
	AttachmentList: null,

	InitDialog: function(NoJQueryDialog) {
	  MailViewer2.NoJQueryDialog = NoJQueryDialog;
	  if (!(NoJQueryDialog)) {
    	jQuery("#MailDialog").dialog({
	      autoOpen: false,
  	  	  draggable: true,
  	  	  resizable: true,
    	  height: 700,
	      width: 1000,
  		  modal: true,
		  resize: function(event, ui) { MailViewer2.HandleResize(); }
	    });
		}	
	},

	Show: function() {
	  if (MailViewer2.NoJQueryDialog) {
  		jQuery("#MailDialog").show();
		} else {
  		jQuery("#MailDialog").dialog('open');
		}	
	},
	
	Close: function() {
	  if (MailViewer2.NoJQueryDialog) {
    	jQuery("#MailDialog").hide();
		} else {
  		jQuery("#MailDialog").dialog('close');
		}	
	},

	OpenMsg: function(StorageGUID, TransactionID, ActionIDX, DisableAttachments) {
		MailViewer2.StorageGUID = StorageGUID;  			     // Container GUID
		MailViewer2.TransactionID = TransactionID;			 // Transactions ID
		MailViewer2.ActionIDX = ActionIDX;	                 // Action Index
		MailViewer2.DisableAttachments = DisableAttachments;  // Disable attachment download

		MailViewer2.Clear();
		MailViewer2.Show();
		MailViewer2.StartLoading();

		MailViewer2.PrepareMessage();  // Loads Message from container and returs message attributes
		
		jQuery("#mailviewer-messagebody").block({ message:null, overlayCSS:{opacity:0.1, cursor:'not-allowed'} });
	},
	
	ShowHeaders: function(event) {
		jQuery("#all-headers").show();
		jQuery("#more-headers").removeClass("show-headers");
		jQuery("#more-headers").addClass("hide-headers");
		jQuery("#more-headers").unbind('click'); 
		jQuery("#more-headers").click(MailViewer2.HideHeaders);
		MailViewer2.HandleResize();
		return false;
	},
	
	HideHeaders: function(event) {
		jQuery("#all-headers").hide();
		jQuery("#more-headers").removeClass("hide-headers");
		jQuery("#more-headers").addClass("show-headers");
		jQuery("#more-headers").unbind('click'); 
		jQuery("#more-headers").click(MailViewer2.ShowHeaders);
		MailViewer2.HandleResize();
		return false;
	},
	
	StartLoading: function() {
//		this.SetHtmlBody('<p align="center">Loading message. Please Wait ...</p>');	
	},
	
	HandleResize: function() {
		var height = 250;
		var isAttachmentListVisible = jQuery('#attachment-list-container').is(':visible');

	  if (MailViewer2.NoJQueryDialog) {
      var w_height = jQuery(window).height();
	  	jQuery("#MailDialog").height(w_height);
		}	
		
		height = jQuery("#MailDialog").height() - jQuery("#MailViewerInputPanel").height() - 10;
		if (isAttachmentListVisible) { 
			height = height - jQuery("#attachment-list-container").height() - 5;
		}
		jQuery("#mailviewer-messagebody-canvas").height(height);
		
	  if (MailViewer2.NoJQueryDialog) {
  		// Workaround for IE scrollbar issue
	  	height = height - 10;
		}	
		
		jQuery("#bodyIframe").height(height);
		jQuery("#bodyIframe").width(jQuery("#mailviewer-messagebody-canvas").width());
	},
	
	PrepareMessage: function() {
		var _callback = {
						success: function(result) {
							MailViewer2.SetMessageProperties(result.MessageProperties);
							MailViewer2.SetAttachmentList(result.MessageProperties.Attachments);
							MailViewer2.LoadMessageBody(result.MessageProperties.HasHtmlPart);
						},
						failure: function(error) {
							ErrorHandler(error);
						}
				};
	
		
		var service = new MailDepot2(serviceURL, Session.SessionID);
		service.PrepareMail(MailViewer2.StorageGUID, MailViewer2.TransactionID, MailViewer2.ActionIDX, _callback);
	},
	
	LoadMessageBody: function(UseHtmlBody) {
	  var src = '/Sessions/' + Session.SessionID + '/TransactionCache/' + MailViewer2.TransactionID + '/' + MailViewer2.ActionIDX;
	  
	  if (UseHtmlBody) {
	    src += '/body.html';
	  } else {
	    src += '/body.txt';
	  }

	  jQuery("#bodyIframe").src(src); 
	  
	  // Disable follow links
      jQuery("#bodyIframe").load(function() {
   	    var oBody = $("#bodyIframe").contents().find("body");
		$('a', oBody).click( function(ev){
   		   alert('For security reasons the navigation has been disabled.');
		   return false;
	    });
	  });	  
	},

	ClearMessageBody: function() {
	  var src = '/mail.php?blank=1';
	  jQuery("#bodyIframe").src(src);  
	},
	
	SetMessageProperties: function(MessageProperties) {
	    var Subject = MessageProperties.Subject;
		Subject = Subject.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
	    jQuery("#Subject").html(Subject)
		
	    var Sender = MessageProperties.Sender;
		Sender = Sender.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
	    jQuery("#From").html(Sender);
		
		var Recipients = "";
		if (MessageProperties.Recipients != null) {
			for (i = 0; i < MessageProperties.Recipients.length; i++) {
			  if (Recipients == "") {
				Recipients = MessageProperties.Recipients[i].replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
			  } else {
				Recipients += "; " + MessageProperties.Recipients[i].replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
			  }
			}
		}	

		if (MessageProperties.CcRecipients != null) {
			for (i = 0; i < MessageProperties.CcRecipients.length; i++) {
			  if (Recipients == "") {
				Recipients = MessageProperties.CcRecipients[i].replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
			  } else {
				Recipients += "; " + MessageProperties.CcRecipients[i].replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
			  }
			}
		}	
	
	    jQuery("#To").html(Recipients);
		jQuery("#Date").html(MessageProperties.Date);
		
		this.HandleResize(); 
	},
	
	SetAttachmentList: function(AttachmentList) {
		this.AttachmentList = AttachmentList;
		var Text = '';
		var url = '#';
		
		if (AttachmentList != null) {
			for (i = 0; i < AttachmentList.length; i++) {
				if (AttachmentList[i].ContentID == '') {
				  if (!(MailViewer2.DisableAttachments)) {
					  var url = '#' + i; // Just to know the index of the file
					} 				
	//				Text = Text + '<li><a class="attdl" href="' + url + '">' + AttachmentList[i].Filename + ' (' + bytesToSize(AttachmentList[i].Size, 2) + ')</a></li>';
					Text = Text + '<li><a class="attdl" href="' + url + '">' + AttachmentList[i].Filename + '</a></li>';
				}
			}
		}
		
		if (Text == '') {
			jQuery("#attachment-list-container").hide();
		} else {
			jQuery("#attachment-list-container").show();
			jQuery("#attachment-list").html(Text);
		}
		
		if (MailViewer2.DisableAttachments) {
		  jQuery(".attdl").click(function() { jAlert(_('The download of attachments was disabled by the administrator.'), _('Information')); return false; });
		} else {
          jQuery(".attdl").click(MailViewer2.DownloadAttachment);
		}
		
		this.HandleResize(); 
	},

	DownloadAttachment: function() {
	  var AttachmentIDX = jQuery(this).attr("href").substr(jQuery(this).attr("href").lastIndexOf("#") + 1);

	  var _callback = {
						success: function(result) {
							DownloadFile('/download.php?file=' + result.AttachmentFilename);							
						},
						failure: function(error) {
							ErrorHandler(error);
						}
				};
		
	  var service = new MailDepot2(serviceURL, Session.SessionID);
	  service.ExtractAttachment(MailViewer2.StorageGUID, MailViewer2.TransactionID, MailViewer2.ActionIDX, AttachmentIDX, _callback);	  
	  return false;
	},
	
	Clear: function() {
		this.HideHeaders(null);
		
		jQuery("#Subject").html('n/a');
		jQuery("#From").html('n/a');
		jQuery("#To").html('n/a');
		jQuery("#Date").html('n/a');

//		this.SetHeader('');
		this.ClearMessageBody();
		jQuery("#attachments-source").html('');
	}
}


