var codeDebug = false;
var maxLocations = 1;
var noFocus = false;
var strSep = ",";

function multiLookup( type, keyword, textboxid, form, listboxid, isMulti, locfield, parentID ) {
	var locfield = locfield || "";
	var isMultiple = isMulti || false;
	var parentParam = "";
	if (parentID) {
		parentParam = '&parentID=' + parentID;
	} 
	if (isPrintable(keycode) || keycode==8) { // printable or backspace
		if (locfield != "") 
			form.elements[locfield].value = ""; // clear locationID before lookup
		ajaxRequestSender(	form,
							'/ajax/GetListByKeyword.do',
							'?searchKey='+keyword+'&type='+type+parentParam,
							null,
							multiPopInnerHTMLList,
							listboxid+','+form.name+','+locfield+','+textboxid+','+isMultiple,
							'POST', 
							true);
	} else if ( keycode == 39 || keycode == 40 ) { // down arrow
		try { document.getElementById(listboxid).firstChild.focus(); } catch(e) {}
	}
}

function multiPopInnerHTMLList(ajaxXHR, ajaxFRM, ajaxRHP) {
	var list = ajaxXHR.responseXML.getElementsByTagName('list').item(0); 
	var params = ajaxRHP.split(","); 
	var targetId	= params[0];
	var formname	= params[1];
	var locfield	= params[2];
	var textfield	= params[3];
	var isMulti		= params[4];
	var target = document.getElementById(targetId); 
	if (list != null) {
		var items = list.childNodes; 
		if (items.length > 0) {
			var htmlString = "";
			for (var i=0; i < items.length; i++) { 
				var name = items[i].firstChild.nodeValue;
				var id = items[i].getAttribute("value");
				htmlString += '<a href="#" id="link-'+i+'" onclick="multiUpdateTextbox(\''+escape(name)+'\',\''+formname+'\',\''+textfield+'\',\''+targetId+'\','+isMulti+',\''+id+'\',\''+locfield+'\' );return false;">' + name + '</a> ';
			}
			target.style.display = "block";
			target.innerHTML = htmlString;
			attachEvents(targetId);
		} else {
			target.innerHTML = "";
			target.style.display = "none";
			if (locfield) 
				clearFormField( formname, locfield ); 
		}
	}
}
//function updateLocation( index, lid, lname, formname, locfield, textfield ) {

function multiUpdateTextbox( name, formname, boxid, listid, isAppend, eid, eidfield ) {
	var textbox = document.getElementById(boxid);
	var pos = (textbox.value.lastIndexOf(strSep) != -1) ? textbox.value.lastIndexOf(strSep)+2 : 0;
	textbox.value = (isAppend) ? textbox.value.substring(0,pos) + unescape(name)+", " : unescape(name);
	if (eid && eidfield) {
		document.forms[formname].elements[eidfield].value = eid;
	}
	if (!noFocus) {
		multiCloseList(listid,true);
		currLinkFocus = -1;
		textbox.focus();
	}
	try {
		if ( getCheckedValue($F("msg.strPostTo")) == 'all' ) {
			updateNetworkForLocations();
		}
	} catch(e) {
		debug("Field 'msg.strPostTo' doesn't exist!");
	}
}

function multiCloseList(id, isSelf) {
	var isSelf = isSelf || false;
	var list = $(id);
	if (typeof(list) != 'undefined' ) {
		if (!isSelf) {
			noFocus = true;
			try {
				list.getElementsByTagName('a')[0].click();
			} catch(e) {
				// list is already closed, links don't exist
			}
			noFocus = false;
		}
		list.innerHTML = "";
		list.style.display="none";
	}
}

function multiGetFieldValue(field, isCSV, sep) {
	var sep = sep || strSep;
	if (isCSV) {
		return field.value.substring(field.value.lastIndexOf(sep)+1).ltrim();
	} else {
		return field.value;
	}
}
