diff --git a/layouts/v7/modules/Emails/resources/MassEdit.js b/layouts/v7/modules/Emails/resources/MassEdit.js
index cc2c02b1ca43730ba9a21d1316d8c3e70eda6b1b..a9ced971c20416f8454171f0515858d651654ffd 100644
--- a/layouts/v7/modules/Emails/resources/MassEdit.js
+++ b/layouts/v7/modules/Emails/resources/MassEdit.js
@@ -8,16 +8,16 @@
  *************************************************************************************/
 
 jQuery.Class("Emails_MassEdit_Js",{},{
-    
-    init: function () {
-        this.preloadData = new Array();
-    }, 
+
+	init: function () {
+		this.preloadData = new Array();
+	}, 
 
 	ckEditorInstance : false,
 	massEmailForm : false,
-    saved : "SAVED",
-    sent : "SENT",
-    attachmentsFileSize : 0,
+	saved : "SAVED",
+	sent : "SENT",
+	attachmentsFileSize : 0,
 	documentsFileSize : 0,
 
 	getPreloadData : function() {
@@ -28,8 +28,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 		this.preloadData = dataInfo;
 		return this;
 	},
-    
-    /*
+
+	/*
 	 * Function to get the Mass Email Form
 	 */
 	getMassEmailForm : function(){
@@ -38,8 +38,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 		}
 		return this.massEmailForm;
 	},
-    
-    /**
+
+	/**
 	 * Function to get ckEditorInstance
 	 */
 	getckEditorInstance : function(){
@@ -54,153 +54,153 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 	 * return UI
 	 */
 	showComposeEmailForm : function(params){
-        var aDeferred = jQuery.Deferred();
-        var thisInstance = this;
-        app.request.post({data:params}).then(function(err,data){
-            app.helper.hideProgress();
-            if(err == null) {
-               var modalContainer = app.helper.showModal(data, {cb: function(){
-                    thisInstance.registerEvents();
-               }});
-               return aDeferred.resolve(modalContainer);
-            }
-        });
-        return aDeferred.promise();
-	},
-    
-    /**
+		var aDeferred = jQuery.Deferred();
+		var thisInstance = this;
+		app.request.post({data:params}).then(function(err,data){
+			app.helper.hideProgress();
+			if(err == null) {
+				var modalContainer = app.helper.showModal(data, {cb: function(){
+					 thisInstance.registerEvents();
+				}});
+				return aDeferred.resolve(modalContainer);
+			}
+		});
+		return aDeferred.promise();
+	},
+
+	/**
 	 * function to call the registerevents of send Email step1
 	 */
 	registerEmailFieldSelectionEvent : function(){
 		var thisInstance = this;
 		var selectEmailForm = jQuery("#SendEmailFormStep1");
 		selectEmailForm.on('submit',function(e){
-            e.preventDefault();
+			e.preventDefault();
 			var form = jQuery(e.currentTarget);
-            
-            var checkedEmails = form.find('.emailField:checked').length;
-            if (checkedEmails < 1) {
-                app.helper.showErrorNotification({message: app.vtranslate("JS_PLEASE_SELECT_ATLEAST_ONE_OPTION")});
-                return false;
-            }
-            
-            //added check to handle save recipient email preferences
-            var saveRecipientPref = form.find('#saveRecipientPrefs').is(':checked');
-            if (saveRecipientPref) {
-                var selectedFieldEles = form.find('.emailField').filter(':checked');
-                var selectedFields = new Array();
-                jQuery.each(selectedFieldEles, function (i, ele) {
-                    selectedFields.push(JSON.parse(jQuery(ele).val()));
-                });
-
-                var params = {
-                    module: app.getModuleName(),
-                    action: "RecipientPreferencesSaveAjax",
-                    selectedFields: selectedFields,
-                    source_module: form.find('input[name="source_module"]').val()
-                };
-                app.request.post({"data":params});
-            }
-            
+
+			var checkedEmails = form.find('.emailField:checked').length;
+			if (checkedEmails < 1) {
+				app.helper.showErrorNotification({message: app.vtranslate("JS_PLEASE_SELECT_ATLEAST_ONE_OPTION")});
+				return false;
+			}
+
+			//added check to handle save recipient email preferences
+			var saveRecipientPref = form.find('#saveRecipientPrefs').is(':checked');
+			if (saveRecipientPref) {
+				var selectedFieldEles = form.find('.emailField').filter(':checked');
+				var selectedFields = new Array();
+				jQuery.each(selectedFieldEles, function (i, ele) {
+					selectedFields.push(JSON.parse(jQuery(ele).val()));
+				});
+
+				var params = {
+					module: app.getModuleName(),
+					action: "RecipientPreferencesSaveAjax",
+					selectedFields: selectedFields,
+					source_module: form.find('input[name="source_module"]').val()
+				};
+				app.request.post({"data":params});
+			}
+
 			var params = form.serialize();
-            app.helper.showProgress();
-            app.helper.hideModal().then(function(e){
-                thisInstance.showComposeEmailForm(params);
-            });
+			app.helper.showProgress();
+			app.helper.hideModal().then(function(e){
+				thisInstance.showComposeEmailForm(params);
+			});
 		});
 	},
-    
-     registerPreventFormSubmitEvent : function(){
-        var form = this.getMassEmailForm();
-        form.on('submit',function(e){
-            e.preventDefault();
-        }).on('keypress',function(e){
-            if(e.which == 13){
+
+	 registerPreventFormSubmitEvent : function(){
+		var form = this.getMassEmailForm();
+		form.on('submit',function(e){
+			e.preventDefault();
+		}).on('keypress',function(e){
+			if(e.which == 13){
 				e.preventDefault();
 			}
-        });
-    },
-    
-    /**
-     * Function to register select Email Template click event
-     * @returns {undefined} 
-     */
-    registerSelectEmailTemplateEvent : function(){
-        var thisInstance = this;
-        jQuery("#selectEmailTemplate").on("click",function(e){
+		});
+	},
+
+	/**
+	 * Function to register select Email Template click event
+	 * @returns {undefined} 
+	 */
+	registerSelectEmailTemplateEvent : function(){
+		var thisInstance = this;
+		jQuery("#selectEmailTemplate").on("click",function(e){
 			var url = "index.php?"+jQuery(e.currentTarget).data('url');
-            var postParams  = app.convertUrlToDataParams(url);
-            app.request.post({data:postParams}).then(function(err,data){
-                if(err === null){
-                    jQuery('.popupModal').remove();
-                    var ele = jQuery('<div class="modal popupModal"></div>');
-                    ele.append(data);
-                    jQuery('body').append(ele);
-                    
-                    thisInstance.showpopupModal();
-                    app.event.trigger("post.Popup.Load",{"eventToTrigger":"post.EmailTemplateList.click"})
-                }
-            });
-        });
-    },
-    
-    showpopupModal : function(){
-        var thisInstance = this;
-        vtUtils.applyFieldElementsView(jQuery('.popupModal'));
-        jQuery('.popupModal').modal();
-        jQuery('.popupModal').on('shown.bs.modal', function() {
-            jQuery('.myModal').css('opacity', .5);
-            jQuery('.myModal').unbind();
-        });
-        
-        jQuery('.popupModal').on('hidden.bs.modal', function() {
-            this.remove();
-            jQuery('.myModal').css('opacity', 1);
-            jQuery('.myModal').removeData("modal").modal(app.helper.defaultModalParams());
-            jQuery('.myModal').bind();
-        });
-    },
-    
-    registerSaveDraftOrSendEmailEvent : function(){
-        var thisInstance = this;
-        var form = this.getMassEmailForm();
+			var postParams = app.convertUrlToDataParams(url);
+			app.request.post({data:postParams}).then(function(err,data){
+				if(err === null){
+					jQuery('.popupModal').remove();
+					var ele = jQuery('<div class="modal popupModal"></div>');
+					ele.append(data);
+					jQuery('body').append(ele);
+
+					thisInstance.showpopupModal();
+					app.event.trigger("post.Popup.Load",{"eventToTrigger":"post.EmailTemplateList.click"})
+				}
+			});
+		});
+	},
+
+	showpopupModal : function(){
+		var thisInstance = this;
+		vtUtils.applyFieldElementsView(jQuery('.popupModal'));
+		jQuery('.popupModal').modal();
+		jQuery('.popupModal').on('shown.bs.modal', function() {
+			jQuery('.myModal').css('opacity', .5);
+			jQuery('.myModal').unbind();
+		});
+
+		jQuery('.popupModal').on('hidden.bs.modal', function() {
+			this.remove();
+			jQuery('.myModal').css('opacity', 1);
+			jQuery('.myModal').removeData("modal").modal(app.helper.defaultModalParams());
+			jQuery('.myModal').bind();
+		});
+	},
+
+	registerSaveDraftOrSendEmailEvent : function(){
+		var thisInstance = this;
+		var form = this.getMassEmailForm();
 		form.on('click','#sendEmail, #saveDraft',function(e){
-            var targetName = jQuery(e.currentTarget).attr('name');
-            if(targetName === 'savedraft'){
-                jQuery('#flag').val(thisInstance.saved);
-            } else {
-                jQuery('#flag').val(thisInstance.sent);
-            }
-            var params = {
-                submitHandler: function(form) {
-                    form = jQuery(form);
-                    app.helper.hideModal();
-                    app.helper.showProgress();
-                    if (CKEDITOR.instances['description']) {
-                        form.find('#description').val(CKEDITOR.instances['description'].getData());
-                    }
-
-                    var data = new FormData(form[0]);
-                    var postParams = {
-                        data:data,
-                        // jQuery will set contentType = multipart/form-data based on data we are sending
-                        contentType:false,
-                        // we don’t want jQuery trying to transform file data into a huge query string, we want raw data to be sent to server
-                        processData:false 
-                    };
-                    app.request.post(postParams).then(function(err,data){
-                        app.helper.hideProgress();
-                        var ele = jQuery(data);
-                        var success = ele.find('.mailSentSuccessfully');
-                        if(success.length <= 0){
-                            app.helper.showModal(data);
-                        } else {
-                            app.event.trigger('post.mail.sent',data);  
-                        }
-                    });
-                }  
-            };
-            form.vtValidate(params);
+			var targetName = jQuery(e.currentTarget).attr('name');
+			if(targetName === 'savedraft'){
+				jQuery('#flag').val(thisInstance.saved);
+			} else {
+				jQuery('#flag').val(thisInstance.sent);
+			}
+			var params = {
+				submitHandler: function(form) {
+					form = jQuery(form);
+					app.helper.hideModal();
+					app.helper.showProgress();
+					if (CKEDITOR.instances['description']) {
+						form.find('#description').val(CKEDITOR.instances['description'].getData());
+					}
+
+					var data = new FormData(form[0]);
+					var postParams = {
+						data:data,
+						// jQuery will set contentType = multipart/form-data based on data we are sending
+						contentType:false,
+						// we don’t want jQuery trying to transform file data into a huge query string, we want raw data to be sent to server
+						processData:false 
+					};
+					app.request.post(postParams).then(function(err,data){
+						app.helper.hideProgress();
+						var ele = jQuery(data);
+						var success = ele.find('.mailSentSuccessfully');
+						if(success.length <= 0){
+							app.helper.showModal(data);
+						} else {
+							app.event.trigger('post.mail.sent',data);
+						}
+					});
+				}
+			};
+			form.vtValidate(params);
 		});
 	},
 
@@ -208,7 +208,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 	 * Function to register the events for bcc and cc links
 	 */
 	registerCcAndBccEvents : function(){
-        var thisInstance = this;
+		var thisInstance = this;
 		jQuery('#ccLink').on('click',function(e){
 			jQuery('.ccContainer').removeClass("hide");
 			jQuery(e.currentTarget).hide();
@@ -218,8 +218,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			jQuery(e.currentTarget).hide();
 		});
 	},
-    
-    /**
+
+	/**
 	 * Function which will handle the reference auto complete event registrations
 	 * @params - container <jQuery> - element in which auto complete fields needs to be searched
 	 */
@@ -229,23 +229,23 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 		container.find('#emailField').select2({
 			minimumInputLength: 3,
 			closeOnSelect : false,
-            
+
 			tags : [],
 			tokenSeparators: [","],
 
 			ajax : {
-                'url' : 'index.php?module=Emails&action=BasicAjax',
-                'dataType' : 'json',
-                'data' : function(term,page){
-                     var data = {};
-                     data['searchValue'] = term;
-                     return data;
-                },
-                'results' : function(data){
+				'url' : 'index.php?module=Emails&action=BasicAjax',
+				'dataType' : 'json',
+				'data' : function(term,page){
+					 var data = {};
+					 data['searchValue'] = term;
+					 return data;
+				},
+				'results' : function(data){
 					var finalResult = [];
 					var results = data.result;
 					var resultData = new Array();
-                    for(var moduleName in results) {
+					for(var moduleName in results) {
 						var moduleResult = [];
 						moduleResult.text = moduleName;
 
@@ -262,21 +262,21 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 						}
 						moduleResult.children = children;
 						resultData.push(moduleResult);
-                    }
+					}
 					finalResult.results = resultData;
 					lastResults = resultData;
-                    return finalResult;
-                },
+					return finalResult;
+				},
 				transport : function(params) {
 					return jQuery.ajax(params);
 				}
-            },
+			},
 			createSearchChoice : function(term) {
 				//checking for results if there is any if not creating as value
 				if(lastResults.length == 0) {
 					return { id: term, text: term };
 				}
-        	},
+			},
 			escapeMarkup: function(m) {
 				// Do not escape HTML in the select options text
 				return m;
@@ -396,10 +396,10 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 		}
 
 	},
-    
-    removeFromEmailAddressData : function(mailInfo) {
-        var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]');
-        var previousValue = JSON.parse(mailInfoElement.val());
+
+	removeFromEmailAddressData : function(mailInfo) {
+		var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]');
+		var previousValue = JSON.parse(mailInfoElement.val());
 		var elementSize = previousValue[mailInfo.id].length;
 		var emailAddress = mailInfo.emailid;
 		var selectedId = mailInfo.id;
@@ -419,16 +419,16 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			//update toemailnameslist hidden element value
 		}
 		mailInfoElement.val(JSON.stringify(previousValue));
-    },
-    
-    removeFromSelectedIds : function(selectedId) {
-        var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]');
-        var previousValue = JSON.parse(selectedIdElement.val());
+	},
+
+	removeFromSelectedIds : function(selectedId) {
+		var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]');
+		var previousValue = JSON.parse(selectedIdElement.val());
 		var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]');
-        var mailAddress = JSON.parse(mailInfoElement.val());
-		var elements  = mailAddress[selectedId];
+		var mailAddress = JSON.parse(mailInfoElement.val());
+		var elements = mailAddress[selectedId];
 		var noOfEmailAddress = elements.length; 
-		
+
 		//Don't remove id from selected_ids if element is having more than two email id's
 		if(noOfEmailAddress < 2){
 			var updatedValue = [];
@@ -444,11 +444,11 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			}
 			selectedIdElement.val(JSON.stringify(updatedValue));
 		}
-    },
-    
-    removeFromEmails : function(mailInfo){
-        var toEmails = this.getMassEmailForm().find('[name="to"]');
-        var previousValue = JSON.parse(toEmails.val());
+	},
+
+	removeFromEmails : function(mailInfo){
+		var toEmails = this.getMassEmailForm().find('[name="to"]');
+		var previousValue = JSON.parse(toEmails.val());
 
 		var updatedValue = [];
 		for (var i in previousValue) {
@@ -461,75 +461,75 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 				updatedValue.push(email);
 			}
 		}
-        toEmails.val(JSON.stringify(updatedValue));
-    },
-    
-    addToEmails : function(mailInfo){
-        var toEmails = this.getMassEmailForm().find('[name="to"]');
-        var value = JSON.parse(toEmails.val());
+		toEmails.val(JSON.stringify(updatedValue));
+	},
+
+	addToEmails : function(mailInfo){
+		var toEmails = this.getMassEmailForm().find('[name="to"]');
+		var value = JSON.parse(toEmails.val());
 		if(value == ""){
 			value = new Array();
 		}
-        value.push(mailInfo.emailid);
-        toEmails.val(JSON.stringify(value));
-    },
-    
-    addToEmailAddressData : function(mailInfo) {    
-        var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]');
-        var existingToMailInfo = JSON.parse(mailInfoElement.val());
-         if(typeof existingToMailInfo.length != 'undefined') {
-            existingToMailInfo = {};
-        } 
-        //If same record having two different email id's then it should be appended to
-        //existing email id
-         if(existingToMailInfo.hasOwnProperty(mailInfo.id) === true){
-            var existingValues = existingToMailInfo[mailInfo.id];
-            var newValue = new Array(mailInfo.emailid);
-            existingToMailInfo[mailInfo.id] = jQuery.merge(existingValues,newValue);
-        } else {
-            existingToMailInfo[mailInfo.id] = new Array(mailInfo.emailid);
-        }
-        mailInfoElement.val(JSON.stringify(existingToMailInfo));
-    },
-
-    appendToSelectedIds : function(selectedId) {
-        var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]');
-        var previousValue = '';
-        if(JSON.parse(selectedIdElement.val()) != '') {
-            previousValue = JSON.parse(selectedIdElement.val());
-            //If value doesn't exist then insert into an array
-            if(jQuery.inArray(selectedId,previousValue) === -1){
-                previousValue.push(selectedId);
-            }
-        } else {
+		value.push(mailInfo.emailid);
+		toEmails.val(JSON.stringify(value));
+	},
+
+	addToEmailAddressData : function(mailInfo) {
+		var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]');
+		var existingToMailInfo = JSON.parse(mailInfoElement.val());
+		 if(typeof existingToMailInfo.length != 'undefined') {
+			existingToMailInfo = {};
+		} 
+		//If same record having two different email id's then it should be appended to
+		//existing email id
+		 if(existingToMailInfo.hasOwnProperty(mailInfo.id) === true){
+			var existingValues = existingToMailInfo[mailInfo.id];
+			var newValue = new Array(mailInfo.emailid);
+			existingToMailInfo[mailInfo.id] = jQuery.merge(existingValues,newValue);
+		} else {
+			existingToMailInfo[mailInfo.id] = new Array(mailInfo.emailid);
+		}
+		mailInfoElement.val(JSON.stringify(existingToMailInfo));
+	},
+
+	appendToSelectedIds : function(selectedId) {
+		var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]');
+		var previousValue = '';
+		if(JSON.parse(selectedIdElement.val()) != '') {
+			previousValue = JSON.parse(selectedIdElement.val());
+			//If value doesn't exist then insert into an array
+			if(jQuery.inArray(selectedId,previousValue) === -1){
+				previousValue.push(selectedId);
+			}
+		} else {
 			previousValue = new Array(selectedId);
-        }
+		}
 		selectedIdElement.val(JSON.stringify(previousValue));
 
-    },
-    
-    checkHiddenStatusofCcandBcc : function(){
+	},
+
+	checkHiddenStatusofCcandBcc : function(){
 		var ccLink = jQuery('#ccLink');
 		var bccLink = jQuery('#bccLink');
 		if(ccLink.is(':hidden') && bccLink.is(':hidden')){
 			ccLink.closest('div.row').addClass('hide');
 		}
 	},
-    
-    loadCkEditor : function(textAreaElement){
-        var ckEditorInstance = this.getckEditorInstance();
-        ckEditorInstance.loadCkEditor(textAreaElement);
-    },
-    
-    setAttachmentsFileSizeByElement : function(element){
-        this.attachmentsFileSize += element.get(0).files[0].size;
-	},
-    
-    setAttachmentsFileSizeBySize : function(fileSize){
+
+	loadCkEditor : function(textAreaElement){
+		var ckEditorInstance = this.getckEditorInstance();
+		ckEditorInstance.loadCkEditor(textAreaElement);
+	},
+
+	setAttachmentsFileSizeByElement : function(element){
+		this.attachmentsFileSize += element.get(0).files[0].size;
+	},
+
+	setAttachmentsFileSizeBySize : function(fileSize){
 		this.attachmentsFileSize += parseFloat(fileSize);
 	},
-    
-    getAttachmentsFileSize : function(){
+
+	getAttachmentsFileSize : function(){
 		return this.attachmentsFileSize;
 	},
 	setDocumentsFileSize : function(documentSize){
@@ -542,24 +542,24 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 	getTotalAttachmentsSize : function(){
 		return parseFloat(this.getAttachmentsFileSize())+parseFloat(this.getDocumentsFileSize());
 	},
-    
-    getMaxUploadSize : function(){
+
+	getMaxUploadSize : function(){
 		return jQuery('#maxUploadSize').val();
 	},
-    
-    removeAttachmentFileSizeByElement : function(element) {
-        this.attachmentsFileSize -= element.get(0).files[0].size;
+
+	removeAttachmentFileSizeByElement : function(element) {
+		this.attachmentsFileSize -= element.get(0).files[0].size;
 	},
-    
-    removeDocumentsFileSize : function(documentSize){
+
+	removeDocumentsFileSize : function(documentSize){
 		this.documentsFileSize -= parseFloat(documentSize);
 	},
-	
+
 	removeAttachmentFileSizeBySize : function(fileSize) {
 		this.attachmentsFileSize -= parseFloat(fileSize);
 	},
-    
-    /**
+
+	/**
 	 * Function to calculate upload file size
 	 */
 	calculateUploadFileSize : function(){
@@ -578,8 +578,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			}
 		})
 	},
-     
-     setReferenceFieldValue : function(container,object){
+
+	 setReferenceFieldValue : function(container,object){
 		var thisInstance = this;
 		var preloadData = thisInstance.getPreloadData();
 
@@ -602,8 +602,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 		}
 		toEmailField.val(toEmailFieldNewValue);
 	},
-    
-    fileAfterSelectHandler : function(element, value, master_element){
+
+	fileAfterSelectHandler : function(element, value, master_element){
 		var thisInstance = this;
 		var mode = jQuery('[name="emailMode"]').val();
 		var existingAttachment = JSON.parse(jQuery('[name="attachments"]').val());
@@ -617,7 +617,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			master_element.list.find('.MultiFile-label:last').find('.MultiFile-remove').trigger('click');
 		}else if((mode != "") && (existingAttachment != "")){
 			var pattern = /\\/;
-            var fileuploaded = value;
+			var fileuploaded = value;
 			jQuery.each(existingAttachment,function(key,value){
 				if((value['attachment'] == fileuploaded) && !(value.hasOwnProperty( "docid"))){
 					var errorMsg = app.vtranslate("JS_THIS_FILE_HAS_ALREADY_BEEN_SELECTED")+fileuploaded;
@@ -630,9 +630,9 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 		}
 		return true;
 	},
-     
-     registerEventsForToField: function() {
-         var thisInstance = this;
+
+	 registerEventsForToField: function() {
+		 var thisInstance = this;
 		this.getMassEmailForm().on('click','.selectEmail',function(e){
 			var moduleSelected = jQuery('.emailModulesList').select2('val');
 			var parentElem = jQuery(e.target).closest('.toEmailField');
@@ -645,7 +645,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			var popupInstance =Vtiger_Popup_Js.getInstance();
 			popupInstance.showPopup(params, function(data){
 					var responseData = JSON.parse(data);
-                         
+
 					for(var id in responseData){
 						var data = {
 							'name' : responseData[id].name,
@@ -653,13 +653,13 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 							'emailid' : responseData[id].email
 						}
 						thisInstance.setReferenceFieldValue(parentElem, data);
-                        thisInstance.addToEmailAddressData(data);
-                        thisInstance.appendToSelectedIds(id);
-                        thisInstance.addToEmails(data);
+						thisInstance.addToEmailAddressData(data);
+						thisInstance.appendToSelectedIds(id);
+						thisInstance.addToEmails(data);
 					}
 				},'relatedEmailModules');
 		});
-		
+
 		this.getMassEmailForm().on('click','[name="clearToEmailField"]',function(e){
 			var element = jQuery(e.currentTarget);
 			element.closest('div.toEmailField').find('.sourceField').val('');
@@ -671,32 +671,32 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			thisInstance.setPreloadData(preloadData);
 			thisInstance.getMassEmailForm().find('#emailField').select2('data', preloadData);
 		});
-		
-     },
-    
-    registerBrowseCrmEvent : function(){
+
+	 },
+
+	registerBrowseCrmEvent : function(){
 		var thisInstance = this;
 		jQuery('#browseCrm').on('click',function(e){
-            var url = jQuery(e.currentTarget).data('url');
-            var postParams = app.convertUrlToDataParams("index.php?"+url);
-            
-            app.request.post({"data":postParams}).then(function(err,data){
-                jQuery('.popupModal').remove();
-                var ele = jQuery('<div class="modal popupModal"></div>');
-                ele.append(data);
-                jQuery('body').append(ele);
-                thisInstance.showpopupModal();
-                app.event.trigger("post.Popup.Load",{"eventToTrigger":"post.DocumentsList.click"});
-            });
+			var url = jQuery(e.currentTarget).data('url');
+			var postParams = app.convertUrlToDataParams("index.php?"+url);
+
+			app.request.post({"data":postParams}).then(function(err,data){
+				jQuery('.popupModal').remove();
+				var ele = jQuery('<div class="modal popupModal"></div>');
+				ele.append(data);
+				jQuery('body').append(ele);
+				thisInstance.showpopupModal();
+				app.event.trigger("post.Popup.Load",{"eventToTrigger":"post.DocumentsList.click"});
+			});
 		});
 	},
-    
-    
-    getDocumentAttachmentElement : function(selectedFileName,id,selectedFileSize){
+
+
+	getDocumentAttachmentElement : function(selectedFileName,id,selectedFileSize){
 		return '<div class="MultiFile-label"><a href="#" class="removeAttachment cursorPointer" data-id='+id+' data-file-size='+selectedFileSize+'>x </a><span>'+selectedFileName+'</span></div>';
 	},
-    
-    /**
+
+	/**
 	 * Function to check whether selected document 
 	 * is already an existing attachment
 	 * @param expects document id to check
@@ -741,8 +741,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			return false;
 		}
 	},
-    
-    writeDocumentIds :function(selectedDocumentId){
+
+	writeDocumentIds :function(selectedDocumentId){
 		var thisInstance = this;
 		var newAttachment;
 		var selectedDocumentIds = jQuery('#documentIds').val();
@@ -769,14 +769,14 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			return false;
 		}
 	},
-    
-    removeDocumentIds : function(removedDocumentId){
+
+	removeDocumentIds : function(removedDocumentId){
 		var documentIdsContainer = jQuery('#documentIds');
 		var documentIdsArray = JSON.parse(documentIdsContainer.val());
 		documentIdsArray.splice( jQuery.inArray('"'+removedDocumentId+'"', documentIdsArray), 1 );
 		documentIdsContainer.val(JSON.stringify(documentIdsArray));
 	},
-	
+
 	registerRemoveAttachmentEvent : function(){
 		var thisInstance = this;
 		this.getMassEmailForm().on('click','.removeAttachment',function(e){
@@ -791,7 +791,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			}
 		});
 	},
-	
+
 	registerEventForRemoveCustomAttachments : function() {
 		var thisInstance = this;
 		var composeEmailForm = this.getMassEmailForm();
@@ -818,102 +818,102 @@ jQuery.Class("Emails_MassEdit_Js",{},{
 			imageContainer.remove();
 		});
 	},
-    
-    registerEvents : function(){
-        var thisInstance = this;
-        var container = this.getMassEmailForm();
-        if(container.length > 0){
-            this.registerPreventFormSubmitEvent();
-            this.registerCcAndBccEvents();
-            this.registerAutoCompleteFields(container);
-            jQuery("#multiFile").MultiFile({
-                list: '#attachments',
-                'afterFileSelect' : function(element, value, master_element){
-                    var masterElement = master_element;
-                    var newElement = jQuery(masterElement.current);
-                    newElement.addClass('removeNoFileChosen');
-                    thisInstance.fileAfterSelectHandler(element, value, master_element);
-                },
-                'afterFileRemove' : function(element, value, master_element){
-                    if (jQuery('#attachments').is(':empty')){
-                        jQuery('.MultiFile,.MultiFile-applied').removeClass('removeNoFileChosen');
-                    }
-                    thisInstance.removeAttachmentFileSizeByElement(jQuery(element));
-                }
-            });
-            this.registerRemoveAttachmentEvent();
-            this.registerBrowseCrmEvent();
-            this.calculateUploadFileSize();
-            this.registerSaveDraftOrSendEmailEvent();
-            var isCkeditorApplied = jQuery('#description').data('isCkeditorApplied');
-            if(isCkeditorApplied != true){
-                this.loadCkEditor(jQuery('#description').data('isCkeditorApplied',true));
-            }
-            this.registerSelectEmailTemplateEvent();
-            this.registerEventsForToField();
+
+	registerEvents : function(){
+		var thisInstance = this;
+		var container = this.getMassEmailForm();
+		if(container.length > 0){
+			this.registerPreventFormSubmitEvent();
+			this.registerCcAndBccEvents();
+			this.registerAutoCompleteFields(container);
+			jQuery("#multiFile").MultiFile({
+				list: '#attachments',
+				'afterFileSelect' : function(element, value, master_element){
+					var masterElement = master_element;
+					var newElement = jQuery(masterElement.current);
+					newElement.addClass('removeNoFileChosen');
+					thisInstance.fileAfterSelectHandler(element, value, master_element);
+				},
+				'afterFileRemove' : function(element, value, master_element){
+					if (jQuery('#attachments').is(':empty')){
+						jQuery('.MultiFile,.MultiFile-applied').removeClass('removeNoFileChosen');
+					}
+					thisInstance.removeAttachmentFileSizeByElement(jQuery(element));
+				}
+			});
+			this.registerRemoveAttachmentEvent();
+			this.registerBrowseCrmEvent();
+			this.calculateUploadFileSize();
+			this.registerSaveDraftOrSendEmailEvent();
+			var isCkeditorApplied = jQuery('#description').data('isCkeditorApplied');
+			if(isCkeditorApplied != true){
+				this.loadCkEditor(jQuery('#description').data('isCkeditorApplied',true));
+			}
+			this.registerSelectEmailTemplateEvent();
+			this.registerEventsForToField();
 			this.registerEventForRemoveCustomAttachments();
-            
-            app.event.on("post.DocumentsList.click",function(event, data){
-                var responseData = JSON.parse(data);
-                jQuery('.popupModal').modal('hide');
-                for(var id in responseData){
-                    selectedDocumentId = id;
-                    var selectedFileName = responseData[id].info['filename'];
-                    var selectedFileSize =  responseData[id].info['filesize'];
-                    var response = thisInstance.writeDocumentIds(selectedDocumentId)
-                    if(response){
-                        var attachmentElement = thisInstance.getDocumentAttachmentElement(selectedFileName,id,selectedFileSize);
-                        //TODO handle the validation if the size exceeds 5mb before appending.
-                        jQuery(attachmentElement).appendTo(jQuery('#attachments'));
-                        jQuery('.MultiFile-applied,.MultiFile').addClass('removeNoFileChosen');
-                        thisInstance.setDocumentsFileSize(selectedFileSize);
-                    }
-                }
-            });
-            
-            jQuery('#emailTemplateWarning .alert-warning .close').click(function(e){
-                e.preventDefault();
-                e.stopPropagation();
-                jQuery('#emailTemplateWarning').addClass('hide');
-            });
-
-            app.event.on("post.EmailTemplateList.click",function(event, data){
-                var responseData = JSON.parse(data);
-                jQuery('.popupModal').modal('hide');
-                
-                var ckEditorInstance = thisInstance.getckEditorInstance();
-                
-                for(var id in responseData){
-                    var data = responseData[id];
-                    ckEditorInstance.loadContentsInCkeditor(data['info']);
-                    //fill subject
-                    jQuery('#subject').val(data['name']);
-                    var selectedTemplateBody = responseData[id].info;
-                }
-                var sourceModule = jQuery('[name=source_module]').val();
-                var tokenDataPair = selectedTemplateBody.split('$');
-                var showWarning = false;
-                for (var i=0; i<tokenDataPair.length; i++) {
-                    var module = tokenDataPair[i].split('-');
-                    var pattern = /^[A-z]+$/;
-                    if(pattern.test(module[0])) {
-                        if(!(module[0] == sourceModule.toLowerCase() || module[0] == 'users' || module[0] == 'custom')) {
-                            showWarning = true;
-                        }
-                    }
-                }
-                if(showWarning) {
-                    jQuery('#emailTemplateWarning').removeClass('hide');
-                } else {
-                    jQuery('#emailTemplateWarning').addClass('hide');
-                }
-            });
+
+			app.event.on("post.DocumentsList.click",function(event, data){
+				var responseData = JSON.parse(data);
+				jQuery('.popupModal').modal('hide');
+				for(var id in responseData){
+					selectedDocumentId = id;
+					var selectedFileName = responseData[id].info['filename'];
+					var selectedFileSize = responseData[id].info['filesize'];
+					var response = thisInstance.writeDocumentIds(selectedDocumentId)
+					if(response){
+						var attachmentElement = thisInstance.getDocumentAttachmentElement(selectedFileName,id,selectedFileSize);
+						//TODO handle the validation if the size exceeds 5mb before appending.
+						jQuery(attachmentElement).appendTo(jQuery('#attachments'));
+						jQuery('.MultiFile-applied,.MultiFile').addClass('removeNoFileChosen');
+						thisInstance.setDocumentsFileSize(selectedFileSize);
+					}
+				}
+			});
+
+			jQuery('#emailTemplateWarning .alert-warning .close').click(function(e){
+				e.preventDefault();
+				e.stopPropagation();
+				jQuery('#emailTemplateWarning').addClass('hide');
+			});
+
+			app.event.on("post.EmailTemplateList.click",function(event, data){
+				var responseData = JSON.parse(data);
+				jQuery('.popupModal').modal('hide');
+
+				var ckEditorInstance = thisInstance.getckEditorInstance();
+
+				for(var id in responseData){
+					var data = responseData[id];
+					ckEditorInstance.loadContentsInCkeditor(data['info']);
+					//fill subject
+					jQuery('#subject').val(data['name']);
+					var selectedTemplateBody = responseData[id].info;
+				}
+				var sourceModule = jQuery('[name=source_module]').val();
+				var tokenDataPair = selectedTemplateBody.split('$');
+				var showWarning = false;
+				for (var i=0; i<tokenDataPair.length; i++) {
+					var module = tokenDataPair[i].split('-');
+					var pattern = /^[A-z]+$/;
+					if(pattern.test(module[0])) {
+						if(!(module[0] == sourceModule.toLowerCase() || module[0] == 'users' || module[0] == 'custom')) {
+							showWarning = true;
+						}
+					}
+				}
+				if(showWarning) {
+					jQuery('#emailTemplateWarning').removeClass('hide');
+				} else {
+					jQuery('#emailTemplateWarning').addClass('hide');
+				}
+			});
 			var params = {
 				setHeight:(jQuery(window).height() - container.find('.modal-header').height() - container.find('.modal-footer').height() - 100)+'px'
 			};
 			app.helper.showVerticalScroll(container.find('.modal-body'), params);
-        }
-    }
+		}
+	}
 });
 
 
diff --git a/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl b/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl
index a830c8d744f1bab67a92e977742fab807038c1c3..7c52a0cd896031978f1e4325476d28d153fab750 100644
--- a/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl
+++ b/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl
@@ -42,7 +42,7 @@
 										<div class=" col-lg-6 col-md-6 col-sm-12">
 											<select class="select2 inputElement col-lg-12 col-md-12 col-lg-12" name="serverType">
 												<option value="">{vtranslate('LBL_SELECT_OPTION','Vtiger')}</option>
-												<option value="{"ssl://smtp.gmail.com:465"}" {if {$MODEL->get('server')} eq "ssl://smtp.gmail.com:465;"} selected {/if}>{vtranslate('LBL_GMAIL', $QUALIFIED_MODULE)} </option>
+												<option value="{"ssl://smtp.gmail.com:465"}" {if {$MODEL->get('server')} eq "ssl://smtp.gmail.com:465"} selected {/if}>{vtranslate('LBL_GMAIL', $QUALIFIED_MODULE)} </option>
 												<option value="{"smtp.live.com"}" {if {$MODEL->get('server')} eq "smtp.live.com"} selected {/if}>{vtranslate('LBL_HOTMAIL', $QUALIFIED_MODULE)}</option>
 												<option value="{"smtp-mail.outlook.com"}" {if {$MODEL->get('server')} eq "smtp.live.com"} selected {/if}>{vtranslate('LBL_OFFICE365', $QUALIFIED_MODULE)}</option>
 												<option value="{"smtp.mail.yahoo.com"}" {if {$MODEL->get('server')} eq "smtp.mail.yahoo.com"} selected {/if}>{vtranslate('LBL_YAHOO', $QUALIFIED_MODULE)}</option>
diff --git a/layouts/v7/modules/Users/Login.tpl b/layouts/v7/modules/Users/Login.tpl
index 31f74822278fcc38306434cdae32381eeda5eca0..50c5d7278f227127dc603a8c0f866f775332ab81 100644
--- a/layouts/v7/modules/Users/Login.tpl
+++ b/layouts/v7/modules/Users/Login.tpl
@@ -80,22 +80,20 @@
 				display: block;
 				color: red;
 			}
+			.app-footer p {
+				margin-top: 0px;
+			}
+			#page {
+				padding-top: 55px;
+			}
 		</style>
 	</head>
 
 	<body>
 		<div class="header">
-			<div class="row">
-				<div class="login-logo">
-					<img  src='layouts/v7/resources/Images/vtiger.jpg'/>
-				</div>
-			</div>
-			<div class="row">
-				<h1>One account. All of Vtiger.</h1>
-			</div>
-			<div class="row">
-				<h4>Sign in to continue to Vtiger</h4>
-			</div>
+			<div class="login-logo"><img src='layouts/v7/resources/Images/vtiger.jpg'/></div>
+			<div><h1>One account. All of Vtiger.</h1></div>
+			<div><h4>Sign in to continue to Vtiger</h4></div>
 		</div>
 		<div class="body">
 			<div class="container login-form" id="login-form-div">
@@ -139,8 +137,10 @@
 				</form>
 			</div>
 		</div>
-	<div class="footer"></div>
-</body>
+		<div class="footer">
+			{include file="Footer.tpl"|vtemplate_path:$MODULE}
+		</div> 
+	</body>
 	<script>
 		jQuery(document).ready(function () {
 			jQuery('#login-form-div #username').focus();
diff --git a/layouts/v7/modules/Vtiger/Footer.tpl b/layouts/v7/modules/Vtiger/Footer.tpl
index 864df35a3aefffb08ef0fa9be2b3bf73dfb56468..3191efc377f9fdb65dac68c390ed519623e377be 100644
--- a/layouts/v7/modules/Vtiger/Footer.tpl
+++ b/layouts/v7/modules/Vtiger/Footer.tpl
@@ -8,7 +8,8 @@
 ************************************************************************************}
 
 <footer class="app-footer">
-	<p>Powered by vtiger CRM - 7.0 &nbsp;© 2004 - 2015&nbsp;&nbsp;
+	<p>
+		Powered by vtiger CRM - 7.0&nbsp;&nbsp;© 2004 - 2017&nbsp;&nbsp;
 		<a href="//www.vtiger.com" target="_blank">Vtiger</a>&nbsp;|&nbsp;
 		<a href="https://www.vtiger.com/privacy-policy" target="_blank">Privacy Policy</a>
 	</p>
diff --git a/layouts/v7/modules/Vtiger/resources/Detail.js b/layouts/v7/modules/Vtiger/resources/Detail.js
index f64cdf57c773603b42db413be45103dc4b4e9687..66be15a02ce3f28fd99cbcc6c97d5f0bca76ad00 100644
--- a/layouts/v7/modules/Vtiger/resources/Detail.js
+++ b/layouts/v7/modules/Vtiger/resources/Detail.js
@@ -8,61 +8,61 @@
  *************************************************************************************/
 
 Vtiger.Class("Vtiger_Detail_Js",{
-    
-    detailInstance : false,
-    PreAjaxSaveEvent : 'PreAjaxSaveEvent',
-    PostAjaxSaveEvent : 'PostAjaxSaveEvent',
+
+	detailInstance : false,
+	PreAjaxSaveEvent : 'PreAjaxSaveEvent',
+	PostAjaxSaveEvent : 'PostAjaxSaveEvent',
 	getInstance: function(){
-        if( Vtiger_Detail_Js.detailInstance == false ){
-            var module = app.getModuleName();
-            var view = app.view;
-            var moduleClassName = module+"_"+view+"_Js";
-            var fallbackClassName = Vtiger_Detail_Js;
-            if(typeof window[moduleClassName] != 'undefined'){
-                var instance = new window[moduleClassName]();
-            }else{
-                var instance = new fallbackClassName();
-            }
-            Vtiger_Detail_Js.detailInstance = instance;
-        }
-        return Vtiger_Detail_Js.detailInstance;
-	},
-        
-        getInstanceByModuleName : function(moduleName){
-        if(typeof moduleName == "undefined"){
-            moduleName = app.getModuleName();
-        }
-        var parentModule = app.getParentModuleName();
-        if(parentModule == 'Settings'){
-            var moduleClassName = parentModule+"_"+moduleName+"_Detail_Js";
-            if(typeof window[moduleClassName] == 'undefined'){
-                moduleClassName = moduleName+"_Detail_Js";
-            }
-            var fallbackClassName = parentModule+"_Vtiger_Detail_Js";
-            if(typeof window[fallbackClassName] == 'undefined') {
-                fallbackClassName = "Vtiger_Detail_Js";
-            }
-        } else {
-            moduleClassName = moduleName+"_Detail_Js";
-            fallbackClassName = "Vtiger_Detail_Js";
-        }
-        if(typeof window[moduleClassName] != 'undefined'){
-            var instance = new window[moduleClassName]();
-        }else{
-            var instance = new window[fallbackClassName]();
-        }
-        return instance;
-    },
-    
-    triggerSendSms: function(detailActionUrl, module) {
-        var self = this.getInstance();
-        self.sendSMS(detailActionUrl,module);
-    },
-    
-     deleteRelatedActivity : function(e) {
-	     var thisInstance = this;
-          var currentElement = jQuery(e.currentTarget);
-          var id = currentElement.data('id');
+		if( Vtiger_Detail_Js.detailInstance == false ){
+			var module = app.getModuleName();
+			var view = app.view;
+			var moduleClassName = module+"_"+view+"_Js";
+			var fallbackClassName = Vtiger_Detail_Js;
+			if(typeof window[moduleClassName] != 'undefined'){
+				var instance = new window[moduleClassName]();
+			}else{
+				var instance = new fallbackClassName();
+			}
+			Vtiger_Detail_Js.detailInstance = instance;
+		}
+		return Vtiger_Detail_Js.detailInstance;
+	},
+
+		getInstanceByModuleName : function(moduleName){
+		if(typeof moduleName == "undefined"){
+			moduleName = app.getModuleName();
+		}
+		var parentModule = app.getParentModuleName();
+		if(parentModule == 'Settings'){
+			var moduleClassName = parentModule+"_"+moduleName+"_Detail_Js";
+			if(typeof window[moduleClassName] == 'undefined'){
+				moduleClassName = moduleName+"_Detail_Js";
+			}
+			var fallbackClassName = parentModule+"_Vtiger_Detail_Js";
+			if(typeof window[fallbackClassName] == 'undefined') {
+				fallbackClassName = "Vtiger_Detail_Js";
+			}
+		} else {
+			moduleClassName = moduleName+"_Detail_Js";
+			fallbackClassName = "Vtiger_Detail_Js";
+		}
+		if(typeof window[moduleClassName] != 'undefined'){
+			var instance = new window[moduleClassName]();
+		}else{
+			var instance = new window[fallbackClassName]();
+		}
+		return instance;
+	},
+
+	triggerSendSms: function(detailActionUrl, module) {
+		var self = this.getInstance();
+		self.sendSMS(detailActionUrl,module);
+	},
+
+	 deleteRelatedActivity : function(e) {
+		 var thisInstance = this;
+		  var currentElement = jQuery(e.currentTarget);
+		  var id = currentElement.data('id');
 		var recurringEnabled = currentElement.data('recurringEnabled');
 		var postData = {'related_record_list' : [id]};
 		if(recurringEnabled) {
@@ -80,25 +80,25 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			function(error,err) {
 			});	
 		}
-    },
-	
+	},
+
 	deleteActivityRelation : function(customParams) {
 		var params = {
-			'module'              : app.getModuleName(),
-			'related_module'      : 'Calendar',
-			'action'              : 'RelationAjax',
-			'mode'                : 'deleteRelation',
-			'src_record'          : jQuery('#recordId').val()
+			'module'			: app.getModuleName(),
+			'related_module'	: 'Calendar',
+			'action'			: 'RelationAjax',
+			'mode'				: 'deleteRelation',
+			'src_record'		: jQuery('#recordId').val()
 		};
 		params = jQuery.extend(params, customParams);
-          
+
 		app.request.post({data: params}).then(function(err, data) {
 			if(data) {
 				params = {
-					'record' : jQuery('#recordId').val(),
-					'view'   : 'Detail',
-					'module' : app.getModuleName(),
-					'mode'   : 'getActivities'
+					'record'	: jQuery('#recordId').val(),
+					'view'		: 'Detail',
+					'module'	: app.getModuleName(),
+					'mode'		: 'getActivities'
 				};
 				app.request.get({data: params}).then(function(err, result) {
 					jQuery('#relatedActivities').html(result);
@@ -107,132 +107,132 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			}
 		});
 	},
-    
-    
-    showUpdates : function(element){
-        jQuery(".historyButtons").find("button").removeAttr("disabled").removeClass("btn-success");
-        var currentElement = jQuery(element);
-        currentElement.attr("disabled","disabled").addClass("btn-success");
-        
-        var params = [];
-        var recordId = jQuery('#recordId').val();
-        params.url = "index.php?view=Detail&module="+app.getModuleName()+"&mode=showRecentActivities&record="+recordId;
-
-        app.helper.showProgress();
-        app.request.get(params).then(function(error,response){
-            app.helper.hideProgress();
-            jQuery(".HistoryContainer").find(".data-body").html(response);
-        });
-    },
-    
-    
-    checkSMSStatus: function(url) {
-        app.request.post({url: url}).then(
-                function(err, data) {
-                    var status = data['status'];
-                    if(status == 'Failed'){
-                        var message = data['message'];
-                        app.helper.showErrorNotification({title: status, message: message});
-                    }
-                    else if (status == null) {
-                        app.helper.showErrorNotification({title: 'Error', message: 'Failed to send SMS.'});
-                    }
-                    else {
-                        var message = data['message'];
-                        app.helper.showErrorNotification({title:status, message:message});
-                    }
-                });
-    },
-    
-    /*
+
+
+	showUpdates : function(element){
+		jQuery(".historyButtons").find("button").removeAttr("disabled").removeClass("btn-success");
+		var currentElement = jQuery(element);
+		currentElement.attr("disabled","disabled").addClass("btn-success");
+
+		var params = [];
+		var recordId = jQuery('#recordId').val();
+		params.url = "index.php?view=Detail&module="+app.getModuleName()+"&mode=showRecentActivities&record="+recordId;
+
+		app.helper.showProgress();
+		app.request.get(params).then(function(error,response){
+			app.helper.hideProgress();
+			jQuery(".HistoryContainer").find(".data-body").html(response);
+		});
+	},
+
+
+	checkSMSStatus: function(url) {
+		app.request.post({url: url}).then(
+				function(err, data) {
+					var status = data['status'];
+					if(status == 'Failed'){
+						var message = data['message'];
+						app.helper.showErrorNotification({title: status, message: message});
+					}
+					else if (status == null) {
+						app.helper.showErrorNotification({title: 'Error', message: 'Failed to send SMS.'});
+					}
+					else {
+						var message = data['message'];
+						app.helper.showErrorNotification({title:status, message:message});
+					}
+				});
+	},
+
+	/*
 	 * function to trigger delete record action
 	 * @params: delete record url.
 	 */
-    deleteRecord : function(deleteRecordActionUrl) {
-        var detailInstance = window.app.controller();
-        detailInstance.remove(deleteRecordActionUrl);
-	},
-	
-    
-    /**
-     * Function to trigger Transfer Ownership
-     * @param {type} massActionUrl
-     * @returns {undefined}
-     */
-    triggerTransferOwnership : function(massActionUrl){
+	deleteRecord : function(deleteRecordActionUrl) {
+		var detailInstance = window.app.controller();
+		detailInstance.remove(deleteRecordActionUrl);
+	},
+
+
+	/**
+	 * Function to trigger Transfer Ownership
+	 * @param {type} massActionUrl
+	 * @returns {undefined}
+	 */
+	triggerTransferOwnership : function(massActionUrl){
 		var thisInstance = this;
-        var params = app.convertUrlToDataParams(massActionUrl);
-        app.helper.showProgress();
+		var params = app.convertUrlToDataParams(massActionUrl);
+		app.helper.showProgress();
 		app.request.post({data:params}).then(
 			function(error, data) {
-                app.helper.hideProgress();
-                app.helper.showModal(data);
-                var form = jQuery('form#changeOwner');
-                var isFormExists = form.length;
-                if(isFormExists){
-                    thisInstance.transferOwnershipSave(form);
-                }
+				app.helper.hideProgress();
+				app.helper.showModal(data);
+				var form = jQuery('form#changeOwner');
+				var isFormExists = form.length;
+				if(isFormExists){
+					thisInstance.transferOwnershipSave(form);
+				}
 			}
 		);
 	},
-    
-    /**
-     * Saving transfer ownership 
-     * @param {type} form
-     * @returns {undefined}
-     */
-    transferOwnershipSave : function (form){
-         form.on("click","button[name='saveButton']",function(e){
-            e.preventDefault();
-            var rules = {};
-            rules["related_modules"] = {'required' : true};
-            rules["transferOwnerId"] = {'required' : true};
-            var params = {
-                rules : rules,
-                submitHandler: function(form) {
-                    // to Prevent submit if already submitted
-                    jQuery(form).find("button[name='saveButton']").attr("disabled","disabled");
-                    if(this.numberOfInvalids() > 0) {
-                        return false;
-                    }
-                    var transferOwner = jQuery('#transferOwnerId').val();
-                    var relatedModules = jQuery('#related_modules').val();
-                    var recordId = jQuery('#recordId').val();
-                    var reqParams = {
-                        'module': app.getModuleName(),
-                        'action' : 'TransferOwnership',
-                        'record':recordId,
-                        'transferOwnerId' : transferOwner,
-                        'related_modules' : relatedModules
-                    };
-                    app.request.post({data:reqParams}).then(
-                        function(error,data) {
-                            if(error === null){
-                                app.helper.hideModal();
-                                app.helper.showAlertBox({'message':app.vtranslate('JS_RECORDS_TRANSFERRED_SUCCESSFULLY')});
-                            }
-                        }
-                    );
-                }
-            };
-            validateAndSubmitForm(form,params);
-         });
-	},
-    
-    /*
+
+	/**
+	 * Saving transfer ownership 
+	 * @param {type} form
+	 * @returns {undefined}
+	 */
+	transferOwnershipSave : function (form){
+		 form.on("click","button[name='saveButton']",function(e){
+			e.preventDefault();
+			var rules = {};
+			rules["related_modules"] = {'required' : true};
+			rules["transferOwnerId"] = {'required' : true};
+			var params = {
+				rules : rules,
+				submitHandler: function(form) {
+					// to Prevent submit if already submitted
+					jQuery(form).find("button[name='saveButton']").attr("disabled","disabled");
+					if(this.numberOfInvalids() > 0) {
+						return false;
+					}
+					var transferOwner = jQuery('#transferOwnerId').val();
+					var relatedModules = jQuery('#related_modules').val();
+					var recordId = jQuery('#recordId').val();
+					var reqParams = {
+						'module': app.getModuleName(),
+						'action' : 'TransferOwnership',
+						'record':recordId,
+						'transferOwnerId' : transferOwner,
+						'related_modules' : relatedModules
+					};
+					app.request.post({data:reqParams}).then(
+						function(error,data) {
+							if(error === null){
+								app.helper.hideModal();
+								app.helper.showAlertBox({'message':app.vtranslate('JS_RECORDS_TRANSFERRED_SUCCESSFULLY')});
+							}
+						}
+					);
+				}
+			};
+			validateAndSubmitForm(form,params);
+		 });
+	},
+
+	/*
 	 * function to trigger send Email
 	 * @params: send email url , module name.
 	 */
 	triggerSendEmail : function(detailActionUrl, module){
-        var currentInstance = window.app.controller();
-        var parentRecord = new Array();
-        var params = {};
-        parentRecord.push(currentInstance.getRecordId());
-        var urlParams = app.convertUrlToDataParams(detailActionUrl);
-        urlParams['selected_ids'] = parentRecord;
-        Vtiger_Index_Js.showComposeEmailPopup(urlParams);
-	},
-    
+		var currentInstance = window.app.controller();
+		var parentRecord = new Array();
+		var params = {};
+		parentRecord.push(currentInstance.getRecordId());
+		var urlParams = app.convertUrlToDataParams(detailActionUrl);
+		urlParams['selected_ids'] = parentRecord;
+		Vtiger_Index_Js.showComposeEmailPopup(urlParams);
+	},
+
 	/**
 	 * Function to show the content of a file in an iframe
 	 * @param {type} e
@@ -242,92 +242,92 @@ Vtiger.Class("Vtiger_Detail_Js",{
 	previewFile: function (e, recordId,attachmentId) {
 		Vtiger_Index_Js.previewFile(e, recordId,attachmentId);
 	}
-	
+
 },{
-    
-    detailViewSummaryTabLabel : 'LBL_RECORD_SUMMARY',
+
+	detailViewSummaryTabLabel : 'LBL_RECORD_SUMMARY',
 	detailViewDetailTabLabel : 'LBL_RECORD_DETAILS',
-    detailViewHistoryTabLabel : 'LBL_HISTORY',
-    detailViewRecentCommentsTabLabel : 'ModComments',
-    detailViewRecentActivitiesTabLabel : 'Activities',
-    detailViewRecentDocumentsLabel : 'Documents',
-    widgetPostLoad : 'Vtiger.Widget.PostLoad',
-    _moduleName : false,
-    targetPicklistChange : false,
-    targetPicklist : false,
-    sourcePicklistname : false,
-    
-    getModuleName : function() {
-        if(this._moduleName != false){
-            return this._moduleName;
-        }
-        return app.module();
-    },
-
-    setModuleName : function(module){
-        this._moduleName = module;
-        return this;
-    },
-    
-        registerOverlayEditEvents: function(module, container) {
-                var editInstance = Vtiger_Edit_Js.getInstanceByModuleName(module);
-                editInstance.setModuleName(module);
-                var editContainer = container.find('.overlayEdit');
-                editInstance.setEditViewContainer(editContainer);
-                editInstance.registerEvents(false);
-        },
-        
-        setContentHolder: function(container){
-            this.detailViewContentHolder = container;
-        },
-        
-        overlayMode: false,
-        setOverlayDetailMode: function(option){
-            this.overlayMode = option;
-        },
-        getOverlayDetailMode: function(){
-            return this.overlayMode;
-        },
-        
-        registerRelatedRecordSave: function(){
-            var thisInstance = this;
-            app.event.on('post.overLayEditView.loaded',function(e, container){
-                jQuery('#EditView').vtValidate({
-                    submitHandler : function(form){
+	detailViewHistoryTabLabel : 'LBL_HISTORY',
+	detailViewRecentCommentsTabLabel : 'ModComments',
+	detailViewRecentActivitiesTabLabel : 'Activities',
+	detailViewRecentDocumentsLabel : 'Documents',
+	widgetPostLoad : 'Vtiger.Widget.PostLoad',
+	_moduleName : false,
+	targetPicklistChange : false,
+	targetPicklist : false,
+	sourcePicklistname : false,
+
+	getModuleName : function() {
+		if(this._moduleName != false){
+			return this._moduleName;
+		}
+		return app.module();
+	},
+
+	setModuleName : function(module){
+		this._moduleName = module;
+		return this;
+	},
+
+		registerOverlayEditEvents: function(module, container) {
+				var editInstance = Vtiger_Edit_Js.getInstanceByModuleName(module);
+				editInstance.setModuleName(module);
+				var editContainer = container.find('.overlayEdit');
+				editInstance.setEditViewContainer(editContainer);
+				editInstance.registerEvents(false);
+		},
+
+		setContentHolder: function(container){
+			this.detailViewContentHolder = container;
+		},
+
+		overlayMode: false,
+		setOverlayDetailMode: function(option){
+			this.overlayMode = option;
+		},
+		getOverlayDetailMode: function(){
+			return this.overlayMode;
+		},
+
+		registerRelatedRecordSave: function(){
+			var thisInstance = this;
+			app.event.on('post.overLayEditView.loaded',function(e, container){
+				jQuery('#EditView').vtValidate({
+					submitHandler : function(form){
 						window.onbeforeunload = null;
-                        var e = jQuery.Event(Vtiger_Edit_Js.recordPresaveEvent);
-                        app.event.trigger(e);
-                        if(e.isDefaultPrevented()) {
-                            return false;
-                        }
-                        var formData = new FormData(form);
-                        var postParams = {
-                            data: formData,
-                            contentType: false,
-                            processData: false
-                        };
-                        app.helper.showProgress();
-                        app.request.post(postParams).then(function(err,data){
-                            app.helper.hideProgress();
-                            app.helper.hidePageContentOverlay();
-                            var relatedModuleName = formData.module;
+						var e = jQuery.Event(Vtiger_Edit_Js.recordPresaveEvent);
+						app.event.trigger(e);
+						if(e.isDefaultPrevented()) {
+							return false;
+						}
+						var formData = new FormData(form);
+						var postParams = {
+							data: formData,
+							contentType: false,
+							processData: false
+						};
+						app.helper.showProgress();
+						app.request.post(postParams).then(function(err,data){
+							app.helper.hideProgress();
+							app.helper.hidePageContentOverlay();
+							var relatedModuleName = formData.module;
 							if(relatedModuleName == 'Events') {
 								relatedModuleName = 'Calendar';
 							}
-                            var relatedController = thisInstance.getRelatedController(relatedModuleName);
-                            relatedController.loadRelatedList();
-                    });
-                    return false;
-                    }
+							var relatedController = thisInstance.getRelatedController(relatedModuleName);
+							relatedController.loadRelatedList();
+					});
+					return false;
+					}
 				});
-			
+
 				jQuery('#EditView').find('.saveButton').on('click', function(e){
 					window.onbeforeunload = null;
 				});
 			});
-        },
-    
-    referenceFieldNames : {
+		},
+
+	referenceFieldNames : {
 		'Accounts' : 'parent_id',
 		'Contacts' : 'contact_id',
 		'Leads' : 'parent_id',
@@ -335,264 +335,264 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		'HelpDesk' : 'parent_id',
 		'Project'  : 'projectid'
 	},
-    
-    init : function() {
-        this.addComponents();
-    },
-    
-    addComponents : function() {
-        var emailPreviewClassName = 'Vtiger_EmailPreview_Js';
+
+	init : function() {
+		this.addComponents();
+	},
+
+	addComponents : function() {
+		var emailPreviewClassName = 'Vtiger_EmailPreview_Js';
 	this.addIndexComponent();
-        this.addComponent(emailPreviewClassName);
-        this.addComponent('Vtiger_Tag_Js');
-    },
-    
-	
-	
+		this.addComponent(emailPreviewClassName);
+		this.addComponent('Vtiger_Tag_Js');
+	},
+
+
+
 	addIndexComponent : function() {
 		this.addModuleSpecificComponent('Index','Vtiger',app.getParentModuleName());
 	},
-    
-    /**
+
+	/**
 	 * Function which will give the detail view form
 	 * @return : jQuery element
 	 */
-    detailViewForm : false,
+	detailViewForm : false,
 	getForm : function() {
 		if(this.detailViewForm == false) {
 			this.detailViewForm = jQuery('#detailView');
 		}
 		return this.detailViewForm;
 	},
-    
-    detailViewContainer : false,
-    getDetailViewContainer : function(){
-        if(this.detailViewContainer === false){
+
+	detailViewContainer : false,
+	getDetailViewContainer : function(){
+		if(this.detailViewContainer === false){
 			this.detailViewContainer = jQuery('.detailViewContainer');
 		}
 		return this.detailViewContainer;
-    },
-    setDetailViewContainer : function(container){
-        this.detailViewContainer = container;
-    },
-    
-    detailViewContentHolder : false,
-    getContentHolder : function() {
+	},
+	setDetailViewContainer : function(container){
+		this.detailViewContainer = container;
+	},
+
+	detailViewContentHolder : false,
+	getContentHolder : function() {
 		if(this.detailViewContentHolder == false) {
 			this.detailViewContentHolder = jQuery('div.details');
 		}
 		return this.detailViewContentHolder;
 	},
-    
-    /**
-     * Function to load related list
-     */
-    loadRelatedListRecords : function(urlParams) {
-        var self = this;
-        var aDeferred = jQuery.Deferred();
-        var defParams = self.getDefaultParams();
-        urlParams = jQuery.extend(defParams, urlParams);
-        app.helper.showProgress();
-        app.request.get({data:urlParams}).then(function(err, res){
-            aDeferred.resolve(res);
-            var container = jQuery('.relatedContainer');
+
+	/**
+	 * Function to load related list
+	 */
+	loadRelatedListRecords : function(urlParams) {
+		var self = this;
+		var aDeferred = jQuery.Deferred();
+		var defParams = self.getDefaultParams();
+		urlParams = jQuery.extend(defParams, urlParams);
+		app.helper.showProgress();
+		app.request.get({data:urlParams}).then(function(err, res){
+			aDeferred.resolve(res);
+			var container = jQuery('.relatedContainer');
 			container.html(res);
-            app.helper.hideProgress();
-            app.event.trigger("post.relatedListLoad.click",container.find(".searchRow"));
-		});
-        return aDeferred.promise();
-    },
-    sendSMS: function(detailActionUrl, module){
-        var self = this;
-        app.helper.checkServerConfig(module).then(function(data) {
-            if (data == true) {
-                var cb = function(container) {
-                    $('#phoneFormatWarningPop').popover();
-                }
-                self.sendSMSAction(detailActionUrl, cb);
-            } else {
-                app.helper.showAlertBox({message:app.vtranslate('JS_SMS_SERVER_CONFIGURATION')})
-            }
-        });
-    },
-    sendSMSAction: function(detailActionUrl, callBackFunction) {
-        var self = this;
-        var selectedIds = new Array();
-        selectedIds.push(self.getRecordId());
-        var postData = {
-            "selected_ids": JSON.stringify(selectedIds)
-        };
-        app.request.post({url:detailActionUrl, data:postData, dataType:"html"}).then(
-                function(err, data) {
-                    if (data) {
-                        app.helper.showModal(data);
-                        if (typeof callBackFunction == 'function') {
-                            callBackFunction(data);
-                        }
-                    }
-                });
-    },
-            
-    /**
-     * Function to fetch default params 
-     */
-    getDefaultParams : function() {
+			app.helper.hideProgress();
+			app.event.trigger("post.relatedListLoad.click",container.find(".searchRow"));
+		});
+		return aDeferred.promise();
+	},
+	sendSMS: function(detailActionUrl, module){
+		var self = this;
+		app.helper.checkServerConfig(module).then(function(data) {
+			if (data == true) {
+				var cb = function(container) {
+					$('#phoneFormatWarningPop').popover();
+				}
+				self.sendSMSAction(detailActionUrl, cb);
+			} else {
+				app.helper.showAlertBox({message:app.vtranslate('JS_SMS_SERVER_CONFIGURATION')})
+			}
+		});
+	},
+	sendSMSAction: function(detailActionUrl, callBackFunction) {
+		var self = this;
+		var selectedIds = new Array();
+		selectedIds.push(self.getRecordId());
+		var postData = {
+			"selected_ids": JSON.stringify(selectedIds)
+		};
+		app.request.post({url:detailActionUrl, data:postData, dataType:"html"}).then(
+				function(err, data) {
+					if (data) {
+						app.helper.showModal(data);
+						if (typeof callBackFunction == 'function') {
+							callBackFunction(data);
+						}
+					}
+				});
+	},
+
+	/**
+	 * Function to fetch default params 
+	 */
+	getDefaultParams : function() {
 		var module = app.module();
 
-        var activeModule = jQuery(".related-tabs li.active");
-        var relatedModule = activeModule.attr("data-module")
-        var label = activeModule.attr("data-label-key");
-        var relationId = activeModule.attr("data-relation-id");
-        var orderBy = jQuery('#orderBy').val();
+		var activeModule = jQuery(".related-tabs li.active");
+		var relatedModule = activeModule.attr("data-module")
+		var label = activeModule.attr("data-label-key");
+		var relationId = activeModule.attr("data-relation-id");
+		var orderBy = jQuery('#orderBy').val();
 		var sortOrder = jQuery("#sortOrder").val();
-        var pageNumber = jQuery('#pageNumber').val();
-        
-        var recordId = jQuery('#recordId').val();
+		var pageNumber = jQuery('#pageNumber').val();
+
+		var recordId = jQuery('#recordId').val();
 		var params = {
 			'module': module,
-            'relatedModule': relatedModule,
+			'relatedModule': relatedModule,
 			'view' : "Detail",
-            'record' : recordId,
-            'page' : pageNumber,
+			'record' : recordId,
+			'page' : pageNumber,
 			'mode' : 'showRelatedList',
 			'relationId' : relationId,
-            'tab_label' : label,
-            'orderby' : orderBy,
+			'tab_label' : label,
+			'orderby' : orderBy,
 			'sortorder' : sortOrder
 		};
-        params.search_params = JSON.stringify(this.getRelatedListSearchParams());
-        params.nolistcache = (jQuery('#noFilterCache').val() == 1) ? 1 : 0;
-        return params;
-	},
-    
-    /**
-     * Function to fetch search params
-     */        
-    getRelatedListSearchParams : function() {
-        var detailViewContainer = this.getDetailViewContainer();
-        var relatedListTable = detailViewContainer.find('.searchRow');
-        var searchParams = [];
-        var currentSearchParams = [];
-        if(jQuery('#currentSearchParams').val()) {
-            currentSearchParams = JSON.parse(jQuery('#currentSearchParams').val());
-        }
-        relatedListTable.find('.listSearchContributor').each(function(index,domElement){
-            var searchInfo = [];
-            var searchContributorElement = jQuery(domElement);
-            var fieldName = searchContributorElement.attr('name');
-            var fieldInfo = related_uimeta.field.get(fieldName);
-            
-            if(fieldName in currentSearchParams) {
-                delete currentSearchParams[fieldName];
-            }
-
-            var searchValue = searchContributorElement.val();
-
-            if(typeof searchValue == "object") {
-                if(searchValue == null) {
-                   searchValue = "";
-                }else{
-                    searchValue = searchValue.join(',');
-                }
-            }
-            searchValue = searchValue.trim();
-            if(searchValue.length <=0 ) {
-                //continue
-                return true;
-            }
-            var searchOperator = 'c';
-            if(fieldInfo.type == "date" || fieldInfo.type == "datetime") {
-                searchOperator = 'bw';
-            }else if (fieldInfo.type == 'percentage' || fieldInfo.type == "double" || fieldInfo.type == "integer"
-                || fieldInfo.type == 'currency' || fieldInfo.type == "number" || fieldInfo.type == "boolean" ||
-                fieldInfo.type == "picklist") {
-                searchOperator = 'e';
-            }
-            var storedOperator = searchContributorElement.parent().parent().find('.operatorValue').val();
-            if(storedOperator) {
-                searchOperator = storedOperator;
-                storedOperator = false;
-            }
-            searchInfo.push(fieldName);
-            searchInfo.push(searchOperator);
-            searchInfo.push(searchValue);
-            searchInfo.push(fieldInfo.type);
-            searchParams.push(searchInfo);
-        });
-        for(var i in currentSearchParams) {
-            var fieldName = currentSearchParams[i]['fieldName'];
-            var searchValue = currentSearchParams[i]['searchValue'];
-            var searchOperator = currentSearchParams[i]['comparator'];
-            if(fieldName== null || fieldName.length <=0 ){
-                continue;
-            }
-            var searchInfo = [];
-            searchInfo.push(fieldName);
-            searchInfo.push(searchOperator);
-            searchInfo.push(searchValue);
-            searchParams.push(searchInfo);
-        }
-        var params = [];
-        params.push(searchParams);
-        return params;        
-    },
-    
-    getTabContainer : function(){
+		params.search_params = JSON.stringify(this.getRelatedListSearchParams());
+		params.nolistcache = (jQuery('#noFilterCache').val() == 1) ? 1 : 0;
+		return params;
+	},
+
+	/**
+	 * Function to fetch search params
+	 */
+	getRelatedListSearchParams : function() {
+		var detailViewContainer = this.getDetailViewContainer();
+		var relatedListTable = detailViewContainer.find('.searchRow');
+		var searchParams = [];
+		var currentSearchParams = [];
+		if(jQuery('#currentSearchParams').val()) {
+			currentSearchParams = JSON.parse(jQuery('#currentSearchParams').val());
+		}
+		relatedListTable.find('.listSearchContributor').each(function(index,domElement){
+			var searchInfo = [];
+			var searchContributorElement = jQuery(domElement);
+			var fieldName = searchContributorElement.attr('name');
+			var fieldInfo = related_uimeta.field.get(fieldName);
+
+			if(fieldName in currentSearchParams) {
+				delete currentSearchParams[fieldName];
+			}
+
+			var searchValue = searchContributorElement.val();
+
+			if(typeof searchValue == "object") {
+				if(searchValue == null) {
+					searchValue = "";
+				}else{
+					searchValue = searchValue.join(',');
+				}
+			}
+			searchValue = searchValue.trim();
+			if(searchValue.length <=0 ) {
+				//continue
+				return true;
+			}
+			var searchOperator = 'c';
+			if(fieldInfo.type == "date" || fieldInfo.type == "datetime") {
+				searchOperator = 'bw';
+			}else if (fieldInfo.type == 'percentage' || fieldInfo.type == "double" || fieldInfo.type == "integer"
+				|| fieldInfo.type == 'currency' || fieldInfo.type == "number" || fieldInfo.type == "boolean" ||
+				fieldInfo.type == "picklist") {
+				searchOperator = 'e';
+			}
+			var storedOperator = searchContributorElement.parent().parent().find('.operatorValue').val();
+			if(storedOperator) {
+				searchOperator = storedOperator;
+				storedOperator = false;
+			}
+			searchInfo.push(fieldName);
+			searchInfo.push(searchOperator);
+			searchInfo.push(searchValue);
+			searchInfo.push(fieldInfo.type);
+			searchParams.push(searchInfo);
+		});
+		for(var i in currentSearchParams) {
+			var fieldName = currentSearchParams[i]['fieldName'];
+			var searchValue = currentSearchParams[i]['searchValue'];
+			var searchOperator = currentSearchParams[i]['comparator'];
+			if(fieldName== null || fieldName.length <=0 ){
+				continue;
+			}
+			var searchInfo = [];
+			searchInfo.push(fieldName);
+			searchInfo.push(searchOperator);
+			searchInfo.push(searchValue);
+			searchParams.push(searchInfo);
+		}
+		var params = [];
+		params.push(searchParams);
+		return params;
+	},
+
+	getTabContainer : function(){
 		return jQuery('div.related-tabs');
 	},
-    
-    getRecordId : function(){
+
+	getRecordId : function(){
 		return app.getRecordId();
 	},
-    
-    getRelatedTabs : function() {
+
+	getRelatedTabs : function() {
 		return this.getTabContainer().find('li');
 	},
-    
-    deSelectAllrelatedTabs : function() {
+
+	deSelectAllrelatedTabs : function() {
 		this.getRelatedTabs().removeClass('active');
 	},
-    
-    markRelatedTabAsSelected : function(tabElement){
+
+	markRelatedTabAsSelected : function(tabElement){
 		tabElement.addClass('active');
 	},
-        
-    /*
-     * Function to register the submit event for Send Sms
-     */
-    registerSendSmsSubmitEvent: function() {
-        var thisInstance = this;
-        jQuery('body').on('submit', '#massSave', function(e) {
-            var form = jQuery(e.currentTarget);
+
+	/*
+	 * Function to register the submit event for Send Sms
+	 */
+	registerSendSmsSubmitEvent: function() {
+		var thisInstance = this;
+		jQuery('body').on('submit', '#massSave', function(e) {
+			var form = jQuery(e.currentTarget);
 			form.vtValidate({onsubmit : false});
 			if(!form.valid()) {
 				return false;
 			}
-            var smsTextLength = form.find('#message').val().length;
-            if (smsTextLength > 160) {
-                app.helper.showErrorNotification({message:app.vtranslate('LBL_SMS_MAX_CHARACTERS_ALLOWED')});
-                return false;
-            }
-            var submitButton = form.find(':submit');
-            submitButton.attr('disabled', 'disabled');
-            thisInstance.SendSmsSave(form);
-            e.preventDefault();
-        });
-    },
-    /*
-     * Function to Save and sending the Sms and hide the modal window of send sms
-     */
-    SendSmsSave: function(form) {
-        app.helper.showProgress();
-        var formData = form.serializeFormData();
-        app.request.post({data: formData}).then(
-                function(err, data) {
-                    app.helper.hideProgress();
-                    app.helper.hideModal();
-                    if(err){
-                        app.helper.showErrorNotification({message:app.vtranslate('JS_PHONEFORMAT_ERROR')});
-                        return;
-                    }
+			var smsTextLength = form.find('#message').val().length;
+			if (smsTextLength > 160) {
+				app.helper.showErrorNotification({message:app.vtranslate('LBL_SMS_MAX_CHARACTERS_ALLOWED')});
+				return false;
+			}
+			var submitButton = form.find(':submit');
+			submitButton.attr('disabled', 'disabled');
+			thisInstance.SendSmsSave(form);
+			e.preventDefault();
+		});
+	},
+	/*
+	 * Function to Save and sending the Sms and hide the modal window of send sms
+	 */
+	SendSmsSave: function(form) {
+		app.helper.showProgress();
+		var formData = form.serializeFormData();
+		app.request.post({data: formData}).then(
+				function(err, data) {
+					app.helper.hideProgress();
+					app.helper.hideModal();
+					if(err){
+						app.helper.showErrorNotification({message:app.vtranslate('JS_PHONEFORMAT_ERROR')});
+						return;
+					}
 					var statusDetails = data.statusdetails;
 					var status = statusDetails.status;
 					if(status == 'Failed') {
@@ -602,144 +602,144 @@ Vtiger.Class("Vtiger_Detail_Js",{
 						var msg = statusDetails.statusmessage;
 						app.helper.showSuccessNotification({'title' : status, 'message' : msg});
 					}
-                }
-        );
-    },   
-    /**
-     * To load Related List Contents
-     * @returns {undefined}
-     */
-    registerEventForRelatedTabClick : function(){
-        var self = this;
-        var detailViewContainer = this.getDetailViewContainer();
-        jQuery('.related-tabs', detailViewContainer).on('click', 'li.tab-item a', function(e, urlAttributes) {
-            e.preventDefault();
-        });
-        jQuery('.related-tabs', detailViewContainer).on('click', 'li.more-tab a', function(e, urlAttributes) {
-            e.preventDefault();
-        });
-        jQuery('.related-tabs', detailViewContainer).on('click', 'li.more-tab', function(e,urlAttributes){
-            if(jQuery('.moreTabElement').length != 0){
-                jQuery('.moreTabElement').remove();
-            }
-            var moreTabElement = jQuery(e.currentTarget).clone();
-            moreTabElement.find('.content').text('');
-            moreTabElement.addClass('moreTabElement');
-            moreTabElement.addClass('active');
-            var moreElementTitle = moreTabElement.find('a').attr('displaylabel')
-            moreTabElement.attr('title',moreElementTitle);
-            moreTabElement.find('.tab-icon').removeClass('textOverflowEllipsis');
-            jQuery('.related-tab-more-element').before(moreTabElement);
-            self.loadSelectedTabContents(moreTabElement, urlAttributes);
-            self.registerQtipevent(moreTabElement);
-        });
-        jQuery('.related-tabs', detailViewContainer).on('click', 'li.tab-item', function(e,urlAttributes){
-            var tabElement = jQuery(e.currentTarget);
-            self.loadSelectedTabContents(tabElement, urlAttributes);
-        });
-    },
-    
-    loadSelectedTabContents: function(tabElement, urlAttributes){
-            var self = this;
-            var detailViewContainer = this.getDetailViewContainer();
-            var url = tabElement.data('url');
-            self.loadContents(url,urlAttributes).then(function(data){
-                self.deSelectAllrelatedTabs();
-                self.markRelatedTabAsSelected(tabElement);
-                var container = jQuery('.relatedContainer');
-                app.event.trigger("post.relatedListLoad.click",container.find(".searchRow"));
-                // Added this to register pagination events in related list
-                var relatedModuleInstance = self.getRelatedController();
-                //Summary tab is clicked
-                if(tabElement.data('linkKey') == self.detailViewSummaryTabLabel) {
-                    self.registerSummaryViewContainerEvents(detailViewContainer);
+				}
+		);
+	},
+	/**
+	 * To load Related List Contents
+	 * @returns {undefined}
+	 */
+	registerEventForRelatedTabClick : function(){
+		var self = this;
+		var detailViewContainer = this.getDetailViewContainer();
+		jQuery('.related-tabs', detailViewContainer).on('click', 'li.tab-item a', function(e, urlAttributes) {
+			e.preventDefault();
+		});
+		jQuery('.related-tabs', detailViewContainer).on('click', 'li.more-tab a', function(e, urlAttributes) {
+			e.preventDefault();
+		});
+		jQuery('.related-tabs', detailViewContainer).on('click', 'li.more-tab', function(e,urlAttributes){
+			if(jQuery('.moreTabElement').length != 0){
+				jQuery('.moreTabElement').remove();
+			}
+			var moreTabElement = jQuery(e.currentTarget).clone();
+			moreTabElement.find('.content').text('');
+			moreTabElement.addClass('moreTabElement');
+			moreTabElement.addClass('active');
+			var moreElementTitle = moreTabElement.find('a').attr('displaylabel')
+			moreTabElement.attr('title',moreElementTitle);
+			moreTabElement.find('.tab-icon').removeClass('textOverflowEllipsis');
+			jQuery('.related-tab-more-element').before(moreTabElement);
+			self.loadSelectedTabContents(moreTabElement, urlAttributes);
+			self.registerQtipevent(moreTabElement);
+		});
+		jQuery('.related-tabs', detailViewContainer).on('click', 'li.tab-item', function(e,urlAttributes){
+			var tabElement = jQuery(e.currentTarget);
+			self.loadSelectedTabContents(tabElement, urlAttributes);
+		});
+	},
+
+	loadSelectedTabContents: function(tabElement, urlAttributes){
+			var self = this;
+			var detailViewContainer = this.getDetailViewContainer();
+			var url = tabElement.data('url');
+			self.loadContents(url,urlAttributes).then(function(data){
+				self.deSelectAllrelatedTabs();
+				self.markRelatedTabAsSelected(tabElement);
+				var container = jQuery('.relatedContainer');
+				app.event.trigger("post.relatedListLoad.click",container.find(".searchRow"));
+				// Added this to register pagination events in related list
+				var relatedModuleInstance = self.getRelatedController();
+				//Summary tab is clicked
+				if(tabElement.data('linkKey') == self.detailViewSummaryTabLabel) {
+					self.registerSummaryViewContainerEvents(detailViewContainer);
 					self.registerEventForPicklistDependencySetup(self.getForm());
-                }
+				}
 
 				//Detail tab is clicked
-                if(tabElement.data('linkKey') == self.detailViewDetailTabLabel) {
-                    self.triggerDetailViewContainerEvents(detailViewContainer);
+				if(tabElement.data('linkKey') == self.detailViewDetailTabLabel) {
+					self.triggerDetailViewContainerEvents(detailViewContainer);
 					self.registerEventForPicklistDependencySetup(self.getForm());
-                }
-
-                // Registering engagement events if clicked tab is History
-                if(tabElement.data('labelKey') == self.detailViewHistoryTabLabel){
-                    var engagementsContainer = jQuery(".engagementsContainer");
-                    if(engagementsContainer.length > 0){
-                        app.event.trigger("post.engagements.load");
-                    }
-                }
-                
+				}
+
+				// Registering engagement events if clicked tab is History
+				if(tabElement.data('labelKey') == self.detailViewHistoryTabLabel){
+					var engagementsContainer = jQuery(".engagementsContainer");
+					if(engagementsContainer.length > 0){
+						app.event.trigger("post.engagements.load");
+					}
+				}
+
 				relatedModuleInstance.initializePaginationEvents();
-                //prevent detail view ajax form submissions
-                jQuery('form#detailView').on('submit', function(e) {
-                    e.preventDefault();
-            	});
-        	});
-    },
+				//prevent detail view ajax form submissions
+				jQuery('form#detailView').on('submit', function(e) {
+					e.preventDefault();
+				});
+			});
+	},
 
 	triggerDetailViewContainerEvents: function(detailViewContainer) {
 	},
 
-    registerRollupCommentsSwitchEvent : function() {
-        var self = this;
-        var commentsRelatedContainer = jQuery('.commentsRelatedContainer');
-        if(jQuery('#rollupcomments').length > 0 && commentsRelatedContainer.length) {
-            app.helper.hideProgress();
-            commentsRelatedContainer.off('switchChange.bootstrapSwitch')
-            .on('switchChange.bootstrapSwitch','#rollupcomments', function(e){
-                app.helper.showProgress();
-                self.toggleRollupComments(e);
-            });
-            if(jQuery('#rollupcomments').attr('rollup-status') == 1) {
-                jQuery('#rollupcomments').bootstrapSwitch('state', true, true);
-
-            }else{
-                jQuery('#rollupcomments').bootstrapSwitch('state', false, true);
-            }
-        }
-    },
-    
-    /**
+	registerRollupCommentsSwitchEvent : function() {
+		var self = this;
+		var commentsRelatedContainer = jQuery('.commentsRelatedContainer');
+		if(jQuery('#rollupcomments').length > 0 && commentsRelatedContainer.length) {
+			app.helper.hideProgress();
+			commentsRelatedContainer.off('switchChange.bootstrapSwitch')
+			.on('switchChange.bootstrapSwitch','#rollupcomments', function(e){
+				app.helper.showProgress();
+				self.toggleRollupComments(e);
+			});
+			if(jQuery('#rollupcomments').attr('rollup-status') == 1) {
+				jQuery('#rollupcomments').bootstrapSwitch('state', true, true);
+
+			}else{
+				jQuery('#rollupcomments').bootstrapSwitch('state', false, true);
+			}
+		}
+	},
+
+	/**
 	 * To handle related record delete confirmation message
 	 */
 	getDeleteMessageKey : function() {
 		return 'LBL_DELETE_CONFIRMATION';
 	},
 
-    /**
-     * Funtion to register Related List Events
-     * @returns {undefined}
-     */
-    registerEventsForRelatedList : function(){
-        var self = this;
-        var detailContentsHolder = this.getContentHolder();
-        this.registerRelatedRecordEdit();
-        
-        this.registerEventForRelatedTabClick();
-        this.registerRelatedListSearch();
-        this.registerRelatedListSort();
-        this.registerRemoveRelatedListSort();
-        this.registerEventForEmailsRelatedRecord();
-        this.registerRelatedListPageNavigationEvents();
-        this.registerEventForAddingRelatedRecord();
-        this.registerEventForSelectingRelatedRecord();
-        self.registerScrollForRollupEvents();
-		
-        app.event.on("post.relatedListLoad.click",function(event, container){
-            vtUtils.applyFieldElementsView(container);
-            vtUtils.enableTooltips();
-            var vtigerInstance = Vtiger_Index_Js.getInstance();
-       		vtigerInstance.registerMultiUpload();
-            //For Rollup Comments
+	/**
+	 * Funtion to register Related List Events
+	 * @returns {undefined}
+	 */
+	registerEventsForRelatedList : function(){
+		var self = this;
+		var detailContentsHolder = this.getContentHolder();
+		this.registerRelatedRecordEdit();
+
+		this.registerEventForRelatedTabClick();
+		this.registerRelatedListSearch();
+		this.registerRelatedListSort();
+		this.registerRemoveRelatedListSort();
+		this.registerEventForEmailsRelatedRecord();
+		this.registerRelatedListPageNavigationEvents();
+		this.registerEventForAddingRelatedRecord();
+		this.registerEventForSelectingRelatedRecord();
+		self.registerScrollForRollupEvents();
+
+		app.event.on("post.relatedListLoad.click",function(event, container){
+			vtUtils.applyFieldElementsView(container);
+			vtUtils.enableTooltips();
+			var vtigerInstance = Vtiger_Index_Js.getInstance();
+			vtigerInstance.registerMultiUpload();
+			//For Rollup Comments
 			self.registerRollupCommentsSwitchEvent();
 			//END
-        });
-		
+		});
+
 		var vtigerInstance = Vtiger_Index_Js.getInstance();
 		vtigerInstance.registerMultiUpload();
 
-        detailContentsHolder.on('click', 'a.relationDelete', function(e){
+		detailContentsHolder.on('click', 'a.relationDelete', function(e){
 			e.stopImmediatePropagation();
 			var element = jQuery(e.currentTarget);
 			var key = self.getDeleteMessageKey();
@@ -779,18 +779,18 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			}
 		}
 		});
-    },
-	
-    registerEventForEmailsRelatedRecord : function(){
+	},
+
+	registerEventForEmailsRelatedRecord : function(){
 		var detailContentsHolder = this.getContentHolder();
 		var parentId = this.getRecordId();
-        
-        var params = {};
-        params['module'] = "Emails";
-        params['view'] = "ComposeEmail";
-        params['parentId'] = parentId;
-        params['relatedLoad'] = true;
-        
+
+		var params = {};
+		params['module'] = "Emails";
+		params['view'] = "ComposeEmail";
+		params['parentId'] = parentId;
+		params['relatedLoad'] = true;
+
 		detailContentsHolder.on('click','[name="emailsRelatedRecord"], [name="emailsDetailView"]',function(e){
 			e.stopPropagation();
 			var element = jQuery(e.currentTarget);
@@ -799,25 +799,25 @@ Vtiger.Class("Vtiger_Detail_Js",{
 				var mode = 'emailEdit';
 			} else {
 				mode = 'emailPreview';
-                params['parentModule'] = app.getModuleName();
+				params['parentModule'] = app.getModuleName();
 			}
 			params['mode'] = mode;
 			params['record'] = recordId;
-            app.helper.showProgress();
-            app.request.post({data:params}).then(function(err,data){
-                app.helper.hideProgress();
-                if(err === null){
+			app.helper.showProgress();
+			app.request.post({data:params}).then(function(err,data){
+				app.helper.hideProgress();
+				if(err === null){
 					var dataObj = jQuery(data);
 					var descriptionContent = dataObj.find('#iframeDescription').val();
-                    app.helper.showModal(data,{cb:function(){
+					app.helper.showModal(data,{cb:function(){
 						if(mode === 'emailEdit'){
 							var editInstance = new Emails_MassEdit_Js();
 							editInstance.registerEvents();
 						}else {
-						   app.event.trigger('post.EmailPreview.load',null);
+							app.event.trigger('post.EmailPreview.load',null);
 						}
 						jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent);
-                        jQuery("#emailPreviewIframe").height(jQuery('.email-body-preview').height());
+						jQuery("#emailPreviewIframe").height(jQuery('.email-body-preview').height());
 						jQuery('#emailPreviewIframe').contents().find('html').find('a').on('click', function(e) {
 							e.preventDefault();
 							var url = jQuery(e.currentTarget).attr('href');
@@ -825,11 +825,11 @@ Vtiger.Class("Vtiger_Detail_Js",{
 						});
 						//jQuery("#emailPreviewIframe").height(jQuery('#emailPreviewIframe').contents().find('html').height());
 					}});
-                }
-            });
+				}
+			});
 		})
-        
-        detailContentsHolder.on('click','[name="emailsEditView"]',function(e){
+
+		detailContentsHolder.on('click','[name="emailsEditView"]',function(e){
 			e.stopPropagation();
 			var module = "Emails";
 			app.helper.checkServerConfig(module).then(function(data){
@@ -839,154 +839,154 @@ Vtiger.Class("Vtiger_Detail_Js",{
 					var recordId = closestROw.data('id');
 					var parentRecord = new Array();
 					parentRecord.push(parentId);
-                    
+
 					params['mode'] = "emailEdit";
 					params['record'] = recordId;
 					params['selected_ids'] = parentRecord;
-                    app.helper.showProgress();
-                    app.request.post({'data':params}).then(function(err,data){
-                        app.helper.hideProgress();
-                        if(err === null){
-                            app.helper.showModal(data);
-                            var editInstance = new Emails_MassEdit_Js();
-                            editInstance.registerEvents();
-                        }
-                    });
+					app.helper.showProgress();
+					app.request.post({'data':params}).then(function(err,data){
+						app.helper.hideProgress();
+						if(err === null){
+							app.helper.showModal(data);
+							var editInstance = new Emails_MassEdit_Js();
+							editInstance.registerEvents();
+						}
+					});
 				} else {
 					app.helper.showErrorMessage(app.vtranslate('JS_EMAIL_SERVER_CONFIGURATION'));
 				}
 			})
 		})
-    },
-   
-   /**
-    * To Delete Record from detail View
-    * @param {type} deleteRecordActionUrl
-    * @returns {undefined}
-    */
-    remove : function(deleteRecordActionUrl){
-        var message = app.vtranslate('LBL_DELETE_CONFIRMATION');
+	},
+
+	/**
+	* To Delete Record from detail View
+	* @param {type} deleteRecordActionUrl
+	* @returns {undefined}
+	*/
+	remove : function(deleteRecordActionUrl){
+		var message = app.vtranslate('LBL_DELETE_CONFIRMATION');
 		app.helper.showConfirmationBox({'message' : message}).then(function(data) {
-                var params = app.convertUrlToDataParams(deleteRecordActionUrl+"&ajaxDelete=true");
-                app.request.post({data:params}).then(
+				var params = app.convertUrlToDataParams(deleteRecordActionUrl+"&ajaxDelete=true");
+				app.request.post({data:params}).then(
 				function(err,data){
-                    if(err === null){
-                        if(typeof data !== 'object'){
-                            var appName = app.getAppName();
-                            window.location.href = data+'&app='+appName;
-                        }else {
-                            app.helper.showAlertBox({'message' : data.prototype.message});
-                        }
-                    } else {
-                        app.helper.showAlertBox({'message' : err});
-                    }
+					if(err === null){
+						if(typeof data !== 'object'){
+							var appName = app.getAppName();
+							window.location.href = data+'&app='+appName;
+						}else {
+							app.helper.showAlertBox({'message' : data.prototype.message});
+						}
+					} else {
+						app.helper.showAlertBox({'message' : err});
+					}
 				});
 			}
 		);
-    },    
-    
-    /**
-     * Function to register the related list search event
-     */        
-    registerRelatedListSearch : function() {
-        var thisInstance = this;
-        var detailViewContainer = thisInstance.getDetailViewContainer();
-        detailViewContainer.on('click','[data-trigger="relatedListSearch"]',function(e){
-            var params = {'page' : '1'};
-            thisInstance.getRelatedController().loadRelatedList(params);
-        });
-        detailViewContainer.on('keypress','input.listSearchContributor',function(e){
-            if(e.keyCode == 13){
-                var element = jQuery(e.currentTarget);
-                var parentElement = element.closest('tr');
-                var searchTriggerElement = parentElement.find('[data-trigger="relatedListSearch"]');
-                searchTriggerElement.trigger('click');
-            }
-        });
-    },
-    
-    /**
-     * Function to register the related list sort event
-     */
-    registerRelatedListSort : function() {
-        var thisInstance = this;
-        var detailViewContainer = thisInstance.getDetailViewContainer();
-        detailViewContainer.on('click','.listViewContentHeaderValues,.relatedListHeaderValues',function(e){
-            var fieldName = jQuery(e.currentTarget).attr('data-fieldname');
-            var sortOrderVal = jQuery(e.currentTarget).attr('data-nextsortorderval');
-            if(sortOrderVal === 'ASC'){
-                jQuery('i',e.currentTarget).addClass('fa-sort-asc');
-            }else{
-                jQuery('i',e.currentTarget).addClass('fa-sort-desc');
-            }
-            jQuery('#sortOrder').val(sortOrderVal);
-            jQuery('#orderBy').val(fieldName);
-            var params = [];
-            thisInstance.getRelatedController().loadRelatedList(params);
-        });
-    },
-       
-    /**
-     * Function to register remove related list sorting
-     */
-    registerRemoveRelatedListSort : function() {
-        var thisInstance = this;
-        var detailViewContainer = thisInstance.getDetailViewContainer();
-        detailViewContainer.on('click','.removeSorting',function(e){
-            jQuery('#sortOrder').val(null);
-            jQuery('#orderBy').val(null);
-            var params = [];
-            thisInstance.getRelatedController().loadRelatedList(params);
-        });
-    },
-            
-    /**
-     * Function to register Related List View Pagination
-     * @returns {undefined}
-     */
-    registerRelatedListPageNavigationEvents : function(){
-        var thisInstance = this;
-        var detailViewContainer = thisInstance.getDetailViewContainer();
-        var urlParams = {};
-        detailViewContainer.on('click','#listViewNextPageButton',function(e){
-            var pageLimit = jQuery('#pageLimit').val();
-            var noOfEntries = jQuery('#noOfEntries').val();
-            var nextPageExist = jQuery('#nextPageExist').val();
-            
-            if(noOfEntries == pageLimit && nextPageExist){
-                var pageNumber = jQuery('#pageNumber').val();
-                var nextPageNumber = parseInt(parseFloat(pageNumber)) + 1;
-                jQuery('#pageNumber').val(nextPageNumber);
-                var params = [];
-                thisInstance.loadRelatedListRecords(params);
-            }
-        });
-        
-        detailViewContainer.on('click','#listViewPreviousPageButton',function(e){
-            var pageNumber = jQuery('#pageNumber').val();
-            if(pageNumber > 1){
-                var previousPageNumber = parseInt(parseFloat(pageNumber)) - 1;
-                jQuery('#pageNumber').val(previousPageNumber);
-                var params = [];
-                thisInstance.loadRelatedListRecords(params);
-            }
-        });
-    },
-            
-    /**
+	},
+
+	/**
+	 * Function to register the related list search event
+	 */
+	registerRelatedListSearch : function() {
+		var thisInstance = this;
+		var detailViewContainer = thisInstance.getDetailViewContainer();
+		detailViewContainer.on('click','[data-trigger="relatedListSearch"]',function(e){
+			var params = {'page' : '1'};
+			thisInstance.getRelatedController().loadRelatedList(params);
+		});
+		detailViewContainer.on('keypress','input.listSearchContributor',function(e){
+			if(e.keyCode == 13){
+				var element = jQuery(e.currentTarget);
+				var parentElement = element.closest('tr');
+				var searchTriggerElement = parentElement.find('[data-trigger="relatedListSearch"]');
+				searchTriggerElement.trigger('click');
+			}
+		});
+	},
+
+	/**
+	 * Function to register the related list sort event
+	 */
+	registerRelatedListSort : function() {
+		var thisInstance = this;
+		var detailViewContainer = thisInstance.getDetailViewContainer();
+		detailViewContainer.on('click','.listViewContentHeaderValues,.relatedListHeaderValues',function(e){
+			var fieldName = jQuery(e.currentTarget).attr('data-fieldname');
+			var sortOrderVal = jQuery(e.currentTarget).attr('data-nextsortorderval');
+			if(sortOrderVal === 'ASC'){
+				jQuery('i',e.currentTarget).addClass('fa-sort-asc');
+			}else{
+				jQuery('i',e.currentTarget).addClass('fa-sort-desc');
+			}
+			jQuery('#sortOrder').val(sortOrderVal);
+			jQuery('#orderBy').val(fieldName);
+			var params = [];
+			thisInstance.getRelatedController().loadRelatedList(params);
+		});
+	},
+
+	/**
+	 * Function to register remove related list sorting
+	 */
+	registerRemoveRelatedListSort : function() {
+		var thisInstance = this;
+		var detailViewContainer = thisInstance.getDetailViewContainer();
+		detailViewContainer.on('click','.removeSorting',function(e){
+			jQuery('#sortOrder').val(null);
+			jQuery('#orderBy').val(null);
+			var params = [];
+			thisInstance.getRelatedController().loadRelatedList(params);
+		});
+	},
+
+	/**
+	 * Function to register Related List View Pagination
+	 * @returns {undefined}
+	 */
+	registerRelatedListPageNavigationEvents : function(){
+		var thisInstance = this;
+		var detailViewContainer = thisInstance.getDetailViewContainer();
+		var urlParams = {};
+		detailViewContainer.on('click','#listViewNextPageButton',function(e){
+			var pageLimit = jQuery('#pageLimit').val();
+			var noOfEntries = jQuery('#noOfEntries').val();
+			var nextPageExist = jQuery('#nextPageExist').val();
+
+			if(noOfEntries == pageLimit && nextPageExist){
+				var pageNumber = jQuery('#pageNumber').val();
+				var nextPageNumber = parseInt(parseFloat(pageNumber)) + 1;
+				jQuery('#pageNumber').val(nextPageNumber);
+				var params = [];
+				thisInstance.loadRelatedListRecords(params);
+			}
+		});
+
+		detailViewContainer.on('click','#listViewPreviousPageButton',function(e){
+			var pageNumber = jQuery('#pageNumber').val();
+			if(pageNumber > 1){
+				var previousPageNumber = parseInt(parseFloat(pageNumber)) - 1;
+				jQuery('#pageNumber').val(previousPageNumber);
+				var params = [];
+				thisInstance.loadRelatedListRecords(params);
+			}
+		});
+	},
+
+	/**
 	 * Function to register event for adding related record for module
 	 */
 	registerEventForAddingRelatedRecord : function(){
 		var thisInstance = this;
-        var detailViewContainer = thisInstance.getDetailViewContainer();
+		var detailViewContainer = thisInstance.getDetailViewContainer();
 		detailViewContainer.on('click','[name="addButton"]',function(e){
 			var element = jQuery(e.currentTarget);
-            var relatedModuleName = element.attr('module');
-            var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ relatedModuleName +'"]');
-            if(quickCreateNode.length <= 0) {
-                window.location.href = element.data('url');
-                return;
-            }
+			var relatedModuleName = element.attr('module');
+			var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ relatedModuleName +'"]');
+			if(quickCreateNode.length <= 0) {
+				window.location.href = element.data('url');
+				return;
+			}
 
 			var relatedController = thisInstance.getRelatedController(relatedModuleName);
 			if(relatedController){
@@ -994,26 +994,26 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			}
 		})
 	},
-    
-    /**
+
+	/**
 	 * Function to register event for selecting related record for module
 	 */
 	registerEventForSelectingRelatedRecord : function() {
 		var thisInstance = this;
-        var detailViewContainer = thisInstance.getDetailViewContainer();
-        detailViewContainer.on('click', 'button.selectRelation', function(e){
-            var relatedController = thisInstance.getRelatedController();
+		var detailViewContainer = thisInstance.getDetailViewContainer();
+		detailViewContainer.on('click', 'button.selectRelation', function(e){
+			var relatedController = thisInstance.getRelatedController();
 			if(relatedController){
 				relatedController.showSelectRelationPopup();
 			}
 		});
 	},
-            
-    getRelatedModuleName : function() {
+
+	getRelatedModuleName : function() {
 		return jQuery('.relatedModuleName').val();
 	},
-            
-    getRelatedController : function(relatedModuleName) {
+
+	getRelatedController : function(relatedModuleName) {
 		var thisInstance = this;
 		var recordId = thisInstance.getRecordId();
 		var moduleName = app.getModuleName();
@@ -1028,37 +1028,37 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		}
 		return null;
 	},
-            
-    getSelectedTab : function() {
+
+	getSelectedTab : function() {
 		var tabContainer = this.getTabContainer();
 		return tabContainer.find('li.active');
 	},
-    
-    /**
-     * To Register Ajax Edit Event
-     * @returns {undefined}
-     */
-    registerAjaxEditEvent : function(){
-        var thisInstance = this;
-        var detailContentsHolder = this.getContentHolder();
-        detailContentsHolder.on('click','table.detailview-table td.fieldValue .editAction', function(e) {
-            var editedLength = jQuery('table.detailview-table td.fieldValue .ajaxEdited').length;
- 	        if(editedLength === 0) { 
-                var selection = window.getSelection().toString(); 
-                if(selection.length == 0) {
-                    var currentTdElement = jQuery(e.currentTarget).closest('td');
-                    thisInstance.ajaxEditHandling(currentTdElement);
-                }
-			}
-		});
-    },
-    
-    /**
-     * To Save Ajax Edited field
-     * @param {type} fieldDetailList
-     * @returns {unresolved}
-     */
-    saveFieldValues : function (fieldDetailList) {
+
+	/**
+	 * To Register Ajax Edit Event
+	 * @returns {undefined}
+	 */
+	registerAjaxEditEvent : function(){
+		var thisInstance = this;
+		var detailContentsHolder = this.getContentHolder();
+		detailContentsHolder.on('click','table.detailview-table td.fieldValue .editAction', function(e) {
+			var editedLength = jQuery('table.detailview-table td.fieldValue .ajaxEdited').length;
+			if(editedLength === 0) { 
+				var selection = window.getSelection().toString(); 
+				if(selection.length == 0) {
+					var currentTdElement = jQuery(e.currentTarget).closest('td');
+					thisInstance.ajaxEditHandling(currentTdElement);
+				}
+			}
+		});
+	},
+
+	/**
+	 * To Save Ajax Edited field
+	 * @param {type} fieldDetailList
+	 * @returns {unresolved}
+	 */
+	saveFieldValues : function (fieldDetailList) {
 		var aDeferred = jQuery.Deferred();
 
 		var recordId = this.getRecordId();
@@ -1074,319 +1074,319 @@ Vtiger.Class("Vtiger_Detail_Js",{
 
 		app.request.post({data:data}).then(
 			function(err, reponseData){
-                if(err === null){
-                    app.helper.showSuccessNotification({"message":""});
-                    aDeferred.resolve(reponseData);
-                } else {
-                    app.helper.showErrorNotification({"message":err});
-                }
+				if(err === null){
+					app.helper.showSuccessNotification({"message":""});
+					aDeferred.resolve(reponseData);
+				} else {
+					app.helper.showErrorNotification({"message":err});
+				}
 			}
 		);
 
 		return aDeferred.promise();
 	},
-    
-    registerSaveOnEnterEvent: function(editElement) {
-        editElement.find('.inputElement:not(textarea)').on('keyup', function(e) {
-            var textArea = editElement.find('textarea');
-            var ignoreList = ['reference','picklist','multipicklist','owner'];
-            var fieldType = jQuery(e.target).closest('.ajaxEdited').find('.fieldBasicData').data('type');
-            if(ignoreList.indexOf(fieldType) !== -1) return;
-            if(!textArea.length){
-                (e.keyCode || e.which) === 13  && editElement.find('.inlineAjaxSave').trigger('click');
-            }
-        });
-    },
-    
-    /**
-     * Handling Ajax Edit 
-     * @param {type} currentTdElement
-     * @returns {undefined}
-     */
-    ajaxEditHandling : function(currentTdElement){
-        var thisInstance = this;
-        var detailViewValue = jQuery('.value',currentTdElement);
-        var editElement = jQuery('.edit',currentTdElement);
-        var fieldBasicData = jQuery('.fieldBasicData', editElement);
-        var fieldName = fieldBasicData.data('name');
-        var fieldType = fieldBasicData.data('type');
-        var value = fieldBasicData.data('displayvalue');
-        var rawValue = fieldBasicData.data('value');
-        var self = this;
-        var fieldElement = jQuery('[name="'+ fieldName +'"]', editElement);
-
-        // If Reference field has value, then we are disabling the field by default
-        if(fieldElement.attr('disabled') == 'disabled' && fieldType != 'reference'){
-            return;
-        } 
-
-        if(editElement.length <= 0) {
-            return;
-        }
-        
-        if(editElement.is(':visible')){
-            return;
-        }
-
-        if(fieldType === 'multipicklist') {
-            var multiPicklistFieldName = fieldName.split('[]');
-            fieldName = multiPicklistFieldName[0];
-        }
-        
-        var customHandlingFields = ['owner','ownergroup','picklist','multipicklist','reference','currencyList','text'];
-        if(jQuery.inArray(fieldType, customHandlingFields) !== -1){
-            value = rawValue;
-        }
-        if(jQuery('.editElement',editElement).length === 0){
-            var fieldInfo;
-            if(self.getOverlayDetailMode() == true){
-                fieldInfo = related_uimeta.field.get(fieldName);
-            }
-            else{
-                 fieldInfo = uimeta.field.get(fieldName);
-            }
-            fieldInfo['value'] = value;
-            var fieldObject = Vtiger_Field_Js.getInstance(fieldInfo);
-            var fieldModel = fieldObject.getUiTypeModel();
-
-            var ele = jQuery('<div class="input-group editElement"></div>');
-            var actionButtons = '<span class="pointerCursorOnHover input-group-addon input-group-addon-save inlineAjaxSave"><i class="fa fa-check"></i></span>';
-            actionButtons += '<span class="pointerCursorOnHover input-group-addon input-group-addon-cancel inlineAjaxCancel"><i class="fa fa-close"></i></span>';
-            //wrapping action buttons with class called input-save-wrap
-            var inlineSaveWrap=jQuery('<div class="input-save-wrap"></div>');
-            inlineSaveWrap.append(actionButtons);           
-            // we should have atleast one submit button for the form to submit which is required for validation
-            ele.append(fieldModel.getUi()).append(inlineSaveWrap);
-            ele.find('.inputElement').addClass('form-control');
-            editElement.append(ele);
-        }
-        
-        // for reference fields, actual value will be ID but we need to show related name of that ID
-        if(fieldType === 'reference'){
-            if(value !== 0){
-               jQuery('input[name="'+fieldName+'"]',editElement).prop('value',jQuery.trim(detailViewValue.text()));
-               var referenceElement = jQuery('input[name="'+fieldName+'"]',editElement);
-               if(!referenceElement.attr('disabled')) {
-                  referenceElement.attr('disabled','disabled');
-                  editElement.find('.clearReferenceSelection').removeClass('hide')
-               }
-            }
-        }
-        
-        detailViewValue.css('display', 'none');
-        editElement.removeClass('hide').show().children().filter('input[type!="hidden"]input[type!="image"],select').filter(':first').focus();
-        vtUtils.applyFieldElementsView(currentTdElement);
-        var contentHolder = this.getDetailViewContainer();
-        var vtigerInstance = Vtiger_Index_Js.getInstance();
-        vtigerInstance.registerAutoCompleteFields(contentHolder);
-        vtigerInstance.referenceModulePopupRegisterEvent(contentHolder);
-        editElement.addClass('ajaxEdited');
-        thisInstance.registerSaveOnEnterEvent(editElement);
-        jQuery('.editAction').addClass('hide');
-		
-        if(fieldType == 'picklist' || fieldType == 'ownergroup' || fieldType == 'owner') {
-            var sourcePicklistFieldName = thisInstance.getDependentSourcePicklistName(fieldName);
-            if(sourcePicklistFieldName) {
-                thisInstance.handlePickListDependencyMap(sourcePicklistFieldName);
-            }
-        }
-    },
-    
-    getDependentSourcePicklistName : function(fieldName) {
-        var container = this.getForm();
-        var picklistDependcyElemnt = jQuery('[name="picklistDependency"]',container);
-        if(picklistDependcyElemnt.length <= 0) {
-            return '';
-        }
-        
-        var picklistDependencyMapping = JSON.parse(picklistDependcyElemnt.val());
-        var sourcePicklists = Object.keys(picklistDependencyMapping);
-        if(sourcePicklists.length <= 0){
-            return '';
-        }
-        var sourcePicklistFieldName = '';
-        jQuery.each(picklistDependencyMapping, function(sourcePicklistName, configuredDependencyObject) {
-            var picklistmap = configuredDependencyObject["__DEFAULT__"];
-            jQuery.each(picklistmap,function(targetPickListName,targetPickListValues){
-                if(targetPickListName == fieldName){
-                    sourcePicklistFieldName = sourcePicklistName;
-                }
-            });
-        });
-        
-        return sourcePicklistFieldName;
-    },
-    
-    getInlineWrapper : function(element) {
-        var wrapperElement = element.closest('td');
-        if(!wrapperElement.length) {
-            wrapperElement = element.closest('.td');
-        }
-        return wrapperElement;
-    },
-    
-    /**
-     * Ajax Edit Save Event
-     * @param {type} currentTdElement
-     * @returns {undefined}
-     */
-    registerAjaxEditSaveEvent : function(contentHolder){
-        var thisInstance = this;
-        if(typeof contentHolder === 'undefined') {
-            contentHolder = this.getContentHolder();
-        }
-        
-        contentHolder.on('click','.inlineAjaxSave',function(e){
-            e.preventDefault();
-            e.stopPropagation();
-            var currentTarget = jQuery(e.currentTarget);
-            var currentTdElement = thisInstance.getInlineWrapper(currentTarget); 
-            var detailViewValue = jQuery('.value',currentTdElement);
-            var editElement = jQuery('.edit',currentTdElement);
-            var actionElement = jQuery('.editAction', currentTdElement);
-            var fieldBasicData = jQuery('.fieldBasicData', editElement);
-            var fieldName = fieldBasicData.data('name');
-            var fieldType = fieldBasicData.data("type");
-            var previousValue = jQuery.trim(fieldBasicData.data('displayvalue'));
-            
-            var fieldElement = jQuery('[name="'+ fieldName +'"]', editElement);
-            var ajaxEditNewValue = fieldElement.val();
-            
-             // ajaxEditNewValue should be taken based on field Type
-            if(fieldElement.is('input:checkbox')) {
-                if(fieldElement.is(':checked')) {
-                    ajaxEditNewValue = '1';
-                } else {
-                    ajaxEditNewValue = '0';
-                }
-                fieldElement = fieldElement.filter('[type="checkbox"]');
-            } else if(fieldType == 'reference'){
-                ajaxEditNewValue = fieldElement.attr('value');
-            }
-            
-            // prev Value should be taken based on field Type
-            var customHandlingFields = ['owner','ownergroup','picklist','multipicklist','reference','boolean']; 
-            if(jQuery.inArray(fieldType, customHandlingFields) !== -1){
-                previousValue = fieldBasicData.data('value');
-            }
-            
-            // Field Specific custom Handling
-            if(fieldType === 'multipicklist'){
-                var multiPicklistFieldName = fieldName.split('[]');
-                fieldName = multiPicklistFieldName[0];
-            } 
-            
-            var fieldValue = ajaxEditNewValue;
-
-           //Before saving ajax edit values we need to check if the value is changed then only we have to save
-            if(previousValue == ajaxEditNewValue) {
-                detailViewValue.css('display', 'inline-block');
-                editElement.addClass('hide');
-                editElement.removeClass('ajaxEdited');
-                jQuery('.editAction').removeClass('hide');
-                actionElement.show();
-            }else{
-                var fieldNameValueMap = {};
-                fieldNameValueMap['value'] = fieldValue;
-                fieldNameValueMap['field'] = fieldName;
-                var form = currentTarget.closest('form');
-                var params = {
-                    'ignore' : 'span.hide .inputElement,input[type="hidden"]',
-                    submitHandler : function(form){
-                        var preAjaxSaveEvent = jQuery.Event(Vtiger_Detail_Js.PreAjaxSaveEvent);
-                        app.event.trigger(preAjaxSaveEvent,{form:jQuery(form),tiggeredFiledInfo:fieldNameValueMap});
-                        if(preAjaxSaveEvent.isDefaultPrevented()) {
-                            return false;
-                        }
-                        
-                        jQuery(currentTdElement).find('.input-group-addon').addClass('disabled');
-                        app.helper.showProgress();
-                        thisInstance.saveFieldValues(fieldNameValueMap).then(function(response) {
-                            app.helper.hideProgress();
-                            var postSaveRecordDetails = response;
-                            if(fieldBasicData.data('type') == 'picklist' && app.getModuleName() != 'Users') {
-                                var color = postSaveRecordDetails[fieldName].colormap[postSaveRecordDetails[fieldName].value];
-                                if(color) {
-                                    var contrast = app.helper.getColorContrast(color);
-                                    var textColor = (contrast === 'dark') ? 'white' : 'black';
-                                    var picklistHtml = '<span class="picklist-color" style="background-color: ' + color + '; color: '+ textColor + ';">' +
-                                                            postSaveRecordDetails[fieldName].display_value + 
-                                                       '</span>';
-                                } else {
-                                    var picklistHtml = '<span class="picklist-color">' +
-                                                            postSaveRecordDetails[fieldName].display_value + 
-                                                        '</span>';
-                                }
-                                detailViewValue.html(picklistHtml);
-                            } else if(fieldBasicData.data('type') == 'multipicklist' && app.getModuleName() != 'Users') {
-                                var picklistHtml = '';
-                                var rawPicklistValues = postSaveRecordDetails[fieldName].value;
-                                rawPicklistValues = rawPicklistValues.split('|##|');
-                                var picklistValues = postSaveRecordDetails[fieldName].display_value;
-                                    picklistValues = picklistValues.split(',');
-                                for(var i=0; i< rawPicklistValues.length; i++) {
-                                    var color = postSaveRecordDetails[fieldName].colormap[rawPicklistValues[i].trim()];
-                                    if(color) {
-                                        var contrast = app.helper.getColorContrast(color);
-                                        var textColor = (contrast === 'dark') ? 'white' : 'black';
-                                        picklistHtml = picklistHtml +
-                                                       '<span class="picklist-color" style="background-color: ' + color + '; color: '+ textColor + ';">' +
-                                                            picklistValues[i] + 
-                                                       '</span>';
-                                    } else {
-                                        picklistHtml = picklistHtml +
-                                                       '<span class="picklist-color">' + 
-                                                            picklistValues[i] + 
-                                                       '</span>';
-                                    }
-                                    if(picklistValues[i+1]!==undefined)
-                                        picklistHtml+=' , ';
-                                }
-                                detailViewValue.html(picklistHtml);
-                            } else if(fieldBasicData.data('type') == 'currency' && app.getModuleName() != 'Users') {
+
+	registerSaveOnEnterEvent: function(editElement) {
+		editElement.find('.inputElement:not(textarea)').on('keyup', function(e) {
+			var textArea = editElement.find('textarea');
+			var ignoreList = ['reference','picklist','multipicklist','owner'];
+			var fieldType = jQuery(e.target).closest('.ajaxEdited').find('.fieldBasicData').data('type');
+			if(ignoreList.indexOf(fieldType) !== -1) return;
+			if(!textArea.length){
+				(e.keyCode || e.which) === 13  && editElement.find('.inlineAjaxSave').trigger('click');
+			}
+		});
+	},
+
+	/**
+	 * Handling Ajax Edit 
+	 * @param {type} currentTdElement
+	 * @returns {undefined}
+	 */
+	ajaxEditHandling : function(currentTdElement){
+		var thisInstance = this;
+		var detailViewValue = jQuery('.value',currentTdElement);
+		var editElement = jQuery('.edit',currentTdElement);
+		var fieldBasicData = jQuery('.fieldBasicData', editElement);
+		var fieldName = fieldBasicData.data('name');
+		var fieldType = fieldBasicData.data('type');
+		var value = fieldBasicData.data('displayvalue');
+		var rawValue = fieldBasicData.data('value');
+		var self = this;
+		var fieldElement = jQuery('[name="'+ fieldName +'"]', editElement);
+
+		// If Reference field has value, then we are disabling the field by default
+		if(fieldElement.attr('disabled') == 'disabled' && fieldType != 'reference'){
+			return;
+		} 
+
+		if(editElement.length <= 0) {
+			return;
+		}
+
+		if(editElement.is(':visible')){
+			return;
+		}
+
+		if(fieldType === 'multipicklist') {
+			var multiPicklistFieldName = fieldName.split('[]');
+			fieldName = multiPicklistFieldName[0];
+		}
+
+		var customHandlingFields = ['owner','ownergroup','picklist','multipicklist','reference','currencyList','text'];
+		if(jQuery.inArray(fieldType, customHandlingFields) !== -1){
+			value = rawValue;
+		}
+		if(jQuery('.editElement',editElement).length === 0){
+			var fieldInfo;
+			if(self.getOverlayDetailMode() == true){
+				fieldInfo = related_uimeta.field.get(fieldName);
+			}
+			else{
+				 fieldInfo = uimeta.field.get(fieldName);
+			}
+			fieldInfo['value'] = value;
+			var fieldObject = Vtiger_Field_Js.getInstance(fieldInfo);
+			var fieldModel = fieldObject.getUiTypeModel();
+
+			var ele = jQuery('<div class="input-group editElement"></div>');
+			var actionButtons = '<span class="pointerCursorOnHover input-group-addon input-group-addon-save inlineAjaxSave"><i class="fa fa-check"></i></span>';
+			actionButtons += '<span class="pointerCursorOnHover input-group-addon input-group-addon-cancel inlineAjaxCancel"><i class="fa fa-close"></i></span>';
+			//wrapping action buttons with class called input-save-wrap
+			var inlineSaveWrap=jQuery('<div class="input-save-wrap"></div>');
+			inlineSaveWrap.append(actionButtons);
+			// we should have atleast one submit button for the form to submit which is required for validation
+			ele.append(fieldModel.getUi()).append(inlineSaveWrap);
+			ele.find('.inputElement').addClass('form-control');
+			editElement.append(ele);
+		}
+
+		// for reference fields, actual value will be ID but we need to show related name of that ID
+		if(fieldType === 'reference'){
+			if(value !== 0){
+				jQuery('input[name="'+fieldName+'"]',editElement).prop('value',jQuery.trim(detailViewValue.text()));
+				var referenceElement = jQuery('input[name="'+fieldName+'"]',editElement);
+				if(!referenceElement.attr('disabled')) {
+					referenceElement.attr('disabled','disabled');
+					editElement.find('.clearReferenceSelection').removeClass('hide')
+				}
+			}
+		}
+
+		detailViewValue.css('display', 'none');
+		editElement.removeClass('hide').show().children().filter('input[type!="hidden"]input[type!="image"],select').filter(':first').focus();
+		vtUtils.applyFieldElementsView(currentTdElement);
+		var contentHolder = this.getDetailViewContainer();
+		var vtigerInstance = Vtiger_Index_Js.getInstance();
+		vtigerInstance.registerAutoCompleteFields(contentHolder);
+		vtigerInstance.referenceModulePopupRegisterEvent(contentHolder);
+		editElement.addClass('ajaxEdited');
+		thisInstance.registerSaveOnEnterEvent(editElement);
+		jQuery('.editAction').addClass('hide');
+
+		if(fieldType == 'picklist' || fieldType == 'ownergroup' || fieldType == 'owner') {
+			var sourcePicklistFieldName = thisInstance.getDependentSourcePicklistName(fieldName);
+			if(sourcePicklistFieldName) {
+				thisInstance.handlePickListDependencyMap(sourcePicklistFieldName);
+			}
+		}
+	},
+
+	getDependentSourcePicklistName : function(fieldName) {
+		var container = this.getForm();
+		var picklistDependcyElemnt = jQuery('[name="picklistDependency"]',container);
+		if(picklistDependcyElemnt.length <= 0) {
+			return '';
+		}
+
+		var picklistDependencyMapping = JSON.parse(picklistDependcyElemnt.val());
+		var sourcePicklists = Object.keys(picklistDependencyMapping);
+		if(sourcePicklists.length <= 0){
+			return '';
+		}
+		var sourcePicklistFieldName = '';
+		jQuery.each(picklistDependencyMapping, function(sourcePicklistName, configuredDependencyObject) {
+			var picklistmap = configuredDependencyObject["__DEFAULT__"];
+			jQuery.each(picklistmap,function(targetPickListName,targetPickListValues){
+				if(targetPickListName == fieldName){
+					sourcePicklistFieldName = sourcePicklistName;
+				}
+			});
+		});
+
+		return sourcePicklistFieldName;
+	},
+
+	getInlineWrapper : function(element) {
+		var wrapperElement = element.closest('td');
+		if(!wrapperElement.length) {
+			wrapperElement = element.closest('.td');
+		}
+		return wrapperElement;
+	},
+
+	/**
+	 * Ajax Edit Save Event
+	 * @param {type} currentTdElement
+	 * @returns {undefined}
+	 */
+	registerAjaxEditSaveEvent : function(contentHolder){
+		var thisInstance = this;
+		if(typeof contentHolder === 'undefined') {
+			contentHolder = this.getContentHolder();
+		}
+
+		contentHolder.on('click','.inlineAjaxSave',function(e){
+			e.preventDefault();
+			e.stopPropagation();
+			var currentTarget = jQuery(e.currentTarget);
+			var currentTdElement = thisInstance.getInlineWrapper(currentTarget); 
+			var detailViewValue = jQuery('.value',currentTdElement);
+			var editElement = jQuery('.edit',currentTdElement);
+			var actionElement = jQuery('.editAction', currentTdElement);
+			var fieldBasicData = jQuery('.fieldBasicData', editElement);
+			var fieldName = fieldBasicData.data('name');
+			var fieldType = fieldBasicData.data("type");
+			var previousValue = jQuery.trim(fieldBasicData.data('displayvalue'));
+
+			var fieldElement = jQuery('[name="'+ fieldName +'"]', editElement);
+			var ajaxEditNewValue = fieldElement.val();
+
+			 // ajaxEditNewValue should be taken based on field Type
+			if(fieldElement.is('input:checkbox')) {
+				if(fieldElement.is(':checked')) {
+					ajaxEditNewValue = '1';
+				} else {
+					ajaxEditNewValue = '0';
+				}
+				fieldElement = fieldElement.filter('[type="checkbox"]');
+			} else if(fieldType == 'reference'){
+				ajaxEditNewValue = fieldElement.attr('value');
+			}
+
+			// prev Value should be taken based on field Type
+			var customHandlingFields = ['owner','ownergroup','picklist','multipicklist','reference','boolean']; 
+			if(jQuery.inArray(fieldType, customHandlingFields) !== -1){
+				previousValue = fieldBasicData.data('value');
+			}
+
+			// Field Specific custom Handling
+			if(fieldType === 'multipicklist'){
+				var multiPicklistFieldName = fieldName.split('[]');
+				fieldName = multiPicklistFieldName[0];
+			} 
+
+			var fieldValue = ajaxEditNewValue;
+
+			//Before saving ajax edit values we need to check if the value is changed then only we have to save
+			if(previousValue == ajaxEditNewValue) {
+				detailViewValue.css('display', 'inline-block');
+				editElement.addClass('hide');
+				editElement.removeClass('ajaxEdited');
+				jQuery('.editAction').removeClass('hide');
+				actionElement.show();
+			}else{
+				var fieldNameValueMap = {};
+				fieldNameValueMap['value'] = fieldValue;
+				fieldNameValueMap['field'] = fieldName;
+				var form = currentTarget.closest('form');
+				var params = {
+					'ignore' : 'span.hide .inputElement,input[type="hidden"]',
+					submitHandler : function(form){
+						var preAjaxSaveEvent = jQuery.Event(Vtiger_Detail_Js.PreAjaxSaveEvent);
+						app.event.trigger(preAjaxSaveEvent,{form:jQuery(form),tiggeredFiledInfo:fieldNameValueMap});
+						if(preAjaxSaveEvent.isDefaultPrevented()) {
+							return false;
+						}
+
+						jQuery(currentTdElement).find('.input-group-addon').addClass('disabled');
+						app.helper.showProgress();
+						thisInstance.saveFieldValues(fieldNameValueMap).then(function(response) {
+							app.helper.hideProgress();
+							var postSaveRecordDetails = response;
+							if(fieldBasicData.data('type') == 'picklist' && app.getModuleName() != 'Users') {
+								var color = postSaveRecordDetails[fieldName].colormap[postSaveRecordDetails[fieldName].value];
+								if(color) {
+									var contrast = app.helper.getColorContrast(color);
+									var textColor = (contrast === 'dark') ? 'white' : 'black';
+									var picklistHtml = '<span class="picklist-color" style="background-color: ' + color + '; color: '+ textColor + ';">' +
+															postSaveRecordDetails[fieldName].display_value + 
+														'</span>';
+								} else {
+									var picklistHtml = '<span class="picklist-color">' +
+															postSaveRecordDetails[fieldName].display_value + 
+														'</span>';
+								}
+								detailViewValue.html(picklistHtml);
+							} else if(fieldBasicData.data('type') == 'multipicklist' && app.getModuleName() != 'Users') {
+								var picklistHtml = '';
+								var rawPicklistValues = postSaveRecordDetails[fieldName].value;
+								rawPicklistValues = rawPicklistValues.split('|##|');
+								var picklistValues = postSaveRecordDetails[fieldName].display_value;
+									picklistValues = picklistValues.split(',');
+								for(var i=0; i< rawPicklistValues.length; i++) {
+									var color = postSaveRecordDetails[fieldName].colormap[rawPicklistValues[i].trim()];
+									if(color) {
+										var contrast = app.helper.getColorContrast(color);
+										var textColor = (contrast === 'dark') ? 'white' : 'black';
+										picklistHtml = picklistHtml +
+														'<span class="picklist-color" style="background-color: ' + color + '; color: '+ textColor + ';">' +
+															 picklistValues[i] + 
+														'</span>';
+									} else {
+										picklistHtml = picklistHtml +
+														'<span class="picklist-color">' + 
+															 picklistValues[i] + 
+														'</span>';
+									}
+									if(picklistValues[i+1]!==undefined)
+										picklistHtml+=' , ';
+								}
+								detailViewValue.html(picklistHtml);
+							} else if(fieldBasicData.data('type') == 'currency' && app.getModuleName() != 'Users') {
 								detailViewValue.find('.currencyValue').html(postSaveRecordDetails[fieldName].display_value);
 								contentHolder.closest('.detailViewContainer').find('.detailview-header-block').find('.'+fieldName).html(postSaveRecordDetails[fieldName].display_value);
 							}else {
-                                detailViewValue.html(postSaveRecordDetails[fieldName].display_value);
-                                //update namefields displayvalue in header
-                                if(contentHolder.hasClass('overlayDetail')) {
-                                    contentHolder.find('.overlayDetailHeader').find('.'+fieldName)
-                                    .html(postSaveRecordDetails[fieldName].display_value);
-                                } else {
-                                    contentHolder.closest('.detailViewContainer').find('.detailview-header-block')
-                                    .find('.'+fieldName).html(postSaveRecordDetails[fieldName].display_value);
-                            }
-                            }
-                            fieldBasicData.data('displayvalue',postSaveRecordDetails[fieldName].display_value);
-                            fieldBasicData.data('value',postSaveRecordDetails[fieldName].value);
-                            jQuery(currentTdElement).find('.input-group-addon').removeClass("disabled");
-
-                            detailViewValue.css('display', 'inline-block');
-                            editElement.addClass('hide');
-                            editElement.removeClass('ajaxEdited');
-                            jQuery('.editAction').removeClass('hide');
-                            actionElement.show();
-                            var postAjaxSaveEvent = jQuery.Event(Vtiger_Detail_Js.PostAjaxSaveEvent);
-                            app.event.trigger(postAjaxSaveEvent, fieldBasicData, postSaveRecordDetails, contentHolder);
-                            //After saving source field value, If Target field value need to change by user, show the edit view of target field.
-                            if(thisInstance.targetPicklistChange) {
-                                var sourcePicklistname = thisInstance.sourcePicklistname;
-                                thisInstance.targetPicklist.find('.editAction').trigger('click');
-                                thisInstance.targetPicklistChange = false;
-                                thisInstance.targetPicklist = false;
-                                thisInstance.handlePickListDependencyMap(sourcePicklistname);
-                                thisInstance.sourcePicklistname = false;
-                            }
-                        });
-                    }
-                };
-                validateAndSubmitForm(form,params);
-            }
-        });
-    },
-    
-    handlePickListDependencyMap : function(sourcePicklistName) {
-        var container = this.getForm();
+								detailViewValue.html(postSaveRecordDetails[fieldName].display_value);
+								//update namefields displayvalue in header
+								if(contentHolder.hasClass('overlayDetail')) {
+									contentHolder.find('.overlayDetailHeader').find('.'+fieldName)
+									.html(postSaveRecordDetails[fieldName].display_value);
+								} else {
+									contentHolder.closest('.detailViewContainer').find('.detailview-header-block')
+									.find('.'+fieldName).html(postSaveRecordDetails[fieldName].display_value);
+							}
+							}
+							fieldBasicData.data('displayvalue',postSaveRecordDetails[fieldName].display_value);
+							fieldBasicData.data('value',postSaveRecordDetails[fieldName].value);
+							jQuery(currentTdElement).find('.input-group-addon').removeClass("disabled");
+
+							detailViewValue.css('display', 'inline-block');
+							editElement.addClass('hide');
+							editElement.removeClass('ajaxEdited');
+							jQuery('.editAction').removeClass('hide');
+							actionElement.show();
+							var postAjaxSaveEvent = jQuery.Event(Vtiger_Detail_Js.PostAjaxSaveEvent);
+							app.event.trigger(postAjaxSaveEvent, fieldBasicData, postSaveRecordDetails, contentHolder);
+							//After saving source field value, If Target field value need to change by user, show the edit view of target field.
+							if(thisInstance.targetPicklistChange) {
+								var sourcePicklistname = thisInstance.sourcePicklistname;
+								thisInstance.targetPicklist.find('.editAction').trigger('click');
+								thisInstance.targetPicklistChange = false;
+								thisInstance.targetPicklist = false;
+								thisInstance.handlePickListDependencyMap(sourcePicklistname);
+								thisInstance.sourcePicklistname = false;
+							}
+						});
+					}
+				};
+				validateAndSubmitForm(form,params);
+			}
+		});
+	},
+
+	handlePickListDependencyMap : function(sourcePicklistName) {
+		var container = this.getForm();
 		var picklistDependcyElemnt = jQuery('[name="picklistDependency"]',container);
 		if(picklistDependcyElemnt.length <= 0) {
 			return;
@@ -1397,101 +1397,101 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			return;
 		}
 
-        var configuredDependencyObject = picklistDependencyMapping[sourcePicklistName];
-        var selectedValue = container.find('[data-name='+sourcePicklistName+']').data('value');
-        var targetObjectForSelectedSourceValue = configuredDependencyObject[selectedValue];
-        var picklistmap = configuredDependencyObject["__DEFAULT__"];
-        if(typeof targetObjectForSelectedSourceValue == 'undefined'){
-            targetObjectForSelectedSourceValue = picklistmap;
-        }
-        jQuery.each(picklistmap,function(targetPickListName,targetPickListValues){
-            var targetPickListMap = targetObjectForSelectedSourceValue[targetPickListName];
-            if(typeof targetPickListMap == "undefined"){
-                targetPickListMap = targetPickListValues;
-            }
-            var targetPickList = jQuery('[name="'+targetPickListName+'"]',container);
-            if(targetPickList.length <= 0){
-                return;
-            }
-
-            var listOfAvailableOptions = targetPickList.data('available-options');
-            if(typeof listOfAvailableOptions == "undefined"){
-                listOfAvailableOptions = jQuery('option',targetPickList);
-                targetPickList.data('available-options', listOfAvailableOptions);
-            }
-
-            var targetOptions = new jQuery();
-            var optionSelector = [];
-            optionSelector.push('');
-            for(var i=0; i<targetPickListMap.length; i++){
-                optionSelector.push(targetPickListMap[i]);
-            }
-
-            jQuery.each(listOfAvailableOptions, function(i,e) {
-                var picklistValue = jQuery(e).val();
-                if(jQuery.inArray(picklistValue, optionSelector) != -1) {
-                    targetOptions = targetOptions.add(jQuery(e));
-                }
-            })
-            var targetPickListSelectedValue = '';
-            targetPickListSelectedValue = targetOptions.filter('[selected]').val();
-            if(targetPickListMap.length == 1) { 
-                targetPickListSelectedValue = targetPickListMap[0]; // to automatically select picklist if only one picklistmap is present.
-            }
+		var configuredDependencyObject = picklistDependencyMapping[sourcePicklistName];
+		var selectedValue = container.find('[data-name='+sourcePicklistName+']').data('value');
+		var targetObjectForSelectedSourceValue = configuredDependencyObject[selectedValue];
+		var picklistmap = configuredDependencyObject["__DEFAULT__"];
+		if(typeof targetObjectForSelectedSourceValue == 'undefined'){
+			targetObjectForSelectedSourceValue = picklistmap;
+		}
+		jQuery.each(picklistmap,function(targetPickListName,targetPickListValues){
+			var targetPickListMap = targetObjectForSelectedSourceValue[targetPickListName];
+			if(typeof targetPickListMap == "undefined"){
+				targetPickListMap = targetPickListValues;
+			}
+			var targetPickList = jQuery('[name="'+targetPickListName+'"]',container);
+			if(targetPickList.length <= 0){
+				return;
+			}
+
+			var listOfAvailableOptions = targetPickList.data('available-options');
+			if(typeof listOfAvailableOptions == "undefined"){
+				listOfAvailableOptions = jQuery('option',targetPickList);
+				targetPickList.data('available-options', listOfAvailableOptions);
+			}
+
+			var targetOptions = new jQuery();
+			var optionSelector = [];
+			optionSelector.push('');
+			for(var i=0; i<targetPickListMap.length; i++){
+				optionSelector.push(targetPickListMap[i]);
+			}
+
+			jQuery.each(listOfAvailableOptions, function(i,e) {
+				var picklistValue = jQuery(e).val();
+				if(jQuery.inArray(picklistValue, optionSelector) != -1) {
+					targetOptions = targetOptions.add(jQuery(e));
+				}
+			})
+			var targetPickListSelectedValue = '';
+			targetPickListSelectedValue = targetOptions.filter('[selected]').val();
+			if(targetPickListMap.length == 1) { 
+				targetPickListSelectedValue = targetPickListMap[0]; // to automatically select picklist if only one picklistmap is present.
+			}
 			if((targetPickListName == 'group_id' || targetPickListName == 'assigned_user_id') && jQuery("[data-name="+ sourcePicklistName +"]").data('value') == ''){
 				return false;
 			}
-            targetPickList.html(targetOptions).val(targetPickListSelectedValue).trigger("change");
-        })
-            
-    },
-    
-    /**
-     * Ajax Edit Calcel Event
-     * @param {type} currentTdElement
-     * @returns {undefined}
-     */
-    registerAjaxEditCancelEvent : function(contentHolder){
-        var thisInstance = this;
-        if(typeof contentHolder === 'undefined') {
-            contentHolder = this.getContentHolder();
-        }
-        contentHolder.on('click','.inlineAjaxCancel',function(e){
-            e.preventDefault();
-            e.stopPropagation();
-            var currentTarget = jQuery(e.currentTarget);
-            var currentTdElement = thisInstance.getInlineWrapper(currentTarget);
-            var detailViewValue = jQuery('.value',currentTdElement);
-            var editElement = jQuery('.edit',currentTdElement);
-            var actionElement = jQuery('.editAction', currentTdElement);
-            detailViewValue.css('display', 'inline-block');
-            editElement.addClass('hide');
-            editElement.find('.inputElement').trigger('Vtiger.Validation.Hide.Messsage')
-            editElement.removeClass('ajaxEdited');
-            jQuery('.editAction').removeClass('hide');
-            actionElement.show();
-        });
-    },
-    
-    registerClearReferenceSelectionEvent : function(contentHolder) {
-        var thisInstance = this;
-        if(typeof contentHolder === 'undefined') {
-            contentHolder = this.getContentHolder();
-        }
+			targetPickList.html(targetOptions).val(targetPickListSelectedValue).trigger("change");
+		})
+
+	},
+
+	/**
+	 * Ajax Edit Calcel Event
+	 * @param {type} currentTdElement
+	 * @returns {undefined}
+	 */
+	registerAjaxEditCancelEvent : function(contentHolder){
+		var thisInstance = this;
+		if(typeof contentHolder === 'undefined') {
+			contentHolder = this.getContentHolder();
+		}
+		contentHolder.on('click','.inlineAjaxCancel',function(e){
+			e.preventDefault();
+			e.stopPropagation();
+			var currentTarget = jQuery(e.currentTarget);
+			var currentTdElement = thisInstance.getInlineWrapper(currentTarget);
+			var detailViewValue = jQuery('.value',currentTdElement);
+			var editElement = jQuery('.edit',currentTdElement);
+			var actionElement = jQuery('.editAction', currentTdElement);
+			detailViewValue.css('display', 'inline-block');
+			editElement.addClass('hide');
+			editElement.find('.inputElement').trigger('Vtiger.Validation.Hide.Messsage')
+			editElement.removeClass('ajaxEdited');
+			jQuery('.editAction').removeClass('hide');
+			actionElement.show();
+		});
+	},
+
+	registerClearReferenceSelectionEvent : function(contentHolder) {
+		var thisInstance = this;
+		if(typeof contentHolder === 'undefined') {
+			contentHolder = this.getContentHolder();
+		}
 		contentHolder.on('click','.clearReferenceSelection',function(e){
-            e.preventDefault();
+			e.preventDefault();
 			var element = jQuery(e.currentTarget);
 			var parentTdElement = thisInstance.getInlineWrapper(element);
-            var inputElement = parentTdElement.find('.inputElement');
-            parentTdElement.find('.referencefield-wrapper').removeClass('selected');
-            inputElement.removeAttr("disabled");
-            inputElement.attr("value","");
-            inputElement.val("");
-            element.addClass('hide');
+			var inputElement = parentTdElement.find('.inputElement');
+			parentTdElement.find('.referencefield-wrapper').removeClass('selected');
+			inputElement.removeAttr("disabled");
+			inputElement.attr("value","");
+			inputElement.val("");
+			element.addClass('hide');
 		});
 	},
-    
-    searchModuleNames : function(params) {
+
+	searchModuleNames : function(params) {
 		var aDeferred = jQuery.Deferred();
 
 		if(typeof params.module == 'undefined') {
@@ -1501,7 +1501,7 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		if(typeof params.action == 'undefined') {
 			params.action = 'BasicAjax';
 		}
-		
+
 		if(typeof params.base_record == 'undefined') {
 			var record = jQuery('[name="record"]');
 			var recordId = app.getRecordId();
@@ -1516,7 +1516,7 @@ Vtiger.Class("Vtiger_Detail_Js",{
 				}
 			}
 		}
-		
+
 		app.request.get({data:params}).then(
 			function(err, res){
 				aDeferred.resolve(res);
@@ -1525,51 +1525,51 @@ Vtiger.Class("Vtiger_Detail_Js",{
 				//TODO : Handle error
 				aDeferred.reject();
 			}
-        );
+		);
 		return aDeferred.promise();
 	},
-    
-    /**
+
+	/**
 	 * Function to get reference search params
 	 */
 	getReferenceSearchParams : function(element){
 		var tdElement = jQuery(element).closest('td');
 		var params = {};
-        var referenceModuleElement = jQuery('input[name="referenceModule"]',tdElement).length ? 
-           jQuery('input[name="referenceModule"]',tdElement) : jQuery('input.referenceModule',tdElement);
+		var referenceModuleElement = jQuery('input[name="referenceModule"]',tdElement).length ? 
+			jQuery('input[name="referenceModule"]',tdElement) : jQuery('input.referenceModule',tdElement);
 		var searchModule =  referenceModuleElement.val();
 		params.search_module = searchModule;
 		return params;
 	},
-    
-    /**
-     * Load Detail View Contents
-     * @param {type} url
-     * @returns {unresolved}
-     */
-    loadContents : function(url,data){
+
+	/**
+	 * Load Detail View Contents
+	 * @param {type} url
+	 * @returns {unresolved}
+	 */
+	loadContents : function(url,data){
 		var thisInstance = this;
-        var detailContentsHolder = this.getContentHolder();
-        var aDeferred = jQuery.Deferred();
-        if(url.indexOf('index.php') < 0) {
-            url = 'index.php?' + url;
-        }
-        var params = [];
-        params.url = url;
-        if(typeof data != 'undefined'){
-            params.data = data;
-        }
-        app.helper.showProgress();
-        app.request.pjax(params).then(function(error,response){
-            detailContentsHolder.html(response);
-            thisInstance.detailViewForm = jQuery('#detailView');
+		var detailContentsHolder = this.getContentHolder();
+		var aDeferred = jQuery.Deferred();
+		if(url.indexOf('index.php') < 0) {
+			url = 'index.php?' + url;
+		}
+		var params = [];
+		params.url = url;
+		if(typeof data != 'undefined'){
+			params.data = data;
+		}
+		app.helper.showProgress();
+		app.request.pjax(params).then(function(error,response){
+			detailContentsHolder.html(response);
+			thisInstance.detailViewForm = jQuery('#detailView');
 			thisInstance.registerBlockStatusCheckOnLoad();
-            aDeferred.resolve(response);
-            app.helper.hideProgress();
-        });
-        return aDeferred.promise();
-    },
-	
+			aDeferred.resolve(response);
+			app.helper.hideProgress();
+		});
+		return aDeferred.promise();
+	},
+
 	registerBlockAnimationEvent : function(){
 		var detailContentsHolder = this.getContentHolder();
 		detailContentsHolder.on('click','.blockToggle',function(e){
@@ -1599,7 +1599,7 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		});
 
 	},
-	
+
 	registerBlockStatusCheckOnLoad : function(){
 		var blocks = this.getContentHolder().find('.block');
 		var module = app.getModuleName();
@@ -1611,38 +1611,38 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			var cacheKey = module+'.'+blockId;
 			var value = app.storage.get(cacheKey);
 			if(value != null){
-                if(value == 1){
-                    headerAnimationElement.hide();
-                    currentBlock.find("[data-mode='show']").removeClass('hide').show();
-                    bodyContents.removeClass('hide').show();
-                } else {
-                    headerAnimationElement.hide();
-                    currentBlock.find("[data-mode='hide']").removeClass('hide').show();
-                    bodyContents.hide();
-                }
+				if(value == 1){
+					headerAnimationElement.hide();
+					currentBlock.find("[data-mode='show']").removeClass('hide').show();
+					bodyContents.removeClass('hide').show();
+				} else {
+					headerAnimationElement.hide();
+					currentBlock.find("[data-mode='hide']").removeClass('hide').show();
+					bodyContents.hide();
+				}
 			} else {
-                if(bodyContents.hasClass("hide")) {
-                    headerAnimationElement.hide();
+				if(bodyContents.hasClass("hide")) {
+					headerAnimationElement.hide();
 					currentBlock.find("[data-mode='hide']").show();
 					bodyContents.hide();
-                }
-            }
+				}
+			}
 		});
 	},
-	
-    registerEventForActivityWidget : function(){
+
+	registerEventForActivityWidget : function(){
 		var thisInstance = this;
 		/*
 		 * Register click event for add button in Related Activities widget
 		 */
 		jQuery('.createActivity').on('click', function(e){
-            var currentTarget = jQuery(e.currentTarget);
-            var referenceModuleName;
-            if(currentTarget.hasClass('toDotask')){
-                referenceModuleName = 'Calendar';
-            }else{
-                referenceModuleName = "Events";
-            }
+			var currentTarget = jQuery(e.currentTarget);
+			var referenceModuleName;
+			if(currentTarget.hasClass('toDotask')){
+				referenceModuleName = 'Calendar';
+			}else{
+				referenceModuleName = "Events";
+			}
 			var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ referenceModuleName +'"]');
 			var recordId = thisInstance.getRecordId();
 			var module = app.getModuleName();
@@ -1655,20 +1655,20 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			if(typeof fieldName == 'undefined' && module != 'Contacts'){
 				fieldName = 'parent_id';
 			}
-			
+
 			var customParams = {};
 			customParams[fieldName] = recordId;
 			customParams['parentModule'] = module;
-			
-            app.event.on("post.QuickCreateForm.show",function(event,form){
-                jQuery('<input type="hidden" name="sourceModule" value="'+module+'" >').appendTo(form);
-                jQuery('<input type="hidden" name="sourceRecord" value="'+recordId+'" >').appendTo(form);
-                jQuery('<input type="hidden" name="relationOperation" value="true" >').appendTo(form);
-                jQuery('<input type="hidden" name="'+fieldName+'" value="'+recordId+'" >').appendTo(form);
-            });
-            
-            app.event.on('post.QuickCreateForm.save',function(event,data){
-                var params = {};
+
+			app.event.on("post.QuickCreateForm.show",function(event,form){
+				jQuery('<input type="hidden" name="sourceModule" value="'+module+'" >').appendTo(form);
+				jQuery('<input type="hidden" name="sourceRecord" value="'+recordId+'" >').appendTo(form);
+				jQuery('<input type="hidden" name="relationOperation" value="true" >').appendTo(form);
+				jQuery('<input type="hidden" name="'+fieldName+'" value="'+recordId+'" >').appendTo(form);
+			});
+
+			app.event.on('post.QuickCreateForm.save',function(event,data){
+				var params = {};
 				params['record'] = recordId;
 				params['view'] = 'Detail';
 				params['module'] = module;
@@ -1679,23 +1679,23 @@ Vtiger.Class("Vtiger_Detail_Js",{
 						var activitiesWidget = jQuery('#relatedActivities');
 						activitiesWidget.html(data);
 						vtUtils.applyFieldElementsView(activitiesWidget);
-                        thisInstance.registerEventForActivityWidget();
+						thisInstance.registerEventForActivityWidget();
 					}
 				);
-            });
-            
+			});
+
 			var QuickCreateParams = {};
 			QuickCreateParams['noCache'] = false;
 			QuickCreateParams['data'] = customParams;
 			quickCreateNode.trigger('click', QuickCreateParams);
 		});
 	},
-    
-    registerSummaryViewContainerEvents : function(summaryViewContainer){
-        var self = this;
-        this.registerEventForActivityWidget();
-        this.loadWidgets();
-        /**
+
+	registerSummaryViewContainerEvents : function(summaryViewContainer){
+		var self = this;
+		this.registerEventForActivityWidget();
+		this.loadWidgets();
+		/**
 		 * Function to handle the ajax edit for summary view fields
 		 */
 		summaryViewContainer.on('click','table.summary-table td.fieldValue .editAction', function(e){
@@ -1704,8 +1704,8 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			var currentTdElement = currentTarget.closest('td.fieldValue');
 			self.ajaxEditHandling(currentTdElement);
 		});
-        
-        jQuery('.createRecord').on('click',function(e){
+
+		jQuery('.createRecord').on('click',function(e){
 			var currentElement = jQuery(e.currentTarget);
 			var summaryWidgetContainer = currentElement.closest('.summaryWidgetContainer');
 			var widgetHeaderContainer = summaryWidgetContainer.find('.widget_header');
@@ -1721,27 +1721,27 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			if(quickCreateNode.length <= 0) {
 				app.helper.showErrorMessage(app.vtranslate('JS_NO_CREATE_OR_NOT_QUICK_CREATE_ENABLED'));
 			}
-            
-            app.event.on('post.QuickCreateForm.save',function(event,data){
-                var idList = new Array();
-                idList.push(data._recordId);
-                
-                self.addRelationBetweenRecords(referenceModuleName,idList).then(function(data){
-                    self.loadWidget(summaryWidgetContainer.find('[class^="widgetContainer_"]'));
-                });
-            });
+
+			app.event.on('post.QuickCreateForm.save',function(event,data){
+				var idList = new Array();
+				idList.push(data._recordId);
+
+				self.addRelationBetweenRecords(referenceModuleName,idList).then(function(data){
+					self.loadWidget(summaryWidgetContainer.find('[class^="widgetContainer_"]'));
+				});
+			});
 
 			var QuickCreateParams = {};
 			QuickCreateParams['data'] = customParams;
 			QuickCreateParams['noCache'] = false;
 			quickCreateNode.trigger('click', QuickCreateParams);
 		});
-        
-        /*
+
+		/*
 		 * Register the event to edit the status for for related activities
 		 */
 		summaryViewContainer.on('click', '.editStatus', function(e){
-           var currentTarget = jQuery(e.currentTarget);
+			var currentTarget = jQuery(e.currentTarget);
 			var currentDiv = currentTarget.closest('.activityStatus');
 			var editElement = currentDiv.find('.edit');
 			var detailViewElement = currentDiv.find('.value');
@@ -1749,15 +1749,15 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			currentTarget.hide();
 			detailViewElement.addClass('hide');
 			editElement.removeClass('hide').show(); 
-            
-            var callbackFunction = function() {
-                var fieldnameElement = jQuery('.fieldname', editElement);
+
+			var callbackFunction = function() {
+				var fieldnameElement = jQuery('.fieldname', editElement);
 				var fieldName = fieldnameElement.val();
 				var fieldElement = jQuery('[name="'+ fieldName +'"]', editElement);
 				var previousValue = fieldnameElement.data('prevValue');
 				var ajaxEditNewValue = fieldElement.find('option:selected').val();
 				var translatedValue = fieldElement.find('option:selected').text();
-				
+
 				var select2Element = fieldElement.parent().find('.select2-container');
 				if(ajaxEditNewValue == '') {
 					vtUtils.showValidationMessage(select2Element, app.vtranslate('JS_REQUIRED_FIELD'));
@@ -1766,19 +1766,19 @@ Vtiger.Class("Vtiger_Detail_Js",{
 				} else {
 					vtUtils.hideValidationMessage(select2Element);
 				}
-				
+
 				if(previousValue == ajaxEditNewValue) {
-                    editElement.addClass('hide');
-                    detailViewElement.removeClass('hide');
+					editElement.addClass('hide');
+					detailViewElement.removeClass('hide');
 					currentTarget.show();
-                } else {
+				} else {
 					var activityDiv = currentDiv.closest('.activityEntries');
 					var activityId = activityDiv.find('.activityId').val();
 					var moduleName = activityDiv.find('.activityModule').val();
 					var activityType = activityDiv.find('.activityType').val();
 
-                    app.helper.showProgress();
-                    editElement.addClass('hide');
+					app.helper.showProgress();
+					editElement.addClass('hide');
 					var params = {
 						action : 'SaveAjax',
 						record : activityId,
@@ -1792,26 +1792,26 @@ Vtiger.Class("Vtiger_Detail_Js",{
 
 					app.request.post({"data":params}).then(
 						function(err,data) {
-                            app.helper.hideProgress();
+							app.helper.hideProgress();
 							detailViewElement.removeClass('hide');
 							currentTarget.show();
 							detailViewElement.html(translatedValue);
 							fieldnameElement.data('prevValue', ajaxEditNewValue);
-                    });
-                }
-            }
-            app.helper.addClickOutSideEvent(currentDiv,callbackFunction);
-        });
-    },
-    
-    addRelationBetweenRecords : function(relatedModule, relatedModuleRecordId){
+					});
+				}
+			}
+			app.helper.addClickOutSideEvent(currentDiv,callbackFunction);
+		});
+	},
+
+	addRelationBetweenRecords : function(relatedModule, relatedModuleRecordId){
 		var aDeferred = jQuery.Deferred();
 		var thisInstance = this;
 		var relatedController = thisInstance.getRelatedController(relatedModule);
-                if(thisInstance.getOverlayDetailMode() == true){
-                    relatedController.parentModuleName = thisInstance.getModuleName();
-                    relatedController.setSelectedTabElement('');
-                }
+				if(thisInstance.getOverlayDetailMode() == true){
+					relatedController.parentModuleName = thisInstance.getModuleName();
+					relatedController.setSelectedTabElement('');
+				}
 		if(relatedController){
 			relatedController.addRelations(relatedModuleRecordId).then(
 				function(data){
@@ -1825,56 +1825,56 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		}
 		return aDeferred.promise();
 	},
-    
-    loadWidgets : function(){
+
+	loadWidgets : function(){
 		var self = this;
 		var widgetList = jQuery('[class^="widgetContainer_"]');
 		widgetList.each(function(index,widgetContainerELement){
 			var widgetContainer = jQuery(widgetContainerELement);
 			self.loadWidget(widgetContainer).then(function(){
-                app.event.trigger('post.summarywidget.load',widgetContainer);
-            });
+				app.event.trigger('post.summarywidget.load',widgetContainer);
+			});
 		});
 	},
 
 	loadWidget : function(widgetContainer) {
-        var aDeferred = jQuery.Deferred();
-        var thisInstance = this;
+		var aDeferred = jQuery.Deferred();
+		var thisInstance = this;
 		var contentContainer = jQuery('.widget_contents',widgetContainer);
 		var urlParams = widgetContainer.data('url');
-        
+
 		var params = {
 			'type' : 'GET',
 			'dataType': 'html',
 			'data' : urlParams
 		};
-        app.helper.showProgress();
+		app.helper.showProgress();
 		app.request.post(params).then(
 			function(err,data){
-                app.helper.hideProgress();
-                contentContainer.html(data);
-                contentContainer.trigger(thisInstance.widgetPostLoad);
-                
-                var adjustedHeight = contentContainer.height()-50;
-                app.helper.showVerticalScroll(contentContainer.find('.twitterContainer'),{
-                    'setHeight' : adjustedHeight
-                });
-                
-                aDeferred.resolve(params);
+				app.helper.hideProgress();
+				contentContainer.html(data);
+				contentContainer.trigger(thisInstance.widgetPostLoad);
+
+				var adjustedHeight = contentContainer.height()-50;
+				app.helper.showVerticalScroll(contentContainer.find('.twitterContainer'),{
+					'setHeight' : adjustedHeight
+				});
+
+				aDeferred.resolve(params);
 			},
 			function(){
-                aDeferred.reject();
+				aDeferred.reject();
 			}
 		);
-        return aDeferred.promise();
+		return aDeferred.promise();
 	},
-    
-    
-    getTabs : function() {
+
+
+	getTabs : function() {
 		return this.getTabContainer().find('li');
 	},
-    
-    /**
+
+	/**
 	 * Function to return related tab.
 	 * @return : jQuery Object.
 	 */
@@ -1891,8 +1891,8 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		});
 		return targetTab;
 	},
-    
-    /**
+
+	/**
 	 * function to save comment
 	 * return json response
 	 */
@@ -1906,26 +1906,26 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		var commentContent = closestCommentBlock.find('.commentcontent');
 		var formData = new FormData(form[0]); 
 		var commentContentValue = commentContent.val();
-        var isPrivate;
-        if(closestCommentBlock.find('#is_private').is(":checked")) {
-            isPrivate = 1;
-        } else {
-            isPrivate = 0;
-        }
+		var isPrivate;
+		if(closestCommentBlock.find('#is_private').is(":checked")) {
+			isPrivate = 1;
+		} else {
+			isPrivate = 0;
+		}
 		var errorMsg;
 		if(commentContentValue.trim() == ""){
 			errorMsg = app.vtranslate('JS_LBL_COMMENT_VALUE_CANT_BE_EMPTY');
-            vtUtils.showValidationMessage(commentContent, errorMsg);
+			vtUtils.showValidationMessage(commentContent, errorMsg);
 			aDeferred.reject();
 			return aDeferred.promise();
 		}
-          vtUtils.hideValidationMessage(commentContent);
+		  vtUtils.hideValidationMessage(commentContent);
 		if(commentMode == "edit"){
 			var editCommentReason = closestCommentBlock.find('[name="reasonToEdit"]').val();
-            isPrivate = closestCommentBlock.find('[name="is_private"]').val();
+			isPrivate = closestCommentBlock.find('[name="is_private"]').val();
 		}
 
-        app.helper.showProgress();
+		app.helper.showProgress();
 		var element = jQuery(e.currentTarget);
 		element.attr('disabled', 'disabled');
 
@@ -1934,14 +1934,14 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		var parentCommentId = commentInfoHeader.data('parentcommentid');
 		var commentRelatedTo = commentInfoHeader.data('relatedto');
 		if(!commentRelatedTo) commentRelatedTo = self.getRecordId();
-        
-        var postData = {
+
+		var postData = {
 			'commentcontent' : 	commentContentValue,
 			'related_to': commentRelatedTo,
 			'module' : 'ModComments',
-            'is_private' : isPrivate
+			'is_private' : isPrivate
 		}
-        var incrementCount = false;
+		var incrementCount = false;
 		if(commentMode == "edit"){
 			postData['record'] = commentId;
 			postData['reasontoedit'] = editCommentReason;
@@ -1952,7 +1952,7 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			postData['parent_comments'] = commentId;
 			postData['action'] = 'SaveAjax';
 			postData['filename'] = Vtiger_Index_Js.files,
-            incrementCount = true;
+			incrementCount = true;
 		}
 		jQuery.each(postData, function (key, value) {
 			formData.append(key, value);
@@ -1967,18 +1967,18 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		app.request.post(postData).then(
 			function(err,data){
 				Vtiger_Index_Js.files = '';
-                jQuery('.MultiFile-remove').trigger('click');
-                app.helper.hideProgress();
-                if(incrementCount){
-                    // to increment related records count when we add comment from related tab / summary view widget
-                    var tabElement = self.getTabByLabel("ModComments");
-                    var relatedController = new Vtiger_RelatedList_Js(self.getRecordId(), app.getModuleName(), tabElement, self.getRelatedModuleName());
-                    relatedController.updateRelatedRecordsCount(jQuery(tabElement).data('relation-id'),[1],true);
-                }
+				jQuery('.MultiFile-remove').trigger('click');
+				app.helper.hideProgress();
+				if(incrementCount){
+					// to increment related records count when we add comment from related tab / summary view widget
+					var tabElement = self.getTabByLabel("ModComments");
+					var relatedController = new Vtiger_RelatedList_Js(self.getRecordId(), app.getModuleName(), tabElement, self.getRelatedModuleName());
+					relatedController.updateRelatedRecordsCount(jQuery(tabElement).data('relation-id'),[1],true);
+				}
 				aDeferred.resolve(data);
 			},
 			function(textStatus, errorThrown){
-                app.helper.hideProgress();
+				app.helper.hideProgress();
 				element.removeAttr('disabled');
 				aDeferred.reject(textStatus, errorThrown);
 			}
@@ -1986,8 +1986,8 @@ Vtiger.Class("Vtiger_Detail_Js",{
 
 		return aDeferred.promise();
 	},
-    
-    /**
+
+	/**
 	 * function to remove comment block if its exists.
 	 */
 	removeCommentBlockIfExists : function() {
@@ -1995,8 +1995,8 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		var Commentswidget = jQuery('.commentsBody',detailContentsHolder);
 		jQuery('.addCommentBlock',Commentswidget).remove();
 	},
-    
-    /**
+
+	/**
 	 * function to return cloned edit comment block
 	 * return jQuery Obj.
 	 */
@@ -2004,11 +2004,11 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		var detailContentsHolder = this.getContentHolder();
 		var clonedCommentBlock = jQuery('.basicEditCommentBlock',detailContentsHolder).clone(true,true).removeClass('basicEditCommentBlock hide').addClass('addCommentBlock');
 		clonedCommentBlock.find('.commentcontenthidden').removeClass('commentcontenthidden').addClass('commentcontent');
-        clonedCommentBlock.find('.commentcontent').addClass('mention_listener');
+		clonedCommentBlock.find('.commentcontent').addClass('mention_listener');
 		return clonedCommentBlock;
 	},
-    
-    /**
+
+	/**
 	 * function to return cloned add comment block
 	 * return jQuery Obj.
 	 */
@@ -2016,25 +2016,25 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		var detailContentsHolder = this.getContentHolder();
 		var clonedCommentBlock = jQuery('.basicAddCommentBlock',detailContentsHolder).clone(true,true).removeClass('basicAddCommentBlock hide').addClass('addCommentBlock');
 		clonedCommentBlock.find('.commentcontenthidden').removeClass('commentcontenthidden').addClass('commentcontent');
-        clonedCommentBlock.find('.commentcontent').addClass('mention_listener');
+		clonedCommentBlock.find('.commentcontent').addClass('mention_listener');
 		return clonedCommentBlock;
 	},
-    
-    
-    /**
+
+
+	/**
 	 * function to get the Comment thread for the given parent.
 	 * params: Url to get the Comment thread
 	 */
 	getCommentThread : function(url) {
 		var aDeferred = jQuery.Deferred();
 		app.request.post({"url":url}).then(function(err,data) {
-            aDeferred.resolve(data);
-        });
+			aDeferred.resolve(data);
+		});
 		return aDeferred.promise();
 	},
-    
-    
-    /**
+
+
+	/**
 	 * Function to get child comments
 	 */
 	getChildComments : function(commentId){
@@ -2046,8 +2046,8 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		});
 		return aDeferred.promise();
 	},
-    
-    /**
+
+	/**
 	 * function to return the UI of the comment.
 	 * return html
 	 */
@@ -2061,650 +2061,650 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		app.request.post({"data":postData}).then(
 			function(err,data){
 				aDeferred.resolve(data);
-        });
+		});
 		return aDeferred.promise();
 	},
-    
-    
-    getRelatedRecordsCount : function(recordId, moduleName){
-        var aDeferred = jQuery.Deferred();
-        var params = {
-            'type' : 'GET',
-            'data' : {
-                'module' : moduleName,
-                'recordId' : recordId,
-                'action'   : 'RelatedRecordsAjax',
-                'mode'   : 'getRelatedRecordsCount'
-            }
-        };
-        app.request.get(params).then(function(err,data){
-            if(err == null){
-                aDeferred.resolve(data);
-            }
-        });
-        return aDeferred.promise();
-    },
-    
-    updateRelatedRecordsCount : function(){
-        var self = this;
-        var recordId = self.getRecordId();
-        var moduleName = app.getModuleName();
-        self.getRelatedRecordsCount(recordId, moduleName).then(function(data){
-            jQuery.each(data, function(key, value){
-                var element = new Object(jQuery("a","li[data-relation-id="+key+"]"));
-                var numberEle = element.find('.numberCircle');
-                numberEle.text(value);
-                if(parseInt(value) > 0){
-                    numberEle.removeClass('hide');
-                } else{
-                    numberEle.addClass('hide');
-                }
-                element.attr("recordscount",value);
-            });
-        });
-    },
-    
-    registerAddTwitterToRecordEvent : function(elementId){ 
-        jQuery('.searchProfileToolTip').tooltip({'placement': 'top','content':'html'});
-        jQuery('#'+elementId).on('click', function(e){ 
-            jQuery('.searchProfileToolTip').tooltip('hide');
-            var twitterNameArray = elementId.split("__"); 
-            Vtiger_Detail_Js.saveTwitterHandler(twitterNameArray[1]); 
-                });
-    },
-	
+
+
+	getRelatedRecordsCount : function(recordId, moduleName){
+		var aDeferred = jQuery.Deferred();
+		var params = {
+			'type' : 'GET',
+			'data' : {
+				'module'	: moduleName,
+				'recordId'	: recordId,
+				'action'	: 'RelatedRecordsAjax',
+				'mode'		: 'getRelatedRecordsCount'
+			}
+		};
+		app.request.get(params).then(function(err,data){
+			if(err == null){
+				aDeferred.resolve(data);
+			}
+		});
+		return aDeferred.promise();
+	},
+
+	updateRelatedRecordsCount : function(){
+		var self = this;
+		var recordId = self.getRecordId();
+		var moduleName = app.getModuleName();
+		self.getRelatedRecordsCount(recordId, moduleName).then(function(data){
+			jQuery.each(data, function(key, value){
+				var element = new Object(jQuery("a","li[data-relation-id="+key+"]"));
+				var numberEle = element.find('.numberCircle');
+				numberEle.text(value);
+				if(parseInt(value) > 0){
+					numberEle.removeClass('hide');
+				} else{
+					numberEle.addClass('hide');
+				}
+				element.attr("recordscount",value);
+			});
+		});
+	},
+
+	registerAddTwitterToRecordEvent : function(elementId){ 
+		jQuery('.searchProfileToolTip').tooltip({'placement': 'top','content':'html'});
+		jQuery('#'+elementId).on('click', function(e){ 
+			jQuery('.searchProfileToolTip').tooltip('hide');
+			var twitterNameArray = elementId.split("__"); 
+			Vtiger_Detail_Js.saveTwitterHandler(twitterNameArray[1]); 
+				});
+	},
+
 	toggleRollupComments : function (e) {
-            e.stopPropagation();
-            e.preventDefault();
-            var self = this;
-            var currentTarget = jQuery(e.currentTarget);
-            var moduleName = currentTarget.attr('module');
-            var recordId = currentTarget.attr('record');
-            var rollupId = currentTarget.attr('rollupid');
-            var rollupstatus = currentTarget.attr('rollup-status');
-            var viewtype = currentTarget.data('view');
+			e.stopPropagation();
+			e.preventDefault();
+			var self = this;
+			var currentTarget = jQuery(e.currentTarget);
+			var moduleName = currentTarget.attr('module');
+			var recordId = currentTarget.attr('record');
+			var rollupId = currentTarget.attr('rollupid');
+			var rollupstatus = currentTarget.attr('rollup-status');
+			var viewtype = currentTarget.data('view');
 			var startindex = parseInt(currentTarget.attr('startindex'));
-            var contents, url, params;
-			
-            if(rollupstatus == 0) {
-                if(viewtype == 'relatedlist') {
+			var contents, url, params;
+
+			if(rollupstatus == 0) {
+				if(viewtype == 'relatedlist') {
 					url = 'index.php?module=Vtiger&view=ModCommentsDetailAjax&parent='+
 							moduleName+'&parentId='+recordId+'&rollupid='+rollupId+'&rollup_status='+rollupstatus+
 							'&startindex='+startindex;
-                    contents = jQuery('.details');
-                }else {
-                    url = 'index.php?module='+moduleName+'&relatedModule=ModComments&view=Detail&record='+
-                            recordId+'&mode=showRecentComments'+'&rollupid='+rollupId
-                            +'&rollup_status=1&parent='+moduleName+'&rollup-toggle=1&limit=5';
-                    contents = jQuery('div[data-name="ModComments"] div.widget_contents');
-                }
-				
+					contents = jQuery('.details');
+				}else {
+					url = 'index.php?module='+moduleName+'&relatedModule=ModComments&view=Detail&record='+
+							recordId+'&mode=showRecentComments'+'&rollupid='+rollupId
+							+'&rollup_status=1&parent='+moduleName+'&rollup-toggle=1&limit=5';
+					contents = jQuery('div[data-name="ModComments"] div.widget_contents');
+				}
+
 				params = {
 					'type' : 'GET',
 					'url' : url
 				};
-				
-                app.request.get(params).then(function(err, data){
+
+				app.request.get(params).then(function(err, data){
 					app.helper.hideProgress();
-                    contents.html(data);
-                    self.registerRollupCommentsSwitchEvent();
+					contents.html(data);
+					self.registerRollupCommentsSwitchEvent();
 					jQuery('#rollupcomments').bootstrapSwitch('state', true, true);
-                });
-            }else {
-                if(viewtype == 'relatedlist') {
-                    url = 'index.php?module=Vtiger&view=ModCommentsDetailAjax&parent='+
-                      moduleName+'&parentId='+recordId+'&rollupid='+rollupId+'&rollup_status=0&mode=saveRollupSettings';
+				});
+			}else {
+				if(viewtype == 'relatedlist') {
+					url = 'index.php?module=Vtiger&view=ModCommentsDetailAjax&parent='+
+					  moduleName+'&parentId='+recordId+'&rollupid='+rollupId+'&rollup_status=0&mode=saveRollupSettings';
 					params = {
 						'type' : 'GET',
 						'url' : url
 					};
-                    app.request.get(params).then(function(err, data){
-                        currentTarget.attr('rollup-status', 0);
-                        jQuery('div.related-tabs li[data-label-key="ModComments"]').trigger('click');
-                    });
-                }else {
-                    url = 'index.php?module='+moduleName+'&relatedModule=ModComments&view=Detail&record='+
-                            recordId+'&mode=showRecentComments'+'&rollupid='+rollupId
-                            +'&rollup_status=0&parent='+moduleName+'&rollup-toggle=1&limit=5';
-                    contents = jQuery('div[data-name="ModComments"] div.widget_contents');
+					app.request.get(params).then(function(err, data){
+						currentTarget.attr('rollup-status', 0);
+						jQuery('div.related-tabs li[data-label-key="ModComments"]').trigger('click');
+					});
+				}else {
+					url = 'index.php?module='+moduleName+'&relatedModule=ModComments&view=Detail&record='+
+							recordId+'&mode=showRecentComments'+'&rollupid='+rollupId
+							+'&rollup_status=0&parent='+moduleName+'&rollup-toggle=1&limit=5';
+					contents = jQuery('div[data-name="ModComments"] div.widget_contents');
 					params = {
 						'type' : 'GET',
 						'url' : url
 					};
-                    app.request.get(params).then(function(err, data){
+					app.request.get(params).then(function(err, data){
 						app.helper.hideProgress();
-                        contents.html(data);
-                        self.registerRollupCommentsSwitchEvent();
+						contents.html(data);
+						self.registerRollupCommentsSwitchEvent();
 						jQuery('#rollupcomments').bootstrapSwitch('state', false, true);
-                    });
-                }
-            }
-    },
-    
-    registerScrollForRollupEvents : function() {
-        var relatedController = this.getRelatedController();
+					});
+				}
+			}
+	},
+
+	registerScrollForRollupEvents : function() {
+		var relatedController = this.getRelatedController();
 		if(relatedController)
 			relatedController.registerScrollForRollupComments();
-    },
-    
-    registerStarToggle : function() {
-        var self = this;
-        jQuery('#starToggle').on('click',function(e){
-            var element = jQuery(e.currentTarget);
-            if(element.hasClass('processing')) return;
-            element.addClass('processing');
-            var record = self.getRecordId();
-            var params = {};
-            params.module = app.getModuleName();
-            params.action = 'SaveAjax';
-            params.record = record;
-            if(element.hasClass('active')) {
-                params.starred = 0;
-            }else {
-                params.starred = 1;
-            }
-            
-            element.toggleClass('active');
-            
-            
-            app.request.post({data:params}).then(function(err,data){
-                element.removeClass('processing');
-            })
-      });
-    },
-    
-    saveTag : function(callerParams) {
-        var self = this;
-        var aDeferred = jQuery.Deferred();
-        var params = {
-            'module' : app.getModuleName(),
-            'action' : 'TagCloud',
-            'mode'   : 'saveTags',
-            'record' : this.getRecordId()
-            
-        };
-        var params = jQuery.extend(params, callerParams);
-        app.request.post({'data': params}).then(
-            function(error, data) {
-                if(error == null) {
-                    var tagContainer = jQuery('.tagContainer');
-                    var tagInstance = self.getComponentInstance('Vtiger_Tag_Js');
-                    tagInstance.addTagsToShowAllTagContianer(data.tags);
-                    self.addTagsToSummaryTag(data.tags);
-                    if(parseInt(data.moreTagCount) > 0) {
-                        tagContainer.find('.tagMoreCount').text(data.moreTagCount).closest('.moreTags').removeClass('hide');
-                    }
-                    aDeferred.resolve(data);
-                }else{
-                    aDeferred.reject(data);
-                }
-            }
-        );
-        return aDeferred.promise();
-    },
-    
-    deleteTag : function(callerParams) {
-        var aDeferred = jQuery.Deferred();
-        
-        var params = {
-            'module' : app.getModuleName(),
-            'action' : 'TagCloud',
-            'mode' : 'delete',
-            'record' : this.getRecordId()
-        }
-    
-        var params = jQuery.extend(params, callerParams);
-        app.request.post({'data': params}).then(
-            function(error, data) {
-                if(error == null) {
-                    aDeferred.resolve(data);
-                }else{
-                    aDeferred.reject(data);
-                }
-            }
-        );
-    
-        return aDeferred.promise();
-    },
-    
-    constructTagElement : function (params) {
-        var tagElement = jQuery(jQuery('#dummyTagElement').html()).clone(true);
-        tagElement.attr('data-id',params.id).attr('data-type',params.type);
-        tagElement.find('.tagLabel').html(params.name);
-        return tagElement
-    },
-    
-    showAllTags : function(container) {
-        var self = this;
-        var showTagModal = container.find('.showAllTagContainer').clone(true);
-        app.helper.showModal(showTagModal.find('.modal-dialog'),{'cb' : function(modalContainer){
-                
-                var registerShowAllTagEvents = function(modalContainer) {
-                    var currentTagsSelected = new Array();
-                    var currentTagHolder = modalContainer.find('.currentTag');
-                    
-                    modalContainer.find('.dropdown-menu').on('click',function(e){
-                        e.stopPropagation();
-                   });
-       
-                    modalContainer.find('.currentTagMenu > li > a ').on('click', function(e){
-                        var element = jQuery(e.currentTarget);
-                        var selectedTag = jQuery(element.html());
-                        currentTagsSelected.push(selectedTag.data('id'));
-                        element.remove();
-                        currentTagHolder.append(selectedTag);
-                    });
-                    
-                    app.helper.showVerticalScroll(currentTagHolder);
-                    
-                    modalContainer.find('.currentTagSelector').instaFilta({
-                        targets : '.currentTagMenu > li',
-                        sections : '.currentTagMenu',
-                        scope : '.detailShowAllModal', 
-                        hideEmptySections : true,
-                        beginsWith : false, 
-                        caseSensitive : false, 
-                        typeDelay : 0
-                     });
-                     
-                    var tagInputEle = modalContainer.find('input[name="createNewTag"]');
-                    var params = {tags : [], tokenSeparators: [","]};
-                    vtUtils.showSelect2ElementView(tagInputEle, params);
-                    
-                    var form = modalContainer.find('form');
-                    form.on('submit',function(e){
-                        e.preventDefault();
-                        var modalContainerClone = modalContainer.clone(true);
-                        app.helper.hideModal();
-                        var saveParams = {};
-                        var saveTagList = {};
-                        saveTagList['existing'] = currentTagsSelected;
-                        saveTagList['new'] = tagInputEle.val().split(',')
-                        saveParams['tagsList'] = saveTagList;
-                       
-                        var formData = form.serializeFormData();
-                        saveParams['newTagType'] = formData['visibility'];
-                        self.saveTag(saveParams).then(function(data){
-                            jQuery('.showAllTagContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html());
-                            jQuery('.showAllTagContainer').find('.currentTagMenu').html(modalContainerClone.find('.currentTagMenu').html());
-                        })
-                        return false;
-                    })
-                     
-                }
-                registerShowAllTagEvents(modalContainer);
-        }});
-    },
-    
-    addTagsToSummaryTag : function(tagsList) {
-        var summaryTagList = jQuery('.detailTagList');
-        var numOfTagsToShow = parseInt(summaryTagList.data('numOfTagsToShow'));
-        var numOfTagsToAppend =  numOfTagsToShow - (parseInt(summaryTagList.find('.tag').length));
-        for(var index in tagsList) {
-            if(numOfTagsToAppend <= 0) {
-                break;
-            }
-            var tagInfo = tagsList[index];
-            var tagId = tagInfo.id;
-            if(summaryTagList.find('[data-id="'+ tagId +'"]').length <= 0) {
-                var newTagEle = this.constructTagElement(tagInfo);
-                summaryTagList.find('.moreTags').before(newTagEle);
-                summaryTagList.find('.noTagsPlaceHolder').addClass('hide');
-                numOfTagsToAppend--;
-            } 
-        }
-        
-        if(summaryTagList.find('.tag').length > 0){
-            summaryTagList.closest('.tag-contents').removeClass('hide');
-        }
-            
-    },
-    
-    removeDeletedTagsFromSummaryTag : function(deletedTags){
-        var summaryTagContainer = jQuery('.detailTagList');
-        for(var index in deletedTags) {
-            var tag = summaryTagContainer.find('.tag[data-id="'+deletedTags[index]+'"]');
-            if(tag.length > 0){
-                var showAllTagContainer = jQuery('.showAllTagContainer');
-                var currentTagHolder = showAllTagContainer.find('.currentTag');
-                var summaryLastTag = summaryTagContainer.find('.tag').filter(':last');
-                var nextTag = currentTagHolder.find('[data-id="'+ summaryLastTag.data('id') +'"]').next();
-                summaryTagContainer.find('.moreTags').before(nextTag.clone(true));
-                tag.remove();
-            }
-        }
-        
-        if(summaryTagContainer.find(".tag").length <=0){
-            summaryTagContainer.find(".noTagsPlaceHolder").removeClass("hide");
-        }
-        
-    },
-    
-    registerTagSearch : function() {
-        jQuery('#tag-search').instaFilta({
-          targets : '#addTagContainer .existingTag .tag-item',
-          sections : '#addTagContainer .existingTag',
-          hideEmptySections : true,
-          beginsWith : false, 
-          caseSensitive : false, 
-          typeDelay : 0
-       });
-    },
-    
-    postTagDeleteActions : function(deletedTagClone) {
-        var summaryTagContainer = jQuery('.detailTagList');
-        var tagInstance = this.getComponentInstance('Vtiger_Tag_Js');
-        var tagInfo = {
-            'id' : deletedTagClone.data('id')
-        };
-        tagInstance.removeTagsFromShowTagContainer(new Array(tagInfo));
-
-        if(summaryTagContainer.find('.tag').length <= 0 ) {
-            summaryTagContainer.find('.noTagsPlaceHolder').removeClass('hide');
-        }else{
-            var moreTagsEle = summaryTagContainer.find('.tagMoreCount');
-            if(!moreTagsEle.closest('.moreTags').hasClass('hide')) {
-                var moreTagsCount = parseInt(moreTagsEle.text());
-                moreTagsCount--;
-                moreTagsEle.text(moreTagsCount);
-                if(moreTagsCount <=0 ){
-                    moreTagsEle.closest('.moreTags').addClass('hide');
-                } 
-            }
-        }
-    },
-    
-    
-    registerTagEvents : function() {
-        var self = this;
-        var tagContainer = jQuery('.tagContainer');
-        
-        tagContainer.find('#addTagContainer .dropdown-menu').on('click',function(e){
-            e.stopPropagation();
-       });
-       var tagInputEle = tagContainer.find('.newTags');
-       var params = {tags : [], tokenSeparators: [","]};
-       vtUtils.showSelect2ElementView(tagInputEle, params);
-       
-       var existinTagContainer = tagContainer.find('.existingTag');
-       app.helper.showVerticalScroll(existinTagContainer);
-       
-       this.registerTagSearch();
-       
-       jQuery('#saveTag').on('click', function(e){
-           tagContainer.find('.dropdown-toggle').dropdown('toggle');
-           var element = jQuery(e.currentTarget);
-           var createTagContainer = element.closest('.createTagContainer');
-           var existingTagContainer = createTagContainer.find('.existingTag');
-           var selectedExistingTags = new Array();
-           var selectedTagElement = existingTagContainer.find('.tagSelector').filter(':checked').closest('li.tag-item');
-           selectedTagElement.each(function(index, domEle){
-               var ele = jQuery(domEle);
-               selectedExistingTags.push(ele.find('.tag').data('id'));
-           });
-           var newTagEle = createTagContainer.find('input.newTags');
-           var newTags = newTagEle.val();
-           var tagsList = {};
-           tagsList['new'] = newTags.split(',');
-           tagsList['existing'] = selectedExistingTags;
-           var visibility = createTagContainer.find('[name="visibility"]').val();
-           var visibilityCheckBox = createTagContainer.find('[type="checkbox"][name="visibility"]');
-           if(visibilityCheckBox.is(':checked')){
-               visibility = visibilityCheckBox.val();
-           }
-           self.saveTag({'tagsList':tagsList,'newTagType': visibility}).then(function(data){
-               selectedTagElement.remove();
-               newTagEle.select2('val','');
-           });
-       });
-       
-       tagContainer.find('.cancelLink').on('click', function(e){
-           tagContainer.find('.dropdown-toggle').dropdown('toggle');
-       });
-       
-       app.event.on('post.MassTag.save',function(e, modalContainerClone, data){
-            var moreTagCount = parseInt(data.moreTagCount);
-            if(moreTagCount === 0) {
-                tagContainer.find('.tagMoreCount').closest('.moreTags').addClass('hide');
-            } else if(moreTagCount > 0){
-                tagContainer.find('.tagMoreCount').text(data.moreTagCount).closest('.moreTags').removeClass('hide');
-            }
-            jQuery('.showAllTagContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html());
-            jQuery('.viewAllTagsContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html());
-            jQuery('.showAllTagContainer').find('.currentTagMenu').html(modalContainerClone.find('.currentTagMenu').html());
-            var tagInstance = self.getComponentInstance('Vtiger_Tag_Js');
-            tagInstance.addTagsToShowAllTagContianer(data.tags);
-            self.removeDeletedTagsFromSummaryTag(data.deleted);
-            self.addTagsToSummaryTag(data.tags);
-       })
-       
-       tagContainer.find('.moreTags').on('click',function(e){
-           //self.showAllTags(tagContainer);
-           app.event.trigger('Request.AllTag.show',tagContainer, {'record' : self.getRecordId()});
-       });
-       
-       tagContainer.on('click', '.deleteTag', function(e){
-           var tag = jQuery(e.currentTarget).closest('.tag');
-           self.deleteTag({'tag_id':tag.data('id')}).then(function(){
-               var summaryTagContainer = jQuery('.detailTagList');
-               var showAllTagContainer = jQuery('.showAllTagContainer');
-               var currentTagHolder = showAllTagContainer.find('.currentTag');
-               var summaryLastTag = summaryTagContainer.find('.tag').filter(':last');
-               var nextTag = currentTagHolder.find('[data-id="'+ summaryLastTag.data('id') +'"]').next();
-               
-               summaryTagContainer.find('.moreTags').before(nextTag.clone(true));
-               tag.remove();
-               
-               self.postTagDeleteActions(tag.clone(true));
-               if(summaryTagContainer.find('.tag').length == 0){
-                   summaryTagContainer.closest('.tag-contents').addClass('hide');
-               }
-           })
-       });
-       
-       jQuery('#addTagTriggerer').on('click', function(e){
-           app.event.trigger('Request.MassTag.show',tagContainer, {'record' : self.getRecordId()});
-       });
-    },
-    
-    /**
+	},
+
+	registerStarToggle : function() {
+		var self = this;
+		jQuery('#starToggle').on('click',function(e){
+			var element = jQuery(e.currentTarget);
+			if(element.hasClass('processing')) return;
+			element.addClass('processing');
+			var record = self.getRecordId();
+			var params = {};
+			params.module = app.getModuleName();
+			params.action = 'SaveAjax';
+			params.record = record;
+			if(element.hasClass('active')) {
+				params.starred = 0;
+			}else {
+				params.starred = 1;
+			}
+
+			element.toggleClass('active');
+
+
+			app.request.post({data:params}).then(function(err,data){
+				element.removeClass('processing');
+			})
+	  });
+	},
+
+	saveTag : function(callerParams) {
+		var self = this;
+		var aDeferred = jQuery.Deferred();
+		var params = {
+			'module'	: app.getModuleName(),
+			'action'	: 'TagCloud',
+			'mode'		: 'saveTags',
+			'record'	: this.getRecordId()
+
+		};
+		var params = jQuery.extend(params, callerParams);
+		app.request.post({'data': params}).then(
+			function(error, data) {
+				if(error == null) {
+					var tagContainer = jQuery('.tagContainer');
+					var tagInstance = self.getComponentInstance('Vtiger_Tag_Js');
+					tagInstance.addTagsToShowAllTagContianer(data.tags);
+					self.addTagsToSummaryTag(data.tags);
+					if(parseInt(data.moreTagCount) > 0) {
+						tagContainer.find('.tagMoreCount').text(data.moreTagCount).closest('.moreTags').removeClass('hide');
+					}
+					aDeferred.resolve(data);
+				}else{
+					aDeferred.reject(data);
+				}
+			}
+		);
+		return aDeferred.promise();
+	},
+
+	deleteTag : function(callerParams) {
+		var aDeferred = jQuery.Deferred();
+
+		var params = {
+			'module' : app.getModuleName(),
+			'action' : 'TagCloud',
+			'mode' : 'delete',
+			'record' : this.getRecordId()
+		}
+
+		var params = jQuery.extend(params, callerParams);
+		app.request.post({'data': params}).then(
+			function(error, data) {
+				if(error == null) {
+					aDeferred.resolve(data);
+				}else{
+					aDeferred.reject(data);
+				}
+			}
+		);
+
+		return aDeferred.promise();
+	},
+
+	constructTagElement : function (params) {
+		var tagElement = jQuery(jQuery('#dummyTagElement').html()).clone(true);
+		tagElement.attr('data-id',params.id).attr('data-type',params.type);
+		tagElement.find('.tagLabel').html(params.name);
+		return tagElement
+	},
+
+	showAllTags : function(container) {
+		var self = this;
+		var showTagModal = container.find('.showAllTagContainer').clone(true);
+		app.helper.showModal(showTagModal.find('.modal-dialog'),{'cb' : function(modalContainer){
+
+				var registerShowAllTagEvents = function(modalContainer) {
+					var currentTagsSelected = new Array();
+					var currentTagHolder = modalContainer.find('.currentTag');
+
+					modalContainer.find('.dropdown-menu').on('click',function(e){
+						e.stopPropagation();
+					});
+
+					modalContainer.find('.currentTagMenu > li > a ').on('click', function(e){
+						var element = jQuery(e.currentTarget);
+						var selectedTag = jQuery(element.html());
+						currentTagsSelected.push(selectedTag.data('id'));
+						element.remove();
+						currentTagHolder.append(selectedTag);
+					});
+
+					app.helper.showVerticalScroll(currentTagHolder);
+
+					modalContainer.find('.currentTagSelector').instaFilta({
+						targets : '.currentTagMenu > li',
+						sections : '.currentTagMenu',
+						scope : '.detailShowAllModal', 
+						hideEmptySections : true,
+						beginsWith : false, 
+						caseSensitive : false, 
+						typeDelay : 0
+					 });
+
+					var tagInputEle = modalContainer.find('input[name="createNewTag"]');
+					var params = {tags : [], tokenSeparators: [","]};
+					vtUtils.showSelect2ElementView(tagInputEle, params);
+
+					var form = modalContainer.find('form');
+					form.on('submit',function(e){
+						e.preventDefault();
+						var modalContainerClone = modalContainer.clone(true);
+						app.helper.hideModal();
+						var saveParams = {};
+						var saveTagList = {};
+						saveTagList['existing'] = currentTagsSelected;
+						saveTagList['new'] = tagInputEle.val().split(',')
+						saveParams['tagsList'] = saveTagList;
+
+						var formData = form.serializeFormData();
+						saveParams['newTagType'] = formData['visibility'];
+						self.saveTag(saveParams).then(function(data){
+							jQuery('.showAllTagContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html());
+							jQuery('.showAllTagContainer').find('.currentTagMenu').html(modalContainerClone.find('.currentTagMenu').html());
+						})
+						return false;
+					})
+
+				}
+				registerShowAllTagEvents(modalContainer);
+		}});
+	},
+
+	addTagsToSummaryTag : function(tagsList) {
+		var summaryTagList = jQuery('.detailTagList');
+		var numOfTagsToShow = parseInt(summaryTagList.data('numOfTagsToShow'));
+		var numOfTagsToAppend =  numOfTagsToShow - (parseInt(summaryTagList.find('.tag').length));
+		for(var index in tagsList) {
+			if(numOfTagsToAppend <= 0) {
+				break;
+			}
+			var tagInfo = tagsList[index];
+			var tagId = tagInfo.id;
+			if(summaryTagList.find('[data-id="'+ tagId +'"]').length <= 0) {
+				var newTagEle = this.constructTagElement(tagInfo);
+				summaryTagList.find('.moreTags').before(newTagEle);
+				summaryTagList.find('.noTagsPlaceHolder').addClass('hide');
+				numOfTagsToAppend--;
+			} 
+		}
+
+		if(summaryTagList.find('.tag').length > 0){
+			summaryTagList.closest('.tag-contents').removeClass('hide');
+		}
+
+	},
+
+	removeDeletedTagsFromSummaryTag : function(deletedTags){
+		var summaryTagContainer = jQuery('.detailTagList');
+		for(var index in deletedTags) {
+			var tag = summaryTagContainer.find('.tag[data-id="'+deletedTags[index]+'"]');
+			if(tag.length > 0){
+				var showAllTagContainer = jQuery('.showAllTagContainer');
+				var currentTagHolder = showAllTagContainer.find('.currentTag');
+				var summaryLastTag = summaryTagContainer.find('.tag').filter(':last');
+				var nextTag = currentTagHolder.find('[data-id="'+ summaryLastTag.data('id') +'"]').next();
+				summaryTagContainer.find('.moreTags').before(nextTag.clone(true));
+				tag.remove();
+			}
+		}
+
+		if(summaryTagContainer.find(".tag").length <=0){
+			summaryTagContainer.find(".noTagsPlaceHolder").removeClass("hide");
+		}
+
+	},
+
+	registerTagSearch : function() {
+		jQuery('#tag-search').instaFilta({
+		  targets : '#addTagContainer .existingTag .tag-item',
+		  sections : '#addTagContainer .existingTag',
+		  hideEmptySections : true,
+		  beginsWith : false, 
+		  caseSensitive : false, 
+		  typeDelay : 0
+		});
+	},
+
+	postTagDeleteActions : function(deletedTagClone) {
+		var summaryTagContainer = jQuery('.detailTagList');
+		var tagInstance = this.getComponentInstance('Vtiger_Tag_Js');
+		var tagInfo = {
+			'id' : deletedTagClone.data('id')
+		};
+		tagInstance.removeTagsFromShowTagContainer(new Array(tagInfo));
+
+		if(summaryTagContainer.find('.tag').length <= 0 ) {
+			summaryTagContainer.find('.noTagsPlaceHolder').removeClass('hide');
+		}else{
+			var moreTagsEle = summaryTagContainer.find('.tagMoreCount');
+			if(!moreTagsEle.closest('.moreTags').hasClass('hide')) {
+				var moreTagsCount = parseInt(moreTagsEle.text());
+				moreTagsCount--;
+				moreTagsEle.text(moreTagsCount);
+				if(moreTagsCount <=0 ){
+					moreTagsEle.closest('.moreTags').addClass('hide');
+				} 
+			}
+		}
+	},
+
+
+	registerTagEvents : function() {
+		var self = this;
+		var tagContainer = jQuery('.tagContainer');
+
+		tagContainer.find('#addTagContainer .dropdown-menu').on('click',function(e){
+			e.stopPropagation();
+		});
+		var tagInputEle = tagContainer.find('.newTags');
+		var params = {tags : [], tokenSeparators: [","]};
+		vtUtils.showSelect2ElementView(tagInputEle, params);
+
+		var existinTagContainer = tagContainer.find('.existingTag');
+		app.helper.showVerticalScroll(existinTagContainer);
+
+		this.registerTagSearch();
+
+		jQuery('#saveTag').on('click', function(e){
+			tagContainer.find('.dropdown-toggle').dropdown('toggle');
+			var element = jQuery(e.currentTarget);
+			var createTagContainer = element.closest('.createTagContainer');
+			var existingTagContainer = createTagContainer.find('.existingTag');
+			var selectedExistingTags = new Array();
+			var selectedTagElement = existingTagContainer.find('.tagSelector').filter(':checked').closest('li.tag-item');
+			selectedTagElement.each(function(index, domEle){
+				var ele = jQuery(domEle);
+				selectedExistingTags.push(ele.find('.tag').data('id'));
+			});
+			var newTagEle = createTagContainer.find('input.newTags');
+			var newTags = newTagEle.val();
+			var tagsList = {};
+			tagsList['new'] = newTags.split(',');
+			tagsList['existing'] = selectedExistingTags;
+			var visibility = createTagContainer.find('[name="visibility"]').val();
+			var visibilityCheckBox = createTagContainer.find('[type="checkbox"][name="visibility"]');
+			if(visibilityCheckBox.is(':checked')){
+				visibility = visibilityCheckBox.val();
+			}
+			self.saveTag({'tagsList':tagsList,'newTagType': visibility}).then(function(data){
+				selectedTagElement.remove();
+				newTagEle.select2('val','');
+			});
+		});
+
+		tagContainer.find('.cancelLink').on('click', function(e){
+			tagContainer.find('.dropdown-toggle').dropdown('toggle');
+		});
+
+		app.event.on('post.MassTag.save',function(e, modalContainerClone, data){
+			 var moreTagCount = parseInt(data.moreTagCount);
+			 if(moreTagCount === 0) {
+				 tagContainer.find('.tagMoreCount').closest('.moreTags').addClass('hide');
+			 } else if(moreTagCount > 0){
+				 tagContainer.find('.tagMoreCount').text(data.moreTagCount).closest('.moreTags').removeClass('hide');
+			 }
+			 jQuery('.showAllTagContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html());
+			 jQuery('.viewAllTagsContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html());
+			 jQuery('.showAllTagContainer').find('.currentTagMenu').html(modalContainerClone.find('.currentTagMenu').html());
+			 var tagInstance = self.getComponentInstance('Vtiger_Tag_Js');
+			 tagInstance.addTagsToShowAllTagContianer(data.tags);
+			 self.removeDeletedTagsFromSummaryTag(data.deleted);
+			 self.addTagsToSummaryTag(data.tags);
+		})
+
+		tagContainer.find('.moreTags').on('click',function(e){
+			//self.showAllTags(tagContainer);
+			app.event.trigger('Request.AllTag.show',tagContainer, {'record' : self.getRecordId()});
+		});
+
+		tagContainer.on('click', '.deleteTag', function(e){
+			var tag = jQuery(e.currentTarget).closest('.tag');
+			self.deleteTag({'tag_id':tag.data('id')}).then(function(){
+				var summaryTagContainer = jQuery('.detailTagList');
+				var showAllTagContainer = jQuery('.showAllTagContainer');
+				var currentTagHolder = showAllTagContainer.find('.currentTag');
+				var summaryLastTag = summaryTagContainer.find('.tag').filter(':last');
+				var nextTag = currentTagHolder.find('[data-id="'+ summaryLastTag.data('id') +'"]').next();
+
+				summaryTagContainer.find('.moreTags').before(nextTag.clone(true));
+				tag.remove();
+
+				self.postTagDeleteActions(tag.clone(true));
+				if(summaryTagContainer.find('.tag').length == 0){
+					summaryTagContainer.closest('.tag-contents').addClass('hide');
+				}
+			})
+		});
+
+		jQuery('#addTagTriggerer').on('click', function(e){
+			app.event.trigger('Request.MassTag.show',tagContainer, {'record' : self.getRecordId()});
+		});
+	},
+
+	/**
 	 * Function to register event for related list row click
 	 */
 	registerRelatedRowClickEvent: function() {
-        var detailContentsHolder = this.getContentHolder();
-        detailContentsHolder.on('click','.relatedListEntryValues a',function(e){
-            e.preventDefault();
-        });
+		var detailContentsHolder = this.getContentHolder();
+		detailContentsHolder.on('click','.relatedListEntryValues a',function(e){
+			e.preventDefault();
+		});
 		detailContentsHolder.on('click','.listViewEntries',function(e){
-                var selection = window.getSelection().toString();
- 	        if(selection.length == 0) { 
-                var targetElement = jQuery(e.target, jQuery(e.currentTarget));
-                if(targetElement.hasClass('js-reference-display-value')) return;
+				var selection = window.getSelection().toString();
+			if(selection.length == 0) { 
+				var targetElement = jQuery(e.target, jQuery(e.currentTarget));
+				if(targetElement.hasClass('js-reference-display-value')) return;
 				if(targetElement.is('td:first-child') && (targetElement.children('input[type="checkbox"]').length > 0)) return;
 				if(jQuery(e.target).is('input[type="checkbox"]')) return;
-                    var elem = jQuery(e.currentTarget);
-                    var recordUrl = elem.data('recordurl');
+					var elem = jQuery(e.currentTarget);
+					var recordUrl = elem.data('recordurl');
 				if(typeof recordUrl != "undefined"){
-                        var params = app.convertUrlToDataParams(recordUrl);
-                        //Display Mode to show details in overlay
-                        params['mode'] = 'showDetailViewByMode';
-                        params['requestMode'] = 'full';
-                        params['displayMode'] = 'overlay';
-                        var parentRecordId = app.getRecordId();
-                        app.helper.showProgress();
-                        app.request.get({data: params}).then(function(err, response) {
-                            app.helper.hideProgress();
+						var params = app.convertUrlToDataParams(recordUrl);
+						//Display Mode to show details in overlay
+						params['mode'] = 'showDetailViewByMode';
+						params['requestMode'] = 'full';
+						params['displayMode'] = 'overlay';
+						var parentRecordId = app.getRecordId();
+						app.helper.showProgress();
+						app.request.get({data: params}).then(function(err, response) {
+							app.helper.hideProgress();
 							var overlayParams = {'backdrop' : 'static', 'keyboard' : false};
-                            app.helper.loadPageContentOverlay(response, overlayParams).then(function(container) {
-                                var detailjs = Vtiger_Detail_Js.getInstanceByModuleName(params.module);
-                                detailjs.showScroll(jQuery('.overlayDetail .modal-body'));
-                                detailjs.setModuleName(params.module);
-                                detailjs.setOverlayDetailMode(true);
-                                detailjs.setContentHolder(container.find('.overlayDetail'));
-                                detailjs.setDetailViewContainer(container.find('.overlayDetail'));
-                                detailjs.registerOverlayEditEvent();
-                                detailjs.registerBasicEvents();
-                                detailjs.registerClickEvent();
-                                detailjs.registerHeaderAjaxEditEvents(container.find('.overlayDetailHeader'));
-                                detailjs.registerEventToReloadRelatedListOnCloseOverlay(parentRecordId);
-                                container.find('form#detailView').on('submit', function(e) {
-                                    e.preventDefault();
-                            });
-                        });
-                        });
-                    }
-                    }
-        });
-    },
-    
-    registerEventToReloadRelatedListOnCloseOverlay: function(parentId) {
-        var self = this;
-        var overlayContainer = jQuery('#overlayPageContent');
-        overlayContainer.one("click", ".close", function(e) {
-            self.loadRelatedListOfParent(parentId);
-        });
-    },
-    
-    loadRelatedListOfParent: function(parentRecordId) {
-        var self = this;
-        var relatedController = self.getRelatedController();
-        relatedController.setParentId(parentRecordId);
-        if (relatedController) {
-            relatedController.loadRelatedList();
-        }
-    },
-    
-    
-    showOverlayEditView: function(recordUrl) {
-        var self = this;
-            var params = app.convertUrlToDataParams(recordUrl);
-            params['displayMode'] = 'overlay';
-        var postData = self.getDefaultParams();
-        for (var key in postData) {
-            if (postData[key]) {
-                if (key == 'relatedModule') {
-                    params['returnrelatedModuleName'] = postData[key];
-                } else {
-                    params['return' + key] = postData[key];
-                }
-                delete postData[key];
-            } else {
-                delete postData[key];
-            }
-        }
-        params['returnrecord'] = jQuery('[name="record_id"]').val();
-            app.helper.showProgress();
-        app.request.get({data: params}).then(function(err, response) {
-                app.helper.hideProgress();
-                var overlayParams = {'backdrop': 'static', 'keyboard': false};
-                app.helper.loadPageContentOverlay(response, overlayParams).then(function(container) {
-                var height = jQuery(window).height() - jQuery('.app-fixed-navbar').height() - jQuery('.overlayFooter').height() - 80;
-
-                    var scrollParams = {
-                        setHeight: height,
-                        alwaysShowScrollbar: 2,
-                        autoExpandScrollbar: true,
-                        setTop: 0,
-                            scrollInertia: 70
-                    }
-                    app.helper.showVerticalScroll(jQuery('.editViewContents'), scrollParams);
-                    self.registerOverlayEditEvents(params.module, container);
-                    self.registerRelatedRecordSave();
-                    app.event.trigger('post.overLayEditView.loaded', jQuery('.overlayEdit'));
-                });
-            });
-    },
-    registerOverlayEditEvent: function() {
-        var self = this;
-        jQuery('.editRelatedRecord').on('click', function() {
-            var editUrl = jQuery('.editRelatedRecord').val();
-            self.showOverlayEditView(editUrl);
-            });
-    },
-    
-    registerRelatedRecordEdit: function(){
-        var self = this;
-        var detailViewContainer = this.getContentHolder();
-        detailViewContainer.on('click', 'a[name="relationEdit"]', function(e) {
-            e.stopImmediatePropagation();
-            var element = jQuery(e.currentTarget);
-            var editUrl = element.data('url');
-            self.showOverlayEditView(editUrl);
-        });
-    },
-    
-    getDetails: function() {
-        return jQuery('.details');
-    },
-        
+							app.helper.loadPageContentOverlay(response, overlayParams).then(function(container) {
+								var detailjs = Vtiger_Detail_Js.getInstanceByModuleName(params.module);
+								detailjs.showScroll(jQuery('.overlayDetail .modal-body'));
+								detailjs.setModuleName(params.module);
+								detailjs.setOverlayDetailMode(true);
+								detailjs.setContentHolder(container.find('.overlayDetail'));
+								detailjs.setDetailViewContainer(container.find('.overlayDetail'));
+								detailjs.registerOverlayEditEvent();
+								detailjs.registerBasicEvents();
+								detailjs.registerClickEvent();
+								detailjs.registerHeaderAjaxEditEvents(container.find('.overlayDetailHeader'));
+								detailjs.registerEventToReloadRelatedListOnCloseOverlay(parentRecordId);
+								container.find('form#detailView').on('submit', function(e) {
+									e.preventDefault();
+							});
+						});
+						});
+					}
+					}
+		});
+	},
+
+	registerEventToReloadRelatedListOnCloseOverlay: function(parentId) {
+		var self = this;
+		var overlayContainer = jQuery('#overlayPageContent');
+		overlayContainer.one("click", ".close", function(e) {
+			self.loadRelatedListOfParent(parentId);
+		});
+	},
+
+	loadRelatedListOfParent: function(parentRecordId) {
+		var self = this;
+		var relatedController = self.getRelatedController();
+		relatedController.setParentId(parentRecordId);
+		if (relatedController) {
+			relatedController.loadRelatedList();
+		}
+	},
+
+
+	showOverlayEditView: function(recordUrl) {
+		var self = this;
+			var params = app.convertUrlToDataParams(recordUrl);
+			params['displayMode'] = 'overlay';
+		var postData = self.getDefaultParams();
+		for (var key in postData) {
+			if (postData[key]) {
+				if (key == 'relatedModule') {
+					params['returnrelatedModuleName'] = postData[key];
+				} else {
+					params['return' + key] = postData[key];
+				}
+				delete postData[key];
+			} else {
+				delete postData[key];
+			}
+		}
+		params['returnrecord'] = jQuery('[name="record_id"]').val();
+			app.helper.showProgress();
+		app.request.get({data: params}).then(function(err, response) {
+				app.helper.hideProgress();
+				var overlayParams = {'backdrop': 'static', 'keyboard': false};
+				app.helper.loadPageContentOverlay(response, overlayParams).then(function(container) {
+				var height = jQuery(window).height() - jQuery('.app-fixed-navbar').height() - jQuery('.overlayFooter').height() - 80;
+
+					var scrollParams = {
+						setHeight: height,
+						alwaysShowScrollbar: 2,
+						autoExpandScrollbar: true,
+						setTop: 0,
+							scrollInertia: 70
+					}
+					app.helper.showVerticalScroll(jQuery('.editViewContents'), scrollParams);
+					self.registerOverlayEditEvents(params.module, container);
+					self.registerRelatedRecordSave();
+					app.event.trigger('post.overLayEditView.loaded', jQuery('.overlayEdit'));
+				});
+			});
+	},
+	registerOverlayEditEvent: function() {
+		var self = this;
+		jQuery('.editRelatedRecord').on('click', function() {
+			var editUrl = jQuery('.editRelatedRecord').val();
+			self.showOverlayEditView(editUrl);
+			});
+	},
+
+	registerRelatedRecordEdit: function(){
+		var self = this;
+		var detailViewContainer = this.getContentHolder();
+		detailViewContainer.on('click', 'a[name="relationEdit"]', function(e) {
+			e.stopImmediatePropagation();
+			var element = jQuery(e.currentTarget);
+			var editUrl = element.data('url');
+			self.showOverlayEditView(editUrl);
+		});
+	},
+
+	getDetails: function() {
+		return jQuery('.details');
+	},
+
 	registerClickEvent: function() {
-            this.getContentHolder().on('click', '.inventoryLineItemDetails', function(e) {
-                jQuery('.inventoryLineItemDetails').popover({html: true}).show();
-            });
-        },
-    showScroll: function(container) {
-        var params = {
-            setHeight: container.height,
-            alwaysShowScrollbar: 2,
-            autoExpandScrollbar: true,
-            setTop: 0,
-            scrollInertia: 70,
-            mouseWheel: {preventDefault: true}
-        };
-        app.helper.showVerticalScroll(container, params);
-    },
-
-    recordImageRandomColors: function(){
-        var color=  jQuery('.recordImage').css('background-color');
-        if(color === "rgba(0, 0, 0, 0)"){
-            jQuery('.recordImage').css('background-color', app.helper.getRandomColor());
-        }
-    },
-    
-    getFieldValue : function(fieldName,sourceElement){
-        var form = this.getForm();
-        var fieldBasicData = form.find('.fieldBasicData').filter('[data-name="'+fieldName+'"]');
-        return fieldBasicData.attr('data-value');
-    },
-    
-    registerQtipevent: function (tabItem) {
-        if(typeof tabItem == 'undefined'){
-        var container = jQuery('.related-tabs.row');
-        var scrollContent = container.find('.dropdown #relatedmenuList');
-        app.helper.showVerticalScroll(scrollContent,{autoHideScrollbar: true});
-            tabItem = container.find('.tab-item, .more-tab');
-        }
-        var title;
-        jQuery(tabItem).each(function () {
-            title = jQuery(this).attr('title');
-            jQuery(this).qtip({
-                content: title,
-                hide: {
-                    event:'click mouseleave',
-                },
-                position: {
-                    my: 'bottom center',
-                    at: 'top left',
-                    adjust: {
-                        x: 30,
-                        y: 10
-                    }
-                },
-                style: {
-			        classes: 'qtip-dark'
-			    }
-            });
-        });
-    },
-	
-    
-    registerEvents : function() {
-        this._super();
-        this.registerEventsForRelatedList();
-        var detailContentsHolder = this.getContentHolder();
-        var self = this;
-        this.registerSendSmsSubmitEvent();
-        detailContentsHolder.on('click','.viewThread', function(e){
+			this.getContentHolder().on('click', '.inventoryLineItemDetails', function(e) {
+				jQuery('.inventoryLineItemDetails').popover({html: true}).show();
+			});
+		},
+	showScroll: function(container) {
+		var params = {
+			setHeight: container.height,
+			alwaysShowScrollbar: 2,
+			autoExpandScrollbar: true,
+			setTop: 0,
+			scrollInertia: 70,
+			mouseWheel: {preventDefault: true}
+		};
+		app.helper.showVerticalScroll(container, params);
+	},
+
+	recordImageRandomColors: function(){
+		var color=  jQuery('.recordImage').css('background-color');
+		if(color === "rgba(0, 0, 0, 0)"){
+			jQuery('.recordImage').css('background-color', app.helper.getRandomColor());
+		}
+	},
+
+	getFieldValue : function(fieldName,sourceElement){
+		var form = this.getForm();
+		var fieldBasicData = form.find('.fieldBasicData').filter('[data-name="'+fieldName+'"]');
+		return fieldBasicData.attr('data-value');
+	},
+
+	registerQtipevent: function (tabItem) {
+		if(typeof tabItem == 'undefined'){
+		var container = jQuery('.related-tabs.row');
+		var scrollContent = container.find('.dropdown #relatedmenuList');
+		app.helper.showVerticalScroll(scrollContent,{autoHideScrollbar: true});
+			tabItem = container.find('.tab-item, .more-tab');
+		}
+		var title;
+		jQuery(tabItem).each(function () {
+			title = jQuery(this).attr('title');
+			jQuery(this).qtip({
+				content: title,
+				hide: {
+					event:'click mouseleave',
+				},
+				position: {
+					my: 'bottom center',
+					at: 'top left',
+					adjust: {
+						x: 30,
+						y: 10
+					}
+				},
+				style: {
+					classes: 'qtip-dark'
+				}
+			});
+		});
+	},
+
+
+	registerEvents : function() {
+		this._super();
+		this.registerEventsForRelatedList();
+		var detailContentsHolder = this.getContentHolder();
+		var self = this;
+		this.registerSendSmsSubmitEvent();
+		detailContentsHolder.on('click','.viewThread', function(e){
 			var currentTarget = jQuery(e.currentTarget);
 			var currentTargetParent = currentTarget.parent();
 			var commentActionsBlock = currentTarget.closest('.commentActions');
@@ -2723,7 +2723,7 @@ Vtiger.Class("Vtiger_Detail_Js",{
 				currentTargetParent.hide();
 			});
 		});
-        detailContentsHolder.on('click','.hideThread', function(e){
+		detailContentsHolder.on('click','.hideThread', function(e){
 			var currentTarget = jQuery(e.currentTarget);
 			var currentTargetParent = currentTarget.parent();
 			var commentActionsBlock = currentTarget.closest('.commentActions');
@@ -2732,138 +2732,140 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			currentTargetParent.hide();
 			commentActionsBlock.find('.viewThreadBlock').show();
 		});
-        detailContentsHolder.on('click','.detailViewThread',function(e){
+		detailContentsHolder.on('click','.detailViewThread',function(e){
 			var recentCommentsTab = self.getTabByLabel(self.detailViewRecentCommentsTabLabel);
 			var commentId = jQuery(e.currentTarget).closest('.singleComment').find('.commentInfoHeader').data('commentid');
 			recentCommentsTab.trigger('click',{'commentid':commentId});
 		});
-        this.registerStarToggle();
-        this.registerTagEvents();
-        app.event.on("post.mail.sent",function(event,data){
-            var resultEle = jQuery(data);
-            var success = resultEle.find('.mailSentSuccessfully');
-            if(success.length > 0){
-                var relatedLoad = success.data("relatedload");
-                if(relatedLoad == 1){
-                    var pageNumber = jQuery('[name="currentPageNum"]').val();
-                    window.app.controller().loadRelatedListRecords({page: pageNumber});
-                }
-            }
-        });
-        detailContentsHolder.on('click','.moreRecentUpdates', function() {
-            app.helper.showProgress();
+		this.registerStarToggle();
+		this.registerTagEvents();
+		app.event.on("post.mail.sent",function(event,data){
+			var resultEle = jQuery(data);
+			var success = resultEle.find('.mailSentSuccessfully');
+			if(success.length > 0){
+				var relatedLoad = success.data("relatedload");
+				if(relatedLoad == 1){
+					var pageNumber = jQuery('[name="currentPageNum"]').val();
+					window.app.controller().loadRelatedListRecords({page: pageNumber});
+				} else {
+					app.helper.showModal(data);
+				}
+			}
+		});
+		detailContentsHolder.on('click','.moreRecentUpdates', function() {
+			app.helper.showProgress();
 			var currentPage = jQuery("#updatesCurrentPage").val();
 			var recordId = jQuery("#recordId").val();
 			var nextPage = parseInt(currentPage) + 1;
 			var url = "index.php?module=" + app.getModuleName() + "&view=Detail&record=" + recordId + "&mode=showRecentActivities&page=" 
-                      + nextPage + "&limit=5&tab_label=LBL_UPDATES";
-            var postParams  = app.convertUrlToDataParams(url);
-           
-            app.request.post({data:postParams}).then(function(err,data){
-                jQuery("#updatesCurrentPage").remove();
-                jQuery("#moreLink").remove();
-                jQuery("#more_button").remove();
-                data = jQuery(data).removeClass("recentActivitiesContainer");
-                jQuery('#updates').append(data);
-                app.helper.hideProgress();
-            });
-          
-        });
-        this.updateRelatedRecordsCount();
-        //RegisterBasicEvents for Related-List overlay's
-        this.registerBasicEvents();
-        this.registerHeaderAjaxEditEvents();
-        detailContentsHolder.on('click','.detailViewSaveComment', function(e){
-            var element = jQuery(e.currentTarget);
-            if(!element.is(":disabled")) {
-                var dataObj = self.saveComment(e);
-                dataObj.then(function(){
-                    var commentsContainer = detailContentsHolder.find("[data-name='ModComments']");
-                    self.loadWidget(commentsContainer).then(function() {
-                        element.removeAttr('disabled');
+					  + nextPage + "&limit=5&tab_label=LBL_UPDATES";
+			var postParams  = app.convertUrlToDataParams(url);
+
+			app.request.post({data:postParams}).then(function(err,data){
+				jQuery("#updatesCurrentPage").remove();
+				jQuery("#moreLink").remove();
+				jQuery("#more_button").remove();
+				data = jQuery(data).removeClass("recentActivitiesContainer");
+				jQuery('#updates').append(data);
+				app.helper.hideProgress();
+			});
+
+		});
+		this.updateRelatedRecordsCount();
+		//RegisterBasicEvents for Related-List overlay's
+		this.registerBasicEvents();
+		this.registerHeaderAjaxEditEvents();
+		detailContentsHolder.on('click','.detailViewSaveComment', function(e){
+			var element = jQuery(e.currentTarget);
+			if(!element.is(":disabled")) {
+				var dataObj = self.saveComment(e);
+				dataObj.then(function(){
+					var commentsContainer = detailContentsHolder.find("[data-name='ModComments']");
+					self.loadWidget(commentsContainer).then(function() {
+						element.removeAttr('disabled');
 						app.event.trigger('post.summarywidget.load',commentsContainer);
 						var indexInstance = Vtiger_Index_Js.getInstance();
 						indexInstance.registerMultiUpload();
-                    });
-                });
-            }
-		});
-
-        detailContentsHolder.on('click','.saveComment', function(e){
-            var element = jQuery(e.currentTarget);
-            if(!element.is(":disabled")) {
-                var currentTarget = jQuery(e.currentTarget);
-                var mode = currentTarget.data('mode');
-                var dataObj = self.saveComment(e);
-                dataObj.then(function(data){
-                    var closestAddCommentBlock = currentTarget.closest('.addCommentBlock');
-                    var commentTextAreaElement = closestAddCommentBlock.find('.commentcontent');
-                    var commentInfoBlock = currentTarget.closest('.singleComment');
-                    commentTextAreaElement.val('');
-                    closestAddCommentBlock.find('#is_private').removeAttr('checked');
-                    if(mode == "add"){
-                        var commentId = data['id'];
-                        var commentHtml = self.getCommentUI(commentId);
-                        commentHtml.then(function(data){
-                            var html;
-                            if(jQuery(data).hasClass('privateComment')) {
-                                html = '<ul class="unstyled"><li class="commentDetails" style="background: #fff9ea;">'+data+'</li></ul>';
-                            } else {
-                                html = '<ul class="unstyled"><li class="commentDetails">'+data+'</li></ul>';
-                            }
-                            var commentBlock = closestAddCommentBlock.closest('.commentDetails');
-                            var detailContentsHolder = self.getContentHolder();
-                            var noCommentsMsgContainer = jQuery('.noCommentsMsgContainer',detailContentsHolder);
-                            noCommentsMsgContainer.remove();
-                            if(commentBlock.length > 0){
-                                closestAddCommentBlock.remove();
-                                var childComments = commentBlock.find('ul');
-                                if(childComments.length <= 0){
-                                    var currentChildCommentsCount = commentInfoBlock.find('.viewThreadBlock').data('childCommentsCount');
-                                    var newChildCommentCount = currentChildCommentsCount + 1;
-                                    commentInfoBlock.find('.childCommentsCount').text(newChildCommentCount);
-                                    var parentCommentId = commentInfoBlock.find('.commentInfoHeader').data('commentid');
-                                    self.getChildComments(parentCommentId).then(function(responsedata){
-                                        jQuery(responsedata).appendTo(commentBlock);
-                                        commentInfoBlock.find('.viewThreadBlock').hide();
-                                        commentInfoBlock.find('.hideThreadBlock').show();
-                                    });
-                                }else {
-                                    jQuery(html).appendTo(commentBlock);
-                                }
-                            } else {
-                                jQuery(html).prependTo(closestAddCommentBlock.closest('.commentContainer').find('.commentsList'));
-                                commentTextAreaElement.css({height : '71px'});
-                            }
-                            commentInfoBlock.find('.commentActionsContainer').show();
-                        });
-                    }else if(mode == "edit"){
-                        var modifiedTime = commentInfoBlock.find('.commentModifiedTime');
-                        var commentInfoContent = commentInfoBlock.find('.commentInfoContent');
-                        var commentEditStatus = commentInfoBlock.find('[name="editStatus"]');
-                        var commentReason = commentInfoBlock.find('[name="editReason"]');
-                        commentInfoContent.html(data.commentcontent);
-                        commentReason.html(data.reasontoedit);
-                        modifiedTime.text(data.modifiedtime);
-                        modifiedTime.attr('title',data.modifiedtimetitle)
-                        if(commentEditStatus.hasClass('hide')){
-                            commentEditStatus.removeClass('hide');
-                        }
+					});
+				});
+			}
+		});
+
+		detailContentsHolder.on('click','.saveComment', function(e){
+			var element = jQuery(e.currentTarget);
+			if(!element.is(":disabled")) {
+				var currentTarget = jQuery(e.currentTarget);
+				var mode = currentTarget.data('mode');
+				var dataObj = self.saveComment(e);
+				dataObj.then(function(data){
+					var closestAddCommentBlock = currentTarget.closest('.addCommentBlock');
+					var commentTextAreaElement = closestAddCommentBlock.find('.commentcontent');
+					var commentInfoBlock = currentTarget.closest('.singleComment');
+					commentTextAreaElement.val('');
+					closestAddCommentBlock.find('#is_private').removeAttr('checked');
+					if(mode == "add"){
+						var commentId = data['id'];
+						var commentHtml = self.getCommentUI(commentId);
+						commentHtml.then(function(data){
+							var html;
+							if(jQuery(data).hasClass('privateComment')) {
+								html = '<ul class="unstyled"><li class="commentDetails" style="background: #fff9ea;">'+data+'</li></ul>';
+							} else {
+								html = '<ul class="unstyled"><li class="commentDetails">'+data+'</li></ul>';
+							}
+							var commentBlock = closestAddCommentBlock.closest('.commentDetails');
+							var detailContentsHolder = self.getContentHolder();
+							var noCommentsMsgContainer = jQuery('.noCommentsMsgContainer',detailContentsHolder);
+							noCommentsMsgContainer.remove();
+							if(commentBlock.length > 0){
+								closestAddCommentBlock.remove();
+								var childComments = commentBlock.find('ul');
+								if(childComments.length <= 0){
+									var currentChildCommentsCount = commentInfoBlock.find('.viewThreadBlock').data('childCommentsCount');
+									var newChildCommentCount = currentChildCommentsCount + 1;
+									commentInfoBlock.find('.childCommentsCount').text(newChildCommentCount);
+									var parentCommentId = commentInfoBlock.find('.commentInfoHeader').data('commentid');
+									self.getChildComments(parentCommentId).then(function(responsedata){
+										jQuery(responsedata).appendTo(commentBlock);
+										commentInfoBlock.find('.viewThreadBlock').hide();
+										commentInfoBlock.find('.hideThreadBlock').show();
+									});
+								}else {
+									jQuery(html).appendTo(commentBlock);
+								}
+							} else {
+								jQuery(html).prependTo(closestAddCommentBlock.closest('.commentContainer').find('.commentsList'));
+								commentTextAreaElement.css({height : '71px'});
+							}
+							commentInfoBlock.find('.commentActionsContainer').show();
+						});
+					}else if(mode == "edit"){
+						var modifiedTime = commentInfoBlock.find('.commentModifiedTime');
+						var commentInfoContent = commentInfoBlock.find('.commentInfoContent');
+						var commentEditStatus = commentInfoBlock.find('[name="editStatus"]');
+						var commentReason = commentInfoBlock.find('[name="editReason"]');
+						commentInfoContent.html(data.commentcontent);
+						commentReason.html(data.reasontoedit);
+						modifiedTime.text(data.modifiedtime);
+						modifiedTime.attr('title',data.modifiedtimetitle)
+						if(commentEditStatus.hasClass('hide')){
+							commentEditStatus.removeClass('hide');
+						}
 						if(data.reasontoedit != ""){
 							commentInfoBlock.find('.editReason').removeClass('hide')
 						}
-                        commentInfoContent.show();
-                        commentInfoBlock.find('.commentActionsContainer').show();
-                        closestAddCommentBlock.remove();
-                    }
-                    element.removeAttr('disabled');
+						commentInfoContent.show();
+						commentInfoBlock.find('.commentActionsContainer').show();
+						closestAddCommentBlock.remove();
+					}
+					element.removeAttr('disabled');
 					var indexInstance = Vtiger_Index_Js.getInstance();
 					indexInstance.registerMultiUpload();
-                });
-            }
+				});
+			}
 		});
-        
-        detailContentsHolder.on('click','.editComment', function(e){
+
+		detailContentsHolder.on('click','.editComment', function(e){
 			self.removeCommentBlockIfExists();
 			var currentTarget = jQuery(e.currentTarget);
 			var commentInfoBlock = currentTarget.closest('.singleComment');
@@ -2872,94 +2874,94 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			var editCommentBlock = self.getEditCommentBlock();
 			editCommentBlock.find('.commentcontent').text(commentInfoContent.text());
 			editCommentBlock.find('[name="reasonToEdit"]').val(commentReason.text());
-            editCommentBlock.find('[name="is_private"]').val(commentInfoBlock.find('[name="is_private"]').val());
+			editCommentBlock.find('[name="is_private"]').val(commentInfoBlock.find('[name="is_private"]').val());
 			/*commentInfoContent.hide();
 			commentInfoBlock.find('.commentActionsContainer').hide();*/
 			editCommentBlock.appendTo(commentInfoBlock).show();
 		});
-        
-        detailContentsHolder.on('click','.closeCommentBlock', function(e){
+
+		detailContentsHolder.on('click','.closeCommentBlock', function(e){
 			var currentTarget = jQuery(e.currentTarget);
 			var commentInfoBlock = currentTarget.closest('.singleComment');
 			commentInfoBlock.find('.commentActionsContainer').show();
 			commentInfoBlock.find('.commentInfoContent').show();
 			self.removeCommentBlockIfExists();
 		});
-        
-        detailContentsHolder.on('click','.replyComment', function(e){
+
+		detailContentsHolder.on('click','.replyComment', function(e){
 			self.removeCommentBlockIfExists();
 			var currentTarget = jQuery(e.currentTarget);
 			var commentInfoBlock = currentTarget.closest('.singleComment');
-            var message = commentInfoBlock.find('.commentInfoContent').text();
-            var commentInfoHeader = commentInfoBlock.find('.commentInfoHeader');
-            var commentId = commentInfoHeader.data('commentid');
+			var message = commentInfoBlock.find('.commentInfoContent').text();
+			var commentInfoHeader = commentInfoBlock.find('.commentInfoHeader');
+			var commentId = commentInfoHeader.data('commentid');
 			var addCommentBlock = self.getCommentBlock();
 			/*commentInfoBlock.find('.commentActionsContainer').hide();*/
 			addCommentBlock.appendTo(commentInfoBlock).show();
-            
-            var params = {
-                'module': app.getModuleName(),
-                'action': 'MentionedUsers',
-                'message':message,
-                'crmid':commentId
-            };
-            
-            app.request.post({data: params}).then(
-                function(err, data) {
-                    if (data) {
-                        commentArea = commentInfoBlock.find('.commentcontent');
-                        commentArea.val(data.usersString);
-                        commentArea.focus();
-                        var strLength= commentArea.val().length * 2;
-                        commentArea[0].setSelectionRange(strLength, strLength);
-                    }
-                });
-		});
-        
-        detailContentsHolder.on('click','.moreRecentComments', function(){
+
+			var params = {
+				'module': app.getModuleName(),
+				'action': 'MentionedUsers',
+				'message':message,
+				'crmid':commentId
+			};
+
+			app.request.post({data: params}).then(
+				function(err, data) {
+					if (data) {
+						commentArea = commentInfoBlock.find('.commentcontent');
+						commentArea.val(data.usersString);
+						commentArea.focus();
+						var strLength= commentArea.val().length * 2;
+						commentArea[0].setSelectionRange(strLength, strLength);
+					}
+				});
+		});
+
+		detailContentsHolder.on('click','.moreRecentComments', function(){
 			var recentCommentsTab = self.getTabByLabel(self.detailViewRecentCommentsTabLabel);
 			recentCommentsTab.trigger('click');
 		});
-        
-        detailContentsHolder.on('click','.moreRecentActivities', function(){
+
+		detailContentsHolder.on('click','.moreRecentActivities', function(){
 			var recentActivitiesTab = self.getTabByLabel(self.detailViewRecentActivitiesTabLabel);
 			recentActivitiesTab.trigger('click');
 		});
-        
-        detailContentsHolder.on('click', '.moreRecentDocuments', function () {
-            var recentDocumentsTab = self.getTabByLabel(self.detailViewRecentDocumentsLabel);
-            recentDocumentsTab.trigger('click');
-        });
 
-        app.event.on('post.summarywidget.load',function(event,widgetContainer){
-            vtUtils.applyFieldElementsView(widgetContainer);
-			
+		detailContentsHolder.on('click', '.moreRecentDocuments', function () {
+			var recentDocumentsTab = self.getTabByLabel(self.detailViewRecentDocumentsLabel);
+			recentDocumentsTab.trigger('click');
+		});
+
+		app.event.on('post.summarywidget.load',function(event,widgetContainer){
+			vtUtils.applyFieldElementsView(widgetContainer);
+
 			//For Rollup Comments
 			if(jQuery('#rollupcomments').length > 0 && widgetContainer.data('name') == 'ModComments') {
 				widgetContainer.off('switchChange.bootstrapSwitch').on('switchChange.bootstrapSwitch', '#rollupcomments', function(e){
 					app.helper.showProgress();
 					self.toggleRollupComments(e);
 				});
-				
+
 				if(jQuery('#rollupcomments').attr('rollup-status') == 1) {
 					jQuery('#rollupcomments').bootstrapSwitch('state', true, true);
 
 				}else{
 					jQuery('#rollupcomments').bootstrapSwitch('state', false, true);
 				}
-				
+
 			}
-            var vtigerInstance = Vtiger_Index_Js.getInstance();
-            vtUtils.enableTooltips();
+			var vtigerInstance = Vtiger_Index_Js.getInstance();
+			vtUtils.enableTooltips();
 			//END
-        });		
+		});		
 		//For Rollup Comments
 		if(jQuery('#rollupcomments').length > 0) {
 			detailContentsHolder.on('switchChange.bootstrapSwitch', '#rollupcomments', function(e){
 				app.helper.showProgress();
 				self.toggleRollupComments(e);
 			});
-			
+
 			if(jQuery('#rollupcomments').attr('rollup-status') == 1) {
 				jQuery('#rollupcomments').bootstrapSwitch('state', true, true);
 
@@ -2970,22 +2972,22 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		}
 		//END
 
-        this.registerRelatedRowClickEvent();
-        this.registerSummaryViewContainerEvents(this.getContentHolder());
-        
-        //prevent detail view ajax form submissions
-        jQuery('form#detailView, form#headerForm').on('submit', function(e) {
-            e.preventDefault();
-        });
-		
+		this.registerRelatedRowClickEvent();
+		this.registerSummaryViewContainerEvents(this.getContentHolder());
+
+		//prevent detail view ajax form submissions
+		jQuery('form#detailView, form#headerForm').on('submit', function(e) {
+			e.preventDefault();
+		});
+
 		if(typeof jQuery.fn.sadropdown === 'function') {
 			jQuery('.widgetContainer_documents').find('.dropdown-toggle').sadropdown({
 				relativeTo: '#detailView'
 			});
 		}
-    },
-    
-    /**
+	},
+
+	/**
 	 * Function to register event for setting up picklistdependency
 	 * for a module if exist on change of picklist value
 	 */
@@ -3005,7 +3007,7 @@ Vtiger.Class("Vtiger_Detail_Js",{
 		for(var i=0;i<sourcePicklists.length;i++){
 			sourcePickListNames += '[name="'+sourcePicklists[i]+'"],';
 		}
-        sourcePickListNames = sourcePickListNames.replace(/(^,)|(,$)/g, "");
+		sourcePickListNames = sourcePickListNames.replace(/(^,)|(,$)/g, "");
 		container.on('change', sourcePickListNames, function(e) {
 			var currentElement = jQuery(e.currentTarget);
 			var sourcePicklistname = currentElement.attr('name');
@@ -3026,17 +3028,17 @@ Vtiger.Class("Vtiger_Detail_Js",{
 				if(targetPickList.length <= 0){
 					return;
 				}
-				
+
 				//On change of SourceField value, If TargetField value is not there in mapping, make user to select the new target value also.
 				var selectedValue = targetPickList.data('value');
 				if(jQuery.inArray(selectedValue, targetPickListMap) == -1) {
 					thisInstance.targetPicklistChange = true;
 					thisInstance.targetPicklist = targetPickList.closest('td');
-                    thisInstance.sourcePicklistname = sourcePicklistname;
+					thisInstance.sourcePicklistname = sourcePicklistname;
 				} else {
 					thisInstance.targetPicklistChange = false;
 					thisInstance.targetPicklist = false;
-                    thisInstance.sourcePicklistname = false;
+					thisInstance.sourcePicklistname = false;
 				}
 			})
 		});
@@ -3062,55 +3064,55 @@ Vtiger.Class("Vtiger_Detail_Js",{
 			}
 		});
 	},
-    
-    registerHeaderAjaxEditEvents : function(contentHolder) {
-        var self = this;
-        
-        if(typeof contentHolder === 'undefined') {
-            contentHolder = jQuery('.detailview-header');
-        } 
-        
+
+	registerHeaderAjaxEditEvents : function(contentHolder) {
+		var self = this;
+
+		if(typeof contentHolder === 'undefined') {
+			contentHolder = jQuery('.detailview-header');
+		} 
+
 		contentHolder.on('click','.recordBasicInfo .fieldLabel .editAction', function(e){
 			var currentTarget = jQuery(e.currentTarget);
 			currentTarget.hide();
 			var currentContainerElement = currentTarget.closest('.headerAjaxEdit');
 			self.ajaxEditHandling(currentContainerElement);
 		});
-        
-        this.registerAjaxEditSaveEvent(contentHolder);
-        this.registerAjaxEditCancelEvent(contentHolder);
-        this.registerClearReferenceSelectionEvent(contentHolder);
-        this.registerPostAjaxSaveEvent();
-    },
-    
-    //Events common for DetailView and OverlayDetailView
-    registerBasicEvents: function(){
-        var self = this;
-        this.registerAjaxEditEvent();
-        this.registerAjaxEditSaveEvent();
-        this.registerAjaxEditCancelEvent();
-        this.recordImageRandomColors();
-        this.registerQtipevent();
-        
-        app.event.on("post.RecordList.click", function(event, data) {
-            var responseData = JSON.parse(data);
-            var idList = new Array();
-            for (var id in responseData) {
-                idList.push(id);
-            }
-            app.helper.hideModal();
-            var relatedController = self.getRelatedController();
-            if (relatedController) {
-                relatedController.addRelations(idList).then(function() {
-                    relatedController.loadRelatedList();
-                });
-            }
-        });
-        this.registerBlockAnimationEvent();
+
+		this.registerAjaxEditSaveEvent(contentHolder);
+		this.registerAjaxEditCancelEvent(contentHolder);
+		this.registerClearReferenceSelectionEvent(contentHolder);
+		this.registerPostAjaxSaveEvent();
+	},
+
+	//Events common for DetailView and OverlayDetailView
+	registerBasicEvents: function(){
+		var self = this;
+		this.registerAjaxEditEvent();
+		this.registerAjaxEditSaveEvent();
+		this.registerAjaxEditCancelEvent();
+		this.recordImageRandomColors();
+		this.registerQtipevent();
+
+		app.event.on("post.RecordList.click", function(event, data) {
+			var responseData = JSON.parse(data);
+			var idList = new Array();
+			for (var id in responseData) {
+				idList.push(id);
+			}
+			app.helper.hideModal();
+			var relatedController = self.getRelatedController();
+			if (relatedController) {
+				relatedController.addRelations(idList).then(function() {
+					relatedController.loadRelatedList();
+				});
+			}
+		});
+		this.registerBlockAnimationEvent();
 		this.registerBlockStatusCheckOnLoad();
-        this.registerClearReferenceSelectionEvent();        
-        //register event for picklist dependency setup
-        this.registerEventForPicklistDependencySetup(this.getForm());
-        vtUtils.enableTooltips();
-    },
+		this.registerClearReferenceSelectionEvent();
+		//register event for picklist dependency setup
+		this.registerEventForPicklistDependencySetup(this.getForm());
+		vtUtils.enableTooltips();
+	},
 });
diff --git a/layouts/v7/modules/Vtiger/resources/Vtiger.js b/layouts/v7/modules/Vtiger/resources/Vtiger.js
index 7e92943b8a25f388e0c641a8ffa20cc1cdd98a00..a7ca56d6d78195831aadb80f434772e0f1cd2fed 100644
--- a/layouts/v7/modules/Vtiger/resources/Vtiger.js
+++ b/layouts/v7/modules/Vtiger/resources/Vtiger.js
@@ -7,14 +7,14 @@
  * All Rights Reserved.
  *************************************************************************************/
 Vtiger.Class('Vtiger_Index_Js', {
-    files: [],
-    hideNC: true,
-	
-    getInstance : function() {
-        return new Vtiger_Index_Js();
-    },
-            
-    /**
+	files: [],
+	hideNC: true,
+
+	getInstance : function() {
+		return new Vtiger_Index_Js();
+	},
+
+	/**
 	 * Function to show the content of a file in an iframe
 	 * @param {type} e
 	 * @param {type} recordId
@@ -31,12 +31,12 @@ Vtiger.Class('Vtiger_Index_Js', {
 			};
 			app.request.post({data:params}).then(function(err, res){
 				app.helper.showModal(res);
-                jQuery('.filePreview .preview-area').height(jQuery(window).height()-143);
+				jQuery('.filePreview .preview-area').height(jQuery(window).height()-143);
 			});
 		}
 	},
-            
-    /**
+
+	/**
 	 * Function to show email preview in popup
 	 */
 	showEmailPreview : function(recordId, parentId) {
@@ -48,8 +48,8 @@ Vtiger.Class('Vtiger_Index_Js', {
 		params['record'] = recordId;
 		params['parentId'] = parentId;
 		params['relatedLoad'] = true;
-        
-        var callback = function(data){
+
+		var callback = function(data){
 			emailPreviewClass = app.getModuleSpecificViewClass('EmailPreview','Vtiger');
 			_controller = new window[emailPreviewClass]();
 			_controller.registerEventsForActionButtons();
@@ -64,11 +64,11 @@ Vtiger.Class('Vtiger_Index_Js', {
 				var url = jQuery(e.currentTarget).attr('href');
 				window.open(url, '_blank');
 			});
-        }
+		}
 		popupInstance.showPopup(params,null,callback);
 	},
-    
-    /**
+
+	/**
 	 * Function to show compose email popup based on number of
 	 * email fields in given module,if email fields are more than
 	 * one given option for user to select email for whom mail should
@@ -79,106 +79,106 @@ Vtiger.Class('Vtiger_Index_Js', {
 	 */
 
 	showComposeEmailPopup : function(params, cb){
-            var currentModule = "Emails";
-            app.helper.showProgress();
-            app.helper.checkServerConfig(currentModule).then(function(data){
-                if(data == true){
-                    app.request.post({data:params}).then(function(err,data){
-                        if(err === null){
-                            data = jQuery(data);
-                            var form = data.find('#SendEmailFormStep1');
-                            var emailFields = form.find('.emailField');
-                            var length = emailFields.length;
-                            var emailEditInstance = new Emails_MassEdit_Js();
-
-                            var prefsNeedToUpdate = form.find('#prefsNeedToUpdate').val();
-                            if(prefsNeedToUpdate && length > 1) {
-                                app.helper.hideProgress();
-                                app.helper.showModal(data);
-                                emailEditInstance.registerEmailFieldSelectionEvent();
-                                return true;
-                            }
-
-                            if(length > 1) {
-                                var saveRecipientPref = form.find('#saveRecipientPrefs').is(':checked');
-                                if(saveRecipientPref) {
-                                    var params = form.serializeFormData();
-                                    emailEditInstance.showComposeEmailForm(params).then(function(response) {
-                                    jQuery(document).on('shown.bs.modal', function() {
-                                        if (typeof cb === 'function') cb(response);
-                                    });
-                                });
-                                }else {
-                                    app.helper.hideProgress();
-                                    app.helper.showModal(data);
-                                    emailEditInstance.registerEmailFieldSelectionEvent();
-                                }
-                            }else{
-                                emailFields.attr('checked','checked');
-                                var params = form.serialize();
-                                emailEditInstance.showComposeEmailForm(params).then(function(response) {
-                                    jQuery(document).on('shown.bs.modal', function() {
-                                        if (typeof cb === 'function') cb(response);
-                                    });
-                                });
-                            }
-                        }
-                    });
-                } else {
-                    app.helper.showAlertBox({'message':app.vtranslate('JS_EMAIL_SERVER_CONFIGURATION')});
-                }
-            });
+		var currentModule = "Emails";
+		app.helper.showProgress();
+		app.helper.checkServerConfig(currentModule).then(function(data){
+			if(data == true){
+				app.request.post({data:params}).then(function(err,data){
+					if(err === null){
+						data = jQuery(data);
+						var form = data.find('#SendEmailFormStep1');
+						var emailFields = form.find('.emailField');
+						var length = emailFields.length;
+						var emailEditInstance = new Emails_MassEdit_Js();
+
+						var prefsNeedToUpdate = form.find('#prefsNeedToUpdate').val();
+						if(prefsNeedToUpdate && length > 1) {
+							app.helper.hideProgress();
+							app.helper.showModal(data);
+							emailEditInstance.registerEmailFieldSelectionEvent();
+							return true;
+						}
+
+						if(length > 1) {
+							var saveRecipientPref = form.find('#saveRecipientPrefs').is(':checked');
+							if(saveRecipientPref) {
+								var params = form.serializeFormData();
+								emailEditInstance.showComposeEmailForm(params).then(function(response) {
+								jQuery(document).on('shown.bs.modal', function() {
+									if (typeof cb === 'function') cb(response);
+								});
+							});
+							}else {
+								app.helper.hideProgress();
+								app.helper.showModal(data);
+								emailEditInstance.registerEmailFieldSelectionEvent();
+							}
+						}else{
+							emailFields.attr('checked','checked');
+							var params = form.serialize();
+							emailEditInstance.showComposeEmailForm(params).then(function(response) {
+								jQuery(document).on('shown.bs.modal', function() {
+									if (typeof cb === 'function') cb(response);
+								});
+							});
+						}
+					}
+				});
+			} else {
+				app.helper.showAlertBox({'message':app.vtranslate('JS_EMAIL_SERVER_CONFIGURATION')});
+			}
+		});
 	},
-    
-    showRecipientPreferences: function (module) {
-        var params = {
-            module: module,
-            view: "RecipientPreferences",
-        };
-        
-        var callback = function (data) {
-            var form = jQuery(data).find('#recipientsForm');
-            if (form.find('#multiEmailContainer').height() > 300) {
-                app.helper.showVerticalScroll(form.find('#multiEmailContainer'),{
+
+	showRecipientPreferences: function (module) {
+		var params = {
+			module: module,
+			view: "RecipientPreferences",
+		};
+
+		var callback = function (data) {
+			var form = jQuery(data).find('#recipientsForm');
+			if (form.find('#multiEmailContainer').height() > 300) {
+				app.helper.showVerticalScroll(form.find('#multiEmailContainer'),{
 					setHeight: '300px',
-                    autoHideScrollbar: false,
-                });
-            }
-            
-            form.on('submit', function (e) {
-                e.preventDefault();
-                form.find('.savePreference').attr('disabled', true);
-                var params = form.serialize();
-                app.helper.hideModal();
-                app.helper.showProgress();
-                app.request.post({"data":params}).then(function (err,data) {
-                    if (err == null) {
-                        app.helper.hideProgress();
-                        app.helper.showSuccessNotification({"message":''});
-                    } else {
-                        app.helper.showErrorNotification({"message":''});
-                    }
-                });
-            });
-        }
-        
-        app.helper.showProgress();
-        app.request.post({"data":params}).then(function (err,data) {
-            if(err == null){
-                app.helper.hideProgress();
-                app.helper.showModal(data,{"cb":callback});
-            }
-        });
-    },
-    
-    /**
-     * Function to show record address in Google Map
-     * @param {type} e
-     * @returns {undefined}
-     */
-    showMap : function(e) {
-        var currentElement = jQuery(e);
-        var params1 = {
+					autoHideScrollbar: false,
+				});
+			}
+
+			form.on('submit', function (e) {
+				e.preventDefault();
+				form.find('.savePreference').attr('disabled', true);
+				var params = form.serialize();
+				app.helper.hideModal();
+				app.helper.showProgress();
+				app.request.post({"data":params}).then(function (err,data) {
+					if (err == null) {
+						app.helper.hideProgress();
+						app.helper.showSuccessNotification({"message":''});
+					} else {
+						app.helper.showErrorNotification({"message":''});
+					}
+				});
+			});
+		}
+
+		app.helper.showProgress();
+		app.request.post({"data":params}).then(function (err,data) {
+			if(err == null){
+				app.helper.hideProgress();
+				app.helper.showModal(data,{"cb":callback});
+			}
+		});
+	},
+
+	/**
+	 * Function to show record address in Google Map
+	 * @param {type} e
+	 * @returns {undefined}
+	 */
+	showMap : function(e) {
+		var currentElement = jQuery(e);
+		var params1 = {
 			'module' : 'Google',
 			'action' : 'MapAjax',
 			'mode' : 'getLocation',
@@ -208,27 +208,27 @@ Vtiger.Class('Vtiger_Index_Js', {
 				});
 			}
 		});
-    },
-    
-    /**
+	},
+
+	/**
 	 * Function registers event for Calendar Reminder popups
 	 */
 	registerActivityReminder : function() {
-        var activityReminderInterval = app.getActivityReminderInterval();
-        if(activityReminderInterval != '') {
+		var activityReminderInterval = app.getActivityReminderInterval();
+		if(activityReminderInterval != '') {
 			var cacheActivityReminder = app.storage.get('activityReminder', 0);
 			var currentTime = new Date().getTime()/1000;
-            var nextActivityReminderCheck = app.storage.get('nextActivityReminderCheckTime', 0);
-            //If activity Reminder Changed, nextActivityReminderCheck should reset
+			var nextActivityReminderCheck = app.storage.get('nextActivityReminderCheckTime', 0);
+			//If activity Reminder Changed, nextActivityReminderCheck should reset
 			if(activityReminderInterval != cacheActivityReminder) {
 				nextActivityReminderCheck = 0;
 			}
 			if(currentTime >= nextActivityReminderCheck) {
 				Vtiger_Index_Js.requestReminder();
 			} else {
-                var nextInterval = nextActivityReminderCheck - currentTime;
-                setTimeout(function() {Vtiger_Index_Js.requestReminder()}, nextInterval*1000);
-            }
+				var nextInterval = nextActivityReminderCheck - currentTime;
+				setTimeout(function() {Vtiger_Index_Js.requestReminder()}, nextInterval*1000);
+			}
 		}
 	},
 
@@ -237,708 +237,708 @@ Vtiger.Class('Vtiger_Index_Js', {
 	 */
 	requestReminder : function() {
 		var activityReminder = app.getActivityReminderInterval();
-        if(!activityReminder);return;
+		if(!activityReminder);return;
 		var currentTime = new Date().getTime()/1000;
 		//requestReminder function should call after activityreminder popup interval
 		setTimeout(function() {Vtiger_Index_Js.requestReminder()}, activityReminder*1000);
 		app.storage.set('activityReminder', activityReminder);
 		//setting next activity reminder check time
 		app.storage.set('nextActivityReminderCheckTime', currentTime + parseInt(activityReminder));
-        
-        app.request.post({
-            'data' : {
-                'module' : 'Calendar',
-                'action' : 'ActivityReminder',
-                'mode' : 'getReminders'
-            }
-        }).then(function(e, res) {
-            if(!res.hasOwnProperty('result')) {
-                for(i=0; i< res.length; i++) {
-                    var record  = res[i];
+
+		app.request.post({
+			'data' : {
+				'module' : 'Calendar',
+				'action' : 'ActivityReminder',
+				'mode' : 'getReminders'
+			}
+		}).then(function(e, res) {
+			if(!res.hasOwnProperty('result')) {
+				for(i=0; i< res.length; i++) {
+					var record = res[i];
 					if(typeof record == 'object') {
 						Vtiger_Index_Js.showReminderPopup(record);
 					}
-                }
-            }
-        });
+				}
+			}
+		});
 	},
 
 	/**
 	 * Function display the Reminder popup
 	 */
 	showReminderPopup : function(record) {
-        var notifyParams = {
-            'title' : record.activitytype + ' - ' +
-                    '<a target="_blank" href="index.php?module=Calendar&view=Detail&record='+record.id+'">'+record.subject+'</a>&nbsp;&nbsp;'+
-                    '<i id="reminder-postpone-'+record.id+'" title="'+app.vtranslate('JS_POSTPONE')+'" class="cursorPointer fa fa-clock-o"></i>',
-            'message' : '<div class="col-sm-12">'+
-                            '<div class="row">'+
-                                '<div class="col-sm-12 font13px">'+
-                                    app.vtranslate('JS_START_DATE_TIME') + ' : ' + record.date_start+
-                                '</div>'+
-                                '<div class="col-sm-12 font13px">'+
-                                    app.vtranslate('JS_END_DATE_TIME') + ' : ' + record.due_date+
-                                '</div>'+
-                            '</div>'+
-                       '</div>'
-        };
-        var settings = {
-            'element' : 'body', 
-            'type' : 'danger', 
-            'delay' : 0
-        };
-
-        jQuery.notify(notifyParams, settings);
-        jQuery('#reminder-postpone-'+record.id).on('click', function(e) {
+		var notifyParams = {
+			'title' : record.activitytype + ' - ' +
+					'<a target="_blank" href="index.php?module=Calendar&view=Detail&record='+record.id+'">'+record.subject+'</a>&nbsp;&nbsp;'+
+					'<i id="reminder-postpone-'+record.id+'" title="'+app.vtranslate('JS_POSTPONE')+'" class="cursorPointer fa fa-clock-o"></i>',
+			'message' : '<div class="col-sm-12">'+
+							'<div class="row">'+
+								'<div class="col-sm-12 font13px">'+
+									app.vtranslate('JS_START_DATE_TIME') + ' : ' + record.date_start+
+								'</div>'+
+								'<div class="col-sm-12 font13px">'+
+									app.vtranslate('JS_END_DATE_TIME') + ' : ' + record.due_date+
+								'</div>'+
+							'</div>'+
+						'</div>'
+		};
+		var settings = {
+			'element' : 'body', 
+			'type' : 'danger', 
+			'delay' : 0
+		};
+
+		jQuery.notify(notifyParams, settings);
+		jQuery('#reminder-postpone-'+record.id).on('click', function(e) {
 			jQuery(e.currentTarget).closest('.notificationHeader').find('[data-notify="dismiss"]').trigger('click');
 			app.request.post({
-                'data' : {
-                    'module' : 'Calendar',
-                    'action' : 'ActivityReminder',
-                    'mode' : 'postpone',
-                    'record' : record.id
-                }
-            }).then(function(e,res) {});
+				'data' : {
+					'module' : 'Calendar',
+					'action' : 'ActivityReminder',
+					'mode' : 'postpone',
+					'record' : record.id
+				}
+			}).then(function(e,res) {});
 		});
-        jQuery('#reminder-postpone-'+record.id).closest('[data-notify="container"]').draggable({'containment' : 'body'});
+		jQuery('#reminder-postpone-'+record.id).closest('[data-notify="container"]').draggable({'containment' : 'body'});
 	}
-    
+
 }, {
-     _SearchIntiatedEventName : 'VT_SEARCH_INTIATED',
-    usernames : [],
-    userList : {},
+	 _SearchIntiatedEventName : 'VT_SEARCH_INTIATED',
+	usernames : [],
+	userList : {},
 	autoFillElement : false,
-     
-    init : function() {
-        this.addComponents();
-    },
-    
-    addComponents : function() {
-        var basicSearchClassName = 'Vtiger_BasicSearch_Js';
-        var textsearchClassName = 'TextSearch_BasicSearch_Js';
-        if(typeof window[textsearchClassName] != "undefined") {
-            this.addComponent(textsearchClassName);
-        } else{
-            this.addComponent(basicSearchClassName);
-        }
-    },
-    
-    registerListEssentialsToggleEvent : function() {
-        jQuery('.main-container').on('click', '.essentials-toggle', function() {
-            jQuery('.sidebar-essentials').toggleClass('hide');
-            jQuery(".content-area").toggleClass("full-width");
-            var params = {
-                'module' : 'Users',
-                'action' : 'IndexAjax',
-                'mode' : 'toggleLeftPanel',
-                'showPanel' : +jQuery('.sidebar-essentials').hasClass('hide')
-            }
-            app.request.post({data: params});
-            if(jQuery('.sidebar-essentials').hasClass('hide')) {
-                jQuery('.essentials-toggle-marker').removeClass('fa-chevron-left')
-                        .addClass('fa-chevron-right');
-            } else {
-                jQuery('.essentials-toggle-marker').removeClass('fa-chevron-right')
-                        .addClass('fa-chevron-left');
-            }
-            app.event.trigger("Vtiger.Post.MenuToggle");
-        });
-    },
-    
-    registerModuleQtips : function() {
-        jQuery('.module-qtip').qtip({
-            position: {
-                my: 'left center',
-                at: 'center right',
-                adjust: {
-                    y: 1
-                }
-            },
-            style: {
-                classes: 'qtip-dark qtip-shadow module-name-tooltip'
-            },
-            show: {
-                delay: 500
-            }
-        });
-    },
-    
-    registerEvents: function() {
-        this.registerMenuToggle();
-        this.registerGlobalSearch();
-        this.registerAppTriggerEvent();
-        this.registerModuleQtips();
-        this.registerListEssentialsToggleEvent();
-        this.registerAdvanceSeachIntiator();
-        this.registerQuickCreateEvent();
-        this.registerQuickCreateSubMenus();
-        this.registerPostQuickCreateEvent();
-        this.registerEventForTaskManagement();
+
+	init : function() {
+		this.addComponents();
+	},
+
+	addComponents : function() {
+		var basicSearchClassName = 'Vtiger_BasicSearch_Js';
+		var textsearchClassName = 'TextSearch_BasicSearch_Js';
+		if(typeof window[textsearchClassName] != "undefined") {
+			this.addComponent(textsearchClassName);
+		} else{
+			this.addComponent(basicSearchClassName);
+		}
+	},
+
+	registerListEssentialsToggleEvent : function() {
+		jQuery('.main-container').on('click', '.essentials-toggle', function() {
+			jQuery('.sidebar-essentials').toggleClass('hide');
+			jQuery(".content-area").toggleClass("full-width");
+			var params = {
+				'module' : 'Users',
+				'action' : 'IndexAjax',
+				'mode' : 'toggleLeftPanel',
+				'showPanel' : +jQuery('.sidebar-essentials').hasClass('hide')
+			}
+			app.request.post({data: params});
+			if(jQuery('.sidebar-essentials').hasClass('hide')) {
+				jQuery('.essentials-toggle-marker').removeClass('fa-chevron-left')
+						.addClass('fa-chevron-right');
+			} else {
+				jQuery('.essentials-toggle-marker').removeClass('fa-chevron-right')
+						.addClass('fa-chevron-left');
+			}
+			app.event.trigger("Vtiger.Post.MenuToggle");
+		});
+	},
+
+	registerModuleQtips : function() {
+		jQuery('.module-qtip').qtip({
+			position: {
+				my: 'left center',
+				at: 'center right',
+				adjust: {
+					y: 1
+				}
+			},
+			style: {
+				classes: 'qtip-dark qtip-shadow module-name-tooltip'
+			},
+			show: {
+				delay: 500
+			}
+		});
+	},
+
+	registerEvents: function() {
+		this.registerMenuToggle();
+		this.registerGlobalSearch();
+		this.registerAppTriggerEvent();
+		this.registerModuleQtips();
+		this.registerListEssentialsToggleEvent();
+		this.registerAdvanceSeachIntiator();
+		this.registerQuickCreateEvent();
+		this.registerQuickCreateSubMenus();
+		this.registerPostQuickCreateEvent();
+		this.registerEventForTaskManagement();
 		this.registerFileChangeEvent();
 		this.registerMultiUpload();
 		this.registerHoverEventOnAttachment();
 		//this.addBodyScroll();
-        this.mentionerCallBack();
-        this.modulesMenuScrollbar();
-        Vtiger_Index_Js.registerActivityReminder();
-        //reference preview event registeration
-        this.registerReferencePreviewEvent();
+		this.mentionerCallBack();
+		this.modulesMenuScrollbar();
+		Vtiger_Index_Js.registerActivityReminder();
+		//reference preview event registeration
+		this.registerReferencePreviewEvent();
 	},
-    
-    addBodyScroll: function () {
-        app.helper.showVerticalScroll(
-                $("body"),
-                {
-                    setHeight: $(window).height() - 92,
-                    theme: "inset-dark",
-                    alwaysShowScrollbar: 2,
-                    autoExpandScrollbar: true,
-                    live: "on",
-                    setTop: 0,
-                    scrollInertia: 70,
-                    mouseWheel:{ preventDefault: true }
-                    
-                }
-        );
-    },
-    registerEventForTaskManagement : function(){
-        var globalNav = jQuery('.global-nav');
-        globalNav.on("click",".taskManagement",function(e){
-            if(jQuery("#taskManagementContainer").length > 0){
-                app.helper.hidePageOverlay();
-                return false;
-            }
-            
-            var params = {
-                'module' : 'Calendar',
-                'view' : 'TaskManagement',
-                'mode' : 'showManagementView'
-            }
-            app.helper.showProgress();
-            app.request.post({"data":params}).then(function(err,data){
-                if(err === null){
-                    app.helper.loadPageOverlay(data,{'ignoreScroll' : true,'backdrop': 'static'}).then(function(){
-                        app.helper.hideProgress();
-                        $('#overlayPage').find('.data').css('height','100vh');
-                        
-                        var taskManagementPageOffset = jQuery('.taskManagement').offset();
-                        $('#overlayPage').find(".arrow").css("left",taskManagementPageOffset.left+13);
-                        $('#overlayPage').find(".arrow").addClass("show");
-                        
-                        vtUtils.showSelect2ElementView($('#overlayPage .data-header').find('select[name="assigned_user_id"]'),{placeholder:"User : All"});
-                        vtUtils.showSelect2ElementView($('#overlayPage .data-header').find('select[name="taskstatus"]'),{placeholder:"Status : All"});
-                        var js = new Vtiger_TaskManagement_Js();
-                        js.registerEvents();
-                    });
-                }else{
-                    app.helper.showErrorNotification({"message":err});
-                }
-            });
-        });
-    },
-    
-    registerPostQuickCreateEvent : function(){
-        var thisInstance = this;
-        
-        app.event.on("post.QuickCreateForm.show",function(event,form){
-            form.find('#goToFullForm').on('click', function(e) {
+
+	addBodyScroll: function () {
+		app.helper.showVerticalScroll(
+				$("body"),
+				{
+					setHeight: $(window).height() - 92,
+					theme: "inset-dark",
+					alwaysShowScrollbar: 2,
+					autoExpandScrollbar: true,
+					live: "on",
+					setTop: 0,
+					scrollInertia: 70,
+					mouseWheel:{ preventDefault: true }
+
+				}
+		);
+	},
+	registerEventForTaskManagement : function(){
+		var globalNav = jQuery('.global-nav');
+		globalNav.on("click",".taskManagement",function(e){
+			if(jQuery("#taskManagementContainer").length > 0){
+				app.helper.hidePageOverlay();
+				return false;
+			}
+
+			var params = {
+				'module' : 'Calendar',
+				'view' : 'TaskManagement',
+				'mode' : 'showManagementView'
+			}
+			app.helper.showProgress();
+			app.request.post({"data":params}).then(function(err,data){
+				if(err === null){
+					app.helper.loadPageOverlay(data,{'ignoreScroll' : true,'backdrop': 'static'}).then(function(){
+						app.helper.hideProgress();
+						$('#overlayPage').find('.data').css('height','100vh');
+
+						var taskManagementPageOffset = jQuery('.taskManagement').offset();
+						$('#overlayPage').find(".arrow").css("left",taskManagementPageOffset.left+13);
+						$('#overlayPage').find(".arrow").addClass("show");
+
+						vtUtils.showSelect2ElementView($('#overlayPage .data-header').find('select[name="assigned_user_id"]'),{placeholder:"User : All"});
+						vtUtils.showSelect2ElementView($('#overlayPage .data-header').find('select[name="taskstatus"]'),{placeholder:"Status : All"});
+						var js = new Vtiger_TaskManagement_Js();
+						js.registerEvents();
+					});
+				}else{
+					app.helper.showErrorNotification({"message":err});
+				}
+			});
+		});
+	},
+
+	registerPostQuickCreateEvent : function(){
+		var thisInstance = this;
+
+		app.event.on("post.QuickCreateForm.show",function(event,form){
+			form.find('#goToFullForm').on('click', function(e) {
 				window.onbeforeunload = true;
-                var form = jQuery(e.currentTarget).closest('form');
-                var editViewUrl = jQuery(e.currentTarget).data('editViewUrl');
-                if (typeof goToFullFormCallBack != "undefined") {
-                    goToFullFormCallBack(form);
-                }
-                thisInstance.quickCreateGoToFullForm(form, editViewUrl);
-            });
-        });
-    },
-    
-    /**
-     * Function to navigate from quickcreate to editView Fullform
-     * @param accepts form element as parameter
-     */
-    quickCreateGoToFullForm: function(form, editViewUrl) {
-        var formData = form.serializeFormData();
-        //As formData contains information about both view and action removed action and directed to view
-        delete formData.module;
-        delete formData.action;
-        delete formData.picklistDependency;
-        var formDataUrl = jQuery.param(formData);
-        var completeUrl = editViewUrl + "&" + formDataUrl;
-        window.location.href = completeUrl;
-    },
-    
-    registerQuickCreateSubMenus : function() {
-        jQuery("#quickCreateModules").on("click",".quickCreateModuleSubmenu",function(e){
-            e.preventDefault();
-            e.stopImmediatePropagation();
-            jQuery(e.currentTarget).closest('.dropdown').toggleClass('open');
-        });
-    },
-    
-    /**
-     * Function to register Quick Create Event
-     * @returns {undefined}
-     */
-    registerQuickCreateEvent : function (){     
-        var thisInstance = this;
-        jQuery("#quickCreateModules").on("click",".quickCreateModule",function(e,params){
-            var quickCreateElem = jQuery(e.currentTarget);
-            var quickCreateUrl = quickCreateElem.data('url');
-            var quickCreateModuleName = quickCreateElem.data('name');
-            if (typeof params === 'undefined') {
-                params = {};
-            }
-            if (typeof params.callbackFunction === 'undefined') {
-                params.callbackFunction = function(data, err) {
-                    //fix for Refresh list view after Quick create  
-                    var parentModule=app.getModuleName();  
-                    var viewname=app.view();  
-                    if((quickCreateModuleName == parentModule) && (viewname=="List")){
-                            var listinstance = app.controller();  
-                            listinstance.loadListViewRecords();       
-                    }
-                };
-            }
-            app.helper.showProgress();
-            thisInstance.getQuickCreateForm(quickCreateUrl,quickCreateModuleName,params).then(function(data){
-                app.helper.hideProgress();
+				var form = jQuery(e.currentTarget).closest('form');
+				var editViewUrl = jQuery(e.currentTarget).data('editViewUrl');
+				if (typeof goToFullFormCallBack != "undefined") {
+					goToFullFormCallBack(form);
+				}
+				thisInstance.quickCreateGoToFullForm(form, editViewUrl);
+			});
+		});
+	},
+
+	/**
+	 * Function to navigate from quickcreate to editView Fullform
+	 * @param accepts form element as parameter
+	 */
+	quickCreateGoToFullForm: function(form, editViewUrl) {
+		var formData = form.serializeFormData();
+		//As formData contains information about both view and action removed action and directed to view
+		delete formData.module;
+		delete formData.action;
+		delete formData.picklistDependency;
+		var formDataUrl = jQuery.param(formData);
+		var completeUrl = editViewUrl + "&" + formDataUrl;
+		window.location.href = completeUrl;
+	},
+
+	registerQuickCreateSubMenus : function() {
+		jQuery("#quickCreateModules").on("click",".quickCreateModuleSubmenu",function(e){
+			e.preventDefault();
+			e.stopImmediatePropagation();
+			jQuery(e.currentTarget).closest('.dropdown').toggleClass('open');
+		});
+	},
+
+	/**
+	 * Function to register Quick Create Event
+	 * @returns {undefined}
+	 */
+	registerQuickCreateEvent : function (){
+		var thisInstance = this;
+		jQuery("#quickCreateModules").on("click",".quickCreateModule",function(e,params){
+			var quickCreateElem = jQuery(e.currentTarget);
+			var quickCreateUrl = quickCreateElem.data('url');
+			var quickCreateModuleName = quickCreateElem.data('name');
+			if (typeof params === 'undefined') {
+				params = {};
+			}
+			if (typeof params.callbackFunction === 'undefined') {
+				params.callbackFunction = function(data, err) {
+					//fix for Refresh list view after Quick create
+					var parentModule=app.getModuleName();
+					var viewname=app.view();
+					if((quickCreateModuleName == parentModule) && (viewname=="List")){
+							var listinstance = app.controller();
+							listinstance.loadListViewRecords(); 
+					}
+				};
+			}
+			app.helper.showProgress();
+			thisInstance.getQuickCreateForm(quickCreateUrl,quickCreateModuleName,params).then(function(data){
+				app.helper.hideProgress();
 				var callbackparams = {
 					'cb' : function (container){
 						thisInstance.registerPostReferenceEvent(container);
-                        app.event.trigger('post.QuickCreateForm.show',form);
-                        app.helper.registerLeavePageWithoutSubmit(form);
-                        app.helper.registerModalDismissWithoutSubmit(form);
+						app.event.trigger('post.QuickCreateForm.show',form);
+						app.helper.registerLeavePageWithoutSubmit(form);
+						app.helper.registerModalDismissWithoutSubmit(form);
 					},
 					backdrop : 'static',
 					keyboard : false
 					}
-				
-                app.helper.showModal(data, callbackparams);
-                var form = jQuery('form[name="QuickCreate"]');
-                var moduleName = form.find('[name="module"]').val();
-                app.helper.showVerticalScroll(jQuery('form[name="QuickCreate"] .modal-body'), {'autoHideScrollbar': true});
-               
-                var targetInstance = thisInstance;
-                var moduleInstance = Vtiger_Edit_Js.getInstanceByModuleName(moduleName);
-                if(typeof(moduleInstance.quickCreateSave) === 'function'){
-                    targetInstance = moduleInstance;
-                    targetInstance.registerBasicEvents(form);
+
+				app.helper.showModal(data, callbackparams);
+				var form = jQuery('form[name="QuickCreate"]');
+				var moduleName = form.find('[name="module"]').val();
+				app.helper.showVerticalScroll(jQuery('form[name="QuickCreate"] .modal-body'), {'autoHideScrollbar': true});
+
+				var targetInstance = thisInstance;
+				var moduleInstance = Vtiger_Edit_Js.getInstanceByModuleName(moduleName);
+				if(typeof(moduleInstance.quickCreateSave) === 'function'){
+					targetInstance = moduleInstance;
+					targetInstance.registerBasicEvents(form);
 				}
-                
-                vtUtils.applyFieldElementsView(form);
-                targetInstance.quickCreateSave(form,params);
-                app.helper.hideProgress();
-            });
-        });
-    },
-    
-    /**
-     * Function to register quick create tab events
-     */
-    registerQuickcreateTabEvents : function(form) {
-        var thisInstance = this;
-        var tabElements = form.closest('.modal-content').find('.nav.nav-pills , .nav.nav-tabs').find('a');
-
-        //This will remove the name attributes and assign it to data-element-name . We are doing this to avoid
-        //Multiple element to send as in calendar
-        var quickCreateTabOnHide = function(tabElement) {
-            var container = jQuery(tabElement.attr('data-target'));
-
-            container.find('[name]').each(function(index, element) {
-                element = jQuery(element);
-                element.attr('data-element-name', element.attr('name')).removeAttr('name');
-            });
-        };
-
-        //This will add the name attributes and get value from data-element-name . We are doing this to avoid
-        //Multiple element to send as in calendar
-        var quickCreateTabOnShow = function(tabElement) {
-            var container = jQuery(tabElement.attr('data-target'));
-
-            container.find('[data-element-name]').each(function(index, element) {
-                element = jQuery(element);
-                element.attr('name', element.attr('data-element-name')).removeAttr('data-element-name');
-            });
-        };
-        
-        tabElements.on('shown.bs.tab', function(e) {
-            var previousTab = jQuery(e.relatedTarget);
-            var currentTab = jQuery(e.currentTarget);
-
-            quickCreateTabOnHide(previousTab);
-            quickCreateTabOnShow(currentTab);
-            
-            if(form.find('[name="module"]').val()=== 'Calendar') {
-                var sourceModule = currentTab.data('source-module');
-                form.find('[name="calendarModule"]').val(sourceModule);
-                var moduleInstance = Vtiger_Edit_Js.getInstanceByModuleName('Calendar');
-                moduleInstance.registerEventForPicklistDependencySetup(form);
-            }
-			
+
+				vtUtils.applyFieldElementsView(form);
+				targetInstance.quickCreateSave(form,params);
+				app.helper.hideProgress();
+			});
+		});
+	},
+
+	/**
+	 * Function to register quick create tab events
+	 */
+	registerQuickcreateTabEvents : function(form) {
+		var thisInstance = this;
+		var tabElements = form.closest('.modal-content').find('.nav.nav-pills , .nav.nav-tabs').find('a');
+
+		//This will remove the name attributes and assign it to data-element-name . We are doing this to avoid
+		//Multiple element to send as in calendar
+		var quickCreateTabOnHide = function(tabElement) {
+			var container = jQuery(tabElement.attr('data-target'));
+
+			container.find('[name]').each(function(index, element) {
+				element = jQuery(element);
+				element.attr('data-element-name', element.attr('name')).removeAttr('name');
+			});
+		};
+
+		//This will add the name attributes and get value from data-element-name . We are doing this to avoid
+		//Multiple element to send as in calendar
+		var quickCreateTabOnShow = function(tabElement) {
+			var container = jQuery(tabElement.attr('data-target'));
+
+			container.find('[data-element-name]').each(function(index, element) {
+				element = jQuery(element);
+				element.attr('name', element.attr('data-element-name')).removeAttr('data-element-name');
+			});
+		};
+
+		tabElements.on('shown.bs.tab', function(e) {
+			var previousTab = jQuery(e.relatedTarget);
+			var currentTab = jQuery(e.currentTarget);
+
+			quickCreateTabOnHide(previousTab);
+			quickCreateTabOnShow(currentTab);
+
+			if(form.find('[name="module"]').val()=== 'Calendar') {
+				var sourceModule = currentTab.data('source-module');
+				form.find('[name="calendarModule"]').val(sourceModule);
+				var moduleInstance = Vtiger_Edit_Js.getInstanceByModuleName('Calendar');
+				moduleInstance.registerEventForPicklistDependencySetup(form);
+			}
+
 			//while switching tabs we have to show scroll bar
 			//thisInstance.showQuickCreateScrollBar(form);
-            //while switching tabs we have to clear the invalid fields list
-            //form.data('jqv').InvalidFields = [];
-        });
-
-        //remove name attributes for inactive tab elements
-        quickCreateTabOnHide(tabElements.closest('li').filter(':not(.active)').find('a'));
-    },
-    
-    /**
-     * Register Quick Create Save Event
-     * @param {type} form
-     * @returns {undefined}
-     */
-    quickCreateSave : function(form,invokeParams){
-        var params = {
-            submitHandler: function(form) {
-                // to Prevent submit if already submitted
-                jQuery("button[name='saveButton']").attr("disabled","disabled");
-                if(this.numberOfInvalids() > 0) {
-                    return false;
-                }
-                var formData = jQuery(form).serialize();
-                app.request.post({data:formData}).then(function(err,data){
-                    app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData());
-                    if(err === null) {
-                        app.helper.hideModal();
-                        app.helper.showSuccessNotification({"message":''});
-                        invokeParams.callbackFunction(data, err);
+			//while switching tabs we have to clear the invalid fields list
+			//form.data('jqv').InvalidFields = [];
+		});
+
+		//remove name attributes for inactive tab elements
+		quickCreateTabOnHide(tabElements.closest('li').filter(':not(.active)').find('a'));
+	},
+
+	/**
+	 * Register Quick Create Save Event
+	 * @param {type} form
+	 * @returns {undefined}
+	 */
+	quickCreateSave : function(form,invokeParams){
+		var params = {
+			submitHandler: function(form) {
+				// to Prevent submit if already submitted
+				jQuery("button[name='saveButton']").attr("disabled","disabled");
+				if(this.numberOfInvalids() > 0) {
+					return false;
+				}
+				var formData = jQuery(form).serialize();
+				app.request.post({data:formData}).then(function(err,data){
+					app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData());
+					if(err === null) {
+						app.helper.hideModal();
+						app.helper.showSuccessNotification({"message":''});
+						invokeParams.callbackFunction(data, err);
 						//To unregister onbefore unload event registered for quickcreate
 						window.onbeforeunload = null;
-                    }else{
-                        app.helper.showErrorNotification({"message":err});
-                    }
-                });
-            },
-            validationMeta: quickcreate_uimeta
-        };
-        form.vtValidate(params);
-    },
-    
-    /**
-     * Function to get Quick Create Form
-     * @param {type} url
-     * @param {type} moduleName
-     * @returns {unresolved}
-     */
-    getQuickCreateForm: function(url, moduleName, params) {
-        var aDeferred = jQuery.Deferred();
-        var requestParams = app.convertUrlToDataParams(url);
-        jQuery.extend(requestParams, params.data);
-        app.request.post({data:requestParams}).then(function(err,data) {
-            aDeferred.resolve(data);
-        });
-        return aDeferred.promise();
-    },
-    
-    registerMenuToggle : function(){
-        jQuery("#menu-toggle").on('click', function(e) {
-           e.preventDefault();
-            $("#modnavigator").toggleClass('hide');
-            $(".content-area").toggleClass("full-width");
-            var params = {
-                'module' : 'Users',
-                'action' : 'IndexAjax',
-                'mode' : 'toggleLeftPanel',
-                'showPanel' : +jQuery("#modnavigator").hasClass('hide')
-            }
-            app.request.post({data: params});
-            app.event.trigger("Vtiger.Post.MenuToggle");
-        });
-    },
-    
-    registerAppTriggerEvent : function() {
-        jQuery('.app-menu').removeClass('hide');
-        var toggleAppMenu = function(type) {
-            var appMenu = jQuery('.app-menu');
-            var appNav = jQuery('.app-nav');
-            appMenu.appendTo('#page');
-            appMenu.css({
-                'top' : appNav.offset().top + appNav.height(),
-                'left' : 0
-            });
-            if(typeof type === 'undefined') {
-                type = appMenu.is(':hidden') ? 'show' : 'hide';
-            }
-            if(type == 'show') {
-                appMenu.show(200, function() {});
-            } else {
-                appMenu.hide(200, function() {});
-            }
-        };
-        
-        jQuery('.app-trigger, .app-icon, .app-navigator').on('click',function(e){
-            e.stopPropagation();
-            toggleAppMenu();
-        });
-
-        jQuery('html').on('click', function() {
-            toggleAppMenu('hide');
-        });
-        
-        jQuery(document).keyup(function (e) {
-            if (e.keyCode == 27) {
-                if(!jQuery('.app-menu').is(':hidden')) {
-                    toggleAppMenu('hide');
-                }
-            }
-        });
-        
-        jQuery('.app-modules-dropdown-container').hover(function(e) {
-            var dropdownContainer = jQuery(e.currentTarget);
-            jQuery('.dropdown').removeClass('open');
-            if(dropdownContainer.length) {
-                if(dropdownContainer.hasClass('dropdown-compact')) {
-                    dropdownContainer.find('.app-modules-dropdown').css('top', dropdownContainer.position().top - 8);
-                } else {
-                    dropdownContainer.find('.app-modules-dropdown').css('top', '');
-                }
-                dropdownContainer.addClass('open').find('.app-item').addClass('active-app-item');
-            }
-        }, function(e) {
-            var dropdownContainer = jQuery(e.currentTarget);
-            dropdownContainer.find('.app-item').removeClass('active-app-item');
-            setTimeout(function() {
-                if(dropdownContainer.find('.app-modules-dropdown').length && !dropdownContainer.find('.app-modules-dropdown').is(':hover') && !dropdownContainer.is(':hover')) {
-                    dropdownContainer.removeClass('open');
-                }
-            }, 500);
-            
-        });
-        
-        jQuery('.app-item').on('click', function() {
-            var url = jQuery(this).data('defaultUrl');
-            if(url) {
-                window.location.href = url;
-            }
-        });
-        
+					}else{
+						app.helper.showErrorNotification({"message":err});
+					}
+				});
+			},
+			validationMeta: quickcreate_uimeta
+		};
+		form.vtValidate(params);
+	},
+
+	/**
+	 * Function to get Quick Create Form
+	 * @param {type} url
+	 * @param {type} moduleName
+	 * @returns {unresolved}
+	 */
+	getQuickCreateForm: function(url, moduleName, params) {
+		var aDeferred = jQuery.Deferred();
+		var requestParams = app.convertUrlToDataParams(url);
+		jQuery.extend(requestParams, params.data);
+		app.request.post({data:requestParams}).then(function(err,data) {
+			aDeferred.resolve(data);
+		});
+		return aDeferred.promise();
+	},
+
+	registerMenuToggle : function(){
+		jQuery("#menu-toggle").on('click', function(e) {
+			e.preventDefault();
+			$("#modnavigator").toggleClass('hide');
+			$(".content-area").toggleClass("full-width");
+			var params = {
+				'module' : 'Users',
+				'action' : 'IndexAjax',
+				'mode' : 'toggleLeftPanel',
+				'showPanel' : +jQuery("#modnavigator").hasClass('hide')
+			}
+			app.request.post({data: params});
+			app.event.trigger("Vtiger.Post.MenuToggle");
+		});
+	},
+
+	registerAppTriggerEvent : function() {
+		jQuery('.app-menu').removeClass('hide');
+		var toggleAppMenu = function(type) {
+			var appMenu = jQuery('.app-menu');
+			var appNav = jQuery('.app-nav');
+			appMenu.appendTo('#page');
+			appMenu.css({
+				'top' : appNav.offset().top + appNav.height(),
+				'left' : 0
+			});
+			if(typeof type === 'undefined') {
+				type = appMenu.is(':hidden') ? 'show' : 'hide';
+			}
+			if(type == 'show') {
+				appMenu.show(200, function() {});
+			} else {
+				appMenu.hide(200, function() {});
+			}
+		};
+
+		jQuery('.app-trigger, .app-icon, .app-navigator').on('click',function(e){
+			e.stopPropagation();
+			toggleAppMenu();
+		});
+
+		jQuery('html').on('click', function() {
+			toggleAppMenu('hide');
+		});
+
+		jQuery(document).keyup(function (e) {
+			if (e.keyCode == 27) {
+				if(!jQuery('.app-menu').is(':hidden')) {
+					toggleAppMenu('hide');
+				}
+			}
+		});
+
+		jQuery('.app-modules-dropdown-container').hover(function(e) {
+			var dropdownContainer = jQuery(e.currentTarget);
+			jQuery('.dropdown').removeClass('open');
+			if(dropdownContainer.length) {
+				if(dropdownContainer.hasClass('dropdown-compact')) {
+					dropdownContainer.find('.app-modules-dropdown').css('top', dropdownContainer.position().top - 8);
+				} else {
+					dropdownContainer.find('.app-modules-dropdown').css('top', '');
+				}
+				dropdownContainer.addClass('open').find('.app-item').addClass('active-app-item');
+			}
+		}, function(e) {
+			var dropdownContainer = jQuery(e.currentTarget);
+			dropdownContainer.find('.app-item').removeClass('active-app-item');
+			setTimeout(function() {
+				if(dropdownContainer.find('.app-modules-dropdown').length && !dropdownContainer.find('.app-modules-dropdown').is(':hover') && !dropdownContainer.is(':hover')) {
+					dropdownContainer.removeClass('open');
+				}
+			}, 500);
+
+		});
+
+		jQuery('.app-item').on('click', function() {
+			var url = jQuery(this).data('defaultUrl');
+			if(url) {
+				window.location.href = url;
+			}
+		});
+
 		jQuery(window).resize(function() {
 			jQuery(".app-modules-dropdown").mCustomScrollbar("destroy");
-            app.helper.showVerticalScroll(jQuery(".app-modules-dropdown").not('.dropdown-modules-compact'), {
-                setHeight: $(window).height(),
-                autoExpandScrollbar: true
-            });
-            jQuery('.dropdown-modules-compact').each(function() {
-                var element = jQuery(this);
-                var heightPer = parseFloat(element.data('height'));
-                app.helper.showVerticalScroll(element, {
-                    setHeight:  $(window).height()*heightPer - 3,
-                    autoExpandScrollbar: true,
-                    scrollbarPosition: 'outside'
-                });
-            });
+			app.helper.showVerticalScroll(jQuery(".app-modules-dropdown").not('.dropdown-modules-compact'), {
+				setHeight: $(window).height(),
+				autoExpandScrollbar: true
+			});
+			jQuery('.dropdown-modules-compact').each(function() {
+				var element = jQuery(this);
+				var heightPer = parseFloat(element.data('height'));
+				app.helper.showVerticalScroll(element, {
+					setHeight: $(window).height()*heightPer - 3,
+					autoExpandScrollbar: true,
+					scrollbarPosition: 'outside'
+				});
+			});
+		});
+		app.helper.showVerticalScroll(jQuery(".app-modules-dropdown").not('.dropdown-modules-compact'), {
+			setHeight: $(window).height(),
+			autoExpandScrollbar: true,
+			scrollbarPosition: 'outside'
 		});
-        app.helper.showVerticalScroll(jQuery(".app-modules-dropdown").not('.dropdown-modules-compact'), {
-            setHeight: $(window).height(),
-            autoExpandScrollbar: true,
-            scrollbarPosition: 'outside'
-        });
-        jQuery('.dropdown-modules-compact').each(function() {
-            var element = jQuery(this);
-            var heightPer = parseFloat(element.data('height'));
-            app.helper.showVerticalScroll(element, {
-                setHeight:  $(window).height()*heightPer - 3,
-                autoExpandScrollbar: true,
-                scrollbarPosition: 'outside'
-            });
-        });
-    },
-    
-    registerGlobalSearch : function() {
-        var thisInstance = this;
-        jQuery('.search-link .keyword-input').on('keypress',function(e){
-            if(e.which == 13) {
-                
-                var element = jQuery(e.currentTarget);
-                var searchValue = element.val();
-                var data = {};
-                data['searchValue'] = searchValue;
-                element.trigger(thisInstance._SearchIntiatedEventName,data);
-            }
-        });
-    },
-    
-    registerAdvanceSeachIntiator : function () {
-        jQuery('#adv-search').on('click',function(e){
-            var advanceSearchInstance = new Vtiger_AdvanceSearch_Js();
-            advanceSearchInstance.advanceSearchTriggerIntiatorHandler();
-//            advanceSearchInstance.initiateSearch().then(function() {
-//                advanceSearchInstance.selectBasicSearchValue();
-//            });
-        });
-    },
-    
-    /**
-     * Function which will handle the reference auto complete event registrations
-     * @params - container <jQuery> - element in which auto complete fields needs to be searched
-     */
-    registerAutoCompleteFields : function(container) {
-        var thisInstance = this;
-        container.find('input.autoComplete').autocomplete({
-            'minLength' : '3',
-            'source' : function(request, response){
-                //element will be array of dom elements
-                //here this refers to auto complete instance
-                var inputElement = jQuery(this.element[0]);
-                var searchValue = request.term;
-                var params = thisInstance.getReferenceSearchParams(inputElement);
+		jQuery('.dropdown-modules-compact').each(function() {
+			var element = jQuery(this);
+			var heightPer = parseFloat(element.data('height'));
+			app.helper.showVerticalScroll(element, {
+				setHeight: $(window).height()*heightPer - 3,
+				autoExpandScrollbar: true,
+				scrollbarPosition: 'outside'
+			});
+		});
+	},
+
+	registerGlobalSearch : function() {
+		var thisInstance = this;
+		jQuery('.search-link .keyword-input').on('keypress',function(e){
+			if(e.which == 13) {
+
+				var element = jQuery(e.currentTarget);
+				var searchValue = element.val();
+				var data = {};
+				data['searchValue'] = searchValue;
+				element.trigger(thisInstance._SearchIntiatedEventName,data);
+			}
+		});
+	},
+
+	registerAdvanceSeachIntiator : function () {
+		jQuery('#adv-search').on('click',function(e){
+			var advanceSearchInstance = new Vtiger_AdvanceSearch_Js();
+			advanceSearchInstance.advanceSearchTriggerIntiatorHandler();
+//			advanceSearchInstance.initiateSearch().then(function() {
+//				advanceSearchInstance.selectBasicSearchValue();
+//			});
+		});
+	},
+
+	/**
+	 * Function which will handle the reference auto complete event registrations
+	 * @params - container <jQuery> - element in which auto complete fields needs to be searched
+	 */
+	registerAutoCompleteFields : function(container) {
+		var thisInstance = this;
+		container.find('input.autoComplete').autocomplete({
+			'minLength' : '3',
+			'source' : function(request, response){
+				//element will be array of dom elements
+				//here this refers to auto complete instance
+				var inputElement = jQuery(this.element[0]);
+				var searchValue = request.term;
+				var params = thisInstance.getReferenceSearchParams(inputElement);
 				params.module = app.getModuleName();
 				if (jQuery('#QuickCreate').length > 0) {
 					params.module = container.find('[name="module"]').val();
 				}
-                params.search_value = searchValue;
-                if(params.search_module && params.search_module!= 'undefined') {
-                    thisInstance.searchModuleNames(params).then(function(data){
-                        var reponseDataList = new Array();
-                        var serverDataFormat = data;
-                        if(serverDataFormat.length <= 0) {
-                                jQuery(inputElement).val('');
-                                serverDataFormat = new Array({
-                                        'label' : 'No Results Found',
-                                        'type'  : 'no results'
-                                });
-                        }
-                        for(var id in serverDataFormat){
-                                var responseData = serverDataFormat[id];
-                                reponseDataList.push(responseData);
-                        }
-                        response(reponseDataList);
-                    });
-                } else {
-                    jQuery(inputElement).val('');
-                    serverDataFormat = new Array({
-                        'label' : 'No Results Found',
-                        'type'  : 'no results'
-                    });
-                    response(serverDataFormat);
-                }
-            },
-            'select' : function(event, ui ){
-                var selectedItemData = ui.item;
-                //To stop selection if no results is selected
-                if(typeof selectedItemData.type != 'undefined' && selectedItemData.type=="no results"){
-                        return false;
-                }
-                var element = jQuery(this);
-                var parent = element.closest('td');
-                if(parent.length == 0){
-                    parent = element.closest('.fieldValue');
-                }
-                var sourceField = parent.find('.sourceField');
-                selectedItemData.record = selectedItemData.id;
-                selectedItemData.source_module = parent.find('input[name="popupReferenceModule"]').val();
-                selectedItemData.selectedName = selectedItemData.label;
-                var fieldName = sourceField.attr("name");
-                parent.find('input[name="'+fieldName+'"]').val(selectedItemData.id);
-                element.attr("value",selectedItemData.id);
-                parent.find('.clearReferenceSelection').removeClass('hide');
-                parent.find('.referencefield-wrapper').addClass('selected');
-                element.attr("disabled","disabled");
-                //trigger reference field selection event
-                sourceField.trigger(Vtiger_Edit_Js.referenceSelectionEvent,selectedItemData);
-                //trigger post reference selection
-                sourceField.trigger(Vtiger_Edit_Js.postReferenceSelectionEvent,{'data':selectedItemData});
-            }
-        });
-    },
-    
-    /**
-     * Function to register clear reference selection event
-     * @param <jQUery> container
-     */
-    registerClearReferenceSelectionEvent : function(container) {
-        container.find('.clearReferenceSelection').on('click', function(e){
-            e.preventDefault();
-            var element = jQuery(e.currentTarget);
-            var parentTdElement = element.closest('td');
-            if(parentTdElement.length == 0){
-                parentTdElement = element.closest('.fieldValue');
-            }
-            var inputElement = parentTdElement.find('.inputElement');
-            var fieldName = parentTdElement.find('.sourceField').attr("name");
-
-            parentTdElement.find('.referencefield-wrapper').removeClass('selected');
-            inputElement.removeAttr("disabled").removeAttr('readonly');
-            inputElement.attr("value","");
-            inputElement.val("");
-            parentTdElement.find('input[name="'+fieldName+'"]').val("");
-            element.addClass('hide');
-            element.trigger(Vtiger_Edit_Js.referenceDeSelectionEvent);
-        });
-    },
-    
-    /**
-     * Function which will register event for create of reference record
-     * This will allow users to create reference record from edit view of other record
-     */
-    registerReferenceCreate : function(container) {
-        var thisInstance = this;
-        container.on('click','.createReferenceRecord', function(e) {
-            var element = jQuery(e.currentTarget);
-            var controlElementTd = thisInstance.getParentElement(element);
-            thisInstance.referenceCreateHandler(controlElementTd);
-        });
-    },
-    
-    /**
-     * Funtion to register popup search event for reference field
-     * @param <jQuery> container
-     */
-    referenceModulePopupRegisterEvent : function(container) {
-        var thisInstance = this;
+				params.search_value = searchValue;
+				if(params.search_module && params.search_module!= 'undefined') {
+					thisInstance.searchModuleNames(params).then(function(data){
+						var reponseDataList = new Array();
+						var serverDataFormat = data;
+						if(serverDataFormat.length <= 0) {
+								jQuery(inputElement).val('');
+								serverDataFormat = new Array({
+										'label' : 'No Results Found',
+										'type'	: 'no results'
+								});
+						}
+						for(var id in serverDataFormat){
+								var responseData = serverDataFormat[id];
+								reponseDataList.push(responseData);
+						}
+						response(reponseDataList);
+					});
+				} else {
+					jQuery(inputElement).val('');
+					serverDataFormat = new Array({
+						'label' : 'No Results Found',
+						'type'	: 'no results'
+					});
+					response(serverDataFormat);
+				}
+			},
+			'select' : function(event, ui ){
+				var selectedItemData = ui.item;
+				//To stop selection if no results is selected
+				if(typeof selectedItemData.type != 'undefined' && selectedItemData.type=="no results"){
+						return false;
+				}
+				var element = jQuery(this);
+				var parent = element.closest('td');
+				if(parent.length == 0){
+					parent = element.closest('.fieldValue');
+				}
+				var sourceField = parent.find('.sourceField');
+				selectedItemData.record = selectedItemData.id;
+				selectedItemData.source_module = parent.find('input[name="popupReferenceModule"]').val();
+				selectedItemData.selectedName = selectedItemData.label;
+				var fieldName = sourceField.attr("name");
+				parent.find('input[name="'+fieldName+'"]').val(selectedItemData.id);
+				element.attr("value",selectedItemData.id);
+				parent.find('.clearReferenceSelection').removeClass('hide');
+				parent.find('.referencefield-wrapper').addClass('selected');
+				element.attr("disabled","disabled");
+				//trigger reference field selection event
+				sourceField.trigger(Vtiger_Edit_Js.referenceSelectionEvent,selectedItemData);
+				//trigger post reference selection
+				sourceField.trigger(Vtiger_Edit_Js.postReferenceSelectionEvent,{'data':selectedItemData});
+			}
+		});
+	},
+
+	/**
+	 * Function to register clear reference selection event
+	 * @param <jQUery> container
+	 */
+	registerClearReferenceSelectionEvent : function(container) {
+		container.find('.clearReferenceSelection').on('click', function(e){
+			e.preventDefault();
+			var element = jQuery(e.currentTarget);
+			var parentTdElement = element.closest('td');
+			if(parentTdElement.length == 0){
+				parentTdElement = element.closest('.fieldValue');
+			}
+			var inputElement = parentTdElement.find('.inputElement');
+			var fieldName = parentTdElement.find('.sourceField').attr("name");
+
+			parentTdElement.find('.referencefield-wrapper').removeClass('selected');
+			inputElement.removeAttr("disabled").removeAttr('readonly');
+			inputElement.attr("value","");
+			inputElement.val("");
+			parentTdElement.find('input[name="'+fieldName+'"]').val("");
+			element.addClass('hide');
+			element.trigger(Vtiger_Edit_Js.referenceDeSelectionEvent);
+		});
+	},
+
+	/**
+	 * Function which will register event for create of reference record
+	 * This will allow users to create reference record from edit view of other record
+	 */
+	registerReferenceCreate : function(container) {
+		var thisInstance = this;
+		container.on('click','.createReferenceRecord', function(e) {
+			var element = jQuery(e.currentTarget);
+			var controlElementTd = thisInstance.getParentElement(element);
+			thisInstance.referenceCreateHandler(controlElementTd);
+		});
+	},
+
+	/**
+	 * Funtion to register popup search event for reference field
+	 * @param <jQuery> container
+	 */
+	referenceModulePopupRegisterEvent : function(container) {
+		var thisInstance = this;
 		container.off('click', '.relatedPopup');
-        container.on("click",'.relatedPopup',function(e) {
-            thisInstance.openPopUp(e);
-        });
-        container.on('change','.referenceModulesList',function(e){
-            var element = jQuery(e.currentTarget);
-            var closestTD = thisInstance.getParentElement(element).next();
-            var popupReferenceModule = element.val();
-            var referenceModuleElement = jQuery('input[name="popupReferenceModule"]', closestTD).length ? 
-            jQuery('input[name="popupReferenceModule"]', closestTD) : jQuery('input.popupReferenceModule', closestTD);
-            var prevSelectedReferenceModule = referenceModuleElement.val();
-            referenceModuleElement.val(popupReferenceModule);
-            
-            //If Reference module is changed then we should clear the previous value
-            if(prevSelectedReferenceModule != popupReferenceModule) {
-                    closestTD.find('.clearReferenceSelection').trigger('click');
-            }
-        });
-    },
-    
-    /**
-     * Function to open popup list modal
-     */
-    openPopUp : function(e) {
-        var thisInstance = this;
-        var parentElem = thisInstance.getParentElement(jQuery(e.target));
-
-        var params = this.getPopUpParams(parentElem);
-        params.view = 'Popup';
-
-        var isMultiple = false;
-        if(params.multi_select) {
-                isMultiple = true;
-        }
-
-        var sourceFieldElement = jQuery('input[class="sourceField"]',parentElem);
-
-        var prePopupOpenEvent = jQuery.Event(Vtiger_Edit_Js.preReferencePopUpOpenEvent);
-        sourceFieldElement.trigger(prePopupOpenEvent);
-
-        if(prePopupOpenEvent.isDefaultPrevented()) {
-                return ;
-        }
-        var popupInstance = Vtiger_Popup_Js.getInstance();
-        
-        app.event.off(Vtiger_Edit_Js.popupSelectionEvent);
-        app.event.one(Vtiger_Edit_Js.popupSelectionEvent,function(e,data) {
-            var responseData = JSON.parse(data);
-            var dataList = new Array();
+		container.on("click",'.relatedPopup',function(e) {
+			thisInstance.openPopUp(e);
+		});
+		container.on('change','.referenceModulesList',function(e){
+			var element = jQuery(e.currentTarget);
+			var closestTD = thisInstance.getParentElement(element).next();
+			var popupReferenceModule = element.val();
+			var referenceModuleElement = jQuery('input[name="popupReferenceModule"]', closestTD).length ? 
+			jQuery('input[name="popupReferenceModule"]', closestTD) : jQuery('input.popupReferenceModule', closestTD);
+			var prevSelectedReferenceModule = referenceModuleElement.val();
+			referenceModuleElement.val(popupReferenceModule);
+
+			//If Reference module is changed then we should clear the previous value
+			if(prevSelectedReferenceModule != popupReferenceModule) {
+					closestTD.find('.clearReferenceSelection').trigger('click');
+			}
+		});
+	},
+
+	/**
+	 * Function to open popup list modal
+	 */
+	openPopUp : function(e) {
+		var thisInstance = this;
+		var parentElem = thisInstance.getParentElement(jQuery(e.target));
+
+		var params = this.getPopUpParams(parentElem);
+		params.view = 'Popup';
+
+		var isMultiple = false;
+		if(params.multi_select) {
+				isMultiple = true;
+		}
+
+		var sourceFieldElement = jQuery('input[class="sourceField"]',parentElem);
+
+		var prePopupOpenEvent = jQuery.Event(Vtiger_Edit_Js.preReferencePopUpOpenEvent);
+		sourceFieldElement.trigger(prePopupOpenEvent);
+
+		if(prePopupOpenEvent.isDefaultPrevented()) {
+				return ;
+		}
+		var popupInstance = Vtiger_Popup_Js.getInstance();
+
+		app.event.off(Vtiger_Edit_Js.popupSelectionEvent);
+		app.event.one(Vtiger_Edit_Js.popupSelectionEvent,function(e,data) {
+			var responseData = JSON.parse(data);
+			var dataList = new Array();
 			jQuery.each(responseData, function(key, value){
 				var counter = 0;
 				for(var valuekey in value){
@@ -965,14 +965,14 @@ Vtiger.Class('Vtiger_Index_Js', {
 				}
 			});
 
-            if(isMultiple) {
-                sourceFieldElement.trigger(Vtiger_Edit_Js.refrenceMultiSelectionEvent,{'data':dataList});
-            }
-            sourceFieldElement.trigger(Vtiger_Edit_Js.postReferenceSelectionEvent,{'data':responseData});
-        });
-        popupInstance.showPopup(params,Vtiger_Edit_Js.popupSelectionEvent,function() {});
-    },
-    
+			if(isMultiple) {
+				sourceFieldElement.trigger(Vtiger_Edit_Js.refrenceMultiSelectionEvent,{'data':dataList});
+			}
+			sourceFieldElement.trigger(Vtiger_Edit_Js.postReferenceSelectionEvent,{'data':responseData});
+		});
+		popupInstance.showPopup(params,Vtiger_Edit_Js.popupSelectionEvent,function() {});
+	},
+
 	/**
 	 * Functions changes the value of max upload size variable
 	 * @param {type} container
@@ -1004,39 +1004,39 @@ Vtiger.Class('Vtiger_Index_Js', {
 	 */
 	registerFileChangeEvent: function () {
 		 var thisInstance = this;
-                    var container = jQuery('body');
-            Vtiger_Index_Js.files = '';
-            container.on('change', 'input[name="filename[]"],input[name="imagename[]"]', function(e){
-                if(e.target.type == "text") return false;
-				
+					var container = jQuery('body');
+			Vtiger_Index_Js.files = '';
+			container.on('change', 'input[name="filename[]"],input[name="imagename[]"]', function(e){
+				if(e.target.type == "text") return false;
+
 				var files_uploaded=[];
 				var fileSize = 0;
 				jQuery.each(e.target.files,function(key,element){
 					files_uploaded[key] = element;
 					fileSize += Number(element['size']);
 				});
-				
-				
-                Vtiger_Index_Js.files = files_uploaded;
-                var element = container.find('input[name="filename[]"],input[name="imagename[]"]');
-                //ignore all other types than file 
-                if(element.attr('type') != 'file'){
-                        return ;
-                }
-                var uploadFileSizeHolder = element.closest('.fileUploadContainer').find('.uploadedFileSize');
-                var maxFileSize = thisInstance.getMaxiumFileUploadingSize(container);
-                if(fileSize > maxFileSize) {
+
+
+				Vtiger_Index_Js.files = files_uploaded;
+				var element = container.find('input[name="filename[]"],input[name="imagename[]"]');
+				//ignore all other types than file 
+				if(element.attr('type') != 'file'){
+						return ;
+				}
+				var uploadFileSizeHolder = element.closest('.fileUploadContainer').find('.uploadedFileSize');
+				var maxFileSize = thisInstance.getMaxiumFileUploadingSize(container);
+				if(fileSize > maxFileSize) {
 					alert(app.vtranslate('JS_EXCEEDS_MAX_UPLOAD_SIZE'));
 					var removeFileLinks = jQuery('.MultiFile-remove');
 					jQuery(removeFileLinks[removeFileLinks.length - 1]).click();
-                } else {
-                    if(container.length > 1){
-                        jQuery('div.fieldsContainer').find('form#I_form').find('input[name="filename"]').css('width','80px');
-                        jQuery('div.fieldsContainer').find('form#W_form').find('input[name="filename"]').css('width','80px');
-                    } else {
-                        container.find('input[name="filename[]"]').css('width','80px');
-                    }
-                }
+				} else {
+					if(container.length > 1){
+						jQuery('div.fieldsContainer').find('form#I_form').find('input[name="filename"]').css('width','80px');
+						jQuery('div.fieldsContainer').find('form#W_form').find('input[name="filename"]').css('width','80px');
+					} else {
+						container.find('input[name="filename[]"]').css('width','80px');
+					}
+				}
 		});
 	},
 
@@ -1055,9 +1055,9 @@ Vtiger.Class('Vtiger_Index_Js', {
 			setTimeout(indexInstance.registerMultiUpload, 50); //wait 50 ms, then try again
 		}
 	},
-	
+
 	//removed toggle class for quickcreate
-    
+
 	/**
 	 * Function register on mouseover and mouseout events
 	 * @returns {undefined}
@@ -1069,38 +1069,38 @@ Vtiger.Class('Vtiger_Index_Js', {
 			jQuery(e.currentTarget).closest('div').find('a[name="downloadfile"] i').addClass('hide');
 		});
 	},
-    /*
-     * Function to get reference select popup parameters
-     */
-    getPopUpParams : function(container) {
-        var params = {};
-        var sourceModule = app.getModuleName();
-        var editTaskContainer = jQuery('[name="editTask"]');
-        if(editTaskContainer.length > 0){
-                sourceModule = editTaskContainer.find('#sourceModule').val();
-        }
-        var quickCreateConatiner = jQuery('[name="QuickCreate"]');
-        if(quickCreateConatiner.length!=0){
-                sourceModule = quickCreateConatiner.find('input[name="module"]').val();
-        }
+	/*
+	 * Function to get reference select popup parameters
+	 */
+	getPopUpParams : function(container) {
+		var params = {};
+		var sourceModule = app.getModuleName();
+		var editTaskContainer = jQuery('[name="editTask"]');
+		if(editTaskContainer.length > 0){
+				sourceModule = editTaskContainer.find('#sourceModule').val();
+		}
+		var quickCreateConatiner = jQuery('[name="QuickCreate"]');
+		if(quickCreateConatiner.length!=0){
+				sourceModule = quickCreateConatiner.find('input[name="module"]').val();
+		}
 		var searchResultContainer = jQuery('#searchResults-container');
 		if(searchResultContainer.length) {
 			sourceModule = jQuery('select#searchModuleList').val();
 		}
-        var popupReferenceModuleElement = jQuery('input[name="popupReferenceModule"]',container).length ? 
-        jQuery('input[name="popupReferenceModule"]',container) : jQuery('input.popupReferenceModule',container);
-        var popupReferenceModule = popupReferenceModuleElement.val();
-        var sourceFieldElement = jQuery('input[class="sourceField"]',container);
+		var popupReferenceModuleElement = jQuery('input[name="popupReferenceModule"]',container).length ? 
+		jQuery('input[name="popupReferenceModule"]',container) : jQuery('input.popupReferenceModule',container);
+		var popupReferenceModule = popupReferenceModuleElement.val();
+		var sourceFieldElement = jQuery('input[class="sourceField"]',container);
 		if(!sourceFieldElement.length) {
 			sourceFieldElement = jQuery('input.sourceField',container);
 		}
-        var sourceField = sourceFieldElement.attr('name');
-        var sourceRecordElement = jQuery('input[name="record"]');
-        var sourceRecordId = '';
+		var sourceField = sourceFieldElement.attr('name');
+		var sourceRecordElement = jQuery('input[name="record"]');
+		var sourceRecordId = '';
 		var recordId = app.getRecordId();
-        if(sourceRecordElement.length > 0) {
-            sourceRecordId = sourceRecordElement.val();
-        } else if(recordId) {
+		if(sourceRecordElement.length > 0) {
+			sourceRecordId = sourceRecordElement.val();
+		} else if(recordId) {
 			sourceRecordId = recordId;
 		} else if(app.view() == 'List') {
 			var editRecordId = jQuery('#listview-table').find('tr.listViewEntries.edited').data('id');
@@ -1108,46 +1108,46 @@ Vtiger.Class('Vtiger_Index_Js', {
 				sourceRecordId = editRecordId;
 			}
 		}
-		
+
 		if(searchResultContainer.length) {
 			sourceRecordId = searchResultContainer.find('tr.listViewEntries.edited').data('id')
 		}
 
-        var isMultiple = false;
-        if(sourceFieldElement.data('multiple') == true) {
-            isMultiple = true;
-        }
-
-        // TODO : Need to recheck. We don't have reference field module name if that module is disabled
-        if(typeof popupReferenceModule == "undefined"){
-            popupReferenceModule = "undefined";
-        }
-
-        var params = {
-            'module' : popupReferenceModule,
-            'src_module' : sourceModule,
-            'src_field' : sourceField,
-            'src_record' : sourceRecordId
-        }
-
-        if(isMultiple) {
-            params.multi_select = true ;
-        }
-        return params;
-    },
-    
-    /*
-     * Function to set reference field value
-     */
-    setReferenceFieldValue : function(container, params) {
-        var sourceField = container.find('input.sourceField').attr('name');
-        var fieldElement = container.find('input[name="'+sourceField+'"]');
-        var sourceFieldDisplay = sourceField+"_display";
-        var fieldDisplayElement = container.find('input[name="'+sourceFieldDisplay+'"]');
-        var popupReferenceModuleElement = container.find('input[name="popupReferenceModule"]').length ? container.find('input[name="popupReferenceModule"]') : container.find('input.popupReferenceModule');
-        var popupReferenceModule = popupReferenceModuleElement.val();
-        var selectedName = params.name;
-        var id = params.id;
+		var isMultiple = false;
+		if(sourceFieldElement.data('multiple') == true) {
+			isMultiple = true;
+		}
+
+		// TODO : Need to recheck. We don't have reference field module name if that module is disabled
+		if(typeof popupReferenceModule == "undefined"){
+			popupReferenceModule = "undefined";
+		}
+
+		var params = {
+			'module' : popupReferenceModule,
+			'src_module' : sourceModule,
+			'src_field' : sourceField,
+			'src_record' : sourceRecordId
+		}
+
+		if(isMultiple) {
+			params.multi_select = true ;
+		}
+		return params;
+	},
+
+	/*
+	 * Function to set reference field value
+	 */
+	setReferenceFieldValue : function(container, params) {
+		var sourceField = container.find('input.sourceField').attr('name');
+		var fieldElement = container.find('input[name="'+sourceField+'"]');
+		var sourceFieldDisplay = sourceField+"_display";
+		var fieldDisplayElement = container.find('input[name="'+sourceFieldDisplay+'"]');
+		var popupReferenceModuleElement = container.find('input[name="popupReferenceModule"]').length ? container.find('input[name="popupReferenceModule"]') : container.find('input.popupReferenceModule');
+		var popupReferenceModule = popupReferenceModuleElement.val();
+		var selectedName = params.name;
+		var id = params.id;
 
 		if (id && selectedName) {
 			if(!fieldDisplayElement.length) {
@@ -1172,64 +1172,64 @@ Vtiger.Class('Vtiger_Index_Js', {
 			}
 			fieldElement.trigger(Vtiger_Edit_Js.referenceSelectionEvent, {'source_module' : popupReferenceModule, 'record' : id, 'selectedName' : selectedName});
 		}
-    },
-    
-    /*
-     * Function to get referenced module name
-     */
-    getReferencedModuleName : function(parentElement) {
-        var referenceModuleElement = jQuery('input[name="popupReferenceModule"]',parentElement).length ? 
-        jQuery('input[name="popupReferenceModule"]',parentElement) : jQuery('input.popupReferenceModule',parentElement);
-        return referenceModuleElement.val();
-    },
-    
-    /*
-     * Function to show quick create modal while creating from reference field
-     */
-    referenceCreateHandler : function(container) {
-        var thisInstance = this;
-        var postQuickCreateSave  = function(data) {
+	},
+
+	/*
+	 * Function to get referenced module name
+	 */
+	getReferencedModuleName : function(parentElement) {
+		var referenceModuleElement = jQuery('input[name="popupReferenceModule"]',parentElement).length ? 
+		jQuery('input[name="popupReferenceModule"]',parentElement) : jQuery('input.popupReferenceModule',parentElement);
+		return referenceModuleElement.val();
+	},
+
+	/*
+	 * Function to show quick create modal while creating from reference field
+	 */
+	referenceCreateHandler : function(container) {
+		var thisInstance = this;
+		var postQuickCreateSave = function(data) {
 			var module = thisInstance.getReferencedModuleName(container);
 			var params = {};
-            params.name = data._recordLabel;
-            params.id = data._recordId;
+			params.name = data._recordLabel;
+			params.id = data._recordId;
 			params.module = module;
-            thisInstance.setReferenceFieldValue(container, params);
-			
-            var tdElement = thisInstance.getParentElement(container.find('[value="'+ module +'"]'));
-            var sourceField = tdElement.find('input[class="sourceField"]').attr('name');
-            var fieldElement = tdElement.find('input[name="'+sourceField+'"]');
+			thisInstance.setReferenceFieldValue(container, params);
+
+			var tdElement = thisInstance.getParentElement(container.find('[value="'+ module +'"]'));
+			var sourceField = tdElement.find('input[class="sourceField"]').attr('name');
+			var fieldElement = tdElement.find('input[name="'+sourceField+'"]');
 			thisInstance.autoFillElement = fieldElement;
 			thisInstance.postRefrenceSearch(params, container);
-            
-            tdElement.find('input[class="sourceField"]').trigger(Vtiger_Edit_Js.postReferenceQuickCreateSave, {'data' : data});
-        }
-
-        var referenceModuleName = this.getReferencedModuleName(container);
-        var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ referenceModuleName +'"]');
-        if(quickCreateNode.length <= 0) {
-            var notificationOptions = {
-                'title' : app.vtranslate('JS_NO_CREATE_OR_NOT_QUICK_CREATE_ENABLED')
-            }
-            app.helper.showAlertNotification(notificationOptions);
-        }
-        quickCreateNode.trigger('click',[{'callbackFunction':postQuickCreateSave}]);
-    },
-    
-   /**
-    * Function to get reference search params
-    */
-    getReferenceSearchParams : function(element){
-        var tdElement = this.getParentElement(element);
-        var params = {};
-        var referenceModuleElement = jQuery('input[name="popupReferenceModule"]',tdElement).length ? 
-        jQuery('input[name="popupReferenceModule"]',tdElement) : jQuery('input.popupReferenceModule',tdElement);
-        var searchModule =  referenceModuleElement.val();
-        params.search_module = searchModule;
-        return params;
-    },
-    
-    searchModuleNames : function(params) {
+
+			tdElement.find('input[class="sourceField"]').trigger(Vtiger_Edit_Js.postReferenceQuickCreateSave, {'data' : data});
+		}
+
+		var referenceModuleName = this.getReferencedModuleName(container);
+		var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ referenceModuleName +'"]');
+		if(quickCreateNode.length <= 0) {
+			var notificationOptions = {
+				'title' : app.vtranslate('JS_NO_CREATE_OR_NOT_QUICK_CREATE_ENABLED')
+			}
+			app.helper.showAlertNotification(notificationOptions);
+		}
+		quickCreateNode.trigger('click',[{'callbackFunction':postQuickCreateSave}]);
+	},
+
+	/**
+	* Function to get reference search params
+	*/
+	getReferenceSearchParams : function(element){
+		var tdElement = this.getParentElement(element);
+		var params = {};
+		var referenceModuleElement = jQuery('input[name="popupReferenceModule"]',tdElement).length ? 
+		jQuery('input[name="popupReferenceModule"]',tdElement) : jQuery('input.popupReferenceModule',tdElement);
+		var searchModule = referenceModuleElement.val();
+		params.search_module = searchModule;
+		return params;
+	},
+
+	searchModuleNames : function(params) {
 		var aDeferred = jQuery.Deferred();
 
 		if(typeof params.module == 'undefined') {
@@ -1239,7 +1239,7 @@ Vtiger.Class('Vtiger_Index_Js', {
 		if(typeof params.action == 'undefined') {
 			params.action = 'BasicAjax';
 		}
-		
+
 		if(typeof params.base_record == 'undefined') {
 			var record = jQuery('[name="record"]');
 			var recordId = app.getRecordId();
@@ -1262,340 +1262,340 @@ Vtiger.Class('Vtiger_Index_Js', {
 				//TODO : Handle error
 				aDeferred.reject();
 			}
-        );
+		);
 		return aDeferred.promise();
 	},
-    
-    /*
-     * Function to get Field parent element
-     */
-    getParentElement : function(element) {
-        var parent = element.closest('td');
-        // added to support from all views which may not be table format
-        if(parent.length === 0) {
-            parent = element.closest('.td').length ? 
-            element.closest('.td') : element.closest('.fieldValue');
-        }
-        return parent;
-    },
-    
-    getUserNameForId : function(id) {
-        for(var key in userList) {
-            if(userList[key] === id) {
-                return key;
-            }
-        }
-        return null;
-    },
-    
-    modulesMenuScrollbar : function(){
+
+	/*
+	 * Function to get Field parent element
+	 */
+	getParentElement : function(element) {
+		var parent = element.closest('td');
+		// added to support from all views which may not be table format
+		if(parent.length === 0) {
+			parent = element.closest('.td').length ? 
+			element.closest('.td') : element.closest('.fieldValue');
+		}
+		return parent;
+	},
+
+	getUserNameForId : function(id) {
+		for(var key in userList) {
+			if(userList[key] === id) {
+				return key;
+			}
+		}
+		return null;
+	},
+
+	modulesMenuScrollbar : function(){
 		app.helper.showVerticalScroll(jQuery("#modnavigator #modules-menu"),{autoHideScrollbar:true});
-    },
-    
-    mentionerCallBack: function() {
-        jQuery(document).on('textComplete:select', '.mention_listener', function(e, word, strategy) {
-            //First charecter is " " if user mentioned in the begining
-            //Removing it here
-            var value = $(e.currentTarget).val();
-            value = app.getDecodedValue(value);
-            if(value.charAt(0) === ' ') value = value.substr(1);
-            $(e.currentTarget).val(value);
-            Vtiger_Index_Js.hideNC = false;
-        });
-    },
-	
-    registerChangeTemplateEvent: function (container, recordId) {
-        var sourceModule = container.find('#sourceModuleName').val();
-        var thisInstance = this;
-        var select = container.find('#fieldList');
-        select.on("change", function () {
-            var templateId = select.val();
-            thisInstance.showQuickPreviewForId(recordId, sourceModule, app.getAppName(), templateId);
-        });
-    },
-    
-    registerMoreRecentUpdatesClickEvent: function (container, recordId) {
-        var moduleName = container.find('#sourceModuleName').val();
-        container.find('.moreRecentUpdates').on('click', function () {
-            var recentUpdateURL = "index.php?view=Detail&mode=showRecentActivities&page=1&module=" + moduleName + "&record=" + recordId + "&tab_label=LBL_UPDATES";
-            window.location.href = recentUpdateURL;
-        });
-    },
-    
-    registerNavigationEvents: function (container) {
-        this.registerNextRecordClickEvent(container);
-        this.registerPreviousRecordClickEvent(container);
-    },
-    
-    registerNextRecordClickEvent: function(container){
-        var self = this;
-        container.find('#quickPreviewNextRecordButton').on('click',function(e){
-            var element = jQuery(e.currentTarget);
-            var nextRecordId = element.data('record') || element.data('id');
-            var moduleName = container.find('#sourceModuleName').val();
-            var appName = element.data('app');
-            var templateId, fieldList = container.find('#fieldList');
-            if(fieldList.length) {
-                templateId = fieldList.val();
-            }
-            self.showQuickPreviewForId(nextRecordId, moduleName, appName, templateId, false, 'navigation');
-        });
-    },
-    
-    registerPreviousRecordClickEvent: function(container){
-        var self = this;
-        container.find('#quickPreviewPreviousRecordButton').on('click', function (e) {
-            var element = jQuery(e.currentTarget);
-            var prevRecordId = element.data('record') || element.data('id');
-            var moduleName = container.find('#sourceModuleName').val();
-            var appName = element.data('app');
-            var templateId, fieldList = container.find('#fieldList');
-            if(fieldList.length) {
-                templateId = fieldList.val();
-            }
-            self.showQuickPreviewForId(prevRecordId, moduleName, appName, templateId, false, 'navigation');
-        });
-    },
-    
-    _showInventoryQuickPreviewForId: function (recordId, moduleName, templateId, isReference, mode) {
-        var thisInstance = this;
-        var params = {};
-        if(typeof moduleName === 'undefined') {
-            moduleName = app.module();
-        }
-        params['module'] = moduleName;
-        params['record'] = recordId;
-        params['view'] = 'RecordQuickPreview';
-        if(isReference == true){
-            params['navigation'] = 'false';
-        }
-        else{
-        params['navigation'] = 'true';
-        }
-
-        if (templateId) {
-            params['templateid'] = templateId;
-        }
-		
+	},
+
+	mentionerCallBack: function() {
+		jQuery(document).on('textComplete:select', '.mention_listener', function(e, word, strategy) {
+			//First charecter is " " if user mentioned in the begining
+			//Removing it here
+			var value = $(e.currentTarget).val();
+			value = app.getDecodedValue(value);
+			if(value.charAt(0) === ' ') value = value.substr(1);
+			$(e.currentTarget).val(value);
+			Vtiger_Index_Js.hideNC = false;
+		});
+	},
+
+	registerChangeTemplateEvent: function (container, recordId) {
+		var sourceModule = container.find('#sourceModuleName').val();
+		var thisInstance = this;
+		var select = container.find('#fieldList');
+		select.on("change", function () {
+			var templateId = select.val();
+			thisInstance.showQuickPreviewForId(recordId, sourceModule, app.getAppName(), templateId);
+		});
+	},
+
+	registerMoreRecentUpdatesClickEvent: function (container, recordId) {
+		var moduleName = container.find('#sourceModuleName').val();
+		container.find('.moreRecentUpdates').on('click', function () {
+			var recentUpdateURL = "index.php?view=Detail&mode=showRecentActivities&page=1&module=" + moduleName + "&record=" + recordId + "&tab_label=LBL_UPDATES";
+			window.location.href = recentUpdateURL;
+		});
+	},
+
+	registerNavigationEvents: function (container) {
+		this.registerNextRecordClickEvent(container);
+		this.registerPreviousRecordClickEvent(container);
+	},
+
+	registerNextRecordClickEvent: function(container){
+		var self = this;
+		container.find('#quickPreviewNextRecordButton').on('click',function(e){
+			var element = jQuery(e.currentTarget);
+			var nextRecordId = element.data('record') || element.data('id');
+			var moduleName = container.find('#sourceModuleName').val();
+			var appName = element.data('app');
+			var templateId, fieldList = container.find('#fieldList');
+			if(fieldList.length) {
+				templateId = fieldList.val();
+			}
+			self.showQuickPreviewForId(nextRecordId, moduleName, appName, templateId, false, 'navigation');
+		});
+	},
+
+	registerPreviousRecordClickEvent: function(container){
+		var self = this;
+		container.find('#quickPreviewPreviousRecordButton').on('click', function (e) {
+			var element = jQuery(e.currentTarget);
+			var prevRecordId = element.data('record') || element.data('id');
+			var moduleName = container.find('#sourceModuleName').val();
+			var appName = element.data('app');
+			var templateId, fieldList = container.find('#fieldList');
+			if(fieldList.length) {
+				templateId = fieldList.val();
+			}
+			self.showQuickPreviewForId(prevRecordId, moduleName, appName, templateId, false, 'navigation');
+		});
+	},
+
+	_showInventoryQuickPreviewForId: function (recordId, moduleName, templateId, isReference, mode) {
+		var thisInstance = this;
+		var params = {};
+		if(typeof moduleName === 'undefined') {
+			moduleName = app.module();
+		}
+		params['module'] = moduleName;
+		params['record'] = recordId;
+		params['view'] = 'RecordQuickPreview';
+		if(isReference == true){
+			params['navigation'] = 'false';
+		}
+		else{
+		params['navigation'] = 'true';
+		}
+
+		if (templateId) {
+			params['templateid'] = templateId;
+		}
+
 		if(mode) {
 			params['preview_mode'] = mode;
 		}
 
-        app.helper.showProgress();
-        app.request.get({data: params}).then(function (err, response) {
-            app.helper.hideProgress();
-            if (templateId && mode != 'navigation') {
-                jQuery('#pdfViewer').html(response);
-                return;
-            }
-            var params = {
-                cb: function () {
-                    thisInstance.registerChangeTemplateEvent(jQuery('#helpPageOverlay'), recordId);
-                    thisInstance.registerNavigationEvents(jQuery('#helpPageOverlay'));
-                    ListTemplates_Js = new PrintTemplates_ListTemplates_Js();
-                    ListTemplates_Js.registerEvents();
-                }
-            };
-            jQuery('#helpPageOverlay').css({"width": "870px", "box-shadow": "-8px 0 5px -5px lightgrey", 'height': '100vh', 'background': 'white'});
-            app.helper.loadHelpPageOverlay(response, params);
-        });
-    },
-    
-    _showQuickPreviewForId: function (recordId, moduleName, appName, isReference) {
-        var self = this;
-        var params = {};
-        if (typeof moduleName === 'undefined') {
-            moduleName = app.module();
-        }
-        params['module'] = moduleName;
-        params['record'] = recordId;
-        params['view'] = 'RecordQuickPreview';
-        if(isReference === true){
-            params['navigation'] = 'false';
-        }
-        else{
-            params['navigation'] = 'true';
-        }
-        params['app'] = appName;
-
-        app.helper.showProgress();
-        app.request.get({data: params}).then(function (err, response) {
-            app.helper.hideProgress();
-            jQuery('#helpPageOverlay').css({"width": "550px", "box-shadow": "-8px 0 5px -5px lightgrey", 'height': '100vh', 'background': 'white'});
-            var callBack = function(container){
-                self.registerMoreRecentUpdatesClickEvent(container,recordId);
-                //Register Navigation Events
-                self.registerNavigationEvents(container);
-            };
-            app.helper.loadHelpPageOverlay(response, {
-                'cb' : callBack
-            });
-            var params = {
-                setHeight: "100%",
-                alwaysShowScrollbar: 2,
-                autoExpandScrollbar: true,
-                setTop: 0,
-                scrollInertia: 70,
-                mouseWheel: {preventDefault: true}
-            };
-            app.helper.showVerticalScroll(jQuery('.quickPreview .modal-body'), params);
-        });
-    },
-    
-    isInventoryModule : function(moduleName) {
-        var inventoryModules  = jQuery('#inventoryModules').val();
-        return inventoryModules.indexOf(moduleName) !== -1;
-    },
-    
-    showQuickPreviewForId: function(recordId, moduleName, appName, templateId, isReference, mode) {
-        var self = this;
-        if(self.isInventoryModule(moduleName) && moduleName != 'Subscription') {
-            self._showInventoryQuickPreviewForId(recordId, moduleName, templateId, isReference, mode);
-        } else {
-            self._showQuickPreviewForId(recordId, moduleName, appName, isReference);
-        }
-    },
-    
-    registerReferencePreviewEvent : function() {
-        var self = this;
-        var view = app.view();
-        jQuery('body').on('click', '.js-reference-display-value', function(e) {
-            e.preventDefault();
-            e.stopPropagation();
-            var currentTarget = jQuery(this);
-            if(currentTarget.closest('#popupPageContainer').length) {
-                return; //no action in reference selection popup
-            }
-            var href = currentTarget.attr('href');
-            if(view === 'List') {
-                if(currentTarget.data('timer')) {
-                    //if list view single click has set a time, clear it
-                    clearTimeout(currentTarget.data('timer'));
-                    currentTarget.data('timer', null);
-                }
-                //perform show preview only after 500ms in list view to support double click edit action
-                if (!currentTarget.data('preview-timer') && typeof href != 'undefined') {
-                    currentTarget.data('preview-timer', setTimeout(function () {
-                         var data = app.convertUrlToDataParams(href);
-                         self.showQuickPreviewForId(data.record, data.module, app.getAppName(),'',true);
-                         currentTarget.data('preview-timer',null);
-                    }, 500));
-                }
-            } else {
-                var data = app.convertUrlToDataParams(href);
-                self.showQuickPreviewForId(data.record, data.module, app.getAppName(),'',true);
-            }
-        });
-        
-        if(view === 'List') {
-           /*
-            * when reference display value is double clicked in list view, 
-            * should initiate inline edit instead of showing preview
-            */
-            jQuery('body').on('dblclick', '.js-reference-display-value', function(e) {
-                e.preventDefault();
-                var currentTarget = jQuery(this);
-                if (currentTarget.data('preview-timer')) {
-                    clearTimeout(currentTarget.data('preview-timer'));
-                    currentTarget.data('preview-timer', null);
-                };
-            });
-        }
-    },
-	
+		app.helper.showProgress();
+		app.request.get({data: params}).then(function (err, response) {
+			app.helper.hideProgress();
+			if (templateId && mode != 'navigation') {
+				jQuery('#pdfViewer').html(response);
+				return;
+			}
+			var params = {
+				cb: function () {
+					thisInstance.registerChangeTemplateEvent(jQuery('#helpPageOverlay'), recordId);
+					thisInstance.registerNavigationEvents(jQuery('#helpPageOverlay'));
+					ListTemplates_Js = new PrintTemplates_ListTemplates_Js();
+					ListTemplates_Js.registerEvents();
+				}
+			};
+			jQuery('#helpPageOverlay').css({"width": "870px", "box-shadow": "-8px 0 5px -5px lightgrey", 'height': '100vh', 'background': 'white'});
+			app.helper.loadHelpPageOverlay(response, params);
+		});
+	},
+
+	_showQuickPreviewForId: function (recordId, moduleName, appName, isReference) {
+		var self = this;
+		var params = {};
+		if (typeof moduleName === 'undefined') {
+			moduleName = app.module();
+		}
+		params['module'] = moduleName;
+		params['record'] = recordId;
+		params['view'] = 'RecordQuickPreview';
+		if(isReference === true){
+			params['navigation'] = 'false';
+		}
+		else{
+			params['navigation'] = 'true';
+		}
+		params['app'] = appName;
+
+		app.helper.showProgress();
+		app.request.get({data: params}).then(function (err, response) {
+			app.helper.hideProgress();
+			jQuery('#helpPageOverlay').css({"width": "550px", "box-shadow": "-8px 0 5px -5px lightgrey", 'height': '100vh', 'background': 'white'});
+			var callBack = function(container){
+				self.registerMoreRecentUpdatesClickEvent(container,recordId);
+				//Register Navigation Events
+				self.registerNavigationEvents(container);
+			};
+			app.helper.loadHelpPageOverlay(response, {
+				'cb' : callBack
+			});
+			var params = {
+				setHeight: "100%",
+				alwaysShowScrollbar: 2,
+				autoExpandScrollbar: true,
+				setTop: 0,
+				scrollInertia: 70,
+				mouseWheel: {preventDefault: true}
+			};
+			app.helper.showVerticalScroll(jQuery('.quickPreview .modal-body'), params);
+		});
+	},
+
+	isInventoryModule : function(moduleName) {
+		var inventoryModules = jQuery('#inventoryModules').val();
+		return inventoryModules.indexOf(moduleName) !== -1;
+	},
+
+	showQuickPreviewForId: function(recordId, moduleName, appName, templateId, isReference, mode) {
+		var self = this;
+		if(self.isInventoryModule(moduleName) && moduleName != 'Subscription') {
+			self._showInventoryQuickPreviewForId(recordId, moduleName, templateId, isReference, mode);
+		} else {
+			self._showQuickPreviewForId(recordId, moduleName, appName, isReference);
+		}
+	},
+
+	registerReferencePreviewEvent : function() {
+		var self = this;
+		var view = app.view();
+		jQuery('body').on('click', '.js-reference-display-value', function(e) {
+			e.preventDefault();
+			e.stopPropagation();
+			var currentTarget = jQuery(this);
+			if(currentTarget.closest('#popupPageContainer').length) {
+				return; //no action in reference selection popup
+			}
+			var href = currentTarget.attr('href');
+			if(view === 'List') {
+				if(currentTarget.data('timer')) {
+					//if list view single click has set a time, clear it
+					clearTimeout(currentTarget.data('timer'));
+					currentTarget.data('timer', null);
+				}
+				//perform show preview only after 500ms in list view to support double click edit action
+				if (!currentTarget.data('preview-timer') && typeof href != 'undefined') {
+					currentTarget.data('preview-timer', setTimeout(function () {
+						 var data = app.convertUrlToDataParams(href);
+						 self.showQuickPreviewForId(data.record, data.module, app.getAppName(),'',true);
+						 currentTarget.data('preview-timer',null);
+					}, 500));
+				}
+			} else {
+				var data = app.convertUrlToDataParams(href);
+				self.showQuickPreviewForId(data.record, data.module, app.getAppName(),'',true);
+			}
+		});
+
+		if(view === 'List') {
+			/*
+			* when reference display value is double clicked in list view, 
+			* should initiate inline edit instead of showing preview
+			*/
+			jQuery('body').on('dblclick', '.js-reference-display-value', function(e) {
+				e.preventDefault();
+				var currentTarget = jQuery(this);
+				if (currentTarget.data('preview-timer')) {
+					clearTimeout(currentTarget.data('preview-timer'));
+					currentTarget.data('preview-timer', null);
+				};
+			});
+		}
+	},
+
 	registerPostReferenceEvent : function(container) {
-        var thisInstance = this;
-		
-        container.find('.sourceField').on(Vtiger_Edit_Js.postReferenceSelectionEvent,function(e,result){
-            var dataList = result.data;
-            var element = jQuery(e.currentTarget);
-			
-            if(typeof element.data('autofill') != 'undefined') {
-                thisInstance.autoFillElement = element;
-                if(typeof(dataList.id) == 'undefined'){
-                    thisInstance.postRefrenceComplete(dataList, container);
-                }else {
-                    thisInstance.postRefrenceSearch(dataList, container);
-                }
-            }
-        });
-    },
-	
+		var thisInstance = this;
+
+		container.find('.sourceField').on(Vtiger_Edit_Js.postReferenceSelectionEvent,function(e,result){
+			var dataList = result.data;
+			var element = jQuery(e.currentTarget);
+
+			if(typeof element.data('autofill') != 'undefined') {
+				thisInstance.autoFillElement = element;
+				if(typeof(dataList.id) == 'undefined'){
+					thisInstance.postRefrenceComplete(dataList, container);
+				}else {
+					thisInstance.postRefrenceSearch(dataList, container);
+				}
+			}
+		});
+	},
+
 	postRefrenceComplete : function(data, container){
-        var thisInstance = this;
-        if(!data)
-            return ;
-		
-        jQuery.each(data, function(id, value){
-            thisInstance.fillReferenceFieldValue(value, container);
-        });
-    },
-	
+		var thisInstance = this;
+		if(!data)
+			return ;
+
+		jQuery.each(data, function(id, value){
+			thisInstance.fillReferenceFieldValue(value, container);
+		});
+	},
+
 	getRelatedFieldElements: function(container, autoFillData){
-        var parentElems = {};
+		var parentElems = {};
 		if (autoFillData) {
 			var field = container.find('#'+autoFillData.fieldname+'_display').closest('td');
 			parentElems['parent_id'] = field;
 		}
-        return parentElems;
-    },
-    
-    fillReferenceFieldValue : function(data, container){
-        var thisInstance = this;
+		return parentElems;
+	},
+
+	fillReferenceFieldValue : function(data, container){
+		var thisInstance = this;
 		var autoFillElement = this.autoFillElement;
 		var autoFillData = autoFillElement.data('autofill');
 		var completedValues = [];
 		for(var index in autoFillData){
-                    var value = autoFillData[index];
-                    var referenceContainer = thisInstance.getRelatedFieldElements(container, value); 
-                    jQuery.each(data, function(datakey, datavalue){
-                        for(var name in datavalue){
-                            if(typeof datavalue[name] == 'object'){
-                                var key = name;
-                                var dataList = {
-                                        'name': datavalue[key].name,
-                                        'id' : datavalue[key].id
-                                }
-
-                                if(value.module == datavalue[key].module){
-                                        var autoFillElement = thisInstance.autoFillElement;
-                                        var autoFillData = value;
-                                        var popupReferenceModuleElement = autoFillElement.parent().parent().find('[name=popupReferenceModule]').length ? 
-                                                autoFillElement.parent().parent().find('[name=popupReferenceModule]') : autoFillElement.parent().parent().find('.popupReferenceModule');
-                                        var module = popupReferenceModuleElement.val();
-                                        var elementName = autoFillElement.attr('name');
-                                        var selectedName = container.find('#'+elementName+'_display').val();
-                                        var message = app.vtranslate('JS_OVERWRITE_AUTOFILL_MSG1')+' '+app.vtranslate('SINGLE_'+autoFillData.module)+" "+app.vtranslate('JS_OVERWRITE_AUTOFILL_MSG2')+" "+app.vtranslate('SINGLE_'+module)+' ('+selectedName+') '+app.vtranslate('SINGLE_'+autoFillData.module)+" ?";
-                                        var parentId = container.find('[name='+autoFillData.fieldname+']').val();
-
-                                        if(parentId != dataList.id && parentId) {
-                                                if(jQuery.inArray(datavalue[key].module, completedValues) === -1) {
-                                                   completedValues.push(datavalue[key].module);
-                                                   thisInstance.confirmAndFillDetails(referenceContainer[key], dataList, message);
-                                                }		 
-                                        } else {
-                                                thisInstance.setReferenceFieldValue(referenceContainer[key], dataList);
-                                        }
-                                }
-                            }
-                        }
-                    });
+			var value = autoFillData[index];
+			var referenceContainer = thisInstance.getRelatedFieldElements(container, value); 
+			jQuery.each(data, function(datakey, datavalue){
+				for(var name in datavalue){
+					if(typeof datavalue[name] == 'object'){
+						var key = name;
+						var dataList = {
+								'name': datavalue[key].name,
+								'id' : datavalue[key].id
+						}
+
+						if(value.module == datavalue[key].module){
+								var autoFillElement = thisInstance.autoFillElement;
+								var autoFillData = value;
+								var popupReferenceModuleElement = autoFillElement.parent().parent().find('[name=popupReferenceModule]').length ? 
+										autoFillElement.parent().parent().find('[name=popupReferenceModule]') : autoFillElement.parent().parent().find('.popupReferenceModule');
+								var module = popupReferenceModuleElement.val();
+								var elementName = autoFillElement.attr('name');
+								var selectedName = container.find('#'+elementName+'_display').val();
+								var message = app.vtranslate('JS_OVERWRITE_AUTOFILL_MSG1')+' '+app.vtranslate('SINGLE_'+autoFillData.module)+" "+app.vtranslate('JS_OVERWRITE_AUTOFILL_MSG2')+" "+app.vtranslate('SINGLE_'+module)+' ('+selectedName+') '+app.vtranslate('SINGLE_'+autoFillData.module)+" ?";
+								var parentId = container.find('[name='+autoFillData.fieldname+']').val();
+
+								if(parentId != dataList.id && parentId) {
+										if(jQuery.inArray(datavalue[key].module, completedValues) === -1) {
+											completedValues.push(datavalue[key].module);
+											thisInstance.confirmAndFillDetails(referenceContainer[key], dataList, message);
+										}		 
+								} else {
+										thisInstance.setReferenceFieldValue(referenceContainer[key], dataList);
+								}
+						}
+					}
+				}
+			});
 		}
-    },
-
-    confirmAndFillDetails : function(container, data, message) {
-        var thisInstance = this;
-        app.helper.showConfirmationBox({'message' : message}).then(
-                function(e) {
-                        thisInstance.setReferenceFieldValue(container, data);
-                },
-                function(error, err){
-                }
-        );
-    },
-	
+	},
+
+	confirmAndFillDetails : function(container, data, message) {
+		var thisInstance = this;
+		app.helper.showConfirmationBox({'message' : message}).then(
+				function(e) {
+						thisInstance.setReferenceFieldValue(container, data);
+				},
+				function(error, err){
+				}
+		);
+	},
+
 	postRefrenceSearch: function(resultData, container){
-        var thisInstance = this;
+		var thisInstance = this;
 		var module;
 		if(!resultData.module) {
 			var autoFillElement = this.autoFillElement;
@@ -1605,20 +1605,20 @@ Vtiger.Class('Vtiger_Index_Js', {
 		}else {
 			module = resultData.module;
 		}
-        if(!resultData.id)
-            return;
-        
-        var params = {
-                module: module,
-                action: 'RelationAjax',
-                mode: 'getRelatedRecordInfo',
-                id: resultData.id
-            };
-
-        app.request.post({'data' : params}).then(function(err, data){
-            if(err == null){
-                thisInstance.postRefrenceComplete(data, container);
-            }
-        });
-    }
+		if(!resultData.id)
+			return;
+
+		var params = {
+				module: module,
+				action: 'RelationAjax',
+				mode: 'getRelatedRecordInfo',
+				id: resultData.id
+			};
+
+		app.request.post({'data' : params}).then(function(err, data){
+			if(err == null){
+				thisInstance.postRefrenceComplete(data, container);
+			}
+		});
+	}
 });
diff --git a/modules/Emails/models/Record.php b/modules/Emails/models/Record.php
index f3ec099bced028f0e92e4f8d0e2ffbd61b8c4a5c..a4da3a8d4c9026d1a760193c580b9bc7147637d4 100644
--- a/modules/Emails/models/Record.php
+++ b/modules/Emails/models/Record.php
@@ -47,7 +47,7 @@ class Emails_Record_Model extends Vtiger_Record_Model {
 	 */
 	public function send($addToQueue = false) {
 		$currentUserModel = Users_Record_Model::getCurrentUserModel();
-		$rootDirectory =  vglobal('root_directory');
+		$rootDirectory = vglobal('root_directory');
 
 		$mailer = Emails_Mailer_Model::getInstance();
 		$mailer->IsHTML(true);
@@ -119,7 +119,7 @@ class Emails_Record_Model extends Vtiger_Record_Model {
 			} 
 
 			if(!empty($generatedMessageId)){
-				$mailer->MessageID  = $generatedMessageId;
+				$mailer->MessageID = $generatedMessageId;
 			}
 
 			if (strpos($description, '$logo$')) {
@@ -186,7 +186,7 @@ class Emails_Record_Model extends Vtiger_Record_Model {
 			}
 			if(!$status) {
 				$status = $mailer->getError();
-				//If mailer error, then update emailflag as saved   
+				//If mailer error, then update emailflag as saved
 				if($status){
 					$this->updateEmailFlag();
 				}
@@ -340,7 +340,7 @@ class Emails_Record_Model extends Vtiger_Record_Model {
 	 */
 	public function deleteDocumentLink($idList = array()){
 		$db = PearDatabase::getInstance();
-		$query =  'DELETE FROM vtiger_senotesrel where crmid=?';
+		$query = 'DELETE FROM vtiger_senotesrel where crmid=?';
 		$params = array($this->getId());
 		if(count($idList) > 0) {
 			$query .= 'AND notesid IN ('.generateQuestionMarks($idList).')';
@@ -491,8 +491,8 @@ class Emails_Record_Model extends Vtiger_Record_Model {
 		}
 		$db = PearDatabase::getInstance();
 
-		$sql = 'SELECT mailid, access_count,click_count FROM vtiger_email_track WHERE crmid = ? AND mailid IN('.  generateQuestionMarks($emailIds).')';
-		$result = $db->pquery($sql, array($parentId,  $emailIds));
+		$sql = 'SELECT mailid, access_count,click_count FROM vtiger_email_track WHERE crmid = ? AND mailid IN('.generateQuestionMarks($emailIds).')';
+		$result = $db->pquery($sql, array($parentId, $emailIds));
 		$numRows = $db->num_rows($result);
 		if($numRows > 0) {
 			for($i=0;$i<$numRows;$i++){
@@ -538,7 +538,7 @@ class Emails_Record_Model extends Vtiger_Record_Model {
 	}
 
 	/**
-	 * Function stores emailid,parentmodule and generates shorturl  
+	 * Function stores emailid,parentmodule and generates shorturl 
 	 * @param type $parentModule 
 	 * @return type 
 	 */
@@ -640,8 +640,8 @@ class Emails_Record_Model extends Vtiger_Record_Model {
 				$trackingUrl = $this->getTrackUrlForClicks($crmid, $sourceUrl);
 				$content = $this->replaceLinkWithShortUrl($content, $trackingUrl, $sourceUrl, $type);
 			}
-			return $content;
 		}
+		return $content;
 	}
 
 	public function replaceLinkWithShortUrl($content, $toReplace, $search, $type) {
diff --git a/modules/Emails/views/MassSaveAjax.php b/modules/Emails/views/MassSaveAjax.php
index e5b43157164e7f2b0467b1cbf7b284154e38df96..b90a5ebc4660ab0281241f01578752c1465f96e0 100644
--- a/modules/Emails/views/MassSaveAjax.php
+++ b/modules/Emails/views/MassSaveAjax.php
@@ -59,7 +59,6 @@ class Emails_MassSaveAjax_View extends Vtiger_Footer_View {
 			$recordModel->set('mode', '');
 		}
 
-
 		$parentEmailId = $request->get('parent_id',null);
 		$attachmentsWithParentEmail = array();
 		if(!empty($parentEmailId) && !empty ($recordId)) {
@@ -117,7 +116,6 @@ class Emails_MassSaveAjax_View extends Vtiger_Footer_View {
 
 		}
 
-
 		// This will be used for sending mails to each individual
 		$toMailInfo = $request->get('toemailinfo');
 
diff --git a/modules/Migration/schema/660_to_700.php b/modules/Migration/schema/660_to_700.php
index 54b4be280d66b0466a7182cbec5882a308dd9bf0..2c244d16edbfb4671c05cc910f5115cf54eff970 100644
--- a/modules/Migration/schema/660_to_700.php
+++ b/modules/Migration/schema/660_to_700.php
@@ -213,7 +213,7 @@ if(defined('VTIGER_UPGRADE')) {
 	$result = $db->pquery($query, array());
 	$num_rows = $db->num_rows($result);
 	$relationShipMapping = array();
-	for ($i = 0; $i < $num_rows; $i++) {
+	for ($i=0; $i<$num_rows; $i++) {
 		$tabId = $db->query_result($result, $i, 'tabid');
 		$relatedTabid = $db->query_result($result, $i, 'related_tabid');
 		$relationId = $db->query_result($result, $i, 'relation_id');
@@ -345,7 +345,7 @@ if(defined('VTIGER_UPGRADE')) {
 												WHERE vtiger_crmentity.setype NOT IN ('.generateQuestionMarks($internalCommentModules).') 
 												OR vtiger_crmentity.setype IS NULL', $internalCommentModules, array());
 	$commentCount = $db->num_rows($commentsResult);
-	for ($i = 0; $i < $commentCount; $i++) {
+	for ($i=0; $i<$commentCount; $i++) {
 		$commentIds[] = $db->query_result($commentsResult, $i, 'modcommentsid');
 	}
 	if (count($commentIds) > 0) {
@@ -388,7 +388,7 @@ if(defined('VTIGER_UPGRADE')) {
 			$result = $db->pquery($query, array($tabid, $modcommentTabid));
 			$count = $db->num_rows($result);
 
-			for ($i = 0; $i < $count; $i++) {
+			for ($i=0; $i<$count; $i++) {
 				$relationId = $db->query_result($result, $i, 'relation_id');
 				$sequence = $db->query_result($result, $i, 'sequence');
 				$sequence += 1;
@@ -888,7 +888,7 @@ if(defined('VTIGER_UPGRADE')) {
 	//Adding Create Event and Create Todo workflow tasks for Project module.
 	$taskResult = $db->pquery('SELECT id, modules FROM com_vtiger_workflow_tasktypes WHERE tasktypename IN (?, ?)', array('VTCreateTodoTask', 'VTCreateEventTask'));
 	$taskResultCount = $db->num_rows($taskResult);
-	for ($i = 0; $i < $taskResultCount; $i++) {
+	for ($i=0; $i<$taskResultCount; $i++) {
 		$taskId = $db->query_result($taskResult, $i, 'id');
 		$modules = Zend_Json::decode(decode_html($db->query_result($taskResult, $i, 'modules')));
 		$modules['include'][] = 'Project';
@@ -1146,7 +1146,7 @@ if(defined('VTIGER_UPGRADE')) {
 		$tagOwners = array();
 		$tagNamesList = array();
 		$visibility = Vtiger_Tag_Model::PRIVATE_TYPE;
-		for ($i = 0; $i < $num_rows; $i++) {
+		for ($i=0; $i<$num_rows; $i++) {
 			$row = $db->query_result_rowdata($result, $i);
 			$tagId = $row['tag_id'];
 			$tagOwners[$tagId][] = $row['tagger_id'];
@@ -1176,7 +1176,7 @@ if(defined('VTIGER_UPGRADE')) {
 	$fieldRows = $db->num_rows($fieldResult);
 	$ignorePickListFields = array('hdnTaxType', 'email_flag');
 
-	for ($i = 0; $i < $fieldRows; $i++) {
+	for ($i=0; $i<$fieldRows; $i++) {
 		$fieldName = $db->query_result($fieldResult, $i, 'fieldname');
 		if (in_array($fieldName, $ignorePickListFields) || !Vtiger_Utils::CheckTable("vtiger_$fieldName"))
 			continue;
@@ -1192,7 +1192,7 @@ if(defined('VTIGER_UPGRADE')) {
 	$fieldResult = $db->pquery('SELECT fieldname FROM vtiger_field WHERE uitype IN (?,?,?,?) AND tabid IN (?)', array('15', '16', '33', '114', getTabid('Users')));
 	$fieldRows = $db->num_rows($fieldResult);
 
-	for ($i = 0; $i < $fieldRows; $i++) {
+	for ($i=0; $i<$fieldRows; $i++) {
 		$fieldName = $db->query_result($fieldResult, $i, 'fieldname');
 		if (!Vtiger_Utils::CheckTable("vtiger_$fieldName"))
 			continue;
@@ -1241,7 +1241,8 @@ if(defined('VTIGER_UPGRADE')) {
 	//End
 
 	$result = $db->pquery('SELECT * FROM vtiger_module_dashboard_widgets', array());
-	for ($i = 0; $i < $db->num_rows($result); $i++) {
+	$num_rows = $db->num_rows($result);
+	for ($i=0; $i<$num_rows; $i++) {
 		$rowdata = $db->query_result_rowdata($result, $i);
 		if ($rowdata['dashboardtabid'] == null) {
 			$result1 = $db->pquery('SELECT id FROM vtiger_dashboard_tabs WHERE userid=? AND tabname=?', array($rowdata['userid'], 'My Dashboard'));
@@ -1269,7 +1270,7 @@ if(defined('VTIGER_UPGRADE')) {
 	$fieldResult = $db->pquery('SELECT fieldname FROM vtiger_field WHERE fieldname=? AND tabid NOT IN (?)', array('salutationtype', getTabid('Users')));
 	$fieldRows = $db->num_rows($fieldResult);
 
-	for ($i = 0; $i < $fieldRows; $i++) {
+	for ($i=0; $i<$fieldRows; $i++) {
 		$fieldName = $db->query_result($fieldResult, $i, 'fieldname');
 		if (!Vtiger_Utils::CheckTable("vtiger_$fieldName")) {
 			continue;
@@ -1298,8 +1299,8 @@ if(defined('VTIGER_UPGRADE')) {
 										INNER JOIN vtiger_role2picklist ON vtiger_role2picklist.picklistid = vtiger_picklist.picklistid)', array());
 	$rows = $db->num_rows($deletedPicklistResult);
 	$deletablePicklists = array();
-	for ($z = 0; $z < $rows; $z++) {
-		$deletablePicklists[] = $db->query_result($deletedPicklistResult, $z, 'picklistid');
+	for ($i=0; $i<$rows; $i++) {
+		$deletablePicklists[] = $db->query_result($deletedPicklistResult, $i, 'picklistid');
 	}
 	if (count($deletablePicklists)) {
 		$db->pquery('DELETE FROM vtiger_role2picklist WHERE picklistid IN ('.generateQuestionMarks($deletablePicklists).')', array($deletablePicklists));
@@ -1703,6 +1704,27 @@ if(defined('VTIGER_UPGRADE')) {
 	$db->pquery('UPDATE vtiger_emailtemplates SET module=? WHERE templatename IN (?,?,?) AND module IS NULL', array('Events', 'ToDo Reminder', 'Activity Reminder', 'Invite Users'));
 	$db->pquery('UPDATE vtiger_emailtemplates SET module=? WHERE module IS NULL', array('Contacts'));
 
+	$columns = $db->getColumnNames('vtiger_mailmanager_mailrecord');
+	if (!in_array('mfolder', $columns)) {
+		$db->pquery('ALTER TABLE vtiger_mailmanager_mailrecord ADD COLUMN mfolder VARCHAR(250)', array());
+		$duplicateResult = $db->pquery('SELECT muid FROM vtiger_mailmanager_mailrecord GROUP BY muid HAVING COUNT(muid) > ?', array('1'));
+		$noOfDuplicate = $db->num_rows($duplicateResult);
+		if ($noOfDuplicate) {
+			$duplicateMuid = array();
+			for ($i=0; $i<$noOfDuplicate; $i++) {
+				$duplicateMuid[] = $db->query_result($duplicateResult, $i, 'muid');
+			}
+			$db->pquery('DELETE FROM vtiger_mailmanager_mailrecord WHERE muid IN ('.generateQuestionMarks($duplicateMuid).')', $duplicateMuid);
+			$db->pquery('DELETE FROM vtiger_mailmanager_mailattachments WHERE muid IN ('.generateQuestionMarks($duplicateMuid).')', $duplicateMuid);
+		}
+	}
+
+	if (Vtiger_Utils::CheckTable('vtiger_mailscanner_ids')) {
+		$db->pquery('RENAME TABLE vtiger_mailscanner_ids TO vtiger_message_ids', array());
+		$db->pquery('ALTER TABLE vtiger_message_ids ADD COLUMN refids MEDIUMTEXT', array());
+		$db->pquery('ALTER TABLE vtiger_message_ids ADD INDEX messageids_crmid_idx(crmid)',array());
+	}
+
 	//Update existing package modules
 	Install_Utils_Model::installModules();
 
diff --git a/modules/Vtiger/actions/RelatedRecordsAjax.php b/modules/Vtiger/actions/RelatedRecordsAjax.php
index da0882a384e0c9ff3198d47372332437fd2897b6..ae927a9eaa28f99a90fb0510788991524ae1447b 100644
--- a/modules/Vtiger/actions/RelatedRecordsAjax.php
+++ b/modules/Vtiger/actions/RelatedRecordsAjax.php
@@ -38,6 +38,7 @@ class Vtiger_RelatedRecordsAjax_Action extends Vtiger_Action_Controller {
 		$relationModels = $parentModuleModel->getRelations();
 		$relatedRecordsCount = array();
 		foreach ($relationModels as $relation) {
+			$relationId = $relation->getId();
 			$relatedModuleName = $relation->get('relatedModuleName');
 			$relationListView = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $relatedModuleName, $relation->get('label'));
 			$count = $relationListView->getRelatedEntriesCount();
diff --git a/packages/vtiger/mandatory/MailManager.zip b/packages/vtiger/mandatory/MailManager.zip
index 32801ef733b58185aaa3d1055b0adcd349a00893..e42cd9ea2c6f5c043ae697d86922dfdcd572d5c1 100644
Binary files a/packages/vtiger/mandatory/MailManager.zip and b/packages/vtiger/mandatory/MailManager.zip differ
diff --git a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js
index 01b903202991e2957d35067506ca63fec5e891d5..b4db3b16eba124ed7dca00ed38fa385387d545eb 100644
--- a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js
+++ b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js
@@ -8,968 +8,968 @@
  *************************************************************************************/
 
 Vtiger_List_Js("MailManager_List_Js", {}, {
-    
-    getContainer : function() {
-        return jQuery('.main-container');
-    },
-    
-    loadFolders : function(folder) {
-        app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
-        var self = this;
-        var params = {
-            'module' : app.getModuleName(),
-            'view' : 'Index',
-            '_operation' : 'folder',
-            '_operationarg' : 'getFoldersList'
-        }
-        app.request.post({"data" : params}).then(function(error, responseData) {
-            app.helper.hideProgress();
-            self.getContainer().find('#folders_list').html(responseData);
-            self.getContainer().find('#folders_list').mCustomScrollbar({
-                setHeight: 550,
-                autoExpandScrollbar: true,
-                scrollInertia: 200,
-                autoHideScrollbar: true,
-                theme : "dark-3"
-            });
-            self.registerFolderClickEvent();
-            if(folder) {
-                self.openFolder(folder);
-            } else {
-                self.openFolder('INBOX');
-            }
-            self.registerAutoRefresh();
-        });
-    },
-    
-    registerAutoRefresh : function() {
-        var self = this;
-        var container = self.getContainer();
-        var timeout = parseInt(container.find('#refresh_timeout').val());
-        var folder = container.find('.mm_folder.active').data('foldername');
-        if(timeout > 0) {
-            setTimeout(function() {
-                var thisInstance = new MailManager_List_Js();
-                if(folder && typeof folder != "undefined") {
-                    thisInstance.loadFolders(folder);
-                } else {
-                    thisInstance.loadFolders();
-                }
-            }, timeout);
-        }
-    },
-    
-    registerFolderClickEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('.mm_folder').click(function(e) {
-            var folderElement = jQuery(e.currentTarget);
-            var folderName = folderElement.data('foldername');
-            container.find('.mm_folder').each(function(i, ele) {
-                jQuery(ele).removeClass('active');
-            });
-            folderElement.addClass('active');
-            if(folderName == 'vt_drafts') {
-                self.openDraftFolder();
-            } else {
-                self.openFolder(folderName);
-            }
-        });
-    },
-    
-    registerComposeEmail : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mail_compose').click(function() {
-            var params = {
-                step : "step1",
-                module : "MailManager",
-                view : "MassActionAjax",
-                mode : "showComposeEmailForm",
-                selected_ids : "[]",
-                excluded_ids : "[]"
-            };
-            self.openComposeEmailForm(null, params);
-        });
-    },
-    
-    registerSettingsEdit : function() {
-        var self = this;
-        var container = this.getContainer();
-        container.find('.mailbox_setting').click(function() {
-            app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
-            var params = {
-                'module' : 'MailManager',
-                'view' : 'Index',
-                '_operation' : 'settings',
-                '_operationarg' : 'edit'
-            };
-            var popupInstance = Vtiger_Popup_Js.getInstance();
-            popupInstance.showPopup(params, '', function(data) {
-                app.helper.hideProgress();
-                self.handleSettingsEvents(data);
-                self.registerDeleteMailboxEvent(data);
-                self.registerSaveMailboxEvent(data);
-            });
-        });
-    },
-    
-    handleSettingsEvents : function(data) {
-        var settingContainer = jQuery(data);
-        settingContainer.find('#serverType').on('change', function(e) {
-            var element = jQuery(e.currentTarget);
-            var serverType = element.val();
-            var useServer = '', useProtocol = '', useSSLType = '', useCert = '';
-            if(serverType == 'gmail' || serverType == 'yahoo') {
-                useServer = 'imap.gmail.com';
-                if(serverType == 'yahoo') {
-                    useServer = 'imap.mail.yahoo.com';
-                }
-                useProtocol = 'IMAP4';
-                useSSLType = 'ssl';
-                useCert = 'novalidate-cert';
-                settingContainer.find('.settings_details').removeClass('hide');
-                settingContainer.find('.additional_settings').addClass('hide');
-            } else if(serverType == 'fastmail') {
-                useServer = 'mail.messagingengine.com';
-                useProtocol = 'IMAP2';
-                useSSLType = 'tls';
-                useCert = 'novalidate-cert';
-                settingContainer.find('.settings_details').removeClass('hide');
-                settingContainer.find('.additional_settings').addClass('hide');
-            } else if(serverType == 'other') {
-                useServer = '';
-                useProtocol = 'IMAP4';
-                useSSLType = 'ssl';
-                useCert = 'novalidate-cert';
-                settingContainer.find('.settings_details').removeClass('hide');
-                settingContainer.find('.additional_settings').removeClass('hide');
-            } else {
-                settingContainer.find('.settings_details').addClass('hide');
-            }
-            
-            settingContainer.find('.refresh_settings').show();
-            settingContainer.find('#_mbox_user').val('');
-            settingContainer.find('#_mbox_pwd').val('');
-            settingContainer.find('[name="_mbox_sent_folder"]').val('');
-            settingContainer.find('.selectFolderValue').addClass('hide');
-            settingContainer.find('.selectFolderDesc').removeClass('hide');
-            if(useProtocol != '') {
-                settingContainer.find('#_mbox_server').val(useServer);
-                settingContainer.find('.mbox_protocol').each(function(node) {
-                    if(jQuery(node).val() == useProtocol) {
-                        jQuery(node).attr('checked', true);
-                    }
-                });
-                settingContainer.find('.mbox_ssltype').each(function(node) {
-                    if(jQuery(node).val() == useSSLType) {
-                        jQuery(node).attr('checked', true);
-                    }
-                });
-                settingContainer.find('.mbox_certvalidate').each(function(node) {
-                    if(jQuery(node).val() == useCert) {
-                        jQuery(node).attr('checked', true);
-                    }
-                });
-            }
-        });
-    },
-    
-    registerDeleteMailboxEvent : function(data) {
-        var settingContainer = jQuery(data);
-        settingContainer.find('#deleteMailboxBtn').click(function(e) {
-            e.preventDefault();
-            app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
-            var params = {
-                'module' : 'MailManager',
-                'view' : 'Index',
-                '_operation' : 'settings',
-                '_operationarg' : 'remove'
-            };
-            app.request.post({"data" : params}).then(function(error, responseData) {
-                app.helper.hideProgress();
-                if(responseData.status) {
-                    window.location.reload();
-                }
-            });
-        });
-    },
-    
-    registerSaveMailboxEvent : function(data) {
-        var settingContainer = jQuery(data);
-        settingContainer.find('#saveMailboxBtn').click(function(e) {
-            e.preventDefault();
-            var form = settingContainer.find('#EditView');
-            var data = form.serializeFormData();
-            var params = {
-                position: {
-                    'my' : 'bottom left',
-                    'at' : 'top left',
-                    'container' : jQuery('#EditView')
-            }};
-            var errorMsg = app.vtranslate('JS_REQUIRED_FIELD');
-            if(data['_mbox_server'] == "") {
-                vtUtils.showValidationMessage(settingContainer.find('#_mbox_server'), errorMsg, params);
-                return false;
-            } else {
-                vtUtils.hideValidationMessage(settingContainer.find('#_mbox_server'));
-            }
-            if(data['_mbox_user'] == "") {
-                vtUtils.showValidationMessage(settingContainer.find('#_mbox_user'), errorMsg, params);
-                return false;
-            } else {
-                vtUtils.hideValidationMessage(settingContainer.find('#_mbox_user'));
-            }
-            if(data['_mbox_pwd'] == "") {
-                vtUtils.showValidationMessage(settingContainer.find('#_mbox_pwd'), errorMsg, params);
-                return false;
-            } else {
-                vtUtils.hideValidationMessage(settingContainer.find('#_mbox_pwd'));
-            }
-            app.helper.showProgress(app.vtranslate("JSLBL_Saving_And_Verifying")+"...");
-            var params = {
-                'module' : 'MailManager',
-                'view' : 'Index',
-                '_operation' : 'settings',
-                '_operationarg' : 'save'
-            };
-            jQuery.extend(params, data);
-            app.request.post({"data" : params}).then(function(error, responseData) {
-                app.helper.hideModal();
-                app.helper.hideProgress();
-                if(error) {
-                    app.helper.showAlertNotification({'message' : error.message});
-                } else if(responseData.mailbox) {
-                    window.location.reload();
-                }
-            });
-        });
-    },
-    
-    registerInitialLayout : function() {
-        var self = this;
-        var container = self.getContainer();
-        if(container.find('#isMailBoxExists').val() == "0") {
-            container.find('#modnavigator').addClass('hide');
-            container.find('#listViewContent').addClass('paddingLeft0');
-        }
-    },
-    
-    openFolder : function(folderName, page, query, type) {
-        var self = this;
-        app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
-        if(!page) {
-            page = 0;
-        }
-        var container = self.getContainer();
+
+	getContainer : function() {
+		return jQuery('.main-container');
+	},
+
+	loadFolders : function(folder) {
+		app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
+		var self = this;
+		var params = {
+			'module' : app.getModuleName(),
+			'view' : 'Index',
+			'_operation' : 'folder',
+			'_operationarg' : 'getFoldersList'
+		}
+		app.request.post({"data" : params}).then(function(error, responseData) {
+			app.helper.hideProgress();
+			self.getContainer().find('#folders_list').html(responseData);
+			self.getContainer().find('#folders_list').mCustomScrollbar({
+				setHeight: 550,
+				autoExpandScrollbar: true,
+				scrollInertia: 200,
+				autoHideScrollbar: true,
+				theme : "dark-3"
+			});
+			self.registerFolderClickEvent();
+			if(folder) {
+				self.openFolder(folder);
+			} else {
+				self.openFolder('INBOX');
+			}
+			self.registerAutoRefresh();
+		});
+	},
+
+	registerAutoRefresh : function() {
+		var self = this;
+		var container = self.getContainer();
+		var timeout = parseInt(container.find('#refresh_timeout').val());
+		var folder = container.find('.mm_folder.active').data('foldername');
+		if(timeout > 0) {
+			setTimeout(function() {
+				var thisInstance = new MailManager_List_Js();
+				if(folder && typeof folder != "undefined") {
+					thisInstance.loadFolders(folder);
+				} else {
+					thisInstance.loadFolders();
+				}
+			}, timeout);
+		}
+	},
+
+	registerFolderClickEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('.mm_folder').click(function(e) {
+			var folderElement = jQuery(e.currentTarget);
+			var folderName = folderElement.data('foldername');
+			container.find('.mm_folder').each(function(i, ele) {
+				jQuery(ele).removeClass('active');
+			});
+			folderElement.addClass('active');
+			if(folderName == 'vt_drafts') {
+				self.openDraftFolder();
+			} else {
+				self.openFolder(folderName);
+			}
+		});
+	},
+
+	registerComposeEmail : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mail_compose').click(function() {
+			var params = {
+				step : "step1",
+				module : "MailManager",
+				view : "MassActionAjax",
+				mode : "showComposeEmailForm",
+				selected_ids : "[]",
+				excluded_ids : "[]"
+			};
+			self.openComposeEmailForm(null, params);
+		});
+	},
+
+	registerSettingsEdit : function() {
+		var self = this;
+		var container = this.getContainer();
+		container.find('.mailbox_setting').click(function() {
+			app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
+			var params = {
+				'module' : 'MailManager',
+				'view' : 'Index',
+				'_operation' : 'settings',
+				'_operationarg' : 'edit'
+			};
+			var popupInstance = Vtiger_Popup_Js.getInstance();
+			popupInstance.showPopup(params, '', function(data) {
+				app.helper.hideProgress();
+				self.handleSettingsEvents(data);
+				self.registerDeleteMailboxEvent(data);
+				self.registerSaveMailboxEvent(data);
+			});
+		});
+	},
+
+	handleSettingsEvents : function(data) {
+		var settingContainer = jQuery(data);
+		settingContainer.find('#serverType').on('change', function(e) {
+			var element = jQuery(e.currentTarget);
+			var serverType = element.val();
+			var useServer = '', useProtocol = '', useSSLType = '', useCert = '';
+			if(serverType == 'gmail' || serverType == 'yahoo') {
+				useServer = 'imap.gmail.com';
+				if(serverType == 'yahoo') {
+					useServer = 'imap.mail.yahoo.com';
+				}
+				useProtocol = 'IMAP4';
+				useSSLType = 'ssl';
+				useCert = 'novalidate-cert';
+				settingContainer.find('.settings_details').removeClass('hide');
+				settingContainer.find('.additional_settings').addClass('hide');
+			} else if(serverType == 'fastmail') {
+				useServer = 'mail.messagingengine.com';
+				useProtocol = 'IMAP2';
+				useSSLType = 'tls';
+				useCert = 'novalidate-cert';
+				settingContainer.find('.settings_details').removeClass('hide');
+				settingContainer.find('.additional_settings').addClass('hide');
+			} else if(serverType == 'other') {
+				useServer = '';
+				useProtocol = 'IMAP4';
+				useSSLType = 'ssl';
+				useCert = 'novalidate-cert';
+				settingContainer.find('.settings_details').removeClass('hide');
+				settingContainer.find('.additional_settings').removeClass('hide');
+			} else {
+				settingContainer.find('.settings_details').addClass('hide');
+			}
+
+			settingContainer.find('.refresh_settings').show();
+			settingContainer.find('#_mbox_user').val('');
+			settingContainer.find('#_mbox_pwd').val('');
+			settingContainer.find('[name="_mbox_sent_folder"]').val('');
+			settingContainer.find('.selectFolderValue').addClass('hide');
+			settingContainer.find('.selectFolderDesc').removeClass('hide');
+			if(useProtocol != '') {
+				settingContainer.find('#_mbox_server').val(useServer);
+				settingContainer.find('.mbox_protocol').each(function(node) {
+					if(jQuery(node).val() == useProtocol) {
+						jQuery(node).attr('checked', true);
+					}
+				});
+				settingContainer.find('.mbox_ssltype').each(function(node) {
+					if(jQuery(node).val() == useSSLType) {
+						jQuery(node).attr('checked', true);
+					}
+				});
+				settingContainer.find('.mbox_certvalidate').each(function(node) {
+					if(jQuery(node).val() == useCert) {
+						jQuery(node).attr('checked', true);
+					}
+				});
+			}
+		});
+	},
+
+	registerDeleteMailboxEvent : function(data) {
+		var settingContainer = jQuery(data);
+		settingContainer.find('#deleteMailboxBtn').click(function(e) {
+			e.preventDefault();
+			app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
+			var params = {
+				'module' : 'MailManager',
+				'view' : 'Index',
+				'_operation' : 'settings',
+				'_operationarg' : 'remove'
+			};
+			app.request.post({"data" : params}).then(function(error, responseData) {
+				app.helper.hideProgress();
+				if(responseData.status) {
+					window.location.reload();
+				}
+			});
+		});
+	},
+
+	registerSaveMailboxEvent : function(data) {
+		var settingContainer = jQuery(data);
+		settingContainer.find('#saveMailboxBtn').click(function(e) {
+			e.preventDefault();
+			var form = settingContainer.find('#EditView');
+			var data = form.serializeFormData();
+			var params = {
+				position: {
+					'my' : 'bottom left',
+					'at' : 'top left',
+					'container' : jQuery('#EditView')
+			}};
+			var errorMsg = app.vtranslate('JS_REQUIRED_FIELD');
+			if(data['_mbox_server'] == "") {
+				vtUtils.showValidationMessage(settingContainer.find('#_mbox_server'), errorMsg, params);
+				return false;
+			} else {
+				vtUtils.hideValidationMessage(settingContainer.find('#_mbox_server'));
+			}
+			if(data['_mbox_user'] == "") {
+				vtUtils.showValidationMessage(settingContainer.find('#_mbox_user'), errorMsg, params);
+				return false;
+			} else {
+				vtUtils.hideValidationMessage(settingContainer.find('#_mbox_user'));
+			}
+			if(data['_mbox_pwd'] == "") {
+				vtUtils.showValidationMessage(settingContainer.find('#_mbox_pwd'), errorMsg, params);
+				return false;
+			} else {
+				vtUtils.hideValidationMessage(settingContainer.find('#_mbox_pwd'));
+			}
+			app.helper.showProgress(app.vtranslate("JSLBL_Saving_And_Verifying")+"...");
+			var params = {
+				'module' : 'MailManager',
+				'view' : 'Index',
+				'_operation' : 'settings',
+				'_operationarg' : 'save'
+			};
+			jQuery.extend(params, data);
+			app.request.post({"data" : params}).then(function(error, responseData) {
+				app.helper.hideModal();
+				app.helper.hideProgress();
+				if(error) {
+					app.helper.showAlertNotification({'message' : error.message});
+				} else if(responseData.mailbox) {
+					window.location.reload();
+				}
+			});
+		});
+	},
+
+	registerInitialLayout : function() {
+		var self = this;
+		var container = self.getContainer();
+		if(container.find('#isMailBoxExists').val() == "0") {
+			container.find('#modnavigator').addClass('hide');
+			container.find('#listViewContent').addClass('paddingLeft0');
+		}
+	},
+
+	openFolder : function(folderName, page, query, type) {
+		var self = this;
+		app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
+		if(!page) {
+			page = 0;
+		}
+		var container = self.getContainer();
 		vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox'));
-        var params = {
-            'module' : 'MailManager',
-            'view' : 'Index',
-            '_operation' : 'folder',
-            '_operationarg' : 'open',
-            '_folder' : folderName,
-            '_page' : page
-        };
-        if(query) {
-            params['q'] = query;
-        }
-        if(type) {
-            params['type'] = type;
-        }
-        app.request.post({"data" : params}).then(function(error, responseData) {
-            container.find('#mails_container').removeClass('col-lg-12');
-            container.find('#mails_container').addClass('col-lg-5');
-            container.find('#mailPreviewContainer').removeClass('hide');
-            container.find('#mails_container').html(responseData);
-            app.helper.hideProgress();
-            self.registerMoveMailDropdownClickEvent();
-            self.registerMailCheckBoxClickEvent();
-            self.registerScrollForMailList();
-            self.registerMainCheckboxClickEvent();
-            self.registerPrevPageClickEvent();
-            self.registerNextPageClickEvent();
-            self.registerSearchEvent();
-            self.registerFolderMailDeleteEvent();
-            self.registerMoveMailToFolder();
-            self.registerMarkMessageAsUnread();
-            self.registerMailClickEvent();
-            self.registerMarkMessageAsRead();
+		var params = {
+			'module' : 'MailManager',
+			'view' : 'Index',
+			'_operation' : 'folder',
+			'_operationarg' : 'open',
+			'_folder' : folderName,
+			'_page' : page
+		};
+		if(query) {
+			params['q'] = query;
+		}
+		if(type) {
+			params['type'] = type;
+		}
+		app.request.post({"data" : params}).then(function(error, responseData) {
+			container.find('#mails_container').removeClass('col-lg-12');
+			container.find('#mails_container').addClass('col-lg-5');
+			container.find('#mailPreviewContainer').removeClass('hide');
+			container.find('#mails_container').html(responseData);
+			app.helper.hideProgress();
+			self.registerMoveMailDropdownClickEvent();
+			self.registerMailCheckBoxClickEvent();
+			self.registerScrollForMailList();
+			self.registerMainCheckboxClickEvent();
+			self.registerPrevPageClickEvent();
+			self.registerNextPageClickEvent();
+			self.registerSearchEvent();
+			self.registerFolderMailDeleteEvent();
+			self.registerMoveMailToFolder();
+			self.registerMarkMessageAsUnread();
+			self.registerMailClickEvent();
+			self.registerMarkMessageAsRead();
 			self.clearPreviewContainer();
-            self.loadMailContents(folderName);
-            container.find('#searchType').trigger('change');
-    });
-    },
-    
-    /**
-     * Function to load the body of all mails in folder list
-     * @param {type} folderName
-     * @returns {undefined}
-     */
-    loadMailContents : function(folderName){
-        var mailids = jQuery('input[name="folderMailIds"]').val();
-        mailids = mailids.split(",");
-        var params = {
-            'module' : 'MailManager',
-            'action' : 'Folder',
-            'mode' : 'showMailContent',
-            'mailids' : mailids,
-            'folderName':folderName
-        };
-        app.request.post({"data" : params}).then(function(error, responseData) {
-            for(var k in responseData){
-                var messageContent = responseData[k];
-                var messageEle = jQuery('#mmMailEntry_'+k);
-                messageEle.find('.mmMailDesc').html(messageContent);
-            }
-        });
-    },
-    
-    registerFolderMailDeleteEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mmDeleteMail').click(function(e) {
-            var folder = jQuery(e.currentTarget).data('folder');
-            var msgNos = new Array();
-            container.find('.mailCheckBox').each(function(i, ele) {
-                var element = jQuery(ele);
-                if(element.is(":checked")) {
-                    msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
-                }
-            });
-            if(msgNos.length <= 0) {
-                app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
-                return false;
-            } else {
-                app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() {
-                    app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
-                    var params = {
-                        'module' : 'MailManager',
-                        'view' : 'Index',
-                        '_operation' : 'mail',
-                        '_operationarg' : 'delete',
-                        '_folder' : folder,
-                        '_msgno' : msgNos.join(',')
-                    };
-                    app.request.post({data : params}).then(function(err,data) {
-                        app.helper.hideProgress();
-                        if(data.status) {
+			self.loadMailContents(folderName);
+			container.find('#searchType').trigger('change');
+	});
+	},
+
+	/**
+	 * Function to load the body of all mails in folder list
+	 * @param {type} folderName
+	 * @returns {undefined}
+	 */
+	loadMailContents : function(folderName){
+		var mailids = jQuery('input[name="folderMailIds"]').val();
+		mailids = mailids.split(",");
+		var params = {
+			'module' : 'MailManager',
+			'action' : 'Folder',
+			'mode' : 'showMailContent',
+			'mailids' : mailids,
+			'folderName':folderName
+		};
+		app.request.post({"data" : params}).then(function(error, responseData) {
+			for(var k in responseData){
+				var messageContent = responseData[k];
+				var messageEle = jQuery('#mmMailEntry_'+k);
+				messageEle.find('.mmMailDesc').html(messageContent);
+			}
+		});
+	},
+
+	registerFolderMailDeleteEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mmDeleteMail').click(function(e) {
+			var folder = jQuery(e.currentTarget).data('folder');
+			var msgNos = new Array();
+			container.find('.mailCheckBox').each(function(i, ele) {
+				var element = jQuery(ele);
+				if(element.is(":checked")) {
+					msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
+				}
+			});
+			if(msgNos.length <= 0) {
+				app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
+				return false;
+			} else {
+				app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() {
+					app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
+					var params = {
+						'module' : 'MailManager',
+						'view' : 'Index',
+						'_operation' : 'mail',
+						'_operationarg' : 'delete',
+						'_folder' : folder,
+						'_msgno' : msgNos.join(',')
+					};
+					app.request.post({data : params}).then(function(err,data) {
+						app.helper.hideProgress();
+						if(data.status) {
 							app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_DELETED')});
-                            self.updateUnreadCount("-"+self.getUnreadCountByMsgNos(msgNos), folder);
-                            self.updatePagingCount(msgNos.length);
-                            for(var i = 0; i < msgNos.length; i++) {
-                                container.find('#mmMailEntry_'+msgNos[i]).remove();
-                            }
+							self.updateUnreadCount("-"+self.getUnreadCountByMsgNos(msgNos), folder);
+							self.updatePagingCount(msgNos.length);
+							for(var i = 0; i < msgNos.length; i++) {
+								container.find('#mmMailEntry_'+msgNos[i]).remove();
+							}
 							var openedMsgNo = container.find('#mmMsgNo').val();
 							if(jQuery.inArray(openedMsgNo, msgNos) !== -1) {
 								self.clearPreviewContainer();
 							}
-                        }
-                    });
-                });
-            }
-        });
-    },
-    
-    updatePagingCount : function(deletedCount) {
-        var pagingDataElement = jQuery('.pageInfoData');
-        var pagingElement = jQuery('.pageInfo');
-        if(pagingDataElement.length != 0){
-            var total = pagingDataElement.data('total');
-            var start = pagingDataElement.data('start');
-            var end = pagingDataElement.data('end');
-            var labelOf = pagingDataElement.data('label-of');
-            total = total - deletedCount;
-            pagingDataElement.data('total', total);
-            pagingElement.html(start+' '+'-'+' '+end+' '+labelOf+' '+total+'&nbsp;&nbsp;');
-        }
-    },
-    
-    registerMoveMailToFolder : function() {
-        var self = this;
-        var container = self.getContainer();
-        var moveToDropDown = container.find('#mmMoveToFolder');
-        moveToDropDown.on('click','a',function(e) {
-            var element = jQuery(e.currentTarget);
-            var moveToFolder = element.closest('li').data('movefolder');
-            var folder = element.closest('li').data('folder');
-            var msgNos = new Array();
-            container.find('.mailCheckBox').each(function(i, ele) {
-                var element = jQuery(ele);
-                if(element.is(":checked")) {
-                    msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
-                }
-            });
-            if(msgNos.length <= 0) {
+						}
+					});
+				});
+			}
+		});
+	},
+
+	updatePagingCount : function(deletedCount) {
+		var pagingDataElement = jQuery('.pageInfoData');
+		var pagingElement = jQuery('.pageInfo');
+		if(pagingDataElement.length != 0){
+			var total = pagingDataElement.data('total');
+			var start = pagingDataElement.data('start');
+			var end = pagingDataElement.data('end');
+			var labelOf = pagingDataElement.data('label-of');
+			total = total - deletedCount;
+			pagingDataElement.data('total', total);
+			pagingElement.html(start+' '+'-'+' '+end+' '+labelOf+' '+total+'&nbsp;&nbsp;');
+		}
+	},
+
+	registerMoveMailToFolder : function() {
+		var self = this;
+		var container = self.getContainer();
+		var moveToDropDown = container.find('#mmMoveToFolder');
+		moveToDropDown.on('click','a',function(e) {
+			var element = jQuery(e.currentTarget);
+			var moveToFolder = element.closest('li').data('movefolder');
+			var folder = element.closest('li').data('folder');
+			var msgNos = new Array();
+			container.find('.mailCheckBox').each(function(i, ele) {
+				var element = jQuery(ele);
+				if(element.is(":checked")) {
+					msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
+				}
+			});
+			if(msgNos.length <= 0) {
 				container.find('.moveToFolderDropDown').removeClass('open');
-                app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
-                return false;
-            } else {
-                app.helper.showProgress(app.vtranslate("JSLBL_MOVING")+"...");
-                var params = {
-                    'module' : 'MailManager',
-                    'view' : 'Index',
-                    '_operation' : 'mail',
-                    '_operationarg' : 'move',
-                    '_folder' : folder,
-                    '_moveFolder' : moveToFolder,
-                    '_msgno' : msgNos.join(',')
-                };
-                app.request.post({data : params}).then(function(err,data) {
-                    app.helper.hideProgress();
-                    if(data.status) {
+				app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
+				return false;
+			} else {
+				app.helper.showProgress(app.vtranslate("JSLBL_MOVING")+"...");
+				var params = {
+					'module' : 'MailManager',
+					'view' : 'Index',
+					'_operation' : 'mail',
+					'_operationarg' : 'move',
+					'_folder' : folder,
+					'_moveFolder' : moveToFolder,
+					'_msgno' : msgNos.join(',')
+				};
+				app.request.post({data : params}).then(function(err,data) {
+					app.helper.hideProgress();
+					if(data.status) {
 						app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAIL_MOVED')});
-                        var unreadCount = self.getUnreadCountByMsgNos(msgNos);
-                        self.updateUnreadCount("-"+unreadCount, folder);
-                        self.updateUnreadCount("+"+unreadCount, moveToFolder);
-                        for(var i = 0; i < msgNos.length; i++) {
-                            container.find('#mmMailEntry_'+msgNos[i]).remove();
-                        }
+						var unreadCount = self.getUnreadCountByMsgNos(msgNos);
+						self.updateUnreadCount("-"+unreadCount, folder);
+						self.updateUnreadCount("+"+unreadCount, moveToFolder);
+						for(var i = 0; i < msgNos.length; i++) {
+							container.find('#mmMailEntry_'+msgNos[i]).remove();
+						}
 						container.find('.moveToFolderDropDown').removeClass('open');
-                    }
-                });
-            }
-        });
-    },
-    
-    registerMarkMessageAsUnread : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mmMarkAsUnread').click(function(e) {
-            var folder = jQuery(e.currentTarget).data('folder');
-            var msgNos = new Array();
-            container.find('.mailCheckBox').each(function(i, ele) {
-                var element = jQuery(ele);
-                if(element.is(":checked")) {
-                    msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
-                }
-            });
-            if(msgNos.length <= 0) {
-                app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
-                return false;
-            } else {
-                app.helper.showProgress(app.vtranslate("JSLBL_Updating")+"...");
-                var params = {
-                    'module' : 'MailManager',
-                    'view' : 'Index',
-                    '_operation' : 'mail',
-                    '_operationarg' : 'mark',
-                    '_folder' : folder,
-                    '_msgno' : msgNos.join(','),
-                    '_markas' : 'unread'
-                };
-                app.request.post({data : params}).then(function(err,data) {
-                    app.helper.hideProgress();
-                    if(data.status) {
+					}
+				});
+			}
+		});
+	},
+
+	registerMarkMessageAsUnread : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mmMarkAsUnread').click(function(e) {
+			var folder = jQuery(e.currentTarget).data('folder');
+			var msgNos = new Array();
+			container.find('.mailCheckBox').each(function(i, ele) {
+				var element = jQuery(ele);
+				if(element.is(":checked")) {
+					msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
+				}
+			});
+			if(msgNos.length <= 0) {
+				app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
+				return false;
+			} else {
+				app.helper.showProgress(app.vtranslate("JSLBL_Updating")+"...");
+				var params = {
+					'module' : 'MailManager',
+					'view' : 'Index',
+					'_operation' : 'mail',
+					'_operationarg' : 'mark',
+					'_folder' : folder,
+					'_msgno' : msgNos.join(','),
+					'_markas' : 'unread'
+				};
+				app.request.post({data : params}).then(function(err,data) {
+					app.helper.hideProgress();
+					if(data.status) {
 						app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_MARKED_UNREAD')});
-                        self.markMessageUnread(msgNos);
-                        self.updateUnreadCount("+"+self.getUnreadCountByMsgNos(msgNos), folder);
-                    }
-                });
-            }
-        });
-    },
-    
-    registerMarkMessageAsRead : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mmMarkAsRead').click(function(e) {
-            var folder = jQuery(e.currentTarget).data('folder');
-            var msgNos = new Array();
-            container.find('.mailCheckBox').each(function(i, ele) {
-                var element = jQuery(ele);
-                if(element.is(":checked")) {
-                    msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
-                }
-            });
-            if(msgNos.length <= 0) {
-                app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
-                return false;
-            } else {
-                app.helper.showProgress(app.vtranslate("JSLBL_Updating")+"...");
-                var params = {
-                    'module' : 'MailManager',
-                    'view' : 'Index',
-                    '_operation' : 'mail',
-                    '_operationarg' : 'mark',
-                    '_folder' : folder,
-                    '_msgno' : msgNos.join(','),
-                    '_markas' : 'read'
-                };
-                app.request.post({data : params}).then(function(err,data) {
-                    app.helper.hideProgress();
-                    if(data.status) {
+						self.markMessageUnread(msgNos);
+						self.updateUnreadCount("+"+self.getUnreadCountByMsgNos(msgNos), folder);
+					}
+				});
+			}
+		});
+	},
+
+	registerMarkMessageAsRead : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mmMarkAsRead').click(function(e) {
+			var folder = jQuery(e.currentTarget).data('folder');
+			var msgNos = new Array();
+			container.find('.mailCheckBox').each(function(i, ele) {
+				var element = jQuery(ele);
+				if(element.is(":checked")) {
+					msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
+				}
+			});
+			if(msgNos.length <= 0) {
+				app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
+				return false;
+			} else {
+				app.helper.showProgress(app.vtranslate("JSLBL_Updating")+"...");
+				var params = {
+					'module' : 'MailManager',
+					'view' : 'Index',
+					'_operation' : 'mail',
+					'_operationarg' : 'mark',
+					'_folder' : folder,
+					'_msgno' : msgNos.join(','),
+					'_markas' : 'read'
+				};
+				app.request.post({data : params}).then(function(err,data) {
+					app.helper.hideProgress();
+					if(data.status) {
 						app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_MARKED_READ')});
-                        self.markMessageRead(msgNos);
-                        self.updateUnreadCount("-"+self.getUnreadCountByMsgNos(msgNos), folder);
-                    }
-                });
-            }
-        });
-    },
-    
-    registerSearchEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mm_searchButton').click(function() {
-            var query = container.find('#mailManagerSearchbox').val();
-            if(query.trim() == '') {
-                vtUtils.showValidationMessage(container.find('#mailManagerSearchbox'), app.vtranslate('JSLBL_ENTER_SOME_VALUE'));
-                return false;
-            } else {
-                vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox'));
-            }
-            var folder = container.find('#mailManagerSearchbox').data('foldername');
-            var type = container.find('#searchType').val();
-            self.openFolder(folder, 0, query, type);
-        });
-    },
-    
-    markMessageUnread : function(msgNos) {
-        var self = this;
-        var container = self.getContainer();
-        if(typeof msgNos == "string") {
-            msgNos = new Array(msgNos);
-        }
-        if(typeof msgNos == "object") {
-            for(var i = 0; i < msgNos.length; i++) {
-                var msgNo = msgNos[i];
-                var msgEle = container.find('#mmMailEntry_'+msgNo);
-                msgEle.removeClass('mmReadEmail');
-                msgEle.data('read', "0");
-                var nameSubject = "<strong>" + msgEle.find('.nameSubjectHolder').html() + "</strong>";
-                msgEle.find('.nameSubjectHolder').html(nameSubject);
-            }
-        }
-    },
-    
-    markMessageRead : function(msgNos) {
-        var self = this;
-        var container = self.getContainer();
-        if(typeof msgNos == "string") {
-            msgNos = new Array(msgNos);
-        }
-        if(typeof msgNos == "object") {
-            for(var i = 0; i < msgNos.length; i++) {
-                var msgNo = msgNos[i];
-                var msgEle = container.find('#mmMailEntry_'+msgNo);
-                msgEle.addClass('mmReadEmail');
-                msgEle.data('read', "1");
-                var nameSubject = msgEle.find('.nameSubjectHolder').find('strong').html();
-                msgEle.find('.nameSubjectHolder').html(nameSubject);
-            }
-        }
-    },
-    
-    getUnreadCountByMsgNos : function(msgNos) {
-        var count = 0;
-        var self = this;
-        var container = self.getContainer();
-        for(var i = 0; i < msgNos.length; i++) {
-            var isRead = parseInt(container.find('#mmMailEntry_'+msgNos[i]).data('read'));
-            if(isRead == 0) {
-                count++;
-            }
-        }
-        return count;
-    },
-    
-    registerMailCheckBoxClickEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('.mailCheckBox').click(function(e) {
-            var element = jQuery(e.currentTarget);
-            if(element.is(":checked")) {
-                element.closest('.mailEntry').addClass('highLightMail');
-                element.closest('.mailEntry').removeClass('fontBlack');
-                element.closest('.mailEntry').addClass('whiteFont');
-                element.closest('.mailEntry').removeClass('mmReadEmail');
-                element.closest('.mailEntry').find('.mmDateTimeValue').addClass('mmListDateDivSelected');
-            } else {
-                var isRead = element.closest('.mailEntry').data('read');
-                if(parseInt(isRead)) {
-                    element.closest('.mailEntry').addClass('mmReadEmail');
-                    element.closest('.mailEntry').removeClass('highLightMail');
-                } else {
-                    element.closest('.mailEntry').removeClass('highLightMail');
-                }
-                element.closest('.mailEntry').find('.mmDateTimeValue').removeClass('mmListDateDivSelected');
-                element.closest('.mailEntry').addClass('fontBlack');
-            }
-        });
-    },
-    
-    registerMoveMailDropdownClickEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('.moveToFolderDropDown').click(function(e) {
-            e.stopImmediatePropagation();
-            var element = jQuery(e.currentTarget);
-            element.addClass('open');
-        });
-    },
-    
-    registerScrollForMailList : function() {
-        var self = this;
-        self.getContainer().find('#emailListDiv').mCustomScrollbar({
-            setHeight: 600,
-            autoExpandScrollbar: true,
-            scrollInertia: 200,
-            autoHideScrollbar: true,
-            theme : "dark-3"
-        });
-    },
-    
-    registerMainCheckboxClickEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mainCheckBox').click(function(e) {
-            var element = jQuery(e.currentTarget);
-            if(element.is(":checked")) {
-                container.find('.mailCheckBox').each(function(i, ele) {
-                    jQuery(ele).prop('checked', true);
-                    jQuery(ele).closest('.mailEntry').addClass('highLightMail');
-                    jQuery(ele).closest('.mailEntry').removeClass('fontBlack');
-                    jQuery(ele).closest('.mailEntry').addClass('whiteFont');
-                    jQuery(ele).closest('.mailEntry').removeClass('mmReadEmail');
-                    jQuery(ele).closest('.mailEntry').find('.mmDateTimeValue').addClass('mmListDateDivSelected');
-                });
-            } else {
-                container.find('.mailCheckBox').each(function(i, ele) {
-                    jQuery(ele).prop('checked', false);
-                    var isRead = jQuery(ele).closest('.mailEntry').data('read');
-                    if(parseInt(isRead)) {
-                        jQuery(ele).closest('.mailEntry').addClass('mmReadEmail');
-                        jQuery(ele).closest('.mailEntry').removeClass('highLightMail');
-                    } else {
-                        jQuery(ele).closest('.mailEntry').removeClass('highLightMail');
-                    }
-                    jQuery(ele).closest('.mailEntry').find('.mmDateTimeValue').removeClass('mmListDateDivSelected');
-                    jQuery(ele).closest('.mailEntry').addClass('fontBlack');
-                });
-            }
-        });
-    },
-    
-    registerPrevPageClickEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#PreviousPageButton').click(function(e) {
-            var element = jQuery(e.currentTarget);
-            var folder = element.data('folder');
-            var page = element.data('page');
-            self.openFolder(folder, page, jQuery('#mailManagerSearchbox').val(), jQuery('#searchType').val());
-        });
-    },
-    
-    registerNextPageClickEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#NextPageButton').click(function(e) {
-            var element = jQuery(e.currentTarget);
-            var folder = element.data('folder');
-            var page = element.data('page');
-            self.openFolder(folder, page, jQuery('#mailManagerSearchbox').val(), jQuery('#searchType').val());
-        });
-    },
-    
-    registerMailClickEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('.mmfolderMails').click(function(e) {
-            var emailElement = jQuery(e.currentTarget);
-            var parentEle = emailElement.closest('.mailEntry');
-            var msgNo = emailElement.find('.msgNo').val();
-            var params = {
-                'module' : 'MailManager',
-                'view' : 'Index',
-                '_operation' : 'mail',
-                '_operationarg' : 'open',
-                '_folder' : parentEle.data('folder'),
-                '_msgno' : msgNo
-            };
-            app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"...");
-            app.request.post({data : params}).then(function(err, data) {
-                app.helper.hideProgress();
-                var uiContent = data.ui;
-                var unreadCount = self.getUnreadCountByMsgNos(new Array(msgNo));
-                jQuery(parentEle).addClass('mmReadEmail');
-                jQuery(parentEle).data('read', "1");
-                var nameSubject = jQuery(parentEle).find('.nameSubjectHolder').find('strong').html();
-                jQuery(parentEle).find('.nameSubjectHolder').html(nameSubject);
-                container.find('#mailPreviewContainer').html(uiContent);
-                self.highLightMail(msgNo);
-                self.registerMailDeleteEvent();
-                self.registerForwardEvent();
-                self.registerPrintEvent();
-                self.registerReplyEvent();
-                self.registerReplyAllEvent();
-                self.showRelatedActions();
-                self.registerMailPaginationEvent();
+						self.markMessageRead(msgNos);
+						self.updateUnreadCount("-"+self.getUnreadCountByMsgNos(msgNos), folder);
+					}
+				});
+			}
+		});
+	},
+
+	registerSearchEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mm_searchButton').click(function() {
+			var query = container.find('#mailManagerSearchbox').val();
+			if(query.trim() == '') {
+				vtUtils.showValidationMessage(container.find('#mailManagerSearchbox'), app.vtranslate('JSLBL_ENTER_SOME_VALUE'));
+				return false;
+			} else {
+				vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox'));
+			}
+			var folder = container.find('#mailManagerSearchbox').data('foldername');
+			var type = container.find('#searchType').val();
+			self.openFolder(folder, 0, query, type);
+		});
+	},
+
+	markMessageUnread : function(msgNos) {
+		var self = this;
+		var container = self.getContainer();
+		if(typeof msgNos == "string") {
+			msgNos = new Array(msgNos);
+		}
+		if(typeof msgNos == "object") {
+			for(var i = 0; i < msgNos.length; i++) {
+				var msgNo = msgNos[i];
+				var msgEle = container.find('#mmMailEntry_'+msgNo);
+				msgEle.removeClass('mmReadEmail');
+				msgEle.data('read', "0");
+				var nameSubject = "<strong>" + msgEle.find('.nameSubjectHolder').html() + "</strong>";
+				msgEle.find('.nameSubjectHolder').html(nameSubject);
+			}
+		}
+	},
+
+	markMessageRead : function(msgNos) {
+		var self = this;
+		var container = self.getContainer();
+		if(typeof msgNos == "string") {
+			msgNos = new Array(msgNos);
+		}
+		if(typeof msgNos == "object") {
+			for(var i = 0; i < msgNos.length; i++) {
+				var msgNo = msgNos[i];
+				var msgEle = container.find('#mmMailEntry_'+msgNo);
+				msgEle.addClass('mmReadEmail');
+				msgEle.data('read', "1");
+				var nameSubject = msgEle.find('.nameSubjectHolder').find('strong').html();
+				msgEle.find('.nameSubjectHolder').html(nameSubject);
+			}
+		}
+	},
+
+	getUnreadCountByMsgNos : function(msgNos) {
+		var count = 0;
+		var self = this;
+		var container = self.getContainer();
+		for(var i = 0; i < msgNos.length; i++) {
+			var isRead = parseInt(container.find('#mmMailEntry_'+msgNos[i]).data('read'));
+			if(isRead == 0) {
+				count++;
+			}
+		}
+		return count;
+	},
+
+	registerMailCheckBoxClickEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('.mailCheckBox').click(function(e) {
+			var element = jQuery(e.currentTarget);
+			if(element.is(":checked")) {
+				element.closest('.mailEntry').addClass('highLightMail');
+				element.closest('.mailEntry').removeClass('fontBlack');
+				element.closest('.mailEntry').addClass('whiteFont');
+				element.closest('.mailEntry').removeClass('mmReadEmail');
+				element.closest('.mailEntry').find('.mmDateTimeValue').addClass('mmListDateDivSelected');
+			} else {
+				var isRead = element.closest('.mailEntry').data('read');
+				if(parseInt(isRead)) {
+					element.closest('.mailEntry').addClass('mmReadEmail');
+					element.closest('.mailEntry').removeClass('highLightMail');
+				} else {
+					element.closest('.mailEntry').removeClass('highLightMail');
+				}
+				element.closest('.mailEntry').find('.mmDateTimeValue').removeClass('mmListDateDivSelected');
+				element.closest('.mailEntry').addClass('fontBlack');
+			}
+		});
+	},
+
+	registerMoveMailDropdownClickEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('.moveToFolderDropDown').click(function(e) {
+			e.stopImmediatePropagation();
+			var element = jQuery(e.currentTarget);
+			element.addClass('open');
+		});
+	},
+
+	registerScrollForMailList : function() {
+		var self = this;
+		self.getContainer().find('#emailListDiv').mCustomScrollbar({
+			setHeight: 600,
+			autoExpandScrollbar: true,
+			scrollInertia: 200,
+			autoHideScrollbar: true,
+			theme : "dark-3"
+		});
+	},
+
+	registerMainCheckboxClickEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mainCheckBox').click(function(e) {
+			var element = jQuery(e.currentTarget);
+			if(element.is(":checked")) {
+				container.find('.mailCheckBox').each(function(i, ele) {
+					jQuery(ele).prop('checked', true);
+					jQuery(ele).closest('.mailEntry').addClass('highLightMail');
+					jQuery(ele).closest('.mailEntry').removeClass('fontBlack');
+					jQuery(ele).closest('.mailEntry').addClass('whiteFont');
+					jQuery(ele).closest('.mailEntry').removeClass('mmReadEmail');
+					jQuery(ele).closest('.mailEntry').find('.mmDateTimeValue').addClass('mmListDateDivSelected');
+				});
+			} else {
+				container.find('.mailCheckBox').each(function(i, ele) {
+					jQuery(ele).prop('checked', false);
+					var isRead = jQuery(ele).closest('.mailEntry').data('read');
+					if(parseInt(isRead)) {
+						jQuery(ele).closest('.mailEntry').addClass('mmReadEmail');
+						jQuery(ele).closest('.mailEntry').removeClass('highLightMail');
+					} else {
+						jQuery(ele).closest('.mailEntry').removeClass('highLightMail');
+					}
+					jQuery(ele).closest('.mailEntry').find('.mmDateTimeValue').removeClass('mmListDateDivSelected');
+					jQuery(ele).closest('.mailEntry').addClass('fontBlack');
+				});
+			}
+		});
+	},
+
+	registerPrevPageClickEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#PreviousPageButton').click(function(e) {
+			var element = jQuery(e.currentTarget);
+			var folder = element.data('folder');
+			var page = element.data('page');
+			self.openFolder(folder, page, jQuery('#mailManagerSearchbox').val(), jQuery('#searchType').val());
+		});
+	},
+
+	registerNextPageClickEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#NextPageButton').click(function(e) {
+			var element = jQuery(e.currentTarget);
+			var folder = element.data('folder');
+			var page = element.data('page');
+			self.openFolder(folder, page, jQuery('#mailManagerSearchbox').val(), jQuery('#searchType').val());
+		});
+	},
+
+	registerMailClickEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('.mmfolderMails').click(function(e) {
+			var emailElement = jQuery(e.currentTarget);
+			var parentEle = emailElement.closest('.mailEntry');
+			var msgNo = emailElement.find('.msgNo').val();
+			var params = {
+				'module' : 'MailManager',
+				'view' : 'Index',
+				'_operation' : 'mail',
+				'_operationarg' : 'open',
+				'_folder' : parentEle.data('folder'),
+				'_msgno' : msgNo
+			};
+			app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"...");
+			app.request.post({data : params}).then(function(err, data) {
+				app.helper.hideProgress();
+				var uiContent = data.ui;
+				var unreadCount = self.getUnreadCountByMsgNos(new Array(msgNo));
+				jQuery(parentEle).addClass('mmReadEmail');
+				jQuery(parentEle).data('read', "1");
+				var nameSubject = jQuery(parentEle).find('.nameSubjectHolder').find('strong').html();
+				jQuery(parentEle).find('.nameSubjectHolder').html(nameSubject);
+				container.find('#mailPreviewContainer').html(uiContent);
+				self.highLightMail(msgNo);
+				self.registerMailDeleteEvent();
+				self.registerForwardEvent();
+				self.registerPrintEvent();
+				self.registerReplyEvent();
+				self.registerReplyAllEvent();
+				self.showRelatedActions();
+				self.registerMailPaginationEvent();
 				container.find('.emailDetails').popover({html: true});
-                self.updateUnreadCount("-"+unreadCount, jQuery(parentEle).data('folder'));
+				self.updateUnreadCount("-"+unreadCount, jQuery(parentEle).data('folder'));
 				self.loadContentsInIframe(container.find('#mmBody'));
-            });
-        });
-    },
-	
+			});
+		});
+	},
+
 	loadContentsInIframe : function(element) {
 		var bodyContent = element.html();
-        element.html('<iframe id="bodyFrame" style="width: 100%; border: none;"></iframe>');
-        var frameElement = jQuery("#bodyFrame")[0].contentWindow.document;
-        frameElement.open();
-        frameElement.close();
-        jQuery('#bodyFrame').contents().find('html').html(bodyContent);
+		element.html('<iframe id="bodyFrame" style="width: 100%; border: none;"></iframe>');
+		var frameElement = jQuery("#bodyFrame")[0].contentWindow.document;
+		frameElement.open();
+		frameElement.close();
+		jQuery('#bodyFrame').contents().find('html').html(bodyContent);
 		jQuery('#bodyFrame').contents().find('html').find('a').on('click', function(e) {
 			e.preventDefault();
 			var url = jQuery(e.currentTarget).attr('href');
 			window.open(url, '_blank');
 		});
 	},
-    
-    highLightMail : function(msgNo) {
-        var self = this;
-        var container = self.getContainer();
-        container.find('.mailEntry').each(function(i, ele) {
-            var element = jQuery(ele);
-            var isRead = element.data('read');
-            if(parseInt(isRead)) {
-                element.addClass('mmReadEmail');
-                element.removeClass('highLightMail');
-            } else {
-                element.removeClass('highLightMail');
-            }
-            element.find('.mmDateTimeValue').removeClass('mmListDateDivSelected');
-            element.addClass('fontBlack');
-        });
-        var selectedMailEle = container.find('#mmMailEntry_'+msgNo);
-        selectedMailEle.addClass('highLightMail');
-        selectedMailEle.removeClass('fontBlack');
-        selectedMailEle.addClass('whiteFont');
-        selectedMailEle.removeClass('mmReadEmail');
-        selectedMailEle.find('.mmDateTimeValue').addClass('mmListDateDivSelected');
-    },
-    
-    registerMailPaginationEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('.mailPagination').click(function(e) {
-            var element = jQuery(e.currentTarget);
-            var msgNo = element.data('msgno');
-            var folder = element.data('folder');
-            var params = {
-                'module' : 'MailManager',
-                'view' : 'Index',
-                '_operation' : 'mail',
-                '_operationarg' : 'open',
-                '_folder' : folder,
-                '_msgno' : msgNo
-            };
-            app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"...");
-            app.request.post({data : params}).then(function(err, data) {
-                app.helper.hideProgress();
-                var uiContent = data.ui;
-                container.find('#mmMailEntry_'+msgNo).addClass('mmReadEmail');
-                container.find('#mmMailEntry_'+msgNo).data('read', "1");
-                var nameSubject = container.find('#mmMailEntry_'+msgNo).find('.nameSubjectHolder').find('strong').html();
-                container.find('#mmMailEntry_'+msgNo).find('.nameSubjectHolder').html(nameSubject);
-                container.find('#mailPreviewContainer').html(uiContent);
-                self.registerMailDeleteEvent();
-                self.registerForwardEvent();
-                self.registerReplyEvent();
-                self.registerReplyAllEvent();
-                self.showRelatedActions();
-                self.registerMailPaginationEvent();
-                self.highLightMail(msgNo);
+
+	highLightMail : function(msgNo) {
+		var self = this;
+		var container = self.getContainer();
+		container.find('.mailEntry').each(function(i, ele) {
+			var element = jQuery(ele);
+			var isRead = element.data('read');
+			if(parseInt(isRead)) {
+				element.addClass('mmReadEmail');
+				element.removeClass('highLightMail');
+			} else {
+				element.removeClass('highLightMail');
+			}
+			element.find('.mmDateTimeValue').removeClass('mmListDateDivSelected');
+			element.addClass('fontBlack');
+		});
+		var selectedMailEle = container.find('#mmMailEntry_'+msgNo);
+		selectedMailEle.addClass('highLightMail');
+		selectedMailEle.removeClass('fontBlack');
+		selectedMailEle.addClass('whiteFont');
+		selectedMailEle.removeClass('mmReadEmail');
+		selectedMailEle.find('.mmDateTimeValue').addClass('mmListDateDivSelected');
+	},
+
+	registerMailPaginationEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('.mailPagination').click(function(e) {
+			var element = jQuery(e.currentTarget);
+			var msgNo = element.data('msgno');
+			var folder = element.data('folder');
+			var params = {
+				'module' : 'MailManager',
+				'view' : 'Index',
+				'_operation' : 'mail',
+				'_operationarg' : 'open',
+				'_folder' : folder,
+				'_msgno' : msgNo
+			};
+			app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"...");
+			app.request.post({data : params}).then(function(err, data) {
+				app.helper.hideProgress();
+				var uiContent = data.ui;
+				container.find('#mmMailEntry_'+msgNo).addClass('mmReadEmail');
+				container.find('#mmMailEntry_'+msgNo).data('read', "1");
+				var nameSubject = container.find('#mmMailEntry_'+msgNo).find('.nameSubjectHolder').find('strong').html();
+				container.find('#mmMailEntry_'+msgNo).find('.nameSubjectHolder').html(nameSubject);
+				container.find('#mailPreviewContainer').html(uiContent);
+				self.registerMailDeleteEvent();
+				self.registerForwardEvent();
+				self.registerReplyEvent();
+				self.registerReplyAllEvent();
+				self.showRelatedActions();
+				self.registerMailPaginationEvent();
+				self.highLightMail(msgNo);
 				self.loadContentsInIframe(container.find('#mmBody'));
-            });
-        });
-    },
-    
-    registerMailDeleteEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mmDelete').click(function() {
-            var msgNo = jQuery('#mmMsgNo').val();
-            var folder = jQuery('#mmFolder').val();
-            app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() {
-                app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
-                var params = {
-                    'module' : 'MailManager',
-                    'view' : 'Index',
-                    '_operation' : 'mail',
-                    '_operationarg' : 'delete',
-                    '_folder' : folder,
-                    '_msgno' : msgNo
-                };
-                app.request.post({data : params}).then(function(err,data) {
-                    app.helper.hideProgress();
-                    if(data.status) {
-                        container.find('#mmMailEntry_'+msgNo).remove();
-                        var previewHtml = '<div class="mmListMainContainer">\n\
-                                        <center><strong>'+app.vtranslate('JSLBL_NO_MAIL_SELECTED_DESC')+'</center></strong></div>';
-                        jQuery('#mailPreviewContainer').html(previewHtml);
-                    }
-                });
-            });
-        });
-    },
-    
-    registerForwardEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mmForward').click(function() {
-            app.helper.showProgress(app.vtranslate("JSLBL_Loading")+"...");
-            var msgNo = jQuery('#mmMsgNo').val();
-            var from = jQuery('#mmFrom').val();
-            var to = jQuery('#mmTo').val();
-            var cc = jQuery('#mmCc').val() ? jQuery('#mmCc').val() : '';
-            var subject = JSON.parse(jQuery('#mmSubject').val());
-            var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html();
-            var date = jQuery('#mmDate').val();
-            var folder = jQuery('#mmFolder').val();
-            
-            var fwdMsgMetaInfo = app.vtranslate('JSLBL_FROM') + from + '<br/>'+
-                    app.vtranslate('JSLBL_DATE') + date + '<br/>'+
-                    app.vtranslate('JSLBL_SUBJECT') + subject;
-            if (to != '' && to != null) {
-                fwdMsgMetaInfo += '<br/>'+app.vtranslate('JSLBL_TO') + to;
-            }
-            if (cc != '' && cc != null) {
-                fwdMsgMetaInfo += '<br/>'+app.vtranslate('JSLBL_CC') + cc;
-            }
-            fwdMsgMetaInfo += '<br/>';
-
-            var fwdSubject = (subject.toUpperCase().indexOf('FWD:') == 0) ? subject : 'Fwd: ' + subject;
-            var fwdBody = '<p></p><p>'+app.vtranslate('JSLBL_FORWARD_MESSAGE_TEXT')+'<br/>'+fwdMsgMetaInfo+'</p>'+body;
-            var attchmentCount = parseInt(container.find('#mmAttchmentCount').val());
-            if(attchmentCount) {
-                var params = {
-                    'module' : 'MailManager',
-                    'view' : 'Index',
-                    '_operation' : 'mail',
-                    '_operationarg' : 'forward',
-                    'messageid' : encodeURIComponent(msgNo),
-                    'folder' : encodeURIComponent(folder),
-                    'subject' : encodeURIComponent(fwdSubject),
-                    'body' : encodeURIComponent(fwdBody)
-                };
-                app.request.post({'data' : params}).then(function(err, data) {
-                    var draftId = data.emailid;
-                    var newParams = {
-                        'module' : 'Emails',
-                        'view' : 'ComposeEmail',
-                        'mode' : 'emailEdit',
-                        'record' : draftId
-                    };
-                    app.request.post({data : newParams}).then(function(err,data) {
-                        app.helper.hideProgress();
-                        if(err === null) {
-                            var dataObj = jQuery(data);
-                            var descriptionContent = dataObj.find('#iframeDescription').val();
-                            app.helper.showModal(data, {cb : function() {
-                                var editInstance = new Emails_MassEdit_Js();
-                                editInstance.registerEvents();
-                                jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent);
-                                jQuery("#emailPreviewIframe").height(jQuery('#emailPreviewIframe').contents().find('html').height());
-                            }});
-                        }
-                    });
-                });
-            } else {
-                app.helper.hideProgress();
-                var params = {
-                    'step' : "step1",
-                    'module' : "MailManager",
-                    'view' : "MassActionAjax",
-                    'mode' : "showComposeEmailForm",
-                    'selected_ids' : "[]",
-                    'excluded_ids' : "[]",
-                }
-                self.openComposeEmailForm("forward", params, {'subject' : fwdSubject, 'body' : fwdBody});
-            }
-        });
-    },
-    
-    registerPrintEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mmPrint').click(function() {
-            var subject = JSON.parse(container.find('#mmSubject').val());
-            var from = container.find('#mmFrom').val();
-            var to = container.find('#mmTo').val();
-            var cc = container.find('#mmCc').val();
-            var date = container.find('#mmDate').val();
-            var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html();
-            
-            var content = window.open();
-            content.document.write("<b>"+subject+"</b><br>");
-            content.document.write(app.vtranslate("JSLBL_FROM")+" "+from +"<br>");
-            content.document.write(app.vtranslate("JSLBL_TO")+" "+to+"<br>");
-            if(cc) {
-                content.document.write(app.vtranslate("JSLBL_CC")+" "+cc+"<br>");
-            }
-            content.document.write(app.vtranslate("JSLBL_DATE")+" "+date+"<br>");
-            content.document.write("<br><br>"+body);
-            content.print();
-        });
-    },
-    
-    registerReplyEvent : function() {
-        var self = this;
-        self.getContainer().find('#mmReply').click(function() {
-            self.openReplyEmail(false);
-        });
-    },
-    
-    registerReplyAllEvent : function() {
-        var self = this;
-        self.getContainer().find('#mmReplyAll').click(function() {
-            self.openReplyEmail(true);
-        });
-    },
-    
-    openReplyEmail : function(all) {
-        var self = this;
-        if (typeof(all) == 'undefined') {
-            all = true;
-        }
-        var mUserName = jQuery('#mmUserName').val();
-        var from = jQuery('#mmFrom').val();
-        var to = all ? jQuery('#mmTo').val() : '';
-        var cc = all ? jQuery('#mmCc').val() : '';
-
-        var mailIds = '';
-        if(to != null) {
-            mailIds = to;
-        }
-        if(cc != null) {
-            mailIds = mailIds ? mailIds+','+cc : cc;
-        }
-
-        mailIds = mailIds.replace(/\s+/g, '');
-
-        var emails = mailIds.split(',');
-        for(var i = 0; i < emails.length ; i++) {
-            if(emails[i].indexOf(mUserName) != -1){
-                emails.splice(i,1);
-            }
-        }
-        mailIds = emails.join(',');
-
-        mailIds = mailIds.replace(',,', ',');
-        if(mailIds.charAt(mailIds.length-1) == ',') {
-            mailIds = mailIds.slice(0, -1);
-        } else if(mailIds.charAt(0) == ','){
-            mailIds = mailIds.slice(1);
-        }
-
-        var subject = JSON.parse(jQuery('#mmSubject').val());
-        var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html();
-        var date = jQuery('#mmDate').val();
-
-        var replySubject = (subject.toUpperCase().indexOf('RE:') == 0) ? subject : 'Re: ' + subject;
-        var replyBody = '<p></br></br></p><p style="margin:0;padding:0;">On '+date+', '+from+' wrote :</p><blockquote style="border:0;margin:0;border-left:1px solid gray;padding:0 0 0 2px;">'+body+'</blockquote><br />';
+			});
+		});
+	},
+
+	registerMailDeleteEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mmDelete').click(function() {
+			var msgNo = jQuery('#mmMsgNo').val();
+			var folder = jQuery('#mmFolder').val();
+			app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() {
+				app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
+				var params = {
+					'module' : 'MailManager',
+					'view' : 'Index',
+					'_operation' : 'mail',
+					'_operationarg' : 'delete',
+					'_folder' : folder,
+					'_msgno' : msgNo
+				};
+				app.request.post({data : params}).then(function(err,data) {
+					app.helper.hideProgress();
+					if(data.status) {
+						container.find('#mmMailEntry_'+msgNo).remove();
+						var previewHtml = '<div class="mmListMainContainer">\n\
+										<center><strong>'+app.vtranslate('JSLBL_NO_MAIL_SELECTED_DESC')+'</center></strong></div>';
+						jQuery('#mailPreviewContainer').html(previewHtml);
+					}
+				});
+			});
+		});
+	},
+
+	registerForwardEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mmForward').click(function() {
+			app.helper.showProgress(app.vtranslate("JSLBL_Loading")+"...");
+			var msgNo = jQuery('#mmMsgNo').val();
+			var from = jQuery('#mmFrom').val();
+			var to = jQuery('#mmTo').val();
+			var cc = jQuery('#mmCc').val() ? jQuery('#mmCc').val() : '';
+			var subject = JSON.parse(jQuery('#mmSubject').val());
+			var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html();
+			var date = jQuery('#mmDate').val();
+			var folder = jQuery('#mmFolder').val();
+
+			var fwdMsgMetaInfo = app.vtranslate('JSLBL_FROM') + from + '<br/>'+
+					app.vtranslate('JSLBL_DATE') + date + '<br/>'+
+					app.vtranslate('JSLBL_SUBJECT') + subject;
+			if (to != '' && to != null) {
+				fwdMsgMetaInfo += '<br/>'+app.vtranslate('JSLBL_TO') + to;
+			}
+			if (cc != '' && cc != null) {
+				fwdMsgMetaInfo += '<br/>'+app.vtranslate('JSLBL_CC') + cc;
+			}
+			fwdMsgMetaInfo += '<br/>';
+
+			var fwdSubject = (subject.toUpperCase().indexOf('FWD:') == 0) ? subject : 'Fwd: ' + subject;
+			var fwdBody = '<p></p><p>'+app.vtranslate('JSLBL_FORWARD_MESSAGE_TEXT')+'<br/>'+fwdMsgMetaInfo+'</p>'+body;
+			var attchmentCount = parseInt(container.find('#mmAttchmentCount').val());
+			if(attchmentCount) {
+				var params = {
+					'module' : 'MailManager',
+					'view' : 'Index',
+					'_operation' : 'mail',
+					'_operationarg' : 'forward',
+					'messageid' : encodeURIComponent(msgNo),
+					'folder' : encodeURIComponent(folder),
+					'subject' : encodeURIComponent(fwdSubject),
+					'body' : encodeURIComponent(fwdBody)
+				};
+				app.request.post({'data' : params}).then(function(err, data) {
+					var draftId = data.emailid;
+					var newParams = {
+						'module' : 'Emails',
+						'view' : 'ComposeEmail',
+						'mode' : 'emailEdit',
+						'record' : draftId
+					};
+					app.request.post({data : newParams}).then(function(err,data) {
+						app.helper.hideProgress();
+						if(err === null) {
+							var dataObj = jQuery(data);
+							var descriptionContent = dataObj.find('#iframeDescription').val();
+							app.helper.showModal(data, {cb : function() {
+								var editInstance = new Emails_MassEdit_Js();
+								editInstance.registerEvents();
+								jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent);
+								jQuery("#emailPreviewIframe").height(jQuery('#emailPreviewIframe').contents().find('html').height());
+							}});
+						}
+					});
+				});
+			} else {
+				app.helper.hideProgress();
+				var params = {
+					'step' : "step1",
+					'module' : "MailManager",
+					'view' : "MassActionAjax",
+					'mode' : "showComposeEmailForm",
+					'selected_ids' : "[]",
+					'excluded_ids' : "[]",
+				}
+				self.openComposeEmailForm("forward", params, {'subject' : fwdSubject, 'body' : fwdBody});
+			}
+		});
+	},
+
+	registerPrintEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mmPrint').click(function() {
+			var subject = JSON.parse(container.find('#mmSubject').val());
+			var from = container.find('#mmFrom').val();
+			var to = container.find('#mmTo').val();
+			var cc = container.find('#mmCc').val();
+			var date = container.find('#mmDate').val();
+			var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html();
+
+			var content = window.open();
+			content.document.write("<b>"+subject+"</b><br>");
+			content.document.write(app.vtranslate("JSLBL_FROM")+" "+from +"<br>");
+			content.document.write(app.vtranslate("JSLBL_TO")+" "+to+"<br>");
+			if(cc) {
+				content.document.write(app.vtranslate("JSLBL_CC")+" "+cc+"<br>");
+			}
+			content.document.write(app.vtranslate("JSLBL_DATE")+" "+date+"<br>");
+			content.document.write("<br><br>"+body);
+			content.print();
+		});
+	},
+
+	registerReplyEvent : function() {
+		var self = this;
+		self.getContainer().find('#mmReply').click(function() {
+			self.openReplyEmail(false);
+		});
+	},
+
+	registerReplyAllEvent : function() {
+		var self = this;
+		self.getContainer().find('#mmReplyAll').click(function() {
+			self.openReplyEmail(true);
+		});
+	},
+
+	openReplyEmail : function(all) {
+		var self = this;
+		if (typeof(all) == 'undefined') {
+			all = true;
+		}
+		var mUserName = jQuery('#mmUserName').val();
+		var from = jQuery('#mmFrom').val();
+		var to = all ? jQuery('#mmTo').val() : '';
+		var cc = all ? jQuery('#mmCc').val() : '';
+
+		var mailIds = '';
+		if(to != null) {
+			mailIds = to;
+		}
+		if(cc != null) {
+			mailIds = mailIds ? mailIds+','+cc : cc;
+		}
+
+		mailIds = mailIds.replace(/\s+/g, '');
+
+		var emails = mailIds.split(',');
+		for(var i = 0; i < emails.length ; i++) {
+			if(emails[i].indexOf(mUserName) != -1){
+				emails.splice(i,1);
+			}
+		}
+		mailIds = emails.join(',');
+
+		mailIds = mailIds.replace(',,', ',');
+		if(mailIds.charAt(mailIds.length-1) == ',') {
+			mailIds = mailIds.slice(0, -1);
+		} else if(mailIds.charAt(0) == ','){
+			mailIds = mailIds.slice(1);
+		}
+
+		var subject = JSON.parse(jQuery('#mmSubject').val());
+		var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html();
+		var date = jQuery('#mmDate').val();
+
+		var replySubject = (subject.toUpperCase().indexOf('RE:') == 0) ? subject : 'Re: ' + subject;
+		var replyBody = '<p></br></br></p><p style="margin:0;padding:0;">On '+date+', '+from+' wrote :</p><blockquote style="border:0;margin:0;border-left:1px solid gray;padding:0 0 0 2px;">'+body+'</blockquote><br />';
 		var parentRecord = new Array();
 		var linktoElement = jQuery('[name=_mlinkto]');
 		linktoElement.each(function(index){
@@ -978,492 +978,498 @@ Vtiger_List_Js("MailManager_List_Js", {}, {
 				parentRecord.push(value);
 			}
 		});
-        var params = {
-            'step' : "step1",
-            'module' : "MailManager",
-            'view' : "MassActionAjax",
-            'mode' : "showComposeEmailForm",
+		var params = {
+			'step' : "step1",
+			'module' : "MailManager",
+			'view' : "MassActionAjax",
+			'mode' : "showComposeEmailForm",
 			'linktomodule' : 'true', 
-            'excluded_ids' : "[]",
-            'to' : '["'+from+'"]'
-        }
+			'excluded_ids' : "[]",
+			'to' : '["'+from+'"]'
+		}
 		if(parentRecord.length) {
 			params['selected_ids'] = parentRecord;
 		} else {
 			params['selected_ids'] = "[]";
 		}
-        if(mailIds) {
-            self.openComposeEmailForm("replyall", params, {'subject' : replySubject, 'body' : replyBody, 'ids' : mailIds});
-        } else {
-            self.openComposeEmailForm("reply", params, {'subject' : replySubject, 'body' : replyBody});
-        }
-    },
-    
-    showRelatedActions : function() {
-        var self = this;
-        var container = self.getContainer();
-        var from = container.find('#mmFrom').val();
-        var to = container.find('#mmTo').val();
-        var folder = container.find('#mmFolder').val();
-        var msgNo = container.find('#mmMsgNo').val();
-        var msgUid = container.find('#mmMsgUid').val();
-        
-        var params = {
-            'module' : 'MailManager',
-            'view' : 'Index',
-            '_operation' : 'relation',
-            '_operationarg' : 'find',
-            '_mfrom' : from,
-            '_mto' : to,
-            '_folder' : folder,
-            '_msgno' : msgNo,
-            '_msguid' : msgUid
-        };
-        
-        app.request.post({data : params}).then(function(err, data) {
-            container.find('#relationBlock').html(data.ui);
-            self.handleRelationActions();
-            app.helper.showVerticalScroll(container.find('#relationBlock .recordScroll'), {autoHideScrollbar: true});
-            var iframeHeight = jQuery('#mails_container').height() - (200 + jQuery('#mailManagerActions').height());
-            var contentHeight = jQuery('#bodyFrame').contents().find('html').height();
-            if (contentHeight > iframeHeight) {
-                jQuery('#bodyFrame').css({'height': iframeHeight});
-            } else {
-                jQuery('#bodyFrame').css({'height': contentHeight});
-            }
-        });
-    },
-    
-    openDraftFolder : function(page, query, type) {
-        var self = this;
-        app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
-        if(!page) {
-            page = 0;
-        }
-        var container = self.getContainer();
+		if(mailIds) {
+			self.openComposeEmailForm("replyall", params, {'subject' : replySubject, 'body' : replyBody, 'ids' : mailIds});
+		} else {
+			self.openComposeEmailForm("reply", params, {'subject' : replySubject, 'body' : replyBody});
+		}
+	},
+
+	showRelatedActions : function() {
+		var self = this;
+		var container = self.getContainer();
+		var from = container.find('#mmFrom').val();
+		var to = container.find('#mmTo').val();
+		var folder = container.find('#mmFolder').val();
+		var msgNo = container.find('#mmMsgNo').val();
+		var msgUid = container.find('#mmMsgUid').val();
+
+		var params = {
+			'module' : 'MailManager',
+			'view' : 'Index',
+			'_operation' : 'relation',
+			'_operationarg' : 'find',
+			'_mfrom' : from,
+			'_mto' : to,
+			'_folder' : folder,
+			'_msgno' : msgNo,
+			'_msguid' : msgUid
+		};
+
+		app.request.post({data : params}).then(function(err, data) {
+			container.find('#relationBlock').html(data.ui);
+			self.handleRelationActions();
+			app.helper.showVerticalScroll(container.find('#relationBlock .recordScroll'), {autoHideScrollbar: true});
+			var iframeHeight = jQuery('#mails_container').height() - (200 + jQuery('#mailManagerActions').height());
+			var contentHeight = jQuery('#bodyFrame').contents().find('html').height();
+			if (contentHeight > iframeHeight) {
+				jQuery('#bodyFrame').css({'height': iframeHeight});
+			} else {
+				jQuery('#bodyFrame').css({'height': contentHeight});
+			}
+		});
+	},
+
+	openDraftFolder : function(page, query, type) {
+		var self = this;
+		app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
+		if(!page) {
+			page = 0;
+		}
+		var container = self.getContainer();
 		vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox'));
-        var params = {
-            'module' : 'MailManager',
-            'view' : 'Index',
-            '_operation' : 'folder',
-            '_operationarg' : 'drafts',
-            '_page' : page
-        };
-        if(query) {
-            params['q'] = query;
-        }
-        if(type) {
-            params['type'] = type;
-        }
-        app.request.post({"data" : params}).then(function(error, responseData) {
-            container.find('#mails_container').removeClass('col-lg-5');
-            container.find('#mails_container').addClass('col-lg-12');
-            container.find('#mails_container').html(responseData);
-            container.find('#mailPreviewContainer').addClass('hide');
-            app.helper.hideProgress();
-            self.registerMoveMailDropdownClickEvent();
-            self.registerMailCheckBoxClickEvent();
-            self.registerScrollForMailList();
-            self.registerMainCheckboxClickEvent();
-            self.registerDraftPrevPageClickEvent();
-            self.registerDraftNextPageClickEvent();
-            self.registerDraftMailClickEvent();
-            self.registerDraftSearchEvent();
-            self.registerDraftDeleteEvent();
+		var params = {
+			'module' : 'MailManager',
+			'view' : 'Index',
+			'_operation' : 'folder',
+			'_operationarg' : 'drafts',
+			'_page' : page
+		};
+		if(query) {
+			params['q'] = query;
+		}
+		if(type) {
+			params['type'] = type;
+		}
+		app.request.post({"data" : params}).then(function(error, responseData) {
+			container.find('#mails_container').removeClass('col-lg-5');
+			container.find('#mails_container').addClass('col-lg-12');
+			container.find('#mails_container').html(responseData);
+			container.find('#mailPreviewContainer').addClass('hide');
+			app.helper.hideProgress();
+			self.registerMoveMailDropdownClickEvent();
+			self.registerMailCheckBoxClickEvent();
+			self.registerScrollForMailList();
+			self.registerMainCheckboxClickEvent();
+			self.registerDraftPrevPageClickEvent();
+			self.registerDraftNextPageClickEvent();
+			self.registerDraftMailClickEvent();
+			self.registerDraftSearchEvent();
+			self.registerDraftDeleteEvent();
 			self.clearPreviewContainer();
-        });
-    },
-    
-    registerDraftPrevPageClickEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#PreviousPageButton').click(function(e) {
-            var element = jQuery(e.currentTarget);
-            var page = element.data('page');
-            self.openDraftFolder(page);
-        });
-    },
-    
-    registerDraftNextPageClickEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#NextPageButton').click(function(e) {
-            var element = jQuery(e.currentTarget);
-            var page = element.data('page');
-            self.openDraftFolder(page);
-        });
-    },
-    
-    registerDraftMailClickEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('.draftEmail').click(function(e) {
+		});
+	},
+
+	registerDraftPrevPageClickEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#PreviousPageButton').click(function(e) {
+			var element = jQuery(e.currentTarget);
+			var page = element.data('page');
+			self.openDraftFolder(page);
+		});
+	},
+
+	registerDraftNextPageClickEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#NextPageButton').click(function(e) {
+			var element = jQuery(e.currentTarget);
+			var page = element.data('page');
+			self.openDraftFolder(page);
+		});
+	},
+
+	registerDraftMailClickEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('.draftEmail').click(function(e) {
 			e.preventDefault();
-            var element = jQuery(e.currentTarget);
-            var msgNo = element.find('.msgNo').val();
-            var params = {
-                'module' : 'Emails',
-                'view' : 'ComposeEmail',
-                'mode' : 'emailEdit',
-                'record' : msgNo
-            };
-            app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"...");
-            app.request.post({data : params}).then(function(err,data) {
-                app.helper.hideProgress();
-                if(err === null) {
-                    var dataObj = jQuery(data);
-                    var descriptionContent = dataObj.find('#iframeDescription').val();
-                    app.helper.showModal(data, {cb:function() {
-                        var editInstance = new Emails_MassEdit_Js();
-                        editInstance.registerEvents();
-                        jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent);
-                        jQuery("#emailPreviewIframe").height(jQuery('.email-body-preview').height());
-                    }});
-                }
-            });
-        });
-    },
-    
-    registerDraftSearchEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mm_searchButton').click(function() {
-            var query = container.find('#mailManagerSearchbox').val();
-            if(query.trim() == '') {
-                vtUtils.showValidationMessage(container.find('#mailManagerSearchbox'), app.vtranslate('JSLBL_ENTER_SOME_VALUE'));
-                return false;
-            } else {
-                vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox'));
-            }
-            var type = container.find('#searchType').val();
-            self.openDraftFolder(0, query, type);
-        });
-    },
-    
-    registerDraftDeleteEvent : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#mmDeleteMail').click(function() {
-            var msgNos = new Array();
-            container.find('.mailCheckBox').each(function(i, ele) {
-                var element = jQuery(ele);
-                if(element.is(":checked")) {
-                    msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
-                }
-            });
-            if(msgNos.length <= 0) {
-                app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
-                return false;
-            } else {
-                app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() {
-                    app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
-                    var params = {
-                        'module' : 'MailManager',
-                        'view' : 'Index',
-                        '_operation' : 'mail',
-                        '_operationarg' : 'delete',
-                        '_folder' : '__vt_drafts',
-                        '_msgno' : msgNos.join(',')
-                    };
-                    app.request.post({data : params}).then(function(err,data) {
-                        app.helper.hideProgress();
-                        if(data.status) {
-                            self.openDraftFolder();
+			var element = jQuery(e.currentTarget);
+			var msgNo = element.find('.msgNo').val();
+			var params = {
+				'module' : 'Emails',
+				'view' : 'ComposeEmail',
+				'mode' : 'emailEdit',
+				'record' : msgNo
+			};
+			app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"...");
+			app.request.post({data : params}).then(function(err,data) {
+				app.helper.hideProgress();
+				if(err === null) {
+					var dataObj = jQuery(data);
+					var descriptionContent = dataObj.find('#iframeDescription').val();
+					app.helper.showModal(data, {cb:function() {
+						var editInstance = new Emails_MassEdit_Js();
+						editInstance.registerEvents();
+						jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent);
+						jQuery("#emailPreviewIframe").height(jQuery('.email-body-preview').height());
+					}});
+				}
+			});
+		});
+	},
+
+	registerDraftSearchEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mm_searchButton').click(function() {
+			var query = container.find('#mailManagerSearchbox').val();
+			if(query.trim() == '') {
+				vtUtils.showValidationMessage(container.find('#mailManagerSearchbox'), app.vtranslate('JSLBL_ENTER_SOME_VALUE'));
+				return false;
+			} else {
+				vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox'));
+			}
+			var type = container.find('#searchType').val();
+			self.openDraftFolder(0, query, type);
+		});
+	},
+
+	registerDraftDeleteEvent : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#mmDeleteMail').click(function() {
+			var msgNos = new Array();
+			container.find('.mailCheckBox').each(function(i, ele) {
+				var element = jQuery(ele);
+				if(element.is(":checked")) {
+					msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
+				}
+			});
+			if(msgNos.length <= 0) {
+				app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
+				return false;
+			} else {
+				app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() {
+					app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
+					var params = {
+						'module' : 'MailManager',
+						'view' : 'Index',
+						'_operation' : 'mail',
+						'_operationarg' : 'delete',
+						'_folder' : '__vt_drafts',
+						'_msgno' : msgNos.join(',')
+					};
+					app.request.post({data : params}).then(function(err,data) {
+						app.helper.hideProgress();
+						if(data.status) {
+							self.openDraftFolder();
 							app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_DELETED')});
-                        }
-                    });
-                });
-            }
-        });
-    },
-    
-    updateUnreadCount : function(count, folder) {
-        var self = this;
-        var container = self.getContainer();
-        if(!folder) {
-            folder = container.find('.mm_folder.active').data('foldername');
-        }
-        var newCount;
-        if(typeof count == "number") {
-            newCount = parseInt(count);
-        } else {
-            var oldCount = parseInt(container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').text());
-            if(count.substr(0, 1) == "+") {
-                newCount = oldCount + (parseInt(count.substr(1, (count.length - 1))));
-            } else if(count.substr(0, 1) == "-") {
-                newCount = oldCount - (parseInt(count.substr(1, (count.length - 1))));
-            } else {
-                newCount = parseInt(count);
-            }
-        }
-        container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').text(newCount);
-        if(newCount > 0) {
-            container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').removeClass("hide");
-        } else {
-            container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').addClass("hide");
-        }
-    },
-    
-    handleRelationActions : function() {
-        var self = this;
-        var container = self.getContainer();
-        container.find('#_mlinktotype').on('change', function(e) {
-            var element = jQuery(e.currentTarget);
-            var actionType = element.data('action');
-            var module = element.val();
-            var relatedRecord = self.getRecordForRelation();
-            if(relatedRecord !== false) {
-                if(actionType == "associate") {
-                    if(module == 'Emails') {
-                        self.associateEmail(relatedRecord);
-                    } else if(module == "ModComments") {
-                        self.associateComment(relatedRecord);
-                    } else if(module) {
-                        self.createRelatedRecord(module);
-                    }
-                } else if(module) {
-                    self.createRelatedRecord(module);
-                }
-            }
-            self.resetRelationDropdown();
-        });
-    },
-    
-    associateEmail : function(relatedRecord) {
-        var self = this;
-        var container = self.getContainer();
-        var params = {
-            'module' : 'MailManager',
-            'view' : 'Index',
-            '_operation' : 'relation',
-            '_operationarg' : 'link',
-            '_mlinkto' : relatedRecord,
-            '_mlinktotype' : 'Emails',
-            '_folder' : container.find('#mmFolder').val(),
-            '_msgno' : container.find('#mmMsgNo').val()
-        }
-        app.helper.showProgress(app.vtranslate('JSLBL_Associating')+'...');
-        app.request.post({data : params}).then(function(err,data) {
-            app.helper.hideProgress();
-        });
-    },
-    
-    associateComment : function(relatedRecord) {
-        var self = this;
-        var container = self.getContainer();
-        var params = {
-            'module' : 'MailManager',
-            'view' : 'Index',
-            '_operation' : 'relation',
-            '_operationarg' : 'commentwidget',
-            '_mlinkto' : relatedRecord,
-            '_mlinktotype' : 'ModComments',
-            '_folder' : container.find('#mmFolder').val(),
-            '_msgno' : container.find('#mmMsgNo').val()
-        }
-        app.helper.showProgress(app.vtranslate('JSLBL_Loading')+'...');
-        app.request.post({data : params}).then(function(err, data) {
-            app.helper.hideProgress();
-            app.helper.showModal(data, {'cb' : function(data) {
-                jQuery('[name="saveButton"]', data).on('click',function(e){
-                    e.preventDefault();
-                    self.saveComment(data);
-                });
-            }});
-        });
-    },
-    
-    createRelatedRecord : function(module) {
-        var self = this;
-        var container = self.getContainer();
-        var relatedRecord = self.getRecordForRelation();
-        var msgNo = container.find('#mmMsgNo').val();
-        var folder = container.find('#mmFolder').val();
-        var params = {
-            'module' : 'MailManager',
-            'view' : 'Index',
-            '_operation' : 'relation',
-            '_operationarg' : 'create_wizard',
-            '_mlinktotype' : module,
-            '_folder' : folder,
-            '_msgno' : msgNo
-        };
-        if(relatedRecord && relatedRecord !== null) {
-            params['_mlinkto'] = relatedRecord;
-        }
-        app.helper.showProgress(app.vtranslate('JSLBL_Loading')+'...');
-        app.request.post({data : params}).then(function(err, data) {
-            app.helper.hideProgress();
-            app.helper.showModal(data);
-            var form = jQuery('form[name="QuickCreate"]');
-            app.event.trigger('post.QuickCreateForm.show',form);
-            vtUtils.applyFieldElementsView(form);
+						}
+					});
+				});
+			}
+		});
+	},
+
+	updateUnreadCount : function(count, folder) {
+		var self = this;
+		var container = self.getContainer();
+		if(!folder) {
+			folder = container.find('.mm_folder.active').data('foldername');
+		}
+		var newCount;
+		if(typeof count == "number") {
+			newCount = parseInt(count);
+		} else {
+			var oldCount = parseInt(container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').text());
+			if(count.substr(0, 1) == "+") {
+				newCount = oldCount + (parseInt(count.substr(1, (count.length - 1))));
+			} else if(count.substr(0, 1) == "-") {
+				newCount = oldCount - (parseInt(count.substr(1, (count.length - 1))));
+			} else {
+				newCount = parseInt(count);
+			}
+		}
+		container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').text(newCount);
+		if(newCount > 0) {
+			container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').removeClass("hide");
+		} else {
+			container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').addClass("hide");
+		}
+	},
+
+	handleRelationActions : function() {
+		var self = this;
+		var container = self.getContainer();
+		container.find('#_mlinktotype').on('change', function(e) {
+			var element = jQuery(e.currentTarget);
+			var actionType = element.data('action');
+			var module = element.val();
+			var relatedRecord = self.getRecordForRelation();
+			if(relatedRecord !== false) {
+				if(actionType == "associate") {
+					if(module == 'Emails') {
+						self.associateEmail(relatedRecord);
+					} else if(module == "ModComments") {
+						self.associateComment(relatedRecord);
+					} else if(module) {
+						self.createRelatedRecord(module);
+					}
+				} else if(module) {
+					self.createRelatedRecord(module);
+				}
+			}
+			self.resetRelationDropdown();
+		});
+	},
+
+	associateEmail : function(relatedRecord) {
+		var self = this;
+		var container = self.getContainer();
+		var params = {
+			'module' : 'MailManager',
+			'view' : 'Index',
+			'_operation' : 'relation',
+			'_operationarg' : 'link',
+			'_mlinkto' : relatedRecord,
+			'_mlinktotype' : 'Emails',
+			'_folder' : container.find('#mmFolder').val(),
+			'_msgno' : container.find('#mmMsgNo').val()
+		}
+		app.helper.showProgress(app.vtranslate('JSLBL_Associating')+'...');
+		app.request.post({data : params}).then(function(err,data) {
+			if (err === null) {
+				app.helper.showSuccessNotification({'message':''});
+				app.helper.hideProgress();
+			} else {
+				app.helper.showErrorNotification({"message": err});
+			}
+		});
+	},
+
+	associateComment : function(relatedRecord) {
+		var self = this;
+		var container = self.getContainer();
+		var params = {
+			'module' : 'MailManager',
+			'view' : 'Index',
+			'_operation' : 'relation',
+			'_operationarg' : 'commentwidget',
+			'_mlinkto' : relatedRecord,
+			'_mlinktotype' : 'ModComments',
+			'_folder' : container.find('#mmFolder').val(),
+			'_msgno' : container.find('#mmMsgNo').val()
+		}
+		app.helper.showProgress(app.vtranslate('JSLBL_Loading')+'...');
+		app.request.post({data : params}).then(function(err, data) {
+			app.helper.hideProgress();
+			app.helper.showModal(data, {'cb' : function(data) {
+				jQuery('[name="saveButton"]', data).on('click',function(e){
+					e.preventDefault();
+					self.saveComment(data);
+				});
+			}});
+		});
+	},
+
+	createRelatedRecord : function(module) {
+		var self = this;
+		var container = self.getContainer();
+		var relatedRecord = self.getRecordForRelation();
+		var msgNo = container.find('#mmMsgNo').val();
+		var folder = container.find('#mmFolder').val();
+		var params = {
+			'module' : 'MailManager',
+			'view' : 'Index',
+			'_operation' : 'relation',
+			'_operationarg' : 'create_wizard',
+			'_mlinktotype' : module,
+			'_folder' : folder,
+			'_msgno' : msgNo
+		};
+		if(relatedRecord && relatedRecord !== null) {
+			params['_mlinkto'] = relatedRecord;
+		}
+		app.helper.showProgress(app.vtranslate('JSLBL_Loading')+'...');
+		app.request.post({data : params}).then(function(err, data) {
+			app.helper.hideProgress();
+			app.helper.showModal(data);
+			var form = jQuery('form[name="QuickCreate"]');
+			app.event.trigger('post.QuickCreateForm.show',form);
+			vtUtils.applyFieldElementsView(form);
 			var moduleName = form.find('[name="module"]').val();
 			var targetClass = app.getModuleSpecificViewClass('Edit', moduleName);
 			var targetInstance = new window[targetClass]();
 			targetInstance.registerBasicEvents(form);
-            var newParams = {};
-            newParams.callbackFunction = function() {
-                app.helper.hideModal();
-                self.showRelatedActions();
-            };
-            newParams.requestParams = params;
-            self.quickCreateSave(form, newParams);
-            app.helper.hideProgress();
-        });
-    },
-    
-    /**
-     * Register Quick Create Save Event
-     * @param {type} form
-     * @returns {undefined}
-     */
-    quickCreateSave : function(form,invokeParams){
-        var container = this.getContainer();
-        var params = {
-            submitHandler: function(form) {
-                // to Prevent submit if already submitted
-                jQuery("button[name='saveButton']").attr("disabled","disabled");
-                if(this.numberOfInvalids() > 0) {
-                    return false;
-                }
-                var formData = jQuery(form).serialize();
-                var requestParams = invokeParams.requestParams;
-                
-                // replacing default parameters for custom handlings in mail manager
-                formData = formData.replace('module=', 'xmodule=').replace('action=', 'xaction=');
-                if(requestParams) {
-                    requestParams['_operationarg'] = 'create';
-                    if(requestParams['_mlinktotype'] == 'Events') {
-                        requestParams['_mlinktotype'] = 'Calendar';
-                    }
-                    jQuery.each(requestParams, function(key, value){
-                        formData += "&"+key+"="+value;
-                    });
-                }
-                
-                app.request.post({data:formData}).then(function(err,data){
-                    app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData());
-                    if(err === null) {
-                        app.helper.hideModal();
-                        app.helper.showSuccessNotification({"message":''});
-                        invokeParams.callbackFunction(data, err);
-                    }else{
-                        app.helper.showErrorNotification({"message":err});
-                    }
-                });
-            }
-        };
-        form.vtValidate(params);
-    },
-    
-    saveComment : function(data) {
-        var _mlinkto = jQuery('[name="_mlinkto"]', data).val();
-        var _mlinktotype = jQuery('[name="_mlinktotype"]', data).val();
-        var _msgno = jQuery('[name="_msgno"]', data).val();
-        var _folder = jQuery('[name="_folder"]', data).val();
-        var commentcontent = jQuery('[name="commentcontent"]', data).val();
-        if(commentcontent.trim() == "") {
-            var validationParams = {
-                position: {
-                    'my' : 'bottom left',
-                    'at' : 'top left',
-                    'container' : jQuery('#commentContainer', data)
-                }
-            };
-            var errorMsg = app.vtranslate('JSLBL_CANNOT_ADD_EMPTY_COMMENT');
-            vtUtils.showValidationMessage(jQuery('[name="commentcontent"]', data), errorMsg, validationParams);
-            return false;
-        } else {
-            vtUtils.hideValidationMessage(jQuery('[name="commentcontent"]', data));
-        }
-        var params = {
-            'module' : 'MailManager',
-            'view' : 'Index',
-            '_operation' : 'relation',
-            '_operationarg' : 'create',
-            'commentcontent' : commentcontent,
-            '_mlinkto' : _mlinkto,
-            '_mlinktotype' : _mlinktotype,
-            '_msgno' : _msgno,
-            '_folder' : _folder
-        }
-        app.helper.showProgress(app.vtranslate('JSLBL_Saving')+'...');
-        app.request.post({'data' : params}).then(function(err, response) {
-            app.helper.hideProgress();
-            if(response.ui) {
-                app.helper.hideModal();
-            } else {
-                app.helper.showAlertBox({'message' : app.vtranslate("JSLBL_FAILED_ADDING_COMMENT")});
-            }
-        });
-    },
-    
-    getRecordForRelation : function() {
-        var self = this;
-        var container = self.getContainer();
-        var element = container.find('[name="_mlinkto"]');
-        if(element.length > 0) {
-            if(element.length == 1) {
-                element.attr('checked', true);
-                return element.val();
-            } else {
-                selected = false;
-                element.each(function(i, ele) {
-                    if(jQuery(ele).is(":checked")) {
-                        selected = true;
-                    }
-                });
-                if(selected) {
-                    return container.find('[name="_mlinkto"]:checked').val();
-                } else {
-                    app.helper.showAlertBox({'message' : app.vtranslate("JSLBL_PLEASE_SELECT_ATLEAST_ONE_RECORD")});
-                    return false;
-                }
-            }
-        } else {
-            return null;
-        }
-    },
-    
-    resetRelationDropdown : function() {
-        this.getContainer().find('#_mlinktotype').val("");
-    },
-    
-    openComposeEmailForm : function(type, params, data) {
-        Vtiger_Index_Js.showComposeEmailPopup(params, function(response) {
-            var descEle = jQuery(response).find('#description');
-            if(type == "reply" || type == "forward") {
-                jQuery('#subject', response).val(data.subject);
-                descEle.val(data.body);
-                jQuery('[name="cc"]', response).val("");
-                jQuery('.ccContainer', response).addClass("hide");
-                jQuery('#ccLink', response).css("display", "");
-            } else if(type == "replyall") {
-                jQuery('#subject', response).val(data.subject);
-                descEle.val(data.body);
-                var mailIds = data.ids;
-                if(mailIds) {
-                    jQuery('.ccContainer', response).removeClass("hide");
-                    jQuery('#ccLink', response).css("display", "none");
-                    jQuery('[name="cc"]', response).val(mailIds);
-                }
-            } else {
-                jQuery('#subject', response).val("");
-                descEle.val("");
-                jQuery('[name="cc"]', response).val("");
-                jQuery('.ccContainer', response).addClass("hide");
-                jQuery('#ccLink', response).css("display", "");
-            }
-        });
-    },
-	
+			var newParams = {};
+			newParams.callbackFunction = function() {
+				app.helper.hideModal();
+				self.showRelatedActions();
+			};
+			newParams.requestParams = params;
+			self.quickCreateSave(form, newParams);
+			app.helper.hideProgress();
+		});
+	},
+
+	/**
+	 * Register Quick Create Save Event
+	 * @param {type} form
+	 * @returns {undefined}
+	 */
+	quickCreateSave : function(form,invokeParams){
+		var container = this.getContainer();
+		var params = {
+			submitHandler: function(form) {
+				// to Prevent submit if already submitted
+				jQuery("button[name='saveButton']").attr("disabled","disabled");
+				if(this.numberOfInvalids() > 0) {
+					return false;
+				}
+				var formData = jQuery(form).serialize();
+				var requestParams = invokeParams.requestParams;
+
+				// replacing default parameters for custom handlings in mail manager
+				formData = formData.replace('module=', 'xmodule=').replace('action=', 'xaction=');
+				if(requestParams) {
+					requestParams['_operationarg'] = 'create';
+					if(requestParams['_mlinktotype'] == 'Events') {
+						requestParams['_mlinktotype'] = 'Calendar';
+					}
+					jQuery.each(requestParams, function(key, value){
+						formData += "&"+key+"="+value;
+					});
+				}
+
+				app.request.post({data:formData}).then(function(err,data){
+					app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData());
+					if(err === null) {
+						app.helper.hideModal();
+						app.helper.showSuccessNotification({"message":''});
+						invokeParams.callbackFunction(data, err);
+					}else{
+						app.helper.showErrorNotification({"message":err});
+					}
+				});
+			}
+		};
+		form.vtValidate(params);
+	},
+
+	saveComment : function(data) {
+		var _mlinkto = jQuery('[name="_mlinkto"]', data).val();
+		var _mlinktotype = jQuery('[name="_mlinktotype"]', data).val();
+		var _msgno = jQuery('[name="_msgno"]', data).val();
+		var _folder = jQuery('[name="_folder"]', data).val();
+		var commentcontent = jQuery('[name="commentcontent"]', data).val();
+		if(commentcontent.trim() == "") {
+			var validationParams = {
+				position: {
+					'my' : 'bottom left',
+					'at' : 'top left',
+					'container' : jQuery('#commentContainer', data)
+				}
+			};
+			var errorMsg = app.vtranslate('JSLBL_CANNOT_ADD_EMPTY_COMMENT');
+			vtUtils.showValidationMessage(jQuery('[name="commentcontent"]', data), errorMsg, validationParams);
+			return false;
+		} else {
+			vtUtils.hideValidationMessage(jQuery('[name="commentcontent"]', data));
+		}
+		var params = {
+			'module' : 'MailManager',
+			'view' : 'Index',
+			'_operation' : 'relation',
+			'_operationarg' : 'create',
+			'commentcontent' : commentcontent,
+			'_mlinkto' : _mlinkto,
+			'_mlinktotype' : _mlinktotype,
+			'_msgno' : _msgno,
+			'_folder' : _folder
+		}
+		app.helper.showProgress(app.vtranslate('JSLBL_Saving')+'...');
+		app.request.post({'data' : params}).then(function(err, response) {
+			app.helper.hideProgress();
+			if(response.ui) {
+				app.helper.showSuccessNotification({'message':''});
+				app.helper.hideModal();
+			} else {
+				app.helper.showAlertBox({'message' : app.vtranslate("JSLBL_FAILED_ADDING_COMMENT")});
+			}
+		});
+	},
+
+	getRecordForRelation : function() {
+		var self = this;
+		var container = self.getContainer();
+		var element = container.find('[name="_mlinkto"]');
+		if(element.length > 0) {
+			if(element.length == 1) {
+				element.attr('checked', true);
+				return element.val();
+			} else {
+				selected = false;
+				element.each(function(i, ele) {
+					if(jQuery(ele).is(":checked")) {
+						selected = true;
+					}
+				});
+				if(selected) {
+					return container.find('[name="_mlinkto"]:checked').val();
+				} else {
+					app.helper.showAlertBox({'message' : app.vtranslate("JSLBL_PLEASE_SELECT_ATLEAST_ONE_RECORD")});
+					return false;
+				}
+			}
+		} else {
+			return null;
+		}
+	},
+
+	resetRelationDropdown : function() {
+		this.getContainer().find('#_mlinktotype').val("");
+	},
+
+	openComposeEmailForm : function(type, params, data) {
+		Vtiger_Index_Js.showComposeEmailPopup(params, function(response) {
+			var descEle = jQuery(response).find('#description');
+			if(type == "reply" || type == "forward") {
+				jQuery('#subject', response).val(data.subject);
+				descEle.val(data.body);
+				jQuery('[name="cc"]', response).val("");
+				jQuery('.ccContainer', response).addClass("hide");
+				jQuery('#ccLink', response).css("display", "");
+			} else if(type == "replyall") {
+				jQuery('#subject', response).val(data.subject);
+				descEle.val(data.body);
+				var mailIds = data.ids;
+				if(mailIds) {
+					jQuery('.ccContainer', response).removeClass("hide");
+					jQuery('#ccLink', response).css("display", "none");
+					jQuery('[name="cc"]', response).val(mailIds);
+				}
+			} else {
+				jQuery('#subject', response).val("");
+				descEle.val("");
+				jQuery('[name="cc"]', response).val("");
+				jQuery('.ccContainer', response).addClass("hide");
+				jQuery('#ccLink', response).css("display", "");
+			}
+		});
+	},
+
 	clearPreviewContainer : function() {
 		var previewHtml = '<div class="mmListMainContainer">\n\
 							<center><strong>'+app.vtranslate('JSLBL_NO_MAIL_SELECTED_DESC')+'</center></strong></div>';
 		this.getContainer().find('#mailPreviewContainer').html(previewHtml);
 	},
-	
+
 	registerRefreshFolder : function() {
 		var self = this;
 		var container = self.getContainer();
@@ -1476,31 +1482,42 @@ Vtiger_List_Js("MailManager_List_Js", {}, {
 			}
 		});
 	},
-    
-    registerSerchTypeChangeEvent : function() {
-        var container = this.getContainer();
-        container.on('change', '#searchType', function(e){
-            var element = jQuery(e.currentTarget);
-            var searchBox = jQuery('#mailManagerSearchbox');
-            if(element.val() == 'ON'){
-                searchBox.addClass('dateField');
-                searchBox.parent().append('<span class="date-addon input-group-addon"><i class="fa fa-calendar"></i></span>');
-                vtUtils.registerEventForDateFields(searchBox);
-            } else {
-                searchBox.datepicker('remove');
-                searchBox.removeClass('dateField');
-                searchBox.parent().find('.date-addon').remove();
-            }
-        });
-    },
-    
-    registerEvents : function() {
-        var self = this;
-        self.loadFolders();
-        self.registerComposeEmail();
-        self.registerSettingsEdit();
-        self.registerInitialLayout();
+
+	registerSearchTypeChangeEvent : function() {
+		var container = this.getContainer();
+		container.on('change', '#searchType', function(e){
+			var element = jQuery(e.currentTarget);
+			var searchBox = jQuery('#mailManagerSearchbox');
+			if(element.val() == 'ON'){
+				searchBox.addClass('dateField');
+				searchBox.parent().append('<span class="date-addon input-group-addon"><i class="fa fa-calendar"></i></span>');
+				vtUtils.registerEventForDateFields(searchBox);
+			} else {
+				searchBox.datepicker('remove');
+				searchBox.removeClass('dateField');
+				searchBox.parent().find('.date-addon').remove();
+			}
+		});
+	},
+
+	registerPostMailSentEvent: function () {
+		app.event.on('post.mail.sent', function (event, data) {
+			var resultEle = jQuery(data);
+			var success = resultEle.find('.mailSentSuccessfully');
+			if (success.length > 0) {
+				app.helper.showModal(data);
+			}
+		});
+	},
+
+	registerEvents : function() {
+		var self = this;
+		self.loadFolders();
+		self.registerComposeEmail();
+		self.registerSettingsEdit();
+		self.registerInitialLayout();
 		self.registerRefreshFolder();
-        self.registerSerchTypeChangeEvent();
-    }
+		self.registerSearchTypeChangeEvent();
+		self.registerPostMailSentEvent();
+	}
 });
\ No newline at end of file