﻿//Copyright WebMail Wou3, Inc. 2007-2010
Type.registerNamespace('WebMail2');
WebMail2.ListContacts=
function 
(
	MaxContactControls, FirstEditContactTabIndex,
	ContactListDivID, SiblingValueControlIDs, SelectedValuesControlID, 
	UnSelectedColorBack, SelectedColorBack, 
	SelectedValueAttribute, CheckBoxControlID, ListTabIndex,  ToolbarObject,
	CheckBoxIDReplace,CheckBoxDivIDReplace,
	SortDisplayAsImageID, SortFirstNameImageID, SortLastNameImageID, SortEmailImageID,
	UpdatingImageID
) 
{ 
	var baseParams=new Array
		(
			ContactListDivID,
			SiblingValueControlIDs,
			SelectedValuesControlID,
			UnSelectedColorBack,
			SelectedColorBack,
			SelectedValueAttribute,
			CheckBoxControlID, 
			ListTabIndex,
			ToolbarObject
		);
	WebMail2.ListContacts.initializeBase(this,baseParams);

	this._FirstEditContactTabIndex=FirstEditContactTabIndex;
	this._MaxContactControls=MaxContactControls;
	this._UpdateImage=document.getElementById(UpdatingImageID);

	this._ImportFromOldButton=null;
	this._ImportFromOldImage=null;

	this._SortDisplayAsImage=document.getElementById(SortDisplayAsImageID);
	this._SortFirstNameImage=document.getElementById(SortFirstNameImageID);
	this._SortLastNameImage=document.getElementById(SortLastNameImageID);
	this._SortEmailImage=document.getElementById(SortEmailImageID);

	//DefaultDestination sets the default textbox control on the contacts list to copy addresses to if none other has
	//been selected.  The default is the To recipients
	if(this._ToolbarObject!=null)
		this._ToolbarObject.set_ContactList(this);

}
WebMail2.ListContacts.prototype=
{
onContactUpdateComplete:function(results)
{
	try{page.set_Messages(results);}
	catch(e){}
	
	try{listObject.refreshComplete(results.ContactList);}
	catch(e){}
	
	try{distList.loadDistributionLists(results.DistributionList);}
	catch(e){}
	
	try{listObject.loadContact(results.Contact);}
	catch(e){}
	
},
loadContact:function(contact) 
{
	if(contact==null)
		return;
	
	var editContact=null;
	try{editContact = eval('editContact' + contact.ContactIndex.toString());}
	catch(e){editContact=null;}
	
	if(editContact==null)
		return;

	editContact.loadContactObject(contact);
	editContact=null;
},
sort:function(sortColumn)
{
	this._UpdateImage.style.display='block';
	var imgObject;
	//true==ascending
	var newSortOrder=true;
	
	//the sort order will look at the current image selected for the column
	//if the image stype.display=='none', use the default sort order.which is always ascending
	//if it is not display=='none', 
	//  use the ascending order if 'icon_arrow_dn.gif' is displayed
	//  use the descending order if 'icon_arrow_up.gif is displayed
	//If the image is displayed, set the image in the opposite direction
	//if the image is not displayed, set it to the default direction
	switch(sortColumn)
	{
		case 'DisplayAs':
			imgObject=this._SortDisplayAsImage;
			break;

		case 'FirstName':
			imgObject=this._SortFirstNameImage;
			break;
			
		case 'LastName':
			imgObject=this._SortLastNameImage;
			break;
			
		case 'EmailAddress':
			imgObject=this._SortEmailImage;
			break;

		default:
			imgObject=null;
			break;
	}

	if(imgObject!=null)
	{
		if(imgObject.style.display!='none')
		{
			newSortOrder=(imgObject.src.toLowerCase().indexOf(this._ImgDown.toLowerCase())>=0);
		}
	}

		//SortContactList(string SortColumn, bool Ascending)
	PageMethods.SortContactList(sortColumn,newSortOrder,this.onContactUpdateComplete,this.onRefreshError);

	this._SortDisplayAsImage.style.display='none';
	this._SortFirstNameImage.style.display='none';
	this._SortLastNameImage.style.display='none';
	this._SortEmailImage.style.display='none';

	if(imgObject!=null)
	{
		imgObject.style.display='inline';
		if(newSortOrder==true)
			imgObject.src=this._ImgUp;
		else
			imgObject.src=this._ImgDown;
	}
	return false;
},
refresh:function(hideWhileUpdating)
{
	PageMethods.GetContactList(this.onContactUpdateComplete,this.onRefreshError);
	this._UpdateImage.style.display='block';
	
	if(true==hideWhileUpdating)
		this._ListDiv.style.display='none';
},
refreshComplete:function(contactList)
{
	listObject._LastSelected=null;
	
	listObject._UpdateImage.style.display='none';
	listObject._ListDiv.style.display='block';

	if(contactList==null)
		return;

	listObject._ListDiv.innerHTML=contactList.ContactList;
		
	switch(contactList.ContactSortColumn)
	{
		case 'DisplayAs':
			if(contactList.ContactSortAscending==true)
				listObject._SortDisplayAsImage.src=listObject._ImgUp;
			else
				listObject._SortDisplayAsImage.src=listObject._ImgDown;
			listObject._SortDisplayAsImage.style.display='inline';
			listObject._SortFirstNameImage.style.display='none';
			listObject._SortLastNameImage.style.display='none';
			listObject._SortEmailImage.style.display='none';
			break;

		case 'FirstName':
			if(contactList.ContactSortAscending==true)
				listObject._SortFirstNameImage.src=listObject._ImgUp;
			else
				listObject._SortFirstNameImage.src=listObject._ImgDown;
			listObject._SortDisplayAsImage.style.display='none';
			listObject._SortFirstNameImage.style.display='inline';
			listObject._SortLastNameImage.style.display='none';
			listObject._SortEmailImage.style.display='none';
			break;
			
		case 'LastName':
			if(contactList.ContactSortAscending==true)
				listObject._SortLastNameImage.src=listObject._ImgUp;
			else
				listObject._SortLastNameImage.src=listObject._ImgDown;
			listObject._SortDisplayAsImage.style.display='none';
			listObject._SortFirstNameImage.style.display='none';
			listObject._SortLastNameImage.style.display='inline';
			listObject._SortEmailImage.style.display='none';
			break;
			
		case 'EmailAddress':
			if(contactList.ContactSortAscending==true)
				listObject._SortEmailImage.src=listObject._ImgUp;
			else
				listObject._SortEmailImage.src=listObject._ImgDown;
			listObject._SortDisplayAsImage.style.display='none';
			listObject._SortFirstNameImage.style.display='none';
			listObject._SortLastNameImage.style.display='none';
			listObject._SortEmailImage.style.display='inline';
			break;
		
		default:
			listObject._SortDisplayAsImage.style.display='none';
			listObject._SortFirstNameImage.style.display='none';
			listObject._SortLastNameImage.style.display='none';
			listObject._SortEmailImage.style.display='none';
			break;
	}
	
},
onRefreshError:function(error)
{
	listObject._UpdateImage.style.display='none';
	listObject._ListDiv.style.display='inline';
	onError(error);
},
doubleClick:function(objSelected)
{
	try{page.resetLastClicked();}
	catch(e){}

	//if any text was selected by the double click, clear it.
	try{
		if (document.selection && document.selection.empty) 
			document.selection.empty();
	}
	catch(e){}

	try
	{
		this._LastSelected=objSelected;
		var contactID=objSelected.getAttribute(this._SelectedValueAttribute);
		if(isNaN(contactID))
		{
			page.set_ErrorMessage('Unable to load the selected contact');
			return;
		}
		try
		{
			var contactIndex=page.addEditContact(contactID);
			if(contactIndex>=0)
			{
				switch(contactIndex)
				{
					case(0):
						editContact0.loadContact(contactID,contactIndex);
						break;
					case(1):
						editContact1.loadContact(contactID,contactIndex);
						break;
					case(2):
						editContact2.loadContact(contactID,contactIndex);
						break;
					case(3):
						editContact3.loadContact(contactID,contactIndex);
						break;
					case(4):
						editContact4.loadContact(contactID,contactIndex);
						break;
					case(5):
						editContact5.loadContact(contactID,contactIndex);
						break;
				}
				this.selectCurrentOnly(objSelected);
			}
		}
		catch(e)
		{
			displayMessage(e);
		}
	}
	catch(e)
	{
		displayMessage(e);
	}
},
//////////////////////////////////////////////////////////////////////////////////////////////////////
//Rechecks all tabs to see if the corresponding g_objEditContacts have a contact id.  If not,
//makes the tab not visible
//////////////////////////////////////////////////////////////////////////////////////////////////////
resetTabs:function()
{
	for(i=0; i < this._MaxContactControls; i++)
	{
		if(g_objEditContacts[i].value.length==0)
			page.setTabVisible(i + this._FirstEditContactTabIndex, false);
	}
},
view:function()
{
	if(this.getLastSelected()==null)
		page.set_ErrorMessage('Select the contact you would like to view');
	else
		this.doubleClick(this._LastSelected);
},
//////////////////////////////////////////////////////////////////////////////////////////////////////
create:function()
{
	var contactIndex=page.addEditContact(-1);

	var editContact=null;
	if(contactIndex>=0)
	{
		switch(contactIndex)
		{
			case(0):
				editContact =editContact0;
				break;
			case(1):
				editContact =editContact1;
				break;
			case(2):
				editContact =editContact2;
				break;
			case(3):
				editContact =editContact3;
				break;
			case(4):
				editContact =editContact4;
				break;
			case(5):
				editContact =editContact5;
				break;
			default:
				return;
		}
	}
	editContact.create();
},
//////////////////////////////////////////////////////////////////////////////////////////////////////
//public static object[] DeleteContacts(int[] ContactIDs)
//////////////////////////////////////////////////////////////////////////////////////////////////////
deleteItems:function()
{
	var strContactIDs=this.getSelectedValues(true, true, FORMAT_ARRAY_ITEM_SEPERATOR);
	if(strContactIDs.length>0) 
	{
		this._UpdateImage.style.display='block';
		PageMethods.DeleteContacts(strContactIDs.split(FORMAT_ARRAY_ITEM_SEPERATOR),this.onContactUpdateComplete, this.onDeleteContactsError);
	}
	else if (strContactIDs.length==0)
		page.set_ErrorMessage('you have not selected any contacts to delete');

	this._LastSelected=null;
},
//////////////////////////////////////////////////////////////////////////////////////////////////////
onDeleteContactsError:function(oPanel,oEvent,flags)
{
	listObject._UpdateImage.style.display='none';
	listObject.refresh(true);
},
//////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////
//Exports the contacts in a zip file
//////////////////////////////////////////////////////////////////////////////////////////////////////
exportContacts:function()
{
	windowObject=window.open
	(
		"/ViewAttachment.aspx?" + PARAM_ATTACHMENT_EMAIL_ATTACHED_FILE_NAME + "=" + VALUE_CONTACT_EXPORT_FILE_NAME, 
		VALUE_CONTACT_EXPORT_FILE_NAME.replace('.',''),
		"personalbar=no, toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=no, resizable=yes, copyhistory=no"
	);

	if(windowObject==null)
	{
		page.set_ErrorMessage('Your browser has blocked popups.  You must enable popups for this web site to export contacts.');
	}
	else
		windowObject=null;
	return false;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
}

WebMail2.ListContacts.registerClass("WebMail2.ListContacts",WebMail2.ListBase);


