﻿//Copyright WebMail Wou3, Inc. 2007-2010
Type.registerNamespace('WebMail2');
WebMail2.Settings=function(SpamTag, SpamEnable, ResponseEnable, AutoResponse, StartDate, EndDate, WhiteList, BlackList)
{
	this._SpamTag=SpamTag; 
	this._SpamEnable=SpamEnable;
	this._ResponseEnable=ResponseEnable;
	this._AutoResponse=AutoResponse;
	this._StartDate=StartDate;
	this._EndDate=EndDate;
	this._WhiteList=WhiteList;
	this._BlackList=BlackList;
}
WebMail2.Settings.prototype=
{
//////////////////////////////////////////////////////////////////////////////////////////////////////
//WhiteList/BlackList
//////////////////////////////////////////////////////////////////////////////////////////////////////
get_WhiteList:function(){return getObjectValue(this._WhiteList);},
set_WhiteList:function(value){setObjectValue(this._WhiteList,value);},

get_BlackList:function(){return getObjectValue(this._BlackList);},
set_BlackList:function(value){setObjectValue(this._BlackList,value);},

//public static void MailRuleUpdateEmailList(string AddressList, bool IsWhiteList)
UpdateEmailList:function(IsWhiteList)
{
	if(IsWhiteList==true)
		PageMethods.MailRuleUpdateEmailList(this.get_WhiteList(), true, this.onUpdateMailRuleEmailList, onError);
	else
		PageMethods.MailRuleUpdateEmailList(this.get_BlackList(), false, this.onUpdateMailRuleEmailList, onError);
},

onUpdateMailRuleEmailList:function(results)
{
	page.set_Messages(results);
	if(results.WhiteLists!=null)
		settings.set_WhiteList(results.WhiteLists);
	if(results.BlackLists!=null)
		settings.set_BlackList(results.BlackLists);
},
//////////////////////////////////////////////////////////////////////////////////////////////////////  

//////////////////////////////////////////////////////////////////////////////////////////////////////
//SpamTag
//////////////////////////////////////////////////////////////////////////////////////////////////////
get_SpamTagEnable:function(){return getCheckBoxValue(this._SpamTag);},
set_SpamTagEnable:function(value){setCheckBoxValue(this._SpamTag,value);},
//////////////////////////////////////////////////////////////////////////////////////////////////////  
//SpamEnable
//////////////////////////////////////////////////////////////////////////////////////////////////////
get_SpamFilterEnable:function(){return getCheckBoxValue(this._SpamEnable);},
set_SpamFilterEnable:function(value){setCheckBoxValue(this._SpamEnable,value);},
//////////////////////////////////////////////////////////////////////////////////////////////////////  
//ResponseEnable
//////////////////////////////////////////////////////////////////////////////////////////////////////
get_ResponseEnable:function(){return getCheckBoxValue(this._ResponseEnable);},
set_ResponseEnable:function(value){setCheckBoxValue(this._ResponseEnable,value);},
//////////////////////////////////////////////////////////////////////////////////////////////////////  
//AutoResponse
//////////////////////////////////////////////////////////////////////////////////////////////////////
get_AutoResponse:function(){return getObjectValue(this._AutoResponse);},
set_AutoResponse:function(value){setObjectValue(this._AutoResponse,value);},
//////////////////////////////////////////////////////////////////////////////////////////////////////  

//////////////////////////////////////////////////////////////////////////////////////////////////////  
// object MailRuleSetSpamTag(bool Enable)
//////////////////////////////////////////////////////////////////////////////////////////////////////
mailRuleSetSpamTag:function()
{PageMethods.MailRuleSetSpamTag(this.get_SpamTagEnable(),this.onMailRuleSetSpamTagComplete, this.onMailRuleSetSpamTagError);},
onMailRuleSetSpamTagComplete:function(results) 
{
	if(results==null)
	   return;
		
	var rule;
	if(results.Rule==null)
		rule=null;
	else
		rule=results.Rule;
		
	//if RuleID is null, no update happened
	if((rule!=null) && (rule.RuleID!=null))
		settings.set_SpamTagEnable(Number(rule.StatusID)==0);
	
	page.set_ErrorMessage(results.ErrorMessage);
	page.set_StatusMessage(results.StatusMessage);
},
onMailRuleSetSpamTagError:function(error) 
{
	settings.set_SpamTagEnable(!settings.get_SpamTagEnable());
	onError(error);
},
//////////////////////////////////////////////////////////////////////////////////////////////////////
// object MailRuleSetSpamFilter(bool Enable)
//////////////////////////////////////////////////////////////////////////////////////////////////////
mailRuleSetSpamFilter:function()
{PageMethods.MailRuleSetSpamFilter(this.get_SpamFilterEnable(),this.onMailRuleSetSpamFilterComplete,this.onMailRuleSetSpamFilterError)},
onMailRuleSetSpamFilterComplete:function(results) 
{
	if(results==null)
		return;
		
	var rule;
	if(results.Rule==null)
		rule=null;
	else
		rule=results.Rule;
		
	//if RuleID is null, no update happened
	if((rule!=null) && (rule.RuleID!=null))
		settings.set_SpamFilterEnable(Number(rule.StatusID)==0);
		
	page.set_ErrorMessage(results.ErrorMessage);
	page.set_StatusMessage(results.StatusMessage);
},
onMailRuleSetSpamFilterError:function(error) 
{
	onError(error);
},
//////////////////////////////////////////////////////////////////////////////////////////////////////
// object MailRuleSetAutoReply(bool Enable, string AutoReplyText, DateTime? StartDate, DateTime? EndDate)
//////////////////////////////////////////////////////////////////////////////////////////////////////
mailRuleSetAutoReply:function(enable,autoReplyText)
{PageMethods.MailRuleSetAutoReply(enable,autoReplyText,this.onMailRuleSetAutoReplyComplete,this.onMailRuleSetAutoReplyError)},
onMailRuleSetAutoReplyComplete:function(results) 
{
	//no changes occurred
	if(results==null)
		return;
		
	var rule;
	if(results.Rule==null)
		rule=null;
	else
		rule=results.Rule;
		
	//if RuleID is null, no update happened
	if((rule!=null) && (rule.RuleID!=null))
	{
		settings.set_ResponseEnable(Number(rule.StatusID)==0);
		settings.set_AutoResponse(rule.Data);
		//settings.set_StartDate(results.AutoReplyStartDate);
		//settings.set_EndDate(results.AutoReplyEndDate);
	}
		
	page.set_ErrorMessage(results.ErrorMessage);
	page.set_StatusMessage(results.StatusMessage);
},
onMailRuleSetAutoReplyError:function(error) 
{
	onError(error);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////


}
WebMail2.Settings.registerClass("WebMail2.Settings");