var MailSealerLightFrame = {
	Name: "MailSealerLightFrame",
	ModifyRowID: -1,
  ModifyAction: 'none',

  InitFrame: function() {
 	  MailSealerLightFrame.CreateMailSealerLightList();	
		HidePanelContent(jQuery("#MailSealerLightInputPanel"));
    jQuery("#MailSealerLightListPanel").contextMenu({menu: 'MailSealerLightListMenu'}, MailSealerLightFrame.HandleMailSealerLightListMenu);

		jQuery("#MailSealerLightPassphraseForm").submit(MailSealerLightFrame.SubmitMailSealerLightPassphrase);
		jQuery("#MailSealerLightCancelButton").click(MailSealerLightFrame.clickMailSealerLightCancelButton);
  },

  ShowFrame: function() {
		jQuery('#MailSealerLightFrame').show();
		MailSealerLightFrame.OnFrameResize();
    MailSealerLightFrame.LoadMailSealerLightPassphraseList();
		SetWindowKeyPressHandler(MailSealerLightFrame.OnKeyPress);
  },

  HideFrame: function() {
    jQuery('#MailSealerLightFrame').hide();
  },

	OnKeyPress: function(event) {
		switch (event.keyCode) {
			case 116:
				MailSealerLightFrame.LoadMailSealerLightPassphraseList();
				return false;
				break;
		}
	},
	
	OnLogoff: function() {
		jQuery("#MailSealerLightList").clearGridData();
	},
	
  OnFrameResize: function() {
		var listWidth = jQuery("#MailSealerLightInputPanel").width();
		var listHeight = Layout.state.container.innerHeight - Layout.state.north.size - Layout.state.south.size - jQuery("#MailSealerLightInputPanel").height() - 40;
		
    jQuery("#MailSealerLightList").setGridWidth(listWidth, false); 
    jQuery("#MailSealerLightList").setGridHeight(listHeight, false); 
	},

  CreateMailSealerLightList: function() {
    jQuery("#MailSealerLightList").jqGrid({
			datatype: "local",
			height: 250,
			colNames:[_('UserID'), '', _('E-Mail Address'), _('Passphrase'), _('Enabled')],
			colModel:[
				{name:'user_id',index:'user_id', width:100, hidden:true},
				{name:'image',index:'image', width:20, formatter:MailSealerLightFrame.ImageFormatter},
				{name:'address',index:'address', width:600},
				{name:'passphrase',index:'passphrase', width:100, hidden:true},
				{name:'enabled',index:'enabled', width:200, hidden:true}
				],
			imgpath: gridimgpath,
			autoencode: true,
			multiselect: false,
			ondblClickRow: MailSealerLightFrame.OnDblClickMailSealerLightList
    }); 
  },

	ImageFormatter: function (cellvalue, options, rowObject) {
		if (rowObject.enabled) {
      return '<img src="/gui/images/icons/lock.png">';
		} else {
      return '<img src="/gui/images/icons/lock_error.png">';
		}
	},

  HandleMailSealerLightListMenu: function(action, el, pos) {
		switch(action) {
			case 'AddPassphrase':
			  MailSealerLightFrame.AddPassphrase();
			  break;
			case 'EditPassphrase':
  			MailSealerLightFrame.EditPassphrase();
			  break;
			case 'DeletePassphrase':
			  MailSealerLightFrame.DeletePassphrase();
			  break;
		}
	},

  //----------------------------------------------------------------------------------------------------------------

	LoadMailSealerLightPassphraseList: function() {
    var service = new MailSealer(serviceURL, Session.SessionID);

    service.GetMailSealerPassphraseList(
      {
        success: MailSealerLightFrame.GetMailSealerPassphraseList,
        failure: ErrorHandler
      }
    );
  },

  GetMailSealerPassphraseList: function(result) {
	  jQuery("#MailSealerLightList").clearGridData();
	  for (i = 0; i < result.PassphraseList.length; i++) {
	    Row = {user_id:result.PassphraseList[i].UserID,
			       image:'',
			       address:result.PassphraseList[i].EmailAddress,
			       passphrase:result.PassphraseList[i].Passphrase,
						 enabled:result.PassphraseList[i].Enabled
						};

      jQuery("#MailSealerLightList").addRowData(i+1, Row); 
	  }
  },

//----------------------------------------------------------------------------------------------------------------

  AddPassphrase: function() {
		document.MailSealerLightPassphraseForm.EmailAddress.value = '';
		document.MailSealerLightPassphraseForm.EmailAddress.disabled = false;
		document.MailSealerLightPassphraseForm.Passphrase.value = '';
    document.MailSealerLightPassphraseForm.PassphraseActive.checked = true;

    MailSealerLightFrame.ModifyAction = 'AddPassphrase';
 		ShowPanelContent(jQuery("#MailSealerLightInputPanel"));
		MailSealerLightFrame.OnFrameResize();

    jQuery("#MailSealerLightListPanel").disableContextMenu();

    document.MailSealerLightPassphraseForm.EmailAddress.focus();
	},
	
//----------------------------------------------------------------------------------------------------------------

  EditPassphrase: function() {
		MailSealerLightFrameModifyRowID = jQuery("#MailSealerLightList").getGridParam('selrow'); 
		if( MailSealerLightFrameModifyRowID == null ) {
			jAlert(_('No row selected.'), _('Information'));
  		return;
		}

    var RowData = jQuery("#MailSealerLightList").getRowData(MailSealerLightFrameModifyRowID); 

		document.MailSealerLightPassphraseForm.EmailAddress.value = RowData.address;
		document.MailSealerLightPassphraseForm.EmailAddress.disabled = true;
		document.MailSealerLightPassphraseForm.Passphrase.value = RowData.passphrase;
    document.MailSealerLightPassphraseForm.PassphraseActive.checked = (RowData.enabled == 'true');

    MailSealerLightFrame.ModifyAction = 'EditPassphrase';
 		ShowPanelContent(jQuery("#MailSealerLightInputPanel"));
		MailSealerLightFrame.OnFrameResize();

    jQuery("#MailSealerLightListPanel").disableContextMenu();

    document.MailSealerLightPassphraseForm.Passphrase.focus();
  },

//----------------------------------------------------------------------------------------------------------------

  DeletePassphrase: function() {
		MailSealerLightFrame.ModifyRowID = jQuery("#MailSealerLightList").getGridParam('selrow'); 
		if( MailSealerLightFrame.ModifyRowID == null ) {
			jAlert(_('No row selected.'), _('Information'));
  		return;
		}

		jConfirm("Do you want to delete the selected items ?", 'Confirmation Dialog',
		function(r) {
		  if (r) {
				jQuery("#MailSealerLightListPanel").disableContextMenu();

				var EmailAddress = jQuery("#MailSealerLightList").getCell(MailSealerLightFrame.ModifyRowID, 'address');
				
				var service = new MailSealer(serviceURL, Session.SessionID);
				service.DeleteMailSealerPassphrase(EmailAddress,
					{
						success: MailSealerLightFrame.DeleteMailSealerPassphrase,
						failure: ErrorHandler
					}
				);
			}
		});
	},

  DeleteMailSealerPassphrase: function() {
    jQuery("#MailSealerLightList").delRowData(MailSealerLightFrame.ModifyRowID);
		MailSealerLightFrame.ModifyRowID = -1;
    jQuery("#MailSealerLightListPanel").enableContextMenu();
	},
	
//----------------------------------------------------------------------------------------------------------------

  OnDblClickMailSealerLightList: function(rowid, iRow, iCol) {
    MailSealerLightFrame.HandleMailSealerLightListMenu('EditPassphrase', null, null);
  },

//----------------------------------------------------------------------------------------------------------------

  clickMailSealerLightCancelButton: function() {
    MailSealerLightFrame.ModifyAction = 'none';
    HidePanelContent(jQuery("#MailSealerLightInputPanel"));
		MailSealerLightFrame.OnFrameResize();
		
    jQuery("#MailSealerLightListPanel").enableContextMenu();
	},	

//----------------------------------------------------------------------------------------------------------------

  SubmitMailSealerLightPassphrase: function() {
		switch(MailSealerLightFrame.ModifyAction) {
			case 'AddPassphrase':
					var service = new MailSealer(serviceURL, Session.SessionID);
					var Passphrase = {UserID:-1,
              		 		      EmailAddress:document.MailSealerLightPassphraseForm.EmailAddress.value,
            			 		      Passphrase:document.MailSealerLightPassphraseForm.Passphrase.value,
            						  	Enabled:document.MailSealerLightPassphraseForm.PassphraseActive.checked
					         		    }; 
					service.SaveMailSealerPassphrase(Passphrase,
						{
							success: MailSealerLightFrame.SaveMailSealerPassphrase,
							failure: ErrorHandler
						}
					);
			  break;
			case 'EditPassphrase':
					var service = new MailSealer(serviceURL, Session.SessionID);
					var Passphrase = {UserID:-1,
              				      EmailAddress:document.MailSealerLightPassphraseForm.EmailAddress.value,
            					      Passphrase:document.MailSealerLightPassphraseForm.Passphrase.value,
            						  	Enabled:document.MailSealerLightPassphraseForm.PassphraseActive.checked
					       		      }; 
					service.SaveMailSealerPassphrase(Passphrase,
						{
							success: MailSealerLightFrame.SaveMailSealerPassphrase,
							failure: ErrorHandler
						}
					);
			  break;
		}
		
		return false;
	},
	
  SaveMailSealerPassphrase: function() {
    MailSealerLightFrame.ModifyAction = 'none';
    HidePanelContent(jQuery("#MailSealerLightInputPanel"));
    MailSealerLightFrame.OnFrameResize();
	 
    jQuery("#MailSealerLightListPanel").enableContextMenu();

    MailSealerLightFrame.LoadMailSealerLightPassphraseList();
	}
}
