var selectOpt = "";
var numOptions = 0;
var isAddrDlgOpen = false;
var AddrDlgKey = "";
var selField = "";
var isSubmitted = false;
var updateInterval;
var curQry = "";

function openAddressDialog(pXPos, pYPos, pField) {
	if(isAddrDlgOpen) {
		closeAddressDialog();
	}
	initHTML = "<div class=\"popUp\" id=\"AddressDialog\"><div id=\"AddressList\">Loading Addresses..."+
			"<br><a href=\"javascript:closeAddressDialog();\">Close</a></div></div>";
	createPopUp(initHTML);
	popDiv = document.getElementById('AddressDialog');
	popDiv.style.top = pXPos;
	popDiv.style.left = pYPos;
	popDiv.focus();
	if(AddrDlgKey=="") {
		AddrDlgKey = pField;
	}
	isAddrDlgOpen = true;
	document.onkeydown=KeyCheck;
	for(i=0; i<document.OrderEntry.elements.length; i++){
		if(document.OrderEntry.elements[i].name==pField) {
			curQry = document.OrderEntry.elements[i].value;
			updateInterval = setInterval ("updatePopup()", 100);
			makePOSTRequest('AJAXAddressList.asp', 'qry='+encodeURI(document.OrderEntry.elements[i].value)+'&fieldName='+pField, 'AddressList', 'AddressDialog');
		}
	}
}

function refreshAddressDialog(pField, startVal) {
	document.onkeydown=KeyCheck;
	for(i=0; i<document.OrderEntry.elements.length; i++){
		if(document.OrderEntry.elements[i].name==pField) {
			makePOSTRequest('AJAXAddressList.asp', 'qry='+encodeURI(document.OrderEntry.elements[i].value)+'&start='+startVal+'&fieldName='+pField, 'AddressList', 'AddressDialogRefresh');
		}
	}
}

function closeAddressDialog() {
	closePopUp("AddressList");
	isAddrDlgOpen = false;
	clearInterval(updateInterval);
	for(i=0; i<document.OrderEntry.elements.length; i++){
		if(document.OrderEntry.elements[i].name==AddrDlgKey) {
			document.OrderEntry.elements[i].focus();
		}
	}
	AddrDlgKey = "";
}

function initList() {
	var doc = document.getElementsByTagName("body")[0].getElementsByTagName("*");
	var optCount = 0;
	for (var i = 0; i < doc.length; i++){
		if(doc[i].id.substring(0, 3)=="opt") {
			optCount++;
			if(doc[i].className=="on") {
				selectOpt = doc[i].id;
			}
		}
		if(doc[i].id=="fieldName") {
			var retVal = doc[i].innerHTML;
		}
	}
	numOptions = optCount;
	return retVal;
}

function initList2() {
	var doc = document.getElementsByTagName("body")[0].getElementsByTagName("*");
	var optCount = 0;
	selectOpt = null;
	for (var i = 0; i < doc.length; i++){
		if(doc[i].id.substring(0, 3)=="opt") {
			optCount++;
			if(doc[i].className=="on2") {
				selectOpt = doc[i].id;
			}
		}
		if(doc[i].id=="fieldName") {
			var retVal = doc[i].innerHTML;
		}
	}
	numOptions = optCount;
	return retVal;
}

function setActiveOpt(optID) {

	initList();
	var curOpt = document.getElementById(selectOpt);

	curOpt.setAttribute("class", "off"); 
	curOpt.setAttribute("className", "off");

	var selOpt = document.getElementById(optID); 

	selOpt.setAttribute("class", "on"); 
	selOpt.setAttribute("className", "on");
	selOpt.scrollIntoView(false);
	
	selectOpt = optID;
	
	return; 
}

function setActiveOptMouse(optID) {

	initList();
	var curOpt = document.getElementById(selectOpt);

	curOpt.setAttribute("class", "off"); 
	curOpt.setAttribute("className", "off");

	var selOpt = document.getElementById(optID); 

	selOpt.setAttribute("class", "on"); 
	selOpt.setAttribute("className", "on");
	
	selectOpt = optID;
	
	return; 
}

function setActiveOptMouse2(optID) {

	var selOpt = document.getElementById(optID); 

	selOpt.setAttribute("class", "on2");
	selOpt.setAttribute("className", "on2");

	return; 
}

function clearActiveOptMouse2(optID) {
	var curOpt = document.getElementById(optID);

	curOpt.setAttribute("class", "off2");
	curOpt.setAttribute("className", "off2");
}

function getSelOpt() {

	strOpt=selectOpt.substring(3,selectOpt.length);

	return parseInt(strOpt);

}

function KeyCheck(e) {
	e = e? e : window.event; 
	var KeyID = (window.event) ? window.event.keyCode : e.which;
	if(isAddrDlgOpen) {
		switch(KeyID) {
			case 13:
				updateForm();
				return false;
				break;
			case 38:
				var intCurOpt = getSelOpt();
				if(intCurOpt>1) {
					var intNewOpt = intCurOpt-1;
					setActiveOpt('opt'+intNewOpt.toString()); 
				}
				break;
			case 40:
				var intCurOpt = getSelOpt();
				if(intCurOpt<numOptions) {
					var intNewOpt = intCurOpt+1;
					setActiveOpt('opt'+intNewOpt.toString()); 
				}
				break;
			case 16:
				break;
			case 27:
				closeAddressDialog();
				document.onkeydown=KeyCheck;
				return false;
				break;
			default:
				//document.getElementById("tmpOut").innerHTML = KeyID;
				//refreshAddressDialog(AddrDlgKey);
				break;
		}
		for(i=0; i<document.OrderEntry.elements.length; i++){
			if(document.OrderEntry.elements[i].name==AddrDlgKey) {
				document.OrderEntry.elements[i].focus();
			}
		}
		document.onkeydown=KeyCheck;
	}
	else {
		if(selField!="") {
			if(KeyID==13) {
				if(selField=="PBusiness") {
					openAddressDialog(156, 126, 'PBusiness');
				}
				if(selField=="DBusiness") {
					openAddressDialog(156, 494, 'DBusiness');
				}
				if(selField=="Login") {
					document.Login.submit();
				}
				if(selField=="Relogin") {
					makePOSTRequest('Authenticate.asp', 'IsLogin=Yes&UserID='+document.Relogin.UserID.value+'&Password='+document.Relogin.Password.value, 'ReloginMsg', 'Relogin');
				}
			}
			if(KeyID==40) {
				addrFieldList="|DBusiness|DAddress1|DAddress2|DCity|DState|DZip|DPhone|DInstructions|DAttention"
				if(addrFieldList.indexOf(selField)>0) {
					document.OrderEntry.Service.focus();
				}
				addrFieldList="|Pieces|Weight|Ref1|Ref2"
				if(addrFieldList.indexOf(selField)>0) {
					document.getElementById('Continue').focus();
				}
			}
		}
	}

	if(KeyID == 13) {
		e.cancelBubble = true;
		e.returnValue = false;
		if (e.preventDefault) {
			e.preventDefault();
		}
	}
}

function updatePopup() {
	if(isAddrDlgOpen) {
		for(i=0; i<document.OrderEntry.elements.length; i++){
			if(document.OrderEntry.elements[i].name==AddrDlgKey) {
				if(document.OrderEntry.elements[i].value!=curQry) {
					curQry=document.OrderEntry.elements[i].value;
					refreshAddressDialog(AddrDlgKey, '1');
				}
			}
		}
	}
	else {
		clearInterval(updateInterval);
	}
}

function moveToRecord(startVal) {
	if(isAddrDlgOpen) {
		for(i=0; i<document.OrderEntry.elements.length; i++){
			if(document.OrderEntry.elements[i].name==AddrDlgKey) {
				refreshAddressDialog(AddrDlgKey, startVal);
			}
		}
	}
	else {
		clearInterval(updateInterval);
	}
}

function getNthListVal(pList, pDelim, pNumVal) {
	var vList = pList;
	var vVal = "";
	var vPos = 0;
	
	for(k=1; k<=pNumVal; k++) {
		vPos = vList.indexOf(pDelim);
		if(vPos >= 0) {
			vVal = vList.substring(0,vPos);
			vList = vList.substring(vPos+1);
		}
		else {
			vVal = vList;
			vList = "";
		}
	}
	return vVal;
}

function updateForm() {
	var vPrefix = AddrDlgKey.substring(0,1);
	var vFieldList = "AddressID|Business|Address1|Address2|City|State|Zip|Phone|Attention";
	var vValueList = "";
	if(document.all) {
		vValueList = document.getElementById('val'+selectOpt).innerText;
	}
	else {
		vValueList = document.getElementById('val'+selectOpt).textContent;
	} 
	var vField = "";
	var vValue = "";

	for(i=1; i<=9; i++) {
		vField = getNthListVal(vFieldList, "|", i);
		vValue = getNthListVal(vValueList, "|", i);
		document.forms.OrderEntry[vPrefix+vField].value = decodeURIComponent(vValue);
	}

	closeAddressDialog();
	document.onkeydown=KeyCheck;
}

function clearForm(pPrefix) {
	var vFieldList = "AddressID|Business|Address1|Address2|City|State|Zip|Phone|Attention|Instructions";

	for (i=1; i<=10; i++) {
		document.forms.OrderEntry[pPrefix + getNthListVal(vFieldList, "|", i)].value = "";
	}
}

function swapAddresses() {
	var f, pID, pBus, pAddr1, pAddr2, pCity, pState, pZip, pPhone, pAttn, pInst;
	
	f = document.OrderEntry;
	pID = f.PAddressID.value;
	pBus = f.PBusiness.value;
	pAddr1 = f.PAddress1.value;
	pAddr2 = f.PAddress2.value;
	pCity = f.PCity.value;
	pState = f.PState.value;
	pZip = f.PZip.value;
	pPhone = f.PPhone.value;
	pAttn = f.PAttention.value;
	pInst = f.PInstructions.value;

	f.PAddressID.value = f.DAddressID.value;
	f.PBusiness.value = f.DBusiness.value;
	f.PAddress1.value = f.DAddress1.value;
	f.PAddress2.value = f.DAddress2.value;
	f.PCity.value = f.DCity.value;
	f.PState.value = f.DState.value;
	f.PZip.value = f.DZip.value;
	f.PPhone.value = f.DPhone.value;
	f.PAttention.value = f.DAttention.value;
	f.PInstructions.value = f.DInstructions.value;

	f.DAddressID.value = pID;
	f.DBusiness.value = pBus;
	f.DAddress1.value = pAddr1;
	f.DAddress2.value = pAddr2;
	f.DCity.value = pCity;
	f.DState.value = pState;
	f.DZip.value = pZip;
	f.DPhone.value = pPhone;
	f.DAttention.value = pAttn;
	f.DInstructions.value = pInst;
}

function addBatchAddress(strAddr) {
	var tmpStr;
	if(document.getElementById('distmsg')) {
		removeBatchAddress('distmsg');
	}
	var addrStr = document.getElementById('addr'+strAddr).innerHTML;
	var divIdName = getNthListVal(addrStr, "|", 1);
	var d = document.getElementById(divIdName);
	if(d == null) {
		tmpStr = getNthListVal(addrStr, "|", 2);

		var addrHTML = '<table border="0" cellspacing="0" cellpadding="0" style="margin-top:3px;" width="288" class="off2" onmouseover="setActiveOptMouse2(\'sel' + divIdName + '\');" ';
		addrHTML = addrHTML + 'onmouseout="clearActiveOptMouse2(\'sel' + divIdName + '\');" onclick="removeBatchAddress(\'' + divIdName + '\');" id="sel' + divIdName + '"><tr><td>';
		addrHTML = (tmpStr=='') ? addrHTML + '' : addrHTML + tmpStr;
		addrHTML = addrHTML + '</td><td rowspan="5" width="30"><img src="images/cancel.png" imageborder="0" width="16" height="16"></td></tr><tr><td>';
		tmpStr = getNthListVal(addrStr, "|", 3);
		addrHTML = (tmpStr=='') ? addrHTML + '' : addrHTML + tmpStr;
		tmpStr = getNthListVal(addrStr, "|", 4);
		addrHTML = (tmpStr=='') ? addrHTML + '' : addrHTML + ' ' + tmpStr;
		addrHTML = addrHTML + '</td></tr><tr><td>';
		tmpStr = getNthListVal(addrStr, "|", 5);
		addrHTML = (tmpStr=='') ? addrHTML + '' : addrHTML + tmpStr + ', ';
		tmpStr = getNthListVal(addrStr, "|", 6);
		addrHTML = (tmpStr=='') ? addrHTML + '' : addrHTML + tmpStr + ' ';
		tmpStr = getNthListVal(addrStr, "|", 7);
		addrHTML = (tmpStr=='') ? addrHTML + '' : addrHTML + tmpStr;
		addrHTML = addrHTML + '</td></tr></table>';
		var distListDiv = document.getElementById('addrDistList');
		var newdiv = document.createElement('div');
		newdiv.setAttribute('id',divIdName);
		newdiv.innerHTML = addrHTML;
		distListDiv.appendChild(newdiv);
	}
	else {
		alert('This address already exists in the current distribution list.');
	}
}

function removeBatchAddress(addrID) {
	var d = document.getElementById('addrDistList');
	var olddiv = document.getElementById(addrID);
	d.removeChild(olddiv);
	olddiv = document.getElementById('distmsg');
	if(olddiv) {
		d.removeChild(olddiv);
	}
}
