﻿// JavaScript functions for Contacts module user controls.

/* AccessControlListFields.ascx */
function aclFields_onLoad(prefix)
{
	aclInherit_onClick(prefix);
	aclEveryoneRead_onClick(prefix);
	aclEveryoneWrite_onClick(prefix);
}

function aclInherit_onClick(prefix)
{
	var inherit = document.getElementById(prefix + "_InheritACL");
	var fields = document.getElementById(prefix + "_ACLFields");

	if (inherit && fields)
		fields.style.display = inherit.checked ? "none" : "block";
}

function aclEveryoneRead_onClick(prefix)
{
	var everyoneRead = document.getElementById(prefix + "_EveryoneRead");
	var authenticatedRead = document.getElementById(prefix + "_AuthenticatedRead");

	if (everyoneRead && authenticatedRead)
	{
		authenticatedRead.disabled = everyoneRead.checked;
		if (everyoneRead.checked)
			authenticatedRead.checked = true;
	}
}

function aclEveryoneWrite_onClick(prefix)
{
	var everyoneWrite = document.getElementById(prefix + "_EveryoneWrite");
	var authenticatedWrite = document.getElementById(prefix + "_AuthenticatedWrite");

	if (everyoneWrite && authenticatedWrite)
	{
		authenticatedWrite.disabled = everyoneWrite.checked;
		if (everyoneWrite.checked)
			authenticatedWrite.checked = true;
	}
}


/* BioFields.ascx */
function bioFields_name_onChange(prefix)
{
	var field = document.getElementById(prefix + "_DisplayName");
	field.value = document.getElementById(prefix + "_LastName").value + ", " + document.getElementById(prefix + "_FirstName").value;
}

/* CompaniesSearcher.ascx */
function companiesSearcher_selectedValues(prefix)
{
	var field, fields;
	var values = new Array();
	var grid = document.getElementById(prefix + "_Grid");
	if (grid)
	{
		fields = grid.getElementsByTagName("input");
		for (var i=0; i < fields.length; i++)
		{
			field = fields[i];
			if (field.checked)
				values[values.length] = new UniqueObjectDescriptor(field.value, field.getAttribute("companyname"));
		}
	}

	return values;
}


/* CompanyContactSearcher.ascx */
function CompanyContactDescriptor(companyID, companyName, personID, personName)
{
	this.company = new UniqueObjectDescriptor(companyID, companyName);
	this.person = new UniqueObjectDescriptor(personID, personName);
}

function companyContactSearcher_selectedValues(prefix)
{
	var field, fields;
	var values = new Array();
	var grid = document.getElementById(prefix + "_Grid");
	if (grid)
	{
		fields = grid.getElementsByTagName("input");
		for (var i=0; i < fields.length; i++)
		{
			field = fields[i];
			if (field.checked)
				values[values.length] = new CompanyContactDescriptor(field.getAttribute("companyid"), field.getAttribute("companyname"), field.getAttribute("personid"), field.getAttribute("personname"));
		}
	}

	return values;
}

/* CompanySelector.ascx */
function companySelector_enableValidator(prefix,enable)
{
	uniqueObjectSelector_enableValidator(prefix + "_Selector",enable);
}

/* ContactSelector.ascx */
function contactSelector_onLoad(prefix)
{
	contactSelector_contactType_onClick(prefix);
}

function contactSelector_contactType_onClick(prefix)
{
	var isBusiness = document.getElementById(prefix + "_IsBusiness").checked;
	document.getElementById(prefix + "_BusinessFields").style.display = (isBusiness ? "block" : "none");
	document.getElementById(prefix + "_IndividualFields").style.display = (isBusiness ? "none" : "block");
}

function contactSelector_onPersonSelect(prefix, personID, personName)
{
	contactSelector_onSelect(prefix, 0, "", personID, personName);
}

function contactSelector_onSelect(prefix, companyID, companyName, personID, personName)
{
	var contactDisplay = "";

	if (companyName.length)
		contactDisplay = companyName + (personName.length > 0 ? " (" + personName + ")" : "");

	document.getElementById(prefix + "_ContactDisplay").value = contactDisplay;
	document.getElementById(prefix + "_PersonDisplay").value = personName;
	document.getElementById(prefix + "_HiddenCompanyID").value = companyID;
	document.getElementById(prefix + "_HiddenCompanyName").value = companyName;
	document.getElementById(prefix + "_HiddenPersonID").value = personID;
	document.getElementById(prefix + "_HiddenPersonName").value = personName;
}

/* EmailAddresses/EmailAddressField.ascx */
function emailAddressField_emailAddress_onChange(prefix)
{
	var field = document.getElementById(prefix + "_EmailAddress");
	var message = document.getElementById(prefix + "_Message");
	if (field && field.value.length)
	{
		HuronOne.Web.WebServices.ContactsService.GetPeopleNamesForEmailAddress(field.value, emailAddressField_check_onComplete, emailAddressField_check_onError);
	}
}	

function emailAddressField_check_onComplete(data)
{
	var index = data.indexOf(":")
	var count = parseInt(data.substring(0,index));
	var names = data.substring(index + 1,data.length);
	if (count > 0)
		alert("Warning: " + count + " contact" + (count > 1 ? "s are" : " is") + " already associated with this e-mail address.\n\nContact Names:\n\n  * " + names.replace("|","\n  * "));
}

function emailAddressField_check_onError()
{
	; //do nothing
}

function balance_setValue(value)
{	
	document.getElementById("<%=Me.ClientID%>_Balance").value = value.toFixed(2);
	document.getElementById("<%=Me.RequestedAmount.ClientID%>").value = value.toFixed(2);
	progressIcon_toggle(false);
}

function progressIcon_toggle(show)
{
	document.getElementById("<%=Me.ClientID%>_ProgressIcon").style.visibility = show ? "visible" : "hidden";
}

/* PeopleSearcher.ascx */
function peopleSearcher_selectedValues(prefix)
{
	var field, fields;
	var values = new Array();
	var grid = document.getElementById(prefix + "_Grid");
	if (grid)
	{
		fields = grid.getElementsByTagName("input");
		for (var i=0; i < fields.length; i++)
		{
			field = fields[i];
			if (field.checked)
				values[values.length] = new UniqueObjectDescriptor(field.value, field.getAttribute("personname"));
		}
	}

	return values;
}

/* PersonFields/MediaFields.ascx */
function mediaFields_isMediaContact_onClick(prefix)
{
	var field = document.getElementById(prefix + "_IsMediaContact");
	if (field)
	{
		var fields = document.getElementById(prefix + "_MediaFields");
		fields.style.display = field.checked ? "block" : "none";
	}
}

/* PersonSelector.ascx */
function personSelector_enableValidator(prefix,enable)
{
	uniqueObjectSelector_enableValidator(prefix + "_Selector",enable);
}

/* PeopleSelector2.ascx */
function peopleSelector2_everyone_onClick(prefix)
{
	var checked = document.getElementById(prefix + "_Everyone").checked;
	document.getElementById(prefix + "_SelectionFields").style.display = checked ? "none" : "block";
}

/* PersonTag.ascx */
function personTag_emailSent(prefix, args)
{
	var field = document.getElementById(prefix + "_EmailSentI");
	if (field)
	{
		field.value = args ? args : "true";
		//hack for firefox (yes, FIREFOX needs a hack!)
		window.setTimeout("__doPostBack('" + field.name + "', '')",0);
	}
}

/* RelationshipsManager.ascx */
function relationshipsManager_relationship_onChange(prefix)
{
	var field = document.getElementById(prefix + "_Relationship");
	document.getElementById(prefix + "_AnniversaryFields").style.display = (field.value == "Husband" || field.value == "Wife" || field.value == "Spouse") ? "block" : "none";
}

/* SignIn/WizardSignIn.ascx */
function wizardSignIn_phoneNumbers_onValidate(sender,args)
{
	var prefix = sender.id.substring(0, sender.id.lastIndexOf("_"));
	
	//ensure at least one phone number has been entered
	args.IsValid = (phoneNumberFields_getValue(prefix + "_HomePhone").length > 0) ||
					(phoneNumberFields_getValue(prefix + "_MobilePhone").length > 0) ||
					(phoneNumberFields_getValue(prefix + "_WorkPhone").length > 0);					
}
