
// 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.views = new Array();
g_schemaDefinition.viewLoaders = new Array();
g_schemaDefinition.viewCallbacks = new Array();
g_schemaDefinition.globalCallbacks = new Array();
g_schemaDefinition.initCallbacks = new Array();
g_schemaDefinition.globalCounter = 0;
g_schemaDefinition.traceExecution = 0;
g_schemaDefinition.optionListSizingFactor = 0.6
g_schemaDefinition.optionListMaxSize = 30
g_schemaDefinition.schemaBaseUrl = "/intradoc/resources/schema/";
g_schemaDefinition.alreadyLoadedViews = new Array();

function idctrace(message)
{
	if (g_schemaDefinition.traceExecution)
	{
		alert(message);
	}
}

// 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 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 updateDependentChoices(editField, fieldName)
{
	if (typeof fieldName == "undefined")
	{
		fieldName = editField.name;
	}
	var childList = g_schemaDefinition.childFields[fieldName];
	if (typeof childList == "undefined")
	{
		idctrace("childList is undefined for field " + fieldName);
		return;
	}
	for (var i = 0; i < childList.length; i++)
	{
		var childName = childList[i];
		var childDef = g_schemaDefinition.fields[childName];
		var parentExpression = childDef.parentKeyExpression;
		if (typeof parentExpression == "undefined")
		{
			parentExpression = "getParentValue(editField, fieldName, childDef)";
		}
		var parentValue = eval(parentExpression);
		var field = getSelectField(childDef.fieldName);
		if (!parentValue || parentValue.length == 0)
		{
			if (field) 
			{
				if (childDef && addEmptyOption(childDef))
				{
					resetSelectField(field, 1, "");
				}
				else
				{
					resetSelectField(field);
				}
				updateDependentChoices(field, childName);
			}
			return;
		}
		var relationshipPath = jsFilename(childDef.dependentRelationship);
		var childValuePath = jsFilename(childDef.viewName)
			+ "/" + relationshipPath + "/" 
			+ jsFilename(parentValue);
		if (g_schemaDefinition.alreadyLoadedViews[childValuePath] == null ||
			typeof g_schemaDefinition.alreadyLoadedViews[childValuePath] == "undefined")
		{
			registerViewCallback(childValuePath, new Array(
				publishViewValues, childDef.viewName, 
				childDef.fieldName, childDef.currentValue,
				childDef.dependentRelationship, parentValue));
			if (field)
			{
				resetSelectField(field, 1, "Loading values..."); 
			}
			loadViewValues(new Array(loadViewValues, childValuePath + ".js"));
		}
		else
		{
			idctrace("republishing based on values already retrieved from " + childValuePath);
			if (field)
			{
				resetSelectField(field, 1, "Loading values..."); 
			}
			publishViewValues(new Array(
				publishViewValues, childDef.viewName, 
				childDef.fieldName, childDef.currentValue,
				childDef.dependentRelationship, parentValue));
		}
	}
}

function getParentValue(editField, fieldName, childDef)
{
    var fieldDef = g_schemaDefinition.fields[fieldName];
	var selectField = getSelectField(fieldName);
    var index = selectField.selectedIndex;
    if (index == -1) return "";
    if (addEmptyOption(fieldDef)) index--;
    if (index < 0) return "";
    var theView = g_schemaDefinition.views[fieldDef.viewName];
	var theField;
    if (!childDef.isDependentList)
    {
		g_schemaDefinition.traceExecution = 1;
        idctrace("not a dependent list");
		return "";
	}
	var relationship = g_schemaDefinition.relationships
		[childDef.dependentRelationship];
	theField = relationship.table1Column;
	var theRows = fieldDef.currentRowSet;
	if (index >= theRows.length)
	{
		idctrace("it's odd for the selected index "
			+ "to be larger than the number of values");
		return "";
	}
    var theRow = theRows[index];
    var theValue = theRow[theField];
    return theValue;
}

function updateDependentChoicesCallback(arg)
{
    var fieldName = arg[1];
    var editField = document.getElementsByName(fieldName).item(0);
    updateDependentChoices(editField, fieldName);
}

function setFieldOption(fieldName, optionName, value)
{
	var fieldDef = g_schemaDefinition.fields[fieldName];
	if (typeof fieldDef == "undefined")
	{
		fieldDef = g_schemaDefinition.fields[fieldName] = new Object();
		fieldDef.fieldName = fieldName;
	}
	eval("fieldDef." + optionName + " = " + value);
}

function getSelectField(fieldName)
{
	var field = document.getElementsByName(fieldName).item(0);
	if (typeof field == "undefined" || field.type != "select-one")
	{
		field = document.getElementsByName(fieldName + ".Options").item(0);
	}
	return field;
}

function getFieldDefinition(fieldName)
{
	var fieldDef = g_schemaDefinition.fields[fieldName];
	if (fieldDef)
	{
		return fieldDef;
	}
	var index = fieldName.indexOf(".Options");
	if (index > 0)
	{
		fieldName = fieldName.substring(0, index);
		fieldDef = getFieldDefinition(fieldName);
		return fieldDef;
	}
}

function resetSelectField(field, setInitialElement, initialElementValue)
{
	
		try
		{
			while (field.length > 0)
			{
				field.remove(0);
			}
		}
		catch (e)
		{
			idctrace("resetSelectField: suppressing IE bug with timing issues on removal of elements from option lists." + e);
		}
		if (setInitialElement)
		{
			if (!initialElementValue) initialElementValue="";
			var element = document.createElement("option");
			element.value = "";
			element.selected = true;
			element.appendChild(document.createTextNode(initialElementValue));
			field.appendChild(element);
		}
	
}

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)
{
	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):
			rc += "@";
			rc += toHexString(c, 4);
			break;
		default:
			if (c > 32 && c < 128) rc += theChar;
			else rc += "@" + toHexString(c, 4);
		}
	}
	return rc.toLowerCase();
}


function doCallbacks(callbacks, errorPrefix)
{
	if (!callbacks)
	{
		
		return;
	}
	while (callbacks.length > 0)
	{
		var callback = callbacks.shift();
	
		callback[0](callback);
	
	}
}

function registerDefinition(viewName)
{
	idctrace("registerDefinition(" + viewName + ") called.");
	if (g_schemaDefinition.viewCallbacks[viewName])
	{
		var callbacks = g_schemaDefinition.viewCallbacks[viewName];
		doCallbacks(callbacks, "registerDefinition(" + viewName + "): ");
	}
	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];
		idctrace("loadViewValues() with \"" + viewPath + "\".");
		var scriptChildNode = document.createElement("script");
		scriptChildNode.src = g_schemaDefinition.schemaBaseUrl + "views/" + viewPath;
		document.body.appendChild(scriptChildNode);
	
}
function addEmptyOption(fieldDef)
{
	if (typeof fieldDef == "undefined")
	{
		return 0;
	}
	return (fieldDef.addEmptyOption || !fieldDef.optionsAllowPreselect)
}

function publishViewValues(arg)
{
	
		var viewName = arg[1];
		var fieldName = arg[2];
		var fieldValue = arg[3];
		var depName = arg[4];
		var parentValue = arg[5];

		idctrace("starting publishViewValues() with view \"" + viewName + 
			"\" and field \"" + fieldName + "\"");
		var field = getSelectField(fieldName);
		if (typeof field == "undefined")
		{
			alert("publishViewValues(): the field " + fieldName + " is not defined.");
			return;
		}
		var fieldDef = getFieldDefinition(fieldName);
		if (fieldDef && addEmptyOption(fieldDef))
		{
			resetSelectField(field, 1, "");
		}
		else
		{
			resetSelectField(field);
		}

		var viewData = g_schemaDefinition.views[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 = viewData.rows;
		}
		else
		{
			rows = viewData.deps[depName].subsets[parentValue];
		}
		fieldDef.currentRowSet = rows;
		var setToLength = 18;
		for (var i = 0; i < rows.length; i++)
		{   
			var row = rows[i];
			var value;
			if (viewData.schInternalColumn)
			{
				value = row[viewData.schInternalColumn];
			}
			var label = null;
			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["DefaultDisplay"];
			if (label == null || typeof label == "undefined") label = row[viewData.schLabelColumn];
			if (label == null || typeof label == "undefined") label = value;
			if (label == null || typeof label == "undefined") label = "undefined";
			if (label == null || typeof label == "undefined") value = label;
			// AJK: evaluate script for the label.
			var element = document.createElement("option");
			var valueTrimmed = schemaTrim(value);
			var fieldValueTrimmed = schemaTrim(fieldValue);
			element.value = value;
			if (fieldValueTrimmed && fieldValueTrimmed.length > 0 && valueTrimmed == fieldValueTrimmed)
			{
				element.selected = true;
			}
			if (label.length > setToLength) setToLength = label.length;
			element.appendChild(document.createTextNode(label));
			field.appendChild(element);
		}
		updateDependentChoices(fieldDef, fieldDef.fieldName);
		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 (setLength) field.style.width = setToLength + "em";

		idctrace("finished publishViewValues() with view \"" + viewName + 
			"\" and field \"" + fieldName + "\"");
			
		var viewPath;
		if (typeof depName != "undefined")
		{
			var relationshipPath = jsFilename(depName);
			viewPath = jsFilename(viewName) + "/" + relationshipPath + "/"  + jsFilename(parentValue);
			g_schemaDefinition.alreadyLoadedViews[viewPath] = 1;
		}
		else
		{
			viewPath = jsFilename(viewName);
		}
			
		
		idctrace("finished publishViewValues() with view path \"" + viewPath + 
			"\" and field \"" + fieldName + "\"");
	
}


function registerViewCallback(viewName, callback)
{
	var callbacks = g_schemaDefinition.viewCallbacks[viewName];
	if (!callbacks)
	{
		callbacks = g_schemaDefinition.viewCallbacks[viewName] = new Array();
	}
	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 (!g_schemaDefinition.globalCallbacks)
	{
		g_schemaDefinition.globalCallbacks = new Array();
	}
	var globalCallbacks = g_schemaDefinition.globalCallbacks;
	globalCallbacks[globalCallbacks.length] = callback;
}

function registerView(viewName, fieldName, initialValue)
{
	var fieldDef = getFieldDefinition(fieldName);
	if (fieldDef && convertToBool(fieldDef.isDependentList, false))
	{
		return;
	}

    var loadCallback = new Array(loadViewValues, 
		jsFilename(viewName) + "/all.js");
    var publishCallback = new Array(publishViewValues, viewName,
        fieldName, initialValue);

	var loaders = g_schemaDefinition.viewLoaders;
	loaders[loaders.length] = loadCallback;
	g_schemaDefinition.globalCounter++;
	registerViewCallback(viewName, publishCallback);
}

function finalizeDisplay()
{   
	
		idctrace("finalizeDisplay() started");
		doCallbacks(g_schemaDefinition.viewLoaders, "finalizeDisplay(): ");
		idctrace("finalizeDisplay() done");
	
}


// Build up the child to parent relationship array.
g_schemaDefinition.views = new Array();





	var p = g_schemaDefinition.views["ActivityList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["ActivityList"] = new Object();
		p.viewName = "ActivityList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["Activity_TypeList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Activity_TypeList"] = new Object();
		p.viewName = "Activity_TypeList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["Area_of_FocusList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Area_of_FocusList"] = new Object();
		p.viewName = "Area_of_FocusList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["CategoryView"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["CategoryView"] = new Object();
		p.viewName = "CategoryView";
	}

// Standard properties for the view

    p.schInternalColumn = "CategoryName";
    p.schLabelColumn = "CategoryName";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"CategoryName\"]";
    






	var p = g_schemaDefinition.views["Content_TypeList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Content_TypeList"] = new Object();
		p.viewName = "Content_TypeList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["docAuthors"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["docAuthors"] = new Object();
		p.viewName = "docAuthors";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["docFormats"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["docFormats"] = new Object();
		p.viewName = "docFormats";
	}

// Standard properties for the view

    p.schInternalColumn = "dFormat";
    p.schLabelColumn = "dFormat";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dFormat\"]";
    






	var p = g_schemaDefinition.views["docTypes"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["docTypes"] = new Object();
		p.viewName = "docTypes";
	}

// Standard properties for the view

    p.schInternalColumn = "dDocType";
    p.schLabelColumn = "dDocType";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dDocType\"]";
    






	var p = g_schemaDefinition.views["EMGKRList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["EMGKRList"] = new Object();
		p.viewName = "EMGKRList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["EMGKRType"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["EMGKRType"] = new Object();
		p.viewName = "EMGKRType";
	}

// Standard properties for the view

    p.schInternalColumn = "EMGKRName";
    p.schLabelColumn = "EMGKRName";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"EMGKRName\"]";
    






	var p = g_schemaDefinition.views["EMGKR_TypeList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["EMGKR_TypeList"] = new Object();
		p.viewName = "EMGKR_TypeList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["First"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["First"] = new Object();
		p.viewName = "First";
	}

// Standard properties for the view

    p.schInternalColumn = "First_Desc";
    p.schLabelColumn = "First_Desc";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"First_Desc\"]";
    






	var p = g_schemaDefinition.views["firstList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["firstList"] = new Object();
		p.viewName = "firstList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["Geographic_keywordsList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Geographic_keywordsList"] = new Object();
		p.viewName = "Geographic_keywordsList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["GeoKeywordsList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["GeoKeywordsList"] = new Object();
		p.viewName = "GeoKeywordsList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["IDCPlacementList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["IDCPlacementList"] = new Object();
		p.viewName = "IDCPlacementList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["IDCSecureChangeList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["IDCSecureChangeList"] = new Object();
		p.viewName = "IDCSecureChangeList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["IDCSecureNotesList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["IDCSecureNotesList"] = new Object();
		p.viewName = "IDCSecureNotesList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["IDCSecurePrintList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["IDCSecurePrintList"] = new Object();
		p.viewName = "IDCSecurePrintList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["IDCSecureSelectList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["IDCSecureSelectList"] = new Object();
		p.viewName = "IDCSecureSelectList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["IDCWatermarkList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["IDCWatermarkList"] = new Object();
		p.viewName = "IDCWatermarkList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["KeywordsList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["KeywordsList"] = new Object();
		p.viewName = "KeywordsList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["Language_AvailabilityList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Language_AvailabilityList"] = new Object();
		p.viewName = "Language_AvailabilityList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["Media_TypeList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Media_TypeList"] = new Object();
		p.viewName = "Media_TypeList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["metaFieldTypes"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["metaFieldTypes"] = new Object();
		p.viewName = "metaFieldTypes";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["PortalList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["PortalList"] = new Object();
		p.viewName = "PortalList";
	}

// Standard properties for the view

    p.schInternalColumn = "Portal_name";
    p.schLabelColumn = "Portal_name";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"Portal_name\"]";
    






	var p = g_schemaDefinition.views["PortalsList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["PortalsList"] = new Object();
		p.viewName = "PortalsList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["roles"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["roles"] = new Object();
		p.viewName = "roles";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["Second"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Second"] = new Object();
		p.viewName = "Second";
	}

// Standard properties for the view

    p.schInternalColumn = "second_desc";
    p.schLabelColumn = "second_desc";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"second_desc\"]";
    






	var p = g_schemaDefinition.views["secondList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["secondList"] = new Object();
		p.viewName = "secondList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["Thematic_keywordList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Thematic_keywordList"] = new Object();
		p.viewName = "Thematic_keywordList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["Thematic_keywordsList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Thematic_keywordsList"] = new Object();
		p.viewName = "Thematic_keywordsList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["UNPAN_ClassificationList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["UNPAN_ClassificationList"] = new Object();
		p.viewName = "UNPAN_ClassificationList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["Users_UserLocaleList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Users_UserLocaleList"] = new Object();
		p.viewName = "Users_UserLocaleList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    






	var p = g_schemaDefinition.views["Users_UserTypeList"];
	if (typeof p == "undefined")
	{
		p = g_schemaDefinition.views["Users_UserTypeList"] = new Object();
		p.viewName = "Users_UserTypeList";
	}

// Standard properties for the view

    p.schInternalColumn = "dOption";
    p.schLabelColumn = "dOption";
    



    var l = p.schClientLabelExpression = new Array();
    l["English-UK"] = "row[\"dOption\"]";
    




function registerChildField(thisField, childField)
{
    var children = g_schemaDefinition.childFields[thisField];
    if (typeof children == "undefined")
    {
        children = g_schemaDefinition.childFields[thisField] = new Array();
    } 
    children.push(childField);
} 

g_schemaDefinition.childFields = new Array();
g_schemaDefinition.fields = new Array();



var fieldDef = new Object();
fieldDef.fieldName = "xAbstract";


g_schemaDefinition.fields["xAbstract"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xActivity";
fieldDef.viewName = "ActivityList";

g_schemaDefinition.fields["xActivity"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xArea_of_Focus";
fieldDef.viewName = "Area_of_FocusList";

g_schemaDefinition.fields["xArea_of_Focus"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xCategory";
fieldDef.viewName = "CategoryView";

g_schemaDefinition.fields["xCategory"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xConference_Short_Title";


g_schemaDefinition.fields["xConference_Short_Title"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xContent_Type";
fieldDef.viewName = "Content_TypeList";

g_schemaDefinition.fields["xContent_Type"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xDate_of_Meeting_Mission";


g_schemaDefinition.fields["xDate_of_Meeting_Mission"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xDate_of_Publication";


g_schemaDefinition.fields["xDate_of_Publication"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xEMGKR";


g_schemaDefinition.fields["xEMGKR"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xEMGKR_Type";


g_schemaDefinition.fields["xEMGKR_Type"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xfirst";


g_schemaDefinition.fields["xfirst"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xGeographic_keywords";
fieldDef.viewName = "Area_of_FocusList";

g_schemaDefinition.fields["xGeographic_keywords"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xISBN";


g_schemaDefinition.fields["xISBN"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xLanguage_Availability";
fieldDef.viewName = "Area_of_FocusList";

g_schemaDefinition.fields["xLanguage_Availability"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xLocation";


g_schemaDefinition.fields["xLocation"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xMedia_Type";
fieldDef.viewName = "Area_of_FocusList";

g_schemaDefinition.fields["xMedia_Type"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xMonographs_Author_Editor";


g_schemaDefinition.fields["xMonographs_Author_Editor"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xMonographs_Title";


g_schemaDefinition.fields["xMonographs_Title"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xNotes";


g_schemaDefinition.fields["xNotes"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xNo_of_Pages";


g_schemaDefinition.fields["xNo_of_Pages"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xPlace_of_Meeting_Mission";


g_schemaDefinition.fields["xPlace_of_Meeting_Mission"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xPlace_of_Publication";


g_schemaDefinition.fields["xPlace_of_Publication"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xPortals";
fieldDef.viewName = "PortalsList";

g_schemaDefinition.fields["xPortals"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xPublisher";


g_schemaDefinition.fields["xPublisher"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xPublisher_Name";


g_schemaDefinition.fields["xPublisher_Name"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xsecond";
fieldDef.viewName = "Second";

g_schemaDefinition.fields["xsecond"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xSource";


g_schemaDefinition.fields["xSource"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xThematic_keywords";
fieldDef.viewName = "Thematic_keywordsList";

g_schemaDefinition.fields["xThematic_keywords"] = fieldDef;



var fieldDef = new Object();
fieldDef.fieldName = "xUniversal_Call_No";


g_schemaDefinition.fields["xUniversal_Call_No"] = fieldDef;



g_schemaDefinition.relationships = new Array();


var relationDef = new Object();
relationDef.relationName = "Category";
relationDef.table1Table = "Category";
relationDef.table1Column = "CategoryID";
relationDef.table2Table = "EMGKRType";
relationDef.table2Column = "CategoryID";
g_schemaDefinition.relationships["Category"] = relationDef;



if (schemaDefCallback)
{
	schemaDefCallback();
}
else
{
	idctrace("base.js: schemaDefCallback() not defined.");
}




