var g_urlarray = [];
var g_urlscripts = '';
var g_urlimages = '';
var g_sid = 0;

Array.prototype.has = function(value) {
  var i;
  for (var i in this)
    {
    if (i === value)
     {return true;}
    }
    return false;
};

var dwWindowArray = [];
var DevwareMain;

function dwCheckSetMain()
{
  if (g_urlarray.has('main')) {
  }
  else {
    winRef = window.open('', 'main', 'height=100,width=100');
    try {
      if (winRef.location == 'about:blank') {
        // there is no main window open, close this temp window and set the current window as main
        winRef.close();
        g_urlarray['main'] = window.self;    
        window.self.name = 'main';        
      } 
    }
    catch (e) {
      // already open close and do not set current as Main
      winRef.close();
    }    

  }
}

// function dwNewWindowNoReuseBase(href, windowName, params, height, width)
function dwShowWindowBase(href, psWindowName, params, height, width, bMain)
{
  var winRef;
  var oWinRef;
  
  if (DevwareMain != null) {
    if (DevwareMain.WindowArray().has(psWindowName)) {
      if (typeof(DevwareMain.WindowArray()[psWindowName].Ref) == 'object') {      
        winRef = DevwareMain.WindowArray()[psWindowName].Ref;
      }      
    }
  }

  if (winRef == null || winRef.closed) {
      winRef = window.open(href, psWindowName, params);
      if ((width != 0) && (height != 0)) {
        winRef.resizeTo(width, height);   
      }   
    
      winRef.focus();
      if (DevwareMain == null) {
        if (bMain) {
          DevwareMain = winRef;
        }
      }   
  } else {
    winRef.focus();
  }

    return winRef;   
}  

function dwShowMainWindow(href) {
  if (DevwareMain == null || DevwareMain.closed) {
    DevwareMain = null;
    dwShowWindowBase(href, 'main', '', 0, 0, true);
  }
  else {
    DevwareMain.focus();
  }
}

function dwShowWindow(href, windowName) {
  var win = '' + windowName;
  var l_params = 'resizable=yes,maximize=yes,minimize=yes,scrollbars=yes,status=yes';
  dwShowWindowBase(href, win.replace(/-/gi,'_'), l_params, 0, 0, false);
}

function dwShowWindowSized(href, windowName, width, height) {
  var win = '' + windowName;
  var l_params = 'resizable=yes,width=' + width + ',height=' + height + ',maximize=no,minimize=no,scrollbars=yes';
  dwShowWindowBase(href, win.replace(/-/gi,'_'), l_params, height, width, false);
}

function dwShowWindowStandard(href, windowName) {
  var win = '' + windowName;
  var l_width = 640; 
  var l_height = 480;   
  var l_params = 'resizable=yes,maximize=no,minimize=no,scrollbars=yes,width=' + l_width + ',height=' + l_height;
  dwShowWindowBase(href, win.replace(/-/gi,'_'), l_params, l_height, l_width, false);
}

function dwNewWindow(href,window) {
	var win = '' + window;
	msgWindow=open('',win.replace(/-/gi,'_'),'resizable=yes,maximize=no,minimize=no,scrollbars=yes');
	msgWindow.location.href=href;
	msgWindow.opener=self.window;
	self.window.onunload=msgWindow.close;
	msgWindow.focus();
}
function dwNewWindowSized(href,window,width,height) {
	var win = '' + window;
	msgWindow=open('',win.replace(/-/gi,'_'),'resizable=yes,width='+ width +',height='+ height +',maximize=no,minimize=no,scrollbars=yes');
	msgWindow.location.href=href;
	msgWindow.opener=self.window;
	self.window.onunload=msgWindow.close;
	msgWindow.focus();
}
function dwNewWindowStandard(href,window) {
	var win = '' + window;
	msgWindow=open('',win.replace(/-/gi,'_'),'resizable=yes,width=640,height=480,maximize=no,minimize=no,scrollbars=yes');
	msgWindow.location.href=href;
	msgWindow.opener=self.window;
	self.window.onunload=msgWindow.close;
	msgWindow.focus();
}
function dwNewWindowAttachment(href,window,objAttachElement) {
	var win = '' + window;
	msgWindow=open('',win.replace(/-/gi,'_'),'resizable=yes,maximize=no,minimize=no,scrollbars=yes');
	msgWindow.location.href=href;
	msgWindow.opener=self.window;
	msgWindow.attachmentElement=objAttachElement;
	self.window.onunload=msgWindow.close;
	msgWindow.focus();
}
function dwNewWindowEmail(href,window) {
	var win = '' + window;
	msgWindow=open('',win.replace(/-/gi,'_'),'resizable=yes,maximize=no,minimize=no,scrollbars=yes');
	msgWindow.location.href=href;
	msgWindow.opener=self.window;
	self.window.onunload=msgWindow.close;
	msgWindow.focus();
}
function dwNewWindowEmail2(href,window,objEmailDisplayElement,objEmailContactsElement) {
	var win = '' + window;
	msgWindow=open('',win.replace(/-/gi,'_'),'resizable=yes,maximize=no,minimize=no,scrollbars=yes');
	msgWindow.location.href=href;
	msgWindow.opener=self.window;
	msgWindow.emailDisplayElement=objEmailDisplayElement;
	msgWindow.emailContactsElement=objEmailContactsElement;
	self.window.onunload=msgWindow.close;
	msgWindow.focus();
}
function dwNewWindowSelect(href,window,value) {
	var win = '' + window;
	msgWindow=open('',win.replace(/-/gi,'_'),'resizable=yes,width=500,height=500,maximize=no,minimize=no,scrollbars=yes');
	msgWindow.location.href=href + '&Value=' + value;
	msgWindow.opener=self.window;
	self.window.onunload=msgWindow.close;
	msgWindow.focus();
}
var dwCalendarDisplayed=false;
function dwDispCalendar(file,el)
{
  if (isIE())
  {
 
  var dDatePickerDiv;
  elPos=dwGetElementPosition(el);
  if (dwCalendarDisplayed!=true)
  {  
   dDatePickerDiv=document.getElementById('dwDatePicker_div');
   dDatePickerDiv.style.width="216px";
   dwCalendarDisplayed=true;
   elPos.x+=16;
   elPos.y+=16;
  };
  var ifraDatePicker;
  var divDatePicker;
  ifraDatePicker=document.getElementById('dwDatePicker_ifra');
  divDatePicker=document.getElementById('dwDatePicker_div');
  document.body.setAttribute('myOpener', 'dwDatePicker_div'); 
  
  ifraDatePicker.src=file;
  divDatePicker.style.display="block";
  divDatePicker.style.left=(elPos.x - divDatePicker.clientWidth + el.clientWidth)+ "px";
  divDatePicker.style.top=(elPos.y + el.clientHeight + 1)+ "px";
 
 }
 
 else
 {
  elPos=dwGetElementPosition(el);
  if (dwCalendarDisplayed!=true)
  {  
   var dDatePickerDiv = document.createElement('div');
   dDatePickerDiv.setAttribute('id', 'dwDatePicker2_div');
   dDatePickerDiv.style.display="none";
   dDatePickerDiv.style.position="absolute";
   dDatePickerDiv.style.width="216px";  
   document.all[0].appendChild(dDatePickerDiv);
   
   var ifDatePickerIFrame = document.createElement('iframe');
   ifDatePickerIFrame.setAttribute('id', 'dwDatePicker2_ifra');
   ifDatePickerIFrame.setAttribute('width', '216'); 
   ifDatePickerIFrame.setAttribute('height', '188');     
   dDatePickerDiv.appendChild(ifDatePickerIFrame);
   dwCalendarDisplayed=true;
   elPos.x+=16;
   elPos.y+=16;
  };
  document.getElementById('dwDatePicker2_ifra').src=file;
  document.getElementById('dwDatePicker2_div').style.display="block";
  document.body.setAttribute('myOpener', 'dwDatePicker2_div'); 
  document.getElementById('dwDatePicker2_div').style.left=(elPos.x - document.getElementById('dwDatePicker2_div').clientWidth + el.clientWidth)+ "px";
  document.getElementById('dwDatePicker2_div').style.top=(elPos.y + el.clientHeight + 1)+ "px";
 }
 return(true);
}
function dwGetElementPosition(el){
  var lx=0;
  var ly=0;
  if (el != null)
  {
  	for (lx=0,ly=0; el!=null; )
    {
      if (el != null)
      {
        lx += el.offsetLeft;
        ly += el.offsetTop
        el = el.offsetParent;
      }
    }
  }
	return {x:lx,y:ly}
}

function SelectAll(obj, value)
{var lNodeCount;
 var lCounter;
 if (obj.nodeName=='INPUT')
  {if (obj.type=='checkbox' && (obj.name=='dwSelVal'))
   {obj.checked = value;}
  }
 else
  {
  lNodeCount=obj.childNodes.length;
  if (lNodeCount>0)
   {for (lCounter=0;lCounter<lNodeCount;lCounter++)
    {SelectAll(obj.childNodes.item(lCounter),value);}
   }
  }
}

var dwRolloverDisplayed=false;
function dwRollover(el,message)
{
 var elPos=dwGetElementPosition(el); 
 if (dwRolloverDisplayed!=true)
  {
    var newDiv = document.createElement('div');
    newDiv.className = 'RolloverDiv';
    newDiv.id = 'dwRollover_div';
    newDiv.style.position = 'absolute'; 
    newDiv.style.display = 'none';
    document.body.appendChild(newDiv);
    
    var newTable = document.createElement('table');
    newTable.className = 'RolloverTable';
    newTable.id = 'dwRolloverTable';
    var newTR = document.createElement('tr');
    var newTD = document.createElement('td');
    newTD.className = 'RolloverCell';
    newTD.id = 'dwRolloverMessage';
    newTD.innerHTML = 'Message';
    
    newTR.appendChild(newTD);
    newTable.appendChild(newTR);
    newDiv.appendChild(newTable);
   dwRolloverDisplayed=true;
   elPos.x+=16;
   elPos.y+=16;
 };

 var dRollover_div = document.getElementById('dwRollover_div');
 dRollover_div.innerHTML='<table class=RolloverTable id=dwRolloverTable><tr><td class=RolloverCell id=dwRolloverMessage>' + message + '</td></tr></table>';  
 dRollover_div.style.position = 'absolute';
 dRollover_div.style.display='block';
 
 elPos.y += el.offsetHeight + 10;
 if ((elPos.y + 1 + dRollover_div.clientHeight) > document.height)
 {
    elPos.y = elPos.y - 10 - dRollover_div.clientHeight;
 }
 
 elPos.x += el.offsetWidth + 10;
 if ((elPos.x + 1 + el.clientWidth + dRollover_div.clientWidth + 10) > document.width)
 {
    elPos.x = elPos.x - 10 - dRollover_div.clientWidth;
 }

 dRollover_div.style.left=(elPos.x) + "px";
 dRollover_div.style.top=(elPos.y)+ "px";
}
function hideRollover() 
{
if (dwRolloverDisplayed==true)
 {
 var dRollover_div = document.getElementById('dwRollover_div');
 dRollover_div.style.display='none';
 }
}
function dwShowTitleMenu(urlScripts,menuID,sessionID)
{
if (document.getElementById('dwTitleMenu').style.display=='none')
 {var titleMenu=document.getElementById('dwTitleMenu')
  titleMenu.src=urlScripts + 'TitleMenu.asp?!WC=' + menuID + '&!SID=' + sessionID + '&!NC=' + (new Date()).getTime();
  titleMenu.style.display='block';
  var menuJewel=document.getElementById('dwMenuJewel')
  if (menuJewel!=null)
  {
    elPos=dwGetElementPosition(menuJewel);
    titleMenu.style.top = (elPos.y + menuJewel.offsetHeight) + 'px';
    titleMenu.style.left = (elPos.x + 2) + 'px';
  }
 }
else
 {dwHideTitleMenu();}
}
function dwHideTitleMenu()
{
 document.getElementById('dwTitleMenu').style.display='none';
}
function dwControlHover(obj)
{
  if (obj.className.length>0)
  {
    var sPart=obj.className.substring(obj.className.length-5).toLowerCase()
    if (sPart!='hover')
    {obj.className=obj.className + 'Hover'}
  }
}
function dwControlHoverOut(obj)
{
  if (obj.className.length>0)
  {
    var sPart=obj.className.substring(obj.className.length-5).toLowerCase()
    if (sPart=='hover')
    {obj.className=obj.className.substring(0,obj.className.length-5)}
  }
}
function dwButtonHover(obj)
{
  if (obj.className.length>0)
  {
    var sPart=obj.className.substring(obj.className.length-5).toLowerCase()
    if (sPart!='hover')
    {
      obj.className=obj.className + 'Hover';
      obj.nextSibling.className=obj.nextSibling.className + 'Hover';
      obj.previousSibling.className=obj.previousSibling.className + 'Hover';
    }
  }
}
function dwButtonHoverOut(obj)
{
  if (obj.className.length>0)
  {
    var sPart=obj.className.substring(obj.className.length-5).toLowerCase()
    if (sPart=='hover')
    {
      obj.className=obj.className.substring(0,obj.className.length-5)
      obj.nextSibling.className=obj.nextSibling.className.substring(0,obj.nextSibling.className.length-5)
      obj.previousSibling.className=obj.previousSibling.className.substring(0,obj.previousSibling.className.length-5)
    }
  }
}
function dwShowMenuHelp(message)
{
 if(document.getElementById('dwMenuHelpText')!=null)
 {document.getElementById('dwMenuHelpText').innerHTML=message;}
}
function dwAutoComment(message)
{
  var s_comment=prompt(message,"");
  if (s_comment!=null && s_comment!="")
  {
    document.all('!Com').value=s_comment
    return(true);
  }
  else
  {
    return(false);
  }
}
function isIE()
{
  if(navigator.appName.indexOf("Microsoft")!=-1)
  {
    return true;
  }
  else
  {
    return false;
  }
}
function dwXMLHttpRequest()
{
  var xmlhttp;
  if(isIE())
  {
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  else
  {
	xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}
function dwTaskTablePanel_Click(pnlContent, pnlImage, pnlCell)
{
  dwShowContentLoading();
  if(pnlImage.getAttribute('ExpandState')==0)
  {
    pnlImage.src=pnlImage.src.replace('Expand.gif', 'Collapse.gif');
    if (isIE())
    {
        pnlContent.style.display='block';
    }
    else
    {
        pnlContent.style.display='table-row';
    }
    if(pnlImage.getAttribute('Loaded')==0)
    {
      if (pnlImage.getAttribute('ExpandURL').length>0) 
      {
        var xmlhttp;
        xmlhttp = dwXMLHttpRequest();
        xmlhttp.open('GET', pnlImage.getAttribute('ExpandURL'), true);
        xmlhttp.onreadystatechange=function() {
          if (xmlhttp.readyState==4)
          {
            var sResponse;
            var sOnLoad;
            sResponse = xmlhttp.responseText;
            xmlhttp.onreadystatechange = new Function;
            if(sResponse.indexOf('<ONLOAD>') == 0) {
              sOnLoad = sResponse.substring(8,sResponse.indexOf('</ONLOAD>'));
              sResponse = sResponse.substring(sResponse.indexOf('</ONLOAD>') + 9);
            } else {
              sOnLoad = '';
            }
            dwSetInnerHTML(pnlCell.id,sResponse);
            pnlImage.setAttribute('Loaded', '1');
            
            //we have a map to load
            if (sResponse.search('dwMapScriptLoader()') > 0) {
              eval('dwMapScriptLoader()'); // loads the map api
            }
            else if (sOnLoad.length>0) {
              eval(sOnLoad);
            }          
          }
        }
        xmlhttp.send('');
      }
      pnlImage.setAttribute('Loaded', '1');
    }
    pnlImage.setAttribute('ExpandState', '1');
  }
  else
  {
    pnlContent.style.display='none';
    pnlImage.src=pnlImage.src.replace('Collapse.gif', 'Expand.gif');
    pnlImage.setAttribute('ExpandState', '0');
  }
  dwHideContentLoading();
}
function dwTabRefresh(psTabName,psWebTabName)
{
  dwTabRefreshParameter(psTabName,psWebTabName,'');
}
function dwTabSet(psTabName,psWebTabName)
{
  dwShowContentLoading();
  dwTabSetParameter(psTabName,psWebTabName,'');
  dwHideContentLoading();
}
function dwTabRefreshParameter(psTabName,psWebTabName,psParameter)
{
  document.getElementById(psWebTabName).setAttribute('Loaded','0');
  dwTabSetParameter(psTabName,psWebTabName,psParameter);
}
function dwTabSetParameter(psTabName,psWebTabName,psParameter)
{
  var oTabTable=document.getElementById(psTabName);
  var oWebTab=document.getElementById(psWebTabName);
  prevTabName=oTabTable.getAttribute('prevTab');
  if (prevTabName=='') {
    prevTabName='tab_tabMain';
  }
  if (document.getElementById(prevTabName)!=null) {
    document.getElementById(prevTabName).className='TabOff';
    document.getElementById(prevTabName + '_tbl').style.display='none';
  }
  oTabTable.setAttribute('prevTab',psWebTabName);
  oWebTab.className='TabOn';
  //document.getElementById(psWebTabName + '_tbl').style.display='block';
  document.getElementById(psWebTabName + '_tbl').style.display='';
  if (oWebTab.getAttribute('Loaded')=='0') {
    sURL=oWebTab.getAttribute('ExpandURL');
    if (sURL!='') {
      xmlhttp = dwXMLHttpRequest();
      if (sURL.indexOf('?')<0) { sURL+='?'; }
      else { sURL+='&'; }
      var d = new Date();
      sURL+='ABC=\''+Date.UTC(d)+'\'';
      if (psParameter!='') { sURL+='&'+psParameter; }
      xmlhttp.open('GET',sURL,true);
      xmlhttp.setRequestHeader('pragma','no-cache');
      xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
          var sResponse = xmlhttp.responseText;
          xmlhttp.onreadystatechange = new Function;
          var sPanelLoaderName = dwSetInnerHTML(psWebTabName + '_Cell',sResponse);
          if (sPanelLoaderName.length>0 && sPanelLoaderName.lastIndexOf('_Loader')!=-1) {
            sPanelLoaderName = sPanelLoaderName + "();";
            eval(sPanelLoaderName);
          }
        }
      }
      xmlhttp.send('');
    }
    oWebTab.setAttribute('Loaded','1');
  }
  oTabTable.value=oWebTab.value;
}
function dwPanelRefresh(psPanelName,psWebPanelName)
{
  dwPanelRefreshParameter(psPanelName,psWebPanelName,'');
}
function dwPanelSet(psPanelName,psWebPanelName)
{
  dwShowContentLoading();
  dwPanelSetParameter(psPanelName,psWebPanelName,'');
  dwHideContentLoading();
}
function dwPanelRefreshParameter(psPanelName,psParameter)
{
  document.getElementById(psPanelName + '_img').setAttribute('Loaded','0');
  dwPanelSetParameter(psPanelName,psParameter);
}
function dwPanelSetParameter(psPanelName,psParameter)
{
  var oWebPanel=document.getElementById(psPanelName + '_img');
  if (oWebPanel.getAttribute('Loaded')=='0') {
    sURL=oWebPanel.getAttribute('ExpandURL');
    if (sURL!='') {
      xmlhttp = dwXMLHttpRequest();
      if (sURL.indexOf('?')<0) { sURL+='?'; }
      else { sURL+='&'; }
      var d = new Date();
      sURL+='ABC=\''+Date.UTC(d)+'\'';
      if (psParameter!='') { sURL+='&'+psParameter; }
      xmlhttp.open('GET',sURL,true);
      xmlhttp.setRequestHeader('pragma','no-cache');
      xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
          var sResponse = xmlhttp.responseText;
          xmlhttp.onreadystatechange = new Function;
          if(sResponse.indexOf('<ONLOAD>') == 0) {
            sOnLoad = sResponse.substring(8,sResponse.indexOf('</ONLOAD>'));
            sResponse = sResponse.substring(sResponse.indexOf('</ONLOAD>') + 9);
          } else {
            sOnLoad = '';
          }
          dwSetInnerHTML(psPanelName + '_Cell',sResponse);
          
          //we have a map to load
          if (sResponse.search('dwMapScriptLoader()') > 0) {
            eval('dwMapScriptLoader()'); // loads the map api
          }
          else if (sOnLoad.length>0) {
            eval(sOnLoad);
          }          
        }
      }
      xmlhttp.send('');
    }
    oWebPanel.setAttribute('Loaded','1');
  }
}
function dwSetInnerHTML(id,content)
{
  var txt = content;
  var startscript;
  var endscript;
  var block = "";
  var func = "";
  
  if (id.length>0) 
  {
    while ( (startscript = txt.search('<script')) >= 0)
    {
      block="";
      txt = txt.substr(startscript + '<script'.length, txt.length);
      startscript = txt.indexOf('>');
      endscript = txt.indexOf('<\/script>');
      block = block + txt.substring(startscript + '>'.length, endscript);
      if (func.length==0) {
        var startfunc = block.indexOf('function');
        var endfunc = block.indexOf('(');
        if(startfunc>=0 && endfunc>=0) {
          func = block.substring(startfunc + 'function'.length, endfunc);
        }
      } 
      txt = txt.substring(endscript + '<\/script>'.length, txt.length);
      var oScript = document.createElement('script');
      oScript.setAttribute('language','javascript');
      oScript.setAttribute('type','text/javascript'); 
      oScript.text = block;
      document.getElementsByTagName('head').item(0).appendChild(oScript); 
    }
    document.getElementById(id).innerHTML=content;
  }
  return func;
}  
function dwHideRecentPages()
{
	//Nothing done here. May implement mouseout hide later.
}
function dwShowRecentPages(psContainer,psIcon,psURL)
{
  var oContainer = document.getElementById(psContainer);
  if (oContainer.style.display=='block')
  { oContainer.style.display='none';
    window.status='hide';}
  else
  {
    window.status='show';
    xmlhttp = dwXMLHttpRequest();
    if (psURL.indexOf('?')<0)
    { psURL+='?'; }
    else
    { psURL+='&'; }
    var d = new Date();
    psURL+='ABC=\''+Date.UTC(d)+'\'';
    xmlhttp.open('GET',psURL,false);
    xmlhttp.setRequestHeader('pragma','no-cache');
    xmlhttp.onreadystatechange=function(){
        if (xmlhttp.readyState==4) {
    		var sResponse = xmlhttp.responseText;
    		var oIcon = document.getElementById(psIcon);
    		oContainer.innerHTML = sResponse;
    		
    		xmlhttp.onreadystatechange = new Function;
    		
    		//oContainer.innerHTML = '<table><tr><td>Test Text 3</td></tr></table>';
    
    		elPos=dwGetElementPosition(oIcon);
    		oContainer.style.left=(elPos.x - 340) + "px";
    		oContainer.style.width=360 + "px";
    		oContainer.style.top=(elPos.y + oIcon.clientHeight + 1) + "px";
    		oContainer.style.display='block';
    		}
      }
    xmlhttp.send('');
  }
}
function dwShowContentLoading()
{
  var oContentLoadingImage = document.getElementById('dwLoadingContent');
  if (oContentLoadingImage != null)
  {
    oContentLoadingImage.style.display='block';
   oContentLoadingImage.style.position='absolute';
    oContentLoadingImage.style.visibility='visible';
    window.status='Loading...';
    //alert('visible');
  }
}
function dwHideContentLoading()
{
  var oContentLoadingImage = document.getElementById('dwLoadingContent');
  if (oContentLoadingImage != null)
  {  
    oContentLoadingImage.style.display='none';
    oContentLoadingImage.style.visibility='hidden';
    window.status='';
  }
}
function dwFormSubmit(oForm)
{
  if(oForm.submitted==1)
  {
    return false;
  }
  else
  {
    oForm.submitted=1;
    return true;
  }
}
//============================================================================================
//
// new script for phone ajax calls
//
//============================================================================================
function dwPhone_OnClick(inputNumber,URL){
    var xmlhttp;
    xmlhttp = dwXMLHttpRequest();
    xmlhttp.open('GET', URL + '&N=' + inputNumber.value + '&Now=' + (new Date()).getMilliseconds(), true);
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                var result = xmlhttp.responseText;
                var aResult = result.split(':');
                xmlhttp.onreadystatechange = new Function;
                if (aResult[0] == '0') {
                    dwHideContent('prg_Call');
                } else {
                    document.getElementById('spn_Prg').innerText = 'Attempt to initiate call failed:\nError ' + result;
                    dwAssignPosition(document.getElementById('spn_Prg'), dwGetElementPosition(inputNumber));
                    setTimeout("HideContent('prg_Call');", 5000);
                }
            } else {
                alert('There was a problem with the request. Status=' + xmlhttp.status);
            }
       }
 };
// display the floating div to indicate that the call is in progress
 document.getElementById('spn_Prg').innerText = 'Calling...';
 dwShowContent('prg_Call',inputNumber);
 xmlhttp.send();
}
function dwShowContent(divID,inputNumber) {
 if(divID.length < 1)
  { return; }
 var dd = document.getElementById(divID);
 dwAssignPosition(dd,dwGetElementPosition(inputNumber));
 dd.style.display = "block";}
function dwHideContent(d) {
 if(d.length < 1)
  { return; }
 document.getElementById(d).style.display = "none";}
// puts control d into place on the screen relative to the cursor
function dwAssignPosition(d,elPos) {
 d.style.left = (elPos.x + 10) + "px";
 d.style.top = (elPos.y + 10) + "px";
 d.style.width = dwGetWidth(document.getElementById('spn_Prg').innerText) + "px"; 
}
function dwGetWidth(text){
 var spanElement = document.createElement('span');
 spanElement.style.whiteSpace = "nowrap";
 spanElement.innerHTML = text;
 document.body.appendChild(spanElement);
 var width = spanElement.offsetWidth;
 document.body.removeChild(spanElement);
 return width;
}
//global variables used to track status 
var dwSplitterCurWidth=0 ;
var dwSplitterCurPos=0 ;
var dwSplitterNewPos=0 ;
var dwSplitterMouseStatus='up';
var dwSplitterOverlayDisplayed=0; 
var dwSplitterOverlayElement=0;
var dwSplitterOverlayItem;
//this function gets the original div width 
function dwSplitterStart(e,elementName){ 
 //for handling events in ie vs. w3c 
 curevent=(typeof event=='undefined'?e:event) ;
 //sets mouse flag as down 
 dwSplitterMouseStatus='down' ;
 //gets position of click 
 dwSplitterCurPos=curevent.clientX ;
 //accepts height of the div 
 tempWidth=document.getElementById(elementName).style.width;
 //these lines split the height value from the 'px' units 
 widthArray=tempWidth.split('p') ;
 dwSplitterCurWidth=parseInt(widthArray[0]) ;
}
function dwSplitterStartOverlay(e,elementName,overlayName){ 
 if(dwSplitterOverlayDisplayed==0){
  dwSplitterOverlayItem = document.createElement('div');
  dwSplitterOverlayItem.setAttribute('id','dwSplitterOverlay');
  dwSplitterOverlayItem.style.position='absolute';
  dwSplitterOverlayItem.style.display='block';
  dwSplitterOverlayItem.style.background='transparent';
  document.body.appendChild(dwSplitterOverlayItem);
  }
 else
  {
  dwSplitterOverlayItem=document.getElementById('dwSplitterOverlay');
  }
 dwSplitterOverlayElement=document.getElementById(overlayName);
 dwSplitterOverlayItem.style.display='block';
 elPos=dwGetElementPosition(dwSplitterOverlayElement);
 dwSplitterOverlayItem.style.top=elPos.y;
 dwSplitterOverlayItem.style.left=elPos.x;
 dwSplitterOverlayItem.style.width=dwSplitterOverlayElement.clientWidth;
 dwSplitterOverlayItem.style.height=dwSplitterOverlayElement.clientHeight;
 dwSplitterOverlayDisplayed=1;
 return dwSplitterStart(e,elementName);
}
//this changes the height of the div while the mouse button is depressed 
function dwSplitterMouseMove(e,elementName){ 
 if(dwSplitterMouseStatus=='down'){ 
  curevent=(typeof event=='undefined'?e:event) ;
  //get new mouse position 
  dwSplitterNewPos=curevent.clientX ;
  //calculate movement in pixels 
  var pxMove=parseInt(dwSplitterNewPos-dwSplitterCurPos) ;
  //determine new height 
  var newWidth=parseInt(dwSplitterCurWidth+pxMove) ;
  //conditional to set minimum height to 5 
  newWidth=(newWidth<5?5:newWidth) ;
  //set the new height of the div 
  document.getElementById(elementName).style.width=newWidth+'px' ;
  if(dwSplitterOverlayDisplayed==1){
   elPos=dwGetElementPosition(dwSplitterOverlayElement);
   //dwSplitterOverlay.style.position='relative';
   dwSplitterOverlayItem.style.top=elPos.y;
   dwSplitterOverlayItem.style.left=elPos.x;
   lWidth=dwSplitterOverlayElement.clientWidth;
   lHeight=dwSplitterOverlayElement.clientHeight;
   dwSplitterOverlayItem.style.width=lWidth;
   dwSplitterOverlayItem.style.height=lHeight;
  }
 } 
} 
function dwSplitterEnd(e,elementName){ 
 if(dwSplitterMouseStatus=='down'){
  dwSplitterMouseStatus='up';}
 if(dwSplitterOverlayDisplayed==1){
  dwSplitterOverlayItem.style.display='none';
  dwSplitterOverlayDisplayed=2;}
}
function dwNewWindowHelp(href,window) {
  var win = '' + window;
  if (win.length == 0)
  {
    win = '_search';
  }
  msgWindow=open('',win.replace(/-/gi,'_'),'resizable=yes,width=640,height=480,maximize=no,minimize=no,scrollbars=yes');
  msgWindow.location.href=href;
  msgWindow.opener=self.window;
  self.window.onunload=msgWindow.close;
  msgWindow.focus();
}

function dwPagesIndexInputKeyPressed(e) 
{ 
  var oInput = document.getElementById('dwPageIndexInput');
  var input = oInput.value; 
  var evt = e || window.event; 
  var pressedKey = evt.keyCode;  
  var refreshURL = oInput.getAttribute('refreshurl');
   
  if (pressedKey == 13)
  { 
    if (parseInt(oInput.getAttribute('currentpage')) != parseInt(input))
    { 
      if ((parseInt(input)) && (parseInt(input) <= parseInt(oInput.getAttribute('numPages')))) 
      {
        if (refreshURL.indexOf('!P=x') > 0) 
        {
          document.location = refreshURL.replace('!P=x', '!P=' + input); 
        }
        else
        {
          document.location = refreshURL + '&!P=' + input;
        }
        
        e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); e.preventDefault ? e.preventDefault() : e.returnValue = false; 
        return false; 
      } 
      else 
      { 
        alert('Please Enter a valid page number - ' + input); 
        e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); e.preventDefault ? e.preventDefault() : e.returnValue = false; 
        return false; 
      }
    } 
  }
  
  return false;
} 

function dwCancelEnterKey(e)
{
var key;
if(isIE())
    key = window.event.keyCode;     //IE
else
    key = e.which;     //firefox
if(key == 13)
    return false;
else
    return true;
}



//global variables used to track status 
var dwHorzSplitterCurHeight=0 ;
var dwHorzSplitterCurPos=0 ;
var dwHorzSplitterNewPos=0 ;
var dwHorzSplitterMouseStatus='up';
var dwHorzSplitterOverlayDisplayed=0; 
var dwHorzSplitterOverlayElement=0;
var dwHorzSplitterOverlayItem;
//this function gets the original div width 
function dwHorzSplitterStart(e,elementName){ 
 //for handling events in ie vs. w3c 
 curevent=(typeof event=='undefined'?e:event) ;
 //sets mouse flag as down 
 dwHorzSplitterMouseStatus='down' ;
 //gets position of click 
 dwHorzSplitterCurPos=curevent.clientY ;
 //accepts height of the div 
 tempHeight=document.getElementById(elementName).style.height;
 //these lines split the height value from the 'px' units 
 heightArray=tempHeight.split('p') ;
 dwHorzSplitterCurWidth=parseInt(heightArray[0]) ;
}
function dwHorzSplitterStartOverlay(e,elementName,overlayName){ 
 if(dwHorzSplitterOverlayDisplayed==0){
  dwHorzSplitterOverlayItem = document.createElement('div');
  dwHorzSplitterOverlayItem.setAttribute('id','dwHorzSplitterOverlay');
  dwHorzSplitterOverlayItem.style.position='absolute';
  dwHorzSplitterOverlayItem.style.display='block';
  dwHorzSplitterOverlayItem.style.background='transparent';
  document.body.appendChild(dwHorzSplitterOverlayItem);
  }
 else
  {
  dwHorzSplitterOverlayItem=document.getElementById('dwHorzSplitterOverlay');
  }
 dwHorzSplitterOverlayElement=document.getElementById(overlayName);
 dwHorzSplitterOverlayItem.style.display='block';
 elPos=dwGetElementPosition(dwHorzSplitterOverlayElement);
 dwHorzSplitterOverlayItem.style.top=elPos.y;
 dwHorzSplitterOverlayItem.style.left=elPos.x;
 dwHorzSplitterOverlayItem.style.width=dwHorzSplitterOverlayElement.clientWidth;
 dwHorzSplitterOverlayItem.style.height=dwHorzSplitterOverlayElement.clientHeight;
 dwHorzSplitterOverlayDisplayed=1;
 return dwHorzSplitterStart(e,elementName);
}
//this changes the height of the div while the mouse button is depressed 
function dwHorzSplitterMouseMove(e,elementName){ 
 if(dwHorzSplitterMouseStatus=='down'){ 
  curevent=(typeof event=='undefined'?e:event) ;
  //get new mouse position 
  dwHorzSplitterNewPos=curevent.clientY ;
  //calculate movement in pixels 
  var pyMove=parseInt(dwHorzSplitterNewPos-dwHorzSplitterCurPos) ;
  //determine new height 
  var newHeight=parseInt(dwHorzSplitterCurWidth+pyMove) ;
  //conditional to set minimum height to 5 
  newHeight=(newHeight<5?5:newHeight) ;
  //set the new height of the div 
  document.getElementById(elementName).style.height=newHeight+'px' ;
  if(dwHorzSplitterOverlayDisplayed==1){
   elPos=dwGetElementPosition(dwHorzSplitterOverlayElement);
   //dwHorzSplitterOverlay.style.position='relative';
   dwHorzSplitterOverlayItem.style.top=elPos.y;
   dwHorzSplitterOverlayItem.style.left=elPos.x;
   lWidth=dwHorzSplitterOverlayElement.clientWidth;
   lHeight=dwHorzSplitterOverlayElement.clientHeight;
   dwHorzSplitterOverlayItem.style.width=lWidth;
   dwHorzSplitterOverlayItem.style.height=lHeight;
  }
 } 
} 
function dwHorzSplitterEnd(e,elementName){ 
 if(dwHorzSplitterMouseStatus=='down'){
  dwHorzSplitterMouseStatus='up';}
 if(dwHorzSplitterOverlayDisplayed==1){
  dwHorzSplitterOverlayItem.style.display='none';
  dwHorzSplitterOverlayDisplayed=2;}
}
function dwBreadCrumbShowDets()
{
  var oImage=document.getElementById('dwBreadCrumbImg');
  var oDetails=document.getElementById('dwBreadCrumbDets');
  if (oDetails.getAttribute('ExpandState')=='0') {
    oDetails.style.display='block';
    if (oDetails.getAttribute('Loaded')=='0') {
      oDetails.setAttribute('Loaded','1');
      var sURL=oDetails.getAttribute('ExpandURL');
      if (sURL!='') {
        xmlhttp = dwXMLHttpRequest();
        if (sURL.indexOf('?')<0) { sURL+='?'; }
        else { sURL+='&'; }
        var d = new Date();
        sURL+='ABC=\''+Date.UTC(d)+'\'';
        xmlhttp.open('GET',sURL,true);
        xmlhttp.setRequestHeader('pragma','no-cache');
        xmlhttp.onreadystatechange=function() {
          if (xmlhttp.readyState==4) {
            var sResponse = xmlhttp.responseText;
            xmlhttp.onreadystatechange = new Function;
            oDetails.innerHTML = sResponse;
          }
        }
        xmlhttp.send('');
      }
    }
    oDetails.setAttribute('ExpandState','1');
    oImage.src=oImage.src.replace('Expand.gif', 'Collapse.gif');
  }
  else {
    oDetails.style.display='none';
    oDetails.setAttribute('ExpandState','0');
    oImage.src=oImage.src.replace('Collapse.gif', 'Expand.gif');
  }
}

function dwShowWindowMsg(href, windowName, lRefItemID) {
  var win = '' + windowName;
  var l_params = 'resizable=yes,maximize=yes,minimize=yes,scrollbars=yes';
  var winRef = dwShowWindowBase(href, win.replace(/-/gi,'_'), l_params, 0, 0);
  try {
    winRef.dwMsgShowRefItem(lRefItemID);
  }
  catch (e) {
  }
}


/* -------------------------------------------
* dwSplitFrame - Vertical Functionality
* dwWeb v4.0
--------------------------------------------*/
//global variables used to track status 
var dwSplitFrameVertCurWidth=0 ;
var dwSplitFrameVertCurPos=0 ;
var dwSplitFrameVertNewPos=0 ;
var dwSplitFrameVertMouseStatus='up';
var dwSplitFrameVertOverlayDisplayed=0; 
var dwSplitFrameVertOverlayElement=0;
var dwSplitFrameVertOverlayItem;

function dwSplitFrameVertStart(e,elementName){   
 curevent=(typeof event=='undefined'?e:event) ; //for handling events in ie vs. w3c 
 dwSplitFrameVertMouseStatus='down' ; //sets mouse flag as down  
 dwSplitFrameVertCurPos=curevent.clientX ; //gets position of click  
 tempWidth=document.getElementById(elementName).style.width; //accepts height of the div  
 widthArray=tempWidth.split('p') ; //these lines split the height value from the 'px' units 
 dwSplitFrameVertCurWidth=parseInt(widthArray[0]) ;
}

function dwSplitFrameVertStartOverlay(e,elementName,overlayName, prefix){ 
 document.body.style.cursor = 'e-resize';
 dwSplitFrameVertOverlayItem=document.getElementById(prefix + '_dwSplitterOverlay');
 dwSplitFrameVertOverlayItem.style.display='inline';
 dwSplitFrameVertOverlayItem.style.top=0;
 dwSplitFrameVertOverlayItem.style.left=0;
 dwSplitFrameVertOverlayItem.style.width=(document.width ? document.width : document.body.clientWidth) + 'px';
 dwSplitFrameVertOverlayItem.style.height=(document.height ? document.height : document.body.clientHeight) + 'px'; 
 
 dwSplitFrameVertOverlayItem.style.backgroundColor = '#000000';
 dwSplitFrameVertOverlayItem.style.opacity = 0;
 dwSplitFrameVertOverlayItem.style.filter = 'alpha(opacity=' + 0 + ')'; 
 
 dwSplitFrameVertOverlayDisplayed=1;
  
 return dwSplitFrameVertStart(e,elementName);
}
 
function dwSplitFrameVertMouseMove(e,elementName){ 
 if(dwSplitFrameVertMouseStatus=='down'){ 
  curevent=(typeof event=='undefined'?e:event) ;  
  dwSplitFrameVertNewPos=curevent.clientX ; //get new mouse position    
  var pxMove=parseInt(dwSplitFrameVertNewPos-dwSplitFrameVertCurPos) ; //calculate movement in pixels  
  var newWidth=parseInt(dwSplitFrameVertCurWidth+pxMove) ; //determine new height   
  newWidth=(newWidth<5?5:newWidth); //conditional to set minimum height to 5 
  var minWidth = parseInt(document.getElementById(elementName).style.minWidth);  
  newWidth=(newWidth<minWidth?minWidth:newWidth); //conditional to set minimum height of its minimum height property  
  document.getElementById(elementName).style.width=newWidth+'px'; //set the new height of the div 
  document.getElementById(elementName.replace('FrameOne','Display')).style.width=newWidth+'px'; //set the new height of the div
 } 
} 

function dwSplitFrameVertEnd(e,elementName){ 
 if(dwSplitFrameVertMouseStatus=='down'){
  dwSplitFrameVertMouseStatus='up';}
 if(dwSplitFrameVertOverlayDisplayed==1){
  document.body.style.cursor = 'default';
  dwSplitFrameVertOverlayItem.style.display='none';
  dwSplitFrameVertOverlayItem = null;
  dwSplitFrameVertOverlayDisplayed=2;}
}

/* -------------------------------------------
* dwSplitFrame - Horizontal Functionality
* dwWeb v4.0
--------------------------------------------*/
//global variables used to track status 
var dwSplitFrameHorzCurHeight=0 ;
var dwSplitFrameHorzCurPos=0 ;
var dwSplitFrameHorzNewPos=0 ;
var dwSplitFrameHorzMouseStatus='up';
var dwSplitFrameHorzOverlayDisplayed=0; 
var dwSplitFrameHorzOverlayElement=0;
var dwSplitFrameHorzOverlayItem;

//this function gets the original div width 
function dwSplitFrameHorzStart(e,elementName){  
 curevent=(typeof event=='undefined'?e:event) ; //for handling events in ie vs. w3c 
 dwSplitFrameHorzMouseStatus='down' ; //sets mouse flag as down  
 dwSplitFrameHorzCurPos=curevent.clientY ; //gets position of click  
 tempHeight=document.getElementById(elementName).style.height; //accepts height of the div  
 heightArray=tempHeight.split('p') ; //these lines split the height value from the 'px' units 
 dwSplitFrameHorzCurHeight=parseInt(heightArray[0]) ;
}

function dwSplitFrameHorzStartOverlay(e,elementName,overlayName, prefix){
 document.body.style.cursor = 'n-resize'; 
 dwSplitFrameHorzOverlayItem=document.getElementById(prefix + '_dwSplitterOverlay');
 dwSplitFrameHorzOverlayItem.style.display='block'; 
 dwSplitFrameHorzOverlayItem.style.top=0;
 dwSplitFrameHorzOverlayItem.style.left=0;
 dwSplitFrameHorzOverlayItem.style.width=(document.width ? document.width : document.body.clientWidth) + 'px';
 dwSplitFrameHorzOverlayItem.style.height=(document.height ? document.height : document.body.clientHeight) + 'px';
 
 dwSplitFrameHorzOverlayItem.style.backgroundColor = '#000000';
 dwSplitFrameHorzOverlayItem.style.opacity = 0;
 dwSplitFrameHorzOverlayItem.style.filter = 'alpha(opacity=' + 0 + ')'; 
 
 dwSplitFrameHorzOverlayDisplayed=1;
 
 return dwSplitFrameHorzStart(e,elementName);
}
//this changes the height of the div while the mouse button is depressed 
function dwSplitFrameHorzMouseMove(e,elementName, prefix){ 
 if(dwSplitFrameHorzMouseStatus=='down'){ 
  curevent=(typeof event=='undefined'?e:event) ;
  //get new mouse position 
  dwSplitFrameHorzNewPos=curevent.clientY ;
  //calculate movement in pixels 
  var pyMove=parseInt(dwSplitFrameHorzNewPos-dwSplitFrameHorzCurPos) ;
  //determine new height 
  var newHeight=parseInt(dwSplitFrameHorzCurHeight+pyMove) ;
  //conditional to set minimum height to 5 
  newHeight=(newHeight<5?5:newHeight) ;
  var minHeight = parseInt(document.getElementById(elementName).style.minHeight);
  newHeight=(newHeight<minHeight?minHeight:newHeight);
  
  var otherHeight = parseInt(document.getElementById(prefix + '_ContentDisplayBottom').offsetHeight);
  otherHeight += parseInt(document.getElementById(prefix + '_ResizeBarCell').offsetHeight);
  var maxHeight = parseInt(document.getElementById(prefix + '_HeightTable').style.height);
  newHeight=((newHeight+otherHeight)>maxHeight?newHeight - (newHeight+otherHeight-maxHeight):newHeight);
  //set the new height of the div 
  document.getElementById(elementName).style.height=newHeight+'px' ;
 } 
} 
function dwSplitFrameHorzEnd(e,elementName){ 
 if(dwSplitFrameHorzMouseStatus=='down'){
  dwSplitFrameHorzMouseStatus='up';}
 if(dwSplitFrameHorzOverlayDisplayed==1){
  document.body.style.cursor = 'default';
  dwSplitFrameHorzOverlayItem.style.display='none';
  dwSplitFrameHorzOverlayItem = null;
  dwSplitFrameHorzOverlayDisplayed=2;}
}
function dwTitleTabsOnClick(dwTitleTabs_content,dwTitleTabs_tab)
{
 if (dwTitleTabs_content.getAttribute('ExpandURL').length>0)
 {var xmlhttp = dwXMLHttpRequest();
  xmlhttp.open('GET',dwTitleTabs_content.getAttribute('ExpandURL'), false);
  xmlhttp.setRequestHeader('pragma','no-cache');
  xmlhttp.send('');
  document.getElementById(dwTitleTabs_content.id + '_Cell').innerHTML=xmlhttp.responseText;
  dwTitleTabs_content.setAttribute('ExpandURL', '');}
 if (dwTitleTabs_content.getAttribute('IFrame').length>0)
  {var xmlhttp = dwXMLHttpRequest();
  document.getElementById(dwTitleTabs_content.id + '_IFrame').src=dwTitleTabs_content.getAttribute('IFrame');
  dwTitleTabs_content.setAttribute('IFrame','');}
if(dwTitleTabs_isDisplayed==true)
 {
  if(dwTitleTabs_tabDisplayed.id!=dwTitleTabs_content.id)
   {dwTitleTabs_tabDisplayed.style.display='none';    if(dwTitleTabs_tabTab.className=='TitleTabOn')     {dwTitleTabs_tabTab.className='TitleTab'};    if(dwTitleTabs_tabTab.className=='TitleTabOnHover')     {dwTitleTabs_tabTab.className='TitleTabHover'};   }
  dwTitleTabs_tabDisplayed=dwTitleTabs_content;
  dwTitleTabs_tabTab=dwTitleTabs_tab;
  if(dwTitleTabs_tabDisplayed.style.display=='none')
   {dwTitleTabs_tabDisplayed.style.display='block';    if(dwTitleTabs_tabTab.className=='TitleTab')     {dwTitleTabs_tabTab.className='TitleTabOn'};    if(dwTitleTabs_tabTab.className=='TitleTabHover')     {dwTitleTabs_tabTab.className='TitleTabOnHover'};   }
  else
   {dwTitleTabs_tabDisplayed.style.display='none';    if(dwTitleTabs_tabTab.className=='TitleTabOn')     {dwTitleTabs_tabTab.className='TitleTab'};    if(dwTitleTabs_tabTab.className=='TitleTabOnHover')     {dwTitleTabs_tabTab.className='TitleTabHover'};   }
 }
else


 {dwTitleTabs_tabDisplayed=dwTitleTabs_content;
  dwTitleTabs_tabTab=dwTitleTabs_tab;
  if(dwTitleTabs_tabDisplayed.style.display=='none')
   {dwTitleTabs_tabDisplayed.style.display='block';    if(dwTitleTabs_tabTab.className=='TitleTab')     {dwTitleTabs_tabTab.className='TitleTabOn'};    if(dwTitleTabs_tabTab.className=='TitleTabHover')     {dwTitleTabs_tabTab.className='TitleTabOnHover'};   }
  else
   {dwTitleTabs_tabDisplayed.style.display='none';    if(dwTitleTabs_tabTab.className=='TitleTabOn')     {dwTitleTabs_tabTab.className='TitleTab'};    if(dwTitleTabs_tabTab.className=='TitleTabOnHover')     {dwTitleTabs_tabTab.className='TitleTabHover'};   }
 }
 dwTitleTabs_isDisplayed=true
}

var SelectControlSuggestTimer;
var  gPressedKeyCode = -1;
var gElementName;
var gObjectType;
var gUrl;
var gFieldName;
var gFieldSource;
var bPendingResult;

function dwSelectControlSuggestKeyDown(e, sElementName, objectType, url, sFieldName, sFieldSource)
{
  var evt = e || window.event;    
  gPressedKeyCode = evt.keyCode; 
  gElementName = sElementName;
  gObjectType = objectType;
  gUrl = url;
  gFieldName = sFieldName;
  gFieldSource = sFieldSource;  
   
  clearTimeout(SelectControlSuggestTimer); 
  var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');
  if ((gPressedKeyCode == 9) || (gPressedKeyCode == 13))
  {   
        if (bPendingResult)
        {
          dwSelectAJAXQuery(url, objectType, sElementName, sFieldName, sFieldSource)
        }
        
        var lChildCount = dwSelectControlSuggest_div.getElementsByTagName('div').length;
        if (lChildCount > 0)
        {
          dwSelectSuggestion(dwSelectControlSuggest_div.firstChild.id, sElementName, dwSelectControlSuggest_div.firstChild.innerHTML);  
          if (lChildCount > 1)
                document.getElementById('selCtrlDisplay_' + sElementName).className = "SelectControlItemMismatch";
        }
        else
        {
          var dwSelectControlSuggestText = document.getElementById('selCtrlSuggest_' + sElementName + '_text');
          dwSelectControlSuggestText.value = '';
          dwSelectControlSuggest_div.style.display = 'none';
          dwSelectControlSuggest_div.innerHTML = '';
        }        
  }
  if (gPressedKeyCode == 13)
  {
    event.returnValue = false;  
  }
}

function dwSelectControlSuggestKeyUp(e, sElementName, objectType, url, sFieldName, sFieldSource)
{
  var evt = e || window.event;    
  gPressedKeyCode = evt.keyCode; 
  gElementName = sElementName;
  gObjectType = objectType;
  gUrl = url;
  gFieldName = sFieldName;
  gFieldSource = sFieldSource;

  if (gPressedKeyCode != 9)
  {
    bPendingResult = true;
    clearTimeout(SelectControlSuggestTimer);
    SelectControlSuggestTimer = setTimeout(dwSelectControlSuggest, 100);
  }  
}

function dwSelectControlSuggest(e, sElementName, objectType, url, sFieldName, sFieldSource, pbKeyDown)
{
  sElementName = gElementName;
  objectType = gObjectType;
  url = gUrl;
  sFieldName = gFieldName;
  sFieldSource = gFieldSource;
 
  var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');

  switch (gPressedKeyCode)
  {   
    case 9:
      break;       
    case 13:
      // Enter - do nothing, it was handled in KeyDown, this is here to prevent the suggestions coming up again 
      break;
    case 27:
      // Escape
      dwSelectControlToggle(sElementName, false);
      break;
    default:
      if (!pbKeyDown)
      {        
        dwSelectControlSuggest_div.innerHTML = "";
        dwSelectAJAXQuery(url, objectType, sElementName, sFieldName, sFieldSource);
      }
  }
  gPressedKeyCode = null;
  gElementName = "";
  gObjectType = "";
  gUrl = "";
  gFieldName = "";
  gFieldSource = "";  
}

function dwSelectAJAXQuery(url, objectType, sElementName, sFieldName, sFieldSource)
{
  var dwSelectControlSuggestText = document.getElementById('selCtrlSuggest_' + sElementName + '_text');
  var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');
  var searchText = dwSelectControlSuggestText.value;        
  if (searchText.length > 0) 
  {
    var xmlhttp = dwXMLHttpRequest();
    xmlhttp.open('GET', url + '&T=' + objectType + '&S=' + searchText + '&N=' + sElementName + '&FN=' + sFieldName + '&FS=' + sFieldSource + '&!NC=' + new Date().getTime(), false);
 
    xmlhttp.setRequestHeader('pragma','no-cache');
    xmlhttp.setRequestHeader('Cache-Control','no-cache');
    xmlhttp.send('');       
    if (xmlhttp.status == 200)
    { 
      var sResponse = xmlhttp.responseText;
      if (sResponse.length == 0)
      {
        sResponse = 'No Results found';
      }
      dwSelectControlSuggest_div.innerHTML = sResponse; 
      dwSelectControlSuggest_div.style.display = 'block';
      dwSelectControlSuggest_div.style.position = 'absolute';
      var elPos = dwGetElementPosition(dwSelectControlSuggestText);
      dwSelectControlSuggest_div.style.left = elPos.x + dwSelectControlSuggestText.clientLeft + dwSelectControlSuggestText.offsetLeft + 'px';
      dwSelectControlSuggest_div.style.top = elPos.y + dwSelectControlSuggestText.offsetHeight + dwSelectControlSuggestText.offsetTop + 'px';
      dwSelectControlSuggest_div.style.width = dwSelectControlSuggestText.clientWidth + 'px';
    }
    bPendingResult = false;
  }
  else
  {
    dwSelectControlSuggest_div.style.display = 'none';
  }  
}

function dwSelectSuggestion(id, sElementName, displayName)
{
  var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');
  dwSelectControlSuggest_div.style.display = 'none';
  dwSelectControlSuggest_div.innerHTML = "";

  dwSelectControlMakeSelection(sElementName, id, displayName);
}

function dwSelectControlMakeSelection(sElementName, lID, sDisplayName)
{
    document.getElementById('selCtrlVal_' + sElementName).value = lID;
    document.getElementById('selCtrlDisplay_' + sElementName).className = "SelectControlItem";
    document.getElementById('selCtrlDisplay_' + sElementName).innerHTML= sDisplayName;
    document.getElementById('selCtrlDisplay_' + sElementName).style.display = 'block'; 
    
    var sUrl = "";
    
    var xmlhttp = dwXMLHttpRequest();
    xmlhttp.open('GET', document.getElementById('selCtrlLinkURL_' + sElementName).value + '&ID=' + lID);
    xmlhttp.onreadystatechange=function() 
    {
      if (xmlhttp.readyState==4)
      {
        if (xmlhttp.status == 200)
        {
          var sResponse = xmlhttp.responseText;
          if (sResponse.length > 0)
          {
            document.getElementById('selCtrlDisplay_' + sElementName).innerHTML= '<a href="' + sResponse + '">' + sDisplayName + '</a>';
          }
        }
      }
    }
    xmlhttp.send('');      

    var dwSelectControlSuggestText = document.getElementById('selCtrlSuggest_' + sElementName + '_text');
    if (dwSelectControlSuggestText != null)
    {
      dwSelectControlSuggestText.style.display = 'none';
    }  
}

function dwBlurSuggestion(sElementName)
{
  var inputSuggest = document.getElementById('selCtrlSuggest_' + sElementName + '_text');
  if (inputSuggest != null) 
  {
    if (inputSuggest.value == '')
      dwSelectControlToggle(sElementName, false)
  }
}

function dwSelectControlClearSelection(name)
{
  document.getElementById('selCtrlVal_' + name).value=0;
  document.getElementById('selCtrlDisplay_' + name).className = "SelectControlItem";
  document.getElementById('selCtrlDisplay_' + name).innerHTML=''; 
  document.getElementById('selCtrlDisplay_' + name).style.display = 'none';
  
  var inputSuggest = document.getElementById('selCtrlSuggest_' + name + '_text');
  if (inputSuggest != null) 
  {
    inputSuggest.value = '';
    inputSuggest.style.display = 'block';
  }
  
}

function dwSelectControlToggle(sElementName, bOn)
{
  if (bOn)
  {
    document.getElementById('selCtrlDisplay_' + sElementName).style.display = 'none';
    var inputSuggest = document.getElementById('selCtrlSuggest_' + sElementName + '_text');
    if (inputSuggest != null) 
    {
      inputSuggest.value = '';
      inputSuggest.style.display = 'block';
      inputSuggest.focus();
    }  
  }
  else
  {
    var inputSuggest = document.getElementById('selCtrlSuggest_' + sElementName + '_text');
    var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');
    dwSelectControlSuggest_div.innerHTML = ''; 
    dwSelectControlSuggest_div.style.display = 'none'; 
    var selectedID = document.getElementById('selCtrlVal_' + sElementName).value;     
    if (selectedID == '' || selectedID == '0') 
    {            
      if (inputSuggest != null) 
        inputSuggest.value = '';         
    }
    else 
    {
      document.getElementById('selCtrlDisplay_' + sElementName).style.display = 'block';      
      if (inputSuggest != null) 
      {
        inputSuggest.value = '';
        inputSuggest.style.display = 'none';
      } 
    }      
  }
}

function dwGetCaretPosition(element) {  
  if (element.selectionStart) { 
    return element.selectionStart; 
  } else if (document.selection) { 
    element.focus(); 

    var r = document.selection.createRange(); 
    if (r == null) { 
      return 0; 
    } 

    var re = element.createTextRange(), 
        rc = re.duplicate(); 
    re.moveToBookmark(r.getBookmark()); 
    rc.setEndPoint('EndToStart', re); 

    return rc.text.length; 
  }  
  return 0; 
}

function dwInsertTextAtCaretPosition(elementName, text) {
  var textArea = document.getElementById(elementName);
  var currentPos = dwGetCaretPosition(textArea);
  var strLeft = textArea.value.substring(0, currentPos);
  var strRight = textArea.value.substring(currentPos, textArea.value.length);
  textArea.value = strLeft + text + strRight;
}

function dwInsertTextIntoTextArea(elementName, text) {
  var textArea = document.getElementById(elementName);
  var currentPos = dwGetCaretPosition(textArea);
  var strLeft = textArea.value.substring(0, currentPos);
  var strRight = textArea.value.substring(currentPos, textArea.value.length);
  textArea.value = strLeft + text + strRight;
}

function dwWCSearchSuggestKeyDown(peEvent, sUrl, bFromSearchPage)
{
  dwWCSearchSuggest(peEvent, sUrl, bFromSearchPage, true)
}

function dwWCSearchSuggestKeyUp(peEvent, sUrl, bFromSearchPage)
{
  dwWCSearchSuggest(peEvent, sUrl, bFromSearchPage, false)
}

function dwWCSearchSuggest(peEvent, sUrl, bFromSearchPage, pbPress)
{
  var eEvent = peEvent || window.event; 
  var pressedKey = eEvent.keyCode;  
  var dwWCSearchSuggest_div = document.getElementById('dwWCSearchSuggest');
	var targ = null;
  if (eEvent.target) targ = eEvent.target;
	else if (eEvent.srcElement) targ = eEvent.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
		
  var searchText = "";  
  switch (pressedKey)
  {
    case 13:
      // Enter
      if (bFromSearchPage)
      {
        document.getElementById('SearchButton').click();
      }
      else
      {
        var a = document.getElementById('SearchResults');
        if (a.click) {
         a.click()
         } else if (document.createEvent) {
           var evt = document.createEvent("MouseEvents");
           evt.initMouseEvent("click", true, true, window, 0,0,0,0,0, false, false, false, false, 0, null);
           var allowDefault = a.dispatchEvent(evt);
         }
         
        event.returnValue = false;
      }
      break;  
    case 9:        
    case 27:
      // Escape
      dwWCSearchToggle(false);
      break;
    default:
      
      if (!pbPress)
      {
        searchText = targ.value;        
        dwWCSearchSuggest_div.innerHTML = "";
        if (searchText.length > 0) 
        {
          var xmlhttp = dwXMLHttpRequest();
          xmlhttp.open('GET', sUrl + '&S=' + searchText + '&!NC=' + (new Date()).getTime());
          xmlhttp.onreadystatechange=function() 
          {
            if (xmlhttp.readyState==4)
            {
              var sResponse = xmlhttp.responseText;
              if (sResponse.length == 0)
              {
                sResponse = 'No Results found';
              }
              dwWCSearchSuggest_div.innerHTML = sResponse; 
              dwWCSearchSuggest_div.style.display = 'block';
              elPos = dwGetElementPosition(targ);
              dwWCSearchSuggest_div.style.left = elPos.x;
              dwWCSearchSuggest_div.style.top = elPos.y + targ.offsetHeight;
              dwWCSearchSuggest_div.style.width = targ.offsetWidth;
            }
          }
          xmlhttp.send('');  
        }
        else
        {
          dwWCSearchSuggest_div.style.display = 'none';
        }
    }
  }
}

function dwWCSelectSuggestion(id, displayName)
{
  var dwWCSearchSuggest_div = document.getElementById('dwWCSearchSuggest');  
  dwWCSearchSuggest_div.style.display = 'none';
  dwWCSearchSuggest_div.innerHTML = "";

  dwWCSearchMakeSelection(id, displayName);
}

function dwWCSearchMakeSelection(lID, sDisplayName)
{
    var sUrl = document.getElementById('WCSearchFetchURL').value;    
    var xmlhttp = dwXMLHttpRequest();
    xmlhttp.open('GET', sUrl + '&ID=' + lID);
    xmlhttp.onreadystatechange=function() 
    {
      if (xmlhttp.readyState==4)
      {
        var sResponse = xmlhttp.responseText;
        if (sResponse.length > 0)
        {
          // Relocate to URL that is fetched - this will need to be changing once we do the updated ObjectDetailsURL change
          window.location = sResponse
        }

      }
    }
    xmlhttp.send('');      
}

function dwWCSearchToggle(bOn)
{
  var inputSuggest = document.getElementById('dwWCSearchSuggest_text');
  if (bOn)
  {
    if (inputSuggest != null) 
    {
      inputSuggest.value = '';
      inputSuggest.style.display = 'block';
      inputSuggest.focus();
    }  
  }
  else
  {    
    var dwSelectControlSuggest_div = document.getElementById('dwWCSearchSuggest');
    dwSelectControlSuggest_div.innerHTML = ''; 
    dwSelectControlSuggest_div.style.display = 'none';  
    if (inputSuggest != null) 
    {
      inputSuggest.value = '';
      inputSuggest.style.display = 'none';
    }    
  }
}

var lFieldCount = 0;
var sSelFieldName = "";
var lSelFieldType = 0;
var sSelDisplayName = "";
var lSelFieldCode = 0;
var sSelListData = "";
var sSelSearchItem = "";
var sSelSearchDisplayItem = "";

var DisplayName = new Array();
var FieldName = new Array();
var lFieldType = new Array();
var ListData = new Array();


function dwAdvSearchInitSelected(objDropDown) {
  if ((objDropDown.value*1) > 0)
  { 
    sSelDisplayName=DisplayName[(objDropDown.value*1)] 
    lSelFieldCode=(FieldName[(objDropDown.value*1)].substr(0, 1))*1;
    sSelFieldName=FieldName[(objDropDown.value*1)].substr(1);
    lSelFieldType=lFieldType[(objDropDown.value*1)];
    switch (lSelFieldType) 
    {
      case 1000:
      case 1100:
      case 3000:
      case 3001:                
        sSelListData=ListData[(objDropDown.value*1)];
    }
  }
  else
  {
    sSelDisplayName=''; 
    lSelFieldCode=0; 
    sSelFieldName=''; 
    lSelFieldType=0; 
  }
}

function dwAdvSearchFieldSelected(objDropDown, pIndex)
{
  var operator;
  var sField = "";
  var lType = 0;
  
  if (pIndex != 999) 
  {
    objDropDown.value = 0;
  }

  operator = document.getElementById('cboOperator').value;
  document.getElementById('cboTrueFalse').style.display='none';
  document.getElementById('Value1').style.display='none';
  document.getElementById('Value2').style.display='none';
  document.getElementById('dtpTable1').style.display='none';
  document.getElementById('dtpTable2').style.display='none';
  document.getElementById('cboListDiv').style.display='none';

  dwAdvSearchInitSelected(objDropDown);

  if (lSelFieldCode == 1)
  {
    switch (lSelFieldType)
    {
      case 3:
      case 5:
      case 8:
      case 200:
      case 220:
        // Long, Double, Text, Memo
        document.getElementById('Value1').style.display='block';
        if (operator == 6)
        {
          document.all('Value2').style.display='block';
        }
        break;
      case 7:
        // Date
        document.getElementById('dtpTable1').style.display='block';
        if (operator == 6)
        {
          document.all('dtpTable2').style.display='block';
        }        
        break;
      case 11:
        // Boolean
        document.getElementbyId('cboTrueFalse').style.display='block';
        document.getElementById('cboOperator').value=0;
        break;
      case 1000:
      case 1100:
      case 3000:
      case 3001:
        // dwftList = 1100, dwftLink = 1000
        document.getElementById('cboListDiv').style.display='block';
        document.getElementById('cboOperator').value=0;
        dwAdvSearchSelect_cboList();
        break;
    }
  }
  else if ((lSelFieldCode == 3) || (lSelFieldCode == 2) || (lSelFieldCode == 9)) 
  {
    switch (lSelFieldType)
    {    
      case 3:
      case 5:
      case 8:
      case 200:
      case 220:
        // dwftLong, dwftDouble, dwftText
        document.getElementById('Value1').style.display='block';
        if (operator==6)
          document.getElementById('Value2').style.display='block';    
        break;
      case 7:
        // dwftDate
        document.getElementById('dtpTable1').style.display='block';
        if (operator==6)
          document.getElementById('dtpTable2').style.display='block';
        break;
      case 11:
        // dwftBoolean
        document.getElementById('cboTrueFalse').style.display='block';
        document.getElementById('cboOperator').value=0;
        break;
      case 1001:
        // dwftLinkADO
        break;
      case 1000:
      case 1100:
      case 3000:
      case 3001:
        // dwftList = 1100, dwftLink = 1000
        document.getElementById('cboListDiv').style.display='block';
        document.getElementById('cboOperator').value=0;
        dwAdvSearchSelect_cboList();
        break;
      case 1099:
        // dwftLinkADO
        document.getElementById('selSearchItem' + (objDropDown.value - 1)).style.display='block';
        document.getElementById('cboOperator').value=0;
        sSelSearchItem = document.getElementById('selItem' + (objDropDown.value - 1));
        sSelSearchDisplayItem = 'selCtrlDisplay_selItem' + (objDropDown.value - 1);
        break;
    }
  }
}

function dwAdvSearchSelect_cboList() 
{
  if (cboListDiv != null) { cboListDiv.innerHTML='<select name="cboList" id="cboList">' + sSelListData + '</select>'; }
}

function dwAdvSearchOperatorSelected(objOperator)
{
  var lIndex = 0;
  
  // Hide all fields
  document.getElementById('cboTrueFalse').style.display='none';
  document.getElementById('Value1').style.display='none';
  document.getElementById('Value2').style.display='none';
  document.getElementById('dtpTable1').style.display='none';
  document.getElementById('dtpTable2').style.display='none';
  
  lIndex = document.getElementById('cboField').value;
  document.getElementById('cboListDiv').style.display='none';
  dwAdvSearchInitSelected(document.getElementById('cboField'));

  if ((lSelFieldType == 11) || (lSelFieldType == 1099))
  {
    document.getElementById('cboOperator').value = 0;
  }
  
  if (objOperator.value == '6')
  {
    // operator selected is 'Between'
    if (lSelFieldCode == 1)
    {
      switch (lSelFieldType)
      {
        case 3:
        case 5:
        case 8:
        case 200:
        case 220:
          // Long, Double, Text, Memo
          document.getElementById('Value1').style.display='block';
          document.getElementById('Value2').style.display='block';
          break;
        case 7:
          // dwftDate
          document.getElementById('dtpTable1').style.display='block';
          document.getElementById('dtpTable2').style.display='block';
          break;
      }
    }
    else if ((lSelFieldCode == 3) || (lSelFieldCode == 2) || (lSelFieldCode == 9))
    {
      switch (lSelFieldType)
      {
        case 3:
        case 5:
        case 8:
        case 200:
        case 220:
          // Long, Double, Text, Memo
          document.getElementById('Value1').style.display='block';
          document.getElementById('Value2').style.display='block';
          break;
        case 7:
          // dwftDate
          // alert('lSelFieldCode=' + lSelFieldCode + ':' + lSelFieldType);
          document.getElementById('dtpTable1').style.display='block';
          document.getElementById('dtpTable2').style.display='block';
          break;
        case 11:
          // dwftBoolean
          document.getElementById('cboTrueFalse').style.display='block';
          break;
      }    
    }
  }
  else
  {
    if (lSelFieldCode == 1)
    {
      switch (lSelFieldType)
      {
        case 3:
        case 5:
        case 8:
        case 200:
        case 220:
          // Long, Double, Text, Memo
          document.getElementById('Value1').style.display = 'block';
          break;
        case 7:
          // dwftDate
          document.getElementById('dtpTable1').style.display='block';
          break; 
      }
    }
    else
    {
      switch (lSelFieldType)
      {
        case 3:
        case 5:
        case 8:
        case 200:
        case 220:
          // dwftLong, dwftDouble, dwftText,dwftMemo
          document.getElementById('Value1').style.display='block';
          break;
        case 7:
          // dwftDate
          document.getElementById('dtpTable1').style.display='block';
          break;
        case 11:
          // Boolean
          document.getElementById('cboTrueFalse').style.display='block';
          break;
        case 1000:
        case 1100:
          // dwftList
          document.getElementById('cboListDiv').style.display='block';
          break;
        case 3000:
          // dwftDirectUser
          document.getElementById('cboListDiv').style.display='block';
          break;
        case 3001:
          // dwftDirectGroup
          document.getElementById('cboListDiv').style.display='block';
          break;
      }
    }
  }
}  

function dwAdvSearchAddFieldToList()
{
  var oPermTable = null;
  var oCell = null;
  var oRow = null;
  var lIndex = 0;
  var lOperator = 0;
  var sOp = '';
  var sValue1 = '';
  var sValue2 = '';
  var sHTag = '';
  var sSQL = '';
  
  dwAdvSearchInitSelected(document.getElementById('cboField'));
  lIndex = document.getElementById('cboField').value;
  lOperator = (document.getElementById('cboOperator').value*1);
   
  switch (lOperator)
  {
    case 0:
      sOp = ' = ';
      break;
    case 1:
      sOp = ' <> ';
      break;
    case 2:
      sOp = ' > ';
      break;
    case 3:
      sOp = ' < ';
      break;
    case 4:
      sOp = ' <= ';
      break;
    case 5:
      sOp = ' >= ';
      break;
    case 6:
      sOp = ' Between ';
      break;
  }
  
  if (lOperator == 6)
  {
    // Comparison between two different values
    if (lSelFieldCode == 1)
    {
      switch (lSelFieldType)
      {
        case 3:
        case 5:
        case 8:
        case 200:
        case 220:
          // dwftLong, dwftDouble, dwftText, dwftMemo
          sValue1 = document.getElementById('Value1').value;
          sValue2 = document.getElementById('Value2').value;
          break;
        case 7:
          // dwftDate
          sValue1 = document.getElementById('dtp1').value;
          sValue2 = document.getElementById('dtp2').value;
          break;          
      }
    }
    else if ((lSelFieldCode ==2) || (lSelFieldCode == 3) || (lSelFieldCode == 9))
    {
      switch (lSelFieldType)
      {
        case 3:
        case 5:
        case 8:
        case 200:
        case 220:
          // dwftLong, dwftDouble, dwftText, dwftMemo
          sValue1 = document.getElementById('Value1').value;
          sValue2 = document.getElementById('Value2').value;
          break;
        case 7:
          // dwftDate
          sValue1 = document.getElementById('dtp1').value;
          sValue2 = document.getElementById('dtp2').value;
          break;
      }
    }
  }
  else
  {
    if (lSelFieldCode == 1)
    {
      switch (lSelFieldType)
      {
        case 3:
        case 5:
        case 8:
        case 200:
        case 220:
          // dwftLong, dwftDouble, dwftText, dwftMemo
          sValue1 = document.getElementById('Value1').value;
          break;
        case 7:
          // dwftDate
          sValue1 = document.getElementById('dtp1').value;
          break;          
      }
    }
    else
    {
      switch (lSelFieldType)
      {
        case 3:
        case 5:
        case 8:
        case 200:
        case 220:
          // dwftLong, dwftDouble, dwftText, dwftMemo
          sValue1 = document.getElementById('Value1').value;
          break;
        case 7:
          // dwftDate
          sValue1 = document.getElementById('dtp1').value;
          break;   
        case 11:
          // dwftBoolean
          sValue1 = document.getElementById('cboTrueFalse').value;
          break;
        case 1099:
          // dwftLinkOT
          sValue1 = document.getElementById(sSelSearchItem).value;
          break;
        case 1000:
        case 1100:
        case 3000:
        case 3001:
          // dwftList,dwftDirectUser,dwftDirectGroup
          sValue1 = document.getElementById('cboList').options(document.getElementById('cboList').selectedIndex).value;
          break;
      }      
    }
  }
  
  oPermTable = document.getElementById('QueryList');
  lFieldCount++;
  document.getElementById('FieldCount').value = lFieldCount;

  oRow = oPermTable.insertRow();
  oCell = oRow.insertCell();
  if (lFieldCount > 1)
  {
    sSQL = 'AND '
  }
  
  if (lOperator == 6)
  {
    if (lSelFieldType == 11)
    {
      if (sValue1) { sVal1 = 'True' } else { sVal1 = 'False'; }
      if (sValue2) { sVal2 = 'True'; }
      sSQL += sSelDisplayName + ' >= ' + sVal1 + ' And ' + sSelDisplayName + ' <= ' + sVal2;
    }
    else
    {
      sSQL += sSelDisplayName + ' >= ' + sValue1 + ' And ' + sSelDisplayName + ' <= ' + sValue2;
    }
  }
  else
  {
    if (lSelFieldType == 11)
    {
      if (sValue1) { sVal1 = 'True'; } else { sVal1 = 'False'; }
      sSQL += sSelDisplayName + sOp & sValue1;
    }
    else if (lSelFieldType == 1099)
    {
      sSQL += sSelDisplayName + sOp + document.getElementById(sSelSearchDisplayItem).innerHTML;
    }
    else if (lSelFieldType == 1000)
    {
      sSQL += sSelDisplayName + sOp + document.getElementById('cboList').options(document.getElementById('cboList').selectedIndex).text;
    }
    else if (lSelFieldType == 1100)
    {
      sSQL += sSelDisplayName + sOp + document.getElementById('cboList').options(document.getElementById('cboList').selectedIndex).text;
    }
    else 
    {
      sSQL += sSelDisplayName + sOp + sValue1;
    }
  } 
  
  oCell.innerHTML = sSQL;
  oCell.className = 'DataRow';
  
  sHTag = '<input type="hidden" name="F' + lFieldCount + '" value="' + sSelFieldName + '">';
  sHTag += '<input type="hidden" name="O' + lFieldCount + '" value="' + sOp + '">';
  sHTag += '<input type="hidden" name="T' + lFieldCount + '" value="' + lSelFieldType + '">';
  sHTag += '<input type="hidden" name="FC' + lFieldCount + '" value="' + lSelFieldCode + '">';
  sHTag += '<input type="hidden" name="V1' + lFieldCount + '" value="' + sValue1 + '">';
  sHTag += '<input type="hidden" name="V2' + lFieldCount + '" value="' + sValue2 + '">';

  document.getElementById('fieldDetails').innerHTML += sHTag;
  document.getElementById('Value1').value = '';
  document.getElementById('Value2').value = '';
  document.getElementById('cboTrueFalse').value = 1;
  document.getElementById('dtp1').value = '';
  document.getElementById('dtp2').value = '';
  
  dwAdvSearchFieldSelected(document.getElementById('cboField'), 0);
}

function dwAdvSearchIsFieldAdded()
{
  var sField = document.getElementById('cboField').value;
  if (sField != '0')
  {
    dwAdvSearchAddFieldToList();
  }
}

function dwPopupDisplay(name, urlImages)
{  
  if (document.getElementById('dwPopupImg_' + name).getAttribute('expanded') == '1')
  {
    document.getElementById('dwPopupContent_' + name).style.display='none';
    document.getElementById('dwPopupImg_' + name).src=urlImages + 'expand.gif';
    document.getElementById('dwPopupImg_' + name).setAttribute('expanded', '0');
  }
  else
  {
    document.getElementById('dwPopupContent_' + name).style.display='block';
    document.getElementById('dwPopupImg_' + name).src=urlImages + 'collapse.gif';
    document.getElementById('dwPopupImg_' + name).setAttribute('expanded', '1');
  }
}

/* these functions are for info.asp permissions tab */
function dwRemovePermission(pCell)
{
  if (document.getElementById("cmdApplyPermissions").disabled == false)
  {
    var oTbl = document.getElementById('lstAccess');
    var oRow = pCell.parentNode;
    if (oRow.childNodes[1].firstChild.checked == true) {
      document.getElementById('lstSimple').style.display = 'none';
      document.getElementById('lstAdvanced').style.display = 'none';
    }
    oTbl.deleteRow(oRow.rowIndex);
    if (oTbl.rows.length == 0)
    {
      document.getElementById("permissionMessageTable").firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.childNodes[1].innerHTML = "There are no Permissions defined for this item.";
      document.getElementById("permissionMessageTable").style.display = "block";
    }
  }
}

function dwDisplayAccess(poCell)
{
  var oRow = poCell.parentNode;
  oRow.childNodes[1].firstChild.checked = true;
  var lLevel = oRow.childNodes[3].firstChild.value;
  
  if (lLevel == 0) {
    document.getElementById('optSimple_NoAccess').checked = true;
    document.getElementById('lstSimple').style.display = 'block';
    document.getElementById('lstAdvanced').style.display = 'none';
  } else if (lLevel == 20) {
    document.getElementById('optSimple_Viewer').checked = true;
    document.getElementById('lstSimple').style.display = 'block';
    document.getElementById('lstAdvanced').style.display = 'none';
  } else if (lLevel == 2097172) {
    document.getElementById('optSimple_ViewerUpdate').checked = true;
    document.getElementById('lstSimple').style.display = 'block';
    document.getElementById('lstAdvanced').style.display = 'none';
  } else if (lLevel == 2097174) {
    document.getElementById('optSimple_Editor').checked = true;
    document.getElementById('lstSimple').style.display = 'block';
    document.getElementById('lstAdvanced').style.display = 'none';
  } else if (lLevel == -1) {
    document.getElementById('optSimple_Administrator').checked = true;
    document.getElementById('lstSimple').style.display = 'block';
    document.getElementById('lstAdvanced').style.display = 'none';
  } else {
    var i=0;
    var lCount = document.getElementById('lstAdvanced').rows.length;
    for (i=0; i<lCount; i++)
    {
      var wocheck;
      var wohidden;
      wocheck = document.getElementById('chkAccess_' + i);
      wohidden = document.getElementById('txtHidden_' + i);
      wocheck.checked = ((lLevel & wohidden.value) == wohidden.value);
    }
    document.getElementById('lstSimple').style.display = 'none';
    document.getElementById('lstAdvanced').style.display = 'block';
  }
}

function dwSelectPermissionRow(poCell)
{
  if (document.getElementById("cmdApplyPermissions").disabled == false) 
  {
    var oRow = poCell.parentNode;
    var oOpt = oRow.firstChild.firstChild;
    oOpt.checked = true;
    dwSimplePermissionClick(oOpt);
  }
}

function dwSimplePermissionClick(poOpt)
{
  if (document.getElementById("cmdApplyPermissions").disabled == false) 
  {
    var tblAccess = document.getElementById("lstAccess");
    var lRow = 0;
    for (lRow = 0 ; lRow < tblAccess.rows.length; lRow++)
    {
      var oOpt = tblAccess.rows[lRow].childNodes[1].firstChild;
      if (oOpt.checked == true)
      {
        tblAccess.rows[lRow].childNodes[3].firstChild.value = poOpt.value;
        tblAccess.rows[lRow].childNodes[4].innerHTML = poOpt.parentNode.parentNode.childNodes[1].innerHTML;
        lRow = tblAccess.rows.length;
      }
    }
  }
}

function dwAddPermissionRow(psIcon, psDelete, psScripts, psKeyPrefix)
{
  if (document.getElementById("cmdApplyPermissions").disabled == true)
  {
    if (confirm("Adding a permission to this item will remove all inherited permissions\nDo you want to continue?"))
    {
      document.getElementById("cmdApplyPermissions").disabled = false;
      while (document.getElementById("lstAccess").rows.length > 0)
      {
        document.getElementById("lstAccess").deleteRow(0);
      }
      document.getElementById("optSimple_NoAccess").disabled = false;
      document.getElementById("optSimple_Viewer").disabled = false;
      document.getElementById("optSimple_ViewerUpdate").disabled = false;
      document.getElementById("optSimple_Editor").disabled = false;
      document.getElementById("optSimple_Administrator").disabled = false;
      document.getElementById("permissionMessageTable").style.display = "none";
    }
    else
    {
      return;
    }
  }
  
  var myTable = document.getElementById("lstAccess");
  
  if (myTable.rows.length == 0)
  {
    document.getElementById("permissionMessageTable").style.display = "none";
  }
  
  var myRow = myTable.insertRow(-1);
  var sIDName = 'newLicense_' + new Date().getTime();
  if ((myTable.rows.length % 2) == 0)
  {
    myRow.className = 'OddRow';
    myRow.onmouseover = function(){this.className="OddRowHover";};
    myRow.onmouseout = function(){this.className="OddRow";};
  }
  else
  {
    myRow.className = 'EvenRow';
    myRow.onmouseover = function(){this.className="EvenRowHover";};
    myRow.onmouseout = function(){this.className="EvenRow";};
  }
  
  var myCell1 = myRow.insertCell(-1); // icon for type
  myCell1.className = 'IconCell';
  myCell1.onclick = function(){dwDisplayAccess(this);};
  myCell1.innerHTML = '<img class="Icon" border="0" src="' + psIcon + '" >';

  var myCell2 = myRow.insertCell(-1); // radio button indicating row is selected
  myCell2.className = 'IconCell';
  myCell2.onclick = function(){dwDisplayAccess(this);};
  var myRadio = document.createElement('input');
  myRadio.type = 'radio';
  myRadio.name = 'optSE';
  myCell2.appendChild(myRadio);  
  
  var myCell3 = myRow.insertCell(-1); // input search box - gets turned into the displayname of the security item
  myCell3.className = 'DataCell';
  myCell3.onclick = function(){dwDisplayAccess(this);};
  var myInput = document.createElement('input');
  myInput.type = 'text';
  myInput.className = 'Text';
  myInput.id = 'selCtrlSuggest_' + sIDName + '_text';
  myInput.name = sIDName;
  function dwPermissionSuggestKeyDownClosure(event) { dwPermissionSuggestKeyDown(event, sIDName, psScripts) }
  if (myInput.addEventListener){
    myInput.addEventListener("keydown", dwPermissionSuggestKeyDownClosure, false);
  } else if (myInput.attachEvent){
    myInput.attachEvent("onkeydown", dwPermissionSuggestKeyDownClosure);
  }
  myInput.onBlur = function(){dwBlurSuggestion(this.name);}
  myCell3.appendChild(myInput);

  var myCell4 = myRow.insertCell(-1); // initially blank - gets turned into the security item key
  myCell4.className = 'IconCell';
  myCell4.onclick = function(){dwDisplayAccess(this);};
  var myHiddenInput = document.createElement('input');
  myHiddenInput.type = 'hidden';
  myHiddenInput.name = 'hdnPermissionKey_' + psKeyPrefix;
  myHiddenInput.value = "0";
  myCell4.appendChild(myHiddenInput); // prefix for a license permission

  var myCell6 = myRow.insertCell(-1); // initially "No Access" - gets turned into the access level Description
  myCell6.className = 'DataCell';
  myCell6.onclick = function(){dwDisplayAccess(this);};
  myCell6.innerHTML = 'No access';

  var myCell7 = myRow.insertCell(-1); // delete icon
  myCell7.className = 'IconCell';
  myCell7.onclick = function(){dwRemovePermission(this);};
  myCell7.innerHTML = '<img title="Remove Permission" class="Icon" alt="Remove Permission" src="' + psDelete + '" border="0" complete="complete"/>';
}

var gPermissionSuggestTimer;
var gEvent;
function dwPermissionSuggestKeyDown(event, elementName, url)
{
  gEvent = event; // || window.event;
  gPressedKeyCode = gEvent.keyCode;
  gElementName = elementName;
  gUrl = url;
   
  if (gPressedKeyCode == 13) {
    clearTimeout(gPermissionSuggestTimer);
    dwPermissionSuggest();
    event.returnValue = false;
  } else {
    clearTimeout(gPermissionSuggestTimer);
    gPermissionSuggestTimer = setTimeout(dwPermissionSuggest, 100);
  }
}

function dwPermissionSuggest()
{
  var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');

  switch (gPressedKeyCode)
  {
    case 9:
      // Tab
      var lChildCount = dwSelectControlSuggest_div.getElementsByTagName('div').length;
      if (lChildCount > 0)
        dwSelectPermission(dwSelectControlSuggest_div.firstChild.id, gElementName, dwSelectControlSuggest_div.firstChild.innerHTML);  
      break;
    case 13:
      // Enter
      var lChildCount = dwSelectControlSuggest_div.getElementsByTagName('div').length;
      if (lChildCount > 0)
        dwSelectPermission(dwSelectControlSuggest_div.firstChild.id, gElementName, dwSelectControlSuggest_div.firstChild.innerHTML);
      break;      
    case 27:
      // Escape

      // hide the popup div
      var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');
      dwSelectControlSuggest_div.style.display = 'none';
      dwSelectControlSuggest_div.innerHTML = "";
    
      // remove the row
      dwRemovePermission(document.getElementById('selCtrlSuggest_' + gElementName + '_text').parentNode);
        
      break;
    default:
      var dwSelectControlSuggestText = document.getElementById('selCtrlSuggest_' + gElementName + '_text');
      var searchText = dwSelectControlSuggestText.value;
      dwSelectControlSuggest_div.innerHTML = "";
      if (searchText.length > 0) 
      {
        var xmlhttp = dwXMLHttpRequest();
        
        xmlhttp.open('GET', gUrl + '&S=' + searchText + '&N=' + gElementName + '&timestamp=' + new Date().getTime() );
        xmlhttp.onreadystatechange=function() 
        {
          if (xmlhttp.readyState==4)
          {
            var sResponse = xmlhttp.responseText;
            if (sResponse.length == 0)
            {
              sResponse = 'No Results found';
            }
            dwSelectControlSuggest_div.innerHTML = sResponse; 
            dwSelectControlSuggest_div.style.display = 'block';
            elPos = dwGetElementPosition(dwSelectControlSuggestText);
            dwSelectControlSuggest_div.style.left = elPos.x;
            dwSelectControlSuggest_div.style.top = elPos.y + dwSelectControlSuggestText.offsetHeight;
            dwSelectControlSuggest_div.style.width = dwSelectControlSuggestText.offsetWidth;
          }
        }
        xmlhttp.send('');  
      }
      else
      {
        dwSelectControlSuggest_div.style.display = 'none';
      }
  }
  gPressedKeyCode = null;
  gElementName = "";
  gUrl = ""; 
}

function dwSelectPermission(id, sElementName, displayName)
{
  // hide the popup div
  var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');
  dwSelectControlSuggest_div.style.display = 'none';
  dwSelectControlSuggest_div.innerHTML = "";

  // remove the search input box
  var dwSelectControlSuggestText = document.getElementById('selCtrlSuggest_' + sElementName + '_text');
  var myCell = dwSelectControlSuggestText.parentNode;
  var myRow = myCell.parentNode;
    
  // set the cell values
  myRow.childNodes[2].innerHTML = displayName;
  if (id == 0)
  {
    if (displayName == 'Owner')
    {
      myRow.childNodes[3].firstChild.name = 'hdnPermissionKey_0-3';
    }
    else if (displayName == 'Anonymous')
    {
      myRow.childNodes[3].firstChild.name = 'hdnPermissionKey_0-2';
    }
    else if (displayName == 'Everyone')
    {
      myRow.childNodes[3].firstChild.name = 'hdnPermissionKey_0-1';
    }
  }
  else
    myRow.childNodes[3].firstChild.name += id;
}



function dwAddGroupToUser(psIcon, psScripts)
{
  var myTable = document.getElementById("tblItems");
  var myRow = myTable.insertRow(-1);
  if ((myTable.rows.length % 2) == 0)
  {
    myRow.className = 'OddRow';
    myRow.onmouseover = function(){this.className="OddRowHover";};
    myRow.onmouseout = function(){this.className="OddRow";};
  }
  else
  {
    myRow.className = 'EvenRow';
    myRow.onmouseover = function(){this.className="EvenRowHover";};
    myRow.onmouseout = function(){this.className="EvenRow";};
  }

  var myCell1 = myRow.insertCell(-1); // check box
  myCell1.className = "SelectCell";
  var myCheckBox = document.createElement("input");
  myCheckBox.type = "checkbox";
  myCheckBox.name = "dwSelVal";
  myCheckBox.className = "CheckBox";
  myCheckBox.checked = true;
  myCheckBox.value = 0;
  myCell1.appendChild(myCheckBox);
    
  var myCell2 = myRow.insertCell(-1); // icon for group
  myCell2.className = 'IconCell';
  myCell2.innerHTML = '<img class="Icon" border="0" src="' + psIcon + '" >';

  var sIDName = 'NewGroup_' + new Date().getTime();
  var myCell3 = myRow.insertCell(-1); // input search box - gets turned into the displayname of the group
  myCell3.className = 'DataCell';
  var myInput = document.createElement('input');
  myInput.type = 'text';
  myInput.className = 'Text';
  myInput.id = 'selCtrlSuggest_' + sIDName + '_text';
  myInput.name = sIDName;
  function dwUserGroupSuggestKeyDownClosure(event) { dwUserGroupSuggestKeyDown(event, sIDName, psScripts) }
  if (myInput.addEventListener){
    myInput.addEventListener("keydown", dwUserGroupSuggestKeyDownClosure, false);
  } else if (myInput.attachEvent){
    myInput.attachEvent("onkeydown", dwUserGroupSuggestKeyDownClosure);
  }
  myInput.onBlur = function(){dwBlurSuggestion(this.name);}
  myCell3.appendChild(myInput);

  var myCell4 = myRow.insertCell(-1); // initially blank - gets turned into the group description
  myCell4.className = 'DataCell';
  myCell4.innerHTML = '';
}
var gUserGroupSuggestTimer;
function dwUserGroupSuggestKeyDown(event, elementName, url)
{
  gEvent = event; // || window.event;
  gPressedKeyCode = gEvent.keyCode;
  gElementName = elementName;
  gUrl = url;
   
  if (gPressedKeyCode == 13) {
    clearTimeout(gUserGroupSuggestTimer);
    dwUserGroupSuggest();
    event.returnValue = false;
  } else {
    clearTimeout(gUserGroupSuggestTimer);
    gUserGroupSuggestTimer = setTimeout(dwUserGroupSuggest, 100);
  }
}

function dwUserGroupSuggest()
{
  var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');

  switch (gPressedKeyCode)
  {
    case 9:
      // Tab
      var lChildCount = dwSelectControlSuggest_div.getElementsByTagName('div').length;
      if (lChildCount > 0)
        dwSelectUserGroup(dwSelectControlSuggest_div.firstChild.id, gElementName, dwSelectControlSuggest_div.firstChild.innerHTML, dwSelectControlSuggest_div.firstChild.description);  
      break;
    case 13:
      // Enter
      var lChildCount = dwSelectControlSuggest_div.getElementsByTagName('div').length;
      if (lChildCount > 0)
        dwSelectUserGroup(dwSelectControlSuggest_div.firstChild.id, gElementName, dwSelectControlSuggest_div.firstChild.innerHTML, dwSelectControlSuggest_div.firstChild.description);
      break;      
    case 27:
      // Escape

      // hide the popup div
      var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');
      dwSelectControlSuggest_div.style.display = 'none';
      dwSelectControlSuggest_div.innerHTML = "";
    
      // remove the row
      document.getElementById("tblItems").deleteRow(document.getElementById('selCtrlSuggest_' + gElementName + '_text').parentNode.parentNode.rowIndex);
        
      break;
    default:
      var dwSelectControlSuggestText = document.getElementById('selCtrlSuggest_' + gElementName + '_text');
      var searchText = dwSelectControlSuggestText.value;
      dwSelectControlSuggest_div.innerHTML = "";
      if (searchText.length > 0) 
      {
        var xmlhttp = dwXMLHttpRequest();
        
        xmlhttp.open('GET', gUrl + '&S=' + searchText + '&N=' + gElementName + '&timestamp=' + new Date().getTime() );
        xmlhttp.onreadystatechange=function() 
        {
          if (xmlhttp.readyState==4)
          {
            var sResponse = xmlhttp.responseText;
            if (sResponse.length == 0)
            {
              sResponse = 'No Results found';
            }
            dwSelectControlSuggest_div.innerHTML = sResponse; 
            dwSelectControlSuggest_div.style.display = 'block';
            elPos = dwGetElementPosition(dwSelectControlSuggestText);
            dwSelectControlSuggest_div.style.left = elPos.x;
            dwSelectControlSuggest_div.style.top = elPos.y + dwSelectControlSuggestText.offsetHeight;
            dwSelectControlSuggest_div.style.width = dwSelectControlSuggestText.offsetWidth;
          }
        }
        xmlhttp.send('');  
      }
      else
      {
        dwSelectControlSuggest_div.style.display = 'none';
      }
  }
  gPressedKeyCode = null;
  gElementName = "";
  gUrl = ""; 
}
function dwSelectUserGroup(id, sElementName, displayName, description)
{
  // hide the popup div
  var dwSelectControlSuggest_div = document.getElementById('dwSelectControlSuggest');
  dwSelectControlSuggest_div.style.display = 'none';
  dwSelectControlSuggest_div.innerHTML = "";

  // remove the search input box
  var dwSelectControlSuggestText = document.getElementById('selCtrlSuggest_' + sElementName + '_text');
  var myCell = dwSelectControlSuggestText.parentNode;
  var myRow = myCell.parentNode;
    
  // set the cell values
  myRow.childNodes[0].firstChild.value = id;
  if (myRow.childNodes[0].firstChild.name == 'dwSelUsr')
  {
    myRow.childNodes[0].firstChild.name += id;
  } 
  else if (myRow.childNodes[0].firstChild.name == 'dwSelGrp')
  {
    myRow.childNodes[0].firstChild.name += id;
  }
  else if (myRow.childNodes[0].firstChild.name == 'dwSelMoG')
  {
    myRow.childNodes[0].firstChild.name += id;
  }
    
  myRow.childNodes[2].innerHTML = displayName;
  myRow.childNodes[3].innerHTML = description;
}
function dwAddGroupToGroup(psIcon, psScripts)
{
  var myTable = document.getElementById("tblItems");
  
  // find the last row with 1 cell and go one back - this will be the row above the Users header
  var lRow;
  var lInsertAt = -1;
  var lDeleteAt = -1;
  for (lRow=0; lRow < myTable.rows.length; lRow++)
  {
    if (myTable.rows[lRow].childNodes.length == 1)
    {
      lInsertAt = lRow-1;
    }
    if ((myTable.rows[lRow].childNodes.length == 1) && (lInsertAt == -1))
    {
      lDeleteAt = lRow;
    } 
  } 
  var myRow = myTable.insertRow(lInsertAt);
  if (lDeleteAt != -1)
  {
    myTable.deleteRow(lDeleteAt);
  }
  
  if ((myTable.rows.length % 2) == 0)
  {
    myRow.className = 'OddRow';
    myRow.onmouseover = function(){this.className="OddRowHover";};
    myRow.onmouseout = function(){this.className="OddRow";};
  }
  else
  {
    myRow.className = 'EvenRow';
    myRow.onmouseover = function(){this.className="EvenRowHover";};
    myRow.onmouseout = function(){this.className="EvenRow";};
  }

  var myCell1 = myRow.insertCell(-1); // check box
  myCell1.className = "IconCell";
  var myCheckBox = document.createElement("input");
  myCheckBox.type = "checkbox";
  myCheckBox.name = "dwSelGrp";
  myCheckBox.className = "CheckBox";
  myCheckBox.checked = true;
  myCheckBox.value = 0;
  myCell1.appendChild(myCheckBox);
    
  var myCell2 = myRow.insertCell(-1); // icon for group
  myCell2.className = 'IconCell';
  myCell2.innerHTML = '<img class="Icon" border="0" src="' + psIcon + '" >';

  var sIDName = 'NewGroup_' + new Date().getTime();
  var myCell3 = myRow.insertCell(-1); // input search box - gets turned into the displayname of the group
  myCell3.className = 'DataCell';
  var myInput = document.createElement('input');
  myInput.type = 'text';
  myInput.className = 'Text';
  myInput.id = 'selCtrlSuggest_' + sIDName + '_text';
  myInput.name = sIDName;
  function dwUserGroupSuggestKeyDownClosure(event) { dwUserGroupSuggestKeyDown(event, sIDName, psScripts) }
  if (myInput.addEventListener){
    myInput.addEventListener("keydown", dwUserGroupSuggestKeyDownClosure, false);
  } else if (myInput.attachEvent){
    myInput.attachEvent("onkeydown", dwUserGroupSuggestKeyDownClosure);
  }
  myInput.onBlur = function(){dwBlurSuggestion(this.name);}
  myCell3.appendChild(myInput);

  var myCell4 = myRow.insertCell(-1); // initially blank - gets turned into the group description
  myCell4.className = 'DataCell';
  myCell4.innerHTML = '';
}
function dwAddUserToGroup(psIcon, psScripts)
{
  var myTable = document.getElementById("tblItems");
  var myRow = myTable.insertRow(-1);
  if ((myTable.rows.length % 2) == 0)
  {
    myRow.className = 'OddRow';
    myRow.onmouseover = function(){this.className="OddRowHover";};
    myRow.onmouseout = function(){this.className="OddRow";};
  }
  else
  {
    myRow.className = 'EvenRow';
    myRow.onmouseover = function(){this.className="EvenRowHover";};
    myRow.onmouseout = function(){this.className="EvenRow";};
  }

  var myCell1 = myRow.insertCell(-1); // check box
  myCell1.className = "IconCell";
  var myCheckBox = document.createElement("input");
  myCheckBox.type = "checkbox";
  myCheckBox.name = "dwSelUsr";
  myCheckBox.className = "CheckBox";
  myCheckBox.checked = true;
  myCheckBox.value = 0;
  myCell1.appendChild(myCheckBox);
    
  var myCell2 = myRow.insertCell(-1); // icon for group
  myCell2.className = 'IconCell';
  myCell2.innerHTML = '<img class="Icon" border="0" src="' + psIcon + '" >';

  var sIDName = 'NewGroup_' + new Date().getTime();
  var myCell3 = myRow.insertCell(-1); // input search box - gets turned into the displayname of the group
  myCell3.className = 'DataCell';
  var myInput = document.createElement('input');
  myInput.type = 'text';
  myInput.className = 'Text';
  myInput.id = 'selCtrlSuggest_' + sIDName + '_text';
  myInput.name = sIDName;
  function dwUserGroupSuggestKeyDownClosure(event) { dwUserGroupSuggestKeyDown(event, sIDName, psScripts) }
  if (myInput.addEventListener){
    myInput.addEventListener("keydown", dwUserGroupSuggestKeyDownClosure, false);
  } else if (myInput.attachEvent){
    myInput.attachEvent("onkeydown", dwUserGroupSuggestKeyDownClosure);
  }
  myInput.onBlur = function(){dwBlurSuggestion(this.name);}
  myCell3.appendChild(myInput);

  var myCell4 = myRow.insertCell(-1); // initially blank - gets turned into the group description
  myCell4.className = 'DataCell';
  myCell4.innerHTML = '';
}

function dwAddMemberOfGroup(psIcon, psScripts)
{
  var myTable = document.getElementById("tblMoGs");
  // find the 1st row with 2 cells - this will be the Groups header
  var lRow;
  var lInsertAt = -1;
  var lDeleteAt = -1;
  for (lRow=0; lRow < myTable.rows.length; lRow++)
  {
    if (myTable.rows[lRow].childNodes.length == 2)
    {
      lInsertAt = lRow;
    }
    if ((myTable.rows[lRow].childNodes.length == 1) && (lInsertAt = -1))
    {
      lDeleteAt = lRow;
    } 
  } 
  var myRow = myTable.insertRow(lInsertAt);
  if (lDeleteAt != -1)
  {
    myTable.deleteRow(lDeleteAt);
  }
  if ((myTable.rows.length % 2) == 0)
  {
    myRow.className = 'OddRow';
    myRow.onmouseover = function(){this.className="OddRowHover";};
    myRow.onmouseout = function(){this.className="OddRow";};
  }
  else
  {
    myRow.className = 'EvenRow';
    myRow.onmouseover = function(){this.className="EvenRowHover";};
    myRow.onmouseout = function(){this.className="EvenRow";};
  }

  var myCell1 = myRow.insertCell(-1); // check box
  myCell1.className = "IconCell";
  var myCheckBox = document.createElement("input");
  myCheckBox.type = "checkbox";
  myCheckBox.name = "dwSelMoG";
  myCheckBox.className = "CheckBox";
  myCheckBox.checked = true;
  myCheckBox.value = 0;
  myCell1.appendChild(myCheckBox);
    
  var myCell2 = myRow.insertCell(-1); // icon for group
  myCell2.className = 'IconCell';
  myCell2.innerHTML = '<img class="Icon" border="0" src="' + psIcon + '" >';

  var sIDName = 'NewGroup_' + new Date().getTime();
  var myCell3 = myRow.insertCell(-1); // input search box - gets turned into the displayname of the group
  myCell3.className = 'DataCell';
  var myInput = document.createElement('input');
  myInput.type = 'text';
  myInput.className = 'Text';
  myInput.id = 'selCtrlSuggest_' + sIDName + '_text';
  myInput.name = sIDName;
  function dwUserGroupSuggestKeyDownClosure(event) { dwUserGroupSuggestKeyDown(event, sIDName, psScripts) }
  if (myInput.addEventListener){
    myInput.addEventListener("keydown", dwUserGroupSuggestKeyDownClosure, false);
  } else if (myInput.attachEvent){
    myInput.attachEvent("onkeydown", dwUserGroupSuggestKeyDownClosure);
  }
  myInput.onBlur = function(){dwBlurSuggestion(this.name);}
  myCell3.appendChild(myInput);

  var myCell4 = myRow.insertCell(-1); // initially blank - gets turned into the group description
  myCell4.className = 'DataCell';
  myCell4.innerHTML = '';
}
function dwComplianceAuditShowWindow(href,urlScripts,sessionID,lID,width,height) {
  var sURL = urlScripts + 'ComplianceAudit/ShowWindowName.asp?!ID=' + lID + '&!SID=' + sessionID + '&!NC=' + (new Date()).getTime();
  var xmlhttp;
  xmlhttp = dwXMLHttpRequest();
  xmlhttp.open('GET', sURL, true);
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4)
    {
      var sResponse;
      sResponse = xmlhttp.responseText;
      if ((width != 0) && (height != 0))
      { dwShowWindowSized(href, sResponse, width, height) }
      else
      { dwShowWindow(href, sResponse) }
    }
  }
  xmlhttp.send('');

}
function dwRiskShowWindow(href,urlScripts,sessionID,lID,width,height) {
  var sURL = urlScripts + 'Risk/ShowWindowName.asp?!ID=' + lID + '&!SID=' + sessionID + '&!NC=' + (new Date()).getTime();
  var xmlhttp;
  xmlhttp = dwXMLHttpRequest();
  xmlhttp.open('GET', sURL, true);
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4)
    {
      var sResponse;
      sResponse = xmlhttp.responseText;
      if ((width != 0) && (height != 0))
      { dwShowWindowSized(href, sResponse, width, height) }
      else
      { dwShowWindow(href, sResponse) }
    }
  }
  xmlhttp.send('');

}


var StandardIDs = new Array();
var StandardNames = new Array();

function dwAdvSearchAddStandardToList()
{
  var oPermTable;
  var oCell;
  var oRow;
  var Value1;
  var Val1;
  var sHTag;
  var FieldCount = 0;
  var sSQL = '';
  
  if (document.getElementById('cboStandard').value!=0)
  {
    // get the current count of queries from the length of the table
    FieldCount = document.getElementById('QueryList').rows.length;
    SelFieldCode=8;
    SelFieldType=3;
    if(document.getElementById('cboClause').value==0)
    {
      SelFieldName='StandardID';
      SelDisplayName='Standard';
      Value1=StandardIDs[document.getElementById('cboStandard').value];
      Val1=StandardNames[document.getElementById('cboStandard').value];
    } 
    else 
    {
      SelFieldName='ClauseID';
      SelDisplayName='Clause';
      Value1=ClauseIDs[document.getElementById('cboClause').value];
      Val1=ClauseNames[document.getElementById('cboClause').value];
    }
    sHTag  = '<input type=hidden name=F' + FieldCount + ' value=' + SelFieldName + '>';
    sHTag += '<input type=hidden name=O' + FieldCount + ' value="=">';
    sHTag += '<input type=hidden name=T' + FieldCount + ' value=' + SelFieldType + '>';
    sHTag += '<input type=hidden name=FC' + FieldCount + ' value=' + SelFieldCode + '>';
    sHTag += '<input type=hidden name=V1' + FieldCount + ' value=' + Value1 + '>';
    sHTag += '<input type=hidden name=V2' + FieldCount + ' value="">';
    sSQL = SelDisplayName + ' = ' + Val1;
        
    if (document.getElementById('QueryList').innerHTML.toUpperCase().indexOf(sSQL.toUpperCase()) == -1)
    {
      document.getElementById('fieldDetails').innerHTML += sHTag;
      oPermTable=document.getElementById('QueryList');
      document.getElementById('FieldCount').value = FieldCount;
      oRow=oPermTable.insertRow();
      oCell=oRow.insertCell();
      if(FieldCount > 1)
      {
        sSQL='AND ' + sSQL
      }
      
      oCell.innerHTML=sSQL;
      oCell.className='DataRow';
    }
  }
}
        
function dwAdvSearchStandardSelected(objStandard, sUrl, sGUID)
{
  var sResult;
  var sClauseNames;
  var sClauseIDs;
  var xmlhttp = dwXMLHttpRequest();
  xmlhttp.open('GET',sUrl + '&!ID=' + StandardIDs[objStandard.value] + '&GUID=' + sGUID,false);
  xmlhttp.setRequestHeader('pragma','no-cache');
  xmlhttp.setRequestHeader('Cache-Control','no-cache');
  xmlhttp.send('');
  sResult=xmlhttp.responseText;
  sClauseNames = '' + sResult.split('|')[0];
  sClauseIDs = '' + sResult.split('|')[1];
  ClauseIDs = sClauseIDs.split('^');
  ClauseNames = sClauseNames.split('^');
  document.getElementById('cboClause').parentNode.innerHTML=sResult.split('|')[2];
}


function dwLocate(sRef, sUrlScripts, sSID)
{
  var xmlhttp = dwXMLHttpRequest();
  var lResult = 0;
  xmlhttp.open('GET',sUrlScripts + 'LocateID.asp?!ID=' + sRef + '&!SID=' + sSID + '&!NC=' + (new Date()).getTime(),false);
  xmlhttp.setRequestHeader('pragma','no-cache');
  xmlhttp.setRequestHeader('Cache-Control','no-cache');
  xmlhttp.send('');

  if (xmlhttp.status == 200)
  {
    var sResult = xmlhttp.responseText;
    if (isNumber(sResult)) 
    { 
      lResult = parseInt(sResult); 
    }
  }
  return lResult;
}

function dwLocateAndShowWindow(sRef, sUrlScripts, sSID)
{
  var xmlhttp = dwXMLHttpRequest();
  xmlhttp.open('GET',sUrlScripts + 'FetchObjectURLDetails.asp?!ID=' + sRef + '&!SID=' + sSID + '&!NC=' + (new Date()).getTime(),false);
  xmlhttp.setRequestHeader('pragma','no-cache');
  xmlhttp.setRequestHeader('Cache-Control','no-cache');
  xmlhttp.send('');
  
  if (xmlhttp.status == 200)
  {  
    switch (xmlhttp.responseText)
    {
      case '':
        // Cannot locate the item
        alert('Could not Locate item');
        break;
      case '-1':
        // ObjectType is not configured to be locatable
        alert('This Item type is not Enabled for \'Locate\' functionality');
        break;
      case '0':
        // Need to relogin        
        alert('Authentication Expired. Refresh page to log in and continue');        
        break;
      default:
        // Item found, URL returned
        window.location = xmlhttp.responseText;
        break;
    }
  }    
}

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function dwCommentReply(event, psComment, psUrlScripts, plObjectItemID, plParentID, psPrefix, plSID)
{
  var evt = event || window.event;    
  var lPressedKeyCode = evt.keyCode;   
  
  if (lPressedKeyCode == 13)
  {
    if (psComment.length > 0)
    {
      var xmlhttp = dwXMLHttpRequest();
      xmlhttp.open('GET',psUrlScripts + 'Messaging/CommentReply.asp?!ID=' + plObjectItemID + '&ParentID=' + plParentID + '&Comment=' + psComment + '&!SID=' + plSID,false);
      xmlhttp.setRequestHeader('pragma','no-cache');
      xmlhttp.setRequestHeader('Cache-Control','no-cache');
      xmlhttp.send('');
  
      if (xmlhttp.status == 200)
      {  
        var sResponseText = xmlhttp.responseText; 
        if (sResponseText.substring(0, 2) == 'OK')
        {     
          var newDiv = document.createElement('div');
          newDiv.className = 'CommentBlock';
          var newP = document.createElement('p');
          newP.className = 'Comment';
          var newSpan = document.createElement('span');          
          newSpan.className = 'CommentFrom';
          newSpan.innerHTML = sResponseText.substring(3) + ' ';          
          newP.innerHTML = psComment;
          newP.insertBefore(newSpan, newP.firstChild);
          newDiv.appendChild(newP);
          if (plParentID == 0)
          {
            var CommentThread = document.getElementById(psPrefix + 'CommentThread' + plObjectItemID);
            CommentThread.insertBefore(newDiv, CommentThread.firstChild);
          }
          else
          {
            var CommentReplies = document.getElementById(psPrefix + 'CommentReplies' + plParentID);
            CommentReplies.appendChild(newDiv);
            document.getElementById('CommentReplyLabel' + plParentID).style.display = 'block';
            document.getElementById('CommentReply' + plParentID).style.display = 'none';
          }
          document.getElementById('CommentReply' + plParentID).value = '';
        }
        else
        {
          alert('Comment could not be saved' + '/n/nReason:' + xmlhttp.responseText);
        }
      }
    }
  }
}

function dwCommentsMore(event, plCurrentMaxCount, psUrlScripts, plObjectItemID, plParentID, psPrefix, plSID)
{
  var xmlhttp = dwXMLHttpRequest();
  xmlhttp.open('GET',psUrlScripts + 'Messaging/CommentFetchAdditional.asp?!ID=' + plObjectItemID + '&ParentID=' + plParentID + '&MaxCount=' + plCurrentMaxCount + '&!SID=' + plSID,false);
  xmlhttp.setRequestHeader('pragma','no-cache');
  xmlhttp.setRequestHeader('Cache-Control','no-cache');
  xmlhttp.send('');
  
  if (xmlhttp.status == 200)
  {
  
  
    var cType = xmlhttp.getResponseHeader('Content-Type');
    if (cType.match('xml'))
    {
      var CommentReplies = document.getElementById(psPrefix + 'CommentReplies' + plParentID);
      CommentReplies.removeChild(CommentReplies.lastChild);
    
      var oResultSet = xmlhttp.responseXML.getElementsByTagName('record');
      for (var i=0; i<oResultSet.length; i++)
      {
        var user = oResultSet[i].getElementsByTagName('user')[0];
        var subject = oResultSet[i].getElementsByTagName('subject')[0];
        
        var newDiv = document.createElement('div');
        newDiv.className = 'CommentBlock';
        var newP = document.createElement('p');
        newP.className = 'Comment';
        var newSpan = document.createElement('span');          
        newSpan.className = 'CommentFrom';
        newSpan.innerHTML = user.textContent + ' ';          
        newP.innerHTML = subject.textContent;
        newP.insertBefore(newSpan, newP.firstChild);
        newDiv.appendChild(newP);   
     
        CommentReplies.appendChild(newDiv);             
      }
    }
    else
    {
      alert('An error occured while fetching the additional comments');
    }    
  } 
}

function dwHTMLMultiSelectRemoveItem(event)
{
  var evt = event || window.event;
  var eSrcElement = evt.srcElement;
  sElementName = eSrcElement.getAttribute('ParentNodeName');
  var outCell = document.getElementById(sElementName + '_OuterCell');
  var evt = event || window.event;
  outCell.removeChild(evt.srcElement.parentNode);
}
  
function dwHTMLMultiSelectKeyDown(event, lObjectType, sObjectTypes, sUrl, sFieldName, sFieldSource, bAllowDuplicates)
{
  var evt = event || window.event;
  var lPressedKey = evt.keyCode;    
  var eInputText = evt.srcElement;
  var bResult = false;
  sElementName = eInputText.id.replace('_InputText', '');

  // If Tab or Enter, add the value to the list
  if ((lPressedKey == 9) || (lPressedKey == 13)) {
    bResult = dwHTMLMultiSelectAuto(sElementName, bAllowDuplicates);
  } else if (lPressedKey == 8) {
    // If Backspace, remove the last value in the list
    if (eInputText.value.length == 0) {
      var outCell = document.getElementById(sElementName + '_OuterCell');
      if (outCell.childNodes.length > 1) {
        if (outCell.lastChild.tagName == 'INPUT') {
          outCell.removeChild(outCell.lastChild.previousSibling);
        } else {
          outCell.removeChild(outCell.lastChild);
        }          
      }
      // Prevent backspace from firing the Browser back command
      evt.returnValue = false;
    }
  } else if (lPressedKey == 27) {
    var dwMultiSelectItemSuggest_div = document.getElementById('dwMultiSelectItemSuggest');
    dwMultiSelectItemSuggest_div.innerHTML = ''; 
    dwMultiSelectItemSuggest_div.style.display = 'none';    
    eInputText.value = '';
  }
  
  // Prevent the Browser from submitting the form if Enter is pressed
  if (lPressedKey == 13) {
    if (bResult) {
      evt.returnValue = false;
    }  
  }  
  
  if (lPressedKey == 9) {
    evt.returnValue = false;
  }
}

function dwHTMLMultiSelectKeyUp(event, lObjectType, sObjectTypes, sUrl, sFieldName, sFieldSource, sControlName, bAllowDuplicates)
{
  var evt = event || window.event;
  var lPressedKey = evt.keyCode;    
  var eInputText = evt.srcElement;
  sElementName = eInputText.id.replace('_InputText', '');

  if ((lPressedKey == 8) || (lPressedKey == 9) || (lPressedKey == 13) || (lPressedKey == 27)) {
    // tab, enter or backspace has been pressed
  } else {
    var xmlhttp = dwXMLHttpRequest();
    xmlhttp.open('GET', sUrl + '&OT=' + lObjectType + '&T=' + sObjectTypes + '&FN=' + sFieldName + '&FS=' + sFieldSource + '&S=' + eInputText.value + '&EL=' + sElementName + '&CN=' + sControlName, false);
    
    xmlhttp.setRequestHeader('pragma', 'no-cache');
    xmlhttp.setRequestHeader('Cache-Control','no-cache');
    xmlhttp.send('');       
    if (xmlhttp.status == 200)
    { 
      var sResponse = xmlhttp.responseText;
      if (sResponse.length == 0)
      {
        sResponse = 'No Results found';
      }
      var dwMultiSelectItemSuggest_div = document.getElementById('dwMultiSelectItemSuggest');
      dwMultiSelectItemSuggest_div.innerHTML = sResponse; 
      dwMultiSelectItemSuggest_div.style.display = 'block';
      dwMultiSelectItemSuggest_div.style.position = 'absolute';
      var elPos = dwGetElementPosition(eInputText);
      dwMultiSelectItemSuggest_div.style.left = elPos.x + eInputText.clientLeft + 'px';
      dwMultiSelectItemSuggest_div.style.top = elPos.y + eInputText.offsetHeight + eInputText.offsetTop + 'px';
      dwMultiSelectItemSuggest_div.style.width = eInputText.clientWidth + 'px';      
    }   
  }
}

function dwHTMLMultiSelectAuto(sElementName, bAllowDuplicates)
{   
  var dwMultiSelectItemSuggest_div = document.getElementById('dwMultiSelectItemSuggest');
  var firstSelection = dwMultiSelectItemSuggest_div.firstChild;
  if (firstSelection != null) {
    if (firstSelection.textContent != 'No Results found') {
      if (document.createEvent)
      {
        var evt = document.createEvent('MouseEvents');
        evt.initEvent('click', true, true);
        firstSelection.dispatchEvent(evt);
      } else {
        if (document.createEventObject)
        {
          var evt = document.createEventObject('MouseEvents');
          firstSelection.fireEvent('onclick', evt);
        }
      }      
    }
    return true;
  }
  else {
    return false;
  }
}

function dwHTMLMultiSelectProcessValue(sElementName, sControlName, lObjectItem, sDisplayName, bAllowDuplicates)
{
  var outCell = document.getElementById(sElementName + '_OuterCell');  
  var s = document.createElement('span');
  s.className = 'dwHTMLMultiSelectItemSpanBG';
  s.innerHTML = sDisplayName;  
  
  var h = document.createElement('input');
  h.type = 'hidden';
  h.value = "" + lObjectItem;
  h.name = sControlName;
  s.appendChild(h);
  
  var a = document.createElement('a');
  a.className = 'dwHTMLMultiSelectItemRemove';
  a.setAttribute('ParentNodeName', sElementName);
  if (a.attachEvent){
    a.attachEvent('onclick', dwHTMLMultiSelectRemoveItem);
  }
  else { 
    a.addEventListener('click', dwHTMLMultiSelectRemoveItem, false); 
  }
  s.appendChild(a);
  
  outCell.insertBefore(s, outCell.lastChild);
}

function dwHTMLMultiSelectClickItem(sElementName, sControlName, lObjectItem, sDisplayName, bAllowDuplicates)
{
  if (bAllowDuplicates) {
    dwHTMLMultiSelectProcessValue(sElementName, sControlName, lObjectItem, sDisplayName);
  }
  else 
  {
    var bDuplicateFound = false;
    var oHiddens = document.getElementById(sElementName + '_OuterCell').getElementsByTagName('input');
    for (var i = 0; i < oHiddens.length; i++) {
      if (oHiddens[i].type == 'hidden') {
        if (oHiddens[i].value == lObjectItem) {
          bDuplicateFound = true;
        }
      }
    }
    
    if ((bAllowDuplicates == false) && (bDuplicateFound == false)) {
      dwHTMLMultiSelectProcessValue(sElementName, sControlName, lObjectItem, sDisplayName);
    }  
    else {
      // (sDisplayName + ' already exists in the selection, it has not been added again');
    }
  }  
  
  var dwMultiSelectItemSuggest_div = document.getElementById('dwMultiSelectItemSuggest');
  dwMultiSelectItemSuggest_div.innerHTML = ''; 
  dwMultiSelectItemSuggest_div.style.display = 'none';    
  
  var eInputText = document.getElementById(sElementName + '_InputText'); 
  eInputText.value = '';
}

function dwScheduleRecurrenceShow(lID)
{
  document.getElementById('dwRA0').style.display='none'; 
  document.getElementById('dwRA1').style.display='none'; 
  document.getElementById('dwRA2').style.display='none';
  document.getElementById('dwRA3').style.display='none'; 
  document.getElementById('dwRA4').style.display='none'; 
  document.getElementById('dwRA5').style.display='none'; 
  document.getElementById('dwRA' + lID).style.display='table'; 
}

function dwDevwareWindow() {
  this.Name = '';
  this.Icon = '';  
  this.Ref = null;
}

function dwGetDevwareMain()
{
  return DevwareMain;
}

function WindowArray()
{
  return dwWindowArray;
}

function dwMainUnload()
{
  var evt = event || window.event;  
  if (evt.clientX <= 0 || evt.clientY <= 0) {
    return 'All windows will be closed...';
  }  
}

function dwMainActualUnload()
{
dwCloseAllWindows();
}

function dwRefreshWindowArray()
{
  var oTable = document.getElementById('dwMyWindows');  
  if (oTable != null) {
    //var eParentTabTable = dwGetParentElementOfType(oTable, 'TABLE');
    if (true) { //if (eParentTabTable != null) {
      if (true) { // if (eParentTabTable.style.display != 'none') {      
        var tBody = oTable.tBodies[0];
        
        if (tBody.childNodes.length) {
          while (tBody.childNodes.length > 0) {
            tBody.removeChild(tBody.firstChild);
          }
        }
        else if (tBody.childElementCount) {
          while (tBody.childElementCount > 0) {
            tBody.removeChild(tBody.firstChild);
          }
        }  
        
        var template = oTable.tHead.rows[oTable.tHead.rows.length-1];
        var a, img, tr;
        var bOddRow = false;
        
        for (var i in dwWindowArray) {
          if (i != 'has') {    
            if (typeof(dwWindowArray[i].Ref) == 'object') { 
              var winRef = dwWindowArray[i].Ref;
              if ((winRef != null) && (!winRef.closed))
              {
                bOddRow = !bOddRow;    
                tr = document.createElement('tr');   
                
                if (bOddRow) {                
                  tr.className = 'OddRow';
                  tr.onmouseover = function () { this.className='OddRowHover';} ;
                  tr.onmouseout = function () { this.className='OddRow';};
                } else {
                  tr.className = 'EvenRow';
                  tr.onmouseover = function () { this.className='EvenRowHover';};
                  tr.onmouseout = function () { this.className='EvenRow'; };                          
                } 
                
                td = document.createElement('td');
                td.className = 'IconCell';
                td.innerHTML = '';
                a = document.createElement('a');
                a.href = 'javascript:;';              
                if (dwWindowArray[i].Icon.length > 0) {
                  img = document.createElement('img');
                  img.className = 'Icon';
                  img.src = dwWindowArray[i].Icon;
                  img.setAttribute('WindowName', i);
                  img.onclick = function() { dwShowOpenWindow(this.getAttribute('WindowName')); dwRefreshWindowArray(); };
                  a.appendChild(img);
                  td.appendChild(a);                                
                }           
                tr.appendChild(td);
                
                td = document.createElement('td');
                td.className = 'DataCell';
                td.innerHTML = '';
                a = document.createElement('a');
                a.setAttribute('WindowName', i);
                a.onclick = function() { dwShowOpenWindow(this.getAttribute('WindowName')); dwRefreshWindowArray(); };            
                a.innerHTML = dwWindowArray[i].Name;              
                a.href = 'javascript:;';
                td.appendChild(a);
                tr.appendChild(td);
                
                td = document.createElement('td');
                td.className = 'IconCell';
                var icon = template.lastChild.firstChild.cloneNode(true);
                if (icon.tagName == 'A') {
                  icon.firstChild.setAttribute('WindowName', i);
                  icon.firstChild.onclick = function() { dwCloseSelectedWindow(this.getAttribute('WindowName')); };
                  td.appendChild(icon);
                } else {
                  a = document.createElement('a');
                  a.setAttribute('WindowName', i);
                  a.onclick = function() { dwCloseSelectedWindow(this.getAttribute('WindowName')); dwRefreshWindowArray(); };        
                  a.innerHTML = 'Close';
                  a.href = 'javascript:;';        
                  td.innerHTML = '&nbsp;';
                  td.className = 'IconCell';
                  td.appendChild(a);
                }       
                tr.appendChild(td);
                 
                oTable.tBodies[0].appendChild(tr);      
              } 
            }      
          }
        } 
      }
    }       
  }  
}

function dwAddTabToTabTable(psTabTableID, psTabName, plTabMode, psURL)
{
  var oTabTable = document.getElementById(psTabTableID);
  // First add Tab item
  var oTabTableHead = document.getElementById(psTabTableID + '_Head');
  var oHeadBody = oTabTableHead.tBodies[0];
  
  var td = document.createElement('td');
  var newDate = new Date;
  var sTabName = psTabTableID + '_' + psTabName + newDate.getTime();
  td.id = sTabName;
  td.value  =sTabName;
  td.className = 'TabOn';  
  td.innerHTML = 'Loading...';
  
  if (td.attachEvent) {
    td.attachEvent('onmouseover', function () {  dwControlHover(this); });
    td.attachEvent('onmouseout', function () {  dwControlHoverOut(this); });  
    td.attachEvent('onmousedown', function () {  dwTabSet(psTabTableID, sTabName); });      
  } else {
    td.addEventListener('mouseover', function () {  dwControlHover(this); });
    td.addEventListener('mouseout', function () {  dwControlHoverOut(this); });
    td.addEventListener('mousedown', function () {  dwTabSet(psTabTableID, sTabName); });                          
  }  

  oHeadBody.rows[0].insertBefore(td, document.getElementById(psTabTableID + '_AddNew'));
  
  var oContentTable = document.createElement('table');
  oContentTable.className = 'FormTable';
  oContentTable.id = sTabName + '_tbl';
  oContentTable.cellSpacing = 0;
  oContentTable.style.display = 'table';
  
  var tr = oContentTable.insertRow(0);
  td = tr.insertCell(0);
  td.className = 'TabContent';
  td.id = sTabName + '_Cell';
  
  switch (plTabMode)
  {
    case 1:
      // Raw Content mode, fetch via AJAX
      var xmlhttp = dwXMLHttpRequest();
      xmlhttp.open('GET', psURL, false);
    
      xmlhttp.setRequestHeader('pragma', 'no-cache');
      xmlhttp.setRequestHeader('Cache-Control','no-cache');
      xmlhttp.send('');       
      if (xmlhttp.status == 200) {
        td.innerHTML = xmlhttp.responseText;
      }
      else {
        td.innerHTML = "An Error occured while fetching the data. Error " + xmlhttp.status;
      }
      break;
    case 2:
      // IFrame Mode
      var IFrame = document.createElement('iframe');
      IFrame.id = sTabName + '_frame';
      IFrame.name = sTabName + '_frame';
      IFrame.marginWidth = 0;
      IFrame.marginHeight = 0;
      IFrame.frameBorder = 0;
      IFrame.frameSpacing = 0;
      IFrame.style.width = '100%';
      IFrame.style.height = document.getElementById('dwMainFrame').style.height;
      IFrame.src = psURL;
      IFrame.onload = function() {dwUpdateTabHeader(IFrame, psTabTableID, sTabName); };  
      td.appendChild(IFrame);
      break;
    default:
      break;
  }
  
  var oTabContent = oTabTableHead.nextSibling.tBodies[0].rows[0].cells[0];
  oTabContent.appendChild(oContentTable);
  
  dwTabSet(psTabTableID, sTabName);  
}

function dwUpdateTabHeader(eIFrame, psTabTableID, psTabName)
{  
  var sWindowName = eIFrame.contentWindow.document.body.getAttribute('WindowTitle');
  if (sWindowName == null) {sWindowName = 'Page Error';}
  if (sWindowName.length == 0) sWindowName = 'Unknown Title';
  
  var oTabCell = document.getElementById(psTabName);
  oTabCell.innerHTML = sWindowName;
}


function dwCloseSelectedWindow(psWindowName)
{
  var winRef = null;
  if (DevwareMain.WindowArray().has(psWindowName)) {
    if (typeof(DevwareMain.WindowArray()[psWindowName].Ref) == 'object') {
      winRef = DevwareMain.WindowArray()[psWindowName].Ref;
    }
    if (winRef != null && (!winRef.closed)) {
      winRef.close();
      dwRefreshWindowArray();
    }    
  }
}

function dwCloseAllWindows()
{
  for (var i in DevwareMain.WindowArray()) {
    dwCloseSelectedWindow(i);
  }
}

function dwShowOpenWindow(psWindowName)
{
  if (dwWindowArray.has(psWindowName)) {
    if (typeof(DevwareMain.WindowArray()[psWindowName].Ref) == 'object') {
      winRef = DevwareMain.WindowArray()[psWindowName].Ref;
    }
  }
  if (winRef != null && (!winRef.closed)) {
    winRef.focus();
  }  
}

function dwSetDevwareMain()
{
  var bMain = true;
  if (window.opener) {
    if (window.self.name == 'main') {
      bMain = true;
      var oWindow = new dwDevwareWindow();
      oWindow.Name = 'Main';
      oWindow.Ref = window.opener;
      WindowArray()[window.opener.name] =  oWindow;
    } else {       
      DevwareMain = window.opener.dwGetDevwareMain();
      var oWindow = new dwDevwareWindow();
      oWindow.Name = window.document.body.getAttribute('WindowTitle');
      oWindow.Icon = window.document.body.getAttribute('WindowIcon');      
      oWindow.Ref = window;
      DevwareMain.WindowArray()[window.self.name] = oWindow;
      DevwareMain.dwRefreshWindowArray();           
      bMain = false;
    }
  }
  else
  {    
    if (parent != window) {
      DevwareMain = parent.dwGetDevwareMain();   
      bMain = false;
    }
  }
  if (bMain) {
    if (document.cookie != 'Main=true') 
    {
      DevwareMain = window.self;
      document.cookie = 'Main=true;';
      window.self.name = 'main';
    }
  }
}

function dwGetActiveTab()
{
  var oMainFrameTable = document.getElementById('tabMainFrame');
  var sCurrentFrame = oMainFrameTable.getAttribute('prevtab');
  if (sCurrentFrame != null) {
    return document.getElementById(sCurrentFrame + '_frame');
  }
  return null;
}

function dwOpenInActiveTab(psURL)
{
  var IFrame = dwGetActiveTab();
  if (IFrame != null) {
    if (IFrame.tagName == 'IFRAME') {
      IFrame.src = psURL;
    } else {
      IFrame = null;
    }
  }
  
  if (IFrame == null) {
    IFrame = document.getElementById('dwMainFrame');
    IFrame.src = psURL;
  }
}

function dwShowSubMenu(psURLScripts,psSID,psWebComponentID)
{
  var sURL = psURLScripts + 'MainMenuTabUpdate.asp?!WC=' + psWebComponentID + '&!SID=' + psSID + '&!NC=' + (new Date()).getTime();
  var xmlhttp;
  xmlhttp = dwXMLHttpRequest();
  xmlhttp.open('GET', sURL, true);
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4)
    {
      var sResponse;
      sResponse = xmlhttp.responseText;
      if (sResponse != 'Authentication expired. Refresh page.')
      {
        objTabMainMenu=document.getElementById('tabMainLeftPanel_tabMainMenu_Cell');        
        if(objTabMainMenu!=null) objTabMainMenu.innerHTML=sResponse;
      }
      else
      {
        alert('Your authentication has expired, please login to continue');
      }
    }
  }
  xmlhttp.send('');

}

function dwUpdateCurrentUsername()
{
  var sURL = g_urlscripts + 'MainFetchNotifications.asp?Mode=1&!NC=' + (new Date()).getTime() + '&!SID=' + g_sid;
  var xmlhttp;
  xmlhttp = dwXMLHttpRequest();
  xmlhttp.open('GET', sURL, true);
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4)
    {
      if (xmlhttp.status == 200) {
        oUsername = document.getElementById('UserNameLink');
        if (oUsername != null) {
          oUsername.innerHTML = xmlhttp.responseText;
        }
      }
    }
  }
  xmlhttp.send('');
}

function dwUpdate() {
  dwRefreshWindowArray();
  
  var sURL = g_urlscripts + 'MainFetchNotifications.asp?Mode=0&!NC=' + (new Date()).getTime() + '&!SID=' + g_sid;
  var xmlhttp;
  var sFileName = '';
  var sAltText = '';
  xmlhttp = dwXMLHttpRequest();
  xmlhttp.open('GET', sURL, true);
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4)
    {
      if (xmlhttp.status == 200) {
        // Results are formatted as Messages : Comments : UserID
        // Time out is present as 'Authentication expired. Refresh page.'
        if (xmlhttp.responseText != 'Authentication expired. Refresh page.') {
          var results = xmlhttp.responseText.split(':');
          var oComments = document.getElementById('CommentsIcon');
          var oMessages = document.getElementById('MessagesIcon');
          
          if (oMessages != null) {
            var lMessageCount = results[0];
            
            if (lMessageCount > 9) {
              sFileName = 'Unread.png'
            } else {
              if (lMessageCount == 0) { 
                sAltText = 'No unread messages'; 
              } else if (lMessageCount == 1) {
                sAltText = '1 unread message';
              } else {
                sAltText = lMessageCount + ' unread message';
              }
              sFileName = 'Unread' + (lMessageCount < 10 ? '0' : '') + lMessageCount + '.png';
            }
            oMessages.src = g_urlimages + 'Msg/' + sFileName;
            oMessages.alt = sAltText;
            oMessages.title = sAltText;
          }
                  
          if (oComments != null) {
            var lCommentCount = results[1];
            
            if (lCommentCount > 9) {
              sFileName = 'Notify.png'
            } else {
              if (lCommentCount == 0) { 
                sAltText = 'No unread comments'; 
              } else if (lCommentCount == 1) {
                sAltText = '1 unread comment';
              } else {
                sAltText = lCommentCount + ' unread comments';
              }
              sFileName = 'Notify' + (lCommentCount < 10 ? '0' : '') + lCommentCount + '.png';
            }
            oComments.src = g_urlimages + 'Msg/' + sFileName;
            oComments.alt = sAltText;
            oComments.title = sAltText;
          }
  
          var oUserNameLink = document.getElementById('UserNameLink');
          if (oUserNameLink != null) {
            var lCurrentUserID = oUserNameLink.getAttribute('userid');
            if (lCurrentUserID != results[2]) {
            //  alert('Different user logged in!');
              dwUpdateCurrentUsername();
              oUserNameLink.setAttribute('userid',lCurrentUserID);
            } 
          }
        }
      }
    }
  }
  xmlhttp.send('');

}

function dwSetupUpdate(plTimePeriod, psURLScripts, psURLImages, plSID) {
  g_urlscripts = psURLScripts;
  g_urlimages = psURLImages;
  g_sid = plSID;
  if (plTimePeriod == 0) { 
   plTimePeriod = 1; 
  }  
  setInterval(dwUpdate, (plTimePeriod*60000)); // plTimePeriod is in minutes
}

function dwGetParentElementOfType(peElement, psParentType)
{
  if (peElement != null) {
    if (peElement.parentNode != null) {
      if (peElement.parentNode.tagName == psParentType.toUpperCase()) {
        return peElement.parentNode;
      } else {
        return dwGetParentElementOfType(peElement.parentNode, psParentType);
      }
    }
  }
  return null;
}

function dwMainResize() {

  var lPadding = 2;
  var lWindowHeight = 0;
  if (window.innerHeight){
    lWindowHeight = window.innerHeight;
  } else {
    lWindowHeight = document.body.clientHeight;
  }
  var lHeaderHeight = 0;
  if (document.getElementById('MainTitleTable')) {
    lHeaderHeight = document.getElementById('MainTitleTable').offsetHeight;
  }
  var lFooterHeight = 0; 
  if (document.getElementById('dwStdFooter')) {
    lFooterHeight = document.getElementById('dwStdFooter').offsetHeight;
  }
  var lNewHeight = lWindowHeight - lHeaderHeight - lFooterHeight;
  if(navigator.userAgent.indexOf(" Chrome/")!=-1)
  {
    lNewHeight -= 18;
  }
  var eBodyTable = document.getElementById('dwBodyTable');
  eBodyTable.style.height = (lNewHeight - eBodyTable.style.marginTop - eBodyTable.style.marginBottom) + 'px';

  lNewHeight -= 15;
 
  document.getElementById('spltFrMain_ContentFrameOne').style.height = lNewHeight + 'px';
  document.getElementById('spltFrMain_ContentFrameTwo').style.height = lNewHeight + 'px';
  document.getElementById('spltFrMain_HResizer').style.height = lNewHeight + 'px';
  var eMainFrame = document.getElementById('dwMainFrame');
  var lMainFrameMargins = eMainFrame.style.marginTop + eMainFrame.style.marginBottom;
  var eWorkspaceTable = document.getElementById('tabMainFrame_tabMainWorkspace_tbl');
  var lWorkspaceMargins = eWorkspaceTable.style.marginTop + eWorkspaceTable.style.marginBottom;  
  var lNewIFrameBoundaries = document.getElementById('tabMainFrame_Head').offsetHeight + lWorkspaceMargins;  
  eMainFrame.style.height = lNewHeight - lNewIFrameBoundaries + lMainFrameMargins + 'px';    
  var iFrames = document.getElementsByTagName('iframe');
  for (var i =0; i < iFrames.length; i++) {
    if (iFrames[i].id.indexOf('_frame') != -1) {      
      iFrames[i].style.height = lNewHeight - lNewIFrameBoundaries - iFrames[i].style.marginTop - iFrames[i].style.marginBottom + 'px';
    }
  }
}

function dwSplitFrameResize(psSplitFramePrefix) {
  var lPadding = 2;
  var lWindowHeight = 0;
  if (window.innerHeight){
    lWindowHeight = window.innerHeight;
  } else {
    lWindowHeight = document.body.clientHeight;
  }
  var lHeaderHeight = 0; 
  if (document.getElementById('dwTitleTable')) {
    lHeaderHeight = document.getElementById('dwTitleTable').offsetHeight;
  }
  if (document.getElementById('MainTitleTable')) {
    lHeaderHeight = document.getElementById('MainTitleTable').offsetHeight;
  }        
  var lTitleHeight = 0;
  if (document.getElementById('dwTitleToolbar')) {
    lTitleHeight = document.getElementById('dwTitleToolbar').offsetHeight;
  }
  var lFooterHeight = document.getElementById('dwStdFooter').offsetHeight;
  var lBreadCrumbHeight = 0;
  if (document.getElementById('dwBreadCrumbBar')) {
    lBreadCrumbHeight = document.getElementById('dwBreadCrumbBar').offsetHeight;
  }
  var lNewHeight = lWindowHeight - lHeaderHeight - lFooterHeight - lTitleHeight - lBreadCrumbHeight;
  if(navigator.userAgent.indexOf(" Chrome/")!=-1)
  {
    lNewHeight -= 18;
  }
  var eBodyTable = document.getElementById('dwBodyTable');
  eBodyTable.style.height = (lNewHeight - eBodyTable.style.marginTop - eBodyTable.style.marginBottom) + 'px';

  lNewHeight -= (15);
 
  document.getElementById(psSplitFramePrefix + '_ContentFrameOne').style.height = lNewHeight + 'px';
  document.getElementById(psSplitFramePrefix + '_ContentFrameTwo').style.height = lNewHeight + 'px';  
  document.getElementById(psSplitFramePrefix + '_HResizer').style.height = lNewHeight + 'px';
}
