function __EMail(id) {
	this.lang = Locale.Gadgets.EMail;
	this.Core = new __StdModuleCore(this, id, 'e_mail', this.lang.title, this.lang.desc);


	if(!sizeof(SProfile.user) || !SProfile.user.id) {
		
		this.Content.innerHTML = '<strong>'+ Locale['AuthNeed'] +'</strong><br><div align="center"><a onclick="Startup.DrawRegisterForm()" href="#"><img border="0" src="/img/tpl/'+Skin+'/toolbar/register.gif" title="'+ Locale['Registration'] +'"></a>&nbsp;&nbsp;&nbsp;<a onclick="Startup.DrawLoginForm()" href="#"><img border="0"src="/img/tpl/'+Skin+'/toolbar/login.gif" title="'+ Locale['Enter'] +'"></a></div>'	
		
		
		/*this.Content.innerHTML = '<strong>'+ Locale['AuthNeed'] +'</strong><br><div align="center"><a onclick="Startup.DrawRegisterForm()" href="#"><img border="0" src="/img/startup/register.gif" title="'+ Locale['Registration'] +'"></a>&nbsp;&nbsp;&nbsp;<a onclick="Startup.DrawLoginForm()" href="#"><img border="0"src="/img/startup/login.gif" title="'+ Locale['Enter'] +'"></a></div>'
		*/	
		
		
		return false;
	} 

	//var tabId = Desktop.NewTab('cMain', 'E-mail', 'money');
	this.oForm = false;
	this.mailAccounts = {};
	this.searchControls = {};


	this.stepTimer = 600;
	this.messagesOnPage = 30;
	this.updatePeriod = 300000;
	this.controlls = {};
	
	this.defaultMessagesListFildHeight = 150;

	this.drawNewAccountForm();

	//Update.request('EMail', 'module', 'get_all_accounts_stat', { id: this.id });
	Update.request('EMail', 'module', 'get_accounts', { id: this.id });

}


//-------------------------------------------------------------------------------
//рисует форму для создания нового аккаунта
__EMail.prototype.drawNewAccountForm = function(section) {
	var self = this;

	var formID = "fm_"+this.id;

	var form_str = "<b>"+ this.lang['AddBox'] +"</b><br>\
	<form id="+formID+">\
	<table border=0 class=em_searchform width=100%>\
	<tr><td>"+ Locale['Email'] +": </td><td width=100%><input style='width: 95%' type=text name=e_mail></td></tr>\
	<tr><td>"+ Locale['Password'] +": </td><td><input style='width: 95%' type=Password name=password></td></tr>\
	</table><input class=std_button type=submit name=create_button value='"+ Locale['ToAdd'] +"'></form>\
	";

	this.Options.innerHTML = form_str;

	this.oForm = $(formID);
	this.oForm.onsubmit = function() {self.onSubmitCreateAccount(); return false;}
	//this.oForm.onsubmit = this.onSubmitCreateAccount;

}

//-------------------------------------------------------------------------------
//вызывается при onsubmit при создании аккаунта через форму
__EMail.prototype.onSubmitCreateAccount = function() {
	var self = this;

	if(!self.oForm.e_mail.value) {
		alert(this.lang.msg['NotEnteredEmail']);
		return false;
	}

	if(!self.oForm.password.value) {
		alert(this.lang.msg['NotEnteredEmail']);
		return false;
	}

	for(accountID in self.mailAccounts) {
		if(self.mailAccounts[accountID].e_mail == self.oForm.e_mail.value) {
			alert(this.lang.msg['EmailDubl']);
			return false;
		}
	}

	self.oForm.onsubmit = function() {return false;}
	self.oForm.create_button.disabled = true;

	var options = {e_mail: self.oForm.e_mail.value,							
							passwd: self.oForm.password.value
							}

	Update.request('EMail', 'module', 'new_account', {id: this.id}, options, true);	

	return false;
}

//-------------------------------------------------------------------------------
__EMail.prototype.prepareSettings = function(accountSettings, profileSettings, is_ssl) {

	if(profileSettings.length == 0) {
		profileSettings = {};
	}

	for(domain in profileSettings) {
		var tmp_array = {};
		tmp_array.domain = domain;
		tmp_array.port = profileSettings[domain];
		tmp_array.is_ssl = is_ssl;

		accountSettings[sizeof(accountSettings)] = tmp_array;
	}

}

//-------------------------------------------------------------------------------
//вставляет новые настройки в указанный аккаунт
__EMail.prototype.setSettings = function(new_settings, accountID) {
	var self = this;

	//self.mailAccounts[accountID].settings = {};
	var account = self.mailAccounts[accountID];
	account.settings.pop3 = {};
	account.settings.imap = {};
	account.settings.smtp = {};

	/*
	if(new_settings.e_mail) account.settings.e_mail = new_settings.e_mail;
	
	if(new_settings.login) account.settings.login = new_settings.login;
		else account.settings.login = '';
	*/	
	

	self.prepareSettings(account.settings.pop3, new_settings.pop3s, true);
	self.prepareSettings(account.settings.pop3, new_settings.pop3, false);

	self.prepareSettings(account.settings.imap, new_settings.imaps, true);
	self.prepareSettings(account.settings.imap, new_settings.imap, false);

	self.prepareSettings(account.settings.smtp, new_settings.smtps, true);
	self.prepareSettings(account.settings.smtp, new_settings.smtp, false);

}

//-------------------------------------------------------------------------------
//показывает настройки аккаунта
__EMail.prototype.showSettings = function(accountID, protoID, e) {

	//var self = this;
	if(!protoID) protoID = 'pop3';

	//сначала прокрутим все divы настроек и скроем их
	for(var id in this.mailAccounts) {
		if(id == accountID) continue;
		 this.mailAccounts[id].settingsObj.style.display = 'none';
	}

	var pointerY = Event.pointerY(e);


	this.mailAccounts[accountID].settingsObj.style.display = 'block';
	
	//создаем темповую копию настроек с которой и будем работать
	this.resetSettings(accountID);

	this.reDrawSettings(this.mailAccounts[accountID].settingsObj, accountID);
	this.showTabSettings(accountID, protoID);	
	
	

	if(pointerY > 400) {
		this.mailAccounts[accountID].settingsObj.style.top = (pointerY -
			parseInt(this.mailAccounts[accountID].settingsObj.clientHeight)) + 'px';
	}else{
		this.mailAccounts[accountID].settingsObj.style.top = pointerY + 'px';	
	}

	//alert(Modules[this.id].State.cName);

	if(Modules[this.id].State.cName == 'cRight') {
		this.mailAccounts[accountID].settingsObj.style.left = (Event.pointerX(e) -
			parseInt(this.mailAccounts[accountID].settingsObj.clientWidth) - 0)+'px';
	}else{
		this.mailAccounts[accountID].settingsObj.style.left = (Event.pointerX(e)+0)+'px';
	}
}

//-------------------------------------------------------------------------------
//делает активной указанную вкладку в настройках
__EMail.prototype.showTabSettings = function(accountID, protoID) {

	var self = this;
	var settingTabObjects = self.mailAccounts[accountID].settingTabObjects;

	//сначала скроем все вкладки
	for(var id in settingTabObjects) {
		settingTabObjects[id].tab.className = 'setting_tab';
		settingTabObjects[id].settings.style.display = 'none';
	}

	settingTabObjects[protoID].tab.className = 'setting_tab_on';
	settingTabObjects[protoID].settings.style.display = 'block';

	self.mailAccounts[accountID].currentProtoID = protoID;
}

//-------------------------------------------------------------------------------
//реакция на нажатие на вкладку, делает активной вкладку с настройками протокола
function showProtocolSettings() {
	gadgetObj = this.xdata.gadgetObj;
	accountID = this.xdata.accountID;
	gadgetObj.showTabSettings(accountID, this.xdata.protoID);
}

//-------------------------------------------------------------------------------
//начало перетаскивания гаджета, прячем, все что не нужно
__EMail.prototype.onStartDrag = function(accountID, protoID) {

	//прокрутим все divы настроек и скроем их
	for(var id in this.mailAccounts) {
		 this.mailAccounts[id].settingsObj.style.display = 'none';
	}

}


//-------------------------------------------------------------------------------
//ответ, на запрос данных модуля (аккаунтов)
__EMail.prototype.CB_getAccounts = function(data) {
	var self = this;

	this.controlls = {};

	if(sizeof(data.errors) > 0) { alert(data.errors[0].message); return false;}

	if(!data || !data.variables || !data.variables.mailAccounts) return false;

	this.lastEmails = {};

	if(data.variables.lastEmails) {
		//this.lastEmails = data.variables.lastEmails;
		for(var email in data.variables.lastEmails) {
			//this.lastEmails[email] = data.variables.lastEmails[email];
			this.lastEmails[email] = email;
		}
	}

	var mailAccounts = data.variables.mailAccounts;

	//инициализируем this.mailAccounts

	if (mailAccounts.length == 0) mailAccounts = {};


	for(var accountID in mailAccounts) {

		this.mailAccounts[accountID] = {};
		//this.mailAccounts[accountID].controlls = {};
		var account = this.mailAccounts[accountID];
		var profileAccount = mailAccounts[accountID];


		account.isError = false;
		account.stateMessage = 'OK';
		account.messages = {};
		account.del_messages = {};
		account.settingsChanged = false;
		account.settings = {};
		account.controlls = {};
		
		//если пустой e_mail, но есть login - меняем их местами
		if(profileAccount.login && !profileAccount.e_mail) {
			profileAccount.e_mail = profileAccount.login;
			profileAccount.login = '';
		}
		
		account.settings.e_mail = profileAccount.e_mail;
		
		if(!profileAccount.login) account.settings.login = '';
			else account.settings.login = profileAccount.login;
		 
		account.settings.pop3 = {};
		account.settings.imap = {};
		account.settings.smtp = {};

		self.prepareSettings(account.settings.pop3, profileAccount.pop3, false);
		self.prepareSettings(account.settings.pop3, profileAccount.pop3s, true);

		self.prepareSettings(account.settings.imap, profileAccount.imap, false);
		self.prepareSettings(account.settings.imap, 	profileAccount.imaps, true);

		self.prepareSettings(account.settings.smtp, profileAccount.smtp, false);
		self.prepareSettings(account.settings.smtp, 	profileAccount.smtps, true);


		account.folders = profileAccount.folders;
		account.top_messages = profileAccount.top_messages;

		account.accountTotalMsg = profileAccount.accountTotalMsg;
		account.accountUnseenMsg = profileAccount.accountUnseenMsg;

		for(folder_id in account.folders) {
			account.folders[folder_id].lastMessageID = false;
			account.folders[folder_id].needUpdate = true;
		}

	}

	this.reDrawAccountsList();

	if(sizeof(this.mailAccounts) > 0) {
		
		mActionsInspector.execute(this.id);

		this.Core.AddUpdater('getMailsTimer', this.periodicalRefresh.bind(this), this.stepTimer);
		//console.info('timer start');
		//запросим статистику по всем аккаунтам
		this.lockAllAccounts();
		var options = {};
		Update.request('EMail', 'module', 'refresh_all_accounts_stat', {id: this.id}, options, true);

	}

}

//-------------------------------------------------------------------------------
//this.Core.Timers['getMailsTimer']
__EMail.prototype.periodicalRefresh = function(){
	this.lockAllAccounts();
	var options = {};
	 Update.request('EMail', 'module', 'refresh_all_accounts_stat', {id: this.id}, options, true);

}


//-------------------------------------------------------------------------------
//проверяет, есть ли в гаджете  аккаунт с таким ID
__EMail.prototype.checkAccountID = function(accountID) {
	var self = this;

	if(self.mailAccounts[accountID]) {
		return true;
	}

	return false;

}

//-------------------------------------------------------------------------------
//статистика аккаунта
//вычисляет сколько всего писем и количество непрочитанных
//общее значение в аккаунте и в каждой папке
__EMail.prototype.recalculateAccountStat = function(accountID, folderID) {
	var self = this;
	//this.mailAccounts[dataObj.accountID]['folders'] = dataObj['folders'];

	var folders = self.mailAccounts[accountID].folders;

	self.mailAccounts[accountID].accountTotalMsg = 0;
	self.mailAccounts[accountID].accountUnseenMsg = 0;

	for(folderID in folders ) {

		folders[folderID].totalMsg = 0;
		folders[folderID].unseenMsg = 0;

		var messages = folders[folderID].messages;

		for(messID in messages) {
			if(messages[messID].unseen) folders[folderID].unseenMsg++;
			folders[folderID].totalMsg++;
		}

		self.mailAccounts[accountID].accountTotalMsg+= totalMsg;
		self.mailAccounts[accountID].accountUnseenMsg+= unseenMsg;
	}


}

//-------------------------------------------------------------------------------
//статистика папки
__EMail.prototype.recalculateFolderStat = function(accountID, folderID) {

	//self.mailAccounts[accountID].accountTotalMsg
	//self.mailAccounts[accountID].accountUnseenMsg
	var self = this;

	self.mailAccounts[accountID].accountTotalMsg-= self.mailAccounts[accountID].folders[folderID].totalMsg;
	self.mailAccounts[accountID].accountUnseenMsg-=
		self.mailAccounts[accountID].folders[folderID].unseenMsg;

	self.mailAccounts[accountID].folders[folderID].unseenMsg = 0;
	self.mailAccounts[accountID].folders[folderID].totalMsg = 0;

	var messages = self.mailAccounts[accountID].folders[folderID].messages;
	for(messID in messages) {
			if(messID == 'toJSONString') continue;
			if(messages[messID].unseen) self.mailAccounts[accountID].folders[folderID].unseenMsg++;
			self.mailAccounts[accountID].folders[folderID].totalMsg++;
	}

	self.mailAccounts[accountID].accountTotalMsg+= self.mailAccounts[accountID].folders[folderID].totalMsg;
	self.mailAccounts[accountID].accountUnseenMsg+=
		self.mailAccounts[accountID].folders[folderID].unseenMsg;

}




//-------------------------------------------------------------------------------
//обрабатывает ответ на запрос создания аккаунта
__EMail.prototype.CB_newAccount = function(data) {

	var self = this;
	//восстанавливаем активность формы
	self.oForm.onsubmit = function() {self.onSubmitCreateAccount(); return false;}
	self.oForm.create_button.disabled = false;

	if(sizeof(data.errors) > 0) { alert(data.errors[0].message); return false;}
	//if(!isEmpty(data.errors)) { alert(data.errors[0].message); return false;}


	self.oForm.e_mail.value = '';
	//self.oForm.login.value = '';
	self.oForm.password.value = '';
	var variables = data.variables;

	if(!variables.accountID) return false;

	 var accountID = variables.accountID;

	 if(!variables.folders) variables.folders = {};
	 if(!variables.settings)
	 	variables.settings = {pop3: {}, pop3s: {}, imap: {}, imaps: {}, smtp: {}, smtps: {} };

	//аккаунт создался нормально, добавим его во внутреннюю структуру и запросим статистику

	this.mailAccounts[accountID] = {e_mail: variables.e_mail,
														login: variables.login,
														messages: {},
														del_messages: {},
														settingsChanged: false,
														settings: {'e_mail': variables.e_mail, 'login': variables.login},
														folders: variables.folders,
														currentFolder: false
														};

	this.setSettings(variables.settings, accountID);

	this.reDrawAccountsList();

	if(variables.error) {

		var message = '';

		switch(variables.error_code) {
			case 'nonexistent_domain':
				message = this.lang.msg['NotExistDomain'];
				break;

			case 'cannot_detect':
				message = this.lang.msg['CantDetectDomainSettings'];
				break;

			case 'cannot_connect':				
					if(-1 != variables.e_mail.indexOf('gmail.com') &&
						-1 != variables.error_message.indexOf('not enabled for POP access')) {
							message = Locale['Error'] +': '+variables.error_message+' '+ this.lang.msg['PopAccessNotEnabled'];
							
					}else{
						message = Locale['Error'] +': '+variables.error_message+' '+ this.lang.msg['CheckSettings'];
					}
			
				
				break;
		}

		alert(message);
		
		
		this.unlockAccount(variables.accountID, false, message);
		
		//если gmail и доступ по pop3 запрещен - открываем вкладку с инструкцией
		//создаем временную форму и пробуем залогинится на gmail  вновом окне
		if(-1 != variables.e_mail.indexOf('gmail.com') &&
			-1 != message.indexOf('not enabled for POP access')) {
			//alert('ura');
			var tabID = Desktop.NewTab('cMain',
															Locale['Help'] +': '+ this.lang.msg['EnablingPopGMail'],
															'e_mail',  null,
															'_blank', null, true);
			
			var iframeObj = $('Browser.'+tabID);
			iframeObj.src = 'http://www.krozilo.com/gmail_help.php';
			
			Desktop.SetActiveByID('cMain', tabID);			
			
		}		
		
		this.showSettings(variables.accountID);
		return false;
	}

	if(!this.Core.Timers || !this.Core.Timers['getMailsTimer']) {
		this.Core.AddUpdater('getMailsTimer', this.periodicalRefresh.bind(this), this.stepTimer);
		//console.info('timer start');
	}

	this.lockAccount(accountID, this.lang.msg['ReceivingMail']);
	var options = {accountID: accountID}
	Update.request('EMail', 'module', 'refresh_account_stat', {id: this.id}, options, true);

}

//-------------------------------------------------------------------------------
//обрабатывает ответ на запрос об удалении аккаунта
__EMail.prototype.CB_deleteAccount = function(data) {

	if(sizeof(data.errors) > 0) { alert(data.errors[0].message); return false;}

	if(!data.variables.accountID) return false;

	var account = this.mailAccounts[data.variables.accountID];

	if(account.TabID && Desktop.State.cMain.content[account.TabID]) {
		Desktop.DeleteTabByID('cMain', account.TabID);		
	}
	
	delete this.mailAccounts[data.variables.accountID];
	
	if(sizeof(this.mailAccounts) == 0 && this.Core.Timers && this.Core.Timers['getMailsTimer']) {		
		//console.info(this.Core.Timers['getMailsTimer']);
		this.Core.DeleteUpdater('getMailsTimer');
	}

	this.reDrawAccountsList();

}


//-------------------------------------------------------------------------------
//обрабатывает ответ на запрос об изменении настроек аккаунта
__EMail.prototype.CB_newSettings = function(data) {
	var self = this;

	var vars =  data.variables;

	if(sizeof(data.errors) > 0) {
		if(vars.accountID) self.resetSettings(vars.accountID);
		alert(data.errors[0].message); return false;
	}

	if(!vars.settings) return false;

	var account = self.mailAccounts[vars.accountID];

	if(account.settings.e_mail != vars.settings.e_mail) {
		var options = {accountID: vars.accountID};
		Update.request('EMail', 'module', 'refresh_account_stat', {id: this.id}, options, true);
		this.lockAccount(vars.accountID);
	}
	
	if(vars.settings.e_mail) account.e_mail = account.settings.e_mail= vars.settings.e_mail;
	
	if(vars.settings.login) account.login = account.settings.login = vars.settings.login;
		else account.login = account.settings.login = '';
 
	self.setSettings(vars.settings, vars.accountID);

	//self.reDrawSettings(self.mailAccounts[dataObj.accountID].settingsObj, dataObj.accountID);
	
	
	//self.showTabSettings(vars.accountID, self.mailAccounts[vars.accountID].currentProtoID);
	
	
	alert('Настройки сохранены');	
	account.settingsObj.style.display = 'none';
	
	
	self.mailAccounts[vars.accountID].settingsChanged = false;
}


//-------------------------------------------------------------------------------
//обрабатывает ответ на запрос о статистики аккаунта
__EMail.prototype.CB_getAccountStat = function(data) {

	if(sizeof(data.errors) > 0) { alert(data.errors[0].message); return false;}

	var vars = data.variables;

	//воткнем новую структуру и статистику в заданный аккаунт и перерисуем структуру аккаунтов
	this.mailAccounts[accountID].folders = vars.folders;
	this.mailAccounts[accountID].e_mail = vars.e_mail;
	this.mailAccounts[accountID].login = vars.login;
	this.mailAccounts[accountID].top_messages = vars.top_messages;

	this.mailAccounts[accountID].accountTotalMsg = vars.accountTotalMsg;
	this.mailAccounts[accountID].accountUnseenMsg = vars.accountUnseenMsg;

	this.reDrawAccountsList();
}


//-------------------------------------------------------------------------------
//обрабатывает ответ на запрос о статистики всех аккаунтов
__EMail.prototype.CB_getAllAccountsStat = function(data) {

	var self = this;
	
	if(data.errors && !data.variables && !data.variables.accountID) {
		alert(data.errors[0].message);		
		return false;
	}
	
	if(!data || !data.variables || !data.variables.accountID) return false;
	var vars = data.variables;
	var accountID = vars.accountID;
	var account = 	self.mailAccounts[accountID];

	if(data.errors && accountID) {
		this.unlockAccount(vars.accountID, false, data.errors[0].message);
		return false;
	}


	if(vars.last_step && accountID) {
		this.unlockAccount(accountID, true);
		if(account.currentFolder && Desktop.State.cMain.content[account.TabID]) {
			self.refreshFolderMessages(accountID, account.currentFolder);
		}
		return true;
	}

	if(!self.mailAccounts[accountID]) {
		self.mailAccounts[accountID] = {};
		account = self.mailAccounts[accountID];
		//console.info(accountID);
	}


	if(!vars.folders) return true;

	account.e_mail = vars.e_mail;
	account.login = vars.login;
	account.top_messages = vars.top_messages;
	account.accountUnseenMsg = vars.accountUnseenMsg;
	account.accountTotalMsg = vars.accountTotalMsg;

	for(var folderID in vars.folders) {

		if(!account.folders[folderID]) {
			account.folders[folderID] = {};
			account.folders[folderID].messages = {};			
		}
		
		account.folders[folderID].needUpdate = true;

		//if((accountID == self.currentAccount) && (folderID != self.currentFolder)) {
		if((folderID != account.currentFolder) || !account.TabID ||
			!Desktop.State.cMain.content[account.TabID]) {
				account.folders[folderID].needUpdate = true;
		}

		var tmp_folder = account.folders[folderID];
		tmp_folder.name = vars.folders[folderID].name;
		tmp_folder.parent_id = vars.folders[folderID].parent_id;
		tmp_folder.totalMsg = vars.folders[folderID].totalMsg;
		tmp_folder.unseenMsg = vars.folders[folderID].unseenMsg;
	}

	this.reDrawAccountsList();

}


//-------------------------------------------------------------------------------
//отправляет запрос на сервер для обновления списка заголовков в текущей папке
__EMail.prototype.refreshFolderMessages = function(accountID, folderID) {


	this.lockAccount(accountID, this.lang.msg['ReceivingHeadersList']);

	var lastTimestamp = 0;
	if(this.mailAccounts[accountID].folders[folderID])
		lastTimestamp = this.mailAccounts[accountID].folders[folderID].lastTimestamp;

	var options = {accountID: accountID, folderID: folderID, lastTimestamp: lastTimestamp};

	Update.request('EMail', 'module', 'get_folder_messages', {id: this.id}, options, true);
}

//-------------------------------------------------------------------------------
//ответ на запрос заголовков писем
__EMail.prototype.CB_getFolderMessages = function(data) {

	if(!data || !data.variables || !data.variables.new_messages) return false;

	var vars = data.variables;
	var accountID = vars.accountID;
	var folderID = vars.folderID;

	if(!accountID) return false;
	if(!folderID) return false;

	var account = this.mailAccounts[accountID];
	var folder = this.mailAccounts[accountID].folders[folderID];

	account.messagesListFild.style.display = 'block';
	account.firstTabOpen = false;

	if(!folder.messages || folder.messages.length == 0) folder.messages = {};
	if(!vars.new_messages || vars.new_messages.length == 0) vars.new_messages = {};

	//folder.messages = data.variables.messages;
	for(mess_id in vars.new_messages) {
		folder.messages[mess_id] = vars.new_messages[mess_id];
	}

	if(vars.deleted_ids) {
		for(var i in vars.deleted_ids) {
			deleted_id = vars.deleted_ids[i];
			if(folder.messages[deleted_id]) delete folder.messages[deleted_id];
			if(account.messages[deleted_id]) delete account.messages[deleted_id];
		}
	}

	folder.lastTimestamp = vars.lastTimestamp;
	folder.needUpdate = false;

	
	this.unlockAccount(accountID, true);
	
	this.sortMessages(accountID, folderID, 'timestamp');
	account.currentMessagesList = folder.messages;
	folder.searchMode = false;
	this.reDrawMessageList(accountID, folderID);
	this.reDrawPaging(accountID, folderID);
}

//-------------------------------------------------------------------------------
//показывает список писем в заданной папке
//если еще не скачен, отправляет запрос на сервер
__EMail.prototype.ON_showFolderMessages = function() {

	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	
	gadgetObj.showFolderMessagesFromTab(accountID, folderID);

}

//-------------------------------------------------------------------------------
//реакция на нажатие на папку во вкладке
__EMail.prototype.showFolderMessagesFromTab = function(accountID, folderID) {
	
	var account = this.mailAccounts[accountID];
	var folder = account.folders[folderID];

	account.currentFolder = folderID;

	var messagesListFild = $('messagesListFild'+accountID);

	if(messagesListFild) {
		messagesListFild.style.position = 'absolute';
		messagesListFild.display = 'block';
		messagesListFild.style.visibility = 'visible';
		messagesListFild.style.zIndex = 50000;
		messagesListFild.style.top = 10;
	}

	if(this.checkTab(accountID, folderID)) {
		this.reDrawMessagesLayer(accountID, folderID);
	}

	if(folder.searchMode) {
		folder.searchMode = false;
		folder.currentPage = 1;
	}

	//account.TabID
	mActionsInspector.addAction(this.id, account.TabID, 'showFolderMessagesFromTab',
														{accountID: accountID, folderID: folderID});


	if(!account.folders[folderID].needUpdate) {
		account.currentMessagesList = folder.messages;
		this.reDrawMessageList(accountID, folderID);
		this.reDrawPaging(accountID, folderID);
		return true;
	}

	if(this.isAccountLocked(accountID)) return false;

	this.refreshFolderMessages(accountID, folderID);
	
	
}




//-------------------------------------------------------------------------------
//реакция на нажатие на папку во вкладке
__EMail.prototype.ON_showFolderMessagesFromTab = function() {

	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;

	var account = gadgetObj.mailAccounts[accountID];
	var folder = gadgetObj.mailAccounts[accountID].folders[folderID];
	account.currentFolder = folderID;

	gadgetObj.reDrawMessagesLayer(accountID, folderID);

	if(folder.searchMode) {
		folder.searchMode = false;
		folder.currentPage = 1;
	}

	if(sizeof(folder.messages) > 0) {
		account.currentMessagesList = folder.messages;
		gadgetObj.reDrawMessageList(accountID, folderID);
		gadgetObj.reDrawPaging(accountID, folderID);
		return true;
	}
	
	if(gadgetObj.isAccountLocked(accountID)) return false;
	
	gadgetObj.refreshFolderMessages(accountID, folderID);

}

//-------------------------------------------------------------------------------
//проверяет, существует ли вкладка для указанного аккаунта, если нет - создает
__EMail.prototype.checkTab = function(accountID, folderID) {

	var account = this.mailAccounts[accountID];

	if(!account.TabID || !Desktop.State.cMain.content[account.TabID]) {
		account.TabID = Desktop.NewTab('cMain', account.settings.e_mail, 'e_mail', null, null, null, true);
		Desktop.SetActiveByID('cMain', account.TabID);
		account.firstTabOpen = true;
		this.reDrawMessagesLayer(accountID, folderID);
		return false;
	}

	account.firstTabOpen = false;

	Desktop.SetActiveByID('cMain', account.TabID);
	return true;
}

//-------------------------------------------------------------------------------
//
__EMail.prototype.reDrawMessagesLayer = function(accountID, folderID) {

	var self = this;
	var tmp_str = '';

	var account = self.mailAccounts[accountID];
	var folder_name = '';

	var currFolder = {};

	if(folderID) {
	 folder_name = account.folders[folderID].name;

		if(!account.folders[folderID].currentPage) {
			account.folders[folderID].currentPage = 1;
		}

		var currFolder = self.mailAccounts[accountID].folders[folderID];
	}
	

	//div для отступа
	tmp_str = '<div id=mainPaddingBlock'+accountID+'  style="padding: 9px">';

	//папки аккаунта
	tmp_str+= '<table id=foldersBlock'+accountID+' class=tabfolders width=100%><tr>';
	for(var folder_id in account.folders) {
		fd = account.folders[folder_id];
		var td_class = 'folder_norm';
		//if(folderID == folder_id) on_style = 'style="background: #E3F7FF;"';
		if(folderID == folder_id) td_class = 'folder_on';

		tmp_str+= '<td nowrap class='+td_class+'><a href="javascript: void(0);" id=fld'+accountID+folder_id+'>'+fd.name+'</a></td>';
		tmp_str+='<td class=folder_spacer ><div style="width: 2px;"></div></td>';
	}
	tmp_str+= '<td width=100% class=folder_spacer ><div></div></td></tr></table>';


	
	//это обрамляющий div
	//tmp_str+='<div >';
	tmp_str+='<table id=mainBlock'+accountID+' class=messages_main><tr><td style="padding: 7px;">';
	//**********************
	//это форма поиска

	tmp_str+= '<form style="margin-bottom: 5px;" id=search'+accountID+'><table width=100% class=em_searchform><tr>';
	tmp_str+= '<td><img src="/img/i/mail/search.gif" width=16 height=16></td><td><b>'+ Locale['Search'] +':</b></td>';
	tmp_str+= '<td width=100%><input type=text name=search_text style="width: 100%"></td>';
	tmp_str+= '<td>&nbsp;</td><td><input class=std_button type=submit value="'+ Locale['ToSearch'] +'"></td>';

	tmp_str+= '</tr></table></form>';

	//***********************


	tmp_str+= '<form id=sortform'+	accountID+'><table id=columnHeadersBlock'+accountID+' class=messagelist width=100%><tr><td width=13><img src="/img/i/mail/clip.gif" width=9 height=13></td>'+
		'<td width=100 class=em_column_hd><a href="javascript: void(0);"  id="sort_from'+accountID+'">'+ Locale['From'] +'</a></td><td class=em_column_hd>'+
		'<a href="javascript: void(0);" id="sort_subject'+accountID+'">'+ Locale['Subject'] +'</a></td>'+
		'<td width=100 class=em_column_hd><a href="javascript: void(0);" id="sort_date'+accountID+'">'+ this.lang['Received'] +'</a></td>'+
		//'<td><a href="javascript: void(0);" id="sort_to'+accountID+'">Кому</a></td>'+
		'<td width=15><input type=checkbox id=select_all'+accountID+'></td><td width=15></td></tr></table></form>';


	tmp_str+= '<table width=100%><tr><td><form onsubmit="function(){return false;}"><div style="border: 1px solid #7F7F7F; background: white; height: 150px;  overflow: auto;" id=messagesListFild'+accountID+'></div>';
	

	tmp_str+= '<table id=pagingBlock'+accountID+' style="margin-top: 5px;" width=100%><tr><td id=paging'+accountID+
		'></td><td align=right><input class=std_button type=button value="'+ Locale['ToDelete'] +'" id=delbutton'+
		accountID+' ></td></tr></table></form></td></tr></table>';

	tmp_str+='</td></tr></table><table width=100%  style="display: none; width: 100%" id=messageBlock'+accountID
		+'  class=messages_main><tr><td style="padding: 7px;" width=100%>';


	//tmp_str+= '<table width=100%><tr><td width=100%>&nbsp;</td></tr></table>';

	tmp_str+='<br><div class=em_messagefild id=messageFild'+accountID+'></div>';

	//закрываем основной и ограничивающий слой	
	tmp_str+='</td></tr></table>';
	tmp_str+='</div>';

	//self.mailAccounts[accountID].messagesLayer.innerHTML = tmp_str;

	Desktop.State.cMain.content[account.TabID].content.innerHTML = tmp_str;


	if(folderID) {
		//ссылки на заголовках колонок для сортировки
		sort_from_href = $('sort_from'+accountID);
		sort_from_href.onclick = self.ON_sortMessages;
		sort_from_href.xdata = {gadgetObj: self, accountID: accountID, folderID: folderID, sortFild: 'from'};
		if(currFolder.sortFild == 'from') sort_from_href.style.background = '#CCCCCC';

		sort_subject_href = $('sort_subject'+accountID);
		sort_subject_href.onclick = self.ON_sortMessages;
		sort_subject_href.xdata = {gadgetObj: self, accountID: accountID, folderID: folderID, sortFild: 'subject'};
		if(currFolder.sortFild == 'subject') sort_subject_href.style.background = '#CCCCCC';

		sort_date_href = $('sort_date'+accountID);
		sort_date_href.onclick = self.ON_sortMessages;
		sort_date_href.xdata = {gadgetObj: self, accountID: accountID, folderID: folderID,
												sortFild: 'timestamp'};
		if(currFolder.sortFild == 'timestamp') sort_date_href.style.background = '#CCCCCC';
		
		
		
		var select_all_href = $('select_all'+accountID);
		select_all_href.onclick = self.selectAllMessages;
		select_all_href.xdata = {gadgetObj: self, accountID: accountID, folderID: folderID};
	}

	for(var folder_id in account.folders) {
		var fld_href = $('fld'+accountID+folder_id);
		fld_href.onclick = this.ON_showFolderMessagesFromTab;
		fld_href.xdata = {'gadgetObj': self,
									'accountID':  accountID,
									'folderID': folder_id
									}
	}


	account.messagesListFild = $('messagesListFild'+accountID);
	account.messageFild = $('messageFild'+accountID);
	
	
	
	account.mainBlock = $('mainBlock'+accountID);
	account.foldersBlock = $('foldersBlock'+accountID);
	account.columnHeadersBlock = $('columnHeadersBlock'+accountID);
	account.pagingBlock = $('pagingBlock'+accountID);	
	account.messageBlock = $('messageBlock'+accountID);
	account.mainPaddingBlock = $('mainPaddingBlock'+accountID);
	
	

	account.searchForm = $('search'+accountID);
	account.searchForm.onsubmit = self.onSearch;
	account.searchForm.xdata = {'gadgetObj': self,
													'accountID':  accountID,
													'folderID': folderID
													};

	/*
	var tabObj = $('Content.cMain.'+account.TabID);
	account.mainPaddingBlock.style.width = (tabObj.getWidth() - this.getFullHorMargin(tabObj)-20)+'px';
	*/

	this.expandMessagesListBlock(accountID);

	self.controlls.del_button = $('delbutton'+accountID);
	self.controlls.del_button.onclick = self.ON_pressDelButton;

	account.pagingContext = $('paging'+accountID);
}

//-------------------------------------------------------------------------------
//перерисовывает листалку
__EMail.prototype.reDrawPaging = function(accountID, folderID) {

	var self = this;
	var account = this.mailAccounts[accountID];
	
	var currentPage = account.folders[folderID].currentPage;

	//var messCount = sizeof(this.mailAccounts[accountID].folders[folderID].messages);
	var messCount = sizeof(this.mailAccounts[accountID].currentMessagesList);

	account.folders[folderID].page_count = Math.ceil(messCount/this.messagesOnPage);

	var page_count = account.folders[folderID].page_count;

	if(sizeof(account.currentMessagesList) == 0) {
		account.pagingContext.innerHTML = '';
		return false;
	}

	var tmp_str = '<table class=paging><tr>';

	tmp_str+= '<td><a href="javascript: void(0);" id=prev'+accountID+folderID+
		' ><img src="/img/i/mail/prev.gif" width=13 height=13 border=0></a></td>';

	var tmp_style = 'pg';
	
	var start_page = currentPage - 10;	
	if(start_page < 1) start_page = 1;
	
	var end_page = currentPage + 10;
	if(end_page > page_count) end_page = page_count;
	
	if(start_page != 1) tmp_str+=  '<td class='+tmp_style+'><a href="javascript: void(0);" id=pg'+
		accountID+'1 >1</a></td><td >. . .</td>';

	for(var num = start_page; num <= end_page; num++ ) {
		if(num == account.folders[folderID].currentPage) tmp_style = 'pg_on'; else tmp_style = 'pg';

		tmp_str+= '<td class='+tmp_style+'><a href="javascript: void(0);" id=pg'+accountID+num+
		' >'+num+'</a></td>';
	}

	if(end_page != page_count) tmp_str+= '<td >. . .</td><td class='+tmp_style+
		'><a href="javascript: void(0);" id=pg'+accountID+page_count+'>'+page_count+'</a></td>';

	tmp_str+= '<td style="text-align: right;"><a href="javascript: void(0);" id=next'+
		accountID+folderID+' ><img src="/img/i/mail/next.gif" width=13 height=13 border=0></a></td>';

	tmp_str+= '</tr></table>';

	account.pagingContext.innerHTML = tmp_str;


	var prev_href = $('prev'+accountID+folderID);
		prev_href.onclick = this.ON_pagingPress;
		prev_href.xdata = {'gadgetObj': self,
									'accountID':  accountID,
									'folderID': folderID,
									'direction': 'prev'
									}

	for(var num=start_page; num <= end_page; num++ ) {
		var pg_href = $('pg'+accountID+num);
		pg_href.onclick = this.ON_pagingPress;
		pg_href.xdata = {'gadgetObj': self,
									'accountID':  accountID,
									'folderID': folderID,
									'direction': 'page',
									'currentPage': num
									}
	}
	
	if(start_page != 1) {
		var pg_href = $('pg'+accountID+'1');
		pg_href.onclick = this.ON_pagingPress;
		pg_href.xdata = {'gadgetObj': self,
									'accountID':  accountID,
									'folderID': folderID,
									'direction': 'page',
									'currentPage': 1
									}
		
	}
	
	if(end_page != page_count) {
		var pg_href = $('pg'+accountID+page_count);
		pg_href.onclick = this.ON_pagingPress;
		pg_href.xdata = {'gadgetObj': self,
									'accountID':  accountID,
									'folderID': folderID,
									'direction': 'page',
									'currentPage': page_count
									}
		
	}


	var next_href = $('next'+accountID+folderID);
	next_href.onclick = this.ON_pagingPress;
	next_href.xdata = {'gadgetObj': self,
								'accountID':  accountID,
								'folderID': folderID,
								'direction': 'next'
								}

}

//-------------------------------------------------------------------------------
//возвращает полную высоту объекта, включая все отступы и границы
__EMail.prototype.getFullHeight = function(obj) {	
		
	
		var ht = obj.getHeight() + parseInt(obj.style.paddingTop+0) + parseInt(obj.style.paddingBottom+0) +
					parseInt(obj.style.marginTop+0) + parseInt(obj.style.marginBottom+0);
					
	return ht;
}

//-------------------------------------------------------------------------------
//
__EMail.prototype.getFullVertMargin = function(obj) {	
		
	var ht = parseInt(obj.style.paddingTop+0) + parseInt(obj.style.paddingBottom+0) +
					parseInt(obj.style.marginTop+0) + parseInt(obj.style.marginBottom+0)+
					parseInt(obj.style.borderTopWidth+0) + parseInt(obj.style.borderBottomWidth+0);					
					
	return ht;
}


//-------------------------------------------------------------------------------
//
__EMail.prototype.getFullHorMargin = function(obj) {
	
		
	var ht = parseInt(obj.style.paddingLeft+0) + parseInt(obj.style.paddingRight+0) +
					parseInt(obj.style.marginLeft+0) + parseInt(obj.style.marginRight+0)+
					parseInt(obj.style.borderLeftWidth+0) + parseInt(obj.style.borderRightWidth+0);					
					
	return ht;
}

//-------------------------------------------------------------------------------
//разворачивает список сообщений во всю вкладку
__EMail.prototype.expandMessagesListBlock = function(accountID) {
	
	var account = this.mailAccounts[accountID];
	account.messageBlock.style.display = 'none';
			
	//это наша вкладка
	var tabObj = $('Content.cMain.'+account.TabID);
	
	
	var ht = tabObj.getHeight() - this.getFullHeight(account.foldersBlock) -
					this.getFullHeight(account.columnHeadersBlock) -
					this.getFullHeight(account.searchForm) - this.getFullHeight(account.pagingBlock)-
					this.getFullVertMargin(account.messagesListFild)-34;	
					
	account.messagesListFild.style.height = ht+'px';
}

//-------------------------------------------------------------------------------
//сворачивает список сообщений до определенного фиксированного размера,
//и разворачивает блок просмотра письма на все оставшееся место по ширине и высоте
__EMail.prototype.expandMessageBlock = function(accountID) {
	
	var account = this.mailAccounts[accountID];
	
	account.messagesListFild.style.height =  this.defaultMessagesListFildHeight+'px';
	
	account.messageBlock.style.display = '';
	
	var tabObj = $('Content.cMain.'+account.TabID);
			
	var ht = tabObj.getHeight() - this.getFullHeight(account.mainBlock) -
				  this.getFullHeight(account.foldersBlock) -
				  this.getFullHeight(account.messHeaderBlock) - this.getFullHeight(account.messAttachesBlock)-55;
	
	
	var wd = (account.mainPaddingBlock.getWidth() - 
		 this.getFullHorMargin(account.messContentBlock) - this.getFullHorMargin(account.messageFild)-42 ) +'px';
	
			
	if(parseInt(wd) > 0) account.messContentBlock.style.width = wd;
		else account.messContentBlock.style.width = '200px';
	
	
	
	account.messContentBlock.style.height = ht+'px';
	
	account.messContentBlock.style.display = '';
	
}


//-------------------------------------------------------------------------------
//в начале изменения ширины колонок делаем слой сообщения максимально узким
__EMail.prototype.onStartResize = function() {	
	
	return 1;
	
	for(var accountID in this.mailAccounts) {		
		var account = this.mailAccounts[accountID];		
		//если открыта вкладка аккаунта и в ней открыто письмо - подгоняем ширину		
		if(account.TabID && Desktop.State.cMain.content[account.TabID]
			&& $('messHeaderBlock'+accountID)) {	
			account.messContentBlock.style.width = 0;
			account.messContentBlock.style.display = 'none';
		}
	}
}

//-------------------------------------------------------------------------------
//реакция на изменение ширины колонок, перерисовываем все открытые письма
//currentAccountID
__EMail.prototype.onStopResize = function() {	
	
	return 1;
	
	for(var accountID in this.mailAccounts) {		
		var account = this.mailAccounts[accountID];		
		//если открыта вкладка аккаунта и в ней открыто письмо - подгоняем ширину		
		if(account.TabID && Desktop.State.cMain.content[account.TabID]
			&& $('messHeaderBlock'+accountID)) {				
			//console.info('!');	
			this.expandMessageBlock(accountID);			
		}		
	}	
	
}


//-------------------------------------------------------------------------------
//реакция на нажатие "листалки"
__EMail.prototype.ON_pagingPress = function() {
	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	var direction = this.xdata.direction;
	var currentPage = this.xdata.currentPage;


	var account = gadgetObj.mailAccounts[accountID];
	var folder = gadgetObj.mailAccounts[accountID].folders[folderID]
	var page_count = account.folders[folderID].page_count;

	//account.currentMessagesList = folder.messages;

	if(!folder.currentPage) folder.currentPage = 1;

	switch(direction) {
		//листаем назад
		case 'prev':
			if(folder.currentPage > 1) {
				folder.currentPage--;
				gadgetObj.reDrawMessageList(accountID, folderID);
				gadgetObj.reDrawPaging(accountID, folderID);
			}
			break;

		//листаем вперед, увеличим начало отсчета
		case 'next':
			if(folder.currentPage < page_count) {
				folder.currentPage++;
				gadgetObj.reDrawMessageList(accountID, folderID);
				gadgetObj.reDrawPaging(accountID, folderID);
			}
			break;

		case 'page':
			folder.currentPage = currentPage;
			gadgetObj.reDrawMessageList(accountID, folderID);
			gadgetObj.reDrawPaging(accountID, folderID);
			break;
	}


}


//-------------------------------------------------------------------------------
//реакция на submit формы поиска
__EMail.prototype.onSearch = function() {

	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;


	if(!folderID) {
		alert(gadgetObj.lang.msg['ChooseFolderForSearch']);
		return false;
	}

	var account = gadgetObj.mailAccounts[accountID];
	var folder = account.folders[folderID];

	folder.currentPage = 1;

	var result = {};

	var search_text = gadgetObj.mailAccounts[accountID].searchForm.search_text.value;

	if(!search_text) return false;

	var messages = gadgetObj.mailAccounts[accountID].folders[folderID].messages;


	for(var messID in messages) {
		msg = messages[messID];

		if(msg.subject && String(msg.subject.toLowerCase()).indexOf(search_text.toLowerCase()) != -1 ||
			msg.from && String(msg.from.toLowerCase()).indexOf(search_text.toLowerCase()) != -1 ||
			msg.to && String(msg.to.toLowerCase()).indexOf(search_text.toLowerCase()) != -1 ||
			msg.Date && String(msg.Date.toLowerCase()).indexOf(search_text.toLowerCase()) != -1
			) {
			result[messID] = messages[messID];
		}
	}

	folder.searchMode = true;
	account.currentMessagesList = result;

	gadgetObj.reDrawMessageList(accountID, folderID);
	gadgetObj.reDrawPaging(accountID, folderID);

	return false;
}


//-------------------------------------------------------------------------------
//реакция на клик по сообщению, отправляет запрос на сервер "получить тело сообщения"
__EMail.prototype.ON_showMessage = function() {
	var self = this;

	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	var messID = this.xdata.messID;

	var account = gadgetObj.mailAccounts[accountID];

	if(account.top_messages[messID]) {
		account.top_messages[messID].unseen = false;
	}


	if(account.messages[messID]) {
		gadgetObj.reDrawMessage(accountID, folderID, messID);

		//gadgetObj.resetStyleMessageList(accountID, folderID);
		if(account.currentMessageID) {
			currentTR = $('mess'+accountID+account.currentMessageID);
			if(currentTR) {
				currentTR.style.background = '';
				currentTR.onmouseout = function(){this.style.background=''};
				//CCFFCC
				currentTR.onmouseover = function(){this.style.background='#E3F7FF'};
			}
		}
		account.currentMessageID = messID;


		var messTR = $('mess'+accountID+messID);

		messTR.style.fontWeight = 'normal';
		messTR.style.background = '#EEEEEE';
		messTR.onmouseover = function(){};
		messTR.onmouseout = function(){};
		account.folders[folderID].messages[messID].unseen = false;

		return true;
	}

	if(gadgetObj.isAccountLocked(accountID)) return false;

	gadgetObj.lockAccount(accountID, gadgetObj.lang.msg['LoadingLetter']);
	var options = {accountID: accountID, folderID: folderID, messID: messID};
	Update.request('EMail', 'module', 'get_message', {id: gadgetObj.id}, options, true);

}

//-------------------------------------------------------------------------------
//ответ на запрос о получении сообщения
__EMail.prototype.CB_getMessage = function(data) {

	if(!data || !data.variables) return false;

	var vars = data.variables;

	if(data.errors && vars.accountID) {
		this.unlockAccount(vars.accountID, false, data.errors[0].message);
		return false;
	}
	
	if(sizeof(data.errors) > 0) alert(data.errors[0].message);


	var accountID = data.variables.accountID;
	var folderID = data.variables.folderID;
	var messID = data.variables.messID;

	if(!accountID || !folderID || !messID || !data.variables.message) return false;



	var account = this.mailAccounts[accountID];

	account.messages[messID] = data.variables.message;
	//echo(account.messages[messID]);



	if(account.folders[folderID].messages &&
		account.folders[folderID].messages[messID] &&
		data.variables.message.attaches &&  sizeof(data.variables.message.attaches) > 0) {
		//messages[mess_id].is_attaches
		account.folders[folderID].messages[messID].is_attaches = true;

		//td_atch+accountID+mess_id
		var atchTD = $('td_atch'+accountID+messID);
		if(atchTD) {
			atchTD.innerHTML = '<img src="/img/i/mail/clip.gif" width=9 height=13>';
		}
	}



	if(account.folders[folderID].messages &&
		account.folders[folderID].messages[messID] &&
		account.folders[folderID].messages[messID].unseen) {

		account.folders[folderID].messages[messID].unseen = false;
		this.recalculateFolderStat(accountID, folderID);

	}else if(data.variables.message.unseen){
		account.folders[folderID].unseenMsg--;
		account.accountUnseenMsg--;
	}

	this.reDrawAccountsList();


	if(account.currentMessageID) {
		currentTR = $('mess'+accountID+account.currentMessageID);
		if(currentTR) {
			currentTR.style.background = '';
			currentTR.onmouseout = function(){this.style.background=''};
			currentTR.onmouseover = function(){this.style.background='#E3F7FF'};
		}
	}

	account.currentMessageID = messID;

	this.reDrawMessage(accountID, folderID, messID);

	this.unlockAccount(accountID, true);


	if((messTR = $('mess'+accountID+messID)) ) {
		messTR.style.fontWeight = 'normal';
		messTR.style.background = '#EEEEEE';
		messTR.onmouseover = function(){};
		messTR.onmouseout = function(){};
	}

}

//-------------------------------------------------------------------------------
//реакция на клик по checkbox удаления, в зависимости от состояния чекбокса
//добавляет id сообщения во внутренний список удаления или удаляет из него
__EMail.prototype.ON_changeDelCheckbox = function(e) {
	var self = this;
	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	var messID = this.xdata.messID;

	if(this.checked) {
		gadgetObj.mailAccounts[accountID].del_messages[messID] = 1;
	}else{
		delete gadgetObj.mailAccounts[accountID].del_messages[messID];
	}

	if(e) e.cancelBubble = true;
	if(window.event) window.event.cancelBubble = true;

}

//-------------------------------------------------------------------------------
//реакция на нажатие кнопки удаления в списке сообщений
__EMail.prototype.ON_pressDelButton = function() {
	
	if(!this.xdata) return false;
	
	var gadgetObj = this.xdata.gadgetObj;		
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	var messID = this.xdata.messID;


	if(!sizeof(gadgetObj.mailAccounts[accountID].del_messages)) return false;

	var answer = confirm(gadgetObj.lang.msg['ToDelMarkedMsgs']);

	if(!answer) return false;


	var options = {accountID: accountID,
							folderID: folderID,
							messages_ids: gadgetObj.mailAccounts[accountID].del_messages
							};

	gadgetObj.lockAccount(accountID, gadgetObj.lang.msg['DeletingLetters']);

	Update.request('EMail', 'module', 'delete_messages', {id: gadgetObj.id}, options, true);

}

//-------------------------------------------------------------------------------
//ответ на запрос об удалении сообщений
__EMail.prototype.CB_deleteMessages = function(data) {

	if(sizeof(data.errors) > 0) { alert(data.errors[0].message); return false;}
	if(!data || !data.variables) return false;

	var accountID = data.variables.accountID;
	var folderID = data.variables.folderID;

	if(!accountID || !folderID || !data.variables.messages_ids) return false;

	var account = this.mailAccounts[accountID];

	this.mailAccounts[accountID].del_messages = {};	

	if(!data.variables.messages_ids) return false;	

	if(account.folders[folderID].messages) {		
		for(var messID in data.variables.messages_ids) {
			
			delete account.folders[folderID].messages[messID];			
			delete account.currentMessagesList[messID];
			
			if(account.currentMessageID == messID) {				
				account.messageFild.innerHTML = '';
				account.messageBlock.style.display = 'none';
			}
		}
	}

	this.recalculateFolderStat(accountID, folderID);
	this.unlockAccount(accountID, true);
	this.reDrawMessageList(accountID, folderID);
	this.reDrawAccountsList();

	}

//-------------------------------------------------------------------------------
//восстанавливает стили списка сообщений
__EMail.prototype.resetStyleMessageList = function(accountID, folderID) {
	var self = this;

	var messages = self.mailAccounts[accountID].folders[folderID].messages;

	var messTR = '';

	for(messID in messages) {
		messTR = document.getElementById('mess'+accountID+messID);
		if(messTR) {
			messTR.style.background = '';
		}

	}

}


//-------------------------------------------------------------------------------
//реакция на клик по заголовку колонки для сортировки писем
__EMail.prototype.ON_sortMessages = function() {

	
	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	var sortFild = this.xdata.sortFild;	

	gadgetObj.sortMessages(accountID, folderID, sortFild, true);	
	
	gadgetObj.mailAccounts[accountID].currentMessagesList = 
		gadgetObj.mailAccounts[accountID].folders[folderID].messages;
	
	gadgetObj.reDrawMessageList(accountID, folderID);

}

//-------------------------------------------------------------------------------
//сортирует сообщение в папке по указанному полю
__EMail.prototype.sortMessages = function(accountID, folderID, sortFild, reverse_direction) {

	var messages = this.mailAccounts[accountID].folders[folderID].messages;
	var currFolder = this.mailAccounts[accountID].folders[folderID];


	if(!currFolder.sortDirection) currFolder.sortDirection = 'desc';
	if(!currFolder.sortFild && !sortFild) {
		currFolder.sortFild = sortFild = 'timestamp';
	}else if(sortFild) {
		currFolder.sortFild = sortFild;
	}




	if(currFolder.sortFild == sortFild && reverse_direction) {
		if(currFolder.sortDirection == 'asc') currFolder.sortDirection = 'desc';
			else currFolder.sortDirection = 'asc';
	}



	var fileSortFunctions = {
		asc: {	'timestamp': sortAsNum,
          			'Date': sortsAsDate,
          			'subject': sortsAsStr,
          			'to': sortsAsStr,
          			'from': sortsAsStr,
        			'size': sortAsNum},
        desc: {'timestamp': sortAsNumRevers,
          			'Date': sortsAsDateRevers,
          			'subject': sortsAsStrRevers,
          			'to': sortsAsStrRevers,
          			'from': sortsAsStrRevers,
        			'size': sortAsNumRevers
        			}
     }

	//----------------------
	function sortsAsDate(a, b) {
		date1 = new Date(a[sortFild]);
		date2 = new Date(b[sortFild]);
  		if (date1.valueOf() > date2.valueOf()) return -1;
    	if (date1.valueOf() < date2.valueOf()) return 1;
  		return 0;	// a равно b
	}
	function sortsAsDateRevers(a, b) {
		date1 = new Date(a[sortFild]);
		date2 = new Date(b[sortFild]);
  		if (date1.valueOf() < date2.valueOf()) return -1;
    	if (date1.valueOf() > date2.valueOf()) return 1;
  		return 0;	// a равно b
	}

	function sortAsNum(a, b) {
  		if (a[sortFild] < b[sortFild]) return -1;
    	if (a[sortFild] > b[sortFild])return 1;
  		return 0;	// a равно b
	}
	function sortAsNumRevers(a, b) {
  		if (a[sortFild] > b[sortFild]) return -1;
    	if (a[sortFild] < b[sortFild])return 1;
  		return 0;	// a равно b
	}

	function sortsAsStr(a, b) {
  		if (String(a[sortFild]).toLowerCase() < String(b[sortFild]).toLowerCase()) return -1;
    	if (String(a[sortFild]).toLowerCase() > String(b[sortFild]).toLowerCase()) return 1;
  		return 0;
	}
	function sortsAsStrRevers(a, b) {
  		if (String(a[sortFild]).toLowerCase() > String(b[sortFild]).toLowerCase()) return -1;
    	if (String(a[sortFild]).toLowerCase() < String(b[sortFild]).toLowerCase()) return 1;
  		return 0;
	}
	//----------------------

	var compare = fileSortFunctions[currFolder.sortDirection][currFolder.sortFild];	

	var sorted_array = new Array();

	for(var messID in messages) {
		messages[messID].messID = messID;
		sorted_array.push(messages[messID]);
	}

	sorted_array.sort(compare);

	var tmp_messages = {};

	//for(i in sorted_array) {
	for(var i= 0; i < sorted_array.length; i++) {		
		tmp_messages[sorted_array[i].messID] = sorted_array[i];
	}

	this.mailAccounts[accountID].folders[folderID].messages = tmp_messages;
	//this.mailAccounts[accountID].currentMessagesList = tmp_messages;

}

//-------------------------------------------------------------------------------
//возвращает число, отформатированное до n  знаков
__EMail.prototype.toXDigits = function(in_str, digitNum) {
	var str = new String(in_str);
	var temp_str = '';	
	var diff = digitNum - str.length;	
	if(diff > 0) for(var i=0; i<diff; i++)  temp_str+= '0'.toString();		
	temp_str+= str;	
	return temp_str;

}


//-------------------------------------------------------------------------------
//выделяет/снимает выделение со всех собщений на странице
__EMail.prototype.selectAllMessages = function(e) {
	
	if(!e) e = event;
	var accountID = this.xdata.accountID;
	var gadgetObj = this.xdata.gadgetObj;
	var account = gadgetObj.mailAccounts[accountID];
		
	
	$checkObj = $('select_all'+accountID);
	
	if(!$checkObj) return false;
		
	var state = true;
	
	if($checkObj.checked) {
		state = true;		
		account.isAllSelected = true;
	}else{
		state = false;
		account.isAllSelected = false;		
	}
	
	/*
	if(account.isAllSelected) {
		state = false;
		account.isAllSelected = false;
	}else{
		state = true;		
		account.isAllSelected = true;
	}
	*/
	
	for(var mess_id in account.messagesOnPage) {
		$('del'+accountID+mess_id).checked = state;		
		if(state) {
			account.del_messages[mess_id] = 1;	
		}else{
			delete account.del_messages[mess_id];
		}		
	}
	
	return true
	
	
}

//-------------------------------------------------------------------------------
//перерисовывает список заголовков
__EMail.prototype.reDrawMessageList = function(accountID, folderID, is_search) {
	var self = this;

	//var messages = {};
	var account = self.mailAccounts[accountID];
	var current_messages = account.currentMessagesList;

	var currFolder = account.folders[folderID];

	account.messagesOnPage = {};
	account.isAllSelected = false;
	$('select_all'+accountID).checked = false;
	account.del_messages = {};	


	if(!currFolder.currentPage) currFolder.currentPage = 1;


	var messages = {};

	var start_num = (currFolder.currentPage - 1) * self.messagesOnPage;
	var finish_num = currFolder.currentPage * self.messagesOnPage;


	var tmp_num = 0;
	for(var mess_id in current_messages) {
		if(finish_num < tmp_num) {
			break;
		}else if(tmp_num >= start_num &&  tmp_num <= finish_num ) {			
			messages[mess_id] = current_messages[mess_id];
			
			account.messagesOnPage[mess_id] = current_messages[mess_id];
			
		}
			tmp_num++;
	}



	var tmp_str = '<table class=messagelist >';

	i = 0;

	for(var mess_id in messages) {
		
		if(messages[mess_id].unseen)  var bold_style = 'bold';
			else var bold_style = 'normal';
		


		var attach_str = (messages[mess_id].is_attaches)?'<img src="/img/i/mail/clip.gif" width=9 height=13/>':'';

		var tmp_subject = '';

		if(!messages[mess_id].subject) messages[mess_id].subject = '';
		if(!messages[mess_id].from) messages[mess_id].from = '';

		


		var tmp_date = new Date(messages[mess_id].timestamp*1000);

		var tmp_date_str = this.toXDigits(tmp_date.getDate(), 2)+'.'+
			this.toXDigits((tmp_date.getMonth()+1), 2)+'.'+
			tmp_date.getFullYear()+' '+
			this.toXDigits(tmp_date.getHours(), 2)+':'+
			this.toXDigits(tmp_date.getMinutes(), 2);

		tmp_str+= '<tr onmouseout="this.style.background=\'\'" onmouseover="this.style.background=\'#E3F7FF\'" style="font-weight: '+bold_style+'; cursor: pointer;" id=mess'+
			accountID+mess_id+' ><td id=td_atch'+accountID+mess_id+'> <div style="width: 10px;">'+
			attach_str+'</td><td nowrap><div style="width: 100px;" title="'+
			htmlspecialchars(messages[mess_id].from)+	'">' +
			htmlspecialchars(messages[mess_id].from)+'</div></td>'+
			'<td width=100%><div title="'+htmlspecialchars(messages[mess_id].subject)+'">'+
			htmlspecialchars(messages[mess_id].subject)+
			'</div></td>'+
			'<td nowrap><div  style="width: 100px; ">'+tmp_date_str+'</div></td>'+
			//'<td  style="padding: 3px;">'+messages[mess_id].to+'</td>'+
			'<td width=10   onclick="void(0);"><input type=checkbox id="del'+accountID+mess_id+'"/></td></tr>';
	}

	tmp_str+= '</table>';

	account.messagesListFild.innerHTML = tmp_str;

	var temp_href = '';
	var start_time = new Date();

	for(var mess_id in messages) {
		temp_href = $('mess'+accountID+mess_id);
		temp_href.onclick = self.ON_showMessage;
		temp_href.xdata = { 'gadgetObj': self,  'accountID': accountID, 'folderID': folderID, 'messID': mess_id};


		var del_checkbox = $('del'+accountID+mess_id);
		del_checkbox.onclick = self.ON_changeDelCheckbox;
		del_checkbox.xdata =
			{ 'gadgetObj': self, 'accountID': accountID, 'folderID': folderID, 'messID': mess_id};

	}


	self.controlls.del_button.xdata = {'gadgetObj': self,
															'accountID': accountID,
															'folderID': folderID };


}

//-------------------------------------------------------------------------------
//перерисовывает письмо с указанным id
__EMail.prototype.reDrawMessage = function(accountID, folderID, messID) {
	var self = this;

	self.messInfo = {	'gadgetID': this.id,
										'accountID': accountID,
										'folderID': folderID,
										'messID': messID
									};
	
	
	var account = self.mailAccounts[accountID];
	var message = self.mailAccounts[accountID].messages[messID];

	message.texts.header = message.header;
	if(message.attaches.length > 0) {
		message.texts.attaches = message.attaches;
	}

	this.currentAccountID = accountID;
	this.currentMessageContacts = {};

	this.getAddressBook();

	this.currentMessageAttaches = message.attaches;
	var attaches = message.attaches;
	var prepared_message = self.reDrawMessageLevel(message.texts, 1);


	var tmp_str = '<table style="width: 100%; height: 100%;" width="100%" height=100%><tr><td width=100% id=messHeaderBlock'+accountID+'><div style="padding: 5px; border: 1px solid #7F7F7F; background: #D8E6FF;">';

	//***************
	//тут главный заголовок
	if(this.lastMessageHeader) {
		var hd = this.lastMessageHeader;

		if(hd.from) {
			//this.currentMessageContacts[1] = {contact: hd.from[0]};
			tmp_str+= '<b>'+ Locale['From'] +':</b> ';
			if(hd.from[0].personal) tmp_str+= hd.from[0].personal+' ';
			tmp_str+= hd.from[0].mailbox+'@'+hd.from[0].host;

			if(this.addressBook) {
				tmp_str+= ' <a href="javascript: void(0);" title="'+this.lang['AddToAddressBook']
					+'" id=addcontact'+
					self.currentAccountID+'1'+
					'><img src="/img/i/mail/add_address.gif" width=9 height=10 border=0 align=absmiddle></a><br>';
			}else{
				tmp_str+= '<br>';
			}
		}

		if(hd.subject) tmp_str+= '<b>'+ Locale['Subject'] +': </b>'+hd.subject+'<br>';
	}
	//***************
	tmp_str+= '</div></td></tr>';

	tmp_str+= '<tr><td height=100%><div id=messContentBlock'+accountID+
		' class=em_message_content>'+prepared_message+
		'</div></td></tr>';
	

	tmp_str+= '<tr><td id=messAttachesBlock'+accountID+' class=em_attaches style="padding-top: 3px;">';

	if(attaches && sizeof(attaches) > 0) {
		tmp_str+= '<b style="padding-top: 3px;">'+ this.lang['AttachedFiles'] +':</b><br>';
		//for(var i in root.attaches) {
		for(var i =0; i < attaches.length; i++) {
			attach = attaches[i];
			tmp_str+= '<img src="/img/i/mail/clip.gif" width=9 height=13/> <a target=_blank href="/downloader.php?gadgetID='+self.messInfo.gadgetID+
			'&accountID='+self.messInfo.accountID+
			'&folderID='+self.messInfo.folderID+
			'&messID='+self.messInfo.messID+
			'&attacheID='+i+

			 '">'+attach.attach_name+'</a>&nbsp; ';
		}
	}

	tmp_str+='<div style="padding-top: 3px;"><input class=std_button type=button value="'+ this.lang['ToAnswer'] +'" id="replay'+accountID+messID+ '"/> <input class=std_button type=button value="'+ this.lang['ToRedirect'] +'" id="forward'+accountID+messID+'"/>   <input class=std_button style="color: red" type=button value="'+ Locale['ToDelete'] +'" id="delete'+accountID+messID+ '"/></div>';
	tmp_str+= '</td></tr></table>';
	//tmp_str+= '</table>'

	//self.mailAccounts[accountID].messageFild.style.background = 'white';
	account.messageBlock.style.display = '';
	
	
	//это наша вкладка
	//var tabObj = $('Content.cMain.'+account.TabID);	
	//if(tabObj) account.messagesListFild.style.height =  this.defaultMessagesListFildHeight+'px';
		 
	account.messageFild.innerHTML = tmp_str;
	
	
	account.messAttachesBlock = $('messAttachesBlock'+accountID);
	account.messContentBlock = $('messContentBlock'+accountID);
	account.messHeaderBlock = $('messHeaderBlock'+accountID);
	
	self.expandMessageBlock(accountID);


	for(var level in this.currentMessageContacts) {
		var add_href = $('addcontact'+accountID+level);
		if(add_href) {
			add_href.xdata = { gadgetObj: self, accountID: accountID,
											contact: self.currentMessageContacts[level].contact};
			add_href.onclick = this.ON_addContact;
		}
	}

	var replay_href = $('replay'+accountID+messID);
	replay_href.onclick = this.ON_replayMess;
	replay_href.xdata =
			{ 'gadgetObj': self, 'accountID': accountID, 'folderID': folderID, 'messID': messID};
			
	var forward_href = $('forward'+accountID+messID);
	forward_href.onclick = this.ON_replayMess;
	forward_href.xdata =
		{ 'gadgetObj': self, 'accountID': accountID, 'folderID': folderID, 'messID': messID,
			'forward': true};
	
	var delete_href = $('delete'+accountID+messID);
	delete_href.onclick = this.ON_deleteMess;
	delete_href.xdata =
		{ 'gadgetObj': self, 'accountID': accountID, 'folderID': folderID, 'messID': messID,
			'forward': true};

}

//-------------------------------------------------------------------------------
//перерисовывает один уровень (вложенное письмо)
__EMail.prototype.reDrawMessageLevel = function(root, level) {

	if(!root) return '';
	var self = this;
	var curr_level = level;

	if(root.header && curr_level == 1) 	self.lastMessageHeader = root.header;
	
	var tmp_str = '';

	if(curr_level !=1) tmp_str+= '<div style="border: gray 1px solid; padding: 5px; margin-top: 10px; margin-right: 10px; margin-bottom: 10px; margin-left: '+10*level+ 'px" >';

	//тут заголовок с темой

	if(root.header && root.header.from)
		this.currentMessageContacts[level] = {contact: root.header.from[0]};

	if(root.header && curr_level != 1) {
		tmp_str+= '<div style="border: 1px solid #BBBBBB; background: #EEEEEE; padding: 5px;" >';

		if(root.header.from) {
			//this.currentMessageContacts[level] = {contact: root.header.from[0]};
			tmp_str+= '<b>От:</b> ';
			if(root.header.from[0].personal)
				tmp_str+=root.header.from[0].personal+' ';

			tmp_str+= root.header.from[0].mailbox+'@'+root.header.from[0].host;

			if(0 && this.addressBook) {
				tmp_str+= '<a href="javascript: void(0);" id=addcontact'+self.currentAccountID+level+
					'>[add]</a><br>';
			}else{
				tmp_str+= '<br>';
			}

		}

		if(root.header.subject) tmp_str+= '<b>'+ Locale['Subject'] +': </b>'+root.header.subject+'<br>';

		tmp_str+= '</div>';
	}

	level++;

	/*
	if(root.attaches && root.attaches.length > 0) {
		tmp_str+= '<br><img src="/img/email/skrep_wh.gif" width=6 height=14> <b>Прикрепленные файлы:</b><br>';
		//for(var i in root.attaches) {
		for(var i =0; i < root.attaches.length; i++) {
			attach = root.attaches[i];
			tmp_str+= '<a target=_blank href="/downloader.php?gadgetID='+self.messInfo.gadgetID+
			'&accountID='+self.messInfo.accountID+
			'&folderID='+self.messInfo.folderID+
			'&messID='+self.messInfo.messID+
			'&attacheID='+i+

			 '">'+attach.attach_name+'</a>; ';
		}
	}
	*/



	if(root) {
		if(root.html) {

			root.html = root.html.replace(/[\n\r]/gi, '');

			//тут меняем sid в src картинок на ссылки на закаченные атачи
			//for(var i in this.currentMessageAttaches) {
			if(this.currentMessageAttaches.length && this.currentMessageAttaches.length > 0)
			for(var i = 0; i < this.currentMessageAttaches.length; i++) {
				var attach = this.currentMessageAttaches[i];
				if(!attach.contentID) continue;

				var contentID = attach.contentID;
				//экранируем спец. символы легулярных выражений
				contentID = contentID.replace(/([\(\)\*\?\$\@])/ig, '\\$1');

				var regx = new RegExp('cid:'+contentID, 'ig');

     			var new_src = '/downloader.php?gadgetID='+self.messInfo.gadgetID+
				'&accountID='+self.messInfo.accountID+
				'&folderID='+self.messInfo.folderID+
				'&messID='+self.messInfo.messID+
				'&attacheID='+i;

				root.html = root.html.replace(regx, new_src);
			}

			//удалим стили и яваскрипт
			root.html = root.html.replace(/<style.*?>.*?<\/style.*?>/gim, '');
			root.html = root.html.replace(/<script.*?>.*?<\/script.*?>/gim, '');
			root.html = root.html.replace(/<style.*?>.*?<\/style.*?>/gim, '');


			root.html = root.html.replace(/<a.+?href=([^\s\>]+).*?>/gim,
															'<a href=$1 target=_blank>');
			tmp_str+= root.html;

		}else if(root.text){

			tmp_str+= root.text.replace(/(http:\/\/[^\s\<\>]+)/ig, '<a href="$1" target=_blank>$1</a>');

			//tmp_str+= root.text;
		}

		if (sizeof(root.data) !=0) {
			//for(var i in root.data) {
			for(var i =0;  i < root.data.length; i++) {
				tmp_str+= self.reDrawMessageLevel(root.data[i], level);
			}
		}
	}

	if(curr_level !=1) tmp_str+= '</div>';


	return tmp_str;
}


//-------------------------------------------------------------------------------
__EMail.prototype.reDrawMessageLevelForReplay = function(root, level) {
	if(!root) return '';

	var self = this;
	var tmp_str = '';

	if(level == 1) {
		tmp_str = "----- Original Message -----\n";
	}else{
		tmp_str = "\n\n";
	}

	level++;

	//тут заголовок с темой
	tmp_str+= "\n";
	if(root.header) {
		if(root.header.from) tmp_str+= Locale['From'] +': '+
			root.header.from[0].personal+' '+
			root.header.from[0].mailbox+'@'+root.header.from[0].host+"\n";
		if(root.header.subject) tmp_str+= Locale['Subject'] +': '+root.header.subject+"\n";
	}

	tmp_str+= "\n";

	if(root) {
		if(root.html) {

			var str = root.html.replace(/[\r\n]/g, '');

			str = str.replace(/<br \/>/ig, "\n");
			str = str.replace(/<br\/>/ig, "\n");
			str = str.replace(/<br>/ig, "\n");

			str = str.replace(/<p.?>/ig, "\n");
			str = str.replace(/<div.?>/ig, "\n");
			str = str.replace(/<.+?>/g, '');

			tmp_str+= str;

		}else{
			//tmp_str+= root.text;
			str = root.text.replace(/<br \/>/g, "\n");
			str = str.replace(/<br\/>/g, "\n");
			str = str.replace(/<br>/g, "\n");

			tmp_str+= str;
			//tmp_str+= root.text.replace(/<br \/>/g, '');
		}


		if(sizeof(root.data) > 0) {
		//if(root.data.length != 0) {
			//for(var i in root.data) {
			for(var i =0;  i < root.data.length; i++) {

				tmp_str+= self.reDrawMessageLevelForReplay(root.data[i], level);
			}
		}
	}

	tmp_str+= "\n";
	return tmp_str;

}

//-------------------------------------------------------------------------------
//реакция на нажатие; добавить контакт в адресную книгу
__EMail.prototype.ON_addContact = function() {
	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var contact = this.xdata.contact;
	//personal, mailbox, host

	var ab = gadgetObj.addressBook;
	ab.createFormContactEdit('add');

	if(contact.personal) {
		var s = contact.personal.split(/ /);
		if(s.length > 1) {
			ab.finput.contact.name.value = s[0]; //Имя
			ab.finput.contact.surname.value = s[1]; //Фамилия
		}else{
			ab.finput.contact.surname.value = contact.personal; //Имя
		}
	}

	var j = ab.formContactEdit.createPhoneLikeBlock('emails', ab.phoneLiketypes['emails']);
	var obj = ab.finput.contact['emails'][j];
	obj.mdata.value = contact.mailbox+'@'+contact.host; //Непосредственно e-mail 
	obj.i = i;
}

//-------------------------------------------------------------------------------
//реакция на нажатие "ответить"
__EMail.prototype.ON_replayMess = function(e) {
	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	var messID = this.xdata.messID;
	
	var is_forward = false;
	if(this.xdata.forward) is_forward = true;

	var context = gadgetObj.mailAccounts[accountID].messageFild;
	gadgetObj.reDrawNewMessageForm(context, accountID, folderID, messID, is_forward);


	if(e) e.cancelBubble = true;
	if(window.event) window.event.cancelBubble = true;

}

//-------------------------------------------------------------------------------
//удаление письма из самого письма
__EMail.prototype.ON_deleteMess = function(e) {

	var gadgetObj = this.xdata.gadgetObj;
	var answer = confirm(gadgetObj.lang.msg['ConfirmDelLetter'])
	if(!answer) return false;

	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	var messID = this.xdata.messID;
	
	
	var messages_ids = {};
	messages_ids[messID] = 1;
	
	
	gadgetObj.lockAccount(accountID, gadgetObj.lang.msg['DeletingLetter']);
	
	var options = {'accountID': accountID, 'folderID': folderID, 'messages_ids': messages_ids};

	Update.request('EMail', 'module', 'delete_messages', {id: gadgetObj.id}, options, true);
	
}


//-------------------------------------------------------------------------------
//ищет в наборе гаджетов адрессную книгу и делает ссылку на нее во внутренней переменной
__EMail.prototype.getAddressBook = function() {

	if(this.addressBook) return true;

	for(var modul_id in Modules) {
		if(Modules[modul_id].Object && Modules[modul_id].Object.type == 'Addressbook') {
			this.addressBook = Modules[modul_id].Object;
			return true;
		}
	}
	return false;
}


//-------------------------------------------------------------------------------
//рисует форму создания нового сообщения
__EMail.prototype.prepareNewMessageForm = function(email) {
	var accountID = false;

	//выберем первый аккаунт из существущих
	for(accountID in this.mailAccounts) break;

	if(!accountID) {
		alert(this.lang.msg['ThereNoTunedAccs']);
		return false;
	}

	var account = this.mailAccounts[accountID];	

	this.checkTab(accountID);

	if(account.firstTabOpen) {
		account.messagesListFild.style.display = 'none';
	}else{
		var tabObj = $('Content.cMain.'+account.TabID);	
		if(tabObj) 	account.messagesListFild.style.height = this.defaultMessagesListFildHeight+'px';	
	}
	
	account.messageBlock.style.display = 'block';
	
	this.reDrawNewMessageForm(account.messageFild, accountID, false, false);
	
	var replayForm = $('replayform'+accountID);
	replayForm.to.value = email;
	return true;
}

//-------------------------------------------------------------------------------
//рисует форму создания нового сообщения
__EMail.prototype.reDrawNewMessageForm = function(context, accountID, folderID, messID, is_forward) {

	var self = this;

	var from = self.mailAccounts[accountID].settings.e_mail;
	var message = false;
	var to = '';
	var subject = '';
	var prepared_message = '';
	var attaches = '';
	var account = this.mailAccounts[accountID];

	//добавим адреса из адресной книги к списку уже последних введенный адресов
	//account.lastEmails
	this.getAddressBook();


	if(this.addressBook) {
		this.addressBookEmails = {};

		for(var contactID in this.addressBook.dbLite) {
			var contactInfo = this.addressBook.dbLite[contactID];

			if(sizeof(contactInfo.emails) > 0) {
				for(var type in contactInfo.emails) {
					var emails = contactInfo.emails[type];
					//for(var i in emails) {
					for(var i = 0; i < emails.length; i++) {
						var email = emails[i];
						this.addressBookEmails[email] = contactInfo.sname+' '+contactInfo.name+' <'+email+'>';
					}
				}
			}
		}
	}

	 //объединим адреса из адресной книги и последние введенные (this.lastEmails)
	 this.popupAddresses = {};
	 for(var email in this.addressBookEmails) this.popupAddresses[email] = this.addressBookEmails[email];
	 for(var email in this.lastEmails) this.popupAddresses[email] = this.lastEmails[email];


	if(folderID && accountID) {
		var message = account.messages[messID];
		message.texts.header = message.header;
		if(sizeof(message.attaches) > 0) {
			message.texts.attaches = message.attaches;
			attaches = message.attaches;
		}
		prepared_message = self.reDrawMessageLevelForReplay(message.texts, 1);
	}


	if(folderID && messID) {
		//message = self.mailAccounts[accountID].folders[folderID].messages[messID];
		message = account.messages[messID];
		to = message.header.fromaddress;
		subject = 'Re: '+message.header.subject;
	}

	if(is_forward) to = '';

	var tmp_str = '<div style="padding: 5px;"><form method=post enctype="multipart/form-data" ';
	tmp_str+= 'action="/sender.php" target=hidden_sender id=replayform'+accountID+'>';

	tmp_str+= '<input type=hidden name=gadgetID value="'+self.id+'">';
	tmp_str+= '<input type=hidden name=accountID value="'+accountID+'">';

	if(folderID && messID) {
		tmp_str+= '<input type=hidden name=folderID value="'+folderID+'">';
		tmp_str+= '<input type=hidden name=messID value="'+messID+'">';
	}

	tmp_str+= '<table class=em_replay_table style="width: 100%">';

	//tmp_str+= '<tr><td><b>От: </b></td><td style="width: 100%">'+from+'</td></tr>';


	tmp_str+= '<tr><td><b>'+ Locale['From'] +': </b></td><td style="width: 100%"><select style="width: 100%" name="from_account_id">';
	for(var account_id in self.mailAccounts) {
		var tmp_selected = '';
		var tmp_account = this.mailAccounts[account_id];
		if(account_id == accountID) tmp_selected = 'selected';
		tmp_str+= '<option '+tmp_selected+
			' value="'+account_id+'">'+tmp_account.settings.e_mail+
			'</option>';
	}
	tmp_str+= '</select></td></tr>';

	tmp_str+= '<tr><td><b>'+ this.lang['To'] +': </b></td><td ><div style="position: relative;"><input type=text name=to value="'+

		htmlspecialchars(to)+'" style="width: 100%"/><br><div id=popup_lastemails'+accountID+' class=lastemails style="position: absolute; display: none; top: 20px; z-index: 5000;"></div></div></td></tr>';
	tmp_str+= '<tr><td><b>'+ Locale['Subject'] +': </b></td><td><input type=text name=subject value="'+
		htmlspecialchars(subject)+'" style="width: 100%"/></td></tr>';
	tmp_str+= '<tr><td valign=top><b>'+ this.lang['Message'] +':</b>&nbsp;</td><td><textarea name=body rows=9 cols=5 style="width: 100%">'+prepared_message+	'</textarea></td></tr></table>';


	if(messID && attaches.length && attaches.length > 0) {

		tmp_str+= '<div style="margin-top: 5px; font-weight: bold;">'+ this.lang['ToAttacheInclFiles'] +': </div>';
		tmp_str+= '<table cellpadding=2 cellspacing=0 border=0 >';
		//for(atch_no in attaches) {
		for(var atch_no =0; atch_no < attaches.length; atch_no++) {
			var attach = attaches[atch_no];
			tmp_str+= '<tr><td><input type=checkbox name=attaches[] value="'+atch_no+
				'" ></td><td> '+attach.attach_name+'</td></tr>';
		}
		tmp_str+= '</table>';

	}

	tmp_str+= '<table style="margin-top: 5px;"><tr><td colspan=2 id=attaches'+accountID+
		'><a href="javascript: void(0)" id=add_attach'+accountID+
		'><img src="/img/icons/1.gif" width=16 height=16 border=0 align=absmiddle></a> <b>'+ this.lang['ToAttacheFiles'] +'</b> <img src="/img/i/mail/clip.gif" width=9 height=13><div style="margin-top: 3px;"/></div>';
	//tmp_str+= '<a href="javascript: void(0)" id=add_attach>[+]</a><br>';

	tmp_str+= '</td></tr></table>';
	tmp_str+='<div style="margin-top: 5px;"><input class=std_button name=cancel_button type=button value="Отменить"/> <input class=std_button type=submit value="Отправить"/><br></div>';

	tmp_str+= '</form></div>';

	tmp_str+= '<iframe style="display: none;"  height=100 name=hidden_sender border=1></iframe>';

	context.innerHTML = tmp_str;

	var replayform = $('replayform'+accountID);
	var to = replayform.to;
	to.onkeyup = this.ON_editEmail;
	to.onblur = this.ON_blurEmail;
	to.xdata = {gadgetObj: self, accountID: accountID};


	var cancel_button = replayform.cancel_button;
	cancel_button.onclick = this.cancelNewMessage;
	cancel_button.xdata = {gadgetObj: self, accountID: accountID, folderID: folderID, messID: messID};


	var add_attach = $('add_attach'+accountID);
	var attaches = $('attaches'+accountID);
	var hidden_sender = window.frames['hidden_sender'];

	document.xdata = {gadgetObj: self,
									accountID: accountID,
									folderID: folderID,
									messID: messID};

	attaches.attaches_num = 1;

	add_attach.accountID = accountID;
	add_attach.onclick = function() {
															var accountID = this.accountID;
															var attaches = $('attaches'+accountID);

															fild_name = 'attch'+attaches.attaches_num;
															attaches.attaches_num++;

															var props = {'type': 'file',
																				 'name': fild_name}
															var new_file = ce('input', attaches, props);
															ce('br', attaches);
														}

}




//-------------------------------------------------------------------------------
__EMail.prototype.cancelNewMessage = function(e) {

	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	var messID = this.xdata.messID;

	if(folderID && messID) {
		gadgetObj.reDrawMessage(accountID, folderID, messID);
	}else{
		gadgetObj.mailAccounts[accountID].messageFild.innerHTML = '';
	}
}


//-------------------------------------------------------------------------------
__EMail.prototype.ON_blurEmail = function(e) {
	if(!e) e = event;
	var accountID = this.xdata.accountID;
	var gadgetObj = this.xdata.gadgetObj;
	var popup_lastemailsObj = $('popup_lastemails'+accountID);
	var account = gadgetObj.mailAccounts[accountID];

	if(popup_lastemailsObj && !account.is_popupEmails) {
		popup_lastemailsObj.style.display='none';
	}
}

//-------------------------------------------------------------------------------
__EMail.prototype.ON_blurHiddenFild = function(e) {
	if(!e) e = event;
	var accountID = this.xdata.accountID;
	var gadgetObj = this.xdata.gadgetObj;
	var popup_lastemailsObj = $('popup_lastemails'+accountID);
	var account = gadgetObj.mailAccounts[accountID];

	if(popup_lastemailsObj) {
		popup_lastemailsObj.style.display='none';
		account.is_popupEmails = false;
	}
}


//-------------------------------------------------------------------------------
__EMail.prototype.ON_editEmail = function(e) {
	if(!e) e = event;
	var accountID = this.xdata.accountID;
	var replayformObj = $('replayform'+accountID);
	var popup_lastemailsObj = $('popup_lastemails'+accountID);
	var gadgetObj = this.xdata.gadgetObj;
	var account = gadgetObj.mailAccounts[accountID];

	var tmp_to = replayformObj.to.value;
	tmp_to = tmp_to.toLowerCase()

	var tmp_result = {};

	if(!tmp_to) {
		popup_lastemailsObj.style.display = 'none';
		return true;
	}

	for(var email in gadgetObj.popupAddresses) {
		var tmp_email = gadgetObj.popupAddresses[email].toLowerCase();

		if( tmp_email.indexOf(tmp_to) == 0 || tmp_email.indexOf(' '+tmp_to) != -1 ||
			tmp_email.indexOf('<'+tmp_to) != -1) {
			tmp_result[email] = htmlspecialchars(gadgetObj.popupAddresses[email]);
		}
	}

	account.mailSearchResult = {};

	var tmp_str = '';

	if(sizeof(tmp_result) > 0) {

		account.mailSearchResult = tmp_result;
		account.SearchMailCount = sizeof(account.mailSearchResult);

		var i = 1;
		for(lastEmail in tmp_result) {
			tmp_str+='<div class=hightlight_off id=search_email'+accountID+i+'>'+
				tmp_result[lastEmail]+'</div>';
			i++;
		}

		tmp_str+= '<textarea style="padding: 0px; margin: 0px; border: solid 0px; height: 1px; width: 0px;" id=hiddenfild'+accountID+'></textarea>';

		popup_lastemailsObj.innerHTML = tmp_str;
		popup_lastemailsObj.style.display = 'block';

		i = 1;
		for(lastEmail in tmp_result) {
			var email_href = $('search_email'+accountID+i);
			email_href.xdata = {gadgetObj: gadgetObj, accountID: accountID, i: i}
			email_href.onmouseover = gadgetObj.ON_mouseOverEmail;
			email_href.onmousedown = gadgetObj.ON_clickEmail;
			i++;
		}

		var hiddenfild = $('hiddenfild'+accountID);
		hiddenfild.xdata = {gadgetObj: gadgetObj, accountID: accountID};
		hiddenfild.onkeyup = gadgetObj.ON_keyUPHiddenFild;
		hiddenfild.onblur = gadgetObj.ON_blurHiddenFild;

		if(e.keyCode == 40) {
			account.selectedMailNum = 1;
			gadgetObj.hilightLastEmail(accountID, 1);
			account.is_popupEmails = true;
			hiddenfild.focus();
		}

		return true;
	}

	popup_lastemailsObj.style.display = 'none';
	return true;

}

//-------------------------------------------------------------------------------
__EMail.prototype.hilightLastEmail = function(accountID, num) {

	var account = this.mailAccounts[accountID];

	var i = 1;
	for(lastEmail in account.mailSearchResult) {
			//tmp_str+='<div id=search_email'+accountID+i+'>'+lastEmail+'</div>';
			var mailDiv = document.getElementById('search_email'+accountID+i);
			if(num==i) {
				mailDiv.className = 'hightlight_on';
				var hiddenfild = document.getElementById('hiddenfild'+accountID);
				hiddenfild.value = lastEmail;
			}else{
				mailDiv.className = 'hightlight_off';
			}
			i++;
		}

}

//-------------------------------------------------------------------------------
__EMail.prototype.ON_mouseOverEmail = function(e) {
	var accountID = this.xdata.accountID;
	var gadgetObj = this.xdata.gadgetObj;
	var account = gadgetObj.mailAccounts[accountID];
	var i = this.xdata.i;
	account.selectedMailNum = i;
	gadgetObj.hilightLastEmail(accountID, i);

	account.is_popupEmails = true;

	var hiddenfild = document.getElementById('hiddenfild'+accountID);
	hiddenfild.focus();
}


//-------------------------------------------------------------------------------
__EMail.prototype.ON_clickEmail = function(e) {
	var accountID = this.xdata.accountID;
	var replayformObj = $('replayform'+accountID);
	var popup_lastemailsObj = $('popup_lastemails'+accountID);
	var gadgetObj = this.xdata.gadgetObj;
	var i = this.xdata.i;
	var account = gadgetObj.mailAccounts[accountID];

	var num = 1;
	for(var tmp_email in account.mailSearchResult) {
		if(num == i) {
			replayformObj.to.value = tmp_email;
			break;
		}
		num++;
	}

	popup_lastemailsObj.style.display = 'none';
}

//-------------------------------------------------------------------------------
__EMail.prototype.ON_keyUPHiddenFild = function(e) {

	if(!e) e = event;
	var accountID = this.xdata.accountID;
	var gadgetObj = this.xdata.gadgetObj;
	var account = gadgetObj.mailAccounts[accountID];

	if(e.keyCode == 40 && account.selectedMailNum < account.SearchMailCount) {
		account.selectedMailNum++;
		gadgetObj.hilightLastEmail(accountID, account.selectedMailNum);
	}else if(e.keyCode == 38 && account.selectedMailNum > 1) {
		account.selectedMailNum--;
		gadgetObj.hilightLastEmail(accountID, account.selectedMailNum);
	}else if(e.keyCode == 13) {

		var replayform = document.getElementById('replayform'+accountID);
		var hiddenfild = document.getElementById('hiddenfild'+accountID);
		var popup_lastemailsObj = document.getElementById('popup_lastemails'+accountID);
		replayform.to.value = hiddenfild.value;
		replayform.to.focus();
		popup_lastemailsObj.style.display = 'none';
	}

	if(e) e.cancelBubble = true;
	if(window.event) window.event.cancelBubble = true;

	return true;

}

//-------------------------------------------------------------------------------
//EMailGadget.prototype.CB_sendMessage = function(accountID, folderID, messID) {
__EMail.prototype.CB_sendMessage = function(xdata) {

	var gadgetObj = xdata.gadgetObj;
	if(!gadgetObj.lastEmails) gadgetObj.lastEmails = {};

	gadgetObj.lastEmails[xdata.to] = xdata.to;

	var context = gadgetObj.mailAccounts[xdata.accountID].messageFild;

	if(!xdata.status) {
		alert(xdata.message);
		return false;
	}

	var tmp_str = '<div style="text-align: center; margin-top: 30px; margin-bottom: 40px;">'+
							'<b>'+xdata.message+'</b></div>';

	context.innerHTML = tmp_str;
	return true;
}

//-------------------------------------------------------------------------------
//показывает всплывающее div с последними сообщениями
__EMail.prototype.onShowTopMessages = function(e) {

	if(!e) e = window.event;

	gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;


	if(gadgetObj.mailAccounts[accountID].hideTopMessagesTimer) {
		window.clearTimeout(gadgetObj.mailAccounts[accountID].hideTopMessagesTimer);
	}

	var topMessagesDiv = $('topmessages'+accountID);
	if(topMessagesDiv) {

		tmp_str = '<table class=topmessages >';
		var i=0;
		var topMessagesLength = sizeof(gadgetObj.mailAccounts[accountID].top_messages);

		for(messID in gadgetObj.mailAccounts[accountID].top_messages) {
			i++;
			var msg = gadgetObj.mailAccounts[accountID].top_messages[messID];

			if(msg.unseen)  {
				var bold_style = 'bold';
			}else{
				var bold_style = 'normal';
			}



			var tmp_subject = '';
			if(msg.subject.length > 25) {
				tmp_subject = msg.subject.slice(0, 25)+'...';
			}else{
				tmp_subject = msg.subject;
			}

			var tmp_from = '';
			if(msg.from.length > 20) {
				tmp_from = msg.from.slice(0, 15)+'...';
			}else{
				tmp_from = msg.from;
			}


		var tmp_date = new Date(msg.timestamp*1000);
		
		var tmp_date_str = gadgetObj.toXDigits(tmp_date.getDate(), 2)+'.'+
			gadgetObj.toXDigits((tmp_date.getMonth()+1), 2)+'.'+
			tmp_date.getFullYear()+' '+
			gadgetObj.toXDigits(tmp_date.getHours(), 2)+':'+
			gadgetObj.toXDigits(tmp_date.getMinutes(), 2);


			tmp_str+= '<tr onmouseout="this.style.background=\'\'" onmouseover="this.style.background=\'#E3F7FF\'"  id=topmsg'+messID+
				' style="cursor: pointer; font-weight:'+bold_style+';" ><td nowrap>'+
				htmlspecialchars(tmp_from)+' </td>'+
				'<td nowrap>'+tmp_date_str+'</td>'+
				'<td width=200>'+tmp_subject+'</td>'+
				'</tr>';

				if(i < topMessagesLength) {
					tmp_str+= '<tr><td colspan=3 height=1 style="padding: 0px; background: #CCCCCC;"></td></tr>';
				}

		}

		tmp_str+= '</table>';

		topMessagesDiv.innerHTML = tmp_str;


		topMessagesDiv.style.display = 'block';


		for(var messID in gadgetObj.mailAccounts[accountID].top_messages) {
			var msg = gadgetObj.mailAccounts[accountID].top_messages[messID];
			var messTR = $('topmsg'+messID);
			messTR.onclick = gadgetObj.onShowTopMessage;
			messTR.xdata = {'gadgetObj': gadgetObj,
										'accountID':  accountID,
										'folderID': msg.folderID,
										'messID':  messID
										};

		}

		if(Modules[gadgetObj.id].State.cName == 'cRight') {
			topMessagesDiv.style.left = (Event.pointerX(e) - parseInt(topMessagesDiv.style.width) - 20)+'px';
		}else{
			topMessagesDiv.style.left = Event.pointerX(e)+'px';
		}

		topMessagesDiv.style.top = Event.pointerY(e)+'px';

	}

}

//-------------------------------------------------------------------------------
//скрывает всплывающее div с последними сообщениями
__EMail.prototype.onHideTopMessages = function() {

	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;

	gadgetObj.mailAccounts[accountID].hideTopMessagesTimer =
		window.setTimeout('gadgetObj.hideTopMessages("'+accountID+'")', 500);


}

//-------------------------------------------------------------------------------
__EMail.prototype.hideTopMessages = function(accountID) {

	var topMessagesDiv = $('topmessages'+accountID);
	if(topMessagesDiv) {
		topMessagesDiv.style.display = 'none';
	}
}

//-------------------------------------------------------------------------------
__EMail.prototype.onOverTopMessages = function() {
	gadgetObj = this.xdata.gadgetObj;
	accountID = this.xdata.accountID;

	if(gadgetObj.mailAccounts[accountID].hideTopMessagesTimer) {
		window.clearTimeout(gadgetObj.mailAccounts[accountID].hideTopMessagesTimer);
	}

}
//-------------------------------------------------------------------------------
__EMail.prototype.onOutTopMessages = function(e) {
	if(!e) e =event;

	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;

	gadgetObj.mailAccounts[accountID].hideTopMessagesTimer =
		window.setTimeout('gadgetObj.hideTopMessages("'+accountID+'")', 500);

}



//-------------------------------------------------------------------------------
//выводит письмо из топа
__EMail.prototype.onShowTopMessage = function() {

	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	var messID = this.xdata.messID;

	var account = gadgetObj.mailAccounts[accountID];

	gadgetObj.checkTab(accountID);

	if(account.firstTabOpen)	account.messagesListFild.style.display = 'none';

	if(account.currentMessageID) {
		currentTR = $('mess'+accountID+account.currentMessageID);
		if(currentTR) {
			currentTR.style.background = '';
			currentTR.onmouseout = function(){this.style.background=''};
			currentTR.onmouseover = function(){this.style.background='#E3F7FF'};
		}
	}
	account.currentMessageID = messID;


	if(account.top_messages[messID])	account.top_messages[messID].unseen = false;


	if(account.messages[messID]) {
		gadgetObj.reDrawMessage(accountID, folderID, messID);

		gadgetObj.resetStyleMessageList(accountID, folderID);


		if( (messTR = $('mess'+accountID+messID))){
			messTR.style.fontWeight = 'normal';
			messTR.style.background = '#EEEEEE';
			messTR.onmouseover = function(){};
			messTR.onmouseout = function(){};
		}

		if(account.folders[folderID].messages) account.folders[folderID].messages[messID].unseen = false;

		return true;
	}

	gadgetObj.lockAccount(accountID, gadgetObj.lang.msg['LoadingLetter']);
 
	var options = {accountID: accountID, folderID: folderID, messID: messID};
	Update.request('EMail', 'module', 'get_message', {id: gadgetObj.id}, options, true);

	gadgetObj.hideTopMessages(accountID);

}




//-------------------------------------------------------------------------------
//реакция на нажатие на нажатие 'refresh'
__EMail.prototype.onAccountRefresh = function() {
	var options = {'accountID': this.accountID};

	this.gadgetObj.lockAccount(this.accountID, this.gadgetObj.lang.msg['ReceivingMail']);

	Update.request('EMail', 'module', 'refresh_account_stat', {id: this.gadgetObj.id}, options, true);
}

//-------------------------------------------------------------------------------
//реакция при нажатии на крестик (удаление акуанта)
__EMail.prototype.deleteAccount = function() {
	if(!this.accountID) return false;
	if(!this.gadgetObj) return false;
	
	if(this.gadgetObj.isAccountLocked(this.accountID)) return false;

	var answer = confirm(this.gadgetObj.lang.msg['ConfirmDelAcc'])
	if(!answer) return false;

	var options = {accountID: this.accountID};
	Update.request('EMail', 'module', 'delete_account', {id: this.gadgetObj.id}, options, true);

}

//-------------------------------------------------------------------------------
//реакция на нажатие 'обновить все'
__EMail.prototype.onRefreshAll = function() {

	if(!this.gadgetObj) return false;

	this.gadgetObj.lockAllAccounts();

	var options = {'accountID': this.accountID};
	Update.request('EMail', 'module', 'refresh_all_accounts_stat', {id: this.gadgetObj.id}, options, true);

}

//-------------------------------------------------------------------------------
//реакция на нажатие settings, показывает слой с настройками
__EMail.prototype.onShowSettings = function(e) {
	if(window.event) e = window.event;
	var self = this;
	self.gadgetObj.showSettings(self.accountID, false, e);
}

//-------------------------------------------------------------------------------
//реакция на закрытие settings
function closeSettings() {

	gadgetObj = this.xdata.gadgetObj;
	accountID = this.xdata.accountID;

	if(gadgetObj.mailAccounts[accountID].settingsChanged) {
		var answer = confirm(gadgetObj.lang.msg['ConfirmChangeSettings']);
		//отправляем новые настройки
		if (answer){
			gadgetObj.sendNewSettings(accountID);
		//восстанавливаем старые настройки
		}else{
			gadgetObj.resetSettings(accountID);
			gadgetObj.mailAccounts[accountID].settingsChanged = false;
		}
	}

	gadgetObj.mailAccounts[accountID].settingsObj.style.display = 'none';
}

//-------------------------------------------------------------------------------
//копирует настройки из settings в  temp_settings указанного аккунта
__EMail.prototype.resetSettings = function(accountID) {
	var self = this;
	self.mailAccounts[accountID].temp_settings =
		new cloneObject(self.mailAccounts[accountID].settings);

}

//-------------------------------------------------------------------------------
//отправляет измененные темповые настройки на сервер
__EMail.prototype.sendNewSettings = function(accountID) {
	var self = this;

	var temp_settings = self.mailAccounts[accountID].temp_settings;

	var options = {accountID: accountID,
							new_settings: this.mailAccounts[accountID].temp_settings
							};

	Update.request('EMail', 'module', 'new_settings', {id: this.id}, options, true);

}

//-------------------------------------------------------------------------------
//рекция на нажатие кнопки "добавить домен"
//добавляем в текущую вкладку (currentProtoID)
__EMail.prototype.onAddDomain = function(accountID) {

	//alert(this.xdata.gadgetObj.mailAccounts[this.xdata.accountID].settingForm);
	var gadgetObj = this.xdata.gadgetObj;
	var settingsObj = this.xdata.gadgetObj.mailAccounts[this.xdata.accountID].settingsObj;
	var settingForm = this.xdata.gadgetObj.mailAccounts[this.xdata.accountID].settingForm;
	var temp_settings = this.xdata.gadgetObj.mailAccounts[this.xdata.accountID].temp_settings;
	var currentProtoID = this.xdata.gadgetObj.mailAccounts[this.xdata.accountID].currentProtoID;


	var tmp_array = {};
	tmp_array.domain = settingForm.new_domain.value;
	tmp_array.port = settingForm.new_port.value;
	tmp_array.is_ssl = (settingForm.new_ssl.checked)?true:false;

	//найдем последний используемый индекс
	var domain_id = false;
	for(domain_id in temp_settings[currentProtoID]);
	domain_id++;

	temp_settings[currentProtoID][domain_id] = tmp_array;

	gadgetObj.mailAccounts[this.xdata.accountID].settingsChanged = true;

	gadgetObj.reDrawSettings(settingsObj, this.xdata.accountID);
	gadgetObj.showTabSettings(this.xdata.accountID, currentProtoID);
}

//-------------------------------------------------------------------------------
//реакция на submit формы настройки аккаунта
function onSubmitSettings() {
	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;

	gadgetObj.sendNewSettings(accountID);

	return false;
}


//-------------------------------------------------------------------------------
//вспомогательная функция, возвращает str, обрамленный ссылкой  с указанныйм id
function makeHref(id, str) {
	var str = '<a href="javascript: void(0);" id=' + id + ' >'+ str+'</a>';
	return str;
}

//-------------------------------------------------------------------------------
//реакция на нажатие [+], скрывает показывает слой с папками
__EMail.prototype.onShowAccountFolders = function() {
	gadgetObj = this.xdata.gadgetObj;
	accountID = this.xdata.accountID;

	var foldersDiv = document.getElementById('folders'+accountID);
	var plusDiv = document.getElementById('plus'+accountID);


	if(foldersDiv.style.display == 'none') {
		foldersDiv.style.display = 'block';
		gadgetObj.mailAccounts[accountID].isFoldersTreeOpen = true;
		plusDiv.innerHTML = '<img src="/img/filestore/fold_op.gif" width=15 height=12 border=0>';
	}else{
		foldersDiv.style.display = 'none';
		gadgetObj.mailAccounts[accountID].isFoldersTreeOpen = false;
		plusDiv.innerHTML = '<img src="/img/filestore/fold.gif" width=15 height=12 border=0>';
	}

}
//-------------------------------------------------------------------------------
//реакция на нажатие 'написать письмо'
__EMail.prototype.onNewLetter = function() {
	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var account = gadgetObj.mailAccounts[accountID];

	gadgetObj.checkTab(accountID);

	if(account.firstTabOpen) {
		account.messagesListFild.style.display = 'none';
	}else{
		var tabObj = $('Content.cMain.'+account.TabID);	
		if(tabObj) 	account.messagesListFild.style.height = gadgetObj.defaultMessagesListFildHeight+'px';		
	}
	
	account.messageBlock.style.display = 'block';

	//account.messageFild = document.getElementById('messageFild'+accountID);
	gadgetObj.reDrawNewMessageForm(account.messageFild, accountID, false, false);
}


//-------------------------------------------------------------------------------
//вспомогательная функция, назначет объекту с указанным id событие onclick
// и создает свойства gadgetObj, accountID;
function setEvent(id, functionName, extra_data) {

	var Obj = document.getElementById(id);
	if(!Obj) return false;

	Obj.xdata = extra_data;
	Obj.onclick = functionName;

	return Obj;
}

//-------------------------------------------------------------------------------
//вспомогательная функция, выводит список доменов и портов для редактирования
__EMail.prototype.drawDomainsList = function(accountID, proto) {

	var self = this;
	var domainsList = self.mailAccounts[accountID].temp_settings[proto];
	var tmp_str = '';

	for(var id in domainsList) {
		tmp_str+= '<tr><td>';
		tmp_str+= '<input style="width: 100%;" type=text id='+accountID+proto+id+'domain value="'+
							domainsList[id].domain + '" >';
		tmp_str+= '</td><td>';

		tmp_str+= '<input type=checkbox id='+accountID+proto+id+'is_ssl '+
							((domainsList[id].is_ssl)?'checked':'')+'>';

		tmp_str+= '</td><td>';
		tmp_str+= '<input type=text id='+accountID+proto+id+'port value="' +
							domainsList[id].port + '" >';
		tmp_str+= '</td>';

		tmp_str+= '<td>' + makeHref(accountID+proto+id+'delete', '<img src="/img/icons/x2.gif" width=12 height=12 border=0>');

		tmp_str+= '</td></tr>';

	}


	return tmp_str;

}

//-------------------------------------------------------------------------------
//инициализирует поля формы для редактирования настроек аккаунта
__EMail.prototype.initDomainsTabs = function(accountID) {

	var self = this;


	var e_mail_fild = $('e_mail'+accountID);
	e_mail_fild.onchange = self.onChangeFild;
	e_mail_fild.xdata = { 'gadgetObj': self,
										'accountID': accountID,
										'fildName': 'e_mail'
										};
										
	var login_fild = $('login'+accountID);
	login_fild.onchange = self.onChangeFild;
	login_fild.xdata = { 'gadgetObj': self,
										'accountID': accountID,
										'fildName': 'login'
										};									

	var password_fild = $('password'+accountID);
	password_fild.onchange = self.onChangeFild;
	password_fild.xdata = { 'gadgetObj': self,
										'accountID': accountID,
										'fildName': 'password'
										};



	var protocols = {pop3: 1, imap: 1, smtp: 1};

	for(var proto in protocols) {

		var domainsList = self.mailAccounts[accountID].temp_settings[proto];


		for(domain_id in domainsList) {
			if(domain_id == 'push' || domain_id == 'length') continue;

			var domain_fild = $(accountID+proto+domain_id+'domain');
			domain_fild.onchange = self.onChangeDomain;
			domain_fild.xdata = { 'gadgetObj': self,
												'accountID': accountID,
												'protoID': proto,
												'domain_id': domain_id,
												'fildName': 'domain'
												};

			var port_fild = $(accountID+proto+domain_id+'port');
			port_fild.onchange = self.onChangeDomain;
			port_fild.xdata = { 'gadgetObj': self,
											'accountID': accountID,
											'protoID': proto,
											'domain_id': domain_id,
											'fildName': 'port'
										};

			var is_ssl_fild = $(accountID+proto+domain_id+'is_ssl');
			is_ssl_fild.onchange = self.onChangeDomain;
			is_ssl_fild.xdata = { 'gadgetObj': self,
											'accountID': accountID,
											'protoID': proto,
											'domain_id': domain_id,
											'fildName': 'is_ssl'
											};

			var del_fild = $(accountID+proto+domain_id+'delete');
			del_fild.onclick = deleteDomain;
			del_fild.xdata = { 'gadgetObj': self,
											'accountID': accountID,
											'protoID': proto,
											'domain_id': domain_id
											};


		}

	}

}


//-------------------------------------------------------------------------------
//
__EMail.prototype.onChangeFild = function() {

	var accountSettings = this.xdata.gadgetObj.mailAccounts[this.xdata.accountID].temp_settings;
	accountSettings[this.xdata.fildName] = this.value;
	this.xdata.gadgetObj.mailAccounts[this.xdata.accountID].settingsChanged = true;
}

//-------------------------------------------------------------------------------
//при изменении поля в настройках присваивает новое значение связанной с ним переменной
//во внутренней структуре
__EMail.prototype.onChangeDomain = function() {

	var accountSettings = this.xdata.gadgetObj.mailAccounts[this.xdata.accountID].temp_settings;
	
	if(this.type == 'checkbox') {
		
		if(this.checked)
			accountSettings[this.xdata.protoID][this.xdata.domain_id][this.xdata.fildName] = true;
		else
			accountSettings[this.xdata.protoID][this.xdata.domain_id][this.xdata.fildName] = false;
		
	}else{
		accountSettings[this.xdata.protoID][this.xdata.domain_id][this.xdata.fildName] = this.value;	
	}
	
	this.xdata.gadgetObj.mailAccounts[this.xdata.accountID].settingsChanged = true;
}

//-------------------------------------------------------------------------------
//удаляет домен из темпового списка
function deleteDomain() {

	var gadgetObj = this.xdata.gadgetObj;
	var settingsObj = gadgetObj.mailAccounts[this.xdata.accountID].settingsObj;
	var currentProtoID = gadgetObj.mailAccounts[this.xdata.accountID].currentProtoID;
	var temp_settings = gadgetObj.mailAccounts[this.xdata.accountID].temp_settings;

	delete temp_settings[this.xdata.protoID][this.xdata.domain_id];

	gadgetObj.mailAccounts[this.xdata.accountID].settingsChanged = true;

	gadgetObj.reDrawSettings(settingsObj, this.xdata.accountID);
	gadgetObj.showTabSettings(this.xdata.accountID, currentProtoID);

}

//-------------------------------------------------------------------------------
//по внутренней структуре выводить настройки заданного аккаунта
//context - объект, куда выводить (div)
__EMail.prototype.reDrawSettings = function(context, accountID) {

	var self = this;

	var account = self.mailAccounts[accountID];


	var tmp_str = '';

	tmp_str = '<form id=settings_form'+accountID+'>';
	tmp_str+= '<table cellpadding=3 cellspacing=0 width=100%><tr><td><b>'+ Locale['Settings'] +' '+
					account.settings.e_mail+
					'</b></td><td><div align=right>'+
					makeHref('close_settings'+accountID, '<img src="/img/icons/x.gif" width=16 height=16 border=0 align=absmiddle>') +
					'</div></td></tr></table>';


	tmp_str+= '<table class=em_loginsettings cellpadding=3 cellspacing=0>'+
			'<tr><td>E-mail: </td><td width=200><input style="width: 100%" type=text id=e_mail'+accountID+' value="'+
			account.temp_settings.e_mail+'" ></td><td><a class=std_link href="javascript: void(0);" id=autodetect'+accountID+
			'><img src="/img/i/mail/auto_detect.gif" width=16 height=16 border=0 align=absmiddle/> '+ this.lang['AutoDetect'] +'</a></td></tr>';


	tmp_str+= '<tr><td>'+ Locale['Login'] +': </td><td><input style="width: 100%" type=text value="'+
				account.temp_settings.login+'" id=login'+accountID+
						'></td><td>'+this.lang['IfDontLikeEmail']+'</td></tr>';

	tmp_str+= '<tr><td>'+ Locale['Password'] +': </td><td><input style="width: 100%" type=password value="*********" id=password'+accountID+
						'></td></tr>';
	tmp_str+= '</table><br>';


	tmp_str+= '<table width=100%><tr><td class=settingTab id=pop3_tab'+accountID+
						'>POP3</td><td class=folder_spacer ><div style="width: 2px;"></div></td><td class=settingTab id=imap_tab'+accountID+
						'>IMAP</td><td class=folder_spacer ><div style="width: 2px;"></div></td><td class=settingTab id=smtp_tab'+accountID+
						'>SMTP</td><td width=100% class=folder_spacer ><div></div></td></tr></table>';

	//tmp_str+= '<div class=em_settings_contaner >';
	tmp_str+='<table class=em_settings_contaner><tr><td>';

	//-----------------------------------
	//поля для  добавления домена
	tmp_str+= '<table cellpadding=3 cellspacing=0>';
	tmp_str+= '<tr><td>домен</td>';
	tmp_str+= '<td>ssl</td>';
	tmp_str+= '<td>порт</td></tr>';
	tmp_str+= '<tr><td><input type=text name=new_domain></td>';
	tmp_str+= '<td><input type=checkbox name=new_ssl></td>';
	tmp_str+= '<td><input style="width: 50px;" type=text name=new_port></td>';
	tmp_str+= '<td><input class=std_button type=button value="'+ Locale['ToAdd'] +'" name=add_domain></td>';
	tmp_str+= '</tr></table>';

	tmp_str+= '<div style="position: relative; top: 0px; display: none;" id=pop3_settings'+accountID+
						'><table celpadding=3 celspasing=0 border=0 width=100%>';
	tmp_str+= '<tr><td width=100%>'+ this.lang['Domain'] +'</td><td >SSL</td><td>'+ this.lang['Port'] +'</td><td >[X]</td></tr>';
	tmp_str+= self.drawDomainsList(accountID, 'pop3');	
	tmp_str+= '</table></div>';

	if(1 || sizeof(account.temp_settings.imaps) > 0 ||	sizeof(account.temp_settings.imap) > 0) {

		tmp_str+= '<div style="position: relative; top: 0px; display: none;" id=imap_settings'+accountID+
						'>';
		tmp_str+= '<table celpadding=3 celspasing=0 border=0 width=100%>';
		tmp_str+= '<tr><td width=100%>'+ this.lang['Domain'] +'</td><td >SSL</td><td>'+ this.lang['Port'] +'</td><td >[X]</td></tr>';
		tmp_str+= self.drawDomainsList(accountID, 'imap');		
		tmp_str+= '</table></div>';
	}

	if(1 || sizeof(account.temp_settings.smtp) > 0 || 	sizeof(account.temp_settings.smtps) > 0) {

		tmp_str+= '<div style="position: relative; top: 0px; display: none;" id=smtp_settings'+accountID+
						'>';
		tmp_str+= '<table celpadding=3 celspasing=0 border=0 width=100%>';
		tmp_str+= '<tr><td width=100%>'+ this.lang['Domain'] +'</td><td >SSL</td><td>'+ this.lang['Port'] +'</td><td>[X]</td></tr>';
		tmp_str+= self.drawDomainsList(accountID, 'smtp');		
		tmp_str+= '</table></div>';
	}

	//tmp_str+= '</div></form>';
			
	
	tmp_str+= '</td></tr></table><div style="padding: 5px 0px 5px 0px; text-align: right"><input class=std_button type=submit value="'+
		Locale['ToSave'] +'"></div></form>';

	context.innerHTML = tmp_str;

	//инициализируем слои и форму

	account.settingForm = $('settings_form'+accountID);

	account.settingForm.add_domain.onclick = self.onAddDomain;
	account.settingForm.add_domain.xdata = 	{ 'gadgetObj': self, 'accountID': accountID};


	account.settingForm.onsubmit = onSubmitSettings;
	account.settingForm.xdata = { 'gadgetObj': self, 'accountID': accountID};

	account.settingTabObjects = {};
	account.settingTabObjects.pop3 = {};
	account.settingTabObjects.imap = {};
	account.settingTabObjects.smtp = {};


	account.settingTabObjects.pop3.tab =  $('pop3_tab'+accountID);
	account.settingTabObjects.pop3.settings = $('pop3_settings'+accountID);

	account.settingTabObjects.imap.tab = $('imap_tab'+accountID);
	account.settingTabObjects.imap.settings = $('imap_settings'+accountID);

	account.settingTabObjects.smtp.tab = $('smtp_tab'+accountID);
	account.settingTabObjects.smtp.settings = $('smtp_settings'+accountID);


	//назначим события

	var autodetect_href = $('autodetect'+accountID);
	autodetect_href.onclick = self.onAutoDetect;
	autodetect_href.message = this.lang['AutoDetectHelp'];
	autodetect_href.onmouseover = function(e) { Tooltip.Show(this.message, this);	};
	autodetect_href.onmouseout = function() {Tooltip.Hide()};
	autodetect_href.xdata = {'gadgetObj': self, 'accountID': accountID};


	setEvent('close_settings'+accountID,
					closeSettings,
					{'gadgetObj': self, 'accountID': accountID});

	setEvent( 'pop3_tab'+accountID,
					showProtocolSettings,
					{ 'gadgetObj': self,
						'accountID': accountID,
						'protoID': 'pop3'
					});

	setEvent( 'imap_tab'+accountID,
					showProtocolSettings,
					{ 'gadgetObj': self,
						'accountID': accountID,
						'protoID': 'imap'
					});

	setEvent( 'smtp_tab'+accountID,
					showProtocolSettings,
					{ 'gadgetObj': self,
						'accountID': accountID,
						'protoID': 'smtp'
					});

	self.initDomainsTabs(accountID);

}

//-------------------------------------------------------------------------------
//реакция на нажатие autodetect
__EMail.prototype.onAutoDetect = function() {

	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;

	var loginFild = $('e_mail'+accountID);

	var options = {accountID: accountID,
							e_mail: loginFild.value};

	Update.request('EMail', 'module', 'auto_detect', {id: gadgetObj.id}, options, true);

	gadgetObj.lockAccount(accountID, gadgetObj.lang['AutoDetect']);
}

//-------------------------------------------------------------------------------
//ответ на запрос об автоопределении настроек
__EMail.prototype.CB_autoDetect = function(data) {

	if(sizeof(data.errors) > 0) { alert(data.errors[0].message); return false;}
	if(!data || !data.variables || !data.variables.accountID) return false;

	var vars = data.variables;
	var accountID = vars.accountID;
	var account = this.mailAccounts[accountID];

	this.unlockAccount(accountID, true);

	//account.temp_settings = vars.settings;
	var new_settings = vars.settings;

	account.temp_settings.pop3 = {};
	account.temp_settings.imap = {};
	account.temp_settings.smtp = {};

	if(new_settings.e_mail)
		account.settings.e_mail = new_settings.e_mail;

	this.prepareSettings(account.temp_settings.pop3, new_settings.pop3s, true);
	this.prepareSettings(account.temp_settings.pop3, new_settings.pop3, false);

	this.prepareSettings(account.temp_settings.imap, new_settings.imaps, true);
	this.prepareSettings(account.temp_settings.imap, new_settings.imap, false);

	this.prepareSettings(account.temp_settings.smtp, new_settings.smtps, true);
	this.prepareSettings(account.temp_settings.smtp, new_settings.smtp, false);


	//this.showSettings(accountID);
	account.settingsObj.style.display = 'block';
	this.reDrawSettings(account.settingsObj, accountID);
	this.showTabSettings(accountID, 'pop3');

	account.settingsChanged = true;
}


//-------------------------------------------------------------------------------
__EMail.prototype.lockAccount = function(accountID, message) {

	var statObj = $('accountstat'+accountID);
	var account = this.mailAccounts[accountID];

	if(!message) message = this.lang.msg['ReceivingMail'];

	if(statObj && account) {
		account.isLocked = true;
		account.stateMessage = message;
		statObj.innerHTML = '<img src="/img/actions/loading.gif" width=16 heght=16/>';

		statObj.message = message;
		statObj.onmouseover = function(e) {  Tooltip.Show(this.message, this);};
		//statObj.onmousemove = function(e) {Tooltip.Show(message, statObj);};
		statObj.onmouseout = function() {Tooltip.Hide()};
	}
}

//-------------------------------------------------------------------------------
__EMail.prototype.unlockAccount = function(accountID, is_ok, message) {

	var statObj = document.getElementById('accountstat'+accountID);
	var account = this.mailAccounts[accountID];

	if(!message) message= 'OK';

	if(statObj && account) {
		account.isLocked = false;
		account.stateMessage = message;
		account.isError = !is_ok;

		if(is_ok) {
			statObj.innerHTML = '<img src="/img/i/mail/ok.gif" width=16 height=16>';
		}else{
			statObj.innerHTML = '<img src="/img/i/mail/error.gif" width=16 height=16>';
			message = '<font color=red>'+message+'</font>';
		}
		
		statObj.message = message;
		statObj.onmouseover = function(e) {Tooltip.Show(this.message, statObj);};		
		statObj.onmouseout = function() {Tooltip.Hide()};
	}

}



//-------------------------------------------------------------------------------
__EMail.prototype.isAccountLocked = function(accountID) {
	if(!this.mailAccounts[accountID].isLocked) return false;

	alert(this.lang.msg['MailboxBusyByOper'] +': '+this.mailAccounts[accountID].stateMessage);

	return true;
}

//-------------------------------------------------------------------------------
__EMail.prototype.lockAllAccounts = function() {
	for(accountID in this.mailAccounts){
		this.lockAccount(accountID);
	}
}

//-------------------------------------------------------------------------------
//по внутренней структуре рисует список аккаунтов и их папки
__EMail.prototype.reDrawAccountsList = function() {

	var self = this;
	var oThis = this;
	var tmp_str = '';

	var del_account = 'del_account';
	var refresh_account = 'refresh_account';

	//************************************************
	//тут сам html с id всех нужных элементов
	if(!isEmpty(self.mailAccounts)) {
	tmp_str+= '<form id=globalSearch'+self.id+'>\
		<table class=em_searchform><tr><td width=90%><a id=refresh_all_accounts' + self.id +
		' href="javascript: void(0);" class=em_txt1><img src="/img/i/mail/refresh.gif" width=16 height=16 border=0 align=left style="margin-right: 2px;"/>'+ Locale['ToRefreshAll'] +'</a>	</td>\
		<td><img src="/img/icons/zoom.gif" width=16 height=16></td>\
		<td ><input style="width: 90px" type=text name=search_text></td>\
		<td><input type=submit value="ok" class=std_button></td>\
		</table></form><br>';
	}else{
		tmp_str+= '<div><a id=show_options' + self.id +
					' href="javascript: void(0);" class=std_link>'+ this.lang['AddBox'] +'</a></div><br>';
	}				

	//сначала просто выводим аккаунты со всеми нужными ссылками
	for(var accountID in self.mailAccounts) {

		var account = this.mailAccounts[accountID];
		/*
		tmp_str+= '<div style="display: none; width: 400px; z-index: 500; padding: 0px; position: absolute;  background: white; border: 1px solid #CCCCCC" id=topmessages'+accountID+'></div>';
		*/

		tmp_str+= '<div class=em_settings id=settings' + accountID + ' ></div>';

		//tmp_str+= '<div style="position: relative;"> ';
		tmp_str+= '<div> ';
		//tmp_str+= '<div class=em_settings id=settings' + accountID + ' style="position: absolute; left: 200px; width: 500px;"></div>';


		if(account.isFoldersTreeOpen) tmp_plus = '<img src="/img/filestore/fold_op.gif" width=15 height=12 border=0/>'; else tmp_plus = '<img src="/img/filestore/fold.gif" width=15 height=12 border=0/>';

		if(account.isLocked) {
			info_icon = '<img src="/img/actions/loading.gif" width=16 heght=16>';
		}else{
			if(account.isError) {
				info_icon = '<img src="/img/i/mail/error.gif"  width=16 height=16>';
			}else{
				info_icon = '<img src="/img/i/mail/ok.gif" width=16 height=16>';
			}
		}

		tmp_str+= '<div>'+
			'<span style="cursor: pointer;" id=plus'+accountID+	' >'+tmp_plus+'</span> '+
			'<span class=em_email>'+	self.mailAccounts[accountID].settings.e_mail+'</span>';

			tmp_str+= ' <a href="javascript: void(0);" title="'+ this.lang['LastMsgs'] +'" id=show_topmessages'+accountID+'><img src="/img/i/mail/new_mail.gif" width=15 height=11 border=0/></a> ';

		if(account.accountTotalMsg > 0) {
			tmp_str+= ' '+account.accountTotalMsg;
			if(account.accountUnseenMsg > 0) 	tmp_str+= ' (<b>'+account.accountUnseenMsg+'</b>)';
		}
		tmp_str+= '</div>';

		tmp_str+= '<div style="padding: 3px 0px 0px 18px">';
		tmp_str+='<span id=accountstat'+accountID+'>'+info_icon+'</span>';

		tmp_str+= '<a id=refresh_account'+accountID+
			' href="javascript: void(0);" title="'+ this.lang['ToReceiveMail'] +'"><img src="/img/i/mail/get_mail.gif" width=16 height=16 border=0 style="margin: 0px 4px 0px 4px;"></a>';

		tmp_str+= '<a id=new_letter' + accountID + ' href="javascript: void(0);" title="'+ this.lang['NewLetter'] +'"><img src="/img/i/mail/create_message.gif" width=16 height=16 border=0></a>';

		tmp_str+= '<a id=settings_account' + accountID + ' title="'+ Locale['Settings'] +'" href="javascript: void(0);"><img src="/img/i/mail/settings.gif" width=16 height=16 border=0 style="margin: 0px 4px 0px 4px;"></a>';


		tmp_str+= ' <a href="javascript: void(0);" title="'+ this.lang['ToDelMailBox'] +'" id='+del_account+accountID+' ><img src="/img/i/mail/del.gif" width=16 height=16 border=0></a><br>';


		//isFoldersTreeOpen
		if(account.isFoldersTreeOpen) tmp_display = 'block';
			else tmp_display = 'none';
		tmp_str+= '<div style="display: '+tmp_display+';" id=folders'+accountID+'>';

		tmp_str+= this.reDrawFolderLevel(accountID, '', 0);


		tmp_str+= '</div> ';
		tmp_str+= '</div></div> ';
		tmp_str+= '<br>';
	}

	//this.parent.oLevelC.innerHTML = tmp_str;
	this.Content.innerHTML = tmp_str;


	//************************************************
	//self.accountsSettings[accountID]

	if(!isEmpty(self.mailAccounts)) {
		var refresh_all_href = $('refresh_all_accounts' + self.id);
		refresh_all_href.onclick =self.onRefreshAll;
		refresh_all_href.gadgetObj = self;
		
		var globalSearchForm = $('globalSearch'+self.id);
		globalSearchForm.onsubmit = self.ON_GloablSearch;
		globalSearchForm.xdata = {gadgetObj: self};
				
	}else{
		var show_options_href= $('show_options' + self.id);
		show_options_href.onclick =self.onShowOptions;
		show_options_href.xdata = {gadgetObj: self};
		
	}	


	//прокрутим цикл второй раз проинициализируем нужные объекты и назначим события
	for(var accountID in self.mailAccounts) {

		var statSpan = $('accountstat' + accountID);		
		statSpan.message = self.mailAccounts[accountID].stateMessage;
		statSpan.onmouseover = function(e) { Tooltip.Show(this.message, this);	};
		statSpan.onmouseout = function() {Tooltip.Hide()};

		var xdata = {'gadgetObj': self,
							'accountID':  accountID};

		//всплывающее div настроек аккаунта
		//self.accountsSettings[accountID]['settingsObj'] = document.getElementById('settings' + accountID);
		if(!self.mailAccounts[accountID].settingsObj) {
			self.mailAccounts[accountID].settingsObj = $('settings' + accountID);
			self.mailAccounts[accountID].settingsObj.style.display = 'none';
			self.mailAccounts[accountID].settingsObj.gadgetObj = self;
			self.mailAccounts[accountID].settingsObj.accountID = accountID;
			document.body.appendChild(self.mailAccounts[accountID].settingsObj);
		}



		//show_topmessages'+accountID
		//показать последние (новые письма)
		var topmessages_href = $('show_topmessages' + accountID);
		topmessages_href.onmouseover = self.onShowTopMessages;
		topmessages_href.onmouseout = self.onHideTopMessages;
		topmessages_href.xdata = {'gadgetObj': self,
													'accountID':  accountID
													};


		//если слоя с topmessages еще не существует, создадим его
		var topmessagesDiv = $('topmessages' + accountID);
		if(!topmessagesDiv) {
			var props = {id: 'topmessages' + accountID};
			var styles = {position: 'absolute',
								width: '400px',
								padding: '0px',
								border: 'solid 1px #CCCCCC',
								background: 'white',
								display: 'none'	}	;
			var topmessagesDiv = ce('div', document.body, props, styles);
		}

		topmessagesDiv.onmouseover = self.onOverTopMessages;
		topmessagesDiv.onmouseout  = self.onOutTopMessages;
		topmessagesDiv.xdata = {'gadgetObj': self,
													'accountID':  accountID };


		//раскрытие дерева папок
		var plus_controll = $('plus'+accountID);
		plus_controll.onclick = self.onShowAccountFolders;
		plus_controll.xdata ={'gadgetObj': self, 'accountID':  accountID};

		//настройки аккаунта
		var settings_account_href = $('settings_account' + accountID);
		settings_account_href.onclick = self.onShowSettings;
		settings_account_href.gadgetObj = self;
		settings_account_href.accountID = accountID;

		//новое письмо
		var new_letter_href = $('new_letter' + accountID);
		new_letter_href.onclick = self.onNewLetter;
		new_letter_href.xdata = {'gadgetObj': self,
												'accountID':  accountID};

		//удаление
		var del_account_href = $(del_account+accountID);
		del_account_href.onclick = self.deleteAccount;
		del_account_href.gadgetObj = self;
		del_account_href.accountID = accountID;

		//получить почту
		var refresh_href = $(refresh_account+accountID);
		refresh_href.onclick =self.onAccountRefresh;
		refresh_href.gadgetObj = self;
		refresh_href.accountID = accountID;

		//папки аккаунта
		//show_messages'+ accountID+folderId
		for(var folderID in self.mailAccounts[accountID].folders) {

			var folder_href = $('show_messages'+ accountID+folderID);
			if(folder_href) {
				folder_href.onclick = this.ON_showFolderMessages;
				folder_href.xdata = {'gadgetObj': self,
												'accountID':  accountID,
												'folderID': folderID
												};
			}
		}


	}

}

//-------------------------------------------------------------------------------
__EMail.prototype.onShowOptions = function() {	
	var gadgetObj = this.xdata.gadgetObj;	
	$(gadgetObj.Options).show();
	gadgetObj.oForm.e_mail.focus();	
}

//-------------------------------------------------------------------------------
//рисует один урвень папок аккаунта
__EMail.prototype.reDrawFolderLevel = function(accountID, parent_id, level) {

	var allFolders = this.mailAccounts[accountID].folders;
	var selectedFolders = {};


	for(var folderID in allFolders) {
		folder = allFolders[folderID];
		if(folder['parent_id'] == parent_id) selectedFolders[folderID] = folder;
	}

	if(!sizeof(selectedFolders)) return '';

	leftPadding = 10*level;
	level++;

	var tmp_str = '<div  style="padding-left: '+leftPadding+'px ">';
	for(var folderID in selectedFolders) {
		folder = allFolders[folderID];

		tmp_str+='<div class=folder_name>';
		tmp_str+= '&nbsp;&nbsp;<a id="show_messages'+accountID+folderID+'" href="javascript: void(0);">';
		tmp_str+= '' + folder.name+'</a>';

		tmp_str+=' <span class=mes_count>';

		if(folder.totalMsg > 0) {
			tmp_str+= folder.totalMsg;
			if(folder.unseenMsg > 0) 	tmp_str+= ' (<b>'+folder.unseenMsg+'</b>)';
		}
		tmp_str+= '</span></div>';

		tmp_str+= this.reDrawFolderLevel(accountID, folderID, level);
	}

	tmp_str+= '</div>';

	return tmp_str;
}

//-------------------------------------------------------------------------------
//поиск по всем аккаунтам
__EMail.prototype.ON_GloablSearch = function() {
	var gadgetObj = this.xdata.gadgetObj;
	
	
	if(!this.search_text.value) return false;
	
	gadgetObj.searchControls.searched_phrase = this.search_text.value;
	
	
	
	var options = {search_text: this.search_text.value};
	Update.request('EMail', 'module', 'global_search', {id: gadgetObj.id}, options, true);
	
	return false;	
}

//-------------------------------------------------------------------------------
//проверяет, существует ли вкладка для указанного аккаунта, если нет - создает
__EMail.prototype.checkSearchTab = function() {
	

	if(!this.searchControls.TabID || !Desktop.State.cMain.content[this.searchControls.TabID]) {
		this.searchControls.TabID = Desktop.NewTab('cMain', 'Поиск в почте', 'e_mail', null, null, null, true);
		Desktop.SetActiveByID('cMain', this.searchControls.TabID);
		this.searchControls.TabOpen = true;
		this.reDrawFoundMessagesLayer();
		return false;
	}

	this.searchControls.TabOpen = false;

	Desktop.SetActiveByID('cMain', this.searchControls.TabID);
	return true;
}


//-------------------------------------------------------------------------------
//поиск по всем аккаунтам
__EMail.prototype.CB_GloablSearch = function(data) {
	
	if(sizeof(data.errors) > 0) { alert(data.errors[0].message); return false;}

	if(!data || !data.variables) return false;
	
	this.checkSearchTab();
	
	if(data.variables.found_messages) this.searchControls.found_messages=data.variables.found_messages;
		else this.searchControls.found_messages = {};
	
	
	this.searchControls.searchwordsSpan.innerHTML =
		htmlspecialchars(this.searchControls.searched_phrase);
		

	this.searchControls.globalSearchForm.search_text.value = this.searchControls.searched_phrase;
	
	this.searchControls.currentPage = 1;
	
	function sortsAsDate(a, b) {
		date1 = new Date(a.timestamp);
		date2 = new Date(b.timestamp);
  		if (date1.valueOf() > date2.valueOf()) return -1;
    	if (date1.valueOf() < date2.valueOf()) return 1;
  		return 0;	// a равно b
	}	
	
	var sorted_array = new Array();

	for(var mess_num in this.searchControls.found_messages) {
		if(!this.searchControls.found_messages[mess_num].messID) continue;		
		sorted_array.push(this.searchControls.found_messages[mess_num]);
	}

	sorted_array.sort(sortsAsDate);

	var tmp_messages = {};
	this.searchControls.found_messages = {}

	//for(i in sorted_array) {
	for(var i= 0; i < sorted_array.length; i++) {		
		this.searchControls.found_messages[i] = sorted_array[i];
	}
	
		
	//this.reDrawFoundMessagesLayer();
	this.reDrawFoundMessages();		
	this.reDrawSearchPaging();	
}


//-------------------------------------------------------------------------------
//создает вкладку для результатов поиска и подготавливает нужные слои в ней
__EMail.prototype.reDrawFoundMessagesLayer = function() {
	
	var self = this;
	var tmp_str = '';

	if(!this.currentSearchPage) 	this.currentSearchPage = 1;
		

	//div для отступа
	tmp_str = '<div id=mainPaddingBlock_search'+this.id+'  style="padding: 9px">';

	
	//это обрамляющий div
	//tmp_str+='<div >';
	tmp_str+='<table id=mainBlock_search class=messages_main><tr><td style="padding: 7px;">';
	
	
	
	tmp_str+='<form id="globalSearch_attab'+this.id+
	'"><table class="em_searchform"><tbody><tr><td><img src="/img/i/mail/search.gif" width=16 height=16></td><td><b>'+ Locale['Search'] +':</b></td>	<td width=100%><input type="text" name="search_text" style="width: 99%;" value="'+ htmlspecialchars(this.searchControls.searched_phrase)	+'" ></td>		<td><input type="submit" class="std_button" value="'+Locale['ToSearch']+'"></td>		</tr></tbody></table></form>';
	
	
	tmp_str+='<div sytle=" height: 20px;" id=searchwordsBlock ><br><b>Результаты поиска:</b> <span id=searchwordsSpan>'+
		htmlspecialchars(this.searchControls.searched_phrase)+'</span><br></div>';


	tmp_str+= '<form id=sortform_search><table id=columnHeadersBlock_search class=messagelist width=100%><tr><td width=13><img src="/img/i/mail/clip.gif" width=9 height=13></td>'+
		'<td width=100 class=em_column_hd><a href="javascript: void(0);"  id="sort_from_search">'+ Locale['From'] +'</a></td><td class=em_column_hd>'+
		'<a href="javascript: void(0);" id="sort_subject_search">'+ Locale['Subject'] +'</a></td>'+
		'<td width=100 class=em_column_hd><a href="javascript: void(0);" id="sort_date_search">'+ this.lang['Received'] +'</a></td>'+
		//'<td><a href="javascript: void(0);" id="sort_to_search'+accountID+'">Кому</a></td>'+
		'<td width=15></td></tr></table></form>';


	tmp_str+= '<table width=100%><tr><td><form onsubmit="function(){return false;}"><div style="border: 1px solid #7F7F7F; background: white; height: 150px;  overflow: auto;" id=messagesListFild_search></div>';	

	tmp_str+= '<table id=pagingBlock_search style="margin-top: 5px;" width=100%><tr><td id=paging_search></td></tr></table></form></td></tr></table>';

	tmp_str+='</td></tr></table><table width=100%  style="display: none; width: 100%" id=messageBlock_search class=messages_main><tr><td style="padding: 7px;" width=100%>';


	//tmp_str+= '<table width=100%><tr><td width=100%>&nbsp;</td></tr></table>';

	

	//закрываем основной и ограничивающий слой	
	tmp_str+='</td></tr></table>';
	tmp_str+='</div>';

	//self.mailAccounts[accountID].messagesLayer.innerHTML = tmp_str;

	Desktop.State.cMain.content[this.searchControls.TabID].content.innerHTML = tmp_str;

	this.searchControls.messagesListFild = $('messagesListFild_search');	
		
	this.searchControls.mainBlock = $('mainBlock_search');
	
	this.searchControls.columnHeadersBlock = $('columnHeadersBlock_search');
	this.searchControls.pagingBlock = $('pagingBlock_search');	
	this.searchControls.messageBlock = $('messageBlock_search');
	this.searchControls.mainPaddingBlock = $('mainPaddingBlock_search'+this.id);
	
	var globalSearchForm = $('globalSearch_attab'+self.id);
	globalSearchForm.onsubmit = self.ON_GloablSearch;
	globalSearchForm.xdata = {gadgetObj: self};
	
	this.searchControls.globalSearchForm = globalSearchForm;
	
	this.searchControls.searchwordsBlock = $('searchwordsBlock');
	
	this.searchControls.searchwordsSpan = $('searchwordsSpan');
	
	
	
	
	
	this.expandFoundMessagesListBlock();
	
	/*
	var tabObj = $('Content.cMain.'+account.TabID);
	account.mainPaddingBlock.style.width = (tabObj.getWidth() - this.getFullHorMargin(tabObj)-20)+'px';
	*/


	this.searchControls.pagingContext = $('paging_search');
	
	
}

//-------------------------------------------------------------------------------
//перерисовывает слой с найдеными письмами
__EMail.prototype.reDrawFoundMessages = function() {
	
		
	var self = this;
	
	var current_messages = this.searchControls.found_messages;


	if(sizeof(this.searchControls.found_messages) == 0) {		
		this.searchControls.messagesListFild.innerHTML = 'Ничего не найдено';		
		return false;
	}


	this.searchControls.messagesOnPage = {};
	this.searchControls.isAllSelected = false;
	//$('select_all'+accountID).checked = false;
	this.searchControls.del_messages = {};	


	if(!this.searchControls.currentPage) this.searchControls.currentPage = 1;


	var messages = {};

	var start_num = (this.searchControls.currentPage - 1) * self.messagesOnPage;
	var finish_num = this.searchControls.currentPage * self.messagesOnPage;


	var tmp_num = 0;
	if(!isEmpty(current_messages))
	for(var mess_num in current_messages) {
		if(!current_messages[mess_num].messID) continue;
		if(finish_num < tmp_num) {
			break;
		}else if(tmp_num >= start_num &&  tmp_num <= finish_num ) {			
			messages[mess_num] = current_messages[mess_num];			
			this.searchControls.messagesOnPage[mess_num] = current_messages[mess_num];			
		}
			tmp_num++;
	}
	

	var tmp_str = '<table class=messagelist >';

	i = 0;
	

	if(!isEmpty(messages))
	for(var mess_num in messages) {
		
		if(!messages[mess_num].messID) continue;
		
		if(messages[mess_num].unseen)  var bold_style = 'bold';
			else var bold_style = 'normal';
				

		var attach_str = (messages[mess_num].is_attaches)?'<img src="/img/i/mail/clip.gif" width=9 height=13/>':'';

		var tmp_subject = '';

		if(!messages[mess_num].subject) messages[mess_num].subject = '';
		if(!messages[mess_num].from) messages[mess_num].from = '';
		
		var tmp_date = new Date(messages[mess_num].timestamp*1000);

		var tmp_date_str = this.toXDigits(tmp_date.getDate(), 2)+'.'+
			this.toXDigits((tmp_date.getMonth()+1), 2)+'.'+
			tmp_date.getFullYear()+' '+
			this.toXDigits(tmp_date.getHours(), 2)+':'+
			this.toXDigits(tmp_date.getMinutes(), 2);

		tmp_str+= '<tr onmouseout="this.style.background=\'\'" onmouseover="this.style.background=\'#E3F7FF\'" style="font-weight: '+bold_style+'; cursor: pointer;" id=found_mess'+
			messages[mess_num].accountID+messages[mess_num].messID+' ><td id=td_atch'+messages[mess_num].accountID+messages[mess_num].messID+
			'> <div style="width: 10px;">'+
			attach_str+'</td><td nowrap><div style="width: 100px;" title="'+
			htmlspecialchars(messages[mess_num].from)+	'">' +
			htmlspecialchars(messages[mess_num].from)+'</div></td>'+
			'<td width=100%><div title="'+htmlspecialchars(messages[mess_num].subject)+'">'+
			htmlspecialchars(messages[mess_num].subject)+
			'</div></td>'+
			'<td nowrap><div  style="width: 100px; ">'+tmp_date_str+'</div></td>'+
			//'<td  style="padding: 3px;">'+messages[mess_id].to+'</td>'+
			'</tr>';
	}

	tmp_str+= '</table>';

	this.searchControls.messagesListFild.innerHTML = tmp_str;

	var temp_href = '';
	var start_time = new Date();

	for(var mess_num in messages) {
		if(!messages[mess_num].messID) continue;
		temp_href = $('found_mess'+messages[mess_num].accountID+messages[mess_num].messID);
		temp_href.onclick = self.ON_showFoundMessage;
		temp_href.xdata = { 'gadgetObj': self,
			'accountID': messages[mess_num].accountID,
			'folderID': messages[mess_num].folderID,
			'messID': messages[mess_num].messID,
			'mess_num': mess_num
			};		
	}


	
}



//-------------------------------------------------------------------------------
//реакция на клик по найденому сообщению
__EMail.prototype.ON_showFoundMessage = function() {
	
	var self = this;

	var gadgetObj = this.xdata.gadgetObj;
	var accountID = this.xdata.accountID;
	var folderID = this.xdata.folderID;
	var messID = this.xdata.messID;
	var mess_num = this.xdata.mess_num;	
		
	var account = gadgetObj.mailAccounts[accountID];
	
	gadgetObj.checkTab(accountID, folderID);	
	if(account.firstTabOpen)	account.messagesListFild.style.display = 'none';
			
	if(account.messages[messID]) {
		
		gadgetObj.reDrawMessage(accountID, folderID, messID);
		
		if(account.currentMessageID) {
			currentTR = $('mess'+accountID+account.currentMessageID);
			if(currentTR) {
				currentTR.style.background = '';
				currentTR.onmouseout = function(){this.style.background=''};				
				currentTR.onmouseover = function(){this.style.background='#E3F7FF'};
			}
		}
		account.currentMessageID = messID;
	}
	
	var messTR = $('found_mess'+accountID+messID);
	messTR.style.fontWeight = 'normal';
		
	gadgetObj.searchControls.found_messages[mess_num].unseen = false;
	
	/*
	messTR.style.background = '#EEEEEE';
	messTR.onmouseover = function(){};
	messTR.onmouseout = function(){};	
	*/	
	
	
	var messagesListFild = $('messagesListFild'+accountID);

	if(gadgetObj.messagesListFild) {
		gadgetObj.style.position = 'absolute';
		gadgetObj.messagesListFild.display = 'none';
		gadgetObj.messagesListFild.style.visibility = 'visible';
		gadgetObj.messagesListFild.style.zIndex = 50000;
		gadgetObj.messagesListFild.style.top = 10;
	}
	
	
	/*
	var messTR = $('found_mess'+accountID+messID);	
	messTR.style.fontWeight = 'normal';
	messTR.style.background = '#EEEEEE';
	*/
	
	
		
	
	if(!account.messages[messID]) {	
		gadgetObj.lockAccount(accountID, gadgetObj.lang.msg['LoadingLetter']);
		var options = {accountID: accountID, folderID: folderID, messID: messID};
		Update.request('EMail', 'module', 'get_message', {id: gadgetObj.id}, options, true);
	}
	
	
}



//-------------------------------------------------------------------------------
//перерисовывает листалку
__EMail.prototype.reDrawSearchPaging = function() {

	var self = this;
	
	
	var currentPage = this.searchControls.currentPage;

	//var messCount = sizeof(this.mailAccounts[accountID].folders[folderID].messages);
	var messCount = sizeof(this.searchControls.found_messages);

	this.searchControls.page_count = Math.ceil(messCount/this.messagesOnPage);

	var page_count = this.searchControls.page_count;

	if(sizeof(this.searchControls.found_messages) == 0) {
		this.searchControls.pagingContext.innerHTML = '';
		return false;
	}

	var tmp_str = '<table class=paging><tr>';

	tmp_str+= '<td><a href="javascript: void(0);" id=prev_search><img src="/img/i/mail/prev.gif" width=13 height=13 border=0></a></td>';

	var tmp_style = 'pg';
	
	var start_page = currentPage - 10;	
	if(start_page < 1) start_page = 1;
	
	var end_page = currentPage + 10;
	if(end_page > page_count) end_page = page_count;
	
	if(start_page != 1) tmp_str+=  '<td class='+tmp_style+'><a href="javascript: void(0);" id=pg'+
		accountID+'1 >1</a></td><td >. . .</td>';

	for(var num = start_page; num <= end_page; num++ ) {
		if(num == this.searchControls.currentPage) tmp_style = 'pg_on'; else tmp_style = 'pg';

		tmp_str+= '<td class='+tmp_style+'><a href="javascript: void(0);" id=pg_search'+num+
		' >'+num+'</a></td>';
	}

	if(end_page != page_count) tmp_str+= '<td >. . .</td><td class='+tmp_style+
		'><a href="javascript: void(0);" id=pg_search'+page_count+'>'+page_count+'</a></td>';

	tmp_str+= '<td style="text-align: right;"><a href="javascript: void(0);" id=next_search ><img src="/img/i/mail/next.gif" width=13 height=13 border=0></a></td>';

	tmp_str+= '</tr></table>';

	this.searchControls.pagingContext.innerHTML = tmp_str;


	var prev_href = $('prev_search');
		prev_href.onclick = this.ON_SearchPagingPress;
		prev_href.xdata = {'gadgetObj': self,									
									'direction': 'prev'
									}

	for(var num=start_page; num <= end_page; num++ ) {
		var pg_href = $('pg_search'+num);
		pg_href.onclick = this.ON_SearchPagingPress;
		pg_href.xdata = {'gadgetObj': self,									
									'direction': 'page',
									'currentPage': num
									}
	}
	
	if(start_page != 1) {
		var pg_href = $('pg_search1');
		pg_href.onclick = this.ON_SearchPagingPress;
		pg_href.xdata = {'gadgetObj': self,									
									'direction': 'page',
									'currentPage': 1
									}		
	}
	
	
	if(end_page != page_count) {
		var pg_href = $('pg_search'+page_count);
		pg_href.onclick = this.ON_SearchPagingPress;
		pg_href.xdata = {'gadgetObj': self,									
									'direction': 'page',
									'currentPage': page_count
									}
		
	}


	var next_href = $('next_search');
	next_href.onclick = this.ON_SearchPagingPress;
	next_href.xdata = {'gadgetObj': self,								
									'direction': 'next'
									}

}


//-------------------------------------------------------------------------------
//перерисовывает листалку
__EMail.prototype.ON_SearchPagingPress = function() {
	
	var gadgetObj = this.xdata.gadgetObj;	
	var direction = this.xdata.direction;
	var currentPage = this.xdata.currentPage;

	if(!folder.currentPage) folder.currentPage = 1;

	switch(direction) {
		//листаем назад
		case 'prev':
			if(gadgetObj.searchControls.currentPage > 1) {
				gadgetObj.searchControls.currentPage--;
				gadgetObj.reDrawFoundMessages();
				gadgetObj.reDrawSearchPaging();
			}
			break;

		//листаем вперед, увеличим начало отсчета
		case 'next':
			if(gadgetObj.searchControls.currentPage < gadgetObj.searchControls.currentPage.page_count) {
				gadgetObj.searchControls.currentPage++;
				gadgetObj.reDrawFoundMessages();
				gadgetObj.reDrawSearchPaging();
			}
			break;

		case 'page':
			gadgetObj.searchControls.currentPage = currentPage;
			gadgetObj.reDrawFoundMessages();
			gadgetObj.reDrawSearchPaging();
			break;
	}
	
	
}


//-------------------------------------------------------------------------------
//разворачивает список найденных сообщений во всю вкладку
__EMail.prototype.expandFoundMessagesListBlock = function() {		
	
	this.searchControls.messageBlock.style.display = 'none';
			
	//это наша вкладка
	var tabObj = $('Content.cMain.'+this.searchControls.TabID);	
	
	var ht = tabObj.getHeight() - 
					this.getFullHeight(this.searchControls.columnHeadersBlock) -
					this.getFullHeight(this.searchControls.globalSearchForm) - 
					this.getFullHeight(this.searchControls.searchwordsBlock) - this.getFullHeight(this.searchControls.pagingBlock)-
					this.getFullVertMargin(this.searchControls.messagesListFild)-49;	
					
	this.searchControls.messagesListFild.style.height = ht+'px';
}



//-------------------------------------------------------------------------------
//__EMail.prototype.ctrlCallback = function(dataObj, section) {
__EMail.prototype.Relay = function(data, part) {

	switch(data.event.action)
	{
		case 'get_accounts':
			this.CB_getAccounts(data);
			break;

		case 'new_account':
			this.CB_newAccount(data);
			break;

		case 'auto_detect':
			this.CB_autoDetect(data);
			break;

		case 'delete_account':
			this.CB_deleteAccount(data);
			break;
		case 'new_settings':
			this.CB_newSettings(data);
			break;

		case 'get_account_stat':
			//this.CB_getAccountStat(data);
			this.CB_getAllAccountsStat(data);
			break;

		case 'refresh_account_stat':
			//this.CB_refreshAccountStat(data);
			this.CB_getAllAccountsStat(data);
			break;

		case 'get_all_accounts_stat':
			this.CB_getAllAccountsStat(data);
			break;

		case 'refresh_all_accounts_stat':
			//this.CB_refreshAllAccountsStat(dataObj);
			this.CB_getAllAccountsStat(data);
			break;

		case 'get_folder_messages':
			this.CB_getFolderMessages(data);
			break;

		case 'get_message':
			this.CB_getMessage(data);
			break;

		case 'delete_messages':
			this.CB_deleteMessages(data);
			break;

		case 'global_search':
			this.CB_GloablSearch(data);
			break;

		default:
			//this.parent.ctrlCallback(dataObj, section);
			return false;
			break;
	}

	 if (!part) this.Core.HideLoadingIcon();

}