var activeControlName;
var openDDLB = new Array();
var nameTimer = '';

function addClientBox(controlName)
{
	var obj = document.getElementById(controlName + 'Div');
	var firstTextbox = document.getElementById(controlName + '-1');

	var cssClass = firstTextbox.className;
	var cssStyle = firstTextbox.style;
	
	var index = 1;
	
	while(document.getElementById(controlName + '-' + (index++)) != undefined){}
	
	index -= 1;
	
	var node = document.createElement('input');

	node.setAttribute('id',controlName + '-' + index);
	node.setAttribute('type','text');
	node.setAttribute('name',controlName + '-' + index);
	
	if(cssClass != undefined)
	{
		node.setAttribute('class',cssClass);
		node.setAttribute('className',cssClass);
	}else{
		node.setAttribute('class','formField');
		node.setAttribute('className','formField');
	}

	if(cssStyle != undefined)
	{
		node.setAttribute('style',cssStyle);
	}
		
	node.onkeyup=function(){lookupName(this)};

	obj.appendChild(node);
	
	node = document.createElement('input');
	
	node.setAttribute('id',controlName + '-' + index + 'Id');
	node.setAttribute('type','hidden');
	node.setAttribute('name',controlName + '-' + index + 'Id');

	obj.appendChild(node);
	
}

function lookupName(controlObj, objOffset)
{
	
	if(controlObj.value != null && controlObj.value.length > 0)
	{
		var nameEntered = controlObj.value;
		
		if(nameEntered == '')
		{
			document.getElementById(controlObj.name + 'Id').value = '0';
		}
		
		var xmlHttp = ajaxFunction();

		xmlHttp.onreadystatechange=function()
		{
			if(xmlHttp.readyState==4)
			{
				var clientSearch = JSON.parse(xmlHttp.responseText);
				if(clientSearch.status == 'OK')
				{
					var nameArray = clientSearch.clientList;
					
					dropDownNames(controlObj.name, nameArray, objOffset);
				}
			}
		}

		if(nameEntered != '')
		{
			xmlHttp.open('GET', '/client/ClientList_Json.action?name=' + escape(nameEntered) + '&time=' + (new Date().getTime()), true);
			xmlHttp.send(null);
		}
	}else{
		closeNames(controlObj.name);
	}
}

function dropDownNames(controlName, nameArray, objOffset)
{
	var controlObj = document.getElementById(controlName);
	var hiddenObj = document.getElementById(controlName + 'Id');

	if(objOffset == undefined)
	{
		objOffset = 0;
	}
	
	var divContents='<a href="#" target="newClient" onmouseout="closeList(\'' + controlName +'\');" onmouseover="stopCloseList(\'' + controlName +'\');" onclick="newClient(\'' + controlName +'\'); return false;" class="nameBox"><div class="nameBox"><strong>Add New Client</strong></div></a>';
	for(var x = 0 ; x < nameArray.length ; x++)
	{
		divContents += '<a href="#" onmouseout="closeList(\'' + controlName +'\');" onmouseover="stopCloseList(\'' + controlName +'\');" onclick="updateName(\'' + controlName +'\',\'' + nameArray[x].clientId + '\',\'' + nameArray[x].firstName + ' ' + nameArray[x].lastName + '\'); return false;" class="nameBox"><div class="nameBox">' + nameArray[x].firstName + ' ' + nameArray[x].lastName + '</div></a>';
	}

	if(nameArray.length == 1)
	{
		controlObj.style.backgroundColor = '#FFFFFF';
		hiddenObj.value = nameArray[0].clientId;
	}else{
		controlObj.style.backgroundColor = '#FDB0B0';
		hiddenObj.value = '0';
	}
	var clientList = document.getElementById('popoverListDiv');
	
	clientList.innerHTML = divContents;
	

	clientList.style.display = 'block';
	clientList.style.width = controlObj.offsetWidth;
	clientList.style.zIndex = "1705";

	var point = findPos(controlObj);

	if(navigator.userAgent.indexOf('MSIE') !=-1)
	{
		clientList.style.top = (point.y + objOffset + 9) + 'px';
	}else{
		clientList.style.top = (point.y + objOffset + 15) + 'px';
	}
	clientList.style.left = point.x + 'px';
}

function closeList(controlName)
{
	openDDLB[controlName] = setTimeout('closeNames(\'' + controlName + '\');', 800);
}

function stopCloseList(controlName)
{
	if(openDDLB[controlName] != null)
	{
		clearTimeout(openDDLB[controlName]);
	}
}

function closeNames(controlName)
{
	var popupDiv = document.getElementById('popoverListDiv');
	var controlObj = document.getElementById(controlName);
	var hiddenObj = document.getElementById(controlName + 'Id');
	
	popupDiv.style.display='none';

	if(hiddenObj.value != undefined && hiddenObj.value > 0)
	{
		controlObj.style.backgroundColor = '#FFFFFF';
	}else{
		controlObj.style.backgroundColor = '#FDB0B0';
	}
}

function updateName(controlName, clientId, clientName)
{
	var controlObj = document.getElementById(controlName);
	var hiddenObj = document.getElementById(controlName + 'Id');
	var popupDiv = document.getElementById('popoverListDiv');

	controlObj.value=clientName;
	hiddenObj.value=clientId;
	popupDiv.style.display='none';
	
	if(clientId > 0)
	{
		controlObj.style.backgroundColor = '#FFFFFF';
	}else{
		controlObj.style.backgroundColor = '#FDB0B0';
	}
}

function newClient(controlName)
{
	activeControlName = controlName;

	document.getElementById('nc_firstName').value = '';
	document.getElementById('nc_lastName').value = '';
	document.getElementById('nc_emailAddress').value = '';
	document.getElementById('nc_telephone').value = '';
	document.getElementById('nc_fax').value = '';

	var newClientDiv = document.getElementById('newClientDiv');

	var popoverListDiv = document.getElementById('popoverListDiv');

	var yOffset = window.pageYOffset ? window.pageYOffset : document.documentElement.scrollTop;
	var pageWidth = window.innerWidth ? window.innerWidth : document.body.clientWidth;
	
	newClientDiv.style.top = (yOffset + 50) + 'px';
	//newClientDiv.style.left = ((pageWidth / 2) - 300) + 'px';

	newClientDiv.style.display = 'block';
	
	disableBackground();
}

function saveNewContact()
{
	var fName = document.getElementById('nc_firstName').value;
	var lName = document.getElementById('nc_lastName').value;
	var email = document.getElementById('nc_emailAddress').value;
	var phone = document.getElementById('nc_telephone').value;
	var fax = document.getElementById('nc_fax').value;
	
	var xmlHttp = ajaxFunction();
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			var results = JSON.parse(xmlHttp.responseText);
			
			if(results.status == 'OK')
			{
				addClient(results.clientId, fName + ' ' + lName);
				closeClient();
			}else{
				if (results.message == null || results.message == "")
				{
					alert('Error');
				}
				else
				{
					alert(results.message);
				}
			}
		}
	}

	var sendUrl = '/client/EditClient_SaveJSON.action?clientId=-1&firstName=' + fName + '&lastName=' + lName + '&emailAddress=' + email + '&phoneNumber=' + phone + '&faxNumber=' + fax
	xmlHttp.open('GET', sendUrl, true);
	xmlHttp.send(null);

}

function closeClient()
{
	document.getElementById('newClientDiv').style.display='none';

	enableBackground();
}






function addAgentBox(controlName)
{
	var obj = document.getElementById(controlName + 'Div');
	var firstTextbox = document.getElementById(controlName + '-1');
	
	var cssClass = firstTextbox.className;
	var cssStyle = firstTextbox.style;
	
	var index = 1;
	
	while(document.getElementById(controlName + '-' + (index++)) != undefined){}
	
	index -= 1;
	
	var node = document.createElement('input');

	node.setAttribute('id',controlName + '-' + index);
	node.setAttribute('type','text');
	node.setAttribute('name',controlName + '-' + index);
	
	if(cssClass != undefined)
	{
		node.setAttribute('class',cssClass);
		node.setAttribute('className',cssClass);
	}else{
		node.setAttribute('class','formField');
		node.setAttribute('className','formField');
	}

	if(cssStyle != undefined)
	{
		node.setAttribute('style',cssStyle);
	}
		
	node.onkeyup=function(){lookupAgentName(this)};

	obj.appendChild(node);
	
	node = document.createElement('input');
	
	node.setAttribute('id',controlName + '-' + index + 'Id');
	node.setAttribute('type','hidden');
	node.setAttribute('name',controlName + '-' + index + 'Id');

	obj.appendChild(node);
}

function dropDownAgentNames(controlName, nameArray, objOffset, selectFunction)
{
	var controlObj = document.getElementById(controlName);
	var hiddenObj = document.getElementById(controlName + 'Id');
	
	if(controlObj.value == '')
	{
		document.getElementById(controlObj.name + 'Id').value = '0';
	}

	var divContents='';
	
	if(objOffset == undefined)
	{
		objOffset = 14;
	}
	
	if(selectFunction == undefined)
	{
		selectFunction = '';
	}

	for(var x = 0 ; x < nameArray.length ; x++)
	{
		divContents += '<a href="#" onmouseout="closeList(\'' + controlName +'\');" onmouseover="stopCloseList(\'' + controlName +'\');" onclick="updateAgentName(\'' + controlName +'\',\'' + nameArray[x].agentId + '\',\'' + nameArray[x].firstName + ' ' + nameArray[x].lastName + '\',\'' + selectFunction + '\'); updatePropertyList(); return false;" class="nameBox"><div class="nameBox"><strong>' + nameArray[x].firstName + ' ' + nameArray[x].lastName + '</strong><br/>' + nameArray[x].brokerageIdName + '<br />' + nameArray[x].officeCity + ', ' + nameArray[x].officeState + '</div></a>';
	}

	if(nameArray.length == 1)
	{
		controlObj.style.backgroundColor = '#FFFFFF';
		hiddenObj.value = nameArray[0].agentId;
	}else{
		hiddenObj.value = '0';
		controlObj.style.backgroundColor = '#FDB0B0';
	}

	var agentList = document.getElementById('popoverListDiv');

	agentList.innerHTML = divContents;

	agentList.style.display = 'block';
	agentList.style.width = controlObj.offsetWidth;

	var point = findPos(controlObj);

	agentList.style.top = (point.y + objOffset) + 'px';
	agentList.style.left = point.x + 'px';
}

function lookupAgentName(controlObj, objOffset, selectFunction)
{
	if(controlObj.value != null && controlObj.value.length > 0)
	{
		try
		{
			clearTimeout(nameTimer);
			nameTimer = setTimeout("openAgentNameList('" + controlObj.name + "', '" + controlObj.value + "', " + objOffset + ", '" + selectFunction + "');",500);
		}catch(err){
			alert("Error description: " + err.description);
		}
	}else{
		clearTimeout(nameTimer);
		closeAgentNames(controlObj.name);
		try
		{
			document.getElementById(controlObj.id + 'Id').value = '0';
		}catch(err){ 
			alert("Error description: " + err.description);			
		}
	}
}

function openAgentNameList(controlName, controlValue, objOffset, selectFunction)
{
	var xmlHttp = ajaxFunction();
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			if(xmlHttp.status == 200)
			{
				var results = JSON.parse(xmlHttp.responseText);
				if(results.status == 'OK')
				{
					nameTimer = null;
					dropDownAgentNames(controlName, results.agentMasterList, objOffset, selectFunction);
				}else{
					nameTimer = null;
					closeAgentNames(controlName);
				}
			}
		}
	}

	xmlHttp.open('GET', '/agent/AgentList_Json.action?name=' + controlValue + '&time=' + (new Date().getTime()), true);
	xmlHttp.send(null);
}

function closeAgentNames(controlName)
{
	var hiddenObj = document.getElementById(controlName + 'Id');
	var popupDiv = document.getElementById(controlName + 'Popup');
	
	if(hiddenObj.value != undefined && hiddenObj.value != 0)
	{
		controlObj.style.backgroundColor = '#FFFFFF';
	}else{
		controlObj.style.backgroundColor = '#FDB0B0';
	}

	popupDiv.style.display='none';
}

function updateAgentName(controlName, agentId, agentName, selectFunction)
{
	var controlObj = document.getElementById(controlName);
	var hiddenObj = document.getElementById(controlName + 'Id');
	var popupDiv = document.getElementById('popoverListDiv');

	controlObj.value=agentName;
	hiddenObj.value=agentId;
	popupDiv.style.display='none';

	if(hiddenObj.value != undefined && hiddenObj.value != 0)
	{
		controlObj.style.backgroundColor = '#FFFFFF';
	}else{
		controlObj.style.backgroundColor = '#FDB0B0';
	}
	
	if(selectFunction != '')
	{
		eval(selectFunction);
	}
}

function popupAgentName(controlObj)
{
	activeControlName = controlObj.name;
	var hiddenObj = document.getElementById(activeControlName + 'Ids');
	
	var xmlHttp = ajaxFunction();

	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			var agentListPopup = document.getElementById('popoverListDiv');

			agentListPopup.innerHTML = xmlHttp.responseText;

			var yOffset = window.pageYOffset ? window.pageYOffset : document.body.scrollTop;
			var pageWidth = window.innerWidth ? window.innerWidth : document.body.clientWidth;
	
			agentListPopup.style.top = (yOffset + 100);
			agentListPopup.style.left = (pageWidth / 2) - 300;

			agentListPopup.style.display = 'block';
			
			disableBackground();
		}
	}

	xmlHttp.open('GET', '/contract/ContractAgentList_Popup.action?agentIds=' + hiddenObj.value + '&name=&time=' + (new Date().getTime()), true);
	xmlHttp.send(null);
}

function updateAgentNamePopup()
{
	var hiddenObj = document.getElementById(activeControlName + 'Ids');
	var agentNameObj = document.getElementById('agentName');

	var xmlHttp = ajaxFunction();

	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			var results = JSON.parse(xmlHttp.responseText);
			if(results.status == 'OK')
			{
				updateAgentNameAgents(results.agentMasterList);
				updateAgentNameSuggestions(results.suggestedAgentList);
			}else{
				alert('Error');
			}
		}
	}

	xmlHttp.open('GET', '/contract/ContractAgentList_Json.action?agentIds=' + hiddenObj.value + '&name=' + escape(agentNameObj.value) + '&time=' + (new Date().getTime()), true);
	xmlHttp.send(null);
}

function closeAgentName()
{
	var agentListPopup = document.getElementById('popoverListDiv');

	agentListPopup.innerHTML = '';

	agentListPopup.style.display = 'none';

	enableBackground();
}

function updateAgentNameSuggestions(suggestedAgentList)
{
	var suggestedAgentDiv = document.getElementById('suggestedAgentList');
	
	var content = '<table width="275" class="contentListTable" cellpadding="0" cellspacing="0">';
		
	for(var x = 0 ; x < suggestedAgentList.length ; x++)
	{
		content += '<tr>' +

		'<td class="contentRow' + ((x%2==0)?'':'Odd') + '">' +
		suggestedAgentList[x].firstName + ' ' + suggestedAgentList[x].lastName + 
		'</td>' +
		'<td class="contentRow' + ((x%2==0)?'':'Odd') + '">' +
		'<a href="#' + suggestedAgentList[x].agentId + '" onclick="addAgent(\'' + suggestedAgentList[x].agentId + '\'); return false;">Add</a>' +
		'</td>' +
		'</tr>';
	}

	content += '</table>';

	suggestedAgentDiv.innerHTML = content;
}

function updateAgentNameAgents(agentMasterList)
{
	var agentMasterDiv = document.getElementById('agentMasterList');
	var controlObj = document.getElementById(activeControlName);
	
	var content = '<table width="275" class="contentListTable" cellpadding="0" cellspacing="0">';
	
	controlObj.value = '';
	
	for(var x = 0 ; x < agentMasterList.length ; x++)
	{
		content += '<tr>' +
		'<td class="contentRow' + ((x%2==0)?'':'Odd') + '">' +
		agentMasterList[x].firstName + ' ' + agentMasterList[x].lastName + 
		'</td>' +
		'<td class="contentRow' + ((x%2==0)?'':'Odd') + '">' +
		'<a href="#' + agentMasterList[x].agentId + '" onclick="removeAgent(\'' + agentMasterList[x].agentId + '\'); return false;">Remove</a>' +
		'</td>' +
		'</tr>';
		
		if(x > 0)
		{
			controlObj.value += ', ';
		}
		controlObj.value += agentMasterList[x].firstName + ' ' + agentMasterList[x].lastName;
	}

	content += '</table>';

	agentMasterDiv.innerHTML = content;
}

function addAgent(agentId)
{
	var hiddenObj = document.getElementById(activeControlName + 'Ids');
	
	if(hiddenObj.value != undefined && hiddenObj.value.length > 0)
	{	
		var ids = new Array();
		ids = hiddenObj.value.split(',');
		
		ids[ids.length] = agentId;

		var hiddenValue = '';
		for(var x = 0 ; x < ids.length ; x++)
		{
			if(x > 0)
			{
				hiddenValue += ',';
			}
			hiddenValue += ids[x];
		}
	}else{
		hiddenValue = agentId;
	}
	
	hiddenObj.value = hiddenValue;
	
	updateAgentNamePopup();
}

function removeAgent(agentId)
{
	var hiddenObj = document.getElementById(activeControlName + 'Ids');
	
	if(hiddenObj.value != undefined && hiddenObj.value.length > 0)
	{	
		var ids = new Array();
		ids = hiddenObj.value.split(',');
		
		ids[ids.length] = agentId;

		var hiddenValue = '';
		for(var x = 0 ; x < ids.length ; x++)
		{
			if(ids[x] != agentId)
			{
				if(hiddenValue.length > 0)
				{
					hiddenValue += ',';
				}
				hiddenValue += ids[x];
			}
		}
	}
	
	hiddenObj.value = hiddenValue;
	
	updateAgentNamePopup();
}

/*******************************************************************************/


function popupClientName(controlObj)
{
	activeControlName = controlObj.name;
	var hiddenObj = document.getElementById(activeControlName + 'Id');
	
	var xmlHttp = ajaxFunction();

	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			var clientListPopup = document.getElementById('popoverListDiv');

			clientListPopup.innerHTML = xmlHttp.responseText;

			var yOffset = window.pageYOffset ? window.pageYOffset : document.body.scrollTop;
			var pageWidth = window.innerWidth ? window.innerWidth : document.body.clientWidth;
	
			clientListPopup.style.top = (yOffset + 100);
			clientListPopup.style.left = (pageWidth / 2) - 300;

			clientListPopup.style.display = 'block';
			
			disableBackground();
		}
	}

	xmlHttp.open('GET', '/contract/ContractClientList_Popup.action?clientIds=' + hiddenObj.value + '&name=&time=' + (new Date().getTime()), true);
	xmlHttp.send(null);
}

function updateClientNamePopup()
{
	var hiddenObj = document.getElementById(activeControlName + 'Id');
	var clientNameObj = document.getElementById('clientName');

	var xmlHttp = ajaxFunction();

	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			var results = JSON.parse(xmlHttp.responseText);
			if(results.status == 'OK')
			{
				updateClientNameClients(results.clientMasterList);
				updateClientNameSuggestions(results.suggestedClientList);
			}else{
				alert('Error');
			}
		}
	}

	xmlHttp.open('GET', '/contract/ContractClientList_Json.action?clientIds=' + hiddenObj.value + '&name=' + escape(clientNameObj.value) + '&time=' + (new Date().getTime()), true);
	xmlHttp.send(null);
}

function closeClientName()
{
	var clientListPopup = document.getElementById('popoverListDiv');

	clientListPopup.innerHTML = '';

	clientListPopup.style.display = 'none';

	enableBackground();
}

function updateClientNameSuggestions(suggestedClientList)
{
	var suggestedClientDiv = document.getElementById('suggestedClientList');
	
	var content = '<table width="275" class="contentListTable" cellpadding="0" cellspacing="0">';
		
	for(var x = 0 ; x < suggestedClientList.length ; x++)
	{
		content += '<tr>' +

		'<td class="contentRow' + ((x%2==0)?'':'Odd') + '">' +
		suggestedClientList[x].firstName + ' ' + suggestedClientList[x].lastName + 
		'</td>' +
		'<td class="contentRow' + ((x%2==0)?'':'Odd') + '">' +
		'<a href="#' + suggestedClientList[x].clientId + '" onclick="addClient(\'' + suggestedClientList[x].clientId + '\',\'' + suggestedClientList[x].firstName + ' ' + suggestedClientList[x].lastName + '\'); return false;">Add</a>' +
		'</td>' +
		'</tr>';
	}

	content += '</table>';

	suggestedClientDiv.innerHTML = content;
}

function updateClientNameClients(clientMasterList)
{
	var clientMasterDiv = document.getElementById('clientMasterList');
	var controlObj = document.getElementById(activeControlName);
	
	var content = '<table width="275" class="contentListTable" cellpadding="0" cellspacing="0">';
	
	controlObj.value = '';
	
	for(var x = 0 ; x < clientMasterList.length ; x++)
	{
		content += '<tr>' +
		'<td class="contentRow' + ((x%2==0)?'':'Odd') + '">' +
		clientMasterList[x].firstName + ' ' + clientMasterList[x].lastName + 
		'</td>' +
		'<td class="contentRow' + ((x%2==0)?'':'Odd') + '">' +
		'<a href="#' + clientMasterList[x].clientId + '" onclick="removeClient(\'' + clientMasterList[x].clientId + '\'); return false;">Remove</a>' +
		'</td>' +
		'</tr>';
		
		if(x > 0)
		{
			controlObj.value += ', ';
		}
		controlObj.value += clientMasterList[x].firstName + ' ' + clientMasterList[x].lastName;
	}

	content += '</table>';

	clientMasterDiv.innerHTML = content;
}

function addClient(clientId, name)
{
	var nameObj = document.getElementById(activeControlName);
	var hiddenObj = document.getElementById(activeControlName + 'Id');
	
	hiddenObj.value = clientId;
	
	nameObj.value = name;
	
//	updateClientNamePopup();
}

function removeClient(clientId)
{
	var hiddenObj = document.getElementById(activeControlName + 'Id');
	
	hiddenObj.value = '0';
	
	updateClientNamePopup();
}
