function LookupArgsClass()
{
	// public:
	//
	this.items = null;

}

//	lookupField: optional field to bind values
//	lookupStyle: multi/single/subject
//	lookupClass: file name in /Lookup/lookupxml - minus ext.
//	lookupTypes: CSV of object types (1,2,9)
//	lookupBrowse: 1/0 -- browse or search
//
function LookupObjects(lookupField, lookupStyle, lookupClass, lookupTypes, lookupBrowse, bindingColumns, additionalParams, showNew, showProp) {	
	if (lookupStyle == "") lookupStyle= "single";
	var url;
	url = fmCommonPath + "UI/Lookup/Lookup";
	url += lookupStyle;
	url += ".aspx";
	url += "?l=" + lookupClass;
	
	if (additionalParams) {
		if (additionalParams.charAt(0) != "&") {
			url+= "&";
		}
		url+= additionalParams;
	}
	
	if (showNew) {
		url += "&ShowNewButton=" + showNew;
	}

	if (showProp) {
		url += "&ShowPropButton=" + showProp;
	}


	var args = new LookupArgsClass();
	if (lookupField != null) {		
		args.items = lookupField.getElementsByTagName("SPAN");
	}

	
	var features= BuildFeatures(lookupStyle);
	
	if (features == null)
		return;

	//alert(url);return;
	var lookupItems= window.showModalDialog(url, args, features);
	
	if (lookupItems != null && lookupField != null) {
		BuildField(lookupField, lookupItems);
	}
	
	return lookupItems;	
}


function BuildFieldSpan(lookupField, lookupItems)
{
	var html = "";
	var len = lookupItems.items.length;
	for (var i = 0; i < len; ++i)
	{
		var item = lookupItems.items[i];

		html += (i > 0 ? " " : "");

		var e = parent.document.createElement("SPAN");
		
		e.className	= "lui";
		e.oid		= item.id;
		e.otype		= item.type;
		e.innerHTML	= item.html;
		e.onclick	= "fmOpenLookup();";
		
		html += e.outerHTML;
	}
	if (html.length == 0)
	{
		html = "&nbsp;";
	}
	return html;
}

function BuildField(lookupField, lookupItems) {	
	lookupField.innerHTML = BuildFieldSpan(lookupField, lookupItems);
}


function BuildFeatures(lookupStyle) {
	var height;
	var width;
	
	switch (lookupStyle) {
		case "multi":
			height = "460px";
			width = "520px";
			break;
		case "single":
			height = "488px";
			width = "498px";
			break;
		case "subject":
			height = "450px";
			width = "500px";
			break;
		default:
			alert("unknown lookup style - your properties xml is probably not set properly - " + lookupStyle);
			return null;
	}
	
	return "dialogHeight:" + height + " ;dialogWidth:" + width + ";resizable:yes;center:yes;status:no;help:no;scroll:no;";
}

//	open a lookup item
//
function fmOpenLookup() {
	var o= event.srcElement;
	if (o.tagName != "SPAN") return;
	var lSetName= o.parentElement.lookupclass;
	var lType= o.otype;
	var lID= o.oid;
	if (lSetName == undefined) return;
	var url= fmCommonPath + "UI/Lookup/LookupFormRunner.aspx?l=" + lSetName + "&o=" + lType + "&id=" + lID;
	if (typeof(openStdDlg) != "function") {alert("openStdDlg not found");return;}
	var res= openStdDlg(url, null, 700, 500);
	if (res != undefined && res != "") o.replaceAdjacentText("beforeEnd", res);
}




function ClearField(dataInputs)
{
	for (var di = 0; di < dataInputs.length; ++di)
	{
		dataInputs[di].value = "";
	}
}

function BindField(lookupItems, dataInputs)
{
	ClearField(dataInputs);

	var html = "";
	var len = lookupItems.items.length;

	for (var i = 0; i < len; ++i)
	{
		var item = lookupItems.items[i];
		
		//	look through the data inputs which are bound to this
		//	lookup and set the id where the type matches the input type		
		//
		for (var di = 0; di < dataInputs.length; ++di)
		{
			var input = dataInputs[di];
			
			if (input.otype == item.type)
			{
				input.value = item.id;
			}
			else
			{
				input.value = "";
			}
		}
	}
}

