refactored communication and added to Lead / Contact
diff --git a/public/js/communication.js b/public/js/communication.js
index 5e7a010..ee6cce2 100644
--- a/public/js/communication.js
+++ b/public/js/communication.js
@@ -14,6 +14,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+// opts - parent, list, doc, email
 erpnext.CommunicationView = Class.extend({
 	init: function(opts) {
 		this.comm_list = [];
@@ -27,12 +28,20 @@
 	make: function() {
 		var me = this;
 		this.make_body();
-		$.each(this.list, function(i, d) {
-			me.prepare(d);
-			me.make_line(d);
-		});
-		// show first
-		this.comm_list[0].find('.comm-content').toggle(true);
+
+		if(this.list && this.list.length) {
+			$.each(this.list, function(i, d) {
+				me.prepare(d);
+				me.make_line(d);
+			});			
+			// show first
+			this.comm_list[0].find('.comm-content').toggle(true);			
+		} else {
+			this.body.remove()
+			$("<div class='alert'>No Communication with this " 
+				+ this.doc.doctype +" yet.</div>").appendTo(this.wrapper);
+		}
+		
 	},
 	make_body: function() {
 		$(this.parent)
@@ -40,26 +49,73 @@
 			.css({"margin":"10px 0px"});
 			
 		this.wrapper = $("<div><h4>Communication History</h4>\
-			<button class='btn btn-small'>Add Reply</button></p></div>")
+			<div style='margin-bottom: 8px;'>\
+				<button class='btn btn-small' \
+					onclick='cur_frm.communication_view.add_reply()'>\
+				<i class='icon-plus'></i> Add Reply</button></div>\
+			</div>")
 			.appendTo(this.parent);
 			
 		this.body = $("<table class='table table-bordered table-hover table-striped'>")
 			.appendTo(this.wrapper);
 	},
+	add_reply: function() {
+		var me = this;
+		var d = new wn.ui.Dialog({
+			width: 640,
+			title: "Add Reply: " + (this.doc.subject || ""),
+			fields: [
+				{label:"Subject", fieldtype:"Data", reqd: 1},
+				{label:"Message", fieldtype:"Text Editor", reqd: 1, fieldname:"content"},
+				{label:"Send Email", fieldtype:"Check"},
+				{label:"Send", fieldtype:"Button"},
+			]
+		});
+		
+		$(d.fields_dict.send_email.input).attr("checked", "checked")
+		$(d.fields_dict.send.input).click(function() {
+			var args = d.get_values();
+			if(!args) return;
+			wn.call({
+				method:"support.doctype.communication.communication.make",
+				args: $.extend(args, {
+					doctype: me.doc.doctype,
+					name: me.doc.name,
+					lead: me.doc.lead,
+					contact: me.doc.contact,
+					recipients: me.email
+				}),
+				callback: function(r) {
+					d.hide();
+					cur_frm.reload_doc();
+				}
+			});
+		});
+		
+		d.fields_dict.content.input.set_input("<p></p><p></p>=== In response to ===<p></p>" 
+			+ me.list[0].content)
+		$(d.fields_dict.subject.input).val(this.doc.subject || "").change();
+		
+		d.show();
+	},
+
 	prepare: function(doc) {
 		//doc.when = comment_when(this.doc.modified);
 		doc.when = doc.modified;
 		if(doc.content.indexOf("<br>")== -1 && doc.content.indexOf("<p>")== -1) {
 			doc.content = doc.content.replace(/\n/g, "<br>");
 		}
-		doc.email_address = doc.email_address.replace(/</, "&lt;").replace(/>/, "&gt;");
+		if(!doc.sender) doc.sender = "[unknown sender]";
+		doc.sender = doc.sender.replace(/</, "&lt;").replace(/>/, "&gt;");
 		doc.content = doc.content.split("=== In response to ===")[0];
 		doc.content = doc.content.split("-----Original Message-----")[0];
 	},
 	make_line: function(doc) {
 		var me = this;
 		var comm = $(repl('<tr><td title="Click to Expand / Collapse">\
-				<p><b>%(email_address)s on %(when)s</b></p>\
+				<p><b>%(sender)s on %(when)s</b> \
+					<a href="#Form/Communication/%(name)s" style="font-size: 90%">\
+						Show Details</a></p>\
 				<div class="comm-content" style="border-top: 1px solid #ddd; padding: 10px; \
 					display: none;"></div>\
 			</td></tr>', doc))