/*****************************************************************************************************************************
 * JavaScript to standardise the handling of exceptions client side
 */
 
function LogVerbosity()
{
	this.Audit = -1;
	this.NotSet = 0;
	this.Fatal = 1;
	this.Serious = 2;
	this.Warning = 3;
	this.Information = 4;
	this.SuperVerbose = 5;

	this.getVerbosityName = function(verbosity) {
		var verbosityWord = 'NotSet';
		switch(verbosity)
		{
			case -1:
				verbosityWord='Audit';
				break;
			case 0:
				verbosityWord='NotSet';
				break;
			case 1:
				verbosityWord='Fatal';
				break;
			case 2:
				verbosityWord='Serious';
				break;
			case 3:
				verbosityWord='Warning';
				break;
			case 4:
				verbosityWord='Information';
				break;
			case 5:
				verbosityWord='SuperVerbose';
				break;
		}
		return verbosityWord;
		}
}
var logVerbosity = new LogVerbosity();

// Overloads (the types are also listed for ease of reading):
//
// Log(Exception ex, int verbosity) - 2 args
// Log(String information, int verbosity); - 2 args

// Log(Exception ex, Array args, int verbosity) - 3 args
// Log(Exception ex, String information, int verbosity) - 3 args

// Log(Exception ex, String information, Array args, int verbosity) - 4 args
// Log(Exception ex, String information, Array parameters, int verbosity) - 4 args

// Log(Exception ex, String information, Array parameters, Array args, int verbosity) - 5 args

// ex is the exception
// args is the arguments of the function which caused it (as an associative array)
// information is free text
// parameters is merge data to be added to information (as an associative array)
// verbosity is a verbosity level.
function Log(ex, arg2, arg3, arg4, arg5)
{    
    // Create our object of argument pairs
    var argPairs = new Object();
	// Allow overloading of this function
	if(typeof(arg2) == 'number' && typeof(arg3) == 'undefined' && typeof(arg4) == 'undefined' && typeof(arg5) == 'undefined')
	{
	    // Log(ex, verbosity)
	    argPairs['verbosity'] = arg2;
	}
	else if(typeof(arg2) == 'object' && typeof(arg3) == 'number' && typeof(arg4) == 'undefined' && typeof(arg5) == 'undefined')
	{
	    // Log(ex, args, verbosity)
	    argPairs['args'] = '';
	    for(var key in arg2)
	        argPairs['args'] += '(' + key + ':' + arg2[key] + ')';
	    argPairs['verbosity'] = arg3;
	}
	else if(typeof(arg2) == 'string' && typeof(arg3) == 'object' && typeof(arg4) == 'number' && typeof(arg5) == 'undefined')
	{
	    // Log(ex, information, args, verbosity)
	    argPairs['information'] = arg2;
	    argPairs['args'] = '';
	    for(var key in arg3)
	        argPairs['args'] += '(' + key + ':' + arg3[key] + ')';
	    argPairs['verbosity'] = arg4;
	}
	else if(typeof(arg2) == 'string' && typeof(arg3) == 'object' && typeof(arg4) == 'object' && typeof(arg5) == 'number')
	{
	    // Log(ex, information, parameters, args, verbosity)
	    argPairs['information'] = arg2;
	    argPairs['params'] = '';
	    for(var key in arg3)
	        argPairs['params'] += '(' + key + ':' + arg3[key] + ')';
	    argPairs['args'] = '';
	    for(var key in arg4)
	        argPairs['args'] += '(' + key + ':' + arg4[key] + ')';
	    argPairs['verbosity'] = arg5;
	}
	else if(typeof(arg2) == 'string' && typeof(arg3) == 'object' && typeof(arg4) == 'number' && typeof(arg5) == 'undefined')
	{
	    // Log(ex, information, parameters, verbosity)
	    argPairs['information'] = arg2;
	    argPairs['params'] = '';
	    for(var key in arg3)
	        argPairs['params'] += '(' + key + ':' + arg3[key] + ')';
	    argPairs['verbosity'] = arg4;
	}
	else if(typeof(arg2) == 'string' && typeof(arg3) == 'number' && typeof(arg4) == 'undefined' && typeof(arg5) == 'undefined')
	{
	    // Log(ex, information, verbosity)
	    argPairs['information'] = arg2;
	    argPairs['verbosity'] = arg3;
	}
	
	var d = new Date();
	var t = d.getTime();
    
    // stuff common to all types of error
	argPairs['browser'] = navigator.appName;
	argPairs['browserversion'] = navigator.appVersion;
	var sBoothKey;
    sBoothKey = '';
	if (top.session) 
    {
	    sBoothKey = top.session.getValue('sessBoothKey') 
    };
	argPairs['booth'] = sBoothKey;
	argPairs['timestamp'] = t;
	
	// add standard exception stuff
	if(typeof(ex) == 'object')
	{
        argPairs['name'] = ex.name;
        argPairs['number'] = ex.number;
        argPairs['message'] = ex.message;
        argPairs['description'] = ex.description;
    }
    else
    {
        argPairs['message'] = ex;
    }
    
    // These don't work in IE!!
    argPairs['file'] = ex.fileName;
    argPairs['line'] = ex.lineNumber;
    
    // Fix for IE - can only get the function this one was called from, but its better than nothing!
    if(ex.stack === undefined)
    {
        if ((argPairs.verbosity >= 5 && top.session.getValue("isDebug")) || argPairs.verbosity < 5)
        {
            var fnCode = "" + Log.caller;
            fnCode = fnCode.replace(/function (.*\(.*\)).*/g, "$1");
            var fnLines = fnCode.split('\n');
            var fnName = fnLines[0];
            argPairs['stack'] = 'First line of caller function was "' + fnName + '"';
        }
        else
        {
            var fnCode = "" + Log.caller;
            argPairs['stack'] = 'Caller function was "' + fnCode + '"';
        }
    }
    else
    {
        // Firefox maintains a full call stack, so just use that
        argPairs['stack'] = ex.stack;
    }
    
	// make the argument pairs into a formatted URL
	var errorDisplayBaseURL = '/EMRRoot/errorDisplayPage.aspx?';
	var errorDisplayURL = '';
	for(var argName in argPairs)
	{
	    errorDisplayURL += '&' + argName + '=' + escape(argPairs[argName]);
	}
	errorDisplayURL = errorDisplayBaseURL + errorDisplayURL.substring(1,errorDisplayURL.length);
	
	// Case 49640 - Only show the alert if built as debug
	if (top.session && top.session.getValue("isDebug")) {
	    window.open(errorDisplayURL,'errormessage' + t,'scrollbars=yes,resizable=yes,width=800,height=220,modal=yes');
	}
	else 
	{
	    // MJA 07Jul08 case 62282 - prevent blowup on IE6.
	    try
	    {
	        EMR.Ajax.get(errorDisplayURL);
	    }
	    catch(ex)
	    {
	        // Case 100180 - reformat the URL to be more readable before displaying it to make the message more usefull in error reports.
	        var message = errorDisplayURL;
	        message = message.replace(/&/g, '\n');
	        message = unescape(message);
	        message = 'An error has occurred, probably your session has expired. Please logon again. If you see this error again, please send a screenshot to smartFOCUS DIGITAL support.\n\nError details:\n' + message;
	        // MJA 23Oct09 case 130290 if running on a dev machine (reg key Debugging set to true) then fire the JS debugger.
	        if (top.enableDebug)
	        {
	            debugger;
	        }
	        alert(message); // TODO: Decide if we want to do this or not.
	    }
	}
	
}



function Dictionary(){this.keys=new Array();this.indexes=new Object();this.items=new Array();this.add=function(key,item){var index=this.indexes[key];if(index==null){index=this.keys.length;this.keys[index]=key;this.indexes[key]=index;this.length=this.keys.length;}
if(this.items[index]&&typeof(this.items[index].dispose)=='function')
this.items[index].dispose();this.items[index]=item;return this.items[index];}
this.remove=function(key){var index=this.indexes[key];if(index!=null){var newKeyArray=new Array();var newItemArray=new Array();var newIndexList=new Object();for(var i=0;i<this.keys.length;i++)
{if(i!=index){newIndexList[this.keys[i]]=newKeyArray.length;newKeyArray[newKeyArray.length]=this.keys[i];newItemArray[newItemArray.length]=this.items[i];}}
this.keys=newKeyArray;this.items=newItemArray;this.indexes=newIndexList;this.length=this.keys.length;return true;}
return false;}
this.clear=function(){this.keys=null;this.keys=new Array();this.indexes=null;this.indexes=new Object();for(var index=0;index<this.items.length;index++){if(typeof(this.items[index].dispose)=='function')
this.items[index].dispose();}
this.items=null;this.items=new Array();this.length=null;this.length=0;}
this.length=0;}
function DataSet(name,xml){this.tables=new Dictionary();this.timeStamp=null;this.TTL=-1;this.getXml=function(){var ret=null;if(document.implementation&&document.implementation.createDocument){ret=document.implementation.createDocument('','',null);}
else{ret=new ActiveXObject('Microsoft.XMLDOM');}
if(ret==null){Log('Unable to build xml response.  Could not create xml document.',logVerbosity.Warning);return null;}
var dataSetNode=ret.createElement('DataSet');var attributeNode=null;attributeNode=ret.createAttribute('Name')
attributeNode.nodeValue=this.name;dataSetNode.attributes.setNamedItem(attributeNode);attributeNode=ret.createAttribute('TimeStamp')
attributeNode.nodeValue=this.TimeStamp;dataSetNode.attributes.setNamedItem(attributeNode);ret.appendChild(dataSetNode);attributeNode=ret.createAttribute('ClientSideTTL')
attributeNode.nodeValue=this.TTL;dataSetNode.attributes.setNamedItem(attributeNode);ret.appendChild(dataSetNode);var tableNode=null;var rowNode=null;var fieldNode=null;var currentTable=null;var currentRow=null;for(var tableIndex=0;tableIndex<this.tables.length;tableIndex++){currentTable=this.tables.items[tableIndex]
tableNode=ret.createElement('Table');attributeNode=ret.createAttribute('Name');attributeNode.nodeValue=currentTable.name;tableNode.attributes.setNamedItem(attributeNode);attributeNode=ret.createAttribute('UniqueId');attributeNode.nodeValue=currentTable.uniqueId;tableNode.attributes.setNamedItem(attributeNode);for(var rowIndex=0;rowIndex<currentTable.rows.length;rowIndex++){currentRow=currentTable.rows.items[rowIndex];rowNode=ret.createElement('Row');for(var fieldIndex=0;fieldIndex<currentRow.fields.length;fieldIndex++){currentField=currentRow.fields.items[fieldIndex];fieldNode=ret.createElement('Field');attributeNode=ret.createAttribute('Name');attributeNode.nodeValue=currentField.name;fieldNode.attributes.setNamedItem(attributeNode);attributeNode=ret.createAttribute('Value');attributeNode.nodeValue=currentField.value;fieldNode.attributes.setNamedItem(attributeNode);attributeNode=ret.createAttribute('DataType');attributeNode.nodeValue=currentField.dataType;fieldNode.attributes.setNamedItem(attributeNode);rowNode.appendChild(fieldNode);}
tableNode.appendChild(rowNode);}
dataSetNode.appendChild(tableNode);}
dataSetNode=null;attributeNode=null;tableNode=null;rowNode=null;fieldNode=null;currentTable=null;currentRow=null;return ret;}
this.setXml=function(xmlDoc){this.tables.clear();if(xmlDoc!=null&&xmlDoc.documentElement!=null){var attributes=xmlDoc.documentElement.attributes;for(var attributeIndex=0;attributeIndex<attributes.length;attributeIndex++){switch(attributes[attributeIndex].nodeName){case'Name':this.name=attributes[attributeIndex].nodeValue;break;case'TimeStamp':this.timeStamp=attributes[attributeIndex].nodeValue;break;case'ClientSideTTL':this.TTL=attributes[attributeIndex].nodeValue*1;break;}}
attribtues=null;var newTable=null;var newRow=null;var newField=null;var tableNode=xmlDoc.documentElement.firstChild;var rowNode=null;var fieldNode=null;while(tableNode!=null){if(tableNode.nodeName=='Table'){newTable=createNewTable(tableNode,this);rowNode=tableNode.firstChild;while(rowNode!=null){if(rowNode.nodeName=='Row'){newRow=new DataRow(newTable);fieldNode=rowNode.firstChild;while(fieldNode!=null){if(fieldNode.nodeName=='Field'){newField=createNewField(fieldNode,newRow);newRow.fields.add(newField.name,newField);}
fieldNode=fieldNode.nextSibling;}
newTable.rows.add(newRow.fields.items[newRow.fields.indexes[newTable.uniqueId]].value,newRow);}
rowNode=rowNode.nextSibling;}
this.tables.add(newTable.name,newTable);}
tableNode=tableNode.nextSibling;}
newTable=null;newRow=null;newField=null;tableNode=null;rowNode=null;fieldNode=null;}}
if(xml!=null){this.setXml(xml);xml=null;}
this.clone=function(){var newDataSet=new DataSet(this.name,null);newDataSet.timeStamp=this.timeStamp;for(var i=0;i<this.tables.length;i++){newDataSet.tables.add(this.tables.keys[i],this.tables.items[i].clone(newDataSet));}
return newDataSet;}
this.name=(name==null?(this.name==null?'NewDataSet':this.name):name);this.dispose=function(){for(var i=0;i<this.tables.length;i++)
if(this.tables.items[i].dispose)
this.tables.items[i].dispose();this.tables=null;this.timeStamp=null;this.name=null;}
function createNewTable(tableNode,dataSet){var tableName='';var tableUniqueId='';var availableRows=-1;for(var attributeIndex=0;attributeIndex<tableNode.attributes.length;attributeIndex++){switch(tableNode.attributes[attributeIndex].nodeName)
{case"Name":tableName=tableNode.attributes[attributeIndex].nodeValue;break;case"UniqueId":tableUniqueId=tableNode.attributes[attributeIndex].nodeValue;break;case"AvailableRows":availableRows=tableNode.attributes[attributeIndex].nodeValue;break;}}
return new DataTable(tableName,tableUniqueId,dataSet,availableRows);}
function createNewField(fieldNode,row){var fieldName='';var fieldValue='';var fieldDataType='';for(var attributeIndex=0;attributeIndex<fieldNode.attributes.length;attributeIndex++){switch(fieldNode.attributes[attributeIndex].nodeName)
{case"Name":fieldName=fieldNode.attributes[attributeIndex].nodeValue;break;case"Value":fieldValue=fieldNode.attributes[attributeIndex].nodeValue;break;case"DataType":fieldDataType=fieldNode.attributes[attributeIndex].nodeValue.toLowerCase();break;}}
return new DataField(fieldName,fieldValue,fieldDataType,row);}}
function DataTable(name,uniqueId,dataSet,availableRows){if(Dictionary==null){Log('Unable to create new DataTable, underlying Dictionary class could not be found.',logVerbosity.Warning);return null;}
this.rows=new Dictionary();this.name=name;this.uniqueId=uniqueId;this.dataSet=dataSet;this.availableRows=availableRows;this.cachedIndexes=new Object();this.getColumnIndex=function(columnName)
{if(this.cachedIndexes[columnName])
{return this.cachedIndexes[columnName];}else
{if(this.rows&&this.rows.length>0)
{var index=this.rows.items[0].getFieldIndex(columnName);this.cachedIndexes[columnName]=index;return index;}
else
{return null;}}
return null;}
this.getRowById=function(rowId)
{if(this.rows)
{var index=this.rows.indexes[rowId];if(index!=null)
{return this.rows.items[index];}}
return null;}
this.addRow=function(row)
{this.rows.add(row.getFieldValue(this.uniqueId),row.clone(this));}
this.clone=function(parent){var newDataTable=new DataTable(this.name,this.uniqueId,parent,this.availableRows);for(var i=0;i<this.rows.length;i++){newDataTable.rows.add(this.rows.keys[i],this.rows.items[i].clone(newDataTable));}
return newDataTable;}
this.dispose=function(){for(var i=0;i<this.rows.length;i++)
if(this.rows.items[i].dispose)
this.rows.items[i].dispose();this.rows=null;this.name=null;this.uniqueId=null;this.dataSet=null;this.availableRows=null;}}
function DataRow(table){if(Dictionary==null){Log('Unable to create new DataRow, underlying Dictionary class could not be found.',logVerbosity.Warning);return null;}
this.fields=new Dictionary();this.blnMatchesFilter=null;this.table=table;this.getFieldValue=function(fieldName)
{try
{var fieldIndex=this.fields.indexes[fieldName];if(fieldIndex==null)return null;return this.fields.items[fieldIndex].value;}
catch(ex)
{return null;}}
this.getFieldValueByIndex=function(fieldIndex)
{if(fieldIndex!=null)
{return this.fields.items[fieldIndex].value;}else
{return null;}}
this.getFieldIndex=function(fieldName)
{var fieldIndex=this.fields.indexes[fieldName];if(typeof(fieldIndex)=='undefined')return null;return fieldIndex;}
this.setFieldValue=function(fieldName,value){try
{var fieldIndex=this.fields.indexes[fieldName];if(fieldIndex)
{this.fields.items[fieldIndex].value=value;return true;}
var object=function()
{var me=this;this.value=value;this.clone=function()
{return me;}};this.fields.add(fieldName,new object());return true;}
catch(ex){Log(ex,'could not set field value ('+fieldName+') in EMRDataObjects',logVerbosity.SuperVerbose);return null;}}
this.clone=function(parent){var newDataRow=new DataRow(parent);for(var i=0;i<this.fields.length;i++){newDataRow.fields.add(this.fields.keys[i],this.fields.items[i].clone(newDataRow));}
return newDataRow;}
this.matchesFilter=function()
{if(this.blnMatchesFilter!=null)
{if(this.blnMatchesFilter==-1)
{return true;}
return this.blnMatchesFilter;}else
{var filterField=this.getFieldValueByIndex(this.table.getColumnIndex('blnMatchesFilter'));if(filterField==null)
{this.blnMatchesFilter=-1;return true;}
this.blnMatchesFilter=(filterField=='True');return this.blnMatchesFilter;}}
this.dispose=function(){for(var i=0;i<this.fields.length;i++)
if(this.fields.items[i].dispose)
this.fields.items[i].dispose();this.fields=null;this.table=null;}}
function DataField(name,value,dataType,row){if(Dictionary==null){Log('Unable to create new DataField, underlying Dictionary class could not be found.',logVerbosity.Warning);return null;}
this.name=name;this.value=value;this.dataType=dataType;this.row=row;this.clone=function(parent){var newDataField=new DataField(this.name,this.value,this.dataType,parent);return newDataField;}
this.dispose=function(){this.name=null;this.value=null;this.row=null;}}
var EMR={getQueryCollectionWithSessionAndLogonKey:function(url)
{var retUrl=url;if(typeof(url)==='string'&&top.session)
{try
{if(url.indexOf('?')!=-1)
retUrl=url+'&'+top.session.getValue('sessUserProperties')+'&sess='+top.session.getValue('sessLgnK');else
retUrl=url+'?'+top.session.getValue('sessUserProperties')+'&sess='+top.session.getValue('sessLgnK');}
catch(ex){retUrl=url;}}
return retUrl;},enableControl:function(id,disabledCssClass)
{return this._changeControlState(id,false,disabledCssClass)},disableControl:function(id,disabledCssClass)
{return this._changeControlState(id,true,disabledCssClass)},_changeControlState:function(id,doDisable,disabledCssClass)
{if(!disabledCssClass)disabledCssClass='disabled';var control=null;if(typeof(id)=='string')
{try{control=eval(id);}
catch(ex){}}
else control=id;if(control&&!control.tagName)
{if(control.enable)
{if(doDisable)
control.disable();else
control.enable();}
else
{Log('Control '+id+' is of a type (EMR type) unknown to _changeControlState.  State not set.',logVerbosity.Warning);}}
else
{if(!control)
{control=EMR.getElement(id);if(!control)
{Log('Control '+id+' not found.  Value not set.',logVerbosity.Warning);return;}}
switch(control.tagName)
{case"LABEL":control.disabled=doDisable;if(doDisable)
{control.className=control.className+' '+disabledCssClass;}else
{control.className=control.className.replace(new RegExp(disabledCssClass,"g"),'');}
if(control.getAttribute('for'))
{var inputElem=this.getElement(control.getAttribute('for'),control.parentNode.getElementById?control.parentNode.getElementById:null);if(!inputElem)
{var strTargetId=control.getAttribute('for');var tmpElem=control.nextSibling;while(tmpElem&&tmpElem!=control)
{if(tmpElem.id==strTargetId)
{inputElem=tmpElem;break;}
tmpElem=tmpElem.nextSibling;}}
if(inputElem)
{this._changeControlState(inputElem,doDisable,disabledCssClass);}else
{debugger;}}
break;case"FIELDSET":var iChildren=control.childNodes.length;for(var i=0;i<iChildren;i++)
{this._changeControlState(control.childNodes[i],doDisable,disabledCssClass);}
case"INPUT":case"SELECT":case"BUTTON":case"TEXTAREA":control.disabled=doDisable;break;case"LEGEND":case undefined:break;default:control.disabled=doDisable
break;}}},getElement:function(reference,doc,allowMultipleElements)
{if(!doc)doc=document;if(!reference)return null;var control=doc.getElementById(reference);if(control)return control;var controls=doc.getElementsByName(reference);if(controls.length==1)return controls[0];if(controls.length>1&&allowMultipleElements===true)
{return controls[0];}
return undefined;},addOptionToSelect:function(select,optionText,optionValue,selectNewOption)
{optionText=optionText||'';var optionNode=document.createElement("OPTION");optionNode.text=optionText;optionNode.value=optionValue;EMR.addOptionNodeToSelect(select,optionNode,selectNewOption);},addOptionNodeToSelect:function(select,option,selectNewOption)
{try
{select.options[select.options.length]=option;}
catch(ex)
{select.appendChild(option);}
if(selectNewOption==true)
{setTimeout(function(){select.selectedIndex=select.options.length-1;},1);}},clearSelect:function(select)
{while(select.options.length>0)
{select.remove(0);}},addListener:function(element,type,callback)
{if(element.addEventListener)
{element.addEventListener(type,callback,false);}
else if(element.attachEvent)
{element.attachEvent('on'+type,callback);element['on'+type]=callback;}
else
{element['on'+type]=callback;}},removeListener:function(element,type,callback)
{if(element.removeEventListener)
{element.removeEventListener(type,callback,false);}
else if(element.detachEvent)
{element.detachEvent('on'+type,callback);element['on'+type]=null;}
else
{element['on'+type]=null;}},setControlValue:function(id,value,textToDisplay)
{if(typeof(id)=="string")
{try{var control=eval(id);}
catch(ex){}}
else var control=id;if(control&&!control.tagName)
{if(control.type=='EMRShowTimezone')
{control.setInitialTimezone(value);}
else if(control.setValue)
{control.setValue(value);}
else
{Log('Control '+id+' is of a type (EMR type) unknown to setControlValue.  Value not set.',logVerbosity.Warning);}}
else
{control=EMR.getElement(id);if(!control)
{Log('Control '+id+' not found.  Value not set.',logVerbosity.Warning);return;}
switch(control.tagName)
{case'INPUT':if(control.type=='checkbox')
{if(value==true||value=='True')control.checked=true;else control.checked=false;}
else
{control.value=value;}
break;case'SELECT':for(var i=0;i<control.length;i++)
{if(control[i].value==value)
{control.selectedIndex=i;break;}}
break;case'IMG':control.src=value;break;default:if(control.innerHTML!=null)
control.innerHTML=value;else
Log('Control '+id+' is of a type ('+control.tagName+') unknown to setControlValue.  Value not set.',logVerbosity.Warning);break;}}
control=null;},getControlValue:function(id)
{var control;try{control=eval(id);}
catch(ex){}
try
{if(typeof(control)=='undefined'&&$find)
{control=$find(id);}}catch(ex){}
if(control&&!control.tagName)
{if(control.getValue)return control.getValue();if(control.get_value)return control.get_value();if(control.get_textBox)return control.get_textBox().value;Log('Control '+id+' is of a type '+control.type+' unknown to getControlValue.  Value not retrieved.',logVerbosity.Warning);}
else
{var controls=document.getElementsByName(id);var len=controls.length;if(len&&len>1)
{if(controls[0].type==='radio')
{for(var i=0;i<len;i++)
{if(controls[i].checked==true)
{return controls[i].value;}}
return;}}else
{control=EMR.getElement(id);if(control)
{return EMR.getControlValueObj(control);}}
Log('Failed to get value of control '+id+'. Control not found.',logVerbosity.Warning);return'';}},getControlValueObj:function(control)
{switch(control.tagName)
{case'INPUT':if(control.type=='checkbox'||control.type=='radio')
{if(control.checked==true)return true;return false;}
else
{return control.value;}
case'SPAN':return control.innerHTML;case'TEXTAREA':return control.value;case'SELECT':return control[control.selectedIndex].value;default:if(control.innerHTML!=null)
return control.innerHTML;else
Log('Control '+id+' is of a type (HTML type) unknown to getControlValue.  Value not retrieved.',logVerbosity.Warning);return'';}},getControlText:function(id)
{var control;try{control=eval(id);}
catch(ex){}
try
{if(typeof(control)=='undefined'&&$find)
{control=$find(id);}}catch(ex){}
if(control&&!control.tagName)
{if(control.getText)return control.getText();if(control.get_text)return control.get_text();Log('Control '+id+' is of a type '+control.type+' unknown to getControlValue.  Value not retrieved.',logVerbosity.Warning);}
else
{control=EMR.getElement(id);if(control)
{return EMR.getControlTextObj(control);}
else
{Log('Failed to get value of control '+id+'. Control not found.',logVerbosity.Warning);return'';}}},getControlTextObj:function(control)
{switch(control.tagName)
{case'INPUT':return control.value;case'SPAN':return control.innerHTML;case'TEXTAREA':return control.value;case'SELECT':return control[control.selectedIndex].innerHTML;default:Log('Control '+id+' is of a type (HTML type) unknown to getControlValue.  Value not retrieved.',logVerbosity.Warning);return'';}},fireWhenExists:function(target,func,numTries)
{try
{if(!numTries)numTries=0;if(numTries>500)throw"Tried over 500 times, giving up on waiting for "+target;if(typeof(target)=='undefined'||target==null||(target.isInitialised!=null&&!target.isInitialised))
{window.setTimeout(function(){EMR.fireWhenExists(target,func,numTries+1);},50);return;}
if(typeof(func)!='function')
{throw"Function passed to fireWhenExists is NOT a function";}
func();}
catch(ex)
{Log(ex,'fireWhenExists failed to execute '+func,logVerbosity.Serious);}},setInnerText:function(target,text)
{try
{if(typeof(target.innerText)!="undefined")
{target.innerText=text;}else if(typeof(target.textContent)!="undefined")
{target.textContent=text;}else if(typeof(target.data)!="undefined")
{target.data=text;}}
catch(ex)
{Log(ex,'setInnertext failed to execute. Target: '+target,logVerbosity.Serious);}},getInnerText:function(target)
{try
{if(typeof(target.innerText)!="undefined")
{return target.innerText;}else if(typeof(target.textContent)!="undefined")
{return target.textContent;}else if(typeof(target.data)!="undefined")
{return target.data;}
Log(ex,'getInnertext failed to find suitable text from:'+target,logVerbosity.Serious);}
catch(ex)
{Log(ex,'getInnertext failed to execute. Target: '+target,logVerbosity.Serious);}},getWarningsObject:function(warning,key)
{var wrapper=new Object();wrapper.warnings=new Object();if(warning&&!key)
{key=Math.ceil(Math.random()*1000);}
if(warning&&key)
{wrapper.warnings[key]=warning;}
return wrapper;},showWarningsOrErrors:function(list,title)
{var sList='<ul>';var h=0;var property
for(property in list)
{if(typeof(list[property])!='function'&&property!="Key"&&property!="Errored"&&property!="ActionKey"&&property!="EstimatedExecutionDate")
{var thisLine='<li>'+list[property]+'</li>';var lineheight=Math.ceil(thisLine.length/55);sList=sList+thisLine;var arr=thisLine.split(/<br\s?\/?>/i);lineheight+=(arr.length-1);h+=lineheight;}}
if(h==0)return;sList=sList+'</ul>'
h=(h*14)+100;radalert(sList,400,h,title);},showErrors:function(response,title)
{if(response.errors)
{EMR.showWarningsOrErrors(response.errors,title);}},showWarnings:function(response,title)
{if(response.warnings)
{EMR.showWarningsOrErrors(response.warnings,title);}},showLoadingDiv:function(message,width,height,includeImage)
{var loadingDiv=$('#emr_div_loading_container')
if(loadingDiv.length==0)
{var containerDiv=document.createElement('div');containerDiv.setAttribute('id','emr_div_loading_container');containerDiv.setAttribute('style','display:none');containerDiv.innerHTML='<div id="emr_div_loading_background"></div><div id="emr_div_loading_message"></div>'
document.body.insertBefore(containerDiv,document.body.firstChild);}
if(!message)message="Loading...";if(includeImage==null)includeImage=true;if(includeImage)message='<img id="emr_img_loading_image" src="../images/loading.gif" /> '+message;$('#emr_div_loading_message').html(message);$('select:not(hidden)').each(function()
{$(this).hide();$(this).attr('emr_loading_hidden','true');});$('#emr_div_loading_container').show();if(width)
$('#emr_div_loading_message').width(width);if(height)
$('#emr_div_loading_message').height(height);$('#emr_div_loading_message').center();},hideLoadingDiv:function()
{var loadingDiv=$('#emr_div_loading_container')
if(loadingDiv.length>0)
loadingDiv.hide();$('select[emr_loading_hidden]').each(function()
{$(this).show();$(this).removeAttr('emr_loading_hidden');});},sortSelect:function(oList)
{if(oList)
{var selectedValue=oList.value;var items=oList.options.length;var tmpArray=new Array(items);for(i=0;i<items;i++)
{tmpArray[i]=new Option(oList.options[i].text,oList.options[i].value);}
tmpArray.sort(EMR.compareOptionText);for(i=0;i<items;i++)
{oList.options[i]=new Option(tmpArray[i].text,tmpArray[i].value);if(tmpArray[i].value==selectedValue)oList.options[i].selected=true;}}},compareOptionText:function(a,b)
{var aUC=a.text.toUpperCase();var bUC=b.text.toUpperCase();return aUC!=bUC?aUC<bUC?-1:1:0;},doCallback:function(args,callback)
{if(typeof(EMRCallback)=='undefined'||!EMRCallback.isInitialised)
{window.setTimeout(function(){EMR.doCallback(args,callback);},20);return;}
EMRCallback.onCallbackComplete=callback;EMRCallback.DoCallback(args);},requires:function(name){var newElement,addScript;addScript=function(src){var scripts;newElement=document.createElement("script");newElement.src=src;scripts=document.getElementsByTagName("script");scripts[0].parentNode.appendChild(newElement);};switch(name){case'JSON':if(typeof JSON==='undefined'){addScript('/scripts/json2.js');}
break;default:alert('EMR.requires: Unknown requirement.');}}};EMR.Window={getSize:function()
{var dimensions=new Object();if(typeof(window.innerWidth)=='number')
{dimensions.width=window.innerWidth;dimensions.height=window.innerHeight;}
else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight))
{dimensions.width=document.documentElement.clientWidth;dimensions.height=document.documentElement.clientHeight;}
else if(document.body&&(document.body.clientWidth||document.body.clientHeight))
{dimensions.width=document.body.clientWidth;dimensions.height=document.body.clientHeight;}
return dimensions;},getOuterFrameWidth:function(sOuterFrameDiv)
{var varWidth=200;var outerDiv=document.getElementById(sOuterFrameDiv);outerDiv.style.position="absolute";if(outerDiv)
{var padding=1;if(document.all)padding=2;varWidth=outerDiv.offsetWidth+padding;outerDiv=null;}
return varWidth;},getOuterFrameHeight:function(sOuterFrameDiv)
{var varHeight=200;var outerDiv=document.getElementById(sOuterFrameDiv);if(outerDiv)
{varHeight=outerDiv.offsetHeight+outerDiv.offsetTop+55;outerDiv=null;if(varHeight>760)varHeight=760;}
return varHeight;},resizeDialog:function(sOuterFrameDiv,bCenter)
{if(!sOuterFrameDiv)sOuterFrameDiv='OuterFrame';var varWidth=EMR.Window.getOuterFrameWidth(sOuterFrameDiv);var varHeight=EMR.Window.getOuterFrameHeight(sOuterFrameDiv);if(!varWidth||!varHeight)
{return false;}
try
{varHeight+=20;varWidth+=20;var radWindow=EMR.Window.getRadWindow();var doc=radWindow.BrowserWindow.parent.document;var docBody=doc.body;var docHTML=doc.documentElement;var parentHeight;var parentWidth;parentHeight=docBody.scrollHeight-10;parentWidth=docBody.scrollWidth-10;if(docHTML.scrollHeight<parentHeight)
{parentHeight=docHTML.scrollHeight-10;}
if(docHTML.scrollWidth<parentWidth)
{parentWidth=docHTML.scrollWidth-10;}
if(varHeight>(parentHeight-120)||varWidth>parentWidth)
{var OuterFrameDivStyle=document.getElementById(sOuterFrameDiv).style;var xbar,ybar;if(varWidth>parentWidth)
varWidth=parentWidth;if(varHeight>(parentHeight-120))
varHeight=parentHeight-120;}
radWindow.setSize(varWidth+"px",varHeight+"px")
if(bCenter==null||bCenter)
{radWindow.center();}}
catch(e)
{}
return true;},getScrollPosition:function(targetWindow)
{if(typeof(targetWindow)=='undefined'||null==targetWindow)
{targetWindow=window;}
var positions=new Object();if(typeof(targetWindow.pageYOffset)=='number')
{positions.y=targetWindow.pageYOffset;positions.x=targetWindow.pageXOffset;}else if(targetWindow.document.body&&(targetWindow.document.body.scrollLeft||targetWindow.document.body.scrollTop))
{positions.y=targetWindow.document.body.scrollTop;positions.x=targetWindow.document.body.scrollLeft;}else if(targetWindow.document.documentElement&&(targetWindow.document.documentElement.scrollLeft||targetWindow.document.documentElement.scrollTop))
{positions.y=targetWindow.document.documentElement.scrollTop;positions.x=targetWindow.document.documentElement.scrollLeft;}
else
{positions.y=0;positions.x=0;}
return positions;},getPosition:function()
{var window=EMR.Window.getSize();var scrollPos=EMR.Window.getScrollPosition();var position=new Object();position.top=scrollPos.y;position.bottom=scrollPos.y+window.height;position.left=scrollPos.x;position.right=scrollPos.x=window.width;return position;},getRadWindow:function()
{var oWindow=null;if(window.radWindow)
oWindow=window.radWindow;else if(window.frameElement.radWindow)
oWindow=window.frameElement.radWindow;return oWindow;},showRadWindow:function(editMode,data,position,leftPos,url,modal,width,height,callbackFn,windowName)
{try
{if(data==null)
data=new Object();if(!width)width=600;if(!height)height=370;var oWnd=GetRadWindowManager().open(url,windowName);if(editMode)
{data['editMode']=editMode;}
data['emrFresh']=true;oWnd.Argument=data;oWnd.setSize(width,height);if(position!=null&&leftPos!=null&&!(leftPos=='center'||position=='center'))
{EMR.Window.setDialogPosition(oWnd,position,leftPos,height,width);}
else
{oWnd.center();}
if(callbackFn)oWnd.set_clientCallBackFunction(callbackFn);if(modal)oWnd.set_modal(true);setTimeout(function(){oWnd.setActive(true);},0);return oWnd;}
catch(ex)
{Log(ex,logVerbosity.Warning);}},setDialogPosition:function(oWnd,position,leftPos,height,width)
{if(!oWnd)return false;if(position===null)position='top';if(leftPos===null)leftPos='right';if(height===null)height=oWnd.get_height();if(width===null)width=oWnd.get_width();var padding=20;var windowSize=EMR.Window.getSize();var scrollPos=EMR.Window.getScrollPosition();var xOffset=0,yOffset=0;if(position=='top')
{yOffset=padding+scrollPos.y;}
else
{yOffset=Math.max(0,(windowSize.height-height-padding)+scrollPos.y);}
if(leftPos=='left')
{xOffset=padding;}else
{xOffset=Math.max(0,(windowSize.width-width-padding)+scrollPos.x);}
return oWnd.moveTo(xOffset,yOffset);},popup:function(url,args,options,callback)
{if(!callback)callback=function(){};if(!options)options='';if(document.all)
{if(url!='')
{setTimeout(function()
{var ret=window.showModalDialog(url,args,options);callback(ret);},1);}}
else
{var width="550";var height="400";var pos=options.indexOf('dialogWidth');if(pos>-1)
{var endPos=options.indexOf(';',pos);if(endPos<0)endPos=options.length;width=options.substring(pos+'dialogWidth:'.length,endPos);}
pos=options.indexOf('dialogHeight');if(pos>-1)
{endPos=options.indexOf(';',pos);if(endPos<0)endPos=options.length;height=options.substring(pos+'dialogHeight:'.length,endPos);}
if(height.indexOf('em')>0)
{height=height.substring(0,height.length-2);height=parseInt(height)*14;}
if(width.indexOf('em')>0)
{width=width.substring(0,width.length-2);width=parseInt(width)*14;}
var winHaveRunCleanup=false;var win=window.open(url,"",'width='+width+', height='+height+',toolbar=no,directories=no,status=no,linemenubar=no,scrollbars=yes,resizable=yes,modal=yes');win.dialogArguments=args;var setPopupFocus=function(event)
{if(!win||win.closed)
{cleanup();return;}};EMR.addListener(window,'focus',setPopupFocus);var cleanup=function(arg)
{if(!win.closed)return;if(winHaveRunCleanup)
{return false;}
else
{winHaveRunCleanup=true;}
if(win)callback(win.returnValue);};EMR.addListener(win,'close',cleanup);EMR.addListener(win,'unload',cleanup);}},dialogId:null,dialog:function(id,title,url,options,args,callback)
{var $containerElem=$('#'+id);var top=options&&options.top?options.top.replace('px','').replace('%',''):'50';var left=options&&options.left?options.left.replace('px','').replace('%',''):'50';var height=options&&options.height?options.height.replace('px','').replace('%',''):'300';var width=options&&options.width?options.width.replace('px','').replace('%',''):'600';var resizable=options&&options.resizable!=undefined?options.resizable:true;var zIndex=options&&options.zIndex?options.zIndex:1000;if($containerElem.length===0)
{var sDlgElements='<div id="emr_dialogOwnerID" class="emr_dialogowner"'+'style="border: 1px solid #444; display:none; width: 100%; height: 100%; overflow: hidden; margin: 5px; margin-bottom:4px; padding:0;">'+'<iframe id="dialogContentFrame" frameborder="0" marginHeight="0" marginWidth="0" style="margin:0px; padding:0; width: 100%; height: 100%;  background: #FFFFFF;">'+'</iframe>';$containerElem=$('#emr_dialogOwnerID');if(!$containerElem[0])
{$containerElem=$(sDlgElements).appendTo(document.body);}
this.dialogId=id;$containerElem.dialog({closeText:'',autoOpen:false,modal:true,height:height,width:width,resizable:resizable});}
var callbackWrapper=function()
{if(callback)
{callback($containerElem.find('#dialogContentFrame')[0].returnValue);}};$containerElem.dialog('option','close',callbackWrapper);$containerElem.find('#dialogContentFrame').attr('src',url);$containerElem.parent().css('width',width.replace('px','')+'px').css('height',height.replace('px','')+'px');$containerElem.dialog('option','title',title);$containerElem.dialog('option','zIndex',zIndex);$containerElem.find('#dialogContentFrame')[0].dialogArguments=args;$containerElem.dialog('open');$containerElem.parent().css('top',top+'px');$containerElem.parent().css('left',left+'px');},doCancel:function()
{var emrRadWindow=EMR.Window.getRadWindow();if(emrRadWindow)
{emrRadWindow.close();}
else
{if(window&&window.parent&&window.parent.frameElement&&window.parent.emrHasDialog&&window.parent.emrHasDialog())
{EMR.Window.doOk(null);}
else
{window.returnValue=null;window.close();}}},doOk:function(args)
{if(typeof(dialogFunctions)!='undefined')
dialogFunctions.Ok(args);else
{var emrRadWindow=EMR.Window.getRadWindow();if(emrRadWindow)
{emrRadWindow.close(args);}
else
{if(window&&window.parent&&window.parent.emrHasDialog&&window.parent.emrHasDialog())
{var oRequestingPage=window.parent;frameElement.returnValue=args;if(oRequestingPage&&oRequestingPage.emrCloseDialog)
{oRequestingPage.emrCloseDialog();}
else
{alert('Error code c123729 ');}}
else
{window.returnValue=args;window.close();}}}}}
EMR.Ajax={get:function(url,callback)
{EMR.Ajax.request(url,'GET','TEXT',callback);},request:function(url,transferMode,responseType,callback)
{if(typeof(cpaint)!='function')throw'EMR.Ajax requires CPAINT';try
{var cp=new cpaint();cp.set_transfer_mode(transferMode);cp.set_use_cpaint_api(false);cp.set_response_type(responseType);cp.call(url,'',callback);}
catch(ex)
{Log(ex,'AJAX Request to '+url+' failed',logVerbosity.Serious);}
finally
{cp=null;}}}
EMR.Layout={rowNumber:0,TableStart:function(className){return'<table class="'+className+'" >';},TableRow:function(rowTitle,rowCol1,blnLast){var rowClass='';if(blnLast){if((this.rowNumber%2)===0){rowClass='emr_tr_even_bottom';}
else{rowClass='emr_tr_odd_bottom';}}
else if(this.rowNumber===0){rowClass='emr_tr_odd_top';}
else{if((this.rowNumber%2)===0){rowClass='emr_tr_even';}
else{rowClass='emr_tr_odd';}}
this.rowNumber++;return'<tr class="'+rowClass+'"><td class="emr_td_title">'+rowTitle+'</td><td>'+rowCol1+'</td></tr>';},TableEnd:function(){this.rowNumber=0;return'</table>';}};if(!Array.indexOf)
{Array.prototype.indexOf=function(obj)
{for(var i=0;i<this.length;i++)
{if(this[i]==obj)return i;}
return-1;}}
function emrCloseDialog()
{var oModal=$('.emr_dialogowner');if(oModal)
{oModal.dialog('close');}
else
{alert('emrCloseDialog has been called but no modal exists. Code c123729');debugger;}}
function emrHasDialog()
{var oModal=$('.emr_dialogowner');if(oModal)
{return true;}
else
{return false;}}
if(typeof(console)=='undefined')
console={log:function(){},warn:function(){},error:function(){},info:function(){}};
var emr_reqArray=new Array(50);function emr_loadXMLDoc(sXMLType,url)
{if(emr_xmlIsActiveRequest(sXMLType))
{Log('request already active',logVerbosity.Information);return false;}
var oRequest=new Object();oRequest.bComplete=false;var iIndex=emr_xmlGetFreeRequestIndex();if(iIndex>=0)
{emr_reqArray[iIndex]=oRequest;if(window.XMLHttpRequest){oRequest.callback=new XMLHttpRequest();oRequest.callback.onreadystatechange=emr_processReqChange;oRequest.callback.open("GET",url,true);oRequest.callback.send(null);}else if(window.ActiveXObject){oRequest.callback=new ActiveXObject("Microsoft.XMLHTTP");if(oRequest.callback){oRequest.callback.onreadystatechange=emr_processReqChange;oRequest.callback.open("GET",url,true);oRequest.callback.send();}}}
else
{Log('Error - no free xml requests. Cannot load data.',logVerbosity.Serious);}}
function emr_xmlGetFreeRequestIndex()
{var iCount=emr_reqArray.length;var iRequest;for(iRequest=0;iRequest<iCount;iRequest++)
{if(!emr_reqArray[iRequest])
{return iRequest;}}
return-1;}
function WaitAjaxData(sXMLType)
{if(emr_xmlIsActiveRequest(sXMLType))
{Log('Information is still loading. Please wait a few seconds and try again. ',logVerbosity.Warning);return false;}
return true;}
function emr_xmlGetRequestIndexForType(sXMLType)
{var iCount=emr_reqArray.length;var iRequest;for(iRequest=0;iRequest<iCount;iRequest++)
{oRequest=emr_reqArray[iRequest];if(oRequest&&oRequest.type==sXMLType)
{return iCount;}}
return-1;}
function emr_xmlGetRequestObjectForType(sXMLType)
{var iIndex=emr_xmlGetRequestIndexForType(sXMLType);if(iIndex>=0)
{var oCurrent=emr_reqArray[iIndex];return oCurent;}
else
{return null;}}
function emr_xmlIsActiveRequest(sXMLType)
{var bActiveRequest=false;var oCurrent=emr_xmlGetRequestObjectForType(sXMLType);if(oCurrent&&oCurrent.bComplete==false)
{bActiveRequest=true;}
return bActiveRequest;}
function emr_processReqChange()
{var oRequest;var iCount=emr_reqArray.length;var iRequest;for(iRequest=0;iRequest<iCount;iRequest++)
{oRequest=emr_reqArray[iRequest];if(oRequest&&oRequest.callback&&oRequest.callback.readyState==4)
{emr_reqArray[iRequest]=null;if(oRequest.callback.status==200)
{if(!oRequest.callback.responseXML.parseError||oRequest.callback.responseXML.parseError.errorCode==0)
{emr_processXMLData(oRequest);}
else
{Log('XML parse error. '+oRequest.callback.responseXML.parseError.reason+' context='+oRequest.callback.responseXML.parseError.srcText+'full context='+oRequest.callback.responseText.slice(oRequest.callback.responsexml.parseError.filepos-80,oRequest.callback.responsexml.parseError.filepos+200),logVerbosity.Warning);}}
else
{Log("There was a problem retrieving the XML data:\n"+oRequest.callback.status+':'+oRequest.callback.statusText,logVerbosity.Warning);}}}}
function emr_processXMLData(oRequest)
{var oXmlSnippet=oRequest.callback.responseXML.getElementsByTagName(EMR_XML_ENTITY_TYPE);if(oXmlSnippet==null||oXmlSnippet.length<1||oXmlSnippet[0]==null||oXmlSnippet[0].childNodes[0]==null)return;var sXmlEntityType=oXmlSnippet[0].childNodes[0].text;var sXmlNodeName=sXmlEntityType;if(sXmlEntityType==EMR_XML_FILELIST)
{sXmlNodeName='emrobj';}
else
{}
giCountObjects=oRequest.callback.responseXML.getElementsByTagName(sXmlNodeName).length;var oEntityData=oRequest.callback.responseXML.getElementsByTagName(sXmlNodeName);var iObj,iErrorCount=0;for(iObj=0;iObj<giCountObjects;iObj++)
{if(oEntityData)
{var oResponse=oEntityData.item(iObj);if(oResponse)
{var oNode=oResponse.firstChild;var sDebug;sDebug='';while(oNode)
{var sNodeName=oNode.nodeName;var sNodeText=oNode.text;sNodeText=ReplaceChars(sNodeText,'_emr_amp;','&');var iPos;do
{iPos=sNodeText.indexOf('_emr_');if(iPos>0)
{var sCharHex=sNodeText.slice(iPos+5,iPos+9);var cChar=String.fromCharCode(parseInt(sCharHex,16));sNodeText=sNodeText.slice(0,iPos)+cChar+sNodeText.slice(iPos+11);}}while(iPos>0);oNode=oNode.nextSibling;try
{emr_PageAjaxDataHandler(sXmlEntityType,oNode,iObj,sNodeName,sNodeText);}
catch(e)
{Log(e,'Error executing ajax data handler for node '+iObj+' : '+sXmlEntityType+' : '+sNodeText+' Errors='+iErrorCount,logVerbosity.Serious);iErrorCount++;if(iErrorCount>5)
{Log(e,'Too many errors - abandoning Ajax handling for '+sXmlEntityType+'. ',logVerbosity.Serious);iObj=giCountObjects+1;}}}}}}
try
{emr_PageAjaxDataComplete(sXmlEntityType,giCountObjects);}
catch(e)
{Log(e,'Error with emr_PageAjaxDataComplete',logVerbosity.SuperVerbose);}}
var goLastCalendar,goFirstCalendar;var goEMRCalendar;var gsEMRCalendarControlName;function calendarCallbackDate(date,month,year)
{goEMRCalendar.setCurrentDate(date);date=date+'/'+month+'/'+year;document.getElementById(gsEMRCalendarControlName).value=date;}
function calendarCallbackFirstDate(date,month,year)
{goFirstCalendar.setCurrentDate(date);date=date+'/'+month+'/'+year;document.getElementById('FirstDate').value=date;}
function calendarCallbackLastDate(date,month,year)
{goLastCalendar.setCurrentDate(date);date=date+'/'+month+'/'+year;document.getElementById('LastDate').value=date;}
CSAg=window.navigator.userAgent;CSBVers=parseInt(CSAg.charAt(CSAg.indexOf("/")+1),10);function IsIE(){return CSAg.indexOf("MSIE")>0;}
function CSIEStyl(s){return document.all.tags("div")[s].style;}
function CSNSStyl(s){return CSFindElement(s,0);}
function CSFindElement(n,ly){if(CSBVers<4)return document[n];var curDoc=ly?ly.document:document;var elem=curDoc[n];if(!elem){for(var i=0;i<curDoc.layers.length;i++){elem=CSFindElement(n,curDoc.layers[i]);if(elem)return elem;}}
return elem;}
CSAct=new Object;CSIm=new Object();function CSIShow(n,i){if(document.images){if(CSIm[n]){var img=(!IsIE())?CSFindElement(n,0):document[n];if(img&&typeof(CSIm[n][i].src)!="undefined"){img.src=CSIm[n][i].src;}
if(i!=0)
self.status=CSIm[n][3];else
self.status=" ";return true;}}
return false;}
function CSILoad(action){im=action[1];if(document.images){CSIm[im]=new Object();for(var i=2;i<5;i++){if(action[i]!=''){CSIm[im][i-2]=new Image();CSIm[im][i-2].src=action[i];}
else CSIm[im][i-2]=0;}
CSIm[im][3]=action[5];}}
function CSClickReturn(){var bAgent=window.navigator.userAgent;var bAppName=window.navigator.appName;if((bAppName.indexOf("Explorer")>=0)&&(bAgent.indexOf("Mozilla/3")>=0)&&(bAgent.indexOf("Mac")>=0))
return true;else return false;}
function CSButtonReturn(){var bAgent=window.navigator.userAgent;var bAppName=window.navigator.appName;if((bAppName.indexOf("Explorer")>=0)&&(bAgent.indexOf("Mozilla/3")>=0)&&(bAgent.indexOf("Mac")>=0))
return false;else return true;}
function CSScriptInit(){if(typeof(skipPage)!="undefined"){if(skipPage)return;}
idxArray=new Array;for(var i=0;i<CSInit.length;i++)
idxArray[i]=i;CSAction2(CSInit,idxArray);}
CSInit=new Array;CSExit=new Array;CSStopExecution=false;function CSAction(array){return CSAction2(CSAct,array);}
function CSAction2(fct,array){var result;for(var i=0;i<array.length;i++){if(CSStopExecution)return false;var actArray=fct[array[i]];if(actArray==null)return false;var tempArray=new Array;for(var j=1;j<actArray.length;j++){if((actArray[j]!=null)&&(typeof(actArray[j])=="object")&&(actArray[j].length==2)){if(actArray[j][0]=="VAR"){tempArray[j]=CSStateArray[actArray[j][1]];}
else{if(actArray[j][0]=="ACT"){tempArray[j]=CSAction(new Array(new String(actArray[j][1])));}
else
tempArray[j]=actArray[j];}}
else
tempArray[j]=actArray[j];}
result=actArray[0](tempArray);}
return result;}
function CSOpenWindow(action){var wf="";wf=wf+"width="+action[3];wf=wf+",height="+action[4];wf=wf+",resizable="+(action[5]?"yes":"no");wf=wf+",scrollbars="+(action[6]?"yes":"no");wf=wf+",menubar="+(action[7]?"yes":"no");wf=wf+",toolbar="+(action[8]?"yes":"no");wf=wf+",directories="+(action[9]?"yes":"no");wf=wf+",location="+(action[10]?"yes":"no");wf=wf+",status="+(action[11]?"yes":"no");window.open(action[1],action[2],wf);}
function EMR_PleaseTellSupport(sFunction,sControlName){}
function IsFieldNumber(intType){return(intType<100);}
function IsFieldDate(intType){return(intType<200&&intType>=100&&intType!=129);}
function IsFieldString(intType){return(intType>=200||intType==129);}
function ShowControl(varControlName){try{var control=EMR.getElement(varControlName);if(control)control.style.visibility='visible';}
catch(e){Log(e,'ShowControl '+varControlName,logVerbosity.Serious);EMR_PleaseTellSupport('HideControl',varControlName)}}
function HideControl(varControlName){try{var control=EMR.getElement(varControlName);if(control)control.style.visibility='hidden';}
catch(e){Log(e,'HideControl '+varControlName,logVerbosity.Serious);EMR_PleaseTellSupport('HideControl',varControlName)}}
function EnableControl(varControlName){var elem=EMR.getElement(varControlName);if(elem){elem.disabled=false;}}
function EnableControlAndLabel(varControlName){EnableControl(varControlName);EnableControl(varControlName+'Label');}
function DisableControl(varControlName){var elem=EMR.getElement(varControlName);if(elem){elem.disabled=true;}}
function DisableControlAndLabel(varControlName){DisableControl(varControlName);DisableControl(varControlName+'Label');}
function DisableRadioControl(varControlName,varIndex){try{document.getElementsByName(varControlName)[varIndex].disabled=true;}
catch(e){Log(e,'DisableRadioControl '+varControlName,logVerbosity.Serious);EMR_PleaseTellSupport('DisableRadioControl',varControlName)}}
function EnableRadioControl(varControlName,varIndex){try{document.getElementsByName(varControlName)[varIndex].disabled=false;}
catch(e){Log(e,'EnableRadioControl '+varControlName,logVerbosity.Serious);EMR_PleaseTellSupport('EnableRadioControl',varControlName)}}
function HideRadioControl(varControlName,varIndex){document.getElementsByName(varControlName)[varIndex].style.visibility='hidden';}
function ShowRadioControl(varControlName,varIndex){document.getElementsByName(varControlName)[varIndex].style.visibility='visible';}
function SetDialogSize(varOuterFrameName){try{if(window.sizeToContent)window.sizeToContent();else{var div=EMR.getElement(varOuterFrameName);var varWidth=div.offsetWidth+30+"px";var varHeight=div.offsetHeight+70+"px";window.external.dialogWidth=varWidth;window.external.dialogHeight=varHeight;}}
catch(e){Log(e,'SetDialogSize '+varOuterFrameName,logVerbosity.Serious);EMR_PleaseTellSupport('SetDialogSize',varOuterFrameName)}}
function InitDropListFromText(objList,varText){try{var intIndex;var intResult=-1;if(varText!=null){for(intIndex=0;intIndex<objList.length;intIndex++){if(objList[intIndex].text.toLowerCase()==varText.toLowerCase()){objList.selectedIndex=intIndex;intResult=intIndex;break;}}}}
catch(ex){Log(ex,'InitDropListFromText',logVerbosity.Serious);EMR_PleaseTellSupport('InitDropListFromText','')}
return intResult;}
function InitDropListFromValue(objList,varValue,doSynchronous){try{var intIndex;if(varValue!=null){for(intIndex=0;intIndex<objList.length;intIndex++){if(objList[intIndex].value.toLowerCase()==varValue.toLowerCase()){if(doSynchronous){objList.selectedIndex=intIndex;}else{setTimeout(function(){objList.selectedIndex=intIndex;},1);}
break;}}}}
catch(ex){Log(ex,'InitDropListFromValue',logVerbosity.Serious);EMR_PleaseTellSupport('InitDropListFromValue','')}}
function ReadDropListText(objList){var result="";try{if(objList&&objList.selectedIndex>=0){result=objList[objList.selectedIndex].text;}}
catch(e){Log(e,'ReadDropListText',logVerbosity.SuperVerbose);}
return result;}
function ReadDropListValue(objList){var result;result="";try{if(objList&&objList.selectedIndex>=0){result=objList[objList.selectedIndex].value;}}
catch(e){Log(e,'ReadDropListValue',logVerbosity.SuperVerbose);result="";}
return result;}
function InitTextControl(varControlName){try{if(window.dialogArguments[varControlName]!=null){EMR.getElement(varControlName).value=window.dialogArguments[varControlName];}}
catch(e){Log(e,'InitTextControl: problem with control "'+varControlName+'"',logVerbosity.Serious);}
return true;}
function LoadTextControl(varControlName,varValue){var elem=EMR.getElement(varControlName);if(varValue!=null&&varControlName&&elem){elem.value=varValue;return true;}
return false;}
function SaveTextControl(varControlName,args){var elem=EMR.getElement(varControlName);if(elem)args[varControlName]=elem.value;}
function ReadTextControl(varControlName){var elem=EMR.getElement(varControlName);if(elem)return elem.value;return'';}
function LoadCheckboxControl(varControlName,varValue){var elem=EMR.getElement(varControlName);if(elem){elem.checked=varValue;}}
function ReadCheckboxControl(varControlName){var varValue=false;var elem=EMR.getElement(varControlName);if(elem)varValue=elem.checked;return varValue;}
function LoadRadioControl(varControlName,varIndex,varValue){if(varValue!=null&&varControlName&&document.getElementsByName(varControlName)[varIndex]){document.getElementsByName(varControlName)[varIndex].checked=varValue;}
return true;}
function ReadRadioControl(varControlName,varIndex){var varValue=false;if(varControlName&&document.getElementsByName(varControlName)[varIndex]){varValue=document.getElementsByName(varControlName)[varIndex].checked;}
return varValue;}
function ReadRadioControlSelection(varControlName){try{var iNumOptions=document.getElementsByName(varControlName).length;var iSelection=0;for(iSelection=0;iSelection<iNumOptions;iSelection++){if(ReadRadioControl(varControlName,iSelection)){return iSelection;}}}
catch(e){Log(e,'ReadRadioControlSelection '+varControlName,logVerbosity.Serious);EMR_PleaseTellSupport('ReadRadioControlSelection',varControlName);}
return-1;}
function checkKey(evt){var key;if(window.event){key=window.event.keyCode;}
else{if(evt.keyCode){key=evt.keyCode;}
else{key=evt.which;}}
if(key==27){try{doCancel();}
catch(e){}}
if(key==13){try{doOK();}
catch(e){}}}
function GetTag(sScript,sTagName){var sTag;sTag='';if(sScript&&sTagName){var iPos=sScript.toUpperCase().indexOf('{'+sTagName.toUpperCase());if(iPos>0){iPos=iPos+sTagName.length+2;var iPos2=sScript.slice(iPos).indexOf('}');sTag=sScript.slice(iPos,iPos+iPos2);}}
return sTag;}
function LoadDropDown(sDropDownControlName,arrOptions,varCurrentText,sDummy1){var iSelected;intIndex=0;iSelected=0;var oDropDown=EMR.getElement(sDropDownControlName);if(arrOptions){while(arrOptions[intIndex]!=null&&intIndex<500){var oOption=document.createElement("OPTION");oOption.text=arrOptions[intIndex];oOption.value=arrOptions[intIndex];if(varCurrentText&&oOption.text.toLowerCase()==varCurrentText.toLowerCase()){oOption.selected=true;iSelected=intIndex;}
EMR.addOptionNodeToSelect(oDropDown,oOption);intIndex=intIndex+1;}}
return iSelected;}
function LoadDropDownObjects(sDropDownControlName,arrOptions,varCurrentText,bShowValues){var iSelected;intIndex=0;iSelected=0;try{var oDropDown=EMR.getElement(sDropDownControlName);var varCurrentTextLC=varCurrentText.toLowerCase();if(arrOptions){while(arrOptions[intIndex]!=null&&intIndex<10000){var oOption=document.createElement("OPTION");if(bShowValues==true){oOption.text=arrOptions[intIndex].text+' ('+arrOptions[intIndex].value+')';}
else{oOption.text=arrOptions[intIndex].text;}
oOption.value=arrOptions[intIndex].value;if(varCurrentText&&oOption.text.toLowerCase()==varCurrentTextLC){oOption.selected=true;iSelected=intIndex;}
EMR.addOptionNodeToSelect(oDropDown,oOption);intIndex=intIndex+1;}}}
catch(e){Log(e,'There was an error loading the drop-down control '+sDropDownControlName,logVerbosity.Serious);}
return iSelected;}
function LoadImageDropDown(sImageListControlName,arrFiles,varCurrentImage,sDummy1){var arrFiles,iSelected;intIndex=0
iSelected=0
var oDropDown=EMR.getElement(sImageListControlName);if(arrFiles){EMR.addOptionToSelect(oDropDown);while(arrFiles[intIndex]!=null&&intIndex<500){var oOption=document.createElement("OPTION");oOption.text=arrFiles[intIndex];oOption.value=arrFiles[intIndex];if(varCurrentImage&&oOption.text.toLowerCase()==varCurrentImage.toLowerCase()){oOption.selected=true;iSelected=intIndex;}
EMR.addOptionNodeToSelect(oDropDown,oOption);intIndex=intIndex+1;}}
return iSelected;}
function GetRelativeImage(varImageControlName,varImagePathBase){var varImage,iPos,varImagePathBase;if(window.dialogArguments[varImageControlName]){varImage=window.dialogArguments[varImageControlName].toLowerCase();iPos=varImage.search(varImagePathBase.toLowerCase());if(varImage&&iPos>=0){varImage=varImage.slice(varImagePathBase.length);}}
return varImage;}
function RightLimitLengthText(sText,iMaxLength){if(sText.length>iMaxLength){sText='...'+sText.slice(sText.length-iMaxLength);}
return sText}
function AddDocumentFoldersToDropList(arrFolders,sDropListName){if(arrFolders){garrFolders=arrFolders;var oSelect=EMR.getElement(sDropListName);EMR.addOptionToSelect(oSelect);for(var iPath=0;iPath<garrFolders.length;iPath++){var sFolder=garrFolders[iPath];if(sFolder.toUpperCase().indexOf('NEKTON')<=0){var text=RightLimitLengthText(sFolder,90);EMR.addOptionToSelect(oSelect,text,text);}}}}
var gsTimerFolderDropDownName,gsTimerDefaultFolder;function doMoreFolders(sDropDownName,sDefault){ClearDropDown(sDropDownName);HideControl('emr_moreFolders');AddDocumentFoldersToDropList(garrFolders,sDropDownName)
HideControl(sDropDownName);ShowControl(sDropDownName);setTimeout(function(){InitDropListFromText(EMR.getElement(sDropDownName),sDefault);},100);return false;}
function doTimerInitPathMenu(){InitDropListFromText(EMR.getElement(gsTimerFolderDropDownName),gsTimerDefaultFolder);}
function ReplaceChars(str,sFind,sReplace){if(str){while(str.indexOf(sFind)>=0){str=str.replace(sFind,sReplace);}}
else{str='';}
return str;}
function AddArrayToDropDown(arrItems,sDropDownName){var oSelect=EMR.getElement(sDropDownName);EMR.addOptionToSelect(oSelect);for(var iPath=0;iPath<arrItems.length;iPath++){var text=arrItems[iPath];EMR.addOptionToSelect(oSelect,text,text);}}
function AddFieldsArrayToDropDown(arrItems,sDropDownName){var oSelect=EMR.getElement(sDropDownName);EMR.addOptionToSelect(oSelect);for(var iPath=0;iPath<arrItems.length;iPath++){var sField=arrItems[iPath].toLowerCase();if(sField=='strkey'||sField=='intversion'||sField=='datcreated'||sField=='datlastused'||sField=='strboothkey'||sField=='intemailerrors'||sField=='strsms'){}
else{var text=arrItems[iPath];EMR.addOptionToSelect(oSelect,text,text);}}}
function AddListsArrayToDropDown(arrItems,sDropDownName){var oSelect=EMR.getElement(sDropDownName);EMR.addOptionToSelect(oSelect);for(var iPath=0;iPath<arrItems.length;iPath++){EMR.addOptionToSelect(oSelect,arrItems[iPath].text,arrItems[iPath].key);}}
function AddItemToDropDown(sDropDownName,sText,sValue,selectItem){var oSelect=EMR.getElement(sDropDownName);EMR.addOptionToSelect(oSelect,sText,sValue,selectItem);}
function ClearDropDown(sDropDownName){try{var elem=EMR.getElement(sDropDownName);EMR.clearSelect(elem);return true;}
catch(e){return false;}}
function AddLists(arrItems,sDropDownName,iListTypes){if(typeof(iListTypes)=='number')iListTypes=[iListTypes];var oSelect=EMR.getElement(sDropDownName);EMR.addOptionToSelect(oSelect);for(iPath=0;iPath<arrItems.length;iPath++){if(matchesListType(arrItems[iPath].type,iListTypes)){EMR.addOptionToSelect(oSelect,arrItems[iPath].text,arrItems[iPath].key);}}}
function matchesListType(intListType,intMatchTypes){if(typeof(intMatchTypes)=='undefined')return true;for(var i=0;i<intMatchTypes.length;i++){if((intListType&intMatchTypes[i])==intMatchTypes[i])return true;}
return false;}
function AddListsByIndex(arrItems,sDropDownName,iListTypes){if(typeof(iListTypes)=='number')iListTypes=[iListTypes];var oSelect=EMR.getElement(sDropDownName);EMR.addOptionToSelect(oSelect,'','');for(iPath=0;iPath<arrItems.length;iPath++){if(matchesListType(arrItems[iPath].type,iListTypes)){EMR.addOptionToSelect(oSelect,arrItems[iPath].text,iPath);}}}
function AddFields(arrItems,sDropDownName){var oSelect=EMR.getElement(sDropDownName);EMR.addOptionToSelect(oSelect);for(iPath=0;iPath<arrItems.length;iPath++){EMR.addOptionToSelect(oSelect,arrItems[iPath].name);}}
function AddControls(arrItems,sDropDownName){var oSelect=EMR.getElement(sDropDownName);for(iPath=0;iPath<arrItems.length;iPath++){if(arrItems[iPath].type.toUpperCase()!='SUBMIT'){EMR.addOptionToSelect(oSelect,arrItems[iPath].name);}}}
function CreateNewFolder(varFolderMenuName){var args=new Array();args["NewFolderEdit"]=ReadDropListText(EMR.getElement(varFolderMenuName));EMR.Window.popup("../../erinclude/htmledit/NewFolderPopup.asp",args,"font-family:arial; font-size:10; dialogWidth:35em; dialogHeight:15em",function(arr){if(!arr)return;var oSelect=EMR.getElement(varFolderMenuName);EMR.addOptionToSelect(oSelect,arr['NewFolderEdit'],arr['NewFolderEdit'],true);});}
function isNumeric(string,ignoreWhiteSpace){if(string.search){if((ignoreWhiteSpace&&string.search(/[^\x2D\d\s]/)!=-1)||(!ignoreWhiteSpace&&string.search(/\x2D\D/)!=-1))return false;}
return true;}
function ConvertISODateToUserDate(sISODate){var sDate=sISODate.slice(8)+'/'+sISODate.slice(5,7)+'/'+sISODate.slice(0,4);return sDate;}
function ConvertUserDateToISODate(sDate){if(sDate){var arrDate=sDate.split('/');var sDay='0'+arrDate[0];var sMonth='0'+arrDate[1];if(sDay.length>2)sDay=sDay.slice(sDay.length-2);if(sMonth.length>2)sMonth=sMonth.slice(sMonth.length-2);sDate=arrDate[2]+'-'+sMonth+'-'+sDay;}
return sDate;}
function ConvertISODateToJSDate(sISODate){var oDate=new Date(sISODate.slice(0,4),sISODate.slice(5,7)-1,sISODate.slice(8),0,0,0);return oDate;}
function ValidateQueryName(sQueryName,oValidationError){return ValidateImageName(sQueryName,oValidationError)}
function ValidateImageName(sImageName,oValidationError){var sImageNameLC=sImageName.toLowerCase();var iPos,iPosEndPath;var sValidationError='';iPosEndPath=sImageNameLC.lastIndexOf('\\');if(iPosEndPath<0){iPosEndPath=sImageNameLC.lastIndexOf('/');}
if(iPosEndPath<0){sImageNameLC=sImageName.toLowerCase();}
else{sImageNameLC=sImageNameLC.slice(iPosEndPath+1);}
for(iPos=0;iPos<sImageNameLC.length;iPos++){var c=sImageNameLC.slice(iPos,iPos+1);if(((c>='a')&&(c<='z'))||((c>='0')&&(c<='9'))||((c==' '))||((c=='-'))||((c=='_'))||((c==':'))||((c=='.'))||((c=='/'))||((c=='\\'))||((c==String.fromCharCode(233)))||((c==String.fromCharCode(232)))||((c==String.fromCharCode(224)))||((c==String.fromCharCode(231)))||((c==String.fromCharCode(235)))||((c==String.fromCharCode(239)))||((c==String.fromCharCode(234)))||((c==String.fromCharCode(238)))||((c==String.fromCharCode(244)))||((c==String.fromCharCode(226)))){}
else{sValidationError=sValidationError+c;}}
if(sValidationError!=''){oValidationError.message='Name cannot contain characters "'+sValidationError+'"';return false;}
if(sImageNameLC.indexOf('  ')>=0){oValidationError.message='Name cannot contain multiple spaces';return false;}
if(!AreCurlyBracketsMatched(sImageNameLC,"")){oValidationError.message='Curly brackets are not matched in the name';return false;}
return true;}
function AreCurlyBracketsMatched(sScript,varDummy1){var bResult=true;var iOpens=0,iCloses=0,iPos;for(iPos=0;iPos<sScript.length;iPos++){var char=sScript.charAt(iPos);if(char=='{')iOpens++;if(char=='}')iCloses++;}
if(iOpens==iCloses){return true;}
else{return false;}}
function AreRoundBracketsMatched(sScript,varDummy1){var bResult=true;var iOpens=0,iCloses=0,iPos;for(iPos=0;iPos<sScript.length;iPos++){var char=sScript.charAt(iPos);if(char=='(')iOpens++;if(char==')')iCloses++;}
if(iOpens==iCloses){return true;}
else{return false;}}
function CheckAllBracketsMatchedAndAskUser(sScript,varDummy1){if(!AreCurlyBracketsMatched(sScript,"")){if(!confirm('Curly brackets are not matched - click ok if you\'re sure the script is correct.')){return false;}}
if(!AreRoundBracketsMatched(sScript,"")){if(!confirm('Round brackets are not matched - click ok if you\'re sure the script is correct.')){return false;}}
return true;}
document.onkeypress=checkKey;function EMR_ValidateCategoryCode(sCode){return EMR_ValidateControlNameOrValue(sCode);}
function EMR_ValidateControlValue(sName){var ch,i,iLen;var strError;iLen=sName.length;if(iLen<1){strError=" is missing";return strError;}
ch=sName.slice(0,1);if(!(("{"==ch)||("_"==ch)||("a"<=ch&&ch<="z")||("A"<=ch&&ch<="Z")||("0"<=ch&&ch<="9"))){strError=": first character must be a letter, number or {.";return strError;}
for(i=1;i<iLen;i++){ch=sName.slice(i,i+1);if(!(("a"<=ch&&ch<="z")||("A"<=ch&&ch<="Z")||("0"<=ch&&ch<="9"))){switch(ch){case' ':case'_':case'-':case'+':case'(':case')':case'{':case'}':case'.':case':':case'@':case'\'':case String.fromCharCode(233):case String.fromCharCode(232):case String.fromCharCode(224):case String.fromCharCode(231):case String.fromCharCode(235):case String.fromCharCode(239):case String.fromCharCode(234):case String.fromCharCode(238):case String.fromCharCode(244):case String.fromCharCode(226):break;default:strError=" may only include letters, numbers, spaces and any of _-+()\{\}.: characters";return strError;}}}
if(sName&&sName.toLowerCase()=='name'){strError=' cannot be "name"';return strError;}
return true;}
function EMR_ValidateControlNameOrValue(sName){var strError=EMR_ValidateControlValue(sName);if(strError==true){var iLen=sName.length;if(iLen>MAX_LENGTH_CONTROL_NAME_OR_VALUE){strError=" must be "+MAX_LENGTH_CONTROL_NAME_OR_VALUE+" characters or less";}}
return strError;}
function EMR_ValidateFormControlValue(sName){var strError=EMR_ValidateControlNameOrValue(sName)
if(strError==true){if(sName.indexOf(' ')>=0){strError='may not contain spaces. ';}}
return strError;}
function EMR_getPageOffsetLeft(el){var ol=el.offsetLeft;while((el=el.offsetParent)!=null){ol+=el.offsetLeft;}
return ol;}
function EMR_getWindowOffsetLeft(el){return EMR_getPageOffsetLeft(el)-document.body.scrollLeft;}
function EMR_getPageOffsetTop(el){var ot=el.offsetTop;while((el=el.offsetParent)!=null){ot+=el.offsetTop;}
return ot;}
function EMR_getWindowOffsetTop(el){return EMR_getPageOffsetTop(el)-document.body.scrollTop;}
function doShowChartImage(oImageLink){if(oImageLink){var sImageURL=(oImageLink.attributes['emr_img_url']==null)?'':oImageLink.attributes['emr_img_url'].value;var sAltText=(oImageLink.attributes['alt']==null)?'':oImageLink.attributes['alt'].value;var sNewHTML='<img src="'+sImageURL
if(sAltText)sNewHTML=sNewHTML+'" alt="'+sAltText+'"';sNewHTML=sNewHTML+'>';oImageLink.innerHTML=sNewHTML;}}
var gsRootURL='/EMRRoot/';var gsBaseURL='../';var gsPageID;var gbDisplayPageHelp=true;var gbSupportLogon=false;var gsDocumentationURL='***NOT SET***';function EMR_GetParent(oElement,sTag)
{while(oElement!=null&&oElement.tagName.toLowerCase()!=sTag.toLowerCase()){oElement=oElement.parentElement||oElement.parentNode;}
if(oElement&&oElement.element)
{oElement=oElement.element;}
return oElement;}
function EMR_OpenBrWindow(theURL,winName,features){window.open(theURL,winName,features);}
function EMR_GetStyleObj(id){if(document.getElementById||document.all){return EMR.getElement(id).style;}else return EMR.getElement(id);}
function EMR_GetObj(id){return EMR.getElement(id);}
function EMR_SetClass(id,classname){if(document.all)
id.className=classname;else
id.setAttribute("class",classname);return true;}
function EMR_GetNonTextNode(node)
{try
{while(node&&node.nodeType!=1)
node=node.parentNode;}
catch(ex){node=null;}
return node;}
function EMR_GetLocation(el)
{var c={x:0,y:0};while(el)
{c.x+=el.offsetLeft;c.y+=el.offsetTop;el=el.offsetParent;}
return c;}
function EMR_SetCookie(name,value,expire)
{document.cookie=name+"="+escape(value)+((expire==null)?"":("; expires="+expire.toGMTString()))}
function EMR_GetCookie(Name)
{var search=Name+"="
if(document.cookie.length>0)
{offset=document.cookie.indexOf(search)
if(offset!=-1)
{offset+=search.length
end=document.cookie.indexOf(";",offset)
if(end==-1)
end=document.cookie.length
return unescape(document.cookie.substring(offset,end))}}}
function EMR_ReplaceChars(str,sFind,sReplace)
{if(str)
{while(str.indexOf(sFind)>=0)
{str=str.replace(sFind,sReplace);}}
else
{str='';}
return str;}
function EMR_MergeMarkup(str)
{str=EMR_ReplaceChars(str,'{i}','<img src="'+gsRootURL+'images/icons/info_small.gif" class="emr_img_inline_2">');str=EMR_ReplaceChars(str,'{?}','<img src="'+gsRootURL+'images/icons/help_small.gif" class="emr_img_inline_2">');str=EMR_ReplaceChars(str,'{m}','<img src="'+gsRootURL+'images/icons/quick_guides_small.gif" class="emr_img_inline_2">');str=EMR_ReplaceChars(str,'{v}','<img src="'+gsRootURL+'images/icons/video_small2.gif" class="emr_img_inline_2">');str=EMR_ReplaceChars(str,'{docs}',gsDocumentationURL);str=EMR_ReplaceChars(str,'%7Bdocs%7D',gsDocumentationURL);return str;}
function EMR_GetVersion(){if(typeof(top.session)!='undefined'&&typeof(top.session.getValue)!='undefined')
return top.session.getValue('sessInstallerVersionForQuery');else
{if(window.opener&&typeof(window.opener.top.session)!='undefined'&&typeof(window.opener.top.session.getValue)!='undefined')
return window.opener.top.session.getValue('sessInstallerVersionForQuery');else
return'';}}
function EMR_LoadCommonHelpResource(){var resourceUrl=gsRootURL+'text/HelpResource.asp?language='+EMR_gsHelpTextLanguageCode+'&pageId=common&version='+EMR_GetVersion();var iframe=document.getElementById("EMR_CommonHelpResource");if(resourceUrl!=iframe.src){setTimeout(function(){iframe.src=resourceUrl;},1);}}
function EMR_LoadHelpResource(pageID){var resourceUrl=gsRootURL+'text/HelpResource.asp?language='+EMR_gsHelpTextLanguageCode+'&pageId='+pageID+'&version='+EMR_GetVersion();var iframe=document.getElementById("EMR_HelpResource");if(resourceUrl!=iframe.src){setTimeout(function(){iframe.src=resourceUrl;},1);}}
function EMR_UpdateHelpTextFromElement(oElement){try
{var sID;if(oElement.getAttribute('emr_helptextid')){sID=oElement.getAttribute('emr_helptextid');}else{sID=oElement.id;}
if(sID)
{if(parent)
{if(EMR_IsDialog()){EMR_SetControlHelpTextFromID(sID);}else{EMR_TopFrame().EMR_SetControlHelpTextFromID(sID);}}}}
catch(e)
{}
finally
{}}
function EMR_GetHelpTextForID(oAdminPage,sID,oHelpText)
{var oControlHelp;if(oAdminPage&&EMR.getElement)
{oControlHelp=oAdminPage.EMR.getElement(sID);if(oControlHelp)
{oHelpText.text=oControlHelp.innerHTML;if(EMR_ExtractHelp(oHelpText))
{return true;}}}
try
{if(EMR.getElement('EMRHelpFrame'))
{oControlHelp=EMRHelpFrame.EMR_GetObj(sID);if(oControlHelp)
{oHelpText.text=oControlHelp.innerHTML;if(EMR_ExtractHelp(oHelpText))
{return true;}}}}
catch(e)
{Log(e,'Could not get help text for ID'+sID,logVerbosity.Information);}
return false;}
function EMR_ExtractHelp(oHelp)
{var sHelpText=oHelp.text;var arrHelp=(sHelpText.split('{emr_'));var iCount=arrHelp.length;var iPos;for(iPos=1;iPos<iCount;iPos++)
{var sEntry=arrHelp[iPos];var iEndType=sEntry.indexOf('}');if(iEndType>0)
{var sType=sEntry.slice(0,iEndType).toLowerCase();var sText=sEntry.slice(iEndType+1);if(sText.slice(sText.length-4).toLowerCase()=='<br>')
{sText=sText.slice(0,sText.length-4);}
switch(sType)
{case'head':oHelp.heading=sText;break;case'more':oHelp.moreURL=sText;break;case'video':oHelp.videoID=sText;break;case'faq':oHelp.faqID=sText;break;case'body':oHelp.body=sText;break;default:break;}}
else
{Log('Malformed help text entry for: '+oHelp.text,logVerbosity.Warning);}}
if(iCount>1)
{return true;}
else
{return false;}}
function EMR_GetDialogWidth(sOuterFrameDiv)
{var varWidth;var frame=document.getElementById(sOuterFrameDiv)
if(frame)
{if(window.XMLHttpRequest&&!document.all){varWidth=frame.clientWidth+25;}else{varWidth=frame.offsetWidth+15;}
varWidth=varWidth+"px";}
return varWidth;}
function EMR_GetDialogHeight(sOuterFrameDiv)
{var varHeight;var frame=document.getElementById(sOuterFrameDiv)
if(frame)
{if(window.XMLHttpRequest&&!document.all){varHeight=frame.clientHeight+frame.offsetTop+90;}else{varHeight=frame.offsetHeight+frame.offsetTop+90;}
if(varHeight>760)varHeight=760;varHeight=varHeight+"px";}
return varHeight;}
function EMR_ResizeDialog(sOuterFrameDiv)
{if(window.resizeToContent)
{window.resizeToContent();return;}
if(!sOuterFrameDiv)sOuterFrameDiv='OuterFrame';var varWidth=EMR_GetDialogWidth(sOuterFrameDiv);var varHeight=EMR_GetDialogHeight(sOuterFrameDiv);if(!varWidth||!varHeight)
{return false;}
try
{window.resizeTo(varWidth.replace('px',''),varHeight.replace('px',''));}
catch(e)
{}
try
{EMR_SetControlHelpTextFromID('emr_pagehelp');}
catch(e)
{}
return true;}
function EMR_GetWindowWidth(sOuterFrameDiv)
{var varWidth=document.getElementById('OuterFrame').offsetWidth+30;return varWidth;}
function EMR_GetWindowHeight(sOuterFrameDiv)
{var varHeight=document.getElementById('OuterFrame').offsetHeight+document.getElementById('OuterFrame').offsetTop+150;if(varHeight>600)varHeight=600;return varHeight;}
function EMR_ResizeWindow(sOuterFrameDiv)
{if(window.sizeToContent)
{window.sizeToContent();return;}
if(!sOuterFrameDiv)sOuterFrameDiv='OuterFrame';var varWidth=EMR_GetWindowWidth(sOuterFrameDiv);var varHeight=EMR_GetWindowHeight(sOuterFrameDiv);try
{window.resizeTo(varWidth,varHeight);}
catch(e)
{Log(e,'Not called from a window - EMR_ResizeWindow',logVerbosity.Warning);}
finally
{}}
function EMR_ChangeClassOfAllLinks()
{var arrLinks=document.getElementsByTagName('a');var iCountLinks=arrLinks.length;var iLink=0;for(iLink=0;iLink<iCountLinks;iLink++)
{var sHref=arrLinks[iLink].href;if(sHref)
{try
{var iLastQuestion=sHref.lastIndexOf('?');var iLastSlash=sHref.lastIndexOf('/');if((iLastSlash>0)&&(iLastQuestion<=0))
{sHref=sHref.slice(iLastSlash+1);}}
catch(e)
{Log(e,'EMR_ChangeClassOfAllLinks',logVerbosity.Warning);}
if(sHref.indexOf('.')<=0)
{$(arrLinks[iLink]).addClass('emr_a_helplink');}}}}
function EMR_GetPageID()
{return gsPageID;}
function EMR_TopFrame()
{var oFrame=this;while(true){if(oFrame.EMR_SetPageID||oFrame.parent==oFrame)
break;else
oFrame=oFrame.parent;}
return oFrame;}
function EMR_IsDialog()
{try
{if(top==this)
{return true;}
else
{return false;}}
catch(e)
{Log(e,'exception from emr_isdialog',logVerbosity.Serious);return false;}}
function EMR_doOnLoadAdmin()
{try
{var oHelp=new Object();var oTopFrame=EMR_TopFrame();if(parent)
{if(oTopFrame&&oTopFrame.EMR_SetPageID&&gbDisplayPageHelp)
{oTopFrame.EMR_SetPageID(gsPageID);oTopFrame.EMR_SetHelpTextLanguageCode(gsHelpTextLanguageCode);oTopFrame.EMR_SetPageHelpTextFromID('emr_pagehelp');}}
if(gsPageID!='0106'&&oTopFrame&&oTopFrame.EMR_SetTopNavNormal)
{oTopFrame.EMR_SetTopNavNormal();}}
catch(e)
{}}
function doPageKitCancel()
{window.returnValue=null;window.close();return false}
function convertToEMRLink(url,userProperties,logonKey){if(!url)
return url;if(!userProperties)
userProperties=top.session.getValue('sessUserProperties',false);if(!logonKey)
logonKey=top.session.getValue('sessLgnK',false);var containsQS=false;if(url.indexOf('?')>=0)
containsQS=true;if(userProperties){url+=(containsQS?'&':'?')+userProperties
containsQS=true;}
if(logonKey)
url+=(containsQS?'&':'?')+'sess='+logonKey
return url;}
function convertAllLinksForEMR(){try{var links=document.getElementsByTagName('a');var root=document.location.href.substring(0,document.location.href.length-(document.location.pathname.length+document.location.search.length)).toLowerCase();try{var userProperties=top.session.getValue('sessUserProperties',false);var logonKey=top.session.getValue('sessLgnK',false);}
catch(e){};for(var i=0;i<links.length;i++){if(links[i].href&&links[i].href.indexOf(window.location.href)<0&&((links[i].href.substring(0,root.length).toLowerCase()==root&&(links[i].emrlink==null||links[i].emrlink.toLowerCase()=="true"))||(links[i].emrlink!=null&&links[i].emrlink.toLowerCase()=="true")))
links[i].href=convertToEMRLink(links[i].href,userProperties,logonKey);}}
catch(ex){Log(ex,logVerbosity.Serious);}}
function emr_img_rollover_onmouseover(oElement)
{try
{if(oElement&&oElement.src)
{var sSrc=oElement.src;if(sSrc.indexOf('_f2')<=0)
{sSrc=sSrc.slice(0,sSrc.length-4)+'_f2.gif';}
oElement.src=sSrc;}}
catch(e)
{}
finally
{}
return true;}
function emr_img_rollover_onmouseout(oElement)
{try
{if(oElement&&oElement.src)
{var sSrc=oElement.src;if(sSrc.indexOf('_f2')>0)
{sSrc=sSrc.slice(0,sSrc.length-7)+'.gif';}
oElement.src=sSrc;}}
catch(e)
{}
finally
{}
return true;}
function emr_helplink_onclick(oElement)
{try
{var sHref=oElement.href;if(sHref)
{var iLastSlash=sHref.lastIndexOf('/');var sID=sHref.slice(iLastSlash+1);if(sID.indexOf('.')>0)
{var args=new Array();var arr=window.open(sHref,'_blank','width=650,height=500,resizable=yes,location=yes,menubar=yes,scrollbars=yes,status=yes');}
else
{if(parent)
{try
{if(EMR_IsDialog())
{EMR_SetPageHelpTextFromID(top,sID);}
else
{EMR_TopFrame().EMR_SetPageHelpTextFromID(sID);}}
catch(e)
{EMR_TopFrame().EMR_SetPageHelpTextFromID(sID);}}
else
{alert('no parent');}}}}
catch(e)
{}
finally
{}
return false;}
function AllMailableLists_ItemFilter(sender,row){return(TargetList_ItemFilter(sender,row)||MailingList_ItemFilter(sender,row)||DynamicList_ItemFilter(sender,row));}
function AllMailableLists_FolderFilter(sender,folder){return(TargetList_FolderFilter(sender,folder)||MailingList_FolderFilter(sender,folder)||DynamicList_FolderFilter(sender,folder));}
function TargetList_ItemFilter(sender,row){return isListType(row,1);}
function TargetList_FolderFilter(sender,folder){return containsListType(folder,1);}
function MailingList_ItemFilter(sender,row){return isListType(row,16);}
function MailingList_FolderFilter(sender,folder){return containsListType(folder,16);}
function DynamicList_ItemFilter(sender,row){return isListType(row,32);}
function DynamicList_FolderFilter(sender,folder){return containsListType(folder,32);}
function SeedList_ItemFilter(sender,row){return isListType(row,2);}
function SeedList_FolderFilter(sender,folder){return containsListType(folder,2);}
function ExclusionList_ItemFilter(sender,row){return isListType(row,4);}
function ExclusionList_FolderFilter(sender,folder){return containsListType(folder,4);}
function isListType(row,checkType){var type=row.getFieldValue('intType');if(type)
return((type&checkType)==checkType);return false;}
function containsListType(folder,checkType){if(folder.containsListType&&(folder.containsListType['Type_'+checkType]!=null))
return folder.containsListType['Type_'+checkType];var matchFound=false;var index;for(index in folder.items){if(isListType(folder.items[index],checkType)){matchFound=true;break;}}
if(!matchFound){for(index in folder.folders){if(containsListType(folder.folders[index],checkType)){matchFound=true;break;}}}
if(!folder.containsListType)
folder.containsListType=new Object();folder.containsListType['Type_'+checkType]=matchFound;return matchFound;}
function ListTree_OnGetIconPath(row)
{var iconName='list'
if(row){if(row.getFieldValue('intTargetType')!=0)
iconName+="-sync";if(isListType(row,2))
iconName+='-seed';else if(isListType(row,4))
iconName+='-excl';else if(isListType(row,8))
iconName+='-locked';else if(isListType(row,48))
iconName+='-dynamic';else if(isListType(row,16))
iconName+='-flash';if(row.getFieldValue('intStatus')<100)
iconName+='-deleted';}
iconName+='.gif'
return iconName;}
function ClickMailingTree_OnGetIconPath(row){var iconName='email-1.gif';return iconName;}
function AssetTree_OnGetIconPath(row){return"email-1.gif";}
function emr_IsPopupBlocker(){var bBlocked=false;var strNewURL="Dummy.htm"
var Strfeature="height=10,width=10,status=yes,scrollbars=no,status=no,titlebar=no,toolbar=no; ";var WindowOpen=window.open(strNewURL,"MainWindow",Strfeature);try{var obj=WindowOpen.name;WindowOpen.close();}
catch(e){bBlocked=true}
return bBlocked;}
var EMRValidationList=new Object();var prePopulateCheck=false;function EMRValidate_Anything(str,min,max)
{if(str.length<min||str.length>max)
return false;else
return true;}
function EMRValidate_Numeric(num,rqd,min,max)
{if(rqd&&num=="")
{return false;}
else
{var validNumbers="0123456789";var chr;for(i=0;i<num.length;i++)
{chr=num.charAt(i);if(validNumbers.indexOf(chr)==-1)
return false;}}
if(parseInt(num,10)<min||parseInt(num,10)>max)
return false;return true;}
function EMRValidate_Decimal(num,rqd)
{if(rqd&&num=="")
{return false;}
else
{var validNumbers="0123456789.";var chr;for(i=0;i<num.length;i++)
{chr=num.charAt(i);if(validNumbers.indexOf(chr)==-1)
return false;}}
return true;}
function EMRValidate_Alpha(str,min,max)
{if(str.length<min||str.length>max)
return false;str=str.replace(/[A-Za-z]*/g,"");if(str!="")
return false;return true;}
function EMRValidate_Alphanumeric(str,min,max)
{if(str.length<min||str.length>max)
return false;str=str.replace(/[A-Za-z0-9]*/g,"");if(str!="")
return false;return true;}
function EMRValidate_EmailFormat(str,min,max)
{if(str.length<min||str.length>max)
return false;str=str.replace(/[A-Za-z0-9@\_\-\.,]*/g,"");if(str!="")
return false;return true;}
function EMRValidate_Name(str,min,max)
{if(str.length<min||str.length>max)
return false;str=str.replace(/[A-Za-z 0-9]*/g,"");if(str!="")
return false;return true;}
function EMRValidate_NameHyphen(str,min,max)
{if(str.length<min||str.length>max)
return false;str=str.replace(/[A-Za-z 0-9\-]*/g,"");if(str!="")
return false;return true;}
function EMRValidate_AlphanumericHyphen(str,min,max)
{if(str.length<min||str.length>max)
return false;str=str.replace(/[A-Za-z0-9\-]*/g,"");if(str!="")
return false;return true;}
function EMRValidate_Email(str)
{if(str!=""&&str.length<6||str.length>100)
return false;if(str!=""&&!str.match(/^[a-zA-Z0-9!#\$%&'\*\+-\/=\?^_`\{\|\}~]+(\.[a-zA-Z0-9!#\$%&'\*\+-\/=\?^_`\{\|\}~]+){0,5}@[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+){1,9}(,( )?[a-zA-Z0-9!#\$%&'\*\+-\/=\?^_`\{\|\}~]+(\.[a-zA-Z0-9!#\$%&'\*\+-\/=\?^_`\{\|\}~]+){0,5}@[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+){1,9})*$/i))
return false;return true;}
function EMRValidate_OneEmailAddress(str)
{if(str!=""&&str.match(/^.*@.*@.*$/i))
return false;return EMRValidate_Email(str);}
function EMRValidate_Folder(path,min,max)
{if(path.length<min||path.length>max)
return false;if(!path.match(/^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^\/:*?<>"|]*))+)$/))
return false;return true;}
function EMRValidate_Regexp(str,regexp)
{if(regexp==null)
{Log('RegExp supplied for '+target.getAttribute('id')+'" was not supplied to EMRAddValidation or was invalid. EMRValidate_Regexp()',logVerbosity.Serious);return false;}
else
{if(str!=""&&!str.match(regexp))
return false;}
return true;}
function EMRValidate_Function(str,fn)
{if(typeof(fn)=='string'&&typeof(window[fn])=='function')
{return window[fn](str);}
else if(fn==null||typeof(fn)!='function')
{try{Log('customValidation argument assigned to "'+target.getAttribute('id')+'" was not a function or was missing!',logVerbosity.Serious);}catch(ex){}
return false;}
else
{var returnVal=fn(str);if(returnVal===false)
return false;}
return true;}
function EMRValidate_IPAddress(ip)
{if(ip!=""&&!ip.match(/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/))
return false;else
return true;}
function EMRValidate_IPList(ips)
{var iparray=ips.split(/[-,]/);var validList=true;for(var i=0;i<iparray.length;i++)
{if(!EMRValidate_IPAddress(iparray[i]))
validList=false;}
return validList;}
function EMRValidate_URL(url)
{if(url!=""&&!url.match(/(http|https)\:\/\/(([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})|([\w\-]+)+(()))(:[\d]{1,4})?($|(\/([a-zA-Z0-9\.\?=/#%&\+-])*)*|\/)/))
return false;else
return true;}
function EMRValidate_Date(date)
{if(!date.match(/^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[012])\/(19|20)?\d\d$/))
return false;var dateParts=date.split("/");var day=parseInt(dateParts[0],10);var month=parseInt(dateParts[1],10);var year=parseInt(dateParts[2],10);if(isNaN(day)||isNaN(month)||isNaN(year))
return false;if(day<1||day>31)
return false;if(month<1||month>12)
return false;if(year<0||year>2500)
return false;var daysInMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);var isLeap=new Date(year,1,29).getDate()==29;if(isLeap)
daysInMonth[1]=29;if(day>daysInMonth[month-1])
return false;return true;}
function EMRValidate_EMRFolder(path,min,max)
{if(path.length<min||path.length>max)
return false;path=path.replace(/[A-Za-z0-9.]*/g,"");if(path!="")
return false;return true;}
function EMRValidate_DateTime(datetime)
{if(!datetime.match(/^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[012])\/(19|20)?\d\d (0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9])(:\d\d)?$/))
return false;var dateParts=datetime.split("/");var day=parseInt(dateParts[0],10);var month=parseInt(dateParts[1],10);var year=parseInt(dateParts[2],10);if(isNaN(day)||isNaN(month)||isNaN(year))
return false;if(day<1||day>31)
return false;if(month<1||month>12)
return false;if(year<0||year>2500)
return false;var daysInMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);var isLeap=new Date(year,1,29).getDate()==29;if(isLeap)
daysInMonth[1]=29;if(day>daysInMonth[month-1])
return false;return true;}
function EMRValidate_DateOptionalTime(datetime)
{if(!datetime.match(/^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[012])\/(19|20)?\d\d( (0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9])(:\d\d)?)?$/))
return false;var dateParts=datetime.split("/");var day=parseInt(dateParts[0],10);var month=parseInt(dateParts[1],10);var year=parseInt(dateParts[2],10);if(isNaN(day)||isNaN(month)||isNaN(year))
return false;if(day<1||day>31)
return false;if(month<1||month>12)
return false;if(year<0||year>2500)
return false;var daysInMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);var isLeap=new Date(year,1,29).getDate()==29;if(isLeap)
daysInMonth[1]=29;if(day>daysInMonth[month-1])
return false;return true;}
function EMRValidate_BoothKey(boothkey)
{if(boothkey.length<6||boothkey.length>6)
return false;boothkey=boothkey.replace(/[A-Za-z]{3}[0-9]{3}/g,"");if(boothkey!="")
return false;return true;}
function EMRValidate_BoothKeyList(boothkeys)
{var booth_array=boothkeys.split(",");var validList=true;var count=booth_array.length;for(var i=0;i<count;i++)
{if(booth_array[i].toUpperCase()!="$ALL"&&!EMRValidate_BoothKey(booth_array[i]))
validList=false;}
return validList;}
function EMRValidate_EmailList(emaillist)
{var email_array=emaillist.split(",");var count=email_array.length;var email;for(var i=0;i<count;i++)
{if(jQuery)
email=jQuery.trim(email_array[i]);else
email=email_array[i];if(!EMRValidate_Email(email))
return false;}
return true;}
function EMRValidate_ColourList(colourList){var arrList=colourList.split(',');var len=arrList.length;for(var i=0;i<len;i++){if(!EMRValidate_Colour(arrList[i])){return false;}}
return true;}
function EMRValidate_Colour(colour){if(!colour.match(/#([a-f]|[A-F]|[0-9]){6}?$/)){return false;}
return true;}
function EMRValidate_onkeyup(e)
{if(!e)e=this;EMRValidate(e);return true;}
function EMRValidate(param)
{var passedValidation=true;var idTarget;var target;var e;if(!param)
{e=this;}
else
{e=param;}
if(!e.target)
{target=e;}
else
{target=e.target;}
if(!target.getAttribute&&!target.id)
{return false;}
if(!target.getAttribute)
idTarget=target.id;else
idTarget=target.getAttribute('id');var validationString;if(document.all&&target.tagName&&target.tagName=="SELECT")
{validationString=target[target.selectedIndex].text}
else
{if(target.value!=undefined)
validationString=target.value;else if(target.getValue)
validationString=target.getValue();}
if(!EMRValidationList[idTarget])
{return true;}
var validationType=EMRValidationList[idTarget][0];var validationFieldRequired=!EMRValidationList[idTarget][1];var validationInformation=EMRValidationList[idTarget][2];var validationPrePopulate=false;if(!e.target&&!prePopulateCheck)
validationPrePopulate=target.getAttribute('validationPrePopulate')=='true'
if(validationType!=9&&validationString==""&&validationPrePopulate==false){validationType=-1;if(validationFieldRequired)
passedValidation=false;}
if(EMRValidationList[idTarget][3]!=null)
EMRValidationList[idTarget][3]();switch(validationType)
{case-1:break;case 0:case 1:case 2:case 3:case 4:case 5:case 7:case 14:if(typeof(validationInformation)!='undefined'&&typeof(validationInformation)!='object'&&typeof(validationInformation)!='array'&&typeof(validationInformation)!='number')
{Log('Number or array supplied for '+idTarget+'" was not supplied to EMRAddValidation or was invalid!',logVerbosity.Serious);passedValidation=false;}
else
{if(typeof(validationInformation)=='undefined')
{var minStrLen=0;var maxStrLen=1024;}
else if(typeof(validationInformation)=='number')
{var minStrLen=0;var maxStrLen=validationInformation;}
else if(typeof(validationInformation)=='object'||typeof(validationInformation)=='array')
{var minStrLen=validationInformation[0];var maxStrLen=validationInformation[1];}}
break;}
var validResult=true;switch(validationType)
{case-1:break;case 0:validResult=EMRValidate_Anything(validationString,minStrLen,maxStrLen);break;case 1:validResult=EMRValidate_Numeric(validationString,validationFieldRequired,minStrLen,maxStrLen);break;case 2:validResult=EMRValidate_Alpha(validationString,minStrLen,maxStrLen);break;case 3:validResult=EMRValidate_Alphanumeric(validationString,minStrLen,maxStrLen);break;case 4:validResult=EMRValidate_EmailFormat(validationString,minStrLen,maxStrLen);break;case 5:validResult=EMRValidate_Name(validationString,minStrLen,maxStrLen);break;case 6:validResult=EMRValidate_Email(validationString);break;case 7:validResult=EMRValidate_Folder(validationString,minStrLen,maxStrLen);break;case 8:validResult=EMRValidate_Regexp(validationString,validationInformation);break;case 9:validResult=EMRValidate_Function(validationString,validationInformation);break;case 10:validResult=EMRValidate_IPAddress(validationString);break;case 11:validResult=EMRValidate_IPList(validationString);break;case 12:validResult=EMRValidate_URL(validationString);break;case 13:validResult=EMRValidate_Date(validationString);break;case 14:validResult=EMRValidate_EMRFolder(validationString,minStrLen,maxStrLen);break;case 15:validResult=EMRValidate_DateTime(validationString);break;case 16:validResult=EMRValidate_BoothKey(validationString);break;case 17:validResult=EMRValidate_BoothKeyList(validationString);break;case 18:validResult=EMRValidate_EmailList(validationString);break;case 19:validResult=EMRValidate_NameHyphen(validationString,minStrLen,maxStrLen);break;case 20:validResult=EMRValidate_OneEmailAddress(validationString);break;case 21:validResult=EMRValidate_Colour(validationString);break;case 22:validResult=EMRValidate_ColourList(validationString);break;case 23:validResult=EMRValidate_AlphanumericHyphen(validationString,minStrLen,maxStrLen);break;case 24:validResult=EMRValidate_Decimal(validationString,validationFieldRequired);break;case 25:validResult=EMRValidate_DateOptionalTime(validationString);break;default:Log('validation type '+validationType+' not recognised?',logVerbosity.Serious);passedValidation=false;break;}
if(validResult===false)
passedValidation=false;if(passedValidation==false)
{EMRValidation_MakeStyle_Invalid(target);}
else
{EMRValidation_MakeStyle_Valid(target);}
if(EMRValidationList[idTarget][3]!=null)
EMRValidationList[idTarget][3]();return passedValidation;}
function EMRValidation_AssignClickEvent(element)
{if(element.onclick)
EMRValidationList[element.getAttribute("id")][3]=element.onclick;element.onclick=EMRValidate;if(element.captureEvents)
element.captureEvents(Event.CLICK);}
function EMRValidation_AssignKeyEvent(element)
{if(element.onkeyup)
EMRValidationList[element.getAttribute("id")][3]=element.onkeyup;element.onkeyup=EMRValidate_onkeyup;if(element.captureEvents)
element.captureEvents(Event.KEYUP);}
function EMRValidation_AssignChangeEvent(element)
{if(element.onchange)
EMRValidationList[element.getAttribute("id")][3]=element.onchange;element.onchange=EMRValidate;if(element.captureEvents)
element.captureEvents(Event.CHANGE);}
function EMRAddValidation(elementId,validationType,bAllowBlank,customValidation,optionalUseKeyEvent)
{var useKeyEvent=typeof(optionalUseKeyEvent)=='undefined'?true:optionalUseKeyEvent;EMRValidationList[elementId]=[validationType,bAllowBlank,customValidation,null];var element=window[elementId];if(!element)
element=EMR.getElement(elementId);if(useKeyEvent)
{EMRValidate(element);if(element.tagName)
{if(element.tagName.toLowerCase()=="input"&&element.getAttribute("type")=="radio")
{EMRValidation_AssignClickEvent(element);}
else if(element.tagName.toLowerCase()=="select")
{EMRValidation_AssignChangeEvent(element);}
else
{EMRValidation_AssignKeyEvent(element);}}
else if(element.type=='EMRSelect')
{element.OnChange='EMRValidate(element.id)';}}}
function EMRRemoveValidation(elementId)
{var element=window[elementId];if(!element)
element=document.getElementById(elementId);EMRValidation_MakeStyle_Valid(element);EMRValidationList[elementId]=null;}
function EMRIsInValidationList(elementId)
{return EMRValidationList[elementId]?true:false;}
function EMRValidateAll()
{var hasFailed=false;var failedIDs=new Array();prePopulateCheck=true;for(var elID in EMRValidationList)
{var thisObj=window[elID];if(!thisObj)
thisObj=document.getElementById(elID);var returnVal=EMRValidate(thisObj);if(returnVal==false)
{failedIDs.push(elID);}
if(returnVal==false&&!hasFailed)
{try
{if(thisObj.type!='EMRSelect'&&thisObj.type!='EMRTreeSelect')
{thisObj.focus();}}
catch(ex)
{}
hasFailed=true;}}
var result=new Object();result.passedValidation=!hasFailed;result.failedIDs=failedIDs;return result;}
function EMRValidateElement(elementId)
{if(EMRIsInValidationList(elementId))
{var thisObj=window[elementId];if(!thisObj)
thisObj=document.getElementById(elementId);return EMRValidate(thisObj);}}
function EMRAddValidations()
{$(document).find("input[validationType], textarea[validationType], select[validationType]").each(function()
{var elementId=this.id;if(elementId==""||elementId==null)
Log('An element that was registered for validation did not have an id attribute',logVerbosity.Serious);var validationTypeStr=this.attributes['validationType'];if(validationTypeStr!=null&&validationTypeStr.value!=null)
{validationTypeStr=validationTypeStr.value;var validationUseKeyEvent=this.attributes['validationUseKeyEvent'];validationUseKeyEvent=validationUseKeyEvent==undefined||validationUseKeyEvent.value!='false';var validationMin=this.attributes['validationMin'];validationMin=validationMin==undefined?0:parseInt(validationMin.value,10);var validationMax=this.attributes['validationMax'];validationMax=validationMax==undefined?(validationTypeStr=="numeric"?2147483647:1024):parseInt(validationMax,10);var allowBlank=this.attributes['allowBlank'];allowBlank=allowBlank!=undefined&&allowBlank.value=='true';var validationType=0;var customValidation=new Array(validationMin,validationMax);switch(validationTypeStr.toLowerCase())
{case"anything":validationType=0;break;case"numeric":validationType=1;break;case"alpha":validationType=2;break;case"alphanumeric":validationType=3;break;case"emailformat":validationType=4;break;case"name":validationType=5;break;case"email":case"emailstrict":validationType=6;break;case"folder":validationType=7;break;case"regexp":validationType=8;customValidation=new RegExp(this.attributes['validationRegexp'].value,"gi");break;case"function":validationType=9;customValidation=this.attributes['validationFunction'].value;break;case"ipaddress":validationType=10;break;case"iplist":validationType=11;break;case"url":validationType=12;break;case"date":validationType=13;break;case"emrfolder":validationType=14;if(validationMax<30)validationMax=200;customValidation=new Array(validationMin,validationMax);break;case"datetime":validationType=15;break;case"boothkey":validationType=16;break;case"boothkeylist":validationType=17;break;case"emaillist":validationType=18;break;case"namehyphen":validationType=19;break;case"oneemail":validationType=20;break;case"colour":validationType=21;break;case"colourlist":validationType=22;break;case"alphanumerichyphen":validationType=23;break;default:Log("validation type '"+validationTypeStr+"' not recognised",logVerbosity.Serious);break;}
EMRAddValidation(elementId,validationType,allowBlank,customValidation,validationUseKeyEvent);}});}
function EMRAddLoadEvent(func)
{var oldonload=window.onload;if(typeof(window.onload)!='function')
{window.onload=func;}
else
{window.onload=function(){if(oldonload)
{oldonload();}
func();}}}
function EMRValidation_MakeStyle_Invalid(element)
{if(element.type&&element.type=='EMRSelect')
{element=document.getElementById(element.selectElementId);element.style.border='1px solid';element.style.borderColor='red';return;}
else if(element.type&&element.type=='EMRTreeSelect')
{element=document.getElementById(element.comboBoxId);element.style.border='1px solid';element.style.borderColor='red';return;}
var applyClass='emr_'+element.tagName.toLowerCase()+'_invalid_entry';if(element.className.indexOf(applyClass)==-1)
{element.className=element.className+' '+applyClass;element.invalidClassAppended=true;}}
function EMRValidation_MakeStyle_Valid(element)
{if(element.type&&element.type=='EMRSelect')
{element=document.getElementById(element.selectElementId);element.style.border='1px solid';element.style.borderColor='#555555';return;}
else if(element.type&&element.type=='EMRTreeSelect')
{element=document.getElementById(element.comboBoxId);element.style.border='1px solid';element.style.borderColor='#555555';return;}
var applyClass='emr_'+element.tagName.toLowerCase()+'_invalid_entry';if(element.invalidClassAppended)
{var classes=element.className.split(" ");var newclasses='';for(var i=0;i<classes.length;i++)
{if(classes[i]!=applyClass)
newclasses+=' '+classes[i];}
newclasses=newclasses.substring(1,newclasses.length);element.className=newclasses;}}
function EMRStringToDate(datetime)
{var dateTimeParts=datetime.split(" ");if(dateTimeParts.length<2)
{return false;}
else
{var dateParts=dateTimeParts[0].split("/");var timeParts=dateTimeParts[1].split(":");var dyInt=parseInt(dateParts[0],10);var moInt=parseInt(dateParts[1],10);var yrInt=parseInt(dateParts[2],10);if(isNaN(dyInt)||isNaN(moInt)||isNaN(yrInt))
return false;if(dyInt<1||dyInt>31)
return false;if(moInt<1||moInt>12)
return false;if(yrInt<0||yrInt>2500)
return false;var hhInt=parseInt(timeParts[0],10);var mmInt=parseInt(timeParts[1],10);if(isNaN(hhInt)||isNaN(mmInt))
return false;if(hhInt<0||hhInt>24)
return false;if(mmInt<0||mmInt>59)
return false;var d=new Date(yrInt,moInt-1,dyInt,hhInt,mmInt,0,0);return d;}}
function EMRShowValidationAlert(validationResult)
{var errorMsg="<span>Please correct the following:</span><br /><br /><ul>";var height=130;$(validationResult.failedIDs).each(function()
{var text=$(document).find("#"+this).attr("validationMessage");if(text)
{errorMsg+="<li>"+text+"</li>";height+=20*Math.ceil(text.length/55);}});errorMsg+="</ul>";try
{radalert(errorMsg,400,height,'');}
catch(ex)
{errorMsg="Please correct the following:\n\n";$(validationResult.failedIDs).each(function()
{errorMsg+="- "+$(document).find("#"+this).attr("validationMessage")+"\n";});alert(errorMsg);}
return true;}
function EMRGetFailedValidationMessages(validationResult)
{var response=new Array();$(validationResult.failedIDs).each(function()
{response.push($(document).find("#"+this).attr("validationMessage"));});return response;}
var PAUSE_FOR_CONTROL_TO_LOAD=10;var ITEM_DELIMITER='|';var ITEM_DELIMITER_ENCODED='_EMR_ITEM_DELIM';var NAME_VALUE_DELIMITER='=';var NAME_VALUE_DELIMITER_ENCODED='_EMR_NAME_DELIM';function EMRPageManager(){var me=this;var pageStatus=0;this.controls=new Dictionary();this.statuses=new Object();this.statuses['registered']=0;this.statuses['loading']=1;this.statuses['newDataAvailable']=2;this.statuses['loadingComplete']=3;this.controlsLoading=null;this.allControlsLoaded=null;this.pageDataChanged=null;this.registerControl=function(EMRControl){if(!EMRControl.id){}
else if(me.controls.indexes[EMRControl.id]==null){var newControl=new Object();newControl.id=EMRControl.id;newControl.ref=EMRControl;newControl.status=0;me.controls.add(newControl.id,newControl)}
else{}}
this.updateControlStatus=function(EMRControl,status){var controlIndex=me.controls.indexes[EMRControl.id];if(status<0||status>3){}
else if(controlIndex!=null){me.controls.items[controlIndex].status=status;}
else{}
var lowestPositiveStatus=100;for(var controlIndex=0;controlIndex<me.controls.length;controlIndex++){if(me.controls.items[controlIndex].status<1){}
else if(me.controls.items[controlIndex].status<lowestPositiveStatus){lowestPositiveStatus=me.controls.items[controlIndex].status;}}
if(lowestPositiveStatus!=pageStatus){switch(lowestPositiveStatus){case 1:raiseEvent(me.controlsLoading,false);break;case 2:raiseEvent(me.pageDataChanged,false);break;case 3:raiseEvent(me.allControlsLoaded,false);break;default:return;}
pageStatus=lowestPositiveStatus;}}
this.refreshAll=function()
{var controlsLength=me.controls.length;var controlIndex=0;for(controlIndex=0;controlIndex<controlsLength;controlIndex++)
{me.refreshControl(me.controls.items[controlIndex]);}}
this.refreshControl=function(control)
{if(control)
{window.setTimeout(function(){try{control.ref.refresh();}catch(ex){alert(ex);}},0);}}}
var epm=new EMRPageManager();function raiseEvent(evt,async){if(evt!=null){try{if(async)
window.setTimeout(evt,0);else
evt();}
catch(ex){Log(ex,'Failed to raise event',logVerbosity.Warning);}}}
function parseCallbackResponse(responseId){var responseElement=document.getElementById(responseId);if(responseElement==null){alert('No data was received from a dialog. Please check that any changes you have made within the last minute have taken effect. Error code: 107672:'+responseId);return null;}
var responseString=responseElement.value;var response=null;try
{response=eval('('+responseString+')');response.data=response.Data;response.warnings=response.Warnings;response.success=!response.Cancel;response.errors=response.Errors;}catch(ex)
{Log('Unable to parse the callback response, the callback response could not be evaluated. ('+ex.message+')',logVerbosity.Warning);}
return response;}
function getNodeText(node)
{if(typeof(node.textContent)!='undefined')return node.textContent||'';if(node.firstChild&&node.firstChild.nodeValue)return node.firstChild.nodeValue||'';return'';}
function showCallbackErrorAlert(response){if(response&&response.errors){var errorString='';for(var key in response.errors)
{if(typeof(response.errors[key])!='function')
{errorString+=response.errors[key]+'\n';}}
if(errorString.length>0)
EMR.showErrors(response,'Operation failed');}}
function serialiseCallbackData(data){var ret='';var joinChar='';for(var index in data)
{if(typeof(data[index])!='function')
{ret+=joinChar+encodeDelimiters(index)+'='+encodeDelimiters(data[index]);joinChar=ITEM_DELIMITER;}}
return encode(ret);}
function encodeDelimiters(value){if(!value)return value;value=''+value;value=value.replace(new RegExp(NAME_VALUE_DELIMITER,'g'),NAME_VALUE_DELIMITER_ENCODED);value=value.replace(new RegExp('\\'+ITEM_DELIMITER,'g'),ITEM_DELIMITER_ENCODED);value=value.replace(new RegExp('\\'+'&#13;','g'),'\r');value=value.replace(new RegExp('\\'+'&#10;','g'),'\n');return value;}
function encode(data){var div=document.createElement('pre');var text=document.createTextNode(data);div.appendChild(text);return div.innerHTML;}
function EMRCallback(callbackId,clientId)
{var me=this;this._callbackId=callbackId;this._clientId=clientId;this.controlIds=null;this.isDoingCallback=false;this.onSubmit=null;this.onSubmitted=null;this.onCallbackComplete=null;this.isInitialised=false;this.init=function()
{me.isInitialised=true;}
this.doCallbackComplete=function()
{me.isDoingCallback=false;var response=parseCallbackResponse(me._clientId+'_CallbackResponse');if(response==null)return;showCallbackErrorAlert(response);me.isDoingCallback=false;if(me.onCallbackComplete!=null)
{if(top.isDebug)
{var ok=me.onCallbackComplete(me,response);if(ok==null)ok=true;return ok;}
else
{try
{var ok=me.onCallbackComplete(me,response);if(ok==null)ok=true;return ok;}
catch(ex)
{Log(ex,logVerbosity.Warning);}}}
return true;};this.DoCallback=function(callbackData)
{if(me.isDoingCallback)
return;var data=callbackData;if(data==null)
data=new Array();var ok=true;if(me.onSubmit!=null)
{try
{ok=me.onSubmit(me,data);if(ok==null)ok=true;}
catch(ex){Log(ex,'DoCallback - EMRCustomControls_EMRCallback.js, L56',logVerbosity.Warning);}}
if(!ok)return;if(me.controlIds!=null)
{var ctrl=null;for(var index=0;index<me.controlIds.length;index++)
{ctrl=document.getElementById(me.controlIds[index]);;if(ctrl==null)
{Log('Unable to build data to be posted to the server.\nThe control "'+me.controlIds[index]+'" could not be found.',logVerbosity.Warning);return false;}
else
{if(ctrl.value!=null)
{data[me.controlIds[index]]=ctrl.value;}
else
{Log('Unable to build data to be posted to the server.\nThe control "'+me.controlIds[index]+'" has no value property.',logVerbosity.Warning);return false;}}}
ctrl=null;}
if(window[me._callbackId])
{me.isDoingCallback=true;window[me._callbackId].Callback(serialiseCallbackData(data));}
else
{Log('Unable to submit data to the server.  Callback control missing.',logVerbosity.Warning);}
if(me.onSubmitted!=null)
{try
{me.onSubmitted(me);}
catch(ex)
{Log(ex,'DoCallback - EMRCustomControls_EMRCallback.js, L95',logVerbosity.Warning);}}}}
function EMRCallbackButton(clientId,callbackClientId,callbackButtonText){var me=this;this.controlIds=null;this.isDoingCallback=false;this._callbackClientId=callbackClientId;this.onInitialise=null;this.onInitialised=null;this.onSubmit=null;this.onSubmitted=null;this.onCallbackComplete=null;var button=null;var buttonText=null;this.init=function(){if(document.getElementsByName(clientId+'_Button').length==0){window.setTimeout(me.init,PAUSE_FOR_CONTROL_TO_LOAD);return false;}
button=document.getElementsByName(clientId+'_Button')[0];buttonText=button.value;if(me.onInitialise){try{me.onInitialise(me);}
catch(ex){Log(ex,'init, EMRCustomControls_EMRCallbackButton.js, L34',logVerbosity.Warning);}}
if(me.onInitialised!=null){try{me.onInitialised(me);}
catch(ex){Log(ex,'init, EMRCustomControls_EMRCallbackButton.js, L65',logVerbosity.Warning);}}}
this.doCallbackComplete=function()
{var response=parseCallbackResponse(clientId+'_CallbackResponse');if(response==null)return;showCallbackErrorAlert(response);enableButton(buttonText);me.isDoingCallback=false;if(me.onCallbackComplete!=null)
{if(top.isDebug)
{var ok=me.onCallbackComplete(me,response);if(ok==null)ok=true;return ok;}
else
{try
{var ok=me.onCallbackComplete(me,response);if(ok==null)ok=true;return ok;}
catch(ex)
{Log(ex,'init, EMRCustomControls_EMRCallbackButton.js, L53',logVerbosity.Warning);}}}
return true;};this.enable=function(text){enableButton(text);}
this.disable=function(text){disableButton(text);}
this.submit=function(){if(me.isDoingCallback)
return;disableButton(callbackButtonText);var data=new Array();var ok=true;if(me.onSubmit!=null){try{ok=me.onSubmit(me,data);if(ok==null)ok=true;}
catch(ex){Log(ex,'submit, EMRCustomControls_EMRCallbackButton.js, L91',logVerbosity.Warning);}}
if(!ok){enableButton(buttonText);return;}
if(me.controlIds!=null){for(var index=0;index<me.controlIds.length;index++){try{data[me.controlIds[index]]=EMR.getControlValue(me.controlIds[index]);}
catch(ex){enableButton(buttonText);return false;}}}
if(window[me._callbackClientId]){me.isDoingCallback=true;window[me._callbackClientId].Callback(serialiseCallbackData(data));}
else{Log('Unable to submit data to the server.  Callback control missing.',logVerbosity.Warning);enableButton(buttonText);}
if(me.onSubmitted!=null){try{me.onSubmitted(me);}
catch(ex){Log(ex,'submit, EMRCustomControls_EMRCallbackButton.js, L136',logVerbosity.Warning);}}}
function enableButton(text){if(button!=null){button.disabled=false;if(!text)text=buttonText;button.value=text;}}
function disableButton(text){if(button!=null){button.disabled=true;if(!text)text=buttonText;button.value=text;}}}
function EMRPageStatus(id,mode,loadingText,loadingCompleteText,pageDataChangedText,loadingImagePath,loadingCompleteImagePath,pageDataChangedImagePath,imageWidth,imageHeight){var me=this;var pageStatusElement=null;this.onControlsLoading=null;this.onAllControlsLoaded=null;this.onPageDataChanged=null;this.id=id;this.type='EMRPageStatus';this.modes=new Object();this.modes['Image']=0;this.modes['Text']=1;this.mode=this.modes[mode];this.loadingText=loadingText;this.loadingCompleteText=loadingCompleteText;this.pageDataChangedText=pageDataChangedText;this.loadingImage=null;this.loadingCompleteImage=null;this.pageDataChangedImage=null;if(imageWidth==null||imageWidth<1)imageWidth=24;if(imageHeight==null||imageHeight<1)imageHeight=24;if(loadingImagePath&&loadingImagePath!=''){me.loadingImage=new Image(imageWidth,imageHeight);me.loadingImage.src=loadingImagePath;me.loadingImage.title=loadingText;}
if(loadingCompleteImagePath&&loadingCompleteImagePath!=''){me.loadingCompleteImage=new Image(imageWidth,imageHeight);me.loadingCompleteImage.src=loadingCompleteImagePath;me.loadingCompleteImage.title=loadingCompleteText;}
if(pageDataChangedImagePath&&pageDataChangedImagePath!=''){me.pageDataChangedImage=new Image(imageWidth,imageHeight);me.pageDataChangedImage.src=pageDataChangedImagePath;me.pageDataChangedImage.title=pageDataChangedText;}
this.init=function(){pageStatusElement=document.getElementById(me.id);if(pageStatusElement==null){window.setTimeout(me.init,PAUSE_FOR_CONTROL_TO_LOAD);return}
if(typeof(epm)!='undefined'){epm.controlsLoading=controlsLoading;epm.allControlsLoaded=allControlsLoaded;epm.pageDataChanged=pageDataChanged;}
else
Log('Unable to initialise the Page Status control.  The Page Manager could not be found.',logVerbosity.Warning);}
function controlsLoading(){raiseEvent(me.onControlsLoading,false);switch(me.mode){case me.modes['Image']:setImage(me.loadingImage,false);break;case me.modes['Text']:setText(me.loadingText,false);break;}}
function allControlsLoaded(){raiseEvent(me.onAllControlsLoaded,false);switch(me.mode){case me.modes['Image']:setImage(me.loadingCompleteImage,true);break;case me.modes['Text']:setText(me.loadingCompleteText,true);break;}}
function pageDataChanged(){raiseEvent(me.onPageDataChanged,false);switch(me.mode){case me.modes['Image']:setImage(me.pageDataChangedImage,true);break;case me.modes['Text']:setText(me.pageDataChangedText,true);break;}}
function setText(text,makeLink){if(pageStatusElement){if(makeLink)
text='<a href="#" onclick="void epm.refreshAll();" alt="Refresh page controls" >'+text+'</a>';pageStatusElement.innerHTML=text;}}
function setImage(image,makeLink){if(pageStatusElement){var text='';if(image&&image.src){text='<img src="'+image.src+'" ';if(image.width)
text+='width="'+image.width+'" ';if(image.height)
text+='height="'+image.height+'" ';if(image.title)
text+='title="'+image.title+'" ';text+='/>';}
setText(text,makeLink);}}}
function EMRPauseMailSending(id,callbackId){var me=this;var callbackControl=null;var _callbackId=callbackId;this.type='EMRPauseMailSending';this.init=function()
{callbackControl=window[callbackId];if(callbackControl==null)
{window.setTimeout(me.init,20);return;}
callbackControl.ClientSideOnCallbackComplete=function()
{me.isDoingCallback=false;var response=parseCallbackResponse(callbackId+'_CallbackResponse');if(response==null)return;showCallbackErrorAlert(response);me.isDoingCallback=false;try
{var ok=me.onPauseCampaignCallbackComplete(me,response);if(ok==null)ok=true;return ok;}
catch(ex){Log(ex,logVerbosity.Warning);}
return true;};callbackControl.Callback();}
this.ToggleMailSendingStatus=function(){if(callbackControl==null){Log('Could not find JS object '+callbackId,logVerbosity.Serious);return;}
var pauseButton=document.getElementById(id+'_pause_button');pauseButton.disabled=true;var params={'action':pauseButton.value};pauseButton.value='Working...';EMR.setInnerText(document.getElementById(id+'_span_status'),'');EMR.setInnerText(document.getElementById(id+'_span_instruction'),'');document.getElementById(id+'_div_loading').style.display='block';me.DoCallback(params);}
this.onPauseCampaignCallbackComplete=function(sender,response){var data=response.warnings;var cell=EMR.getElement('emr_pause');if(cell==null)
cell=EMR.getElement('emr_resume');if(data['buttonMessage']=='Pause')
cell.id='emr_pause';else
cell.id='emr_resume';var pauseButton=EMR.getElement(id+'_pause_button');pauseButton.disabled=false;pauseButton.value=data['buttonMessage'];var err='';if(data['errorMessage']!=null)
{err='<br/><br/>Warning: '+data['errorMessage'];}
document.getElementById(id+'_div_loading').style.display='none';document.getElementById(id+'_span_status').innerHTML=data['statusMessage']+err;document.getElementById(id+'_span_instruction').innerHTML=data['instructionMessage'];return true;}
this.DoCallback=function(callbackData){if(me.isDoingCallback)
throw"Already processing callback to server.";var data=callbackData;if(data==null)
data=new Array();if(window[_callbackId]){me.isDoingCallback=true;window[_callbackId].Callback(serialiseCallbackData(data));}
else{Log('Unable to submit data to the server.  Callback control missing.',logVerbosity.Warning);}}}
function EMRSelect(id,selectElementId,dataElementId,dataType,enabled,selectedValue,maxRows,allFields,includeFilteredRows,addFindBox,titleFields){var me=this;this.id=id;this.type='EMRSelect';this.selectElementId=selectElementId;this.dataElementId=dataElementId;this.dataType=dataType;this.displayFields=null;this.fieldSeparator=' ';this.hideIdField=true;this.rowFormatFunction=null;this.rowFilterFunction=null;this.includeBlankOption=true;this.initialised=false;this.maxRows=maxRows;this.allFields=allFields;this.data=null;this.selectedValue=selectedValue||'';this.enabled=enabled;this.numItems=0;this.onChange;this.addFindBox=addFindBox;this.titleFields=titleFields;this.autocomplete={items:[],uniqueIdIndex:null,pathIndex:null};this.onInitialise=null;this.onInitialised=null;this.internal_onChange=function(sender,eventArgs)
{if(me.getValue()=="more")
{me.setSelectedIndex(0);me.loadMore();return;}
if(me.onChange)
{me.onChange(me,me.getValue());}}
this.init=function(){if(!window[me.selectElementId]||!window[me.selectElementId].addItem){window.setTimeout(me.init,PAUSE_FOR_CONTROL_TO_LOAD);return;}
if(me.addFindBox=='True')
$('#'+me.id+"_Input").attr('disabled',true);if(typeof(epm)!='undefined')
epm.registerControl(me);else
Log('Unable to register control "'+me.id+'" with the page manager.  The page manager could not be found',logVerbosity.Warning);if(me.onInitialise){try{me.onInitialise(me);}
catch(ex){Log(ex,'EMRSelect init 2',logVerbosity.Warning);}}
window[me.selectElementId].add_change(me.internal_onChange);var selectElementStyle=document.getElementById(me.selectElementId).style;selectElementStyle.minWidth=selectElementStyle.width;selectElementStyle.width='auto';if(top.edm){if(top.edm.getCacheItem&&me.onCacheItemRefresh){var cacheItem=top.edm.getCacheItem(me.dataType,maxRows,allFields);if(cacheItem){cacheItem.onRefresh=me.onCacheItemRefresh;cacheItem=null;}
else
return;}
else
Log('unable to hook into the cache items OnRefresh event.  Either the top.edm.getCacheItem or me.onCacheItemRefresh method could not be found',logVerbosity.Warning);me.refresh();}}
this.onCacheItemRefresh=function(){if(me.initialised){epm.updateControlStatus(me,epm.statuses['newDataAvailable']);}}
this.loadMore=function(){if(me.refresh){var textbox=document.getElementById(me.id+'_ComboBox1_TextBox');textbox.innerHTML="Loading...";this.maxRows=-1;me.refresh();}
else
Log('Unable to load more data.  The method me.refresh could not be found',logVerbosity.Warning);}
this.getValue=function(field){if(!window[me.selectElementId]||!window[me.selectElementId].addItem)
return'';var combo=window[me.selectElementId]
var sel=combo.getSelectedItem();if(!sel)return'';if(!field)return sel.Value;var table=me.data.tables.items[0];var index=table.rows.items[0].fields.indexes[field];if(!index)
{throw"Field name passed to EMRSelect.getValue isn't a valid index: "+field;}
for(var rowIndex=0;rowIndex<table.rows.length;rowIndex++)
{var row=table.rows.items[rowIndex];var rowId=row.fields.items[row.fields.indexes[me.valueField]].value;if(rowId==sel.Value)return row.fields.items[index].value;}}
this.getText=function(){var combo=window[id+"_ComboBox1"]
if(!combo||!combo.get_text){return'';}
if(me.addFindBox=='True'){var sel=combo.getSelectedItem();return(!sel)?'':sel.Text;}
else
return combo.get_text();}
this.setValue=this.setSelectedValue=function(value){me.selectedValue=value;if(me.initialised)
setSelectedValue(value);}
function setSelectedValue(value){var select=window[me.selectElementId];for(var i=0;i<select.get_itemCount();i++)
{var item=select.GetItem(i);if(item.Value==value)
{select.selectItem(item);return;}}
select.beginUpdate();var newItem=new ComponentArt.Web.UI.ComboBoxItem();newItem.set_text('(ID: '+value+')');newItem.set_value(value);me.numItems++;select.addItem(newItem);select.endUpdate();select.selectItemByIndex(select.get_itemCount()-1);me.setValue(value);}
this.setSelectedIndex=function(index){if(!me.initialised)
{setTimeout(function(){me.setSelectedIndex(index);},15);return;}
window[me.selectElementId].selectItemByIndex(index);}
this.enable=function(){window[me.selectElementId].Enable();me.enabled=true;if(me.addFindBox=='True')
$('#'+me.id+"_Input").removeAttr('disabled');}
this.disable=function(){_disable();me.enabled=false;}
function _disable(){window[me.selectElementId].Disable();if(me.addFindBox=='True')
$('#'+me.id+"_Input").attr('disabled','disabled');}
this.refresh=function(){_disable();getData();}
function getData(){if(epm)
epm.updateControlStatus(me,epm.statuses['loading']);else
Log('Unable to update the control status, the page manager could not be found',logVerbosity.Warning);me.data=null;if(top.edm)
{top.edm.getData(me.dataType,me.maxRows,me.allFields,loadData);}
else
Log('Unable to load data, the data manager could not be found',logVerbosity.Warning);}
function clear(){while(me.numItems>0)
{window[me.selectElementId].removeItemAt(0);me.numItems--;}}
function hideMoreLink(){me.maxRows="-1";}
function loadData(data){clear();var newItem=null;me.data=data;var selectElementObject=window[me.selectElementId];if(data==null){hideMoreLink();selectElementObject.collapse();window.setTimeout(loadingComplete,50);return;}
if(data.tables==null||data.tables.items[0]==null){Log('The datagram returned by the server did not contain any tables.  No data will be loaded',logVerbosity.Warning);hideMoreLink();return;}
var table=data.tables.items[0];var tableAvailableRows=table.availableRows;var tableRowsLength=table.rows.length;if(tableRowsLength==0||tableAvailableRows==-1||tableAvailableRows==tableRowsLength){hideMoreLink();}
var row=null;if(me.includeBlankOption){var newItem=new ComponentArt.Web.UI.ComboBoxItem();newItem.set_text(me.defaultOptionText);newItem.set_value('');selectElementObject.addItem(newItem);me.numItems++;}
var rowId=null;var rowText=null;var tableRowsItems=table.rows.items;var rowFilterFunctionRef=me.rowFilterFunction;selectElementObject.beginUpdate();var performFilter=(rowFilterFunctionRef!=null&&typeof(rowFilterFunctionRef)=='function');for(var rowIndex=0;rowIndex<tableRowsLength;rowIndex++){row=tableRowsItems[rowIndex];if(!(includeFilteredRows||row.matchesFilter()))continue;var ok=true;if(performFilter){try{ok=rowFilterFunctionRef(me,row);}
catch(ex){Log(ex,'EMRSelect rowFilterFunction',logVerbosity.Warning);}}
if(ok){rowText=formatRow(row);if(rowText){if(!me.valueField)
{me.valueField=table.uniqueId;}
rowId=row.fields.items[row.fields.indexes[me.valueField]].value;var newItem=new ComponentArt.Web.UI.ComboBoxItem();newItem.set_text(rowText);newItem.set_value(rowId);selectElementObject.addItem(newItem);me.numItems++;newItem=null;}}}
if(me.maxRows!=-1)
{var newItem=new ComponentArt.Web.UI.ComboBoxItem();newItem.set_text("More...");newItem.set_value("more");selectElementObject.addItem(newItem);me.numItems++;}
selectElementObject.endUpdate();if(me.selectedValue)
setSelectedValue(me.selectedValue);else
selectElementObject.selectItemByIndex(0);me.initialised=true;window.setTimeout(function(){loadingComplete(data)},50);}
function loadingComplete(data){var selectElementObject=window[me.selectElementId];if(me.enabled&&(selectElementObject.get_text()!='Error during data retrieval.')){me.enable();}
else
{me.disable();}
if(me.onInitialised!=null){try{me.onInitialised(me);}
catch(ex){Log(ex,logVerbosity.Warning);}}
if(epm)
epm.updateControlStatus(me,epm.statuses['loadingComplete']);else
Log('Unable to update control status, the page manager could not be found.',logVerbosity.Warning);if(me.addFindBox=='True')
{$('#'+me.id+"_Input").attr('disabled',false);populateAutoComplete(data);}}
function formatRow(dataRow){var s=null;var rowFormatFunctionRef=me.rowFormatFunction;if(rowFormatFunctionRef!=null&&typeof(rowFormatFunctionRef)=='function'){try{return rowFormatFunctionRef(me,dataRow);}
catch(ex){Log(ex,logVerbosity.Warning);}}
s='';var dataRowFields=dataRow.fields;if(me.displayFields==null){var idIndex=dataRowFields.indexes[dataRow.table.uniqueId];for(var fieldIndex=0;fieldIndex<dataRowFields.length;fieldIndex++){if(fieldIndex!=idIndex||!me.hideIdField){s+=(s==''?'':me.fieldSeparator)+dataRowFields.items[fieldIndex].value;}}}
else{var fieldIndex;for(var displayFieldIndex=0;displayFieldIndex<me.displayFields.length;displayFieldIndex++){fieldIndex=dataRowFields.indexes[me.displayFields[displayFieldIndex]];if(fieldIndex!=null){s+=(s==''?'':me.fieldSeparator)+dataRowFields.items[fieldIndex].value;}}}
return s;}
function populateAutoComplete(data){me.autocomplete.items=[];var items=me.autocomplete.items;var table=data.tables.items[0];me.autocomplete.uniqueIdIndex=table.getColumnIndex(table.uniqueId);var uniqueIdIndex=me.autocomplete.uniqueIdIndex;me.autocomplete.pathIndex=table.getColumnIndex('strPath');var pathIndex=me.autocomplete.pathIndex;var searchFields=me.titleFields.split(",");var valueIndexes=[];for(var i=0;i<searchFields.length;i++){valueIndexes.push(table.getColumnIndex(searchFields[i]));}
var rows=table.rows;var rowFilterFunctionRef=me.rowFilterFunction;var performFilter=(rowFilterFunctionRef!=null&&typeof(rowFilterFunctionRef)=='function');for(var i=0;i<rows.length;i++){try{if(performFilter&&!rowFilterFunctionRef(me,rows.items[i]))continue;}
catch(ex){Log(ex,logVerbosity.Warning);}
var value="";var fieldItems=rows.items[i].fields.items;for(var j=0;j<valueIndexes.length;j++){value+=fieldItems[valueIndexes[j]].value;if(j!=valueIndexes.length-1)
value+=" - ";}
items.push({id:fieldItems[uniqueIdIndex].value,path:pathIndex==null?null:fieldItems[pathIndex].value,value:value});fieldItems=null;}
table=null;rows=null;addAutoComplete();}
function addAutoComplete(){$('#'+me.id+"_Input").autocomplete(me.autocomplete.items,{matchContains:true,minChars:3,max:1000,delay:400,mustMatch:true,cacheLength:1,formatItem:function(row,i,max){if(me.autocomplete.pathIndex==null)
return row.value;return(me.autocomplete.uniqueIdIndex==me.autocomplete.pathIndex?row.value:row.value+'<br/><span style="color:#999;font-size:12px">'+row.path+(row.path.charAt(row.path.length-1)=='/'?'':'/')+'</span>');},formatMatch:function(row,i,max){if(!me.autocomplete.pathIndex)
return row.value;return(me.autocomplete.uniqueIdIndex==me.autocomplete.pathIndex?row.value:row.value+'.'+row.path+'.');},formatResult:function(row,i,max){return row.value;},clear:function(){}}).result(function(event,data,formatted){me.setValue(data.id);}).attr('disabled',false).addClass('nosubmit');}
this._change=function(){if(me.addFindBox=='True')
addAutoComplete();}}
function EMRSelectionMatrix(id,dataType,columns,rows,maxRows,allFields,enabled,imageField,mode,includeFilteredRows){var me=this;this.id=id;this.type='EMRSelectionMatrix';this.dataType=dataType;this.displayFields=null;this.fieldSeparator=' ';this.hideIdField=true;this.itemFormatFunction=null;this.itemFilterFunction=null;this.maxRows=maxRows;this.allFields=allFields;this.enabled=enabled;this.imageField=imageField;this.modes={'singleselect':0,'multiselect':1};this.mode=mode;this.onInitialise=null;this.onInitialised=null;this.initialised=false
var outermostDivElement=null;var selectedItemsElement=null;var currentPage=1;var originalData=null;var filteredData=null;this.init=function(){outermostDivElement=document.getElementById(me.id);if(outermostDivElement==null){window.setTimeout(me.init,PAUSE_FOR_CONTROL_TO_LOAD);return}
selectedItemsElement=document.getElementById(me.id+'_SelectedItems');if(!selectedItemsElement)
Log('Unable to initialise control, selected items element could not be found.',logVerbosity.Warning);if(typeof(epm)!='undefined')
epm.registerControl(me);else
Log('Unable to register control "'+me.id+'" with the page manager.  The page manager could not be found',logVerbosity.Warning);if(me.onInitialise){try{me.onInitialise(me);}
catch(ex){Log(ex,'EMRSelectionMatrix init',logVerbosity.Warning);}}
if(top.edm){if(top.edm.getCacheItem&&me.onCacheItemRefresh){var cacheItem=top.edm.getCacheItem(me.dataType,maxRows,allFields);if(cacheItem){cacheItem.onRefresh=me.onCacheItemRefresh;cacheItem=null;}
else
return;}
else
Log('unable to hook into the cache items OnRefresh event.  Either the top.edm.getCacheItem or me.onCacheItemRefresh method could not be found',logVerbosity.Warning);getData();}}
this.onCacheItemRefresh=function(){if(me.initialised){epm.updateControlStatus(me,epm.statuses['newDataAvailable']);}}
this.loadMore=function(){if(me.refresh){this.maxRows=-1;me.refresh();}
else
Log('Unable to load more data.  The method me.refresh could not be found',logVerbosity.Warning);}
this.refresh=function(){if(outermostDivElement){clear();getData();}
else
Log('Cannot refresh, the select element could not be found',logVerbosity.Warning);}
this.page=function(pageIndex){if(top.edm)
top.edm.registerActivity('ClientAction');else
Log('Unable to regiser client action, the Data Manager could not be found',logVerbosity.Warning);currentPage=pageIndex;displayData();}
this.itemClicked=function(item){if(selectedItemsElement&&selectedItemsElement.value!=null){switch(me.mode){case me.modes.singleselect:selectedItemsElement.value=item.value;break;case me.modes.multiselect:var searchString=','+selectedItemsElement.value+',';var idIndex=searchString.indexOf(','+item.value+',')
if(item.checked&&idIndex<0)
selectedItemsElement.value=selectedItemsElement.value+(selectedItemsElement.value.length>0?',':'')+item.value
else if(idIndex>=0){searchString=searchString.substring(0,idIndex)+','+searchString.substring(idIndex+item.value.length+2,searchString.length);searchString=searchString.substring(1,searchString.length-1);if(searchString==',')
searchString='';selectedItemsElement.value=searchString;}
break;default:Log('Unknown mode '+me.mode+' in SelectionMatrix control. Defaulting to Multiselect.',logVersbosity.Warning);me.mode=me.modes.multiselect;return me.itemClicked(item);}
return true;}
return false;}
this.getSelectedItems=function(){if(selectedItemsElement)
return selectedItemsElement.value;Log('Unable to return selected items, the selected items element could not be found',logVerbosity.Warning);return null;}
this.setSelectedItems=function(value){if(selectedItemsElement){selectedItemsElement.value=value;if(me.initialised)
displayData();}
else
Log('Unable to set selected items, the selected items element could not be found',logVerbosity.Warning);}
this.applyFilter=function(){if(originalData!=null){clear();filteredData=originalData.clone();if(me.itemFilterFunction!=null&&typeof(me.itemFilterFunction)=='function'){var uniqueIdIndex=null;for(var i=0;i<originalData.rows.length;i++){var dataRow=originalData.rows.items[i];if(uniqueIdIndex==null)
uniqueIdIndex=dataRow.fields.indexes[originalData.uniqueId];var ok=null;if((includeFilteredRows||dataRow.matchesFilter())){try{ok=me.itemFilterFunction(me,dataRow);}
catch(ex){Log(ex,'EMRSelectionMatrix applyFilter',logVerbosity.Warning);}}
if(!ok){filteredData.rows.remove(dataRow.fields.items[uniqueIdIndex].value);}
ok=null;dataRow=null;}
uniqueIdIndex=null;}
displayData();}}
this.enable=function(){if(!this.enabled){this.enabled=true;displayData();}}
this.disable=function(){if(this.enabled){this.enabled=false;displayData();}}
function getData(){if(epm)
epm.updateControlStatus(me,epm.statuses['loading']);else
Log('Unable to update the control status, the page manager could not be found',logVerbosity.Warning);originalData=null;if(top.edm)
top.edm.getData(me.dataType,me.maxRows,me.allFields,dataRecieved);else
Log('Unable to load data, the data manager could not be found',logVerbosity.Warning);}
function clear(){if(outermostDivElement)
outermostDivElement.innerHTML='Loading...';else
Log('Unable to clear selection matrix, the outermost element could not be found.',logVerbosity.Warning);}
function dataRecieved(data){if(!outermostDivElement){Log('Unable to load data, the outermost element could not be found.',logVerbosity.Warning);return;}
if(data==null){outermostDivElement.innerHTML='Error during data retrieval.';window.setTimeout(loadingComplete,50);return;}
if(data.tables==null||data.tables.items[0]==null){outermostDivElement.innerHTML='No data available.';window.setTimeout(loadingComplete,50);Log('The datagram returned by the server did not contain any tables.  No data will be loaded',logVerbosity.Warning);return;}
originalData=data.tables.items[0];me.applyFilter();}
function displayData(){if(filteredData.rows.length==0){outermostDivElement.innerHTML='No data available.';window.setTimeout(loadingComplete,50);return;}
var column,rowCount;var uniqueIdIndex=filteredData.rows.items[0].fields.indexes[filteredData.uniqueId];var itemIndex,itemValue,itemText;if(rows==0)
rowCount=Math.ceil(filteredData.rows.length/columns);else
rowCount=rows;var columnWidth=Math.round(100/columns);var matrixTableHTML='<table width="100%">';matrixTableHTML+='<tr>';matrixTableHTML+='<td colspan="'+columns+'"></td>';matrixTableHTML+='</tr>';for(var row=1;row<=rows;row++){matrixTableHTML+='<tr>';for(column=1;column<=columns;column++){itemIndex=(((currentPage-1)*rows*columns)+((row-1)*columns)+column)-1;if(filteredData.rows.items[itemIndex]){itemValue=filteredData.rows.items[itemIndex].fields.items[uniqueIdIndex].value;itemText=formatItem(filteredData.rows.items[itemIndex]);matrixTableHTML+='<td style="width:'+columnWidth+'%;"><input ';switch(me.mode){case me.modes.multiselect:matrixTableHTML+='type="checkbox"';break;case me.modes.singleselect:matrixTableHTML+='type="radio" name="'+me.id+'_item"';break;default:Log('Unknown mode '+me.mode+' in SelectionMatrix control. Defaulting to Multiselect.',logVerbosity.Warning);me.mode=me.modes.multiselect;matrixTableHTML+='checkbox';break;}
matrixTableHTML+=' value="'+itemValue+'"'+(isSelectedItem(itemValue)?'checked="checked"':'')+(me.enabled?'':'disabled="disabled"')+' onclick="javascript:void '+me.id+'.itemClicked(this);" />'+itemText+'</td>';}
else
matrixTableHTML+='<td style="width:'+columnWidth+'%;"></td>';}
matrixTableHTML+='</tr>';}
matrixTableHTML+='<tr>';var totalPageCount=Math.ceil(filteredData.rows.length/(rows*columns));var pagerHTML='';if(totalPageCount>1){for(var page=1;page<=totalPageCount;page++){if(page==currentPage)
pagerHTML+=page+' ';else
pagerHTML+='<a href="javascript:void '+me.id+'.page('+page+')">'+page+'</a> ';}}
matrixTableHTML+='<td colspan="'+columns+'"><table width="100%"><tr>'+pagerHTML+'<td></td><td align="right">Page <b>'+currentPage+'</b> of <b>'+totalPageCount+'</b> ('+filteredData.rows.length+' items)</td></tr></table>';matrixTableHTML+='</tr>';if(originalData.availableRows!=-1&&originalData.availableRows!=originalData.rows.length){matrixTableHTML+='<tr>';matrixTableHTML+='<td colspan="'+columns+'">Displaying records 1 to '+originalData.rows.length+' of '+originalData.availableRows;if(originalData.rows.length!=filteredData.rows.length)
matrixTableHTML+=' (filtered)';matrixTableHTML+='. Click <a href="javascript:void '+me.id+'.loadMore();">here</a> to load more.</td>';matrixTableHTML+='</tr>';}
matrixTableHTML+='</table>';outermostDivElement.innerHTML=matrixTableHTML;window.setTimeout(loadingComplete,50);}
function isSelectedItem(uniqueId){if(selectedItemsElement&&selectedItemsElement.value!=null&&selectedItemsElement.value!=''){var searchString=','+selectedItemsElement.value+',';if(searchString.indexOf(','+uniqueId+',')>=0)
return true;}
return false;}
function loadingComplete(){me.initialised=true;if(me.onInitialised!=null){try{me.onInitialised(me);}
catch(ex){Log(ex,logVerbosity.Warning);}}
if(epm)
epm.updateControlStatus(me,epm.statuses['loadingComplete']);else
Log('Unable to update control status, the page manager could not be found.',logVerbosity.Warning);}
function formatItem(dataRow){var s=null;if(me.itemFormatFunction!=null&&typeof(me.itemFormatFunction)=='function'){try{s=me.itemFormatFunction(me,dataRow);}
catch(ex){Log(ex,logVerbosity.Warning);}}
if(s!=null)
return s;else
s='';if(me.imageField)
try{s=dataRow.getFieldValue(me.imageField);if(s==null){me.imageField='';s='';}
else
s='<img src="'+s+'" />&nbsp;';}
catch(ex){Log(ex,logVerbosity.Warning);}
if(me.displayFields==null){var idIndex=dataRow.fields.indexes[dataRow.table.uniqueId];for(var fieldIndex=0;fieldIndex<dataRow.fields.length;fieldIndex++){if(fieldIndex!=idIndex||!me.hideIdField){s+=(s==''?'':me.fieldSeparator)+dataRow.fields.items[fieldIndex].value;}}}
else{var fieldIndex;for(var displayFieldIndex=0;displayFieldIndex<me.displayFields.length;displayFieldIndex++){fieldIndex=dataRow.fields.indexes[me.displayFields[displayFieldIndex]];if(fieldIndex!=null){s+=(s==''?'':me.fieldSeparator)+dataRow.fields.items[fieldIndex].value;}}}
return s;}}
function EMRShowTimezone(id,message,timezone)
{var me=this;this.type='EMRShowTimezone';this.timezone=timezone;this.alternateTimezone=timezone;this.message=message;this.id=id;this.setValue=function(timezone)
{EMR.getElement(me.id+'_Message').innerHTML='('+timezone+')';EMR.getElement(me.id+'_OuterSpan').title=me.message+':'+timezone;setToolTip(me.id+'_Image',me.message+':'+timezone);me.timezone=timezone;}
this.getValue=function()
{return me.timezone;}
this.getSessionTimezone=function()
{try
{var tz=top.session.getValue('sessTimeZone',false);if(!tz)tz='Europe/London';return tz;}
catch(ex)
{Log(ex,'Failed to get session timezone',logVerbosity.Serious);}}
this.setInitialTimezone=function(timezone)
{me.alternateTimezone=timezone;setToolTip(me.id+'_EditImage','Click to change timezone to: '+me.getSessionTimezone());me.setValue(timezone);}
var _enabled=true;this.enable=function()
{_enabled=true;EMR.getElement(me.id+'_EditImage').style.display='';}
this.disable=function()
{_enabled=false;EMR.getElement(me.id+'_EditImage').style.display='none';}
this.changeTimezone=function()
{try
{if(_enabled)
{if(me.getSessionTimezone()==me.timezone)
{setToolTip(me.id+'_EditImage','Click to change timezone to your timezone: '+me.getSessionTimezone());me.setValue(me.alternateTimezone);}
else
{setToolTip(me.id+'_EditImage','Click to change timezone to saved timezone: '+me.alternateTimezone);me.setValue(me.getSessionTimezone());}}}
catch(ex)
{Log(ex,'Failed to change timezone',logVerbosity.Serious);}}
function setToolTip(controlId,value){try{var ctrl=EMR.getElement(controlId);if(ctrl)
{ctrl.alt=value;ctrl.title=value;}
ctrl=null;}
catch(ex){Log(ex,'Failed to set tooltip text on control '+controlId+'.',logVerbosity.Warning);}}}
function TabStrip(id,enabled)
{var me=this;var m_Selected=-1;var m_Tabs=new Object();this.type='TabStrip';this.onTabClick=null;this.onClick=function(tabId)
{if(!enabled)return;var tab=m_Tabs[tabId];if(tab==null){Log('Tab with id '+tabId+' could not be found.',logVerbosity.Warning);return;}
if(!tab.enabled)
return;if(me.onTabClick){try{var ok=me.onTabClick(me,tab);if(ok==null)ok=true;if(!ok)return;}
catch(ex){return;}}
me.setSelected(tabId,false);if(tab.navigateUrl)
window.location.href=tab.navigateUrl;}
this.addTab=function(tab){m_Tabs[tab.id]=tab;}
this.setSelected=function(tabId,fireEvent){if(m_Selected!=tabId){if(m_Tabs[tabId]==null)
Log('Tab strip \''+me.id+'\' does not contain a definition for a tab with id \''+tabId+'\'',logVerbosity.Serious);else{m_Selected=tabId;highlight();if(fireEvent==null||fireEvent)
me.onClick(tabId);}}}
this.setValid=function(id,valid){if(m_Tabs[id]==null)
Log('Tab strip \''+me.id+'\' does not contain a definition for a tab with id \''+id+'\'',logVerbosity.Serious);else{var tab=m_Tabs[id];if(valid)
{if(id==m_Selected)
document.getElementById(tab.clientId).className=tab.selectedClass;else
document.getElementById(tab.clientId).className=tab.normalClass;tab.invalid=false;}
else
{if(id==m_Selected)
document.getElementById(tab.clientId).className=tab.selectedInvalidClass;else
document.getElementById(tab.clientId).className=tab.invalidClass;tab.invalid=true;}}}
this.getSelected=function()
{return m_Selected;}
this.getEnabled=function(){return enabled;}
this.enable=function()
{me.setEnabled(true);}
this.disable=function()
{me.setEnabled(false);}
this.setEnabled=function(value){enabled=value;if(value)
$('#'+id).removeClass('disabled');else
$('#'+id).addClass('disabled');}
this.setTabEnabled=function(index,state){var tab=m_Tabs[index];if(tab){tab.enabled=state;var tabElement=document.getElementById(tab.clientId);if(!state)
$(tabElement).find('div.emr_menu_position').addClass('disabled');else
$(tabElement).find('div.emr_menu_position').removeClass('disabled');}}
this.hide=function(id){for(var tabId in m_Tabs){var tab=m_Tabs[tabId];if(tab.id!=id)continue;var tabElement=document.getElementById(tab.clientId);if(tabElement){tabElement.style.display='none';}}}
this.show=function(id){for(var tabId in m_Tabs){var tab=m_Tabs[tabId];if(tab.id!=id)continue;var tabElement=document.getElementById(tab.clientId);if(tabElement){tabElement.style.display='';}}}
this.highlight=function(hoverId){if(!enabled)return;highlight(hoverId);}
function highlight(hoverId){for(var tabId in m_Tabs){var tab=m_Tabs[tabId];if(tab.enabled&&document.getElementById(tab.clientId)){var className=tab.normalClass;if(tabId==m_Selected)
className+=' '+tab.selectedClass;if(tabId==hoverId)
className+=' '+tab.hoverClass;if(tab.invalid)
className+=' '+tab.invalidClass;document.getElementById(tab.clientId).className=className;}}}}
function Tab(id,clientId,navigateUrl,normalClass,hoverClass,selectedClass,invalidClass,selectedInvalidClass){this.id=id;this.clientId=clientId
this.enabled=true;try{this.navigateUrl=convertToEMRLink(navigateUrl);}
catch(ex){Log('Unable to convert url to an EMR url, there may be a missing JavaScript reference',logVerbosity.Warning);this.navigateUrl=navigateUrl;}
this.normalClass=normalClass;this.hoverClass=hoverClass;this.selectedClass=selectedClass;this.invalidClass=invalidClass;}
function EMRTreeSelect(id,comboBoxId,treeViewClientId,valueFieldId,addFindBox,dataType,nodeTitleFields)
{var me=this;var value='';this.type='EMRTreeSelect';this.id=id;this.type='EMRTreeSelect';this.comboBoxId=comboBoxId;this.treeViewClientId=treeViewClientId;this.valueFieldId=valueFieldId;this.addFindBox=addFindBox;this.dataType=dataType;this.nodeTitleFields=nodeTitleFields;this.initialised=false;this.allowSelectFolder=false;this.enabled=true;this.onInitialise=null;this.onInitialised=null;this.onChange=null;this.onNodeSelect=null;this.dispose=function(){try{var inputBox=document.getElementById(me.comboBoxId+"_Input");inputBox.style.visibility='hidden';inputBox.style.display='none';}
catch(e)
{}}
this.init=function(){try{if(!me){window.setTimeout('this.init()',50);return;}}
catch(ex){alert('me not defined');window.setTimeout('this.init()',50);}
if(typeof(window[me.comboBoxId])=='undefined'||typeof(window[me.treeViewClientId])=='undefined'||!window[me.comboBoxId].addItem){window.setTimeout(me.init,PAUSE_FOR_CONTROL_TO_LOAD);return;}
window[me.treeViewClientId].init();document.getElementById(id+"_ComboBox1").parentNode.onmousedown=function(){var treeView=window[me.treeViewClientId];var comboBox=window[me.comboBoxId];if(window[me.id].enabled&&!treeView.treeDataLoaded){var loadingDataDiv=document.getElementById(me.id+'_LoadingPanel1');if(loadingDataDiv)loadingDataDiv.style.marginBottom='200px';if(loadingDataDiv)loadingDataDiv.style.display='';setTimeout(function(){treeView.refresh()},10);function checkLoaded(){if(!treeView.treeDataLoaded){window.setTimeout(checkLoaded,50);return;}
var loadingDataDiv=document.getElementById(me.id+'_LoadingPanel1');if(loadingDataDiv)loadingDataDiv.style.display='none';};checkLoaded();}};var inputBox=document.getElementById(me.comboBoxId+"_Input");if(me.addFindBox=='True'){if(top.edm){$('#'+me.comboBoxId+"_Input").attr('disabled',true);var cacheItem=top.edm.getData(me.dataType,-1,false,populateAutoComplete);cacheItem.onRefresh=populateAutoComplete;}
else
Log('Failed to get data for auto completion - data manager not found',logVerbosity.Warning);}
else{inputBox.readOnly=true;inputBox.style.visibility='visible';inputBox.onclick=function(){var combo=window[me.comboBoxId];combo.toggleExpand();}}
setComboText(window[me.treeViewClientId].defaultText||'');window[me.treeViewClientId].onNodeSelect=me.internal_onNodeSelect;window[me.treeViewClientId].allowSelectFolder=me.allowSelectFolder;inputBox.style.width='100%';if(me.onInitialise){try{me.onInitialise(me);}
catch(ex){Log(ex,'EMRTreeSelect init 2',logVerbosity.Warning);}}
me.loadingComplete();}
var setComboText=function(combo,text)
{try{combo.set_text(text||window[me.treeViewClientId].defaultText||'');}
catch(ex)
{}}
this.refresh=function()
{if(!me.initialised||!window[me.treeViewClientId]||!window[me.treeViewClientId].initialised)
{setTimeout(me.refresh,25);return;}
window[me.treeViewClientId].unselectNode();window[me.treeViewClientId].Refresh();window[me.treeViewClientId].initialised=false;setComboText(window[me.treeViewClientId].defaultText);var update=function()
{if(!window[me.treeViewClientId].initialised)
{setTimeout(arguments.callee,20);return;}
var tvDom=document.getElementById(me.treeViewClientId);if(!tvDom)return;tvDom.style.width="100%";}();}
this.loadingComplete=function()
{if(!window[me.treeViewClientId].initialised)
{setTimeout(me.loadingComplete,15);return;}
var tvDom=document.getElementById(me.treeViewClientId);if(!tvDom)return;tvDom.style.width="100%";tvDom=null;me.initialised=true;if(me.onInitialised!=null)
{try
{me.onInitialised(me);}
catch(ex){Log(ex,logVerbosity.Warning);}}
function emr_OnExpand(sender,eventArgs)
{if(!eventArgs.openCount)
{eventArgs.openCount=0;}else
{eventArgs.openCount++;}
var emr_treeview=window[me.treeViewClientId];var ca_treeview=window[emr_treeview.treeViewClientID];if(ca_treeview.get_nodes().get_length()==0)
{if(eventArgs.openCount>10){return;}
setTimeout(function(){emr_OnExpand(sender,eventArgs)},100);return;}
if(emr_treeview.nodeTitleFields[0]!=emr_treeview.pathFieldName)
{var val=$get(me.valueFieldId).value;if(!ca_treeview.SelectedNode||ca_treeview.SelectedNode.ID!=val)
{var item=emr_treeview.data.tables.items[0].getRowById(val)
if(item)
{var path=item.getFieldValue("strPath");try
{emr_treeview.expandToNode("folder:"+path.toLowerCase());}catch(ex){}}}
return;}
if(emr_treeview.currentSelectedNodeId==null||sender.InputValue!=emr_treeview.currentSelectedNodeId)
{if(sender.InputValue==emr_treeview.defaultText)return;try
{emr_treeview.expandToNode(sender.InputValue);}
catch(ex)
{emr_treeview.expandToNode("folder:"+sender.InputValue);}}}
window[me.comboBoxId].add_expand(emr_OnExpand);if(epm)
epm.updateControlStatus(me,epm.statuses['loadingComplete']);else
Log('Unable to update control status, the page manager could not be found.',logVerbosity.Warning);var loadingDataDiv=document.getElementById(me.id+'_LoadingPanel1');if(loadingDataDiv)loadingDataDiv.style.display='none';}
this.disable=function()
{try
{if(typeof(window[me.comboBoxId].disable)!='undefined')
{window[me.comboBoxId].disable();me.enabled=false;}}catch(ex){}}
this.enable=function()
{try
{if(typeof(window[me.comboBoxId].enable)!='undefined')
{window[me.comboBoxId].enable();me.enabled=true;}}catch(ex){}}
this.onCacheItemRefresh=function(){if(me.initialised){epm.updateControlStatus(me,epm.statuses['newDataAvailable']);}}
this.internal_onNodeSelect=function(sender,eventArgs)
{var node=eventArgs.get_node();var id=node.get_id();value=id;document.getElementById(me.valueFieldId).value=id;var combo=window[me.comboBoxId];if(id.indexOf("folder:")==0)
{id=id.substring(7,id.length)
setComboText(combo,id);}
else
{setComboText(combo,node.get_text());}
combo.collapse();if(me.onNodeSelect)
{try
{me.onNodeSelect(sender,eventArgs);}
catch(ex)
{Log(ex,'onNodeSelect call failed',logVerbosity.Serious);}}}
this.setValue=this.setSelectedValue=function(nodeId,displayName){if(!me.initialised)
{setTimeout(function(){me.setSelectedValue(nodeId,displayName);},15);return;}
value=nodeId;document.getElementById(me.valueFieldId).value=nodeId;window[me.treeViewClientId].unselectNode();var combo=window[me.comboBoxId];if(!combo)return;if(!nodeId){displayName='';}
else if(!displayName){if(nodeId.indexOf("folder:")==0)displayName=nodeId.substring(7,nodeId.length);else displayName=window[me.treeViewClientId].GetTitleFromNodeId(nodeId);}
setComboText(combo,displayName);if(typeof(combo.collapse)=='function')
combo.collapse();}
this.getValue=function()
{var val=document.getElementById(me.valueFieldId).value;if(val=="")
val=value||'';if(val.indexOf('folder:')==0)val=val.substring(7);else if(val.indexOf(':root:')==0)val='';return val;}
this.getText=function()
{var text='';if(window[me.comboBoxId]&&window[me.comboBoxId].InputValue){text=window[me.comboBoxId].InputValue;}
return text;}
this.addFolder=function(path)
{var treeview=window[me.treeViewClientId];treeview.getTreeNodeFromPath(path);treeview.displayTreeNode(treeview.treeData);me.setSelectedValue("folder:"+path,path);}
this.treeView=function(){return window[me.treeViewClientId];}
function handleExpand(e,args)
{alert(e);}
function populateAutoComplete(data){var items=[];var table=data.tables.items[0];var uniqueIdIndex=table.getColumnIndex(table.uniqueId);var pathIndex=table.getColumnIndex('strPath');var titleFields=me.nodeTitleFields.split(",");var valueIndexes=[];for(var i=0;i<titleFields.length;i++)
{valueIndexes.push(table.getColumnIndex(titleFields[i]));}
var rows=table.rows;var filterFunction=(me.treeView().itemFilterFunction||function(){return true;});for(var i=0;i<rows.length;i++){try{if(!filterFunction(me,rows.items[i]))continue;}
catch(ex){Log(ex,logVerbosity.Warning);}
var value="";var fieldItems=rows.items[i].fields.items;for(var j=0;j<valueIndexes.length;j++)
{value+=fieldItems[valueIndexes[j]].value;if(j!=valueIndexes.length-1)
value+=" - ";}
items.push({id:fieldItems[uniqueIdIndex].value,path:fieldItems[pathIndex].value,value:value});fieldItems=null;}
table=null;rows=null;$('#'+me.comboBoxId+"_Input").autocomplete(items,{matchContains:true,minChars:3,max:1000,delay:400,mustMatch:true,cacheLength:1,formatItem:function(row,i,max){return(uniqueIdIndex==pathIndex?row.value:row.value+'<br/><span style="color:#999;font-size:12px">'+row.path+(row.path.charAt(row.path.length-1)=='/'?'':'/')+'</span>');},formatMatch:function(row,i,max){return(uniqueIdIndex==pathIndex?row.value:row.value+'.'+row.path+'.');},formatResult:function(row,i,max){return row.value;},filterInput:function(q){var result=q.replace(/\//g,'\.').replace(/\\/g,'\.');if(result.charAt(0)=='.')result=result.substr(1);if(result.charAt(result.length-1)=='.')result=result.substring(0,result.length-1);return result;},clear:function(){me.setValue('');if(me.onNodeSelect)me.onNodeSelect();}}).result(function(event,data,formatted){me.setValue(data.id);if(me.onNodeSelect)me.onNodeSelect(data.id);}).attr('disabled',false).addClass('nosubmit');}}
var m_cachedNodes;var m_oTVNCachedParent;var m_cacheHits;var m_cacheMisses;function EMRTreeView_OnContextButtonClickEventArgs(node,ev){var me=this;this.__event=ev;this.__node=node;this.get_node=function(){return me.__node;}
this.get_event=function(){return me.__event;}}
function EMRTreeView(id,treeViewClientID,callbackClientId,dataType,maxRows,allFields,pathFieldName,nodeTitleFields,parentKeyFieldName,showRightPanel,showContextButtons,autoInitialise,includeFilteredRows,blnInsideTreeSelect){var me=this;this.id=id;this.type='EMRTreeView';this.treeViewClientID=treeViewClientID;this.callbackClientId=callbackClientId;this.dataType=dataType;this.maxRows=maxRows;this.allFields=allFields;var m_uniqueId;this.pathFieldName=pathFieldName;this.parentKeyFieldName=parentKeyFieldName;this.nodeTitleFields=nodeTitleFields;this.showRightPanel=showRightPanel;this.showContextButtons=showContextButtons;this.autoInitialise=autoInitialise;this.blnInsideTreeSelect=blnInsideTreeSelect;this.itemFilterFunction=null;this.data=null;this.treeData=null;this.initialised=false;this.nodeTooltipFields=new Array();this.nodeTooltipSeperator="-";this.nodeTitleSeperator="-";this.rightPanelCallback=null;this.nodeLoadingText="Loading...";this.nodeLoadingIcon=null;this.nodeSelectedClass=null;this.imagesDirectory=null;this.contextButtonIcon=null;this.allowSelectFolder=false;this.maxNodesPerLevel=600;var selectedNode;var expandToNodeId;this.onInitialise=null;this.onInitialised=null;this.onNodeCollapse=null;this.onNodeExpand=null;this.onNodeSelect=null;this.onNodeBeforeMove=null;this.onNodeDeleted=null;this.onNodeMove=null;this.iconField=null;this.onGetIconPath=null;this.onRightClick=null;this.onContextButtonClick=null;this.onGetTextForRightPanel=null;this.treeDataLoaded=false;function onRightClick(sender,eventArgs){var returnVal=false;if(me.onRightClick){if(eventArgs.get_node().ID.indexOf('-ERRORNODE')==-1)
{var clientReturnVal=me.onRightClick(sender,eventArgs);if(typeof(clientReturnVal)!='undefined')
returnVal=clientReturnVal;}else{return false;}}
return true;}
this.internal_onContextButtonClick=function(sender,key){var refItem=null;refItem=window[me.treeViewClientID].findNodeById(key);if(typeof(refItem)=='undefined'){refItem=window[me.treeViewClientID].findNodeById('folder:'+key);if(typeof(refItem)=='undefined'){return;}}
var eventArgs=new EMRTreeView_OnContextButtonClickEventArgs(refItem,sender);if(me.onContextButtonClick)
me.onContextButtonClick(sender,eventArgs);}
function onNodeCollapse(sender,eventArgs){var selectedNode=eventArgs.get_node();if(selectedNode){if(selectedNode.get_id()==":root:"){RemoveAllRightPanelItems();RemoveAllContextButtons();RebuildContextButtons("|:root:");AddRightPanelItem("",-1,":root");}
else{RemoveChildNodesFromNode(selectedNode);if(NodeHasChildren(selectedNode))
AddLoadingNode(selectedNode,selectedNode.get_id(),me.nodeLoadingIcon==''?null:me.nodeLoadingIcon);me.RebuildRightPanel();}}
if(me.onNodeCollapse)
me.onNodeCollapse(sender,eventArgs);}
function onNodeExpand(sender,eventArgs){var oTVNSelected=eventArgs.get_node();if(oTVNSelected){if(oTVNSelected.get_id()!=":root:"){RemoveChildNodesFromNode(oTVNSelected);AddChildNodesToNode(oTVNSelected);}
if(typeof(arguments.callee.refreshTimer)!="undefined"){clearTimeout(arguments.callee.refreshTimer);}
arguments.callee.refreshTimer=setTimeout(function(){me.RebuildRightPanel();},100);}
if(me.onNodeExpand){me.onNodeExpand(sender,eventArgs);}}
function onNodeBeforeSelect(sender,eventArgs){var oTVNSelected=eventArgs.get_node();if(!oTVNSelected)return;if(!oTVNSelected.ID)return;if(oTVNSelected.ID.indexOf('-ERRORNODE')!=-1)return;if(oTVNSelected.ID.indexOf('folder:')!=0||me.allowSelectFolder==true){var result=true;if(me.onNodeSelect)
result=me.onNodeSelect(sender,eventArgs);if(result&&result!=false)me.selectNode(oTVNSelected);}}
function onNodeBeforeMove(sender,eventArgs){try{var ok=true;var oTNNewParent=eventArgs.get_newParentNode();var oTNListToMove=eventArgs.get_nodes();var i=0;if(oTNNewParent){if(!oTNNewParent.isFolder()){alert('Sorry, cannot move item to this location, please drag the item into a folder.');eventArgs.set_cancel(true);return;}
if(me.onNodeBeforeMove)
ok=me.onNodeBeforeMove(me,oTNListToMove,oTNNewParent);if(ok){var nodeCount=oTNListToMove.length;var strNodeList='';for(i=0;i<nodeCount;i++){if(i>0)strNodeList=strNodeList+',';strNodeList=strNodeList+oTNListToMove[i].get_id();}
var parentKey=oTNNewParent.get_id();if(parentKey.indexOf('folder:')==0)
parentKey=parentKey.substring(7);else if(parentKey.indexOf(':root:')==0)
parentKey=parentKey.substring(6);var callbackString="method=movenode|keys="+strNodeList+"|newParent="+parentKey+"|parentIsFolder="+oTNNewParent.isFolder();var oCallback=window[me.callbackClientId];oCallback.ClientSideOnCallbackComplete=MoveNode_Callback;oCallback.Callback(callbackString);}}}
catch(ex){eventArgs.set_cancel(true);Log(ex,'Unable to move node',logVerbosity.Warning);}}
function MoveNode_Callback(){var response=parseCallbackResponse(me.id+'_CallbackResponse');var result={success:false,message:""};if(response!=null){showCallbackErrorAlert(response);if(response){if(response.warnings){var message='';for(var key in response.warnings){message+=response.warnings[key]+'\n';}
result.message=message;}
if(response.success){result.success=true;top.edm.invalidateItem(me.dataType);me.RebuildRightPanel();}}}
if(me.onNodeMove!=null)me.onNodeMove(me,result);}
function GetNodeById(nodeId,nodes,doNotRecurse){if(!nodes)return null;for(var i=0;i<nodes.get_length();i++){var thisNode=nodes.getNode(i);var currentId=thisNode.ID;if(currentId==nodeId){return thisNode;}
if(doNotRecurse)continue;var found=GetNodeById(nodeId,thisNode.get_nodes());if(found!=null){return found;}}
return null;}
function GetTreePathById(nodeId){genTree=function(nodeId,treeNode){if(!treeNode||!nodeId)return;for(var folder in treeNode.folders){var nodeTree=genTree(nodeId,treeNode.folders[folder]);if(nodeTree){nodeTree.push("folder:"+folder);return nodeTree;}}
for(var item in treeNode.items){if(item==nodeId){var nodeTree=new Array();nodeTree.push(item);return nodeTree;}
if(treeNode.items[item].items){var nodeTree=genTree(nodeId,treeNode.items[item]);if(nodeTree){nodeTree.push(item);return nodeTree;}}}
return null;}
var treePath=genTree(nodeId,me.treeData);if(!treePath)return null;for(var i=treePath.length-1;i>1;i--){if(treePath[i-1].indexOf("folder:")==0){treePath[i-1]=treePath[i]+"."+treePath[i-1].substring(7,treePath[i-1].length);}}
return treePath;}
this.getDataNodeFromNode=function(oTVN){var thisID=oTVN.get_id();if(oTVN.isFolder()){return null;}
var oTVNParent=oTVN;while(!oTVNParent.isFolder()){oTVNParent=oTVNParent.get_parentNode();if(!oTVNParent)break;var parentId=oTVNParent.get_id();if(!oTVNParent.isFolder())thisID=parentId+"."+thisID;else thisID=parentId+"/"+thisID;}
if(thisID.indexOf('folder:')!=-1){var path=thisID.substring(7,thisID.length);var treeNode=me.getTreeNodeFromPath(path);return treeNode;}
else{var id=oTVN.get_id();var item=me.treeData.items[id];return item;}
return null;}
this.getDataRow=function(matchKey){matchKey=matchKey;if(me.data&&me.data.tables&&me.data.tables.items){var rows=me.data.tables.items[0].rows;if(rows){var index=rows.indexes[matchKey];if(typeof(index)!='undefined'){var matchingRow=rows.items[index];}
else{for(var key in rows.indexes){if(key==matchKey){var index=rows.indexes[key];var matchingRow=rows.items[index];break;}}}}}
return matchingRow;}
this.init=function(){ComponentArt.Web.UI.TreeViewNode.prototype.isFolder=function(){var id=this.get_id();if(id.indexOf("folder:")==0||id.indexOf(":root:")==0)return true;return false;}
var treeControl=window[me.treeViewClientID];if(treeControl==null){window.setTimeout(function(){me.init();},PAUSE_FOR_CONTROL_TO_LOAD);return}
if(typeof(epm)!='undefined')
epm.registerControl(me);else
Log('Unable to register control "'+me.id+'" with the page manager.  The page manager could not be found',logVerbosity.Warning);if(me.onInitialise){try{me.onInitialise(me);}
catch(ex){Log(ex,'EMRSelect init 2',logVerbosity.Warning);}}
treeControl.add_nodeBeforeSelect(onNodeBeforeSelect);treeControl.add_nodeCollapse(onNodeCollapse);treeControl.add_nodeExpand(onNodeExpand);treeControl.add_nodeBeforeMove(onNodeBeforeMove);treeControl.add_contextMenu(onRightClick);if(top.edm){if(top.edm.getCacheItem&&me.onCacheItemRefresh){var cacheItem=top.edm.getCacheItem(me.dataType,maxRows,allFields);if(cacheItem){cacheItem.onRefresh=me.onCacheItemRefresh;cacheItem=null;}
else
Log('Unable to retrieve the cache item for the data type '+me.dataType,logVerbosity.Warning);}
else
Log('unable to hook into the cache items OnRefresh event.  Either the top.edm.getCacheItem or me.onCacheItemRefresh method could not be found',logVerbosity.Warning);getData(me.autoInitialise);me.initialised=true;}
treeControl=null;}
function GetNodeTitle(row){var title='';for(var j=0;j<me.nodeTitleFields.length;j++){if(row!=null)
title+=row.getFieldValue(me.nodeTitleFields[j])+me.nodeTitleSeperator;}
if(title.length>0)
title=title.substring(0,(title.length-me.nodeTitleSeperator.length));return title;}
function GetNodeTooltip(row){var tooltip='';var nextTip='';for(var j=0;j<me.nodeTooltipFields.length;j++){nextTip=row.getFieldValue(me.nodeTooltipFields[j]);if(nextTip)tooltip+=nextTip.replace(/"/ig,'')+me.nodeTooltipSeperator;}
if(tooltip.length>0)
tooltip=tooltip.substring(0,(tooltip.length-me.nodeTooltipSeperator.length));return tooltip;}
function MakeFolderKey(folderbits,index){var str='';for(var x=0;x<=index;x++){str+='.'+folderbits[x];}
if(str.length>1)
str=str.substr(1,str.length);return str;}
function AddChildNodesToNode(oTVNSelected){var thisID=oTVNSelected.get_id();if(thisID.indexOf('folder:')<0){var oTVNParent=oTVNSelected;while(oTVNParent.ParentNode&&thisID.indexOf('folder:')<0){oTVNParent=oTVNParent.ParentNode;var parentId=oTVNParent.get_id();if(parentId.indexOf('folder:')<0)thisID=parentId+"."+thisID;else thisID=parentId+"/"+thisID;}}
if(thisID.indexOf('folder:')!=-1){var path=thisID.substring(7,thisID.length);var oTreeData=me.getTreeNodeFromPath(path);me.displayTreeNode(oTreeData,oTVNSelected);}
if(thisID.indexOf(':root:')!=-1){var path="/"+thisID.substring(7,thisID.length);var oTreeData=me.getTreeNodeFromPath(path);me.displayTreeNode(oTreeData,oTVNSelected);}
return;}
function NodeHasChildren(node){if(node.get_id().indexOf('folder:')!=-1)return true;if(me.parentKeyFieldName!=""){var row=me.getDataNodeFromNode(node);if(row.items)return true;}
return false;}
function RemoveChildNodesFromNode(selectedNode){selectedNode.get_nodes().clear();}
function AddLoadingNode(parentNode,parentId,nodeIcon){AddNode(parentNode,me.nodeLoadingText,nodeIcon,parentId+"-LOADINGNODE",false,null,false);}
function AddNode(oTVNParent,strText,nodeIcon,nodeId,isRootNode,nodeToolTip,draggingEnabled){var rootnode=(typeof(isRootNode)=='undefined'?false:isRootNode);if(typeof(nodeId)=='undefined'){Log('Tried adding an element to tree without an id (item text was "'+strText+'")',logVerbosity.Serious);return;}
if(oTVNParent==null){Log('Failed to find parent Node to attach "'+strText+'" (id: '+nodeId+') to!',logVerbosity.Serious);return;}
if(oTVNParent.ChildIndices&&oTVNParent.ChildIndices.length>(me.maxNodesPerLevel-1)){var oTVNNew=new ComponentArt.Web.UI.TreeViewNode();oTVNNew.set_text("Item Display Limit Reached. Change Filter Settings");oTVNNew.set_expanded(false);oTVNNew.set_imageUrl(nodeIcon);oTVNNew.set_id(nodeId+'-ERRORNODE');oTVNNew.set_selectable(false);oTVNNew.set_extendNodeCell(true);oTVNParent.get_nodes().add(oTVNNew);if(me.setNodeDefaultBackground)me.setNodeDefaultBackground(oTVNNew);return null;}
var oTVNNew=new ComponentArt.Web.UI.TreeViewNode();oTVNNew.Depth=oTVNParent.Depth+1;oTVNNew.Data[oTVNNew.Data.length]=['Text',strText];oTVNNew.Data[oTVNNew.Data.length]=['ID',nodeId];oTVNNew.Data[oTVNNew.Data.length]=['Selectable',true];oTVNNew.Data[oTVNNew.Data.length]=['ExtendNodeCell',nodeId];if(nodeIcon!=''&&nodeIcon!='folder.gif'){oTVNNew.Data[oTVNNew.Data.length]=['imageUrl',nodeIcon];oTVNNew.set_imageUrl(nodeIcon);}
if(typeof(nodeToolTip)!='undefined')
if(nodeToolTip!='')
oTVNNew.Data[oTVNNew.Data.length]=['ToolTip',nodeToolTip];if(typeof(draggingEnabled)!='undefined')
if(!draggingEnabled)
oTVNNew.Data[oTVNNew.Data.length]=['DraggingEnabled',false];var oNodes;if(oTVNParent==m_oTVNCachedParent){m_cacheHits++;m_cachedNodes.add(oTVNNew);}
else{if(oTVNParent.Depth==0){m_cachedNodes=null
m_cachedNodes=oTVNParent.get_nodes();m_oTVNCachedParent=oTVNParent;m_cacheMisses++;m_cachedNodes.add(oTVNNew);}
else{var oNodes=oTVNParent.get_nodes();oNodes.add(oTVNNew);m_cacheMisses++;}}
return oTVNNew;}
function RebuildRightPanel_Recursive_GetKeyListForCallback(nodes){var retStr='';var tmp_node_length=nodes.get_length();for(var i=0;i<tmp_node_length;i++){var thisNode=nodes.getNode(i);var id=thisNode.get_id();if(id&&id.indexOf("LOADINGNODE")==-1)
retStr+='|'+thisNode.get_id()+'=';if(thisNode.get_nodes().get_length()>0){retStr+=RebuildRightPanel_Recursive_GetKeyListForCallback(thisNode.get_nodes());}}
return retStr;}
function GetPreviousSiblingNode(nodeId,nodes){if(!nodes)return null;for(var i=0;i<nodes.get_length();i++){var thisNode=nodes.getNode(i);if(thisNode.get_id()==nodeId&&i>0){return nodes.getNode(i-1);}}
return null;}
function GetNextSiblingNode(nodeId,nodes){if(!nodes)return null;for(var i=0;i<nodes.get_length();i++){var thisNode=nodes.getNode(i);if(thisNode.get_id()==nodeId&&i<nodes.get_length()-1){return nodes.getNode(i+1);}}
return null;}
this.DeleteNode=function(nodeId,parentNodeId){if(!window[me.callbackClientId]){Log('Unable to make callback to server, the callback object could not be found',logVerbosity.Warning);return false;}
if(typeof(nodeId)=='undefined'||nodeId==''){Log('nodeId supplied to EMRTreeView.DeleteNode was undefined/empty',logVerbosity.Warning);return false;}
if(typeof(parentNodeId)=='undefined'||parentNodeId==''){Log('parentNodeId supplied to EMRTreeView.DeleteNode was undefined/empty',logVerbosity.Warning);return false;}
var callbackString="method=deletenode|keys="+nodeId;top.session.setValue("deleteNodeParentId",parentNodeId,true);window[me.callbackClientId].ClientSideOnCallbackComplete=DeleteNode_Callback;window[me.callbackClientId].Callback(callbackString);return true;}
this.DeleteMultipleNodes=function(nodeList,parentNodeId){if(!window[me.callbackClientId]){Log('Unable to make callback to server, the callback object could not be found',logVerbosity.Warning);return false;}
if(!nodeList.length){Log('nodeList supplied to EMRTreeView.DeleteMultipleNodes was undefined/empty',logVerbosity.Warning);return false;}
if(typeof(parentNodeId)=='undefined'||parentNodeId==''){Log('parentNodeId supplied to EMRTreeView.DeleteMultipleNodes was undefined/empty',logVerbosity.Warning);return false;}
var strNodeList='';var nodeCount=nodeList.length;for(i=0;i<nodeCount;i++){if(i>0)strNodeList=strNodeList+',';strNodeList=strNodeList+nodeList[i].get_id();}
var callbackString="method=deletenode|keys="+strNodeList;top.session.setValue("deleteNodeParentId",parentNodeId,true);window[me.callbackClientId].ClientSideOnCallbackComplete=DeleteNode_Callback;window[me.callbackClientId].Callback(callbackString);return true;}
function DeleteNode_Callback(){var response=parseCallbackResponse(me.id+'_CallbackResponse');var result={success:false,message:""};if(response!=null){showCallbackErrorAlert(response);if(response){if(response.warnings){var message='';for(var key in response.warnings){message+=response.warnings[key]+'\n';}
result.message=message;}
if(response.success){result.success=true;selectedNode=selectedNode.ParentNode;me.Refresh(true);}}}
if(me.onNodeDeleted!=null)me.onNodeDeleted(me,result);}
this.refresh=this.Refresh=function(invalidateData){if(selectedNode){expandToNodeId=selectedNode.get_id();if(expandToNodeId==":root:")expandToNodeId=null;}
else expandToNodeId=null;window[me.treeViewClientID].get_nodes().clear();me.treeDataLoaded=false;if(invalidateData)top.edm.invalidateItem(me.dataType);getData(true);}
this.RebuildRightPanel=function(){if(!me.showRightPanel)
return false;if(!window[me.callbackClientId]){Log('Unable to make callback to server, the callback object could not be found',logVerbosity.Warning);return false;}
var keys='';var joinChar='';var nodes=window[me.treeViewClientID].get_nodes();var listOfKeys=RebuildRightPanel_Recursive_GetKeyListForCallback(nodes);var keys="method=rightpanel"+listOfKeys;RemoveAllRightPanelItems();RebuildContextButtons(keys);if(me.onGetTextForRightPanel){var keys=listOfKeys.split("=|");if(keys[0])
keys[0]=keys[0].substring(1,keys[0].length);if(keys[keys.length-1])
keys[keys.length-1]=keys[keys.length-1].substring(0,keys[keys.length-1].length-1);for(var i=0;i<keys.length;i++){var key=keys[i];AddRightPanelItem(me.onGetTextForRightPanel(key),-1,key);}
return false;}
window[me.callbackClientId].ClientSideOnCallbackComplete=RebuildRightPanel_Callback;window[me.callbackClientId].Callback(keys);return true;}
function RebuildRightPanel_Callback(){if(!me.showRightPanel)
return;var response=parseCallbackResponse(me.id+'_CallbackResponse');if(response==null)return;showCallbackErrorAlert(response);if(response){if(response.warnings){var message='';for(var key in response.warnings){message+='&bull;&nbsp;'+response.warnings[key]+'<br />';}}
if(response.success){RemoveAllRightPanelItems();for(var keyId in response.data){AddRightPanelItem(response.data[keyId],-1,keyId);}}}}
this.GetRightPanelItemIndex=function(id){if(!me.showRightPanel)
return;var table=document.getElementById('rtTable');var indexRemove=-1;for(var i=0;i<table.rows.length;i++){if(table.rows[i].getAttribute("id")==id)
indexRemove=i;}
return indexRemove;}
function RebuildContextButtons(keylist){if(!me.showContextButtons)
return;RemoveAllContextButtons();var contextContentStart='<img style="width: 20px; height: 20px; border:none;" src="'+me.imagesDirectory+me.contextButtonIcon+'" onclick="'+me.id+'.internal_onContextButtonClick(this,\'';var contextContentEnd='\')" />';var keylist2=keylist.replace(/=/g,"");var keyArr=keylist2.split("|");for(var k=1;k<keyArr.length;k++){if(keyArr[k].indexOf("folder:")!=-1)
var baseKey=keyArr[k].replace(/folder:/,"");else
var baseKey=keyArr[k];AddContextPanelButton(contextContentStart+keyArr[k]+contextContentEnd,-1,'context:'+baseKey);}}
function RemoveAllContextButtons(){if(!me.showContextButtons)
return;var table=document.getElementById('ltTable');while(table.rows.length>0){table.deleteRow(0);}}
function AddContextPanelButton(itemContent,afterIndex,id){if(!me.showContextButtons)
return;var row=document.getElementById('ltTable').insertRow(afterIndex);row.setAttribute("id",id);var cell=row.insertCell(0);cell.style.width='20px';if(document.all){cell.style.height='20px';}
else{cell.style.height='20px';}
cell.style.overflow='hidden';if(id.indexOf('-ERRORNODE')==-1){cell.innerHTML=itemContent;}}
function AddRightPanelItem(itemText,afterIndex,id){if(!me.showRightPanel)
return;var row=document.getElementById('rtTable').insertRow(afterIndex);row.setAttribute("height","20px");row.setAttribute("id",id);row.style.height='20px';var cell=row.insertCell(0);var div=document.createElement('div');div.style.whiteSpace='nowrap';div.style.overflow='hidden';div.style.height='auto';div.style.paddingLeft="5px";div.style.width='auto';div.style.paddingRight='5px';div.style.height='20px';$(div).html(itemText);cell.appendChild(div);}
function RemoveAllRightPanelItems(){if(!me.showRightPanel)
return;var table=document.getElementById('rtTable');while(table.rows.length>0){table.deleteRow(0);}}
function RemoveRightPanelItem(id){if(!me.showRightPanel)
return;var table=document.getElementById('rtTable');var indexRemove=-1;for(var i=0;i<table.rows.length;i++){if(table.rows[i].getAttribute("id")==id)
indexRemove=i;}
if(indexRemove!=-1){table.deleteRow(indexRemove);}}
function getData(runCallback){if(epm)
epm.updateControlStatus(me,epm.statuses['loading']);else
Log('Unable to update the control status, the page manager could not be found',logVerbosity.Warning);if(top.edm){me.data=null;top.edm.getData(me.dataType,me.maxRows,me.allFields,runCallback?loadData:function(data){me.data=data;if(epm)epm.updateControlStatus(me,epm.statuses['loadingComplete']);else Log('Unable to update control status, the page manager could not be found.',logVerbosity.Warning);return true;});}}
function getExpandableItemNodeFromPath(folderNode,itemPath){var subpath=itemPath.split('.');var currentNode=folderNode;for(var i=0;i<subpath.length;i++){if(!currentNode['items']){currentNode['items']=new Object();}
if(!currentNode['items'][subpath[i]]){currentNode['items'][subpath[i]]=new Object();}
currentNode=currentNode['items'][subpath[i]];}
return currentNode;}
this.getTreeNodeFromPath=function(path){if(!me.treeData)
parseTreeData();return getTreeNodeFromPath(me.treeData,path);}
function getTreeNodeFromPath(tree,path){var slashPosition=path.toLowerCase().indexOf("/");if(slashPosition>-1&&slashPosition!=path.length-1){var pathParts=path.split("/");var folderNode=getTreeNodeFromPath(tree,pathParts[0]);return getExpandableItemNodeFromPath(folderNode,pathParts[1]);}
if(path.indexOf("/")==path.length-1)path=path.substring(0,path.length-1);if(path.length==0)return tree;var subpath=path.split('.');var oTreeDataNode=tree;for(var i=0;i<subpath.length;i++){var lowerCaseSubPath=subpath[i].toLowerCase();if(!oTreeDataNode['folders']){oTreeDataNode['folders']=new Object();}
if(!oTreeDataNode['folders'][lowerCaseSubPath]){oTreeDataNode['folders'][lowerCaseSubPath]=new Object();oTreeDataNode['folders'][lowerCaseSubPath].parent=oTreeDataNode;oTreeDataNode['folders'][lowerCaseSubPath].key=lowerCaseSubPath;oTreeDataNode['folders'][lowerCaseSubPath].displayName=subpath[i];oTreeDataNode['folders'][lowerCaseSubPath].containsUnFilteredData=false;}
oTreeDataNode=oTreeDataNode['folders'][lowerCaseSubPath];}
return oTreeDataNode;}
function addItemToTree(key,path,item){var node=me.getTreeNodeFromPath(path);;if(!node['items'])node['items']=new Object();node['items'][key]=item;if(item.matchesFilter())
setContainsUnFilteredDataFlag(node);}
function setContainsUnFilteredDataFlag(node){if(node.containsUnFilteredData)return;node.containsUnFilteredData=true;if(node.parent)
setContainsUnFilteredDataFlag(node.parent);}
function parseTreeData(){if(me.data==null||me.data.tables==null||me.data.tables.items[0]==null)
return;epm.updateControlStatus(me,epm.statuses['loading']);var table=me.data.tables.items[0];m_uniqueId=table.uniqueId;if(typeof(table.treeData)=='undefined'){table.treeData=new Object();me.treeData=table.treeData;var uniqueIDIndex=table.getColumnIndex(m_uniqueId);var pathFieldNameIndex=table.getColumnIndex(me.pathFieldName);for(var i=0;i<table.rows.length;i++){var row=table.rows.items[i];var key=row.getFieldValueByIndex(uniqueIDIndex);var path=row.getFieldValueByIndex(pathFieldNameIndex);addItemToTree(key,path,row);}}
else
me.treeData=table.treeData;if(epm)
epm.updateControlStatus(me,epm.statuses['loadingComplete']);else
Log('Unable to update control status, the page manager could not be found.',logVerbosity.Warning);}
function loadData(data){me.data=data;if(data==null){Log('Data returned to TreeView was empty',logVerbosity.Warning);return;}
if(data.tables==null||data.tables.items[0]==null){Log('The datagram returned by the server did not contain any tables.  No data will be loaded',logVerbosity.Warning);return;}
parseTreeData();me.displayTreeNode(me.treeData,window[me.treeViewClientID]);window.setTimeout(loadingComplete,50);}
this.displayTreeNode=function(treeNode,oTVNParent){var isRoot=false;if(!oTVNParent)oTVNParent=window[me.treeViewClientID];if(oTVNParent==window[me.treeViewClientID])isRoot=true;window[me.treeViewClientID].beginUpdate();m_cacheHits=0;m_cacheMisses=0;if(isRoot){RemoveChildNodesFromNode(oTVNParent);var oTVNParent=AddNode(oTVNParent,me.defaultText||'','folder.gif',':root:',isRoot,'',false);oTVNParent.set_expanded(true);}
var isPathSetToTitle=(me.pathFieldName==me.nodeTitleFields[0]);if(!isRoot)
var parentPath=oTVNParent.get_id();var nodeLoadingIcon=null;if(me.nodeLoadingIcon!="")
nodeLoadingIcon=me.nodeLoadingIcon;for(var folderKey in treeNode.folders){var stopAddingNodes=false;var folder=treeNode.folders[folderKey];if(!(includeFilteredRows||folder.containsUnFilteredData))continue;if(typeof(me.folderFilterFunction)=='function'){try{var passedFilter=me.folderFilterFunction(me,folder);if(!passedFilter)continue;}
catch(ex){Log(ex,logVerbosity.Warning);}}
var folderPath;if(!isRoot){folderPath=parentPath+"."+folderKey;}else{folderPath='folder:'+folderKey;}
var oTVNNew=AddNode(oTVNParent,folder.displayName,'',folderPath,isRoot,tooltip,false);if(oTVNNew){if(isPathSetToTitle){if(!folder.folders)continue;}
AddLoadingNode(oTVNNew,folderKey,nodeLoadingIcon);}else{stopAddingNodes=true;break;}}
if(me.pathFieldName!=me.nodeTitleFields[0]&&!stopAddingNodes){var dataTable=me.data.tables.items[0];for(var item in treeNode.items){var row=treeNode.items[item];if(row==null||row.fields==null)
row=dataTable.getRowById(item);if(row&&row.getFieldValue){if(!(includeFilteredRows||row.matchesFilter()))continue;if(typeof(me.itemFilterFunction)=='function'){try{var passedFilter=me.itemFilterFunction(me,row);if(!passedFilter)continue;}
catch(ex){Log(ex,logVerbosity.Warning);}}
var key=row.getFieldValue(m_uniqueId);var title='';var tooltip='';if(key!=null){title=GetNodeTitle(row);tooltip=GetNodeTooltip(row);var oTVNNew=AddNode(oTVNParent,title,onGetIconPath(row),key,true,tooltip,oTVNParent.isFolder());if(oTVNNew){if(row.items){AddLoadingNode(oTVNNew,key,nodeLoadingIcon);}}
else{break;}}}}}
window[me.treeViewClientID].endUpdate();}
this.selectPrevNode=function(currentNodeId){var nodes;var oTVNSelected=window[me.treeViewClientID].findNodeById(currentNodeId);if(oTVNSelected&&oTVNSelected.get_id()==currentNodeId){var oTVNParent=oTVNSelected.get_parentNode();if(!oTVNParent)oTVNParent=window[me.treeViewClientID];nodes=oTVNParent.get_nodes();}
var oTVNPrev=GetPreviousSiblingNode(currentNodeId,nodes);if(!oTVNPrev||oTVNPrev.get_id().indexOf("folder")==0){return;}
oTVNPrev.select();return me.getDataRow(oTVNPrev.get_id());}
this.GetTitleFromNodeId=function(nodeId){var row=me.getDataRow(nodeId);return GetNodeTitle(row);}
this.selectNextNode=function(currentNodeId){currentNodeId=currentNodeId;var nodes;var oTVNSelected=window[me.treeViewClientID].findNodeById(currentNodeId);if(oTVNSelected&&oTVNSelected.get_id()==currentNodeId){var oTVNParent=oTVNSelected.get_parentNode();if(!oTVNParent)oTVNParent=window[me.treeViewClientID];nodes=oTVNParent.get_nodes();}
var oTVNNext=GetNextSiblingNode(currentNodeId,nodes);if(!oTVNNext||oTVNNext.get_id().indexOf("folder")==0){return;}
oTVNNext.select();return me.getDataRow(oTVNNext.get_id());}
function loadingComplete(){me.initialised=true;me.treeDataLoaded=true;if(me.onInitialised!=null){try{me.onInitialised(me);}
catch(ex){Log(ex,logVerbosity.Warning);}}
if(expandToNodeId){me.expandToNode(expandToNodeId);try{var dlgData=dialogFunctions.GetDialogData();if(dlgData['Key']){var selectedNodeId=dlgData['Key'];var selectedNode=window[me.treeViewClientID].findNodeById(selectedNodeId);if(selectedNode){me.selectNode(selectedNode);}}}
catch(ex){if(ex.message.indexOf("dialogFunctions")==-1&&(!ex.type||ex.type!="not_defined"||!ex.arguments||ex.arguments[0]!="dialogFunctions"))Log(ex,logVerbosity.Serious);}}
else{me.RebuildRightPanel();}}
this.onCacheItemRefresh=function(){if(me.initialised){epm.updateControlStatus(me,epm.statuses['newDataAvailable']);}}
this.expandToNode=function(nodeId,onExpanded){if(!nodeId||nodeId==":root:"){me.RebuildRightPanel();return;}
nodeId=nodeId;var treePath;if(nodeId.indexOf("folder:")==0){treePath=new Array();var folders=nodeId;var lastDot=folders.length;while(lastDot>0){folders=folders.substring(0,lastDot);var lastDot=folders.lastIndexOf(".");treePath.push(folders);}}
else treePath=GetTreePathById(nodeId);if(!treePath){throw"TreeView.expandToNode cannot find node "+nodeId;}
var oldExpand=me.onNodeExpand;var nodeObject=window[me.treeViewClientID].get_nodes().getNode(0);var expandNode=function(currentNodeId){if(nodeObject){var nodes=nodeObject.get_nodes();oldNodeObject=nodeObject;nodeObject=null;if(!currentNodeId||!nodes){me.onNodeExpand=oldExpand;return;}
nodeObject=GetNodeById(currentNodeId,nodes,true);if(!nodeObject||nodeObject==oldNodeObject){me.RebuildRightPanel();me.onNodeExpand=oldExpand;return;}
me.selectNode(nodeObject);nodeObject.set_expanded(true);var eventArgs=new Object();eventArgs.get_node=function(){return nodeObject;}
onNodeExpand("",eventArgs);if(nodeObject!=null)oldNodeObject=nodeObject;}}
me.onNodeExpand=function(sender,eventArgs){expandNode(treePath.pop());}
expandNode(treePath.pop());window.setTimeout(function(){if(oldNodeObject&&oldNodeObject.ParentTreeView&&oldNodeObject.ParentTreeView.ClientControlId){var $clientObj=$('#'+oldNodeObject.ParentTreeView.ClientControlId);if(blnInsideTreeSelect)
$clientObj.parent().parent().parent().parent().parent().animate({scrollTop:(oldNodeObject.getY()-$clientObj.offsetParent().offset().top-30)+'px'},0);else{$('html, body').animate({scrollTop:(oldNodeObject.getY()-$clientObj.offsetParent().offset().top-30)+'px'},0,function(){if(onExpanded)onExpanded(oldNodeObject)});}
oldNodeObject=null;}},500);}
function EMRSetRowCssClass(oTVN,useClass){var i;var iPos=oTVN.Data.length;for(i=oTVN.Data.length-1;i>=0;i--){if(oTVN.Data[i][0]=='RowCssClass'){iPos=i;break;}}
oTVN.Data[iPos]=['RowCssClass',useClass];}
this.selectNode=function(oTVN){me.unselectNode();selectedNode=oTVN;EMRSetRowCssClass(oTVN,me.nodeSelectedClass);}
this.unselectNode=function(){if(!selectedNode)return;try{if(me.setNodeDefaultBackground)me.setNodeDefaultBackground(selectedNode);}catch(ex){}
selectedNode=null;}
this.setNodeDefaultBackground=function(node){EMRSetRowCssClass(node,'');}
function onGetIconPath(row){var path=null;if(me.onGetIconPath)path=me.onGetIconPath(row);if(path!=null)return path;if(!me.iconField)return null;var iconPath=row.getFieldValue(me.iconField);if(iconPath.indexOf('/')==0)iconPath=me.iconDefaultPath+iconPath;return iconPath;}}
var EMR_sTabHome='home';var EMR_sTabContent='content';var EMR_sTabLists='lists';var EMR_sTabSend='send';var EMR_sTabReports='reports';var EMR_sTabAdmin='admin';var EMR_sTabHelp='help';var EMR_sTabSupport='support';var EMR_gsHighlightedL1Tab;var EMR_gsSelectedL1Tab;var EMR_giL1MouseOutTimerID;var EMR_giL1HoverInTimerID;var EMR_giSelectedL2Tab;var EMR_garrNav;function EMR_doL2NavMouseover()
{EMR_ClearL1HoverOutTimer();}
function EMR_doL2NavMouseout()
{EMR_doL1HoverOut();}
function EMR_ClearL1HoverOutTimer()
{if(EMR_giL1MouseOutTimerID)
{clearTimeout(EMR_giL1MouseOutTimerID);EMR_giL1MouseOutTimerID=null;}}
function EMR_ClearL1HoverInTimer()
{if(EMR_giL1HoverInTimerID)
{clearTimeout(EMR_giL1HoverInTimerID);EMR_giL1HoverInTimerID=null;}}
function EMR_doL1HoverTab(sAreaName)
{EMR_ClearL1HoverInTimer();EMR_ClearL1HoverOutTimer();EMR_giL1HoverInTimerID=setTimeout('EMR_CreateL1HoverEffect(\''+sAreaName+'\');',500);}
function EMR_CreateL1HoverEffect(sAreaName)
{EMR_SetL1NavHighlight(sAreaName);if(EMR_gsSelectedL1Tab==sAreaName)
{EMR_SetL2NavHighlight(EMR_giSelectedL2Tab);EMR.getElement('EMRSecondNavDiv').className='emr_div_banner_secondnav '+sAreaName;}
else
{EMR_SetL2NavHighlight(-255);EMR.getElement('EMRSecondNavDiv').className='emr_div_banner_secondnav '+sAreaName+' hover';}
EMR_ClearL1HoverOutTimer();return;}
function EMR_doL1HoverOut()
{EMR_ClearL1HoverInTimer();EMR_ClearL1HoverOutTimer();EMR_giL1MouseOutTimerID=setTimeout('EMR_SetL1NavHighlight(\''+EMR_gsSelectedL1Tab+'\');',500);}
function EMR_doL1NavClick(sAreaName)
{if(undefined==sAreaName){sAreaName='home';}
EMR_ClearL1HoverOutTimer();EMR_giSelectedL2Tab=0;EMR_SetCookie('EMRSelectedL2Tab',EMR_giSelectedL2Tab);EMR_SetL1NavHighlight(sAreaName);EMR_gsSelectedL1Tab=EMR_gsHighlightedL1Tab;EMR_SetCookie('EMRSelectedL1Tab',EMR_gsSelectedL1Tab);EMR_SetCurrentPage(EMR_gsSelectedL1Tab,EMR_giSelectedL2Tab);}
function EMR_SetL1NavHighlight(sAreaName)
{var sNavClass
if(undefined!=EMR_gsHighlightedL1Tab){if(sAreaName!=EMR_gsHighlightedL1Tab){sNavClass='emr_table_topnav_'+EMR_gsHighlightedL1Tab;EMR.getElement(sNavClass).className='emr_table_topnav';}}
EMR_gsHighlightedL1Tab=sAreaName;sNavClass='emr_table_topnav_'+sAreaName;EMR.getElement(sNavClass).className='emr_table_topnav selected';EMR.getElement('EMRSecondNavDiv').className='emr_div_banner_secondnav '+sAreaName;EMR_SetL2NavHighlight(EMR_giSelectedL2Tab);}
function EMR_doL2NavClick(iL2AreaNumber)
{EMR_giSelectedL2Tab=iL2AreaNumber;EMR_SetCookie('EMRSelectedL2Tab',EMR_giSelectedL2Tab);EMR_SetL1NavHighlight(EMR_gsHighlightedL1Tab);EMR_gsSelectedL1Tab=EMR_gsHighlightedL1Tab;EMR_SetCookie('EMRSelectedL1Tab',EMR_gsSelectedL1Tab);EMR_SetCurrentPage(EMR_gsSelectedL1Tab,EMR_giSelectedL2Tab);}
function EMR_SetL2NavHighlight(iActiveL2)
{var arrThisNav=EMR_garrNav[EMR_gsHighlightedL1Tab];var iPos;var sEntryName;var sStyleSuffix='';if(arrThisNav)
{sHTMLNav='';for(iPos=0;iPos<arrThisNav.length;iPos++)
{sEntryName=arrThisNav[iPos].text;sEntryURL='javascript:EMR_doL2NavClick(\''+iPos+'\');';sEntryClass='';if(arrThisNav[iPos].support)sEntryClass=' class="support"';if(iPos==iActiveL2)
{sHTMLNav=sHTMLNav+'<span class="emr_span_banner_nav_active_start'+sStyleSuffix+'">';sHTMLNav=sHTMLNav+'<a href="'+sEntryURL+'"'+sEntryClass+'>'+sEntryName+'</a></span>';}
else
{if(iPos-1==(iActiveL2))
{sHTMLNav=sHTMLNav+'<span class="emr_span_banner_nav_active_end'+sStyleSuffix+'"><a href="'+sEntryURL+'"'+sEntryClass+'>'+sEntryName+'</a></span>';}
else
{sHTMLNav=sHTMLNav+'<span class="emr_span_banner_nav_inactive'+sStyleSuffix+'"><a href="'+sEntryURL+'"'+sEntryClass+'>'+sEntryName+'</a></span>';}}}
if(iPos-1==iActiveL2)
{sHTMLNav=sHTMLNav+'<span class="emr_span_banner_nav_active_end'+sStyleSuffix+'">&nbsp;</span>';}
else
{sHTMLNav=sHTMLNav+'<span class="emr_span_banner_nav_inactive'+sStyleSuffix+'"><a href="'+sEntryURL+'"'+sEntryClass+'>&nbsp;</a></span>';}
EMR.getElement('EMRSecondNavDiv').innerHTML=sHTMLNav;}}
function EMR_SetCurrentPageAndNav(sSelectedL1Tab,iSelectedL2Tab)
{EMR_SetL1NavHighlight(sSelectedL1Tab);EMR_SetL2NavHighlight(iSelectedL2Tab);return EMR_SetCurrentPage(sSelectedL1Tab,iSelectedL2Tab);}
function EMR_SetCurrentPage(sSelectedL1Tab,iSelectedL2Tab)
{var arrThisNav=EMR_garrNav[sSelectedL1Tab];if(arrThisNav[iSelectedL2Tab])
{var sURL=arrThisNav[iSelectedL2Tab].url;if(sURL)
{EMR_SetMainFrame(sURL);return true;}}
return false;}
function EMR_SetMainFrame(sURL)
{if(parent.EMRMainFrame&&parent.EMR_SetMainFrame)
{parent.EMR_SetMainFrame(sURL);}}
function EMR_doToggleHelp()
{if(parent)parent.EMR_ToggleHelp();}
function EMR_doOnLoad()
{var sSelectedL1Tab=EMR_GetCookie('EMRSelectedL1Tab');if(undefined==sSelectedL1Tab){sSelectedL1Tab='home';}
var iSelectedL2Tab=EMR_GetCookie('EMRSelectedL2Tab');if(undefined==iSelectedL2Tab){EMR_giSelectedL2Tab=0;}
EMR_SetL1NavHighlight(sSelectedL1Tab);EMR_SetL2NavHighlight(iSelectedL2Tab);EMR_gsSelectedL1Tab=sSelectedL1Tab;EMR_giSelectedL2Tab=iSelectedL2Tab;}
if(typeof($)=='function')
{var emrhelptextclasses='.emr_help, .emr_form, .emr_control, .emr_input, .emr_select, .emr_span, .emr_select_form_size_1, .emr_select_form_size_2, .emr_select_form_size_full'+', .emr_text_form_size_1, .emr_text_form_size_2, .emr_text_form_size_full, .emr_submit_form_size_1, .emr_submit_form_size_2, .emr_submit_form_size_3'+', .emr_submit_form_size_4, .emr_submit_form_size_full, .emr_check_form';$(document).ready(function()
{$(emrhelptextclasses).livequery(function onCreate()
{function control_onmouseover(el){try{EMR_UpdateHelpTextFromElement(el);}catch(ex){try{parent.EMR_UpdateHelpTextFromElement(el);}
catch(ex)
{}}
return false;}
$(this).hover(function()
{return control_onmouseover(this);},function(){});$(this).focus(function()
{control_onmouseover(this);});},function onDestroy()
{$(this).unbind('mouseover').unbind('mouseout').unbind('focus');});$('.emr_a_helplink').livequery(function onCreate()
{$(this).click(function()
{return emr_helplink_onclick(this);});},function onDestroy()
{$(this).unbind('click');});$('.emr_img_rollover, .emr_img_rollover_floatleft, .emr_img_rollover_inline_5, .emr_img_rollover_inline_8').livequery(function onCreate()
{$(this).hover(function()
{emr_img_rollover_onmouseover(this);},function()
{emr_img_rollover_onmouseout(this);});},function onDestroy()
{$(this).unbind('mouseover').unbind('mouseout');});});}