﻿
// This js file needs to be included when any of the schema js files are used.
// It contains the following items of information:
// 1. Arrays containing parent/child information with the view name as look up.
// 2. Global array containing the schema option list values with the view name as look up.

// Variables
var g_schemaDefinition = new Object();
g_schemaDefinition.STATE_INIT = 0;
g_schemaDefinition.STATE_FINALIZING = 1;
g_schemaDefinition.STATE_FINALIZED = 2;
g_schemaDefinition.state = g_schemaDefinition.STATE_INIT;
g_schemaDefinition.views = new Array();
g_schemaDefinition.viewLoaders = new Array();
g_schemaDefinition.viewCallbacks = new Array();
g_schemaDefinition.pendingFields = new Array();
g_schemaDefinition.globalCallbacks = new Array();
g_schemaDefinition.initCallbacks = new Array();
g_schemaDefinition.globalCounter = 0;
g_schemaDefinition.fieldState = new Array();
g_schemaDefinition.traceExecution = 0;
g_schemaDefinition.traceInfo = new Array();
g_schemaDefinition.optionListSizingFactor = 0.6
g_schemaDefinition.optionListMaxSize = 30
g_schemaDefinition.schemaBaseUrl = "/idc/resources/schema/";
g_schemaDefinition.TREE_FIELD_TYPE = "tree";
g_schemaDefinition.idCounter = 0;

// Variables for document profiling
var g_docProfiles = new Object();
g_docProfiles.callbacks = new Array();
g_docProfiles.lists = new Array();


function idctrace(message)
{
	if (g_schemaDefinition.traceExecution)
	{
		var timestamp = new Date();
		var prefix = padInteger(timestamp.getHours(), 2) + ":"
			+ padInteger(timestamp.getMinutes(), 2) + ":"
			+ padInteger(timestamp.getSeconds(), 2) + "."
			+ padInteger(timestamp.getTime()%1000, 4) + "\t";
		message = prefix + message;
		g_schemaDefinition.traceInfo[
			g_schemaDefinition.traceInfo.length] = message;
		if (g_schemaDefinition.traceWindow &&
			!g_schemaDefinition.traceWindow.closed)
		{
			appendScriptTraceMessages(
				g_schemaDefinition.traceInfo.length-1,
				g_schemaDefinition.traceWindow,
				g_schemaDefinition.traceInfo);
			var theWindow = g_schemaDefinition.traceWindow;
			var anchor = theWindow.document.createElement("a");
			theWindow.document.body.appendChild(anchor);
			anchor.focus();
			focus();
		}
	}
}

function clearScriptTraces()
{
	g_schemaDefinition.traceInfo = new Array();
    if (g_schemaDefinition.traceWindow ||
		!g_schemaDefinition.traceWindow.closed)
	{
		var theWindow = g_schemaDefinition.traceWindow;
		var body = theWindow.document.body;
		while (body.childNodes.length)
		{
			var node = body.childNodes.item(0);
			body.removeChild(node);
		}
	}
}

function appendSeparator(theDocument)
{
	var div = theDocument.createElement("div");
	div.style.background = "red";
	var text = theDocument.createTextNode("\u00A0");// non-breaking space
	div.appendChild(text);
	theDocument.body.appendChild(div);
}

function displayScriptTraces()
{   
	var theWindow;
    if (!g_schemaDefinition.traceWindow ||
		g_schemaDefinition.traceWindow.closed)
	{
		theWindow = 
			window.open('', "idcTraceWindow", "");
		g_schemaDefinition.traceWindow = theWindow;
		if (theWindow.document.body.childNodes.length)
		{
			appendSeparator(theWindow.document);
		}
		appendScriptTraceMessages(0, theWindow, 
			g_schemaDefinition.traceInfo);
	}
	else
	{
		theWindow = g_schemaDefinition.traceWindow;
		var theDocument = theWindow.document;
		appendSeparator(theDocument);
	}
	var anchor = theWindow.document.createElement("a");
	theWindow.document.body.appendChild(anchor);
	anchor.focus();
	focus();
}

function appendScriptTraceMessages(startIndex, theWindow, theList)
{
	var theDocument = theWindow.document;
    for (var i = startIndex; i < theList.length; i++)
    {
        var msg = theList[i];
        var paragraph = theDocument.createElement("p");
        var text = theDocument.createTextNode(msg);
        paragraph.appendChild(text);
        if (i%5 == 4)
        {
            paragraph.style.background = "#C0C0C0";
        }
        theDocument.body.appendChild(paragraph);
    }
}

function reloadSchema()
{
	var scriptNode = document.createElement("script");
	scriptNode.src = g_schemaDefinition.schemaBaseUrl + "base.js";
	document.body.appendChild(scriptNode);
}

// Use "schema" as prefix for function name to avoid function global name collisions.
function schemaStartsWith(str, value)
{
	return (str.indexOf(value) == 0);
}

function schemaTrim(value)
{
	if (typeof value == "string")
	{
		var i = 0;
		if (value.length > 0)
		{
	 		for (i = 0; value.charAt(i) <= " "; i++);
	 		value = value.substring(i,value.length);
	 	}
	 	if (value.length > 0)
	 	{
	 		for (i = value.length-1; value.charAt(i) <= " "; i--);
	 		value = value.substring(0, i + 1);
	 	}
	}
	return value;
}

function schemaToLower(value)
{
	if (typeof value == "string")
	{
		value = value.toLowerCase();
	}
	return value;
}

function getOrCreateSchemaArray(container, name, nameField)
{
	var key = name;
	if (nameField)
	{
		key = jsFilename(name);
	}
	var obj = container[key];
	if (typeof obj == "undefined")
	{
		obj = container[key] = new Array();
		if (nameField)
		{
			obj[nameField] = name;
		}
	}
	return obj;
}

function padInteger(intValue, length)
{
	var rc = "" + intValue;
	while (rc.length < length)
	{
		rc = "0" + rc;
	}
	return rc;
}

function convertToBool(value, defaultValue)
{
	if (typeof value == "undefined")
	{
		return defaultValue;
	}

	if (typeof value == "string")
	{
		value = schemaTrim(value.toLowerCase());
		if (value.length == 0)
		{
			return defaultValue;
		}
		if (defaultValue)
		{
			return !(schemaStartsWith(value,"0") || schemaStartsWith(value, "f") 
				|| schemaStartsWith(value, "n"));
		}
		return (schemaStartsWith(value, "1") || schemaStartsWith(value, "t") || 
			schemaStartsWith(value, "y") || schemaStartsWith(value, "-1"));
	}
	
	return value;
}

function BasicTreeControlImplementor()
{
	function init(theFieldId, theFieldDef)
	{
		fieldId = theFieldId;
		fieldDef = theFieldDef;
		idctrace("BasicTreeControlImplementor.init(" + fieldId + ", " + fieldDef + ")");
		fieldState = getFieldState(fieldId, fieldDef);
		fieldState.treeControlImplementor = this;
		createInitialControls();
	}
	this.init = init;

	function createInitialControls()
	{
		var span = document.getElementById(fieldId + "_span");
		if (!span)
		{
			idctrace("BasicTreeControlImplementor.createInitialControls() "
				+ "couldn't find object " + fieldId + "_span");
			return;
		}

		var spanList = document.getElementsByName(fieldDef.fieldName + "_displaySpan");
		var displaySpan = null;
		for (var i = 0; i < spanList.length; i++)
		{
			// This needs to be fixed to use the id, 
			// but std_page doesn't know the id yet.
			displaySpan = spanList.item(i);
		}
		fieldState.currentSelectionElement = displaySpan;

		fieldState.valueField = document.createElement("input");
		fieldState.valueField.name = fieldDef.fieldName;

		fieldState.optionListField = document.createElement("select");
		fieldState.optionListField.id = fieldId;
		fieldState.optionListField.name = fieldDef.fieldName + "_Options";
		if (its.ie)
		{
			function onchangeFunction()
			{
				updateDependentChoices(fieldState.optionListField,
					fieldDef.fieldName, 1);
			}
			fieldState.optionListField.setAttribute("onchange", onchangeFunction);
		}
		else
		{
			var onchangeScript = 
				"updateDependentChoices(document.getElementById('" + fieldId + "'), '" 
				+ fieldDef.fieldName + "', 1)";
			fieldState.optionListField.setAttribute("onchange", onchangeScript);
		}
		var type = fieldDef.optionListType;
		var fieldType = "hidden";
		switch (type)
		{
		case "choice":
			break;
		case "chunval":
			break;
		case "combo":
			fieldType = "text";
			break;
		case "multi":
			fieldType = "text";
			break;
		case "multi2":
			break;
		}
		fieldState.valueField.type = fieldType;
		span.appendChild(fieldState.valueField);

		if (fieldState.optionListField) 
		{
			span.appendChild(fieldState.optionListField);
			resetField(fieldState.optionListField, 1, lc("wwSchemaLoadingWalues"));
		}
	}
	this.createInitialControls = createInitialControls;
}

function registerTreeControl(fieldId, fieldName)
{
	var fieldDef = getFieldDefinition(fieldName);
	if (!fieldDef)
	{
		idctrace("registerTreeControl() field '" + fieldName + "' not defined");
		return;
	}
	var implementorName = fieldDef.treeControlImplementor;
	if (!implementorName)
	{
		implementorName = "BasicTreeControlImplementor";
	}

	idctrace("instantiating " + implementorName + " for field " + fieldName);
	var implementor = eval("new " + implementorName + "()");
	implementor.init(fieldId, fieldDef);
	idctrace("successfully instantiated " + implementorName + " for field " + fieldName);
}

function updateDependentChoices(editField, fieldName, isUserEvent)
{
	var onchangeScript;
	idctrace("updateDependentChoices() with field " + editField.id +
		", fieldName " + fieldName);
	try
	{
		if (editField && editField.onchange)
		{
			onchangeScript = editField.onchange;
			editField.onchange = null;
		}
		if (typeof fieldName == "undefined")
		{
			fieldName = editField.name;
		}
		fieldName = removeFieldNameSuffixes(fieldName);
		var fieldDef = getFieldDefinition(fieldName);
		var fieldState = null;
		if (fieldDef)
		{
			fieldState = getFieldState(editField.id, fieldDef);
		}
		if (fieldDef && fieldDef.optionListType == "multi2" && editField.value)
		{
			var hiddenField = editField.form.elements.namedItem(
				fieldName);
			var sep = fieldDef.multiselectStorageSeparator;
			if (isUserEvent)
			{
				if (hiddenField.value)
				{
					hiddenField.value += sep + editField.value;
				}
				else
				{
					hiddenField.value = editField.value;
				}
				updateMultiselectDisplay(editField, fieldName);
			}
		}
		var childList = g_schemaDefinition.childFields[fieldName];
		for (var i = 0; childList && i < childList.length; i++)
		{
			var childName = childList[i];
			if (!isUserEvent && fieldName == childName)
			{
				continue;
			}
			var childDef = getFieldDefinition(childName);
			var parentExpression = childDef.parentKeyExpression;
			var parentValue = null;
			if (parentExpression)
			{
				parentValue = eval(parentExpression);
			}
			else
			{

				var relationshipDef = getRelationshipDefinition
					(childDef.dependentRelationship);
				parentValue = getParentValue(editField, fieldName, 
					relationshipDef);
			}
			
			// AJK consider allowing the intermediate field
			// to be something other than a select field and
			// continuing intellegently.
			var childField = getSelectField(childDef.fieldName, editField.form);
			if (!childField)
			{
				idctrace("the childField '" + childDef.fieldName + 
					"' is not defined on the form '" +
					editField.form.name + "'");
				continue;
			}
			if (!childField.id)
			{
				idctrace("the childField '" + childDef.fieldName + 
					"' does not have an id on the form '" +
					editField.form.name + "'");
				continue;
			}
			var childState = getFieldState(childField.id);
			if (!parentValue || parentValue.value.length == 0)
			{
				if (childField) 
				{
					resetField(childField, 1, "", "");
					updateDependentChoices(childField, childName, isUserEvent);
				}
				g_schemaDefinition.pendingFields[childField.id] = null;
				continue;
			}
			var childValuePathInfo;
			if (isUserEvent || 
				!childDef.treeDef || childState.selection.length == 0)
			{
				if (!parentValue.value) idctrace("parentValue undefined");
				childValuePathInfo = constructViewPathInfo(
					childDef.viewName, childDef.dependentRelationship, 
					parentValue.value);
				resetSelection(childField);
				updateDependentChoice(childDef.viewName, 
					childDef.dependentRelationship, parentValue.value, 
					childValuePathInfo, childField, childDef.currentValue);
			}
		}

		if (fieldDef && fieldDef.treeDef)
		{
			var treeDef = fieldDef.treeDef;
			var nextLevelInfo = null;
			var lastNode = treeDef[treeDef.length-1];
			var isRecursiveTree = (lastNode[0] == "i"
				&& lastNode[1] == 0);

			var parentValue = new Array();
			if (!fieldState.selection)
			{
				fieldState.selection = new Array();
			}
			if (isUserEvent)
			{
				var isDependent = 0;
				if (isUpEvent(editField, fieldName))
				{
					fieldState.selection.pop();
					if (fieldState.selection.length == 0)
					{
						isDependent = convertToBool(fieldDef.isDependentList, false);
						if (isDependent)
						{
							var relationship = getRelationshipDefinition
								(fieldDef.dependentRelationship);
							parentValue = getParentValue(editField, 
								fieldDef.dependentOnField, relationship);
							nextLevelInfo = new Array();
							nextLevelInfo.relationshipDef = relationship;
							nextLevelInfo.viewDef = treeDef[0][1];
						}
						else if (isRecursiveTree)
						{
							if (lastNode.length > 2)
							{
								parentValue.value = lastNode[2];
							}
							else
							{
								parentValue.value = "0";
							}
						}
					}
					else
					{
						parentValue.value = 
							fieldState.selection[fieldState.selection.length-1];
					}
					if (!isDependent)
					{
						nextLevelInfo = computeTreeInfoForDepth(
							treeDef, fieldState.selection.length-1);
					}
				}
				else
				{
					nextLevelInfo = computeTreeInfoForDepth(treeDef, 
						fieldState.selection.length);
					if (!nextLevelInfo)
					{
						parentValue = getFieldValue(editField);
						if (parentValue)
						{
							if (fieldState.selection.length*2-1 != treeDef.length)
							{
								fieldState.selection[fieldState.selection.length] 
									= parentValue;
							}
							else
							{
								fieldState.selection[fieldState.selection.length-1] 
									= parentValue;
							}
						}
						updateTreeSelection(editField, fieldName);
						updateTreeDisplay(editField, fieldName);
						return;
					}

					parentValue = getParentValue(editField, fieldName, 
						nextLevelInfo.relationshipDef);
					if (parentValue.value)
					{
						fieldState.selection[fieldState.selection.length] = parentValue.value;
					}
				}
				if (isRecursiveTree || fieldState.selection.length > 0 || isDependent)
				{
					if (parentValue.value)
					{
						var valuePathInfo = constructViewPathInfo(
							nextLevelInfo.viewDef.viewName,
							nextLevelInfo.relationshipDef.relationName,
							parentValue.value);
						updateDependentChoice(nextLevelInfo.viewDef.viewName, 
							nextLevelInfo.relationshipDef.relationName,
							parentValue.value, valuePathInfo, editField, "", 1);
					}
				}
				else
				{
					var theValues = getViewValuesFromCache(nextLevelInfo.viewDef.viewName);
					if (theValues)
					{
						publishViewValues(new Array(
							publishViewValues, nextLevelInfo.viewDef.viewName, 
							editField.id, ""));
					}
					else
					{
						registerViewCallback(
							jsFilename(nextLevelInfo.viewDef.viewName), 
							new Array(publishViewValues, 
							nextLevelInfo.viewDef.viewName, editField.id, ""));
						if (editField)
						{
							resetField(editField, 1, lc("wwSchemaLoadingValues"), "");
							addGoUpOption(editField);
						}
						var viewPathInfo = constructViewPathInfo(
							nextLevelInfo.viewDef.viewName);
						loadViewValues(new Array(loadViewValues,
							viewPathInfo.url, editField.id));
					}
				}
			}
			updateTreeSelection(editField, fieldName);
			updateTreeDisplay(editField, fieldName);
		}
	}
	finally
	{
		if (editField && onchangeScript)
		{
			editField.onchange = onchangeScript;
		}
	}
		
	return;
}

function computeTreeInfoForDepth(treeDef, selectionDepth)
{
	var index;
	if (selectionDepth == -1)
	{
		index = 1;
	}
	else
	{
		index = selectionDepth*2+1;
	}
	if (index >= treeDef.length) 
	{
		var lastEntry = treeDef[treeDef.length-1];
		if (lastEntry[0] == "i")  // We have a recursive tree
		{
			var loopIndex = lastEntry[1];
			index -= loopIndex;
			index %= (treeDef.length-loopIndex-1);
			index += loopIndex;
		}
		else // we're at the bottom of the tree
		{
			return;
		}
	}
	var rc = new Array();
	rc.relationshipDef = treeDef[index][1];
	if (selectionDepth == -1)
	{
		rc.viewDef = treeDef[0][1];
	}
	else
	{
		var nextType = treeDef[index+1][0];
		if (nextType == "i")
		{
			rc.viewDef = treeDef[treeDef[index+1][1]][1];
		}
		else
		{
			rc.viewDef = treeDef[index+1][1];
		}
	}
	return rc;
}

function clone(obj)
{
	var rc = new Array();
	for (member in obj)
	{
		rc[member] = obj[member];
	}
	return rc;
}

function updateDependentChoice(viewName, relationshipName, 
	parentValue, childValuePathInfo, field, defaultValue, isTreeChild)
{
	var theValues = getViewValuesFromCache(viewName, 
		relationshipName, parentValue);
	if (theValues == null)
	{
		registerViewCallback(childValuePathInfo.path, new Array(
			publishViewValues, viewName, 
			field.id, defaultValue,
			relationshipName, parentValue));
		var fieldState = getFieldState(field.id);
		if (field && fieldState && !fieldState.isBusy)
		{
			resetField(field, 1, lc("wwSchemaLoadingValues"), ""); 
			if (isTreeChild)
			{
				addGoUpOption(field);
			}
		}
		loadViewValues(new Array(loadViewValues, 
			childValuePathInfo.url, field.id));
	}
	else
	{
		idctrace("republishing based on values already retrieved from " 
			+ childValuePathInfo.path);
		publishViewValues(new Array(
			publishViewValues, viewName, 
			field.id, defaultValue,
			relationshipName, parentValue));
	}
}

function updateTreeSelection(field, fieldName, targetField)
{
	if (!targetField)
	{
		targetField = getField(fieldName, field.form);
	}
	if (!targetField)
	{
		idctrace("unable to find targetField named " + fieldName);
		return;
	}

	var fieldDefinition = getFieldDefinition(fieldName);
	var fieldState = getFieldState(field.id, fieldDefinition);

	if (fieldDefinition.updateTreeStorageHandler)
	{
		return fieldDefinition.updateTreeStorageHandler(field, fieldName);
	}

	if (convertToBool(fieldDefinition.storeSelectionPath, false))
	{
		var finalValue = "";
		for (var i = 0; i < fieldState.selection.length; i++)
		{
			var theText = fieldState.selection[i];
			if (i > 0)
			{
				finalValue += fieldState.treeNodeStorageSeparator;
			}
			finalValue += theText;
		}
		targetField.value = finalValue;
	}
	else
	{
		if (fieldState.selection.length > 0)
		{
			targetField.value = fieldState.selection[
				fieldState.selection.length-1];
		}
		else
		{
			targetField.value = "";
		}
	}
}

function updateTreeDisplay(field, fieldName)
{
	var fieldDefinition = getFieldDefinition(fieldName);
	var fieldState = getFieldState(field.id, fieldDefinition);

	if (field && field.id)
	{
		g_schemaDefinition.pendingFields[field.id] = null;
	}

	if (fieldDefinition.updateTreeDisplayHandler)
	{
		return fieldDefinition.updateTreeDisplayHandler(field, fieldName);
	}

	if (!convertToBool(fieldDefinition.showSelectionPath, false))
	{
		return;
	}

	if (!fieldState.currentSelectionElement)
	{
		fieldState.currentSelectionElement = 
			document.createElement("span");
		field.parentNode.insertBefore(
			fieldState.currentSelectionElement,
			field.nextSibling);
	}

	while (fieldState.currentSelectionElement.childNodes.length > 0)
	{
		var childNode = fieldState.currentSelectionElement.childNodes.item(0);
		fieldState.currentSelectionElement.removeChild(childNode);
	}

	var lastNode = fieldDefinition.treeDef[fieldDefinition.treeDef.length-1];
	var isRecursiveTree = (lastNode[0] == "i"
		&& lastNode[1] == 0);
	var isDependentList = convertToBool(fieldDefinition.isDependentList, false);
	fieldState.currentSelectionDisplayText = "";
	var treeDefinition = fieldDefinition.treeDef;
	for (var i = 0; i < fieldState.selection.length; i++)
	{
		var theText = fieldState.selection[i];
		if (i == 0 && !isRecursiveTree && !isDependentList)
		{
			var tmp = getViewValueFromCache(
				treeDefinition[0][1].viewName,
				null, null, theText);
			if (tmp)
			{
				theText = getDisplayString(tmp, 
					treeDefinition[0][1], theText);
			}
			else
			{
				// AJK finish this
				var pathInfo = constructViewPathInfo(
					treeDefinition[0][1].viewName,
					null, null, theText);
			}
		}
		else
		{
			var levelInfo = computeTreeInfoForDepth(
				treeDefinition, i-1);
			var parentValue;
			if (i > 0)
			{
				parentValue = fieldState.selection[i-1];
			}
			else
			{
				if (isDependentList)
				{
					var parentField = getField(
						fieldDefinition.dependentOnField, field.form);
					var relationshipDef = getRelationshipDefinition
						(fieldDefinition.dependentRelationship);
					parentValue = getParentValue(parentField, 
						fieldDefinition.dependentOnField,
						relationshipDef);
					if (parentValue && parentValue.value)
					{
						parentValue = parentValue.value;
						levelInfo.relationshipDef = relationshipDef;
					}
					else
					{
						parentValue = "";
					}
				}
				else
				{
					if (lastNode.length > 2)
					{
						parentValue = lastNode[2];
					}
					else
					{
						parentValue = "0";
					}
				}
			}
			var tmp = getViewValueFromCache(
				levelInfo.viewDef.viewName,
				levelInfo.relationshipDef.relationName,
				parentValue, theText);
			if (tmp)
			{
				theText = getDisplayString(tmp, levelInfo.viewDef, theText);
			}
			else
			{
				var pathInfo = constructViewPathInfo(levelInfo.viewDef.viewName,
					levelInfo.relationshipDef.relationName, parentValue);
				registerViewCallback(pathInfo.path, new Array(callbackTwo,
					updateTreeDisplay, field, fieldName));
				loadViewValues(new Array(loadViewValues, pathInfo.url, field.id));
				return;
			}
		}
		fieldState.currentSelectionDisplayText += theText;
		var textNode = document.createTextNode(theText);
		fieldState.currentSelectionElement.appendChild(textNode);
		if (i+1 < fieldState.selection.length)
		{
			textNode = document.createTextNode(
				fieldState.treeNodeDisplaySeparator);
			fieldState.currentSelectionElement.appendChild(textNode);
			fieldState.currentSelectionDisplayText +=
				fieldState.treeNodeDisplaySeparator;
		}
	}
}

function callbackTwo(callback)
{
	(callback[1])(callback[2], callback[3]);
}

function updateMultiselectDisplay(editField, fieldName)
{
	var theSpanId = editField.id + " display";
	var theSpan = document.getElementById(theSpanId);
	if (!theSpan)
	{
		return;
	}
	while (theSpan.childNodes && theSpan.childNodes.length > 0)
	{
		theSpan.removeChild(theSpan.firstChild);
	}
	var fieldDef = getFieldDefinition(fieldName);
	var storageSep = fieldDef.multiselectStorageSeparator;
	var displaySep = fieldDef.multiselectDisplaySeparator;
	var displaySepNode = document.createTextNode(displaySep);
	
	var hiddenField = editField.form.elements.namedItem(fieldName);
	var value = hiddenField.value;
	var displayObjects = new Array();
	var valueArray = parseMultiselectValue(value, storageSep);
	for (var i = 0; i < valueArray.length; i++)
	{
		// AJK update this to handle a dependent multiselect list
		var value = valueArray[i];
		var tmp = getViewValueFromCache(
			fieldDef.viewName, null, null, value);
		var viewDef = getViewDefinition(fieldDef.viewName);
		var displayString = getDisplayString(tmp, viewDef, "");
		if (!displayString)
		{
			displayString = value;
		}
		if (i > 0)
		{
			displayObjects[displayObjects.length] = 
				displaySepNode.cloneNode(false);
		}
		var text = document.createTextNode(displayString);
		var textSpan = document.createElement("span");
		textSpan.appendChild(text);
		textSpan.title = value;
		displayObjects[displayObjects.length] = textSpan;
		var img = document.createElement("img");
		img.src = httpWebRoot + "images/closebox.gif";
		displayObjects[displayObjects.length] = img;
		img.style.width = "1em";
		img.style.height = "1em";
		img.style.position = "relative";
		img.style.bottom = ".5em";
		img.title = lc("wwRemoveValue", displayString);
		img.onclick = handleRemoveClick;
		// AJK encode this more carefully
		img.id = getNewId(editField.id + " " + i); 
	}
	for (var i = 0; i < displayObjects.length; i++)
	{
		theSpan.appendChild(displayObjects[i]);
	}
}

function handleRemoveClick(event, id)
{
	var target;
	if (event)
	{
		target = event.target;
	}
	else 
	{
		if (id)
		{
			target = document.getElementById(id);
		}
		else
		{
			target = this;
		}
	}
	if (!id)
	{
		id = target.id;
	}
	
	var index = id.lastIndexOf(" ");
	if (index < 0)
	{
		idctrace("bad id '" + id + "'");
		return;
	}
	id = id.substring(0, index);
	index = id.lastIndexOf(" ");
	if (index < 0)
	{
		idctrace("bad id '" + id + "'");
		return;
	}
	var value = id.substring(index+1);
	var fieldId = id.substring(0, index);
	index = fieldId.indexOf(" ");
	if (index < 0)
	{
		idctrace("bad fieldId '" + fieldId + "'");
		return;
	}
	var fieldName = fieldId.substring(0, index);
	var field = document.getElementById(fieldId);
	var hiddenField = field.form.elements.namedItem(fieldName);
	
	var fieldDef = getFieldDefinition(fieldName);
	var valueArray = parseMultiselectValue(hiddenField.value,
		fieldDef.multiselectStorageSeparator);
	var newArray = new Array();
	for (var i = 0; i < valueArray.length; i++)
	{
		if (i == value)
		{
			continue;
		}
		newArray[newArray.length] = valueArray[i];
	}
	hiddenField.value = formatMultiselectValue(newArray, 
		fieldDef.multiselectStorageSeparator);
	updateMultiselectDisplay(field, fieldName);
	field.selectedIndex = 0;
}

function parseMultiselectValue(valueString, separator)
{
	var result = new Array();
	while (valueString)
	{
		var index = valueString.indexOf(separator);
		var tmp = null;
		if (index >= 0)
		{
			tmp = valueString.substring(0, index);
			valueString = valueString.substring(index + separator.length);
		}
		else
		{
			tmp = valueString;
			valueString = "";
		}
		result[result.length] = tmp;
	}
	return result;
}

function formatMultiselectValue(valueArray, separator)
{
	var rc = "";
	for (var i = 0; i < valueArray.length; i++)
	{
		if (i > 0)
		{
			rc += separator;
		}
		rc += valueArray[i];
	}
	return rc;
}

function getViewValuesFromCacheInternal(viewName, dependentRelationship, 
	parentValue, childValue)
{
	var viewData = getViewDefinition(viewName);
	if (typeof viewData == "undefined")
	{
		return null;
	}
	
	var theValue = null;
	var theRows = null;
	var i;
	if (!dependentRelationship)
	{
		theRows = viewData.rows;
		if (theRows && childValue)
		{
			for (i = 0; i < theRows.length; i++)
			{
				var tmp = viewData.rows[i];
				if (tmp[viewData.schInternalColumn] == childValue)
				{
					theValue = tmp;
				}
			}
		}
		else
		{
			theValue = theRows;
		}
	}
	else
	{
		if (typeof viewData.deps != "undefined")
		{
			var dependencyDefinition = viewData.deps[dependentRelationship];
			if (typeof dependencyDefinition != "undefined" && 
				typeof dependencyDefinition.subsets != "undefined")
			{   
				theRows = dependencyDefinition.subsets[parentValue];
				if (theRows && childValue)
				{
					for (i = 0; i < theRows.length; i++)
					{
						var tmp = theRows[i];
						if (tmp[viewData.schInternalColumn] == childValue)
						{
							theValue = tmp;
						}
					}
				}
				else
				{
					theValue = theRows;
				}
			}
		}
	}

	return theValue;
}

function getViewValueFromCache(viewName, dependentRelationship, 
	parentValue, childValue)
{
	var theValue = getViewValuesFromCacheInternal(viewName, 
		dependentRelationship, parentValue, childValue);
	return theValue;
}

function getViewValuesFromCache(viewName, dependentRelationship, 
	parentValue)
{
	var theValues = getViewValuesFromCacheInternal(viewName, 
		dependentRelationship, parentValue, null);
	return theValues;
}

function isUpEvent(editField, fieldName)
{
	var fieldDef = getFieldDefinition(fieldName);
	var field = getSelectField(fieldName, editField.form);
	var fieldState = getFieldState(field.id, fieldDef);
	var isSelect = isSelectField(field);
	if (isSelect)
	{
		index = field.selectedIndex;
		if (addEmptyOption(fieldDef)) index--;
		if (fieldDef.treeDef && fieldState &&
			fieldState.selection && 
			fieldState.selection.length > 0 && index == 0)
		{
			return 1;
		}
	}
	return 0;
}

function getFieldValue(editField)
{
	var value = null;
	if (editField.type == "select-one")
	{
		var index = editField.selectedIndex;
		if (index >= 0)
		{
			value = editField.options.item(index).value;
		}
	}
	return value;
}

function getParentValue(editField, fieldName, relationshipDef)
{
	var fieldDef = getFieldDefinition(fieldName);
	var field = getSelectField(fieldName, editField.form);
	if (!field)
	{
		field = getField(fieldName, editField.form);
	}
	var fieldState = getFieldState(field.id);

	var isSelect = isSelectField(field);
	var value = null;
	var index = -1;
	var rc = new Array();
	rc.value = "";
	if (isSelect)
	{
		index = field.selectedIndex;
		if (index == -1) 
		{
			rc.isNonselect = 1;
			return rc;
		}
		if (addEmptyOption(fieldDef)) index--;
		if (fieldDef.treeDef && fieldState &&
			fieldState.selection && 
			fieldState.selection.length > 0)
		{
			if (index == 0)
			{
				rc.isUpEvent = 1;
				return rc;
			}
			else
			{
				index--;
			}
		}
		if (index < 0)
		{
			rc.isNonselect = 1;
			return rc;
		}
	}
	else
	{
		if (!field || typeof field == "undefined")
		{
			rc.isNonselect = 1;
			return rc;
		}
		if (field.value && typeof field.value != "undefined")
		{
			value = field.value;
		}
		if (!value || typeof value == "undefined" && !field.text && field.text != "undefined")
		{
			value = field.text;
		}
		if (!value || typeof value == "undefined")
		{
			rc.isNonselect = 1;
			return rc;
		}
		if (!fieldDef || typeof fieldDef == "undefined")
		{
			idctrace("getParentValue() fieldDef not found for fieldName " + fieldName + " but did find value " + value);
			rc.value = value;
			rc.isNonSelect = 1;
			return rc;
		}
	}
	var theView = getViewDefinition(fieldDef.viewName);
	if (!theView)
	{
		alert("Schema view not defined for " + fieldDef.viewName + " (" + fieldName + ")");
		rc.isNonselect = 1;
		rc.isError = 1;
		return rc;
	}
	if (!isSelect && !theView.schInternalColumn)
	{
		rc.value = value;
		return rc;
	}

	var theField;
	if (!relationshipDef)
	{
		idctrace("getParentValue() relationshipDef is undefined for field '" 
			+ fieldName + "' relationship name '" 
			+ fieldDef.dependentRelationship + "'.  Returning error.");
		rc.isError = 1;
		rc.isNonselect = 1;
		return rc;
	}
	theField = relationshipDef.table1Column;

	var theRows = fieldDef.currentRowSet;
	var theValue = "";
	if (!theRows)
	{
		alert("Values for field " + fieldName + " being retrieved before they are loaded from schema js file.");
		rc.isNonselect = 1;
		rc.isError = 1;
		return rc;
	}
	if (!isSelect)
	{
		// Find matching row by checking for matching field value in all rows.
		var valueTrim = schemaTrim(value);
		for (var i = 0; i < theRows.length; i++)
		{
			var row = theRows[i];
			var testValue = row[theView.schInternalColumn];
			var testValueTrim = schemaTrim(testValue);
			if (valueTrim == testValueTrim)
			{
				index = i;
				break;
			}
		}
		if (index < 0)
		{
			rc.isNonselect = 1;
			return rc;
		}
	}
	if (index >= theRows.length)
	{
		idctrace("it's odd for the selected index "
			+ "to be larger than the number of values");
		rc.isNonselect = 1;
		rc.isError = 1;
		return rc;
	}
	var theRow = theRows[index];
	var theValue = theRow[theField];
	rc.value = theValue;
	rc.valueRow = theRow;
	return rc;
}

function updateDependentChoicesCallback(arg)
{
    var fieldId = arg[1];
    var editField = getSelectField(fieldId);
	var isUserEvent = 0;

	if (arg.length > 2)
	{
		isUserEvent = arg[2];
	}
    updateDependentChoices(editField, fieldName, isUserEvent);
}

function setFieldOption(fieldName, optionName, value)
{
	var fieldDef = getFieldDefinition(fieldName);
	if (typeof fieldDef == "undefined")
	{
		fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, fieldName, "fieldName");
	}
	var scriptVal = "fieldDef." + optionName + " = " + value;
	eval(scriptVal);
}

function getField(fieldName, form)
{
	var field = document.getElementById(fieldName);
	if (!field && form)
	{
		field = form.elements.namedItem(fieldName);
		if (field)
		{
			return field;
		}
		for (var i = 0; i < form.elements.length; i++)
		{
			var element = form.elements.item(i);
			if (element && element.name && element.name == fieldName)
			{
				field = element;
				break;
			}
		}
	}

	return field;
}

function getSelectField(fieldName, form)
{
	var field = null;
	var fieldState = getFieldState(fieldName);
	if (fieldState && fieldState.optionListField)
	{
		return fieldState.optionListField;
	}
	field = document.getElementById(fieldName);
	if (field && field.id == fieldName)
	{
		return field;
	}
	if (form)
	{
		field = getField(fieldName, form);
		if (!field || field && field.type != "select-one")
		{
			field = getField(fieldName + ".Options", form);
			if (!field)
			{
				field = getField(fieldName + "_Options", form);
			}
		}
		if (field && field.type == "select-one")
		{
			return field;
		}
	}

	idctrace("looking for a field " + fieldName);
	var nodeListArray = new Array();
	nodeListArray[0] = document.getElementsByName(fieldName);
	nodeListArray[1] = document.getElementsByName(fieldName + ".Options");
	nodeListArray[2] = document.getElementsByName(fieldName + "_Options");
	field = null;
	for (i = 0; !field && i < nodeListArray.length; i++)
	{
		var nodeList = nodeListArray[i];
		for (j = 0; j < nodeList.length; j++)
		{
			var tmpField = nodeList.item(j);
			if (tmpField.type == "select-one")
			{
				field = tmpField;
				break;
			}
		}
	}
	if (field == null)
	{
		idctrace("Form field " + fieldName + " not yet defined");
	}
	
	return field;
}

function removeFieldNameSuffixes(fieldName)
{
	var index = fieldName.indexOf("_Options");
	if (index > 0)
	{
		return fieldName.substring(0, index);
	}
	index = fieldName.indexOf(".Options");
	if (index > 0)
	{
		return fieldName.substring(0, index);
	}
	return fieldName;
}

function isSelectField(field)
{
	return (field != null && field.type == "select-one");
}

function getRelationshipDefinition(relationshipName)
{
	var name = jsFilename(relationshipName);
	var relationshipDef = g_schemaDefinition.relationships[name];
	if (!relationshipDef)
	{
		relationshipDef = g_schemaDefinition.relationships[relationshipName];
		if (relationshipDef)
		{
			idctrace("using legacy getRelationshipDefinition key");
		}
	}
	return relationshipDef;
}

function getFieldSettings(fieldName)
{
	var name = jsFilename(fieldName);
	var fieldDef = g_schemaDefinition.fieldSettings[name];
	if (!fieldDef)
	{
		fieldDef = g_schemaDefinition.fieldSettings[name];
		if (fieldDef)
		{
			idctrace("using legacy getFieldSettings key");
		}
	}
	return fieldDef;
}

function getViewDefinition(viewName)
{
	var name = jsFilename(viewName);
	var viewDef = g_schemaDefinition.views[name];
	if (!viewDef)
	{
		viewDef = g_schemaDefinition.views[viewName];
		if (viewDef)
		{
			idctrace("using legacy getViewDefinition key");
		}
	}
	return viewDef;
}

function getFieldDefinition(fieldName)
{
	if (typeof(fieldName) == "undefined")
	{
		idctrace("getFieldDefinition() called with an undefined argument");
		return null;
	}
	var fieldDef = getFieldSettings(fieldName);
	if (fieldDef)
	{
		checkFieldDefinition(fieldDef);
		return fieldDef;
	}
	var index = fieldName.indexOf(".Options");
	if (index < 0)
	{
		index = fieldName.indexOf("_Options");
	}
	if (index < 0)
	{
		index = fieldName.indexOf("_edit");
	}
	if (index > 0)
	{
		fieldName = fieldName.substring(0, index);
		fieldDef = getFieldDefinition(fieldName);
		if (typeof(fieldDef) != "undefined")
		{
			checkFieldDefinition(fieldDef);
		}
		return fieldDef;
	}
}

function checkFieldDefinition(fieldDefinition)
{
	if (!fieldDefinition.treeNodeStorageSeparator)
	{
		fieldDefinition.treeNodeStorageSeparator = "/";
	}
	if (!fieldDefinition.treeNodeDisplaySeparator)
	{
		fieldDefinition.treeNodeDisplaySeparator = "/";
	}
	if (!fieldDefinition.multiselectStorageSeparator)
	{
		fieldDefinition.multiselectStorageSeparator = ", ";
	}
	if (!fieldDefinition.multiselectDisplaySeparator)
	{
		fieldDefinition.multiselectDisplaySeparator = ", ";
	}
}

function getFieldState(fieldId, fieldDefinition)
{
	var fieldState = g_schemaDefinition.fieldState[fieldId];
	if (!fieldState)
	{
		g_schemaDefinition.fieldState[fieldId] = 
			fieldState = new Array();
		fieldState.fieldId = fieldId;

		if (fieldDefinition)
		{
			fieldState.fieldDefinition = fieldDefinition;
		}
	}

	if (!fieldState.treeNodeStorageSeparator && fieldDefinition)
	{
		fieldState.treeNodeStorageSeparator = 
			fieldDefinition.treeNodeStorageSeparator;
	}
	if (!fieldState.treeNodeStorageSeparator)
	{
		fieldState.treeNodeStorageSeparator = "/";
	}

	if (!fieldState.treeNodeDisplaySeparator && fieldDefinition)
	{
		fieldState.treeNodeDisplaySeparator = 
			fieldDefinition.treeNodeDisplaySeparator;
	}
	if (!fieldState.treeNodeDisplaySeparator)
	{
		fieldState.treeNodeDisplaySeparator = "/";
	}

	return fieldState;
}

function resetSelection(field)
{
	var fieldState = getFieldState(field.id);
	if (fieldState)
	{
		fieldState.selection = new Array();
	}
}

function resetField(field, setInitialElement, 
	initialElementLabel, initialElementValue)
{
	
		if (!isSelectField(field))
		{
			return;
		}
		while (field.length > 0)
		{
			try
			{
				field.remove(0);
			}
			catch (e)
			{
			}
		}
		if (setInitialElement)
		{
			if (!initialElementValue) initialElementValue="";
			if (!initialElementLabel) initialElementLabel="";
			var element = document.createElement("option");
			element.value = initialElementValue;
			element.selected = true;
			element.appendChild(document.createTextNode(initialElementLabel));
			field.appendChild(element);
			if (its.ie)
			{
				var setToLength = initialElementLabel.length;
				setToLength *= g_schemaDefinition.optionListSizingFactor;
				if (setToLength > g_schemaDefinition.optionListMaxSize) setToLength = g_schemaDefinition.optionListMaxSize;
				if (setToLength < 2)
				{
					setToLength = 2;
				}
				field.style.width = setToLength + "em";
			}
		}
	
}

function addGoUpOption(field, text)
{
	var element = document.createElement("option");
	element.value = "";
	if (!text)
	{
		text = lc("wwSchemaGoUp");
	}
	element.appendChild(document.createTextNode(text));
	field.appendChild(element);
}

function parseTreeSelection(treeSelectionString, separator)
{
	var selection = new Array();
	var index = 0;
	while (index < treeSelectionString.length)
	{
		var nextSeparator = treeSelectionString.indexOf(separator, index);
		if (nextSeparator == -1)
		{
			selection[selection.length] = 
				treeSelectionString.substring(index);
			break;
		}
		selection[selection.length] = 
			treeSelectionString.substring(index, nextSeparator);
		index = nextSeparator+1;
	}
	return selection;
}

function toHexString(v, padTo)
{
	var hexString = "";
	var zeroCharCode = "0".charCodeAt(0);
	var aCharCode = "a".charCodeAt(0);
	var r = "";
	for (var j = 0; v > 0 || j < padTo; j++)
	{
		var tmp = v & 15;
		if (tmp >= 10) tmp = aCharCode + tmp - 10;
		else tmp = zeroCharCode + tmp;
		r = String.fromCharCode(tmp) + r;
		v = (v >> 4);
	}
	return r;
}

function jsFilename(arg)
{
	if (!arg)
	{
		idctrace("jsFilename() called with null argument");
		return "";
	}
	var rc = "";
	var length = arg.length;
	for (var i = 0; i < length; i++)
	{
		var theChar = arg.charAt(i);
		var c = arg.charCodeAt(i);
		switch (c)
		{
		case '/'.charCodeAt(0):
		case '\\'.charCodeAt(0):
		case '\''.charCodeAt(0):
		case ':'.charCodeAt(0):
		case '#'.charCodeAt(0):
		case '@'.charCodeAt(0):
		case '?'.charCodeAt(0):
		case '"'.charCodeAt(0):
		case ' '.charCodeAt(0):
		case '*'.charCodeAt(0):
		case '<'.charCodeAt(0):
		case '>'.charCodeAt(0):
		case '|'.charCodeAt(0):
			rc += "@";
			rc += toHexString(c, 4);
			break;
		default:
			if (c > 32 && c < 128) rc += theChar;
			else rc += "@" + toHexString(c, 4);
		}
	}
	return rc.toLowerCase();
}

function copyCallbacks(source, target)
{
	while (source.length > 0)
	{
		var callback = source.shift();
		target[target.length] = callback;
	}
}

function doCallbacks(callbacks, errorPrefix)
{
	if (typeof callbacks == "undefined")
	{
		
		return;
	}
	while (callbacks.length > 0)
	{
		var callback = callbacks.shift();
	
		callback[0](callback);
	
	}
}

function registerDefinition(viewName, isDynamic)
{
	idctrace("registerDefinition(" + viewName + ") called.");
	if (g_schemaDefinition.viewCallbacks[viewName])
	{
		var callbacks = g_schemaDefinition.viewCallbacks[viewName];
		if (g_schemaDefinition.state == g_schemaDefinition.STATE_INIT)
		{
			copyCallbacks(callbacks, g_schemaDefinition.globalCallbacks);
		}
		else
		{
			doCallbacks(callbacks, "registerDefinition(" + viewName + "): ");
		}
	}
	if (isDynamic)
	{
		g_schemaDefinition.globalCounter--;
	}
	if (g_schemaDefinition.globalCounter == 0)
	{
		doCallbacks(g_schemaDefinition.globalCallbacks, 
			"registerDefinition() globals: ");
	}
	idctrace("registerDefinition(" + viewName + ") finished.");
}

function loadViewValues(arg)
{
	
		var viewPath = arg[1];
		var fieldId = arg[2];
		idctrace("loadViewValues() with view '" + viewPath 
			+ "' field: '" + fieldId + "'.");
		if (typeof fieldId != "undefined")
		{
			g_schemaDefinition.pendingFields[fieldId] = "1";
		}
		var scriptChildNode = document.createElement("script");
		scriptChildNode.src = viewPath;
		document.body.appendChild(scriptChildNode);
	
}

function addEmptyOption(fieldDef)
{
	if (typeof fieldDef == "undefined")
	{
		return 0;
	}
	return (convertToBool(fieldDef.addEmptyOption, true) || 
		!convertToBool(fieldDef.allowPreselect, false));
}

function getDisplayString(row, viewDefinition, defaultValue)
{
	var label = null;
	if (row)
	{
		if (label == null || typeof label == "undefined") label = row["Display." + g_schemaDefinition.userLocale];
		if (label == null || typeof label == "undefined") label = row["Display." + g_schemaDefinition.userLanguage];
		if (label == null || typeof label == "undefined") label = row["Display.default"];
		if (label == null || typeof label == "undefined") label = row[viewDefinition.schLabelColumn];
	}
	if (label == null || typeof label == "undefined") label = defaultValue;
	if (label == null || typeof label == "undefined") label = "undefined";
	return label;
}

function publishViewValues(arg)
{
	var fieldState = null;
	try
	{
		var viewName = arg[1];
		var fieldId = arg[2];
		var fieldValue = arg[3];
		var depName = arg[4];
		var parentValue = arg[5];

		idctrace("starting publishViewValues() with view \"" + viewName + 
			"\" and fieldId \"" + fieldId + "\"");
		var field = getSelectField(fieldId);
		g_schemaDefinition.pendingFields[fieldId] = null;
		if (typeof field == "undefined")
		{
			alert("publishViewValues(): the field " + fieldId + " is not defined.");
			return;
		}
		var fieldDef = getFieldDefinition(field.name);
		if (!fieldDef)
		{
			fieldDef = new Array();
			idctrace("publishViewValues() the field '" 
				+ field.name + "' not found.");
		}
		fieldState = getFieldState(fieldId, fieldDef);
		fieldState.isBusy = 1;

		var viewData = getViewDefinition(viewName);
		if (typeof viewData == "undefined")
		{
			g_schemaDefinition.traceExecution = 1;
			idctrace("publishViewValues(): the view " + viewName + " is not defined.");
			return;
		}
		var rows;
		if (typeof depName == "undefined")
		{
			rows = getViewValuesFromCache(viewName);
		}
		else
		{
			rows = getViewValuesFromCache(viewName, depName, parentValue);
		}
		
		var profileDef = g_docProfiles.lists[fieldDef.fieldName];
		if (typeof profileDef != "undefined" && typeof rows != "undefined" && rows != null)
		{
			rows = determineRestrictedList(viewData, profileDef, rows);
		}
		
		fieldDef.currentRowSet = rows;
		
		if (!isSelectField(field))
		{
			// No more to do than to update the children.
			updateDependentChoices(field, fieldDef.fieldName, 0);
			return;
		}
		
		if (fieldDef && (addEmptyOption(fieldDef) || 
			fieldDef.treeDef && fieldState.selection && 
			fieldState.selection.length > 0))
		{
			resetField(field, 1, "", "");
		}
		else
		{
			resetField(field);
		}

		if (fieldDef && fieldDef.treeDef && 
			fieldState.selection && fieldState.selection.length > 0)
		{
			addGoUpOption(field);
		}
		
		var setToLength = 18;
		if (typeof rows != "undefined" && rows != null)
		{
			var elementTemplate = document.createElement("option");
			var fieldValueTrimmed = schemaTrim(fieldValue);
			var fieldValueLower = schemaToLower(fieldValueTrimmed);
			for (var i = 0; i < rows.length; i++)
			{   
				var row = rows[i];
				if (!row)
				{
					idctrace("publishViewValues(): null row found.");
					continue;
				}
				var value;
				if (viewData.schInternalColumn)
				{
					value = row[viewData.schInternalColumn];
				}
				var label = getDisplayString(row, viewData, value);
	
				if (value == null || typeof value == "undefined") value = label;
				var element = elementTemplate.cloneNode(false);
				var valueTrimmed = schemaTrim(value);
				var valueLower = schemaToLower(valueTrimmed);
				element.value = value;
				if (fieldValueLower && fieldValueLower.length > 0 && valueLower == fieldValueLower)
				{
					element.selected = true;
				}
				if (label.length > setToLength) setToLength = label.length;
				element.appendChild(document.createTextNode(label));
				field.appendChild(element);
			}
		}
		updateDependentChoices(field, fieldDef.fieldName, 0);
		setToLength *= g_schemaDefinition.optionListSizingFactor;
		if (setToLength > g_schemaDefinition.optionListMaxSize) setToLength = g_schemaDefinition.optionListMaxSize;
		var setLength = 0;
		if (its.ie) setLength = 1;
		if (typeof(viewData.optionListLength) != "undefined")
		{
			setLength = 1;
			setToLength = viewData.optionListLength;
		}
		if (typeof(fieldDef.optionListLength) != "undefined")
		{
			setLength = 1;
			setToLength = fieldDef.optionListLength;
		}
		if (setLength) field.style.width = setToLength + "em";

		idctrace("finished publishViewValues() with view \"" + viewName + 
			"\" and fieldId \"" + fieldId + "\"");
	}
	
	finally
	{
		if (fieldState)
		{
			fieldState.isBusy = 0;
		}
	}
}



function registerViewLoader(callback)
{
	var loaders = g_schemaDefinition.viewLoaders;
	if (typeof loaders == "undefined")
	{
		loaders = g_schemaDefinition.viewLoaders = new Array();
	}
	loaders[loaders.length] = callback;
	g_schemaDefinition.globalCounter++;
}


function registerViewCallback(viewName, callback)
{
	var callbacks = getOrCreateSchemaArray(
		g_schemaDefinition.viewCallbacks, viewName);
	callbacks[callbacks.length] = callback;
}


function registerInitCallback(callback)
{
	if (!g_schemaDefinition.initCallbacks)
	{
		g_schemaDefinition.initCallbacks = new Array();
	}
	var initCallbacks = g_schemaDefinition.initCallbacks;
	initCallbacks[initCallbacks.length] = callback;
}


function registerGlobalCallback(callback)
{
	if (typeof g_schemaDefinition.globalCallbacks == "undefined")
	{
		g_schemaDefinition.globalCallbacks = new Array();
	}
	var globalCallbacks = g_schemaDefinition.globalCallbacks;
	globalCallbacks[globalCallbacks.length] = callback;
}


function registerView(viewName, fieldId, initialValue)
{
	var selectField = getSelectField(fieldId);
	if (!selectField)
	{
		alert("registerView: unable to find field " + fieldId);
		return;
	}
	resetField(selectField, 1, lc("wwSchemaLoadingValues"), initialValue);

	var fieldName = selectField.name;
	var fieldState = getFieldState(fieldId);
	var fieldDef;
	if (fieldState && fieldState.fieldDefinition)
	{
		fieldDef = fieldState.fieldDefinition;
	}
	else if (fieldName)
	{
		fieldDef = getFieldDefinition(fieldName);
	}
	if (!fieldDef)
	{
		idctrace("registerView: fieldDef not defined for " + fieldId);
		fieldDef = new Array();
	}
	else if (!fieldDef.viewName)
	{	
		fieldDef.viewName = viewName;
	}
	
	var isDependent = convertToBool(fieldDef.isDependentList, false);
    var viewPathInfo;
    var loadCallback = null;
    var publishCallback = null;
	var multiselectCallback = null;
    if (isDependent && !fieldDef.treeDef)
    {
		return;
    }
	else if (fieldDef.treeDef)
	{
		var treeDef = fieldDef.treeDef;
		var lastNode = treeDef[treeDef.length-1];
		viewName = treeDef[0][1].viewName;

		if (!fieldState)
		{
			fieldState = getFieldState(fieldId, fieldDef);
		}
		
		if (lastNode[0] == "i" && lastNode[1] == 0)
		{
			var relationshipName = treeDef[1][1].relationName;
			var tmpInitialValue;
			if (lastNode.length > 2)
			{
				tmpInitialValue = lastNode[2];
			}
			else
			{
				tmpInitialValue = "0";
			}
			if (!initialValue)
			{
				fieldState.selection = new Array();
			}
			else
			{
				fieldState.selection = parseTreeSelection(initialValue, 
					fieldState.treeNodeStorageSeparator);
			}

			viewPathInfo = constructViewPathInfo(
				viewName, relationshipName, tmpInitialValue);
			loadCallback = new Array(loadViewValues, viewPathInfo.url, fieldId);
			publishCallback = new Array(publishViewValues, viewName,
				fieldId, "", relationshipName, tmpInitialValue);
			var rows = getViewValuesFromCache(viewName,
				relationshipName, tmpInitialValue);
			if (rows)
			{
				registerGlobalCallback(publishCallback);
				loadCallback = publishCallback = null;
			}
		}
		else
		{
			if (!initialValue)
			{
				initialValue = fieldDef.initialValue;
			}
			if (!initialValue)
			{
				initialValue = "";
			}
			fieldState.selection = parseTreeSelection(initialValue, 
				fieldState.treeNodeStorageSeparator);
			if (fieldState.selection.length == 0)
			{
				if (!isDependent)
				{
					viewName = treeDef[0][1].viewName;
					viewPathInfo = constructViewPathInfo(viewName);
					loadCallback = new Array(loadViewValues, 
						viewPathInfo.url, fieldId);
					publishCallback = new Array(publishViewValues, 
						viewName, fieldId, initialValue);
					var rows = getViewValuesFromCache(viewName);
					if (rows)
					{
						registerGlobalCallback(publishCallback);
						loadCallback = publishCallback = null;
					}
				}
			}
		}
		var finishedPaths = new Array();
		for (var i = 0; i < fieldState.selection.length; i++)
		{
			var nextLevelInfo = computeTreeInfoForDepth(fieldDef.treeDef, i);
			if (!nextLevelInfo)
			{
				break;
			}
			initialValue = fieldState.selection[i];
			viewPathInfo = constructViewPathInfo(nextLevelInfo.viewDef.viewName,
				nextLevelInfo.relationshipDef.relationName,
				initialValue);
			publishCallback = new Array(
				publishViewValues, 
				nextLevelInfo.viewDef.viewName, fieldId, "", 
				nextLevelInfo.relationshipDef.relationName, 
				initialValue);
			loadCallback = new Array(loadViewValues,
				viewPathInfo.url, fieldId);
			if (finishedPaths[viewPathInfo.path])
			{
				continue;
			}
			finishedPaths[viewPathInfo.path] = 1;
			if (i+1 < fieldState.selection.length)
			{
				registerViewLoader(loadCallback);
			}
		}
	}
	else
    {
		viewPathInfo = constructViewPathInfo(viewName);
		loadCallback = new Array(loadViewValues, 
			viewPathInfo.url, fieldId);
		publishCallback = new Array(publishViewValues, viewName,
			fieldId, initialValue);
		var rows = getViewValuesFromCache(viewName, null, null);
		if (fieldDef.optionListType == "multi2")
		{
			multiselectCallback = new Array(callbackTwo, 
				updateMultiselectDisplay,
				document.getElementById(fieldId),
				fieldDef.fieldName);
		}
		if (rows)
		{
			registerGlobalCallback(publishCallback);
			if (multiselectCallback)
			{
                registerGlobalCallback(multiselectCallback);
				multiselectCallback = null;
            }
			loadCallback = publishCallback = null;
		}
		else
		{
		}
    }
	if (loadCallback)
	{
		registerViewLoader(loadCallback);
	}
	if (viewPathInfo && publishCallback)
	{
		registerViewCallback(viewPathInfo.path, publishCallback);
	}
	if (viewPathInfo && multiselectCallback)
	{
		registerViewCallback(viewPathInfo.path, multiselectCallback);
	}
}

function constructViewPathInfo(viewName, relationshipName, parentValue)
{
	var info = new Array();
	var path = jsFilename(viewName);
	var suffix = "";
	if (relationshipName)
	{
		path += "/" + jsFilename(relationshipName) +
			"/" + jsFilename(parentValue);
	}
	info.path = path;

	var viewDef = getViewDefinition(viewName);
	if (viewDef && viewDef.publishViewData == 1)
	{
		var url = jsFilename(viewName);
		if (relationshipName && parentValue)
		{
			url += "/" + jsFilename(relationshipName) +
				"/" + jsFilename(parentValue);
			suffix = ".js";
		}
		else
		{
			suffix = "/all.js";
		}
		info.url = g_schemaDefinition.schemaBaseUrl + "views/" + url + suffix;
	}
	else
	{
		var url = "?IdcService=GET_SCHEMA_VIEW_FRAGMENT&schViewName=" +
			escape(jsFilename(viewName));
		if (relationshipName && parentValue)
		{
			url += "&schRelationName=" + escape(jsFilename(relationshipName)) +
				"&schParentValue=" + escape(jsFilename(parentValue));
		}
		info.url = httpCgiPath + url;
	}
	return info;
}

function ViewValuesComparator(theViewDefinition)
{
	viewDefinition = theViewDefinition;
	fieldName = viewDefinition.schClientSortField;
	var sortOrder = viewDefinition.schClientSortOrder;
	if (sortOrder)
	{
		isAscending = (sortOrder.indexOf("d") != 0)
	}
	else
	{
		isAscending = 1;
	}

	if (isAscending)
	{
		this.compare = compareAscending;
	}
	else
	{
		this.compare = compareDescending;
	}
	function compareAscending(arg1, arg2)
	{
		var str1;
		var str2;
		if (fieldName != "localizedDisplay")
		{
			str1 = arg1[fieldName];
			str2 = arg2[fieldName];
		}
		else
		{
			str1 = getDisplayString(arg1, viewDefinition, null);
			str2 = getDisplayString(arg2, viewDefinition, null);
		}
		if (str1 > str2)
		{
			return 1;
		}
		else if (str1 == str2)
		{
			return 0;
		}
		else
		{
			return -1;
		}
	}

	function compareDescending(arg1, arg2)
	{
		var str1;
		var str2;
		if (fieldName != "localizedDisplay")
		{
			str1 = arg1[fieldName];
			str2 = arg2[fieldName];
		}
		else
		{
			str1 = getDisplayString(arg1, viewDefinition, null);
			str2 = getDisplayString(arg2, viewDefinition, null);
		}
		if (str1 > str2)
		{
			return -1;
		}
		else if (str1 == str2)
		{
			return 0;
		}
		else
		{
			return 1;
		}
	}
}

function doClientViewProcessing(viewPath, viewDefinition, newRows)
{
	if (viewDefinition.schIsClientSorted &&
		viewDefinition.schClientSortField)
	{
		var sortOrder = viewDefinition.schClientSortOrder;
		if (sortOrder == null)
		{
			sortOrder = "ascending"
		}
		var comparator = new ViewValuesComparator(viewDefinition);
		newRows.sort(comparator.compare);
	}
}

function finalizeDisplay()
{
	if (g_schemaDefinition.state == g_schemaDefinition.STATE_FINALIZED)
	{
		idctrace("finalizeDisplayImplementor(): already initialized");
		return;
	}
	if (g_schemaDefinition.state == g_schemaDefinition.STATE_FINALIZING)
	{
		idctrace("finalizeDisplayImplementor(): already finalizing");
		return;
	}

	finalizeDisplayImplementor();

}

function finalizeDisplayImplementor()
{   
	if (g_schemaDefinition.state == g_schemaDefinition.STATE_FINALIZED)
	{
		idctrace("finalizeDisplayImplementor(): already initialized");
		return;
	}
	if (g_schemaDefinition.state == g_schemaDefinition.STATE_FINALIZING)
	{
		idctrace("finalizeDisplayImplementor(): already finalizing");
		return;
	}
	try
	{
		idctrace("finalizeDisplayImplementor() started");
		g_schemaDefinition.state = g_schemaDefinition.STATE_FINALIZING;
		try
		{
			if (g_schemaDefinition.priorOnLoadScript)
			{
				idctrace("finalizeDisplayImplementor(): running priorOnLoadScript");
				if (its.ie)
				{
					g_schemaDefinition.priorOnLoadScript();
				}
				else
				{
					eval(g_schemaDefinition.priorOnLoadScript);
				}
			}
		}
		catch (e)
		{
			idctrace("finalizeDisplayImplementor(): exception while "
				+ "running priorOnLoadScript: " + e);
		}
		if (g_schemaDefinition.viewLoaders.length == 0)
			doCallbacks(g_schemaDefinition.globalCallbacks, 
				"finalizeDisplayImplementor(): ");
		else
			doCallbacks(g_schemaDefinition.viewLoaders, 
				"finalizeDisplayImplementor(): ");
		idctrace("finalizeDisplayImplementor() done");
	}
	
	finally
	{
		g_schemaDefinition.state = g_schemaDefinition.STATE_FINALIZED;
	}

}







function refreshViewEdit(formId, viewName, relationName, parentValue)
{
	var view = getViewDefinition(viewName);
	if (!view)
	{
		// AJK this should be a dom-manipulation, not an
		// alert dialog.
		var msg = lc("wwSchemaObjectDoesntExist_view", viewName);
		alert(msg);
		return;
	}

	view.publishViewData = 0;
	var pathInfo = constructViewPathInfo(viewName, relationName, parentValue);
	var callback = new Array(refreshViewEditCallback, formId, 
		viewName, relationName, parentValue);
	registerViewCallback(pathInfo.path, callback);

	var loadCallback = new Array(loadViewValues, pathInfo.url);
	registerViewLoader(loadCallback);
}

function refreshViewEditCallback(callback)
{
	var formId = callback[1];
	var viewName = callback[2];
	var relationName = callback[3];
	var parentValue = callback[4];
	var view = getViewDefinition(viewName);
	var viewColumns = view.viewColumns;
	var rows;
	
	if (!relationName)
	{
		rows = view.rows;
	}
	else
	{
		rows = view.deps[relationName].subsets[parentValue];
	}

	var form = document.getElementById(formId);
	var parent = document.getElementById(formId + "_div");
	var lastRowIndexField = form.elements.namedItem("lastRowIndex");

	var table = document.createElement("table");
	table.style.tableLayout = "fixed";
	table.style.overflow = "hidden";
	var tableBody = document.createElement("tbody");
	tableBody.id = formId + "_editBody";
	var tableRow = document.createElement("tr");
	var tableHeader = document.createElement("th");
	var tableData = document.createElement("td");
	var inputField = document.createElement("input");
	var spanElement = document.createElement("span");

	var myTableColumn = null;
	if (relationName)
	{
		myTableColumn = getMyTableColumn(viewName, relationName);
	}

	var columnOrder = "";
	for (var i = 0; i < viewColumns.length; i++)
	{
		var columnName = viewColumns[i];
		if (skipColumnForEdit(columnName, view, myTableColumn))
		{
			continue;
		}
		if (columnOrder.length > 0)
		{
			columnOrder += ",";
		}
		columnOrder += viewColumns[i];
		tableHeader = tableHeader.cloneNode(false);
		var textNode = document.createTextNode(columnName);
		tableHeader.appendChild(textNode);
		tableHeader.style.overflow = "hidden";
		tableRow.appendChild(tableHeader);
	}
	var clientViewColumnsField = form.clientViewColumns;
	clientViewColumnsField.value = columnOrder;

	tableHeader = tableHeader.cloneNode(false);
	tableHeader.appendChild(document.createTextNode(lc("wwFilterActions")));
	tableRow.appendChild(tableHeader);
	tableBody.appendChild(tableRow);

	inputField = inputField.cloneNode(false);
	inputField.id = formId + "_selected";
	inputField.type = "text";
	inputField.style.display = "none";
	inputField.name = "selectedId";
	inputField.value = "";
	parent.appendChild(inputField);

	for (var i = 0; rows && i < rows.length; i++)
	{
		var row = rows[i];
		tableRow = tableRow.cloneNode(false);
		var counter = 0;
		for (var j = 0; j < viewColumns.length; j++)
		{
			var columnName = viewColumns[j];
			if (skipColumnForEdit(columnName, view, myTableColumn))
			{
				continue;
			}
			var dataId = formId + "." + i + "." + counter;
			tableData = tableData.cloneNode(false);
			tableData.id = dataId;
			var isMutable = 1;
			if (columnName == view.schInternalColumn)
			{
				isMutable = 0;
			}
			var text = row[columnName];

			// AJK this is somewhat redundant with handleNewRow()
			var textNode = document.createTextNode(text);
			spanElement = spanElement.cloneNode(false);
			spanElement.id = dataId + "_t";
			spanElement.appendChild(textNode);
			if (isMutable)
			{
				tableData.onclick = handleElementClick;
			}
			tableData.appendChild(spanElement);
			tableRow.appendChild(tableData);

			inputField = inputField.cloneNode(false);
			inputField.id = dataId + "_e";
			inputField.name = "d " + i + " " + counter;
			inputField.value = text;
			inputField.setAttribute("onkeydown", "handleKeyPress(this)");
			inputField.onkeydown = handleKeyPress;
			tableData.appendChild(inputField);
			counter++;
		}
		inputField = inputField.cloneNode(false);
		inputField.name = "f " + i;
		tableData = tableData.cloneNode(false);
		tableData.appendChild(inputField);
		var deleteControl = createDeleteControl(formId, i);
		tableData.appendChild(deleteControl);
		tableRow.appendChild(tableData);
		tableBody.appendChild(tableRow);
	}

	table.appendChild(tableBody);
	parent.appendChild(table);

	if (rows)
	{
		lastRowIndexField.value = rows.length-1;
	}
	else
	{
		lastRowIndexField.value = -1;
		handleNewRow(formId);
	}
}

function handleKeyPress(event)
{
	var target;
	if (event)
	{
		target = event.target;
	}
	else
	{
		target = this;
		if (window.event)
		{
			event = window.event;
		}
	}
	if (!event)
	{
		idctrace("handleKeyPress(): unable to find event object");
		return;
	}
	if (event.keyCode != 9) // tab
	{
		return;
	}
	var id = target.id;
	var index = id.indexOf(".");
	var formId = id.substring(0, index);
	id = id.substring(index+1);
	index = id.indexOf(".");
	var row = id.substring(0, index);
	id = id.substring(index+1);
	index = id.indexOf("_");
	var column = id.substring(0, index);
	column++;

	var form = document.getElementById(formId);
	var viewName = form.viewName.value;
	var view = getViewDefinition(viewName);
	var fieldList = form.clientViewColumns.value.split(",");
	if (column >= fieldList.length)
	{
		column = 0;
		row++;
	}
	var flagsField = form.elements.namedItem("f " + row);
	var flags = "";
	if (flagsField)
	{
		flags = flagsField.value;
	}
	var internalColumn = view.schInternalColumn;
	if (fieldList[column] == internalColumn && flags.indexOf("new") < 0)
	{
		column++;
		if (column >= fieldList.length)
		{
			column = 0;
			row++;
		}
	}

	var lastRowIndex = parseInt(form.lastRowIndex.value);
	if (row > lastRowIndex)
	{
		window.setTimeout(
			"handleNewRow('" + form.id + "')");
	}
	else
	{
		id = formId + "." + row + "." + column + "_t";
		window.setTimeout("handleElementClick(null, '" + id + "')");
	}
}

function handleElementClick(event, id)
{
	var target;
	if (event)
	{
		target = event.target;
	}
	else
	{
		if (id)
		{
			target = document.getElementById(id);
		}
		else
		{
			target = this;
		}
	}
	if (!id)
	{
		id = target.id;
	}
	var index = id.indexOf("_");
	if (index > 0)
	{
		id = id.substring(0, index);
	}
	var targetId;
	var length = id.length;
	var selectedFieldField = null;
	index = id.indexOf(".");
	var prefix = "";
	if (index > 0)
	{
		prefix = id.substring(0, index);
	}
	selectedFieldField = document.getElementById(prefix + "_selected");
	if (selectedFieldField && selectedFieldField.value.length > 0)
	{
		var tmpId = selectedFieldField.value;
		var selectedField = document.getElementById(tmpId + "_e");
		selectedField.style.display = "none";
		if (!selectedField.value)
		{
			selectedField.parentNode.style.background = "gray";
		}
		else
		{
			selectedField.parentNode.style.background = "";
		}
		var newValue = selectedField.value;
		tmpId = tmpId + "_t";
		selectedField = document.getElementById(tmpId);
		selectedField.style.display = "inline";
		var oldText = selectedField.childNodes.item(0);
		var newText = document.createTextNode(newValue);
		selectedField.replaceChild(newText, oldText);

	}
	targetId = id + "_t";
	target = document.getElementById(targetId);
	target.style.display = "none";
	targetId = id + "_e";
	target = document.getElementById(targetId);
	if (target)
	{
		target.style.display = "inline";

		if (selectedFieldField)
		{
			selectedFieldField.value = id;
		}
		if (target.focus)
		{
			target.focus();
		}
	}
}

function handleNewRow(formId)
{
	var form = document.getElementById(formId);
	var lastRowIndexField = form.elements.namedItem("lastRowIndex");
	var tableBody = document.getElementById(formId + "_editBody");
	var index = parseInt(lastRowIndexField.value) + 1;
	lastRowIndexField.value = index;
	
	var tableRow = document.createElement("tr");
	var viewName = form.viewName.value;
	var relationName = form.schRelationName.value;
	var view = getViewDefinition(viewName);
	var viewColumns = view.viewColumns;
	var tableData = null;
	var firstTableData = null;

	var myTableColumn = null;
	if (relationName)
	{
		myTableColumn = getMyTableColumn(viewName, relationName);
	}

	var counter = 0;
	for (var i = 0; i < viewColumns.length; i++)
	{
		var columnName = viewColumns[i];
		if (skipColumnForEdit(columnName, view, myTableColumn))
		{
			continue;
		}
		var textNode = document.createTextNode("");
		var spanElement = document.createElement("span");
		var dataId = formId + "." + index + "." + counter;
		spanElement.id = dataId + "_t";
		spanElement.appendChild(textNode);
		tableData = document.createElement("td");
		if (firstTableData == null)
		{
			firstTableData = spanElement;
		}
		tableData.id = dataId;
		tableData.style.height = "2em";
		tableData.appendChild(spanElement);
		tableData.onclick = handleElementClick;
		tableData.style.background = "gray";
		tableRow.appendChild(tableData);

		var inputField = document.createElement("input");
		inputField.id = dataId + "_e";
		inputField.name = "d " + index + " " + counter;
		inputField.value = "";
		inputField.style.display = "none";
		inputField.setAttribute("onkeydown", "handleKeyPress(this)");
		inputField.onkeydown = handleKeyPress;
		tableData.appendChild(inputField);
		counter++;
	}
	inputField = inputField.cloneNode(false);
	inputField.name = "f " + index;
	inputField.value = "new";
	tableData = tableData.cloneNode(false);
	tableData.appendChild(inputField);
	var deleteControl = createDeleteControl(formId, index);
	tableData.appendChild(deleteControl);
	tableData.style.background = "";
	tableRow.appendChild(tableData);
	tableBody.appendChild(tableRow);
	var event = new Array();
	event.target = firstTableData;
	handleElementClick(event);
}

function handleDelete(index, formId)
{
	var flagFieldName = "f " + index;
	var form = document.getElementById(formId);
	var flagField = form.elements.namedItem(flagFieldName);
	var sourceAnchor = document.getElementById(formId + "_delete_" + index);
	var text = sourceAnchor.childNodes.item(0);
	var newText;
	if (text.data == lc("wwDelete"))
	{
		flagField.value = flagField.value + ":delete";
		newText = document.createTextNode(lc("wwUndelete"));
	}
	else
	{
		newText = lc("wwDelete");
		if (flagField.value.indexOf("new") >= 0)
		{
			flagField.value = "new";
		}
		else
		{
			flagField.value = "";
		}
		newText = document.createTextNode(lc("wwDelete"));
	}
	sourceAnchor.replaceChild(newText, text);
}

function skipColumnForEdit(columnName, viewDef, parentColumn)
{
	if (columnName == viewDef.tableRowCreateTimestamp ||
		columnName == viewDef.tableRowModifyTimestamp ||
		columnName == parentColumn ||
		columnName == "schSourceID")
	{
		return 1;
	}
	return 0;
}

function createDeleteControl(formId, index)
{
	var deleteControl = document.createElement("a");
	deleteControl.id = formId + "_delete_" + index;
	deleteControl.href = "javascript:handleDelete(" +
		"'" + index + "', '" + formId + "')";
	deleteControl.appendChild(document.createTextNode(lc("wwDelete")));
	return deleteControl;
}

function getOtherTableColumn(viewName, relationName)
{
	var view = getViewDefinition(viewName);
	var relation = getRelationshipDefinition(relationName);
	var myTable = view.tableName;
	if (relation.table2Table == myTable)
	{
		return relation.table1Column;
	}
	else
	{
		return relation.table2Column;
	}
}

function getMyTableColumn(viewName, relationName)
{
	var view = getViewDefinition(viewName);
	var relation = getRelationshipDefinition(relationName);
	var myTable = view.tableName;
	if (relation.table2Table == myTable)
	{
		return relation.table2Column;
	}
	else
	{
		return relation.table1Column;
	}
}

function getNewId(prefix)
{
	var id = g_schemaDefinition.idCounter++;
	if (prefix)
	{
		return prefix + " " + id;
	}
	else
	{
		return id;
	}
}


function isSchemaStable()
{
	var pendingFields = g_schemaDefinition.pendingFields;
	var viewCallbacks = g_schemaDefinition.viewCallbacks;
	var globalCallbacks = g_schemaDefinition.globalCallbacks;

	var pendingField;
	for (pendingField in pendingFields)
	{
		var value = pendingFields[pendingField];
		if (typeof value == "string" && value != null)
		{
			idctrace("isSchemaStable is false because field '" +
				pendingField + "' is not ready");
			return 0;
		}
	}
	/* Checking for pending callbacks only works on well structured data. 
	
    var viewName;
    for (viewName in viewCallbacks)
    {
        var callbacks = viewCallbacks[viewName];
        if (typeof callbacks == "object" && callbacks.length > 0)
        {
			idctrace("isSchemaStable is false because view '" +
				viewName + "' is not ready");
            return 0;
        }
    }
	*/

	if (globalCallbacks.length > 0)
	{
		return 0;
	}
	return 1;
}


function determineRestrictedList(viewData, profileDef, rows)
{
	var restrictedRows = new Array();
	var matchedRows = new Array(); 
	var isStrict = profileDef.type == "strict";
	
	var profileRows = profileDef.rows;
	var count = 0;
	for (var i = 0; i < profileRows.length; i++)
	{   
		var value = schemaTrim(profileRows[i]);
		var re;
		if (value.length == 0)
		{
			continue;
		}
		if (!isStrict)
		{
			re = new RegExp(value);
		}

		for (var j = 0; j < rows.length; j++)
		{
			var isMatched = matchedRows[j];
			if (typeof isMatched == "undefined")
			{
				var row = rows[j];
				var val = row[viewData.schInternalColumn];
				isMatched = true;
				if (isStrict)
				{
					isMatched = (val == value);
				}
				else 
				{
					isMatched = (val.match(re));
				}
				
				if (isMatched)
				{
					restrictedRows[count] = row;
					matchedRows[j] = val;
					count++;
					if (isStrict)
					{
						break;
					}
				}
			}	
		}
	}		
	return restrictedRows;
}


g_schemaDefinition.views = new Array();





	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "CompleteList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    




p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "BrandView", "viewName");

    p.schInternalColumn = "dChoiceName";
    p.schLabelColumn = "dChoiceName";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dChoiceName\"]";
    l["Chinese-Simplified"] = "row[\"dChoiceName\"]";
    l["Dansk"] = "row[\"dChoiceName\"]";
    l["Deutsch"] = "row[\"dChoiceName\"]";
    l["English-UK"] = "row[\"dChoiceName\"]";
    l["Espa\u00f1ol"] = "row[\"dChoiceName\"]";
    l["Fran\u00e7ais"] = "row[\"dChoiceName\"]";
    l["Greek"] = "row[\"dChoiceName\"]";
    l["Italiano"] = "row[\"dChoiceName\"]";
    l["Japanese"] = "row[\"dChoiceName\"]";
    l["Korean"] = "row[\"dChoiceName\"]";
    l["Nederlands"] = "row[\"dChoiceName\"]";
    l["Russian"] = "row[\"dChoiceName\"]";
    l["Suomi"] = "row[\"dChoiceName\"]";
    l["Svenska"] = "row[\"dChoiceName\"]";
    l["Arabic"] = "row[\"dChoiceName\"]";
    l["Czech"] = "row[\"dChoiceName\"]";
    l["Hebrew"] = "row[\"dChoiceName\"]";
    l["Magyar"] = "row[\"dChoiceName\"]";
    l["Norwegian-Nynorsk"] = "row[\"dChoiceName\"]";
    l["Polski"] = "row[\"dChoiceName\"]";
    l["Espa361ol"] = "row[\"dChoiceName\"]";
    l["Fran347ais"] = "row[\"dChoiceName\"]";
    l["Portugu352s-Portugal"] = "row[\"dChoiceName\"]";
    l["Portugu352s-Brazil"] = "row[\"dChoiceName\"]";
    l["T374rk347e"] = "row[\"dChoiceName\"]";
    l["Norwegian-Bokm345l"] = "row[\"dChoiceName\"]";
    


p.tableName = "CHOICELISTITEM";
p.viewColumns = new Array();
p.viewColumns[0] = "dChoiceId";
p.viewColumns[1] = "dOrder";
p.viewColumns[2] = "dChoiceName";
p.viewColumns[3] = "dParentId";
p.viewColumns[4] = "dChoiceLevel";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "buffer", "viewName");

    p.schInternalColumn = "dID";
    p.schLabelColumn = "dID";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"dID\"]";
    l["Dansk"] = "row[\"dID\"]";
    l["Deutsch"] = "row[\"dID\"]";
    l["English-US"] = "row[\"dID\"]";
    l["English-UK"] = "row[\"dID\"]";
    l["Espa\u00f1ol"] = "row[\"dID\"]";
    l["Fran\u00e7ais"] = "row[\"dID\"]";
    l["Greek"] = "row[\"dID\"]";
    l["Italiano"] = "row[\"dID\"]";
    l["Japanese"] = "row[\"dID\"]";
    l["Korean"] = "row[\"dID\"]";
    l["Nederlands"] = "row[\"dID\"]";
    l["Russian"] = "row[\"dID\"]";
    l["Suomi"] = "row[\"dID\"]";
    l["Svenska"] = "row[\"dID\"]";
    l["Arabic"] = "row[\"dID\"]";
    l["Czech"] = "row[\"dID\"]";
    l["Hebrew"] = "row[\"dID\"]";
    l["Magyar"] = "row[\"dID\"]";
    l["Norwegian-Nynorsk"] = "row[\"dID\"]";
    l["Polski"] = "row[\"dID\"]";
    l["Espa361ol"] = "row[\"dID\"]";
    l["Fran347ais"] = "row[\"dID\"]";
    l["Portugu352s-Portugal"] = "row[\"dID\"]";
    l["Portugu352s-Brazil"] = "row[\"dID\"]";
    l["T374rk347e"] = "row[\"dID\"]";
    l["Norwegian-Bokm345l"] = "row[\"dID\"]";
    


p.tableName = "TMR_BUFFER";
p.viewColumns = new Array();
p.viewColumns[0] = "dID";
p.viewColumns[1] = "DOC_NAME";
p.viewColumns[2] = "DOC_TITLE";
p.viewColumns[3] = "DOC_URL";
p.viewColumns[4] = "Language";
p.viewColumns[5] = "PUBLICATION_NUMBER";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "BussGrpView", "viewName");

    p.schInternalColumn = "bgGrpDesc";
    p.schLabelColumn = "bgGrpDesc";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"bgGrpDesc\"]";
    l["Dansk"] = "row[\"bgGrpDesc\"]";
    l["Deutsch"] = "row[\"bgGrpDesc\"]";
    l["English-US"] = "row[\"bgGrpDesc\"]";
    l["English-UK"] = "row[\"bgGrpDesc\"]";
    l["Espa\u00f1ol"] = "row[\"bgGrpDesc\"]";
    l["Fran\u00e7ais"] = "row[\"bgGrpDesc\"]";
    l["Greek"] = "row[\"bgGrpDesc\"]";
    l["Italiano"] = "row[\"bgGrpDesc\"]";
    l["Japanese"] = "row[\"bgGrpDesc\"]";
    l["Korean"] = "row[\"bgGrpDesc\"]";
    l["Nederlands"] = "row[\"bgGrpDesc\"]";
    l["Russian"] = "row[\"bgGrpDesc\"]";
    l["Suomi"] = "row[\"bgGrpDesc\"]";
    l["Svenska"] = "row[\"bgGrpDesc\"]";
    l["Arabic"] = "row[\"bgGrpDesc\"]";
    l["Czech"] = "row[\"bgGrpDesc\"]";
    l["Hebrew"] = "row[\"bgGrpDesc\"]";
    l["Magyar"] = "row[\"bgGrpDesc\"]";
    l["Norwegian-Nynorsk"] = "row[\"bgGrpDesc\"]";
    l["Polski"] = "row[\"bgGrpDesc\"]";
    l["Espa361ol"] = "row[\"bgGrpDesc\"]";
    l["Fran347ais"] = "row[\"bgGrpDesc\"]";
    l["Portugu352s-Portugal"] = "row[\"bgGrpDesc\"]";
    l["Portugu352s-Brazil"] = "row[\"bgGrpDesc\"]";
    l["T374rk347e"] = "row[\"bgGrpDesc\"]";
    l["Norwegian-Bokm345l"] = "row[\"bgGrpDesc\"]";
    


p.tableName = "BussGroupTab";
p.viewColumns = new Array();
p.viewColumns[0] = "bgGrpID";
p.viewColumns[1] = "bgGrpDesc";
p.viewColumns[2] = "bgGrpOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "FunctionsLevel2View", "viewName");

    p.schInternalColumn = "U_NAME";
    p.schLabelColumn = "U_NAME";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"U_NAME\"]";
    


p.tableName = "U_FUNCTIONSLVL2";
p.viewColumns = new Array();
p.viewColumns[0] = "U_ID";
p.viewColumns[1] = "U_PARENT_ID";
p.viewColumns[2] = "U_NAME";
p.viewColumns[3] = "schCreateTimestamp";
p.viewColumns[4] = "schModifyTimestamp";
p.viewColumns[5] = "schSourceID";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "CostCenterView", "viewName");

    p.schInternalColumn = "costCenterDesc";
    p.schLabelColumn = "costCenterDesc";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"costCenterDesc\"]";
    l["Dansk"] = "row[\"costCenterDesc\"]";
    l["Deutsch"] = "row[\"costCenterDesc\"]";
    l["English-US"] = "row[\"costCenterDesc\"]";
    l["English-UK"] = "row[\"costCenterDesc\"]";
    l["Espa\u00f1ol"] = "row[\"costCenterDesc\"]";
    l["Fran\u00e7ais"] = "row[\"costCenterDesc\"]";
    l["Greek"] = "row[\"costCenterDesc\"]";
    l["Italiano"] = "row[\"costCenterDesc\"]";
    l["Japanese"] = "row[\"costCenterDesc\"]";
    l["Korean"] = "row[\"costCenterDesc\"]";
    l["Nederlands"] = "row[\"costCenterDesc\"]";
    l["Russian"] = "row[\"costCenterDesc\"]";
    l["Suomi"] = "row[\"costCenterDesc\"]";
    l["Svenska"] = "row[\"costCenterDesc\"]";
    l["Arabic"] = "row[\"costCenterDesc\"]";
    l["Czech"] = "row[\"costCenterDesc\"]";
    l["Hebrew"] = "row[\"costCenterDesc\"]";
    l["Magyar"] = "row[\"costCenterDesc\"]";
    l["Norwegian-Nynorsk"] = "row[\"costCenterDesc\"]";
    l["Polski"] = "row[\"costCenterDesc\"]";
    l["Espa361ol"] = "row[\"costCenterDesc\"]";
    l["Fran347ais"] = "row[\"costCenterDesc\"]";
    l["Portugu352s-Portugal"] = "row[\"costCenterDesc\"]";
    l["Portugu352s-Brazil"] = "row[\"costCenterDesc\"]";
    l["T374rk347e"] = "row[\"costCenterDesc\"]";
    l["Norwegian-Bokm345l"] = "row[\"costCenterDesc\"]";
    


p.tableName = "CostCenterTab";
p.viewColumns = new Array();
p.viewColumns[0] = "costCenterID";
p.viewColumns[1] = "bgGrpID";
p.viewColumns[2] = "costCenterDesc";
p.viewColumns[3] = "costCenterOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "docFormats", "viewName");

    p.schInternalColumn = "dFormat";
    p.schLabelColumn = "dFormat";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"dFormat\"]";
    l["Dansk"] = "row[\"dFormat\"]";
    l["Deutsch"] = "row[\"dFormat\"]";
    l["English-US"] = "row[\"dFormat\"]";
    l["English-UK"] = "row[\"dFormat\"]";
    l["Espa\u00f1ol"] = "row[\"dFormat\"]";
    l["Fran\u00e7ais"] = "row[\"dFormat\"]";
    l["Greek"] = "row[\"dFormat\"]";
    l["Italiano"] = "row[\"dFormat\"]";
    l["Japanese"] = "row[\"dFormat\"]";
    l["Korean"] = "row[\"dFormat\"]";
    l["Nederlands"] = "row[\"dFormat\"]";
    l["Russian"] = "row[\"dFormat\"]";
    l["Suomi"] = "row[\"dFormat\"]";
    l["Svenska"] = "row[\"dFormat\"]";
    l["Arabic"] = "row[\"dFormat\"]";
    l["Czech"] = "row[\"dFormat\"]";
    l["Hebrew"] = "row[\"dFormat\"]";
    l["Magyar"] = "row[\"dFormat\"]";
    l["Norwegian-Nynorsk"] = "row[\"dFormat\"]";
    l["Polski"] = "row[\"dFormat\"]";
    l["Espa361ol"] = "row[\"dFormat\"]";
    l["Fran347ais"] = "row[\"dFormat\"]";
    l["Portugu352s-Portugal"] = "row[\"dFormat\"]";
    l["Portugu352s-Brazil"] = "row[\"dFormat\"]";
    l["T374rk347e"] = "row[\"dFormat\"]";
    l["Norwegian-Bokm345l"] = "row[\"dFormat\"]";
    


p.tableName = "DocFormats";
p.viewColumns = new Array();
p.viewColumns[0] = "dFormat";
p.viewColumns[1] = "dConversion";
p.viewColumns[2] = "dDescription";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "docTypes", "viewName");

    p.schInternalColumn = "dDocType";
    p.schLabelColumn = "dDocType";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"dDocType\"]";
    l["Dansk"] = "row[\"dDocType\"]";
    l["Deutsch"] = "row[\"dDocType\"]";
    l["English-US"] = "row[\"dDocType\"]";
    l["English-UK"] = "row[\"dDocType\"]";
    l["Espa\u00f1ol"] = "row[\"dDocType\"]";
    l["Fran\u00e7ais"] = "row[\"dDocType\"]";
    l["Greek"] = "row[\"dDocType\"]";
    l["Italiano"] = "row[\"dDocType\"]";
    l["Japanese"] = "row[\"dDocType\"]";
    l["Korean"] = "row[\"dDocType\"]";
    l["Nederlands"] = "row[\"dDocType\"]";
    l["Russian"] = "row[\"dDocType\"]";
    l["Suomi"] = "row[\"dDocType\"]";
    l["Svenska"] = "row[\"dDocType\"]";
    l["Arabic"] = "row[\"dDocType\"]";
    l["Czech"] = "row[\"dDocType\"]";
    l["Hebrew"] = "row[\"dDocType\"]";
    l["Magyar"] = "row[\"dDocType\"]";
    l["Norwegian-Nynorsk"] = "row[\"dDocType\"]";
    l["Polski"] = "row[\"dDocType\"]";
    l["Espa361ol"] = "row[\"dDocType\"]";
    l["Fran347ais"] = "row[\"dDocType\"]";
    l["Portugu352s-Portugal"] = "row[\"dDocType\"]";
    l["Portugu352s-Brazil"] = "row[\"dDocType\"]";
    l["T374rk347e"] = "row[\"dDocType\"]";
    l["Norwegian-Bokm345l"] = "row[\"dDocType\"]";
    


p.tableName = "DocTypes";
p.viewColumns = new Array();
p.viewColumns[0] = "dDocType";
p.viewColumns[1] = "dDescription";
p.viewColumns[2] = "dGif";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ProductCategoryList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-US"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "FunctionsView", "viewName");

    p.schInternalColumn = "U_NAME";
    p.schLabelColumn = "U_NAME";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"U_NAME\"]";
    


p.tableName = "U_FUNCTIONS";
p.viewColumns = new Array();
p.viewColumns[0] = "U_ID";
p.viewColumns[1] = "U_NAME";
p.viewColumns[2] = "schCreateTimestamp";
p.viewColumns[3] = "schModifyTimestamp";
p.viewColumns[4] = "schSourceID";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "IndustriesList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "IndustriesView", "viewName");

    p.schInternalColumn = "U_NAME";
    p.schLabelColumn = "U_NAME";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"U_NAME\"]";
    l["Dansk"] = "row[\"U_NAME\"]";
    l["Deutsch"] = "row[\"U_NAME\"]";
    l["English-US"] = "row[\"U_NAME\"]";
    l["English-UK"] = "row[\"U_NAME\"]";
    l["Espa\u00f1ol"] = "row[\"U_NAME\"]";
    l["Fran\u00e7ais"] = "row[\"U_NAME\"]";
    l["Greek"] = "row[\"U_NAME\"]";
    l["Italiano"] = "row[\"U_NAME\"]";
    l["Japanese"] = "row[\"U_NAME\"]";
    l["Korean"] = "row[\"U_NAME\"]";
    l["Nederlands"] = "row[\"U_NAME\"]";
    l["Russian"] = "row[\"U_NAME\"]";
    l["Suomi"] = "row[\"U_NAME\"]";
    l["Svenska"] = "row[\"U_NAME\"]";
    l["Arabic"] = "row[\"U_NAME\"]";
    l["Czech"] = "row[\"U_NAME\"]";
    l["Hebrew"] = "row[\"U_NAME\"]";
    l["Magyar"] = "row[\"U_NAME\"]";
    l["Norwegian-Nynorsk"] = "row[\"U_NAME\"]";
    l["Polski"] = "row[\"U_NAME\"]";
    l["Espa361ol"] = "row[\"U_NAME\"]";
    l["Fran347ais"] = "row[\"U_NAME\"]";
    l["Portugu352s-Portugal"] = "row[\"U_NAME\"]";
    l["Portugu352s-Brazil"] = "row[\"U_NAME\"]";
    l["T374rk347e"] = "row[\"U_NAME\"]";
    l["Norwegian-Bokm345l"] = "row[\"U_NAME\"]";
    


p.tableName = "U_INDUSTRIES";
p.viewColumns = new Array();
p.viewColumns[0] = "U_ID";
p.viewColumns[1] = "U_NAME";
p.viewColumns[2] = "U_NAME_ZH_CN";
p.viewColumns[3] = "U_NAME_JA";
p.viewColumns[4] = "U_NAME_KO";
p.viewColumns[5] = "U_NAME_FR";
p.viewColumns[6] = "U_NAME_DE";
p.viewColumns[7] = "U_NAME_IT";
p.viewColumns[8] = "U_NAME_PT";
p.viewColumns[9] = "U_NAME_ES";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "LanguageList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-US"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "MediaList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-US"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "OwnerList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-US"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ReleaseToFlagList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-US"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "RegionList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-US"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ProductCategoryView", "viewName");

    p.schInternalColumn = "dChoiceName";
    p.schLabelColumn = "dChoiceName";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dChoiceName\"]";
    l["Chinese-Simplified"] = "row[\"dChoiceName\"]";
    l["Dansk"] = "row[\"dChoiceName\"]";
    l["Deutsch"] = "row[\"dChoiceName\"]";
    l["English-UK"] = "row[\"dChoiceName\"]";
    l["Espa\u00f1ol"] = "row[\"dChoiceName\"]";
    l["Fran\u00e7ais"] = "row[\"dChoiceName\"]";
    l["Greek"] = "row[\"dChoiceName\"]";
    l["Italiano"] = "row[\"dChoiceName\"]";
    l["Japanese"] = "row[\"dChoiceName\"]";
    l["Korean"] = "row[\"dChoiceName\"]";
    l["Nederlands"] = "row[\"dChoiceName\"]";
    l["Russian"] = "row[\"dChoiceName\"]";
    l["Suomi"] = "row[\"dChoiceName\"]";
    l["Svenska"] = "row[\"dChoiceName\"]";
    l["Arabic"] = "row[\"dChoiceName\"]";
    l["Czech"] = "row[\"dChoiceName\"]";
    l["Hebrew"] = "row[\"dChoiceName\"]";
    l["Magyar"] = "row[\"dChoiceName\"]";
    l["Norwegian-Nynorsk"] = "row[\"dChoiceName\"]";
    l["Polski"] = "row[\"dChoiceName\"]";
    l["Espa361ol"] = "row[\"dChoiceName\"]";
    l["Fran347ais"] = "row[\"dChoiceName\"]";
    l["Portugu352s-Portugal"] = "row[\"dChoiceName\"]";
    l["Portugu352s-Brazil"] = "row[\"dChoiceName\"]";
    l["T374rk347e"] = "row[\"dChoiceName\"]";
    l["Norwegian-Bokm345l"] = "row[\"dChoiceName\"]";
    


p.tableName = "CHOICELISTITEM";
p.viewColumns = new Array();
p.viewColumns[0] = "dChoiceId";
p.viewColumns[1] = "dOrder";
p.viewColumns[2] = "dChoiceName";
p.viewColumns[3] = "dParentId";
p.viewColumns[4] = "dChoiceLevel";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ProductFamilyList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ProductFamilyView", "viewName");

    p.schInternalColumn = "dChoiceName";
    p.schLabelColumn = "dChoiceName";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dChoiceName\"]";
    l["Chinese-Simplified"] = "row[\"dChoiceName\"]";
    l["Dansk"] = "row[\"dChoiceName\"]";
    l["Deutsch"] = "row[\"dChoiceName\"]";
    l["English-UK"] = "row[\"dChoiceName\"]";
    l["Espa\u00f1ol"] = "row[\"dChoiceName\"]";
    l["Fran\u00e7ais"] = "row[\"dChoiceName\"]";
    l["Greek"] = "row[\"dChoiceName\"]";
    l["Italiano"] = "row[\"dChoiceName\"]";
    l["Japanese"] = "row[\"dChoiceName\"]";
    l["Korean"] = "row[\"dChoiceName\"]";
    l["Nederlands"] = "row[\"dChoiceName\"]";
    l["Russian"] = "row[\"dChoiceName\"]";
    l["Suomi"] = "row[\"dChoiceName\"]";
    l["Svenska"] = "row[\"dChoiceName\"]";
    l["Arabic"] = "row[\"dChoiceName\"]";
    l["Czech"] = "row[\"dChoiceName\"]";
    l["Hebrew"] = "row[\"dChoiceName\"]";
    l["Magyar"] = "row[\"dChoiceName\"]";
    l["Norwegian-Nynorsk"] = "row[\"dChoiceName\"]";
    l["Polski"] = "row[\"dChoiceName\"]";
    l["Espa361ol"] = "row[\"dChoiceName\"]";
    l["Fran347ais"] = "row[\"dChoiceName\"]";
    l["Portugu352s-Portugal"] = "row[\"dChoiceName\"]";
    l["Portugu352s-Brazil"] = "row[\"dChoiceName\"]";
    l["T374rk347e"] = "row[\"dChoiceName\"]";
    l["Norwegian-Bokm345l"] = "row[\"dChoiceName\"]";
    


p.tableName = "CHOICELISTITEM";
p.viewColumns = new Array();
p.viewColumns[0] = "dChoiceId";
p.viewColumns[1] = "dOrder";
p.viewColumns[2] = "dChoiceName";
p.viewColumns[3] = "dParentId";
p.viewColumns[4] = "dChoiceLevel";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ProductLineList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ProductLineView", "viewName");

    p.schInternalColumn = "dChoiceName";
    p.schLabelColumn = "dChoiceName";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dChoiceName\"]";
    l["Chinese-Simplified"] = "row[\"dChoiceName\"]";
    l["Dansk"] = "row[\"dChoiceName\"]";
    l["Deutsch"] = "row[\"dChoiceName\"]";
    l["English-UK"] = "row[\"dChoiceName\"]";
    l["Espa\u00f1ol"] = "row[\"dChoiceName\"]";
    l["Fran\u00e7ais"] = "row[\"dChoiceName\"]";
    l["Greek"] = "row[\"dChoiceName\"]";
    l["Italiano"] = "row[\"dChoiceName\"]";
    l["Japanese"] = "row[\"dChoiceName\"]";
    l["Korean"] = "row[\"dChoiceName\"]";
    l["Nederlands"] = "row[\"dChoiceName\"]";
    l["Russian"] = "row[\"dChoiceName\"]";
    l["Suomi"] = "row[\"dChoiceName\"]";
    l["Svenska"] = "row[\"dChoiceName\"]";
    l["Arabic"] = "row[\"dChoiceName\"]";
    l["Czech"] = "row[\"dChoiceName\"]";
    l["Hebrew"] = "row[\"dChoiceName\"]";
    l["Magyar"] = "row[\"dChoiceName\"]";
    l["Norwegian-Nynorsk"] = "row[\"dChoiceName\"]";
    l["Polski"] = "row[\"dChoiceName\"]";
    l["Espa361ol"] = "row[\"dChoiceName\"]";
    l["Fran347ais"] = "row[\"dChoiceName\"]";
    l["Portugu352s-Portugal"] = "row[\"dChoiceName\"]";
    l["Portugu352s-Brazil"] = "row[\"dChoiceName\"]";
    l["T374rk347e"] = "row[\"dChoiceName\"]";
    l["Norwegian-Bokm345l"] = "row[\"dChoiceName\"]";
    


p.tableName = "CHOICELISTITEM";
p.viewColumns = new Array();
p.viewColumns[0] = "dChoiceId";
p.viewColumns[1] = "dOrder";
p.viewColumns[2] = "dChoiceName";
p.viewColumns[3] = "dParentId";
p.viewColumns[4] = "dChoiceLevel";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ProductsLevel2View", "viewName");

    p.schInternalColumn = "U_NAME";
    p.schLabelColumn = "U_NAME";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"U_NAME\"]";
    l["Chinese-Simplified"] = "row[\"U_NAME\"]";
    l["Dansk"] = "row[\"U_NAME\"]";
    l["Deutsch"] = "row[\"U_NAME\"]";
    l["English-UK"] = "row[\"U_NAME\"]";
    l["Espa\u00f1ol"] = "row[\"U_NAME\"]";
    l["Fran\u00e7ais"] = "row[\"U_NAME\"]";
    l["Greek"] = "row[\"U_NAME\"]";
    l["Italiano"] = "row[\"U_NAME\"]";
    l["Japanese"] = "row[\"U_NAME\"]";
    l["Korean"] = "row[\"U_NAME\"]";
    l["Nederlands"] = "row[\"U_NAME\"]";
    l["Russian"] = "row[\"U_NAME\"]";
    l["Suomi"] = "row[\"U_NAME\"]";
    l["Svenska"] = "row[\"U_NAME\"]";
    l["Arabic"] = "row[\"U_NAME\"]";
    l["Czech"] = "row[\"U_NAME\"]";
    l["Hebrew"] = "row[\"U_NAME\"]";
    l["Magyar"] = "row[\"U_NAME\"]";
    l["Norwegian-Nynorsk"] = "row[\"U_NAME\"]";
    l["Polski"] = "row[\"U_NAME\"]";
    l["Espa361ol"] = "row[\"U_NAME\"]";
    l["Fran347ais"] = "row[\"U_NAME\"]";
    l["Portugu352s-Portugal"] = "row[\"U_NAME\"]";
    l["Portugu352s-Brazil"] = "row[\"U_NAME\"]";
    l["T374rk347e"] = "row[\"U_NAME\"]";
    l["Norwegian-Bokm345l"] = "row[\"U_NAME\"]";
    


p.tableName = "U_PRODUCTSLVL2";
p.viewColumns = new Array();
p.viewColumns[0] = "U_ID";
p.viewColumns[1] = "U_PARENT_ID";
p.viewColumns[2] = "U_NAME";
p.viewColumns[3] = "schCreateTimestamp";
p.viewColumns[4] = "schModifyTimestamp";
p.viewColumns[5] = "schSourceID";
p.viewColumns[6] = "U_NAME_ZH_CN";
p.viewColumns[7] = "U_NAME_JA";
p.viewColumns[8] = "U_NAME_KO";
p.viewColumns[9] = "U_NAME_FR";
p.viewColumns[10] = "U_NAME_DE";
p.viewColumns[11] = "U_NAME_IT";
p.viewColumns[12] = "U_NAME_PT";
p.viewColumns[13] = "U_NAME_ES";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ProductsLevel3View", "viewName");

    p.schInternalColumn = "U_NAME";
    p.schLabelColumn = "U_NAME";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"U_NAME\"]";
    


p.tableName = "U_PRODUCTSLVL3";
p.viewColumns = new Array();
p.viewColumns[0] = "U_ID";
p.viewColumns[1] = "U_PARENT_ID";
p.viewColumns[2] = "U_NAME";
p.viewColumns[3] = "schCreateTimestamp";
p.viewColumns[4] = "schModifyTimestamp";
p.viewColumns[5] = "schSourceID";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ProductsView", "viewName");

    p.schInternalColumn = "U_NAME";
    p.schLabelColumn = "U_NAME";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"U_NAME\"]";
    l["Chinese-Simplified"] = "row[\"U_NAME\"]";
    l["Dansk"] = "row[\"U_NAME\"]";
    l["Deutsch"] = "row[\"U_NAME\"]";
    l["English-UK"] = "row[\"U_NAME\"]";
    l["Espa\u00f1ol"] = "row[\"U_NAME\"]";
    l["Fran\u00e7ais"] = "row[\"U_NAME\"]";
    l["Greek"] = "row[\"U_NAME\"]";
    l["Italiano"] = "row[\"U_NAME\"]";
    l["Japanese"] = "row[\"U_NAME\"]";
    l["Korean"] = "row[\"U_NAME\"]";
    l["Nederlands"] = "row[\"U_NAME\"]";
    l["Russian"] = "row[\"U_NAME\"]";
    l["Suomi"] = "row[\"U_NAME\"]";
    l["Svenska"] = "row[\"U_NAME\"]";
    l["Arabic"] = "row[\"U_NAME\"]";
    l["Czech"] = "row[\"U_NAME\"]";
    l["Hebrew"] = "row[\"U_NAME\"]";
    l["Magyar"] = "row[\"U_NAME\"]";
    l["Norwegian-Nynorsk"] = "row[\"U_NAME\"]";
    l["Polski"] = "row[\"U_NAME\"]";
    l["Espa361ol"] = "row[\"U_NAME\"]";
    l["Fran347ais"] = "row[\"U_NAME\"]";
    l["Portugu352s-Portugal"] = "row[\"U_NAME\"]";
    l["Portugu352s-Brazil"] = "row[\"U_NAME\"]";
    l["T374rk347e"] = "row[\"U_NAME\"]";
    l["Norwegian-Bokm345l"] = "row[\"U_NAME\"]";
    


p.tableName = "U_PRODUCTS";
p.viewColumns = new Array();
p.viewColumns[0] = "U_ID";
p.viewColumns[1] = "U_NAME";
p.viewColumns[2] = "schCreateTimestamp";
p.viewColumns[3] = "schModifyTimestamp";
p.viewColumns[4] = "schSourceID";
p.viewColumns[5] = "U_NAME_ZH_CN";
p.viewColumns[6] = "U_NAME_JA";
p.viewColumns[7] = "U_NAME_KO";
p.viewColumns[8] = "U_NAME_FR";
p.viewColumns[9] = "U_NAME_DE";
p.viewColumns[10] = "U_NAME_IT";
p.viewColumns[11] = "U_NAME_PT";
p.viewColumns[12] = "U_NAME_ES";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "RAPubAssociatedList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "RAPubRequiredList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ReITABList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "RSA_BrandList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "RelTABList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "SC_RA_Preferred_codeList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "SC_IndustriesList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ServicesList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "SolutionsList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "TechnologiesLevel2View", "viewName");

    p.schInternalColumn = "U_NAME";
    p.schLabelColumn = "U_NAME";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"U_NAME\"]";
    


p.tableName = "U_TECHNOLOGIESLVL2";
p.viewColumns = new Array();
p.viewColumns[0] = "U_ID";
p.viewColumns[1] = "U_PARENT_ID";
p.viewColumns[2] = "U_NAME";
p.viewColumns[3] = "schCreateTimestamp";
p.viewColumns[4] = "schModifyTimestamp";
p.viewColumns[5] = "schSourceID";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "TechnologiesView", "viewName");

    p.schInternalColumn = "U_NAME";
    p.schLabelColumn = "U_NAME";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"U_NAME\"]";
    l["Chinese-Simplified"] = "row[\"U_NAME\"]";
    l["Dansk"] = "row[\"U_NAME\"]";
    l["Deutsch"] = "row[\"U_NAME\"]";
    l["English-UK"] = "row[\"U_NAME\"]";
    l["Espa\u00f1ol"] = "row[\"U_NAME\"]";
    l["Fran\u00e7ais"] = "row[\"U_NAME\"]";
    l["Greek"] = "row[\"U_NAME\"]";
    l["Italiano"] = "row[\"U_NAME\"]";
    l["Japanese"] = "row[\"U_NAME\"]";
    l["Korean"] = "row[\"U_NAME\"]";
    l["Nederlands"] = "row[\"U_NAME\"]";
    l["Russian"] = "row[\"U_NAME\"]";
    l["Suomi"] = "row[\"U_NAME\"]";
    l["Svenska"] = "row[\"U_NAME\"]";
    l["Arabic"] = "row[\"U_NAME\"]";
    l["Czech"] = "row[\"U_NAME\"]";
    l["Hebrew"] = "row[\"U_NAME\"]";
    l["Magyar"] = "row[\"U_NAME\"]";
    l["Norwegian-Nynorsk"] = "row[\"U_NAME\"]";
    l["Polski"] = "row[\"U_NAME\"]";
    l["Espa361ol"] = "row[\"U_NAME\"]";
    l["Fran347ais"] = "row[\"U_NAME\"]";
    l["Portugu352s-Portugal"] = "row[\"U_NAME\"]";
    l["Portugu352s-Brazil"] = "row[\"U_NAME\"]";
    l["T374rk347e"] = "row[\"U_NAME\"]";
    l["Norwegian-Bokm345l"] = "row[\"U_NAME\"]";
    


p.tableName = "U_TECHNOLOGIES";
p.viewColumns = new Array();
p.viewColumns[0] = "U_ID";
p.viewColumns[1] = "U_NAME";
p.viewColumns[2] = "schCreateTimestamp";
p.viewColumns[3] = "schModifyTimestamp";
p.viewColumns[4] = "schSourceID";
p.viewColumns[5] = "U_NAME_ZH_CN";
p.viewColumns[6] = "U_NAME_JA";
p.viewColumns[7] = "U_NAME_KO";
p.viewColumns[8] = "U_NAME_FR";
p.viewColumns[9] = "U_NAME_DE";
p.viewColumns[10] = "U_NAME_IT";
p.viewColumns[11] = "U_NAME_PT";
p.viewColumns[12] = "U_NAME_ES";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "UseLegacyList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "ViewableFileList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;




	var p = getOrCreateSchemaArray(g_schemaDefinition.views, "VisibilityOverrideList", "viewName");

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-US"] = "row[\"dOption\"]";
    l["Chinese-Simplified"] = "row[\"dOption\"]";
    l["Dansk"] = "row[\"dOption\"]";
    l["Deutsch"] = "row[\"dOption\"]";
    l["English-UK"] = "row[\"dOption\"]";
    l["Espa\u00f1ol"] = "row[\"dOption\"]";
    l["Fran\u00e7ais"] = "row[\"dOption\"]";
    l["Greek"] = "row[\"dOption\"]";
    l["Italiano"] = "row[\"dOption\"]";
    l["Japanese"] = "row[\"dOption\"]";
    l["Korean"] = "row[\"dOption\"]";
    l["Nederlands"] = "row[\"dOption\"]";
    l["Russian"] = "row[\"dOption\"]";
    l["Suomi"] = "row[\"dOption\"]";
    l["Svenska"] = "row[\"dOption\"]";
    l["Arabic"] = "row[\"dOption\"]";
    l["Czech"] = "row[\"dOption\"]";
    l["Hebrew"] = "row[\"dOption\"]";
    l["Magyar"] = "row[\"dOption\"]";
    l["Norwegian-Nynorsk"] = "row[\"dOption\"]";
    l["Polski"] = "row[\"dOption\"]";
    l["Espa361ol"] = "row[\"dOption\"]";
    l["Fran347ais"] = "row[\"dOption\"]";
    l["Portugu352s-Portugal"] = "row[\"dOption\"]";
    l["Portugu352s-Brazil"] = "row[\"dOption\"]";
    l["T374rk347e"] = "row[\"dOption\"]";
    l["Norwegian-Bokm345l"] = "row[\"dOption\"]";
    


p.tableName = "OptionsList";
p.viewColumns = new Array();
p.viewColumns[0] = "dKey";
p.viewColumns[1] = "dOption";
p.viewColumns[2] = "dOrder";
p.tableRowCreateTimestamp = "schCreateTimestamp";
p.tableRowModifyTimestamp = "schModifyTimestamp";

p.publishViewData = 1;


function registerChildField(thisField, childField)
{
    var children = g_schemaDefinition.childFields[thisField];
    if (typeof children == "undefined")
    {
        children = g_schemaDefinition.childFields[thisField] = new Array();
    } 
    children.push(childField);
} 

// Script to create an option list.
function buildOptionList(fieldName, onChangeScript)
{
	var list = document.createElement("select");
	var theSpan = document.getElementById(fieldName);
	theSpan.appendChild(list);
}


g_schemaDefinition.relationships = new Array();
var relationDef = getOrCreateSchemaArray(g_schemaDefinition.relationships, "Functions", "relationName");
relationDef.relationName = "Functions";
relationDef.table1Table = "U_FUNCTIONS";
relationDef.table1Column = "U_ID";
relationDef.table2Table = "U_FUNCTIONSLVL2";
relationDef.table2Column = "U_PARENT_ID";

var relationDef = getOrCreateSchemaArray(g_schemaDefinition.relationships, "DCL", "relationName");
relationDef.relationName = "DCL";
relationDef.table1Table = "CHOICELISTITEM";
relationDef.table1Column = "dChoiceId";
relationDef.table2Table = "CHOICELISTITEM";
relationDef.table2Column = "dParentId";

var relationDef = getOrCreateSchemaArray(g_schemaDefinition.relationships, "BussGrp2CostCenter", "relationName");
relationDef.relationName = "BussGrp2CostCenter";
relationDef.table1Table = "BussGroupTab";
relationDef.table1Column = "bgGrpID";
relationDef.table2Table = "CostCenterTab";
relationDef.table2Column = "bgGrpID";

var relationDef = getOrCreateSchemaArray(g_schemaDefinition.relationships, "ProductsLvl1ToLvl2", "relationName");
relationDef.relationName = "ProductsLvl1ToLvl2";
relationDef.table1Table = "U_PRODUCTS";
relationDef.table1Column = "U_ID";
relationDef.table2Table = "U_PRODUCTSLVL2";
relationDef.table2Column = "U_PARENT_ID";

var relationDef = getOrCreateSchemaArray(g_schemaDefinition.relationships, "ProductsLvl2ToLvl3", "relationName");
relationDef.relationName = "ProductsLvl2ToLvl3";
relationDef.table1Table = "U_PRODUCTSLVL2";
relationDef.table1Column = "U_ID";
relationDef.table2Table = "U_PRODUCTSLVL3";
relationDef.table2Column = "U_PARENT_ID";

var relationDef = getOrCreateSchemaArray(g_schemaDefinition.relationships, "Technologies", "relationName");
relationDef.relationName = "Technologies";
relationDef.table1Table = "U_TECHNOLOGIES";
relationDef.table1Column = "U_ID";
relationDef.table2Table = "U_TECHNOLOGIESLVL2";
relationDef.table2Column = "U_PARENT_ID";




g_schemaDefinition.fields = g_schemaDefinition.fieldSettings = new Array();
g_schemaDefinition.childFields = new Array();


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xBusinessGroup", "fieldName");
fieldDef.fieldName = "xBusinessGroup";
fieldDef.caption = "Business Group";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "BussGrpView";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xBrand", "fieldName");
fieldDef.fieldName = "xBrand";
fieldDef.caption = "Brand";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "chunval";
fieldDef.viewName = "BrandView";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_RA_Preferred_code", "fieldName");
fieldDef.fieldName = "xSC_RA_Preferred_code";
fieldDef.defaultValue = "No";
fieldDef.caption = "RA Preferred code";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "SC_RA_Preferred_codeList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xCatalog_Numbers", "fieldName");
fieldDef.fieldName = "xCatalog_Numbers";
fieldDef.caption = "Catalog Numbers";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xComplete", "fieldName");
fieldDef.fieldName = "xComplete";
fieldDef.defaultValue = "No";
fieldDef.caption = "Complete";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "chunval";
fieldDef.viewName = "CompleteList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xCostCenter", "fieldName");
fieldDef.fieldName = "xCostCenter";
fieldDef.caption = "Cost Center";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "CostCenterView";
fieldDef.multiselectStorageSeparator = ", ";
fieldDef.multiselectDisplaySeparator = ", ";
fieldDef.isDependentList = "1";
fieldDef.dependentOnField = "xBusinessGroup";
fieldDef.dependentRelationship = "BussGrp2CostCenter";
fieldDef.addEmptyOption = 0;
registerChildField("xBusinessGroup", "xCostCenter");

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xIndustries", "fieldName");
fieldDef.fieldName = "xIndustries";
fieldDef.caption = "Industries and Applications";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "multi";
fieldDef.viewName = "IndustriesList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xisDocChanged", "fieldName");
fieldDef.fieldName = "xisDocChanged";
fieldDef.caption = "isDocChanged";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xLanguage", "fieldName");
fieldDef.fieldName = "xLanguage";
fieldDef.defaultValue = "EN - English";
fieldDef.caption = "Language";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "chunval";
fieldDef.viewName = "LanguageList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xLegacyPubNumber", "fieldName");
fieldDef.fieldName = "xLegacyPubNumber";
fieldDef.caption = "LegacyPubNumber";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xMedia", "fieldName");
fieldDef.fieldName = "xMedia";
fieldDef.defaultValue = "P - Print";
fieldDef.caption = "Media";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "chunval";
fieldDef.viewName = "MediaList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xNotes", "fieldName");
fieldDef.fieldName = "xNotes";
fieldDef.caption = "Notes";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xObsoleteDate", "fieldName");
fieldDef.fieldName = "xObsoleteDate";
fieldDef.caption = "Obsolete Date";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xPartNumber", "fieldName");
fieldDef.fieldName = "xPartNumber";
fieldDef.caption = "PartNumber";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xProductCategory", "fieldName");
fieldDef.fieldName = "xProductCategory";
fieldDef.caption = "Product Category";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "chunval";
fieldDef.viewName = "ProductCategoryView";
fieldDef.multiselectStorageSeparator = ", ";
fieldDef.multiselectDisplaySeparator = ", ";
fieldDef.isDependentList = "1";
fieldDef.dependentOnField = "xBrand";
fieldDef.dependentRelationship = "DCL";
fieldDef.addEmptyOption = 0;
registerChildField("xBrand", "xProductCategory");

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xProductFamily", "fieldName");
fieldDef.fieldName = "xProductFamily";
fieldDef.caption = "Product Family";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "chunval";
fieldDef.viewName = "ProductFamilyView";
fieldDef.multiselectStorageSeparator = ", ";
fieldDef.multiselectDisplaySeparator = ", ";
fieldDef.isDependentList = "1";
fieldDef.dependentOnField = "xProductCategory";
fieldDef.dependentRelationship = "DCL";
fieldDef.addEmptyOption = 0;
registerChildField("xProductCategory", "xProductFamily");

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xProductLine", "fieldName");
fieldDef.fieldName = "xProductLine";
fieldDef.caption = "Product Line";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "chunval";
fieldDef.viewName = "ProductLineView";
fieldDef.multiselectStorageSeparator = ", ";
fieldDef.multiselectDisplaySeparator = ", ";
fieldDef.isDependentList = "1";
fieldDef.dependentOnField = "xProductFamily";
fieldDef.dependentRelationship = "DCL";
fieldDef.addEmptyOption = 0;
registerChildField("xProductFamily", "xProductLine");

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xPubDate", "fieldName");
fieldDef.fieldName = "xPubDate";
fieldDef.caption = "Publication Date";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xPublicationNumber", "fieldName");
fieldDef.fieldName = "xPublicationNumber";
fieldDef.caption = "Publication Number";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xRABulletin", "fieldName");
fieldDef.fieldName = "xRABulletin";
fieldDef.caption = "RABulletin";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xRegion", "fieldName");
fieldDef.fieldName = "xRegion";
fieldDef.defaultValue = "All";
fieldDef.caption = "Region";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "RegionList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xReleaseToFlag", "fieldName");
fieldDef.fieldName = "xReleaseToFlag";
fieldDef.caption = "Release Option";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "chunval";
fieldDef.viewName = "ReleaseToFlagList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xRevision", "fieldName");
fieldDef.fieldName = "xRevision";
fieldDef.caption = "Revision";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xRSA_Brand", "fieldName");
fieldDef.fieldName = "xRSA_Brand";
fieldDef.caption = "Brand (RSA/OEMax)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "RSA_BrandList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Applications", "fieldName");
fieldDef.fieldName = "xSC_Applications";
fieldDef.caption = "Applications";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Description_DE", "fieldName");
fieldDef.fieldName = "xSC_Description_DE";
fieldDef.caption = "Description (DE)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Description_EN", "fieldName");
fieldDef.fieldName = "xSC_Description_EN";
fieldDef.caption = "Description<br>(incl. contact<br>info. if desired)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Description_ES", "fieldName");
fieldDef.fieldName = "xSC_Description_ES";
fieldDef.caption = "Description (ES)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Description_FR", "fieldName");
fieldDef.fieldName = "xSC_Description_FR";
fieldDef.caption = "Description (FR)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Description_IT", "fieldName");
fieldDef.fieldName = "xSC_Description_IT";
fieldDef.caption = "Description (IT)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Description_JA", "fieldName");
fieldDef.fieldName = "xSC_Description_JA";
fieldDef.caption = "SC_Description_JA";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Description_KO", "fieldName");
fieldDef.fieldName = "xSC_Description_KO";
fieldDef.caption = "SC_Description_KO";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Description_PT", "fieldName");
fieldDef.fieldName = "xSC_Description_PT";
fieldDef.caption = "Description (PT)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Description_ZH", "fieldName");
fieldDef.fieldName = "xSC_Description_ZH";
fieldDef.caption = "SC_Description_ZH";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Downloads", "fieldName");
fieldDef.fieldName = "xSC_Downloads";
fieldDef.caption = "Number of Downloads";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Functions", "fieldName");
fieldDef.fieldName = "xSC_Functions";
fieldDef.caption = "Function";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "FunctionsView";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_FunctionsLevel2", "fieldName");
fieldDef.fieldName = "xSC_FunctionsLevel2";
fieldDef.caption = "Refined Product";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "FunctionsLevel2View";
fieldDef.multiselectStorageSeparator = ", ";
fieldDef.multiselectDisplaySeparator = ", ";
fieldDef.isDependentList = "1";
fieldDef.dependentOnField = "xSC_Functions";
fieldDef.dependentRelationship = "Functions";
fieldDef.addEmptyOption = 0;
registerChildField("xSC_Functions", "xSC_FunctionsLevel2");

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Industries", "fieldName");
fieldDef.fieldName = "xSC_Industries";
fieldDef.caption = "Industries";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "multi2";
fieldDef.viewName = "IndustriesView";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Products", "fieldName");
fieldDef.fieldName = "xSC_Products";
fieldDef.caption = "Product";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "multi2";
fieldDef.viewName = "ProductsView";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_ProductsLevel2", "fieldName");
fieldDef.fieldName = "xSC_ProductsLevel2";
fieldDef.caption = "Refined Product";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "multi2";
fieldDef.viewName = "ProductsLevel2View";
fieldDef.multiselectStorageSeparator = ", ";
fieldDef.multiselectDisplaySeparator = ", ";
fieldDef.isDependentList = "1";
fieldDef.dependentOnField = "xSC_Products";
fieldDef.dependentRelationship = "ProductsLvl1ToLvl2";
fieldDef.addEmptyOption = 0;
registerChildField("xSC_Products", "xSC_ProductsLevel2");

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_ProductsLevel3", "fieldName");
fieldDef.fieldName = "xSC_ProductsLevel3";
fieldDef.caption = "Further refined";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "ProductsLevel3View";
fieldDef.multiselectStorageSeparator = ", ";
fieldDef.multiselectDisplaySeparator = ", ";
fieldDef.isDependentList = "1";
fieldDef.dependentOnField = "xSC_ProductsLevel2";
fieldDef.dependentRelationship = "ProductsLvl2ToLvl3";
fieldDef.addEmptyOption = 0;
registerChildField("xSC_ProductsLevel2", "xSC_ProductsLevel3");

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Technologies", "fieldName");
fieldDef.fieldName = "xSC_Technologies";
fieldDef.caption = "Technology";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "multi2";
fieldDef.viewName = "TechnologiesView";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Rating", "fieldName");
fieldDef.fieldName = "xSC_Rating";
fieldDef.caption = "Rating";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_TechnologiesLevel2", "fieldName");
fieldDef.fieldName = "xSC_TechnologiesLevel2";
fieldDef.caption = "Refined Technology";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "TechnologiesLevel2View";
fieldDef.multiselectStorageSeparator = ", ";
fieldDef.multiselectDisplaySeparator = ", ";
fieldDef.isDependentList = "1";
fieldDef.dependentOnField = "xSC_Technologies";
fieldDef.dependentRelationship = "Technologies";
fieldDef.addEmptyOption = 0;
registerChildField("xSC_Technologies", "xSC_TechnologiesLevel2");

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Title_DE", "fieldName");
fieldDef.fieldName = "xSC_Title_DE";
fieldDef.caption = "Title (DE)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Title_EN", "fieldName");
fieldDef.fieldName = "xSC_Title_EN";
fieldDef.caption = "Title (EN)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Title_ES", "fieldName");
fieldDef.fieldName = "xSC_Title_ES";
fieldDef.caption = "Title (ES)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Title_FR", "fieldName");
fieldDef.fieldName = "xSC_Title_FR";
fieldDef.caption = "Title (FR)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Title_IT", "fieldName");
fieldDef.fieldName = "xSC_Title_IT";
fieldDef.caption = "Title (IT)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Title_JA", "fieldName");
fieldDef.fieldName = "xSC_Title_JA";
fieldDef.caption = "SC_Title_JA";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Title_KO", "fieldName");
fieldDef.fieldName = "xSC_Title_KO";
fieldDef.caption = "SC_Title_KO";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Title_PT", "fieldName");
fieldDef.fieldName = "xSC_Title_PT";
fieldDef.caption = "Title (PT)";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSC_Title_ZH", "fieldName");
fieldDef.fieldName = "xSC_Title_ZH";
fieldDef.caption = "SC_Title_ZH";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSequence", "fieldName");
fieldDef.fieldName = "xSequence";
fieldDef.caption = "Sequence";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xServices", "fieldName");
fieldDef.fieldName = "xServices";
fieldDef.caption = "Services and Support";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "multi";
fieldDef.viewName = "ServicesList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSolutions", "fieldName");
fieldDef.fieldName = "xSolutions";
fieldDef.caption = "Solutions";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "multi";
fieldDef.viewName = "SolutionsList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xSupersededBy", "fieldName");
fieldDef.fieldName = "xSupersededBy";
fieldDef.caption = "Superseded By";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xURID", "fieldName");
fieldDef.fieldName = "xURID";
fieldDef.caption = "URID";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xUseLegacy", "fieldName");
fieldDef.fieldName = "xUseLegacy";
fieldDef.defaultValue = "No";
fieldDef.caption = "UseLegacy";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "chunval";
fieldDef.viewName = "UseLegacyList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xViewableFile", "fieldName");
fieldDef.fieldName = "xViewableFile";
fieldDef.caption = "ViewableFile";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "ViewableFileList";

var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xVisibilityDefault", "fieldName");
fieldDef.fieldName = "xVisibilityDefault";
fieldDef.caption = "Visibility Default";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";


var fieldDef = getOrCreateSchemaArray(g_schemaDefinition.fieldSettings, "xVisibilityOverride", "fieldName");
fieldDef.fieldName = "xVisibilityOverride";
fieldDef.caption = "Visibility Override";
fieldDef.allowPreselect = "";
fieldDef.isRequired = "0";
fieldDef.optionListType = "choice";
fieldDef.viewName = "VisibilityOverrideList";


if (schemaDefCallback)
{
	schemaDefCallback();
}
else
{
	idctrace("base.js: schemaDefCallback() not defined.");
}






