﻿var suggestDelay = 1000; // Delay for suggestion popups (in milliseconds)
var suggestTimeout = null;
var msgbox = null;

var BrowserDetect = {
  init: function () {
    this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
    this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version";
    this.OS = this.searchString(this.dataOS) || "an unknown OS";
  },
  searchString: function (data) {
    for (var i = 0; i < data.length; i++) {
      var dataString = data[i].string;
      var dataProp = data[i].prop;
      this.versionSearchString = data[i].versionSearch || data[i].identity;
      if (dataString) {
        if (dataString.indexOf(data[i].subString) != -1) {
          return data[i].identity;
        }
      }
      else if (dataProp) {
        return data[i].identity;
      }
    }
  },
  searchVersion: function (dataString) {
    var index = dataString.indexOf(this.versionSearchString);
    if (index == -1) {
      return;
    }
    return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
  },
  dataBrowser: [
    {   string: navigator.userAgent,
      subString: "OmniWeb",
      versionSearch: "OmniWeb/",
      identity: "OmniWeb"
    },
    {
      string: navigator.vendor,
      subString: "Apple",
      identity: "Safari"
    },
    {
      prop: window.opera,
      identity: "Opera"
    },
    {
      string: navigator.vendor,
      subString: "iCab",
      identity: "iCab"
    },
    {
      string: navigator.vendor,
      subString: "KDE",
      identity: "Konqueror"
    },
    {
      string: navigator.userAgent,
      subString: "Firefox",
      identity: "Firefox"
    },
    {
      string: navigator.vendor,
      subString: "Camino",
      identity: "Camino"
    },
    {   // for newer Netscapes (6+)
      string: navigator.userAgent,
      subString: "Netscape",
      identity: "Netscape"
    },
    {
      string: navigator.userAgent,
      subString: "MSIE",
      identity: "Explorer",
      versionSearch: "MSIE"
    },
    {
      string: navigator.userAgent,
      subString: "Gecko",
      identity: "Mozilla",
      versionSearch: "rv"
    },
    {     // for older Netscapes (4-)
      string: navigator.userAgent,
      subString: "Mozilla",
      identity: "Netscape",
      versionSearch: "Mozilla"
    }
  ],
  dataOS : [
    {
      string: navigator.platform,
      subString: "Win",
      identity: "Windows"
    },
    {
      string: navigator.platform,
      subString: "Mac",
      identity: "Mac"
    },
    {
      string: navigator.platform,
      subString: "Linux",
      identity: "Linux"
    }
  ]
};

function cancelTimeout() {
  if(suggestTimeout) {
    window.clearTimeout(suggestTimeout);
    suggestTimeout = null;
  }
}

function checkBrowser() {
  var iver = 0;
  var sver = "";
  var bres = false;

  BrowserDetect.init();

  sver = BrowserDetect.version;
  sver = sver + "00";
  sver = sver.replace(/\./g, "");
  sver = sver.substring(0, 2);
  iver = parseInt(sver, 10);

  if (BrowserDetect.browser == "Firefox"){
    if (iver >= 15){
      bres = true;
    }
  }

  if (BrowserDetect.browser == "Explorer"){
    if (iver >= 60){
      bres = true;
    }
  }

  return bres;
}

function GetFlashVersion(){
  var ver = deconcept.SWFObjectUtil.getPlayerVersion();
  var fver = ver.major + '.' + ver.minor + '.' + ver.rev;
  var f = document.getElementById("FlashVersion");

  if (f !== null){
    f.value = fver;
  }
}

function checkFlash() {
  var bres = false;
  var ver = deconcept.SWFObjectUtil.getPlayerVersion();
  var bSkip = (ver.major === 9 && ver.minor === 0 && ver.rev <= 16);
  if (ver.major >= 10  && !bSkip) {
    bres = true;
  }
  return bres;
}

var maskElement;

function createMask() {  
  if (document.getElementById("maskWin")) {
    maskElement = document.getElementById("maskWin");
    maskElement.style.width = document.body.scrollWidth + 'px';
    maskElement.style.height = (document.body.scrollHeight + 10) + 'px';
  }
  else {
    maskElement = document.createElement("iframe");
    maskElement.src = "/tm/mask.asp";

    maskElement.id = "maskWin";
    maskElement.style.width = document.body.scrollWidth + 'px';
    maskElement.style.height = (document.body.scrollHeight + 10) + 'px';
    maskElement.className = "cssMask";
    document.body.appendChild(maskElement);
  }
  if(window.SWFUpload) {
    for(var i=0; i<SWFUpload.movieCount; i++){
      if ((uploadbox !== null && i != 0) || uploadbox === null) {
        SWFUpload.instances["SWFUpload_" + i].hide();
      }
    }
  }
  maskElement.style.display = "block";
}

function removeMask() {
  if(maskElement !== undefined) {
    maskElement.style.display = "none";
    if(window.SWFUpload) {
      for(var i = 0; i < SWFUpload.movieCount; i++){
        if ((uploadbox !== null) && i != 0) {
          SWFUpload.instances["SWFUpload_" + i].show();
        }
      }
    }
  }
}

function hideMessageBox(){
  if(msgbox) {
    msgbox.style.display = "none";
    removeMask();
    document.body.removeChild(msgbox);
    msgbox = null;
  }
}

function disableButtons(frmId) {
  var i;
  var e;

  var reSWFName = /^SWFUpload_([1-9])+$/;
  var frm = document.getElementById(frmId);

  // Check page when disabling buttons not needed
  for (i = 0; i < frm.elements.length; i++) {
    e = frm.elements.item(i);
    if (e.tagName == "INPUT" && ( e.type == "hidden" && e.value == "NoDisableAfterSubmit")) {
      return;
    }
  }

  for (i = 0; i < frm.elements.length; i++) {
    e = frm.elements.item(i);

    if(e.tagName == "INPUT" && ( e.type == "submit" || e.type == "button") ) {
      e.disabled = true;
      e.style.cursor = "wait";
      e.className = e.className + "_disabled";
    }
    else if(e.tagName == "OBJECT"){
      // Disable 'Browse' flash buttons
      if(reSWFName.test(e.id) && (window.SWFUpload)){
        SWFUpload.instances[e.id].setButtonDisabled(true);
      }
    }
  }
}

function parsePhoneNumber(value){
  var phone = ['', '', '', ''];
  var i = 0;
  var j = value.indexOf(' (');
  if (j > 0) {
    phone[0] = value.substring(i, j);
    phone[0] = phone[0].replace('+', '');
    i = j + 2;
    j = value.indexOf(') ');
    if (j > 0) {
      phone[1] = value.substring(i, j);
      i = j + 2;
      j = value.indexOf(' ext. ');
      if (j > 0) {
        phone[2] = value.substring(i, j);
        phone[3] = value.substr(j + 6);
      }
      else {
        phone[2] = value.substr(i);
      }
    }
  }

  return phone;
}

function setPhoneNumber(frmElt, fldId, value){
  var phone = parsePhoneNumber(value);
  for (var i = 0; i < frmElt.elements.length; i++) {
    switch(frmElt.elements[i].id ){
    case fldId:
      frmElt.elements[i].value = phone[0];
      break;

    case fldId + '_1':
      frmElt.elements[i].value = phone[1];
      break;

    case fldId + '_2':
      frmElt.elements[i].value = phone[2];
      break;

    case fldId + '_3':
      frmElt.elements[i].value = phone[3];
      break;
    }
  }
}

function parseDateTime(value){
  var datetime = ['', '', '', '', '', '', ''];
  if (value === '') {
    return datetime;
  }

  var valueDate = '', valueTime = '';
  if (value.indexOf('\\') < 0){
    valueTime = value;
  }
  else {
    var dt = value.split(' ');
    valueDate = dt[0];
    if (dt.length > 1 && dt[1].indexOf(':') > 0){
      valueTime = dt[1];
    }
  }
  // parse date
  var i = 0;
  var j = valueDate.lastIndexOf('\\');
  if (j > 0) {
    // Year
    datetime[2] = valueDate.substr(j + 1);
    i = j - 1;
    j = value.lastIndexOf('\\', i);
    if (j > 0) {
      // Month and Day
      datetime[0] = valueDate.substring(0, j);
      datetime[1] = valueDate.substring(j + 1, i + 1);
    }
    else {
      // Month or Quater
      datetime[0] = valueDate.substring(0, i + 1);
    }
  }
  // parse time
  i = 0;
  j = valueTime.indexOf(':');
  if (j > 0) {
    // Hour
    datetime[3] = valueTime.subring(i, j);
    i = j + 1;
    j = value.lastIndexOf(' ', i);
    if (j > 0) {
      datetime[4] = valueTime.substring(i, j);
      i = j + 1;
      j = value.lastIndexOf(' ', i);
      if (j > 0) {
        datetime[5] = valueTime.substring(i, j);
        datetime[6] = valueTime.substr(j + 1);
      }
      else {
        var tmp = valueTime.substr(i).toUpperCase();
        if (tmp == 'AM' || tmp == 'PM'){
          datetime[5] = tmp;
        }
        else {
          datetime[6] = tmp;
        }
      }
    }
    else {
      datetime[4] = valueTime.substr(i);
    }
  }

  return datetime;
}

function setDate(frmElt, fldId, value){
  var datetime = parseDateTime(value);
  for (var i = 0; i < frmElt.elements.length; i++) {
    switch(frmElt.elements[i].id){
    case fldId + '_1':
      frmElt.elements[i].value = datetime[0];
      break;

    case fldId + '_2':
      frmElt.elements[i].value = datetime[1];
      break;

    case fldId + '_3':
      frmElt.elements[i].value = datetime[2];
      break;
    }
  }
}

function setTime(frmElt, fldId, value){
  var datetime = parseDateTime(value);
  for (var i = 0; i < frmElt.elements.length; i++) {
    switch(frmElt.elements[i].id){

    case fldId + '_1':
      frmElt.elements[i].value = datetime[3];
      break;

    case fldId + '_2':
      frmElt.elements[i].value = datetime[4];
      break;

    case fldId + '_3':
      frmElt.elements[i].value = datetime[5];
      break;

    }
  }
}

function setDateTime(frmElt, fldId, value){
  var datetime = parseDateTime(value);
  for (var i = 0; i < frmElt.elements.length; i++) {
    switch(frmElt.elements[i].id){
    case fldId + '_1':
      frmElt.elements[i].value = datetime[0];
      break;

    case fldId + '_2':
      frmElt.elements[i].value = datetime[1];
      break;

    case fldId + '_3':
      frmElt.elements[i].value = datetime[2];
      break;

    case fldId + '_4':
      frmElt.elements[i].value = datetime[3];
      break;

    case fldId + '_5':
      frmElt.elements[i].value = datetime[4];
      break;

    case fldId + '_6':
      frmElt.elements[i].value = datetime[5];
      break;
    }
  }
}

function MessageBoxButton(name, action, actionFormId, msgbox){
  this.elt = document.createElement("INPUT");
  this.elt.type = "button";
  this.elt.className = "buttonpop";
  this.elt.style.marginLeft = "3px";
  this.elt.style.marginRight = "3px";
  this.elt.value = name;
  if (action === ''){
    // Close messagebox
    this.elt.onclick = function(e){hideMessageBox();};
  }
  else  if (action.indexOf("jscrpt:") === 0) {
         // Execute javascript
          var scrpt = action.substr(7);
          eval('this.elt.onclick = function(e){' + scrpt + '; hideMessageBox();}');
        }
        else  if (action.indexOf(":") > 0) {
                var btnParam = action.split(':');
                if (btnParam.length == 2) {
                  var frmElt = document.forms[actionFormId];
                  if (frmElt) {

                    this.elt.onclick = function(e){

                      for (var i = 0; i < frmElt.elements.length; i++) {
                        // Checkboxes
                        if (frmElt.elements[i].id == btnParam[0] + '_I1') {
                          var eltName = btnParam[0] + '_I';
                          var values = btnParam[1].split('|');
                          for (var j = 0; j < frmElt.elements.length; j++) {
                            if (frmElt.elements[j].id.substr(0, eltName.length) == eltName) {
                              for(var l = 0; l < values.length; l++){
                                // set marks for checkboxes
                                if (frmElt.elements[j].value == values[l]) {
                                  frmElt.elements[j].checked = true;
                                }
                              }
                            }
                          }
                        }
                        else if( frmElt.elements[i].id == btnParam[0] || frmElt.elements[i].id == btnParam[0] + '_1'  ) {
                          var elt = frmElt.elements[i];
                          // Radio
                          if (elt.nodeName == 'INPUT' && elt.type == 'radio') {
                            if ( elt.value == btnParam[1] ) {
                              elt.checked = true;
                            }
                          }
                          else {
                            // Phone number
                            if(document.getElementsByName(btnParam[0] + '_3').length > 0 && document.getElementsByName(btnParam[0]).length > 0){
                              setPhoneNumber(frmElt, btnParam[0], btnParam[1]);
                            }
                            else {
                              // Dates
                              if(document.getElementsByName(btnParam[0] + '_6').length > 0){
                                setDateTime(frmElt, btnParam[0], btnParam[1]);
                              }
                              else if(document.getElementsByName(btnParam[0] + '_3').length > 0){
                                if (document.getElementsByName(btnParam[0] + '_3')[0].nodeName == 'INPUT'){
                                  setDate(frmElt, btnParam[0], btnParam[1]);
                                }
                                else {
                                  setTime(frmElt, btnParam[0], btnParam[1]);
                                }
                              }
                              else {
                                elt.value = btnParam[1];
                              }
                            }
                          }
                        }
                      }
                      hideMessageBox();
                      disableButtons(frmElt.id);
                      frmElt.submit();
                    };
                  }
                }
              }
}

function showWindow(wn) {
  var wth = 0;
  var hgt = 0;

  if (window.innerWidth) {
    wth = window.innerWidth;
    hgt = window.innerHeight;
  }
  else if (document.documentElement && document.documentElement.clientWidth) {
    wth = document.documentElement.clientWidth;
    hgt = document.documentElement.clientHeight;
  }
  else if (document.body) {
    wth = document.body.clientWidth;
    hgt = document.body.clientHeight;
  }

  wn.style.display = "block";
  wn.style.left = ((wth - wn.offsetWidth) / 2 + document.body.scrollLeft) + 'px';  
  wn.style.top = ((hgt - wn.offsetHeight) / 2 + document.body.scrollTop) + 'px';
}

function showMessageBox(title, content, width, height, frmId, buttonNames, buttonActions, strCloseAction) {
  hideMessageBox();

  // Message box element
  msgbox = document.createElement("DIV");
  msgbox.className = "form-messagebox";
  msgbox.style.display = "none";
  msgbox.style.width = width + 'px';
  msgbox.style.height = height + 'px';
  document.body.appendChild(msgbox);
  // Title element
  var msgboxTitle = document.createElement("DIV");
  msgboxTitle.className = "header";
  msgbox.appendChild(msgboxTitle);
  var strTable = "<table width='100%' border='0' align='center' cellpadding='0' cellspacing='0'>";
  strTable += "<tr>";
  strTable += "<td valign='middle' style='color: #ffffff;font-weight: bold; font-size: 13px;'>" + title;
  strTable += "</td><td align='right' valign='middle' style='color: #ffffff;font-weight: bold; font-size: 13px;'>";
  if(strCloseAction != '')
  {
    strTable += '<a href=\'javascript:' + strCloseAction + ';\'';
  }
  else
  {
    strTable += "<a href=\'javascript:hideMessageBox();\' ";
  }
  strTable += " style='background:transparent url(/images/ui/ico_close.gif) no-repeat center center;'>&nbsp;&nbsp;&nbsp;</a>";
  strTable += "</td>";
  strTable += "</tr></table>";
  msgboxTitle.innerHTML = strTable;
  // Content element
  var msgboxContent = document.createElement("DIV");
  msgboxContent.className = "body";
  msgboxContent.id = "ms_content";
  msgboxContent.style.width = "90%";
  msgbox.appendChild(msgboxContent);
  msgboxContent.innerHTML = content;
  // Buttons
  var msgboxButtons = document.createElement("DIV");
  //msgboxButtons.className = "button";
  msgboxButtons.align = "center";
  msgbox.appendChild(msgboxButtons);

  for(var i = 0; i < buttonNames.length; i++) {
    var bnt = new MessageBoxButton(buttonNames[i], buttonActions[i], frmId, msgbox);
    msgboxButtons.appendChild(bnt.elt);
  }

  createMask();
  showWindow(msgbox);

  return false;
}

function showAlertWindow (blnRedirect, ires, strURL)
{
  var sMsgBr = "<b>mBLAST supports Firefox version 1.5 and greater, and Internet Explorer version 6 and greater</b>. While our system has been designed to be standards compliant and should work with other browsers, we have not extensively tested it with the browser that you are using. You may continue using your browser, but we can&#180;t be sure you won&#180;t run into problems. We recommend you use Firefox or Internet Explorer. <b>You can download either one for free: <a href=http://www.mozilla.com/firefox/ target=_new target=popup>Firefox, </a> <a href=http://www.microsoft.com/windows/downloads/ie/getitnow.mspx target=_new target=popup>Internet Explorer</a></b>";

  var sMsgFl = "<b>mBLAST&#180;s file uploading requires Flash version 10</b>. We have automatically checked your system just now, and you either do not have Flash loaded or it is a version prior to Flash version 10. Installing or upgrading Flash will make the file uploading process work better.";

  var sContFl = " <b>Please upgrade now by clicking <a href=http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash target=popup>here</a></b>.";

  var sBrowserName = "<span  style='text-decoration: underline;'>WARNING</span><span>:&nbsp;Browser " + BrowserDetect.browser + " Detected!</span>";
  var aw = null;

  var sURLfl = strURL;

  var ver = deconcept.SWFObjectUtil.getPlayerVersion();

  var bSkip = (ver.major == 9 && !ver.minor && ver.rev <= 16);

  if (ver.major <= 0 || bSkip) {
    sMsgFl = sMsgFl + sContFl;
  }

  document.write ("<div id='alertWindow' class='form-messagebox'>");
  document.write ("<div class='header' style='cursor:default;'><table width='100%' border='0' cellpadding='0' cellspacing='0'><tr><td style='color: #ffffff;font-weight: bold; font-size: 13px;'>Alert Message: mBLAST System Check</td>");
  document.write ("<td align='right'><a href=javascript:hideAlertWindow(" + blnRedirect + ",'" + strURL + "') style='display:block; width:14px; background:transparent url(/images/ui/ico_close.gif) no-repeat center center;'>&nbsp;</a>");
  document.write ("</td></table></div>");
  document.write ("<div class='body'>");

  document.write ("<table>");
  document.write ("<tr><td colspan=2>");
  document.write ("<span style='color: #CC6600;font-weight: bold;'>mBLAST System Check Issues - Please Read</span><br><br>");
  document.write ("</td></tr>");

  if(ires == 3 || ires == 4){
    document.write ("<tr>");
    document.write ("<td valign='top' style ='width: 32px;'> &nbsp; &nbsp;</td>");
    document.write ("<td style='color: red;font-weight: bold; font-size: 12px;'>");
    document.write (sBrowserName);
    document.write ("<br><br>");
    document.write ("</td>");
    document.write ("</tr>");
  }

  document.write ("<tr>");
  document.write ("<td valign='top'>");
  document.write ("<img src='/images/ic/ap/32/warning.gif' width='32' height='32' align='left' hspace='5' alt='Alert'>");
  document.write ("</td>");
  document.write ("<td>");
  if (ires == 3 || ires == 4) {
    document.write (sMsgBr);
  }
  else {
    document.write (sMsgFl);
  }
  document.write ("<br><br>");
  document.write ("</td>");
  document.write ("</tr>");

  if (ires == 4)
  {
    document.write ("<tr>");
    document.write ("<td valign='top'>");
    document.write ("<img src='/images/ic/ap/32/warning.gif' width='32' height='32' align='left' hspace='5' alt='Alert'>");
    document.write ("</td>");
    document.write ("<td>");
    document.write (sMsgFl);
    document.write ("<br><br>");
    document.write ("</td>");
    document.write ("</tr>");
  }

  if (ires == 2 || ires == 4)
  {
    for (var i = 1; i < 5; i++)
    {
      sURLfl = sURLfl.replace(eval("/&Check=" + i + "/g"), "");
      sURLfl = sURLfl.replace(eval("/\\?Check=" + i + "/g"), "");
    }
    if (!bSkip) {
      document.write ("<tr>");
      document.write ("<td align='center' colspan=2>");
      document.write ("<div id='flashcontent'></div>");
      document.write ("<script type='text/javascript'>");
      document.write ("var so = new SWFObject('', '', '370', '137', '10', '#ece9d8', 'best','" + sURLfl + "','');");
      document.write ("so.useExpressInstall('/template/expressinstall.swf');");
      document.write ("so.write('flashcontent');");
      document.write ("</script>");
      document.write ("<br>");
      document.write ("</td>");
      document.write ("</tr>");
    }
  }

  document.write ("</table>");
  document.write ("<br></div></div>");

  aw = document.getElementById('alertWindow');
  createMask();
  showWindow(aw);
}

function hideAlertWindow(blnRedirect, strURL)
{
  var aw = document.getElementById('alertWindow');
  aw.style.display = "none";
  removeMask();

  if (parseInt(blnRedirect, 10) == 1) {
    document.location = strURL;
  }
}

function checkBrowserFlash(blnRedirect, iJmpCode, strURL) {
  var ival = 1;
  var ires = 1;
  var bval1 = checkFlash();
  var bval2 = checkBrowser();

  if (!bval1) {
    ires = 2;
  }
  if (!bval2) {
    ires = 3;
  }
  if (!bval1 && !bval2) {
    ires = 4;
  }

  if (strURL !== ''){
    for (var i = 1; i < 5; i++) {
      strURL = strURL.replace(eval("/&Check=" + i + "/g"), "");
      strURL = strURL.replace(eval("/\\?Check=" + i + "/g"), "");
    }

    if(iJmpCode != 1) {
      ival = 1;
    }
    else {
      ival = ires;
    }
    if (strURL.indexOf("?") == -1) {
      strURL = strURL + "?Check=" + ival;
    }
    else {
      strURL = strURL + "&Check=" + ival;
    }

    if (iJmpCode != 1) {
      if (ires > 1) {
        showAlertWindow(blnRedirect, ires, strURL);
      }
    }
    else {
      document.location = strURL;
    }
  }

  return ires;
}

function calculateOffsetLeft(objInputField) {
  var blnIE = document.all ? true : false;
  var lngTotal = objInputField.offsetLeft;
  var objParent = objInputField.offsetParent;

  while(objParent){
    if(blnIE){
      if((objParent.tagName != "TABLE") && (objParent.tagName != "BODY") && (objParent.tagName != "DIV")){
        lngTotal += objParent.clientLeft;
      }
    }
    else {
      if(objParent.tagName == "TABLE"){
        var lngParentBorder = parseInt(objParent.border, 10);
        if(isNaN(lngParentBorder)){
          var strParentFrame = objParent.getAttribute('frame');
          if(strParentFrame !== null) {
            lngTotal += 1;
          }
        }
      }
    }

    lngTotal += objParent.offsetLeft;
    objParent = objParent.offsetParent;
  }
  return lngTotal;
}

function calculateOffsetTop(objInputField) {
  var blnIE = document.all ? true : false;
  var lngTotal = objInputField.offsetTop;
  var objParent = objInputField.offsetParent;

  while (objParent !== null){
    if(blnIE){
      if((objParent.tagName != "TABLE") && (objParent.tagName != "BODY") && (objParent.tagName != "DIV")){
        lngTotal += objParent.clientTop;
      }
    }
    else {
      if(objParent.tagName == "TABLE") {
        var lngParentBorder = parseInt(objParent.border, 10);
        if(isNaN(lngParentBorder)) {
          var strParentFrame = objParent.getAttribute('frame');
          if(strParentFrame !== null) {
            lngTotal += 1;
          }
        }
      }
    }

    lngTotal += objParent.offsetTop;
    objParent = objParent.offsetParent;
  }
  return lngTotal;
}

function calculateWidth(objInputField) {
  if(navigator && navigator.userAgent.toLowerCase().indexOf('msie') == -1) {
    return objInputField.offsetWidth - 2;
  }
  else {
    return objInputField.offsetWidth;
  }
}

function isInContainer(objElement, objContainer) {
  var blnContainer = false;
  var objParent;

  if(!objElement) {
    blnContainer = false;
    return blnContainer;
  }
  else {
    objParent = objElement.parentNode;
  }

  if(objElement === objContainer) {
    blnContainer = false;
    return blnContainer;
  }

  while (objParent !== null){
    if(objParent === objContainer) {
      blnContainer = true;
      return blnContainer;
    }
    objParent = objParent.parentNode;
  }
  return blnContainer;
}

var advEditor, strNextHTMLQuestion;
var bMSIE2 = (window.navigator.userAgent.indexOf("MSIE")>=1) && (typeof(window.opera) === 'undefined');
var bDHTMLSaveEditor = false;
var bModified = false;
var bDisableChangeWarning = false;
var bSample = true;
var focusSet = false;
var fldfocus = null;

function getCookie(name) {
  var start = document.cookie.indexOf(name + "=");
  var len = start + name.length + 1;
  if ((!start) && (name != document.cookie.substring(0, name.length))) {
    return null;
  }
  if (start == -1) {
    return null;
  }
  var end = document.cookie.indexOf(";", len);
  if (end == -1) {
    end = document.cookie.length;
  }
  return unescape(document.cookie.substring(len,end));
}

function setCookie(name, value, expires, path, domain, secure) {
  document.cookie = name + "=" + escape(value) +
    ( (expires) ? ";expires=" + expires.toGMTString() : "") +
    ( (path) ? ";path=" + path : "") +
    ( (domain) ? ";domain=" + domain : "") +
    ( (secure) ? ";secure" : "");
}

function setCheckbox(chkBox, value) {
  var elem = document.getElementById(chkBox);
  elem.checked = value;
}

function updateEvent(e, evt, upd, bf){
  try {
    var f = "", spitIndex = -1;
    var f1 = "", f2 = "";

    eval("try {f = e." + evt + ".toString() } catch(ex){}");
    if (bf) {
      spitIndex = f.indexOf("{");
      if (spitIndex >= 0){
        spitIndex++ ;
      }
    }
    else {
      spitIndex = f.lastIndexOf("}");
    }
    if (spitIndex > 0) {
      f1 = f.substr(0, spitIndex);
      f2 = f.substr(spitIndex);
    }
    else {
      f1 = "function(){";
      f2 = "}";
    }
    eval("e." + evt + " = " + f1 + "\n" + upd + "\n" + f2);
  }
  catch(ex) {
    return;
  }
}

function formInit(frm) {
  var i;
  var e;
  if (!frm || frm.id === '') {
    return ;
  }

  var frmHasInputFile = false;
  var cancelBtns = [];
  for (i = 0; i < frm.elements.length; i++) {
    e = frm.elements[i];
    //if (!e.name.substring().match('QH\d+')){
    if (e.name.substr(1, 2) != 'QH'){
      if (!frmHasInputFile && e.tagName == "INPUT" && e.type == "file" ) {
        frmHasInputFile = true;
      }
      if(String(e.onchange).indexOf(frm.name + ".submit()") == -1) {
        updateEvent(e, "onchange", "bModified = true;", true);
      }
      else {
        updateEvent(e, "onchange", "bModified = false;", true);
      }
      if(e.tagName == "INPUT" && ( e.type == "submit" || e.type == "button") && e.name == "Sbmt" && e.value == "Cancel") {
        cancelBtns.push(e);
      }
    }
  }
  if(frmHasInputFile === true ){
    for (i = 0; i < cancelBtns.length; i++) {
      e = cancelBtns[i];
      updateEvent(e, "onclick", frm.name + ".reset(); return true;", false);
    }
  }
  updateEvent(frm, "onsubmit", " bDisableChangeWarning=true; bModified = false; window.setTimeout(\"disableButtons('" + frm.id + "')\", 1);", false);

}

function clickLink() {
  if (bDHTMLSaveEditor) {
    bModified = true;
  }

  if (!bDisableChangeWarning && bModified) {
    return "The data on the form were changed and haven't been saved.";
  }
}

function initializePage() {
  if (window.initFrm) {
    initFrm();
  }
  if(window.Form) {
    Form.initDefaultButton();
  }
  if (window.refreshJSUploadFrames) {
    refreshJSUploadFrames();
  }
  if (document.forms.length > 0) {
    for( var i = 0; i < document.forms.length; i++){
      formInit(document.forms.item(i));
    }
    if (window.event)
    {
      if (document.body.onbeforeunload) {
        document.body.onbeforeunload = clickLink();
      }
    }
    else {
      if (window.onbeforeunload) {
        window.onbeforeunload = clickLink();
      }
    }
  }
  var el = document.getElementById("banner");
  if (el) {
    doShowPopupBanner();
  }
}

function doShowPopupBanner() {
  var el = document.getElementById("banner");
  el.style.top = "100px";
  el.style.left = ((document.body.clientWidth - 100) / 2) + "px";
  el.style.display = "block";
}

function doClosePopupBanner() {
  var el = document.getElementById("banner");
  if (el) {
    el.style.display = "none";
  }
}

function setfocus() {
  var f = document.getElementById("frm");
  var eltLinked, blnNoLnkd;
  if (f !== null) {
    var i = 0;
    var j = 0;
    while (i < f.elements.length && j === 0) {
      var e = f.elements[i];
      var eltType = e.type;
      if (eltType !== 'hidden' && eltType.match("text|textarea|radio|checkbox")){
        var eltName = e.name;
        eltLinked = f.elements[eltName + 'Linked'];
        if(!eltLinked) {
          blnNoLnkd = true;
        }
        else {
          if (eltLinked.value === 0) {
            blnNoLnkd = true;
          }
        }
        if( blnNoLnkd) {
          if (e.disabled === false && eltName != "Seq1" && eltName != "RecsPerPage") {
            try { // suppress error if element is not visible
              e.focus();
              j = 1;
            }
            catch(e) {}
          }
        }
      }
      i++;
    }
  }
}

function saveHierarchyOrder() {
  var f = document.frm;
  var s = "";
  var c = f.getElementsByTagName("DIV");
  for (var i = 0; i < c.length; i++) {
    if (c[i].className == "treeitem-htc" || c[i].className == "treeitem-last-htc") {
      if (s.length > 0) {
        s += ",";
      }
      s += c[i].id;
    }
  }
  f.Order.value = s;
  f.Act.value = "Order";
  f.submit();
}

function jumpto(form) {
  var myindex = form.dest.selectedIndex;
  document.location = form.dest.options[myindex].value;
}

function createwin(newpage) {
  window.open(newpage, "mblastwin" + Math.floor(Math.random()*101), "height=580,scrollbars=yes,menubar=no,toolbar=no,location=no,resizable=yes,width=780,top=10,left=10");
}

function createwin2(url, target, features) {
  var newWin = window.open(url, target, features);
  if (newWin) {
    newWin.focus();
  }
}

function createwin2_3(url) {
  var h, w

  var h = document.body.offsetHeight * 3 / 4;
  var w = document.body.offsetWidth * 3 / 4;

  var newWin = window.open(url, '', "height=" + h + ",width=" + w + ",toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes");

  if (newWin) {
    newWin.focus();
  }
}

function getURLParam(url)
{
  var regexS = "[\\?&]URL=(.*)";
  var regex = new RegExp(regexS);
  var results = regex.exec(url);
  if (results === null) {
    return "";
  }
  else {
    return results[1];
  }
}

function encodeURL(url) {
  url = url.replace(/%/g, "%25");
  url = url.replace(/#/g, "%23");
  url = url.replace(/_/g, "%5F");
  url = url.replace(/&/g, "%26");
  url = url.replace(/\=/g, "%3D");
  url = url.replace(/\+/g, "%2B");
  url = url.replace(/\s/g, "%20");
  return url;
}

function createhelpwin(newpage, jumpto) {
  // Encode URL param
  var urlparam = getURLParam(newpage);
  newpage = newpage.replace(urlparam, encodeURL(urlparam));

  mblasthelp = window.open(newpage, "_blank", "height=560,scrollbars=yes,menubar=no,toolbar=no,location=no,resizable=yes,width=760,top=30,left=30");
}

function createpdfwin(newpage) {
  window.open(newpage, "document", "height=580,scrollbars=yes,menubar=yes,toolbar=yes,location=yes,width=780,resizable=yes,top=10,left=10");
}

function createWinFromField(fld, nme) {
  var surl = fld.value;
  if (surl.indexOf('http://',0) !== 0) {
    surl = "http://" + surl;
  }
  surl = encodeURL(surl);
  window.open(surl, "url", "height=500,scrollbars=yes,menubar=yes,toolbar=yes,location=yes,width=780,resizable=yes,top=10,left=10");
}

function showMsgBox(divMsgBox) {
  var x = document.body.offsetWidth;
  var y = document.body.offsetHeight;
  divMsgBox.style.posLeft = document.body.scrollLeft + x / 2 - 200;
  divMsgBox.style.posTop = document.body.scrollTop + y / 2 - 50;
  divMsgBox.style.display = "block";
  var divEkit = document.getElementById("divEkit");
  if (divEkit !== null) {
    divEkit.style.visibility = "hidden";
  }
}

function hideMsgBox(divMsgBox) {
  var divEkit = document.getElementById("divEkit");
  if (divEkit !== null) {
    divEkit.style.visibility = "visible";
  }
  divMsgBox.style.display = "none";
}

function createekitwin(ekitpage) {
  if(advEditor !== null){
    if(advEditor.closed !== undefined && !advEditor.closed) {
      advEditor.confirmSaveChanges(ekitpage);
      advEditor.focus();
      return;
    }
  }
  var width="580", height="525";

  var left = (screen.width/2) - width/2;
  var top = (screen.height/2) - height/2;

  var styleStr = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top;

  advEditor = window.open(ekitpage, "mblastwin", styleStr);

  if ((document.window !== null) && (!advEditor.opener)) {
    advEditor.opener = document.window;
  }
  advEditor.focus();
}

function printPDFwin(pdfurl) {
  if (msgbox) {
    var childs = msgbox.childNodes;
    for (var i = 0; i < childs.length; i++) {
      if (childs[i].id == 'ms_content') {
        childs[i].innerHTML = '<div align=center><a href="#" onclick="createpdfwin(\'' + pdfurl + '\'); hideMessageBox();">Click here to print the form.</a></div>';
      }
    }
  }
}

function printPDF(url) {
  showMessageBox('Print', '<div align="center">Preparing form to be printed. Please wait.</div>', 300, 110, 0, ['Cancel'], [''], '');
  sendRequest(url, printPDFwin);
}

function validatePreview() {
  if (!isNotEmptyMultiple(document.frm.Q27, "Choose an ad size and shape", null, null)){
    return false;
  }
  var errfld = document.getElementById(getErrorField('Q27'));
  if (isRadioSelectedByValue('Q27', 8)){
    if (errfld != null) {
      errfld.innerHTML = 'Online preview not available for this size, a proof will be provided to you before we go to press.';
      errfld.style.display = 'block';
    }
    return false;
  }
  else {
    removeErrorMsg(document.frm.Q27, true);
  }
  return validatefrm(frm);
}

function showPDFPreviewOnLoad(templateName) {
  showMessageBox('Preview', '<div align="center">Preparing form to preview. Please wait.</div>', 300, 110, 0, ['Cancel'], [''], '');
  var aspURL = '/ws/pdftemplate.asp'

  Form.submitTo(aspURL + '?Template=' + templateName, '',
    function(xmlRequest) {
      if (xmlRequest) {
        if (xmlRequest.readyState == 4) {
          if (msgbox) {
            var childs = msgbox.childNodes;
            for (var i = 0; i < childs.length; i++) {
              if (childs[i].id == 'ms_content') {
                childs[i].innerHTML = '<div align=center><a href="#" onclick="createpdfwin(\'' + xmlRequest.responseText + '\'); hideMessageBox();">Click here to preview the form.</a></div>';
              }
            }
          }
        }
      }
    }
  );
}

function showPDFPreview2() {
  var xmlRequest = getXMLHTTP();
  var head = encodeURIComponent(document.documentElement.childNodes[0].innerHTML);
  var mainContent = encodeURIComponent(document.getElementById('mainContent').innerHTML);
  var postData = "HEAD=" + head + "&Content=" + mainContent; //"HTML=" + encodeURIComponent(document.documentElement.innerHTML);

  xmlRequest.open("POST", "/ws/formpdf2.asp", true);


  xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xmlRequest.onreadystatechange = function() {
    if (xmlRequest) {
      if (xmlRequest.readyState == 4) {
        var width="580", height="525";
        var left = (screen.width/2) - width/2;
        var top = (screen.height/2) - height/2;
        var styleStr = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top;
        window.open(xmlRequest.responseText, "PDFPreview", styleStr);
      }
    }
  };
  xmlRequest.send(postData);
  return false;
}

function showPDFPreviewWindow(result) {
  window.open(ekitpage, "mblastwin", styleStr);
}

var emailbox = null;
var pdfattach = null;
var uploadbox = null;

function checkUploadBox() {
  if (uploadbox) {
    if (isEmpty(document.getElementById('FileNameFILENAME'))) {
      alert('Please select file to upload.');
    }
    else {
      document.getElementById('FileNameFILENAME').value = '';
      document.getElementById('FileNameFILEDISPLAY').innerHTML = '';
      if (document.getElementById('FileNameSTATUS') != null) {
        document.getElementById('FileNameSTATUS').innerHTML = '';
      }
      hideUploadBox();
    }
  }
}

function hideUploadBox() {
  if (uploadbox) {
    uploadbox.style.display = "none";
    removeMask();
    uploadbox = null;
  }
}

function hideEmailBox() {
  if (emailbox) {
    emailbox.style.display = "none";
    removeMask();
    document.body.removeChild(emailbox);
    emailbox = null;
  }
}

function emailPDF(pdfurl) {
  var progress = document.getElementById('attachprogress');
  if (progress) {
    progress.innerHTML = '<div align=left><a href="#" onclick="createpdfwin(\'' + pdfurl + '\'); ">formpdf.pdf</a></div>';
  }

  var btnSend = document.getElementById('btn_Send');
  if (btnSend) {
    btnSend.disabled = false;
    btnSend.className = "buttonopen";
  }

  pdfattach = pdfurl;
}

function EmailBoxButton(name, action, msgbox, disabled, id) {
  this.elt = document.createElement("INPUT");
  this.elt.type = "button";
  this.elt.id = id;
  if (disabled) {
    this.elt.className = "buttonopen_disabled";
    this.elt.disabled = disabled;
  }
  else {
    this.elt.className = "buttonopen";
    this.elt.disabled = false;
  }
  this.elt.style.marginLeft = "3px";
  this.elt.style.marginRight = "3px";
  this.elt.value = name;
  if (action === "") {
    // Close messagebox
    this.elt.onclick = function(e) {hideEmailBox();};
  }
  else if (action.indexOf("jscrpt:") === 0) {
    // Execute javascript
    var scrpt = action.substr(7);
    eval('this.elt.onclick = function(e) {' + scrpt + '; }');
  }
}

function showEmailBox(url, title, to, email, subj, body, width, height) {
  var tr;
  var td;
  var bnt;

  hideEmailBox();

  // Email box element
  emailbox = document.createElement("DIV");
  emailbox.className = "form-messagebox";
  emailbox.style.display = "none";
  emailbox.style.width = width;
  emailbox.style.height = height;
  document.body.appendChild(emailbox);

  // Title element
  var emailboxTitle = document.createElement("DIV");
  emailboxTitle.className = "header";
  emailbox.appendChild(emailboxTitle);
  emailboxTitle.innerHTML = title;

  // Content elements
  var tbl=document.createElement("table");

  // Ifno
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  td.colSpan = 2;
  var infocapt = document.createElement("DIV");
  infocapt.className = "body";
  infocapt.innerHTML = "Fill in the fields below to send an email with your present form as a .pdf attachment.";
  infocapt.align = "center";
  td.appendChild(infocapt);

  // To:
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  var tocapt = document.createElement("DIV");
  tocapt.className = "body";
  tocapt.innerHTML = "To";
  tocapt.align = "right";
  td.appendChild(tocapt);

  // To - edit
  td = tr.insertCell(-1);
  td.valign = "top";
  td.align = "left";
  var toedit = document.createElement("INPUT");
  toedit.value = to;
  toedit.size = 40;
  toedit.maxlength = 255;
  toedit.id = "to";
  td.appendChild(toedit);

  // Email:
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  var emailcapt = document.createElement("DIV");
  emailcapt.className = "body";
  emailcapt.innerHTML = "Email";
  emailcapt.align = "right";
  td.appendChild(emailcapt);

  // Email - edit
  td = tr.insertCell(-1);
  td.valign = "top";
  td.align = "left";
  var emailedit = document.createElement("INPUT");
  emailedit.value = email;
  emailedit.size = 40;
  emailedit.maxlength = 255;
  emailedit.id = "email";
  td.appendChild(emailedit);

  // Subject:
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  var subjcapt = document.createElement("DIV");
  subjcapt.className = "body";
  subjcapt.innerHTML = "Subject";
  subjcapt.align = "right";
  td.appendChild(subjcapt);

  // Subject - edit
  td = tr.insertCell(-1);
  td.valign = "top";
  td.align = "left";
  var subjedit = document.createElement("INPUT");
  subjedit.value = subj;
  subjedit.size = 40;
  subjedit.maxlength = 255;
  subjedit.id = "subj";
  td.appendChild(subjedit);

  // Body:
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  var bodycapt = document.createElement("DIV");
  bodycapt.className = "body";
  bodycapt.innerHTML = "Body";
  bodycapt.align = "right";
  td.appendChild(bodycapt);

  // Body - edit
  td = tr.insertCell(-1);
  td.valign = "top";
  td.align = "left";
  var bodyedit = document.createElement("TEXTAREA");
  bodyedit.value = body;
  bodyedit.cols = 45;
  bodyedit.rows = 5;
  bodyedit.id = "emailbody";
  td.appendChild(bodyedit);

  // Attachment
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  var attachcapt = document.createElement("DIV");
  attachcapt.className = "body";
  attachcapt.innerHTML = "Attachment";
  attachcapt.align = "right";
  td.appendChild(attachcapt);

  // Attachment - progress
  td = tr.insertCell(-1);
  td.valign = "top";
  td.align = "left";
  var attachprogress = document.createElement("DIV");
  attachprogress.className = "body";
  attachprogress.innerHTML = "Preparing form to be emailed. Please wait.";
  attachprogress.align = "left";
  attachprogress.id = "attachprogress";
  td.appendChild(attachprogress);

  emailbox.appendChild(tbl);

  // Buttons
  var emailboxButtons = document.createElement("DIV");
  emailboxButtons.className = "body";
  emailboxButtons.align = "center";
  emailbox.appendChild(emailboxButtons);

  bnt = new EmailBoxButton('Send', 'jscrpt:sendEmailBox();', emailbox, true, 'btn_Send');
  emailboxButtons.appendChild(bnt.elt);

  bnt = new EmailBoxButton('Cancel', '', emailbox, false, 'btn_Cancel');
  emailboxButtons.appendChild(bnt.elt);

  createMask();
  showWindow(emailbox);

  sendRequest(url, emailPDF);

}

function sendEmailBox() {
  var to = document.getElementById('to');
  var email = document.getElementById('email');
  var subj = document.getElementById('subj');
  var emailbody = document.getElementById('emailbody');
  var aspURL = '/code/workspace/emailpdf.asp';

  if (validateEmail(email)) {
    var xmlhttp = getXMLHTTP();
    xmlhttp.open("GET", aspURL + '?To=' + encodeURL(to.value) + '&Email=' + encodeURL(email.value) + '&Subj=' + encodeURL(subj.value) + '&Body=' + encodeURL(emailbody.value) + '&PDF=' + encodeURL(pdfattach), false);
    xmlhttp.send(null);
    hideEmailBox();
  }
}

function showEmailBox2(url, title, to, email, subj, body, width, height) {
  var tr;
  var td;
  var bnt;

  hideEmailBox();

  // Email box element
  emailbox = document.createElement("DIV");
  emailbox.className = "form-messagebox";
  emailbox.style.display = "none";
  emailbox.style.width = width;
  emailbox.style.height = height;
  document.body.appendChild(emailbox);

  // Title element
  var emailboxTitle = document.createElement("DIV");
  emailboxTitle.className = "header";
  emailbox.appendChild(emailboxTitle);
  emailboxTitle.innerHTML = title;

  // Content elements
  var tbl=document.createElement("table");

  // Ifno
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  td.colSpan = 2;
  var infocapt = document.createElement("DIV");
  infocapt.className = "body";
  infocapt.innerHTML = "Fill in the fields below to send an email with your present form as a .pdf or .xls attachment.";
  infocapt.align = "center";
  td.appendChild(infocapt);

  // To:
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  var tocapt = document.createElement("DIV");
  tocapt.className = "body";
  tocapt.innerHTML = "To";
  tocapt.align = "right";
  td.appendChild(tocapt);

  // To - edit
  td = tr.insertCell(-1);
  td.valign = "top";
  td.align = "left";
  var toedit = document.createElement("INPUT");
  toedit.value = to;
  toedit.size = 40;
  toedit.maxlength = 255;
  toedit.id = "to";
  td.appendChild(toedit);

  // Email:
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  var emailcapt = document.createElement("DIV");
  emailcapt.className = "body";
  emailcapt.innerHTML = "Email";
  emailcapt.align = "right";
  td.appendChild(emailcapt);

  // Email - edit
  td = tr.insertCell(-1);
  td.valign = "top";
  td.align = "left";
  var emailedit = document.createElement("INPUT");
  emailedit.value = email;
  emailedit.size = 40;
  emailedit.maxlength = 255;
  emailedit.id = "email";
  td.appendChild(emailedit);

  // Subject:
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  var subjcapt = document.createElement("DIV");
  subjcapt.className = "body";
  subjcapt.innerHTML = "Subject";
  subjcapt.align = "right";
  td.appendChild(subjcapt);

  // Subject - edit
  td = tr.insertCell(-1);
  td.valign = "top";
  td.align = "left";
  var subjedit = document.createElement("INPUT");
  subjedit.value = subj;
  subjedit.size = 40;
  subjedit.maxlength = 255;
  subjedit.id = "subj";
  td.appendChild(subjedit);

  // Body:
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  var bodycapt = document.createElement("DIV");
  bodycapt.className = "body";
  bodycapt.innerHTML = "Body";
  bodycapt.align = "right";
  td.appendChild(bodycapt);

  // Body - edit
  td = tr.insertCell(-1);
  td.valign = "top";
  td.align = "left";
  var bodyedit = document.createElement("TEXTAREA");
  bodyedit.value = body;
  bodyedit.cols = 45;
  bodyedit.rows = 5;
  bodyedit.id = "emailbody";
  td.appendChild(bodyedit);

  // Attachment type:
  tr = tbl.insertRow(-1);
  td = tr.insertCell(-1);
  td.valign = "top";
  var attachcapt = document.createElement("DIV");
  attachcapt.className = "body";
  attachcapt.innerHTML = "Attachment<br>type";
  attachcapt.align = "right";
  td.appendChild(attachcapt);

  // Attachment type Excel - edit
  td = tr.insertCell(-1);
  td.valign = "top";
  td.align = "left";
  var attachtype = document.createElement("DIV");
  attachtype.className = "body";
  var strAttachType = "<input type=\"radio\" name=\"attachtype\" value=\"0\" checked>&nbsp;Excel&nbsp;&nbsp;&nbsp;";
  strAttachType += "<input type=\"radio\" name=\"attachtype\" value=\"1\">&nbsp;PDF";
  attachtype.innerHTML = strAttachType;
  td.appendChild(attachtype);

  emailbox.appendChild(tbl);

  // Buttons
  var emailboxButtons = document.createElement("DIV");
  emailboxButtons.className = "body";
  emailboxButtons.align = "center";
  emailbox.appendChild(emailboxButtons);

  bnt = new EmailBoxButton('Send', 'jscrpt:sendEmailBox2(\'' + url + '\');', emailbox, false, 'btn_Send');
  emailboxButtons.appendChild(bnt.elt);

  bnt = new EmailBoxButton('Cancel', '', emailbox, false, 'btn_Cancel');
  emailboxButtons.appendChild(bnt.elt);

  createMask();
  showWindow(emailbox);
}

function sendEmailBox2(url) {
  var to = document.getElementById('to');
  var email = document.getElementById('email');
  var subj = document.getElementById('subj');
  var emailbody = document.getElementById('emailbody');
  var filetype = 0;
  if (validateEmail(email)) {
    if ((subj.value != '') && (to.value != '') && (emailbody.value != '') && (isRadioSelectedByValue('attachtype', 0) || isRadioSelectedByValue('attachtype', 1))) {
      if (isRadioSelectedByValue('attachtype', 1)) filetype = 1;
      hideEmailBox();
      sendRequest(url + '&ToName=' + encodeURL(to.value) + '&ToEmail=' + encodeURL(email.value) + '&Subject=' + encodeURL(subj.value) + '&Body=' + encodeURL(emailbody.value) + '&FileType=' + filetype, execrezult);

      hideMessageBox();
      showMessageBox('Sending data', '<div><center><img src="/images/spinner.gif" border=0 align="middle" vspace=15 alt=""></center></div>', 300, 110, 0, [], [], '');
    }
    else {
      alert('Please fill fields: to, subject, body and select attachment type.');
    }
  }
}

function execrezult(strValue) {
  hideMessageBox();
  //eval(strValue);
}

function createPDF(pdfurl) {
  showMessageBox('Create PDF', '<div align="center">Creating PDF. Please wait.</div>', 300, 110, 0, ['Cancel'], [''], '');
  sendRequest(pdfurl, showPDFRezultLink);
}

function createExcel(excelurl) {
  showMessageBox('Create Excel', '<div align="center">Creating Excel. Please wait.</div>', 300, 110, 0, ['Cancel'], [''], '');
  sendRequest(excelurl, showRezultLink);
}

function showPDFRezultLink(link) {
  if (msgbox) {
    var childs = msgbox.childNodes;
    for (var i = 0; i < childs.length; i++) {
      if (childs[i].id == 'ms_content') {
        childs[i].innerHTML = '<div align=center><a href="#" onclick="createpdfwin(\'' + link + '\');">Click here to open file.</a></div>';
      }
    }
  }
}

function showRezultLink(link) {
  if (msgbox) {
    var childs = msgbox.childNodes;
    for (var i = 0; i < childs.length; i++) {
      if (childs[i].id == 'ms_content') {
        childs[i].innerHTML = '<div align=center><a href="' + link + '" onclick="hideMessageBox();">Click here to open file.</a></div>';
      }
    }
  }
}

function showUploadBox() {
  hideUploadBox();
  uploadbox = document.getElementById('uploadbox');
  createMask();
  showWindow(uploadbox);
  return false;
}

function ekitSaveHTML() {
  var fld = document.frm.FormFieldName.value;
  var srcFrm = window.opener.document.forms.frm;

  if(fld !== '') {
    srcFrm.elements[fld].value = document.Ekit.getDocumentBody();
  }
  else {
    srcFrm.HTML.value = document.Ekit.getDocumentBody();
  }
}

function ekitSaveHTMLAndClose() {
  ekitSaveHTML();
  window.close();
}

function ekitCancel() {
  window.close();
}

function ekitEditNextQuestion(divMsgBox, blnSave) {
  hideMsgBox(divMsgBox);
  if (blnSave === true ) {
    ekitSaveHTML();
  }
  window.location.href = strNextHTMLQuestion;
}

function ekitLoadHTML() {
  var html;
  var fld = document.frm.FormFieldName.value;

  if(fld !== '') {
    html = window.opener.document.forms.frm.elements[fld].value;
  }
  else {
    html = window.opener.document.forms.frm.HTML.value;
  }

  document.Ekit.setDocumentText(html);
}

function createDHTMLwin(dhtmlpage) {
  if(advEditor !== null && advEditor !== undefined){
    if(advEditor.closed !== undefined && !advEditor.closed){
      advEditor.confirmSaveChanges(dhtmlpage);
      advEditor.focus();
      return;
    }
  }

  var width="650", height="590";

  var left = (screen.width/2) - width/2;
  var top = (screen.height/2) - height/2;

  var styleStr = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top;

  advEditor = window.open(dhtmlpage, "mblastwin", styleStr);
  //alert('advEditor'+advEditor.opener);

  if ((document.window !== null) && (!advEditor.opener)) {
    advEditor.opener = document.window;
  }
  advEditor.focus();
}

function includesHTMLTags(text) {
  var START_HTML_TAG = '<';

  if (text.search(START_HTML_TAG) != -1) {
    return true;
  }
  return false;
}

function translateCRToParagraphTag(text) {
  var html = "";
  if (!includesHTMLTags(text)) {

    var j = 0, i;

    for (i = 0; i <= text.length; i++){
      if ((text.charAt(i) == '\n') || (i == text.length)) {
        html += "<p>" + text.substr(j, i-j) + "</p>";
        j = i;
      }
    }
    return html;
  }
  else {
    return text;
  }
}

function editorLoadHTML() {
  var html;
  var fld = document.frm.FormFieldName.value;

  if(fld !== '') {
    html = window.opener.document.forms.frm.elements[fld].value;
  }
  else {
    html = window.opener.document.forms.frm.HTML.value;
  }
  html = translateCRToParagraphTag(html);
  document.frames("editor").document.all.rcLabel.innerHTML = html;
}

function editorSaveHTML() {
  var fld = document.frm.FormFieldName.value;
  var re2 = new RegExp('href="http://[^/]*/DHTMLeditor/editor.html(#[^"/]*)/?"',"gi");
  var str;
  var i;

  if(document.frames("editor").document.all.rcLabel.style.display!='none') {
    str= document.frames("editor").document.all.rcLabel.innerHTML;
  }
  else {
    str= document.frames("editor").document.all.rcHTML.innerText;
  }
  str = str.replace(/src=\"http\:\/\/\w+\.mblast\.com\//gi, "src=\"/");
  str = str.replace(re2,'href="$1"');
  for (i = 0; i < str.length; i++) {
    if(str.charCodeAt(i)>126) {
      var subStr = str.substr(0,i);
      var chr = "&#"+str.charCodeAt(i)+";";
      str = subStr + chr + str.substr(i+1,str.length);
    }
  }
  if(fld !== '') {
    window.opener.document.forms.frm.elements[fld].value = str;
  }
  else {
    window.opener.document.forms.frm.HTML.value = str;
  }

}

function editorSaveHTMLAndClose() {
  editorSaveHTML();
  window.close();
}

function editorCancel() {
  window.close();
}

function editorEditNextQuestion(divMsgBox, blnSave) {
  hideMsgBox(divMsgBox);
  if (blnSave === true ) {
    editorSaveHTML();
  }
  window.location.href = strNextHTMLQuestion;
}

function classificationpicklist(form, classname, classtext, classspan) {
  window.open("/workspace/classificationpicklist.asp?RtnFormId=" + form + "&RtnClass=" + classname + "&RtnClassText=" + classtext + "&RtnClassSpan=" + classspan + "", "pickclassification", "height=550,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,resizable=yes,width=750");
}

function classprofilepicklist(form, sessionid, name) {
  window.open("/workspace/coclass/profilelist.asp?RtnFormID=" + form + "&RtnSessionID=" + sessionid + "&RtnName=" + name + "", "pickclassprofile", "height=550,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,width=750");
}

function logopicklist(el, company) {
  if(window.Form) {
    if(Form.FormCoID() !== 0) {
      company = Form.FormCoID();
    }
  }
  window.open("/logopicklist.asp?Set=" + el + "&CoID=" + company, "picklogo", "height=550,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,resizable=1,width=750");
}

function questionpicklist(form, question, questionid) {
  window.open("/code/workspace/questionpicklist.asp?QuestionId=" + encodeURL(window.document.forms[form].elements[questionid].value) + "&RtnFormId=" + form + "&RtnQuestion=" + question + "&RtnQuestionId=" + questionid + "", "pickquestion", "height=200,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,width=580");
}

var lastDisableChangeWarning = false;

function getXMLHTTP() {
  var xmlhttp = false;

  if (!xmlhttp && typeof XMLHttpRequest !== 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    }
    catch (e) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp) {
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e2) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e3) {
        xmlhttp = false;
      }
    }
  }

  if (!xmlhttp && window.createRequest) {
    try {
      xmlhttp = window.createRequest();
    }
    catch (e4) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}

function sendRequest(url, callback) {
  var xmlhttp = getXMLHTTP();

  xmlhttp.open("GET", url, true);
  xmlhttp.onreadystatechange = function() {
    if (xmlhttp) {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        callback(xmlhttp.responseText);
      }
    }
  };
  xmlhttp.send(null);

  return xmlhttp;
}

function sendRequestWithContext(url, context, callback) {
  var xmlhttp = getXMLHTTP();

  xmlhttp.open("GET", url, true);
  xmlhttp.onreadystatechange = function() {
    if (xmlhttp) {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        callback(xmlhttp.responseText, context);
      }
    }
  };
  xmlhttp.send(null);

  return xmlhttp;
}

function sendRequestXMLWithContext(url, context, callback) {
  var xmlhttpXML = getXMLHTTP();

  xmlhttpXML.open("GET", url, true);
  xmlhttpXML.onreadystatechange = function() {
    try
    {
      if (xmlhttpXML) {
        if (xmlhttpXML.readyState == 4 && xmlhttpXML.status == 200) {
          callback(xmlhttpXML.responseXML, context);
        }
      }
    }
    catch(e){}
  };
  xmlhttpXML.send(null);

  return xmlhttpXML;
}

function encodeHTML(str){
  var result = '';
  var i;

  for (i = 0; i < str.length; i++){
    result += "&#"+str.charCodeAt(i)+";";
  }
  return result;
}

function searchPicklist(nameField, listType, pg, pgMove, selectProfile, helpText) {
  var searchValue = document.getElementById(nameField + 'search').value;
  var xmlhttp = getXMLHTTP();
  var resultValue = "";

  if (searchValue !== '') {
    if (document.getElementById(nameField + "displayaddspan") !== null) {
      document.getElementById(nameField + "displayaddspan").style.display = "block";
    }

    document.getElementById(nameField + "resultspan").innerHTML = "Searching...";
    xmlhttp.open("GET", '/tm/pick' + listType + '.asp?SearchName=' + encodeURL(searchValue) + '&NameField=' + nameField + '&Page=' + pg + '&PageMove=' + pgMove + '&SelectProfile=' + selectProfile, true);

    xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState == 4) {
        if (helpText === null) {
          if (document.getElementById(nameField + "helpresultspan") !== null) {
            helpText = document.getElementById(nameField + "helpresultspan").value;
          }
        }
        if (helpText !== undefined) {
          if (helpText.length !== 0) {
            resultValue = helpText + '<br>';
          }
        }
        resultValue = resultValue + xmlhttp.responseText;
        document.getElementById(nameField + "resultspan").innerHTML = resultValue;
        document.getElementById(nameField + "resultspan").style.display = "block";
      }
    };
    xmlhttp.send(null);
  }
  else {
    document.getElementById(nameField + "resultspan").innerHTML = "You did not enter any text in the Search box. Please enter desired search text in the Search box in order to see proper Search results.";
  }
}

function showPicklist(nameField, listType, selectProfile, helpText) {
  var searchValue = document.getElementById(nameField + 'search').value;
  if (helpText === undefined) {
    helpText = '';
}
if (document.frm !== undefined) {
    lastDisableChangeWarning = document.frm.disableChangeWarning;
    document.frm.disableChangeWarning = true;
}
  if (document.getElementById(nameField + "searchspan") !== null)
    document.getElementById(nameField + "searchspan").style.display = "block";
  if (document.getElementById(nameField + "resultspan") !== null)
    document.getElementById(nameField + "resultspan").style.display = "block";
  if (document.getElementById(nameField + "clienttype") !== null)
    document.getElementById(nameField + "clienttype").style.display = "none";
  if (document.getElementById(nameField + "display") !== null)
    document.getElementById(nameField + "display").style.display = "none";
  if (document.getElementById(nameField + "displayspan") !== null)
    document.getElementById(nameField + "displayspan").style.display = "none";
  if (document.getElementById(nameField + "secondsearchspan") !== null)
    document.getElementById(nameField + "secondsearchspan").style.display = "none";
  searchPicklist(nameField, listType, '', '', selectProfile, helpText);
  if (searchValue === "") {
    document.getElementById(nameField + "resultspan").innerHTML = "";
  }
  var srchFld = document.getElementById(nameField + 'search');
  if (srchFld !== null) {
    try {
      srchFld.focus();
    }
    catch(ex) {}
  }
}

function searchSecondPicklist(nameField, listType, pg, pgMove, recordID, searchType, searchName) {
  var xmlhttp = getXMLHTTP();

  document.getElementById(nameField + "resultspan").innerHTML = "Searching for " + searchType + " for " + searchName + " ...";
  xmlhttp.open("GET", "/tm/pick" + listType + ".asp?RecordID=" + recordID + "&NameField=" + nameField + "&Page=" + pg + "&PageMove=" + pgMove + "&Action=Search2", true);

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
      document.getElementById(nameField + "resultspan").innerHTML = xmlhttp.responseText;
    }
  };
  xmlhttp.send(null);
  if (document.getElementById(nameField + "searchname") !== null) {
    document.getElementById(nameField + "searchname").innerHTML = searchName;
  }
  if (document.getElementById(nameField + "searchspan") !== null) {
    document.getElementById(nameField + "searchspan").style.display = "none";
  }
  if (document.getElementById(nameField + "secondsearchspan") !== null) {
    document.getElementById(nameField + "secondsearchspan").style.display = "block";
  }
}

function showSecondPicklist(nameField, listType, recordID, searchType, searchName) {
  var searchValue = document.getElementById(nameField + 'search').value;

  lastDisableChangeWarning = document.frm.disableChangeWarning;
  document.frm.disableChangeWarning = true;
  document.getElementById(nameField + "searchspan").style.display = "block";
  document.getElementById(nameField + "resultspan").style.display = "block";
  document.getElementById(nameField + "displayspan").style.display = "none";
  if (document.getElementById(nameField + "secondsearchspan") !== null) {
    document.getElementById(nameField + "secondsearchspan").style.display = "none";
  }
  searchSecondPicklist(nameField, listType, '', '', recordID, searchType, searchName);
  if (searchValue === "") {
    document.getElementById(nameField + "resultspan").innerHTML = "";
  }
}

function hidePicklist(nameField) {
  if (document.getElementById(nameField + "searchspan") !== null)
    document.getElementById(nameField + "searchspan").style.display = "none";
  if (document.getElementById(nameField + "resultspan") !== null)
    document.getElementById(nameField + "resultspan").style.display = "none";
  if (document.getElementById(nameField + "resultspanshadow") !== null)
    document.getElementById(nameField + "resultspanshadow").style.display = "none";
  if (document.getElementById(nameField + "clienttype") !== null)
    document.getElementById(nameField + "clienttype").style.display = "none";
  if (document.getElementById(nameField + "display") !== null)
    document.getElementById(nameField + "display").style.display = "block";
  if (document.getElementById(nameField + "displayspan") !== null)
    document.getElementById(nameField + "displayspan").style.display = "block";
  if (document.getElementById(nameField + "secondsearchspan") !== null)
      document.getElementById(nameField + "secondsearchspan").style.display = "none";
  if (document.frm !== undefined) {
      document.frm.disableChangeWarning = lastDisableChangeWarning;
  }
}

function addCompany(nameField, profileType) {
  hidePicklist(nameField);
  var searchValue = document.getElementById(nameField + 'search').value;
  createwin('/tm/addcompany.asp?Action=Add&Name=' + encodeURL(searchValue) + '&FieldName=' + nameField + '&Type=' + profileType);
}

function addCompanyClient(nameField, prCoID, termCompany) {
  hidePicklist(nameField);
  var searchValue = document.getElementById(nameField + 'search').value;
  createwin('/tm/addcompany.asp?Action=Add&Name=' + encodeURL(searchValue) + '&FieldName=' + nameField + '&Type=Client' + '&PRCoID=' + prCoID + '&TermCompany=' + termCompany);
}

function addEvent(nameField) {
  hidePicklist(nameField);
  var searchValue = document.getElementById(nameField + 'search').value;
  createwin('/tm/addevent.asp?Action=Add&Name=' + encodeURL(searchValue) + '&FieldName=' + nameField);
}

function addVenue(nameField) {
  hidePicklist(nameField);
  var searchValue = document.getElementById(nameField + 'search').value;
  createwin('/ws/view/viewvenue.asp?Action=Add&Name=' + encodeURL(searchValue) + '&FieldName=' + nameField);
}

function addPublication(nameField) {
  hidePicklist(nameField);
  var searchValue = document.getElementById(nameField + 'search').value;
  createwin('/workspace/view/viewpublication.asp?Action=Add&Name=' + encodeURL(searchValue) + '&FieldName=' + nameField);
}

function addContentGroup(nameField, contentType, portalGUID) {
  var contentTypePage = '';
  switch(contentType)
  {
    case 20: contentTypePage = 'article'; break;
    case 21: contentTypePage = 'analystreport'; break;
    case 22: contentTypePage = 'event'; break;
    case 23: contentTypePage = 'faq'; break;
    case 24: contentTypePage = 'glossary'; break;
    case 25: contentTypePage = 'link'; break;
    case 26: contentTypePage = 'newsletter'; break;
    case 27: contentTypePage = 'pressrelease'; break;
    case 28: contentTypePage = 'statistic'; break;
    case 29: contentTypePage = 'whitepaper'; break;
    case 30: contentTypePage = 'book'; break;
    case 32: contentTypePage = 'product'; break;
  }
  createwin('/tm/contentgroup' + contentTypePage + '.asp?Action=Add&FieldName=' + nameField + '&gu=' + portalGUID);
}

function locateRemoveLink(el, strText, showLink){
  if (showLink == 1){
    if (document.getElementById(el + 'Remove') !== null) {
      document.getElementById(el + 'Remove').style.display = 'inline';
    }
  }
  else{
    if (document.getElementById(el + 'Remove') !== null) {
      document.getElementById(el + 'Remove').style.display = 'none';
    }
    if (document.getElementById(el) !== null) {
      document.getElementById(el).value = '';
    }
    if (document.getElementById(el + 'display') !== null) {
      document.getElementById(el + 'display').innerHTML = 'Click Add ' + strText + ' -->';
    }
    if (document.frm !== undefined)
    {
      if (document.frm[el + ".Locate"] !== undefined) {
        document.frm[el + ".Locate"].value = document.frm[el + ".Locate"].value.replace("Change ","Add ");
      }
      if (document.frm[el + "search"] !== undefined) {
        document.frm[el + "search"].value = '';
      }
    }
    if(document.all) {// IE
      if (document.all[el + ".Locate"] !== undefined) {
        document.all[el + ".Locate"].value = document.all[el + ".Locate"].value.replace("Change ","Add ");
      }
    }else{
      if (document.getElementById(el + ".Locate") !== null) {
        document.getElementById(el + ".Locate").value = document.getElementById(el + ".Locate").value.replace("Change ","Add ");
      }
    }
    if(document.all) {// IE
      if (document.all[el + "search"] !== undefined) {
        document.all[el + "search"].value = '';
      }
    }else{
      if (document.getElementById(el + "search") !== null) {
        document.getElementById(el + "search").value = '';
      }
    }
  }
}

function isEmpty(fld) {
  if (fld.value === null || fld.value === undefined || fld.value.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1") === '') {
    return true;
  }
  return false;
}

function validateurl(fld) {
  if (fld.value == "This link is automatically populated by the system when you save the Preferences.") {
    return true
  }
  var pass = checkURL(fld.value);
  if(!pass) {
    alert('Error: URL is incomplete or contains invalid values.');
    if (!fld.disabled)
      fld.focus();
  }
  return pass;
}

function checkURL(url) {
  var objRE;
  var host, path, params, anchor, pos;
  var value = url.replace(new RegExp(/^((https?|ftp):\/\/)/i), "");

  host = value;
  path = "";
  params = "";
  anchor = "";

  pos = value.indexOf("#");
  if (pos != -1) {
    anchor = value.substr(pos + 1);
    value = value.substr(0, pos);
  }
  pos = value.indexOf("?");
  if (pos != -1) {
    params = value.substr(pos + 1);
    value = value.substr(0, pos);
  }
  pos = value.indexOf("/");
  if (pos != -1) {
    path = value.substr(pos);
    host = value.substr(0, pos);
  }

  // validate host
  if (host === '') {
    return false;
  }
  objRE = /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/;
  if (!objRE.test(host)) {
    return false;
  }
  // validate path
  if (path !== '') {
    objRE = /^((?:\/(?:[a-z0-9-,_\\\|\{\}<>\[\]#%\^\?:()~!`\+\*\-\.%\+=&])*)*)$/i;
    if (!objRE.test(path)) {
      return false;
    }
  }
  return true;
}

// Suggest Lists registry init
var marySuggestDefaultItem = []; // [nameField]: [0] - id, [1] - name, [2] - rawname
var marySuggestItems = []; // [nameField]: [i][0] - id, [i][1] - name
var marySuggestParams = []; //
var mobjActiveElement = null;
var mlngCurrentIndex = -1 ;
var mstrReqID = '';


function selectText(objElement, lngStart, lngEnd){
    if(objElement && objElement.value && objElement.value.length > 0){
        lngStart = (lngStart === undefined) ? 0 : lngStart;
        lngEnd = (lngEnd === undefined) ? objElement.value.length : lngEnd;

        if(objElement.setSelectionRange){
            objElement.setSelectionRange(lngStart, lngEnd);
        }
        else {
          if(objElement.createTextRange){
            var objRange = objElement.createTextRange();
            objRange.moveStart('character', lngStart);
            objRange.moveEnd('character', lngEnd - objElement.value.length);
            objRange.select();
          }
        }
    }
}

function setSuggestLines(nameField, lngLines){
  var lngLineHeight = 15;

  var rsltDIV = document.getElementById(nameField + 'resultspan');
  rsltDIV.style.height = lngLineHeight * lngLines + 'px';
  if (lngLines == 10 ) {
    rsltDIV.style.overflow = "auto";
  }
  else{
    rsltDIV.style.overflow = "";
  }

}

function setSuggestShadowSize(nameField){
  var objSearchField = document.getElementById(nameField + 'search');
  var objSuggestSpan = document.getElementById(nameField + 'resultspan');
  var objSuggestFrame = document.getElementById(nameField + 'resultframe');

  var objSuggestShadow = document.getElementById(nameField + 'resultspanshadow');
  var objSuggestShadowTopCenter = document.getElementById(nameField + 'shadowtc');
  var objSuggestShadowCenter = document.getElementById(nameField + 'shadowc');
  var objSuggestShadowMiddleCenter = document.getElementById(nameField + 'shadowmc');
  var objSuggestShadowBottomCenter = document.getElementById(nameField + 'shadowbc');

  if(objSuggestSpan.offsetLeft){
    objSuggestShadow.style.left = objSuggestSpan.offsetLeft + 4 + 'px';
    objSuggestFrame.style.left = objSuggestSpan.offsetLeft;
  }
  if(objSuggestSpan.offsetTop){
    objSuggestShadow.style.top = objSuggestSpan.offsetTop + 3 + 'px';
    objSuggestFrame.style.top = objSuggestSpan.offsetTop;
  }
  if(objSuggestSpan.offsetWidth){
    objSuggestShadow.style.width = objSuggestSpan.offsetWidth + 2 + 'px';
    objSuggestFrame.style.width = objSuggestSpan.offsetWidth + 6 + 'px';
  }
  if(objSuggestSpan.offsetHeight){
    objSuggestShadow.style.height = objSuggestSpan.offsetHeight + 2 + 'px';
    objSuggestFrame.style.height = objSuggestSpan.offsetHeight + 5 + 'px';
  }

  if(objSuggestShadow.offsetWidth) {
    objSuggestShadowTopCenter.style.width = objSuggestShadow.offsetWidth - 12 + 'px';
  }
  if(objSuggestShadow.offsetHeight) {
    objSuggestShadowCenter.style.height = objSuggestShadow.offsetHeight - 12 + 'px';
  }
  if(objSuggestShadow.offsetWidth) {
    objSuggestShadowMiddleCenter.style.width = objSuggestShadow.offsetWidth - 12 + 'px';
  }
  if(objSuggestShadow.offsetWidth) {
    objSuggestShadowBottomCenter.style.width = objSuggestShadow.offsetWidth - 12 + 'px';
  }
}

function setSuggestSize(nameField){
  var objSearchField = document.getElementById(nameField + 'search');
  var objSuggestSpan = document.getElementById(nameField + 'resultspan');

  if (objSuggestSpan.offsetParent !== null) {
    objSuggestSpan.style.left = calculateOffsetLeft(objSearchField) - calculateOffsetLeft(objSuggestSpan.offsetParent)  + 'px';
    objSuggestSpan.style.top = calculateOffsetTop(objSearchField) - calculateOffsetTop(objSuggestSpan.offsetParent) + objSearchField.offsetHeight - 1 + 'px';
  }

  objSuggestSpan.style.width = calculateWidth(objSearchField) + 'px';


  setSuggestShadowSize(nameField);
}

function setSuggestShow(nameField){
  document.getElementById(nameField + "resultspan").style.display = 'block';
  document.getElementById(nameField + "resultframe").style.display = 'block';
  document.getElementById(nameField + "resultspanshadow").style.display = 'block';
  setSuggestSize(nameField)
}

function setSuggestHide(nameField){
  document.getElementById(nameField + "resultspanshadow").style.display = 'none';
  document.getElementById(nameField + "resultframe").style.display = 'none';
  document.getElementById(nameField + "resultspan").style.display = 'none';
}

function showSuggestlistChoice(nameField, recordID, value){
  var objSearchField = document.getElementById(nameField + 'search');
  if(recordID <= 0){
    if(marySuggestDefaultItem[nameField][0] > 0){
      recordID = marySuggestDefaultItem[nameField][0];
      value = marySuggestDefaultItem[nameField][1];
    }else{
      return;
    }
  }else{
    marySuggestDefaultItem[nameField][0] = recordID;
    marySuggestDefaultItem[nameField][1] = value;
  }

  document.getElementById(nameField).value = recordID;
  if(window.Form) {
    var fld = Form.getField(nameField);
    if (fld) {
      fld.changed(recordID);
    }
  }
  if (document.getElementById(nameField + ".D") !== null) {
    document.getElementById(nameField + ".D").value = value;
  }
  if (document.getElementById("CoOptionID") !== null) {
    document.getElementById("CoOptionID").value = recordID;
  }

  var element = document.createElement("div");
  element.innerHTML = value;
  objSearchField.value = element.firstChild.data;

  if (document.frm[nameField + ".Locate"] !== undefined) {
    document.frm[nameField + ".Locate"].value = document.frm[nameField + ".Locate"].value.replace("Add ","Change ");
  }

  if (document.getElementById[nameField + ".Locate"] !== undefined) {
    document.getElementById[nameField + ".Locate"].value = document.getElementById[nameField + ".Locate"].value.replace("Add ","Change ");
  }

  document.getElementById(nameField + "display").innerHTML = value;

  setSuggestHide(nameField);
  hidePicklist(nameField);
  locateRemoveLink(nameField, '', 1);
  if(marySuggestParams[nameField].onShowChoice){
    marySuggestParams[nameField].onShowChoice(nameField);
  }
}

function showSuggestCompanyQuestion(nameField, listType, dataSetId, helpText) {
  var searchValue = document.getElementById(nameField + 'search').value;
  if (helpText === null) {
    helpText = '';
  }
  lastDisableChangeWarning = document.frm.disableChangeWarning;
  document.frm.disableChangeWarning = true;
  document.getElementById(nameField + "searchspan").style.display = "block";
  document.getElementById(nameField + "displayspan").style.display = "none";
  if (document.getElementById(nameField + "secondsearchspan") !== null) {
    document.getElementById(nameField + "secondsearchspan").style.display = "none";
  }
  if (searchValue === ""){
    document.getElementById(nameField + "resultspan").innerHTML = "";
    setSuggestShadowSize(nameField);
  }
}

function showDirectorySuggestlistChoice(nameField, recordID, value) {
  var objSearchField = document.getElementById(nameField + 'search');
  if(recordID <= 0){
    if(marySuggestDefaultItem[nameField][0] > 0){
      recordID = marySuggestDefaultItem[nameField][0];
      value = marySuggestDefaultItem[nameField][1];
    }else{
      return;
    }
  }else{
    marySuggestDefaultItem[nameField][0] = recordID;
    marySuggestDefaultItem[nameField][1] = value;
  }

  document.getElementById(nameField).value = recordID;
  if(window.Form) {
    var fld = Form.getField(nameField);
    if (fld) {
      fld.changed(recordID);
    }
  }
  if (document.getElementById(nameField + ".D") !== null) {
    document.getElementById(nameField + ".D").value = value;
  }
  if (document.getElementById("DirectoryOptionID") !== null) {
    document.getElementById("DirectoryOptionID").value = recordID;
  }

  var element = document.createElement("div");
  element.innerHTML = value;
  objSearchField.value = element.firstChild.data;

  if (document.frm[nameField + ".Locate"] !== undefined) {
    document.frm[nameField + ".Locate"].value = document.frm[nameField + ".Locate"].value.replace("Add ","Change ");
  }

  if (document.all[nameField + ".Locate"] !== undefined) {
    document.all[nameField + ".Locate"].value = document.all[nameField + ".Locate"].value.replace("Add ","Change ");
  }

  document.getElementById(nameField + "display").innerHTML = value;

  setSuggestHide(nameField);
  hidePicklist(nameField);
  locateRemoveLink(nameField, '', 1);
  if(marySuggestParams[nameField].onShowChoice){
    marySuggestParams[nameField].onShowChoice(nameField);
  }
}

function installDirectorySuggestHandler(nameField, onShowChoice){

  var objSearchField = document.getElementById(nameField + 'search');

  // prepare Default Suggest Item data container for the certain 'nameField'
  marySuggestDefaultItem[nameField] = {0:0, 1:'', 2:''};

  // prepare Suggest Items data container for certain 'nameField'
  marySuggestItems[nameField] = [];

  marySuggestParams[nameField] = {};
  marySuggestParams[nameField].onShowChoice = eval(onShowChoice);
  var membership = document.getElementById("Membership");
  marySuggestParams[nameField].membership = membership?membership.value:"";

  // Suggest
  setSuggestSize(nameField);
  // Suggest Shadow
  setSuggestShadowSize(nameField);

  // onResize routine
  if(document.all) {// IE
    window.attachEvent('onresize', function(e){setSuggestSize(nameField);} );
  }
  else {// FF
    window.addEventListener('resize', function(e){setSuggestSize(nameField);}, false);
  }

  lastDate = new Date();
  // on-Enter form autosubmission prevention / onKeypress routine
  // used for keyboard Suggest items selection
  //
  // Besides, all the three events(keypress/keyup/keydown) are used smartly here to support cross-browsing(IE/FF) at:
  // - on-Enter form autosubmission prevention
  // - Up/Down arrows selection
  // - Autocomplete part unselection prevention
  objSearchField.onkeypress = function(e){
    if(!e) {
      e=window.event;
    }
    var key = e.keyCode ? e.keyCode : e.which;
    if(key == 13) {
      e.cancelBubble = true;

      var fldSearch = document.getElementById(nameField + 'search');
      if(fldSearch.value === ''){
        marySuggestDefaultItem[nameField][0] = 0;
        marySuggestDefaultItem[nameField][1] = '';
        setSuggestHide(nameField);
        hidePicklist(nameField);
      }
      else {
        if (marySuggestItems[nameField].length !== 0) {
          if (marySuggestDefaultItem[nameField][0] !== 0){
            showDirectorySuggestlistChoice(nameField, marySuggestDefaultItem[nameField][0], marySuggestDefaultItem[nameField][1]);
          }
        }
      }
      return false;
    }
  };

  objSearchField.onkeydown = function(e){
    if(!e) {
      e=window.event;
    }
    var key = e.keyCode ? e.keyCode : e.which;
    switch(key){
      case 38:  // Up
        e.cancelBubble = true;
        moveSuggestSelectionUp(nameField);
        return false;
      case 40:  // Down
        e.cancelBubble = true;
        moveSuggestSelectionDown(nameField);
        return false;
    }
  };

  // onKeyup routine
  objSearchField.onkeyup = function(e){
    if(!e) {
      e=window.event;
    }
    var key = e.keyCode ? e.keyCode : e.which;
    switch(key){
      case 13:  // Enter
      case 16:  // Shift
      case 17:  // Ctrl
      case 18:  // Alt
      case 19:  // Pause/Break
      case 20:  // CapsLock
      case 33:  // PgUp
      case 34:  // PgDn
      case 35:  // End
      case 36:  // Home
      case 37:  // Left
      case 38:  // Up
      case 39:  // Right
      case 40:  // Down
      case 45:  // Ins
      case 91:  // Win L
      case 92:  // Win R
      case 93:  // Menu
      case 112: // F1
      case 113: // F2
      case 114: // F3
      case 115: // F4
      case 116: // F5
      case 117: // F6
      case 118: // F7
      case 119: // F8
      case 120: // F9
      case 121: // F10
      case 122: // F11
      case 123: // F12
        break;
      case 9:   // Tab
      case 27:  // Esc
        suggestionCancel(nameField);
        break;
      default:
        // 8 - BackSpace, 46 - Del
        if(key == 8 || key == 46) {
          marySuggestDefaultItem[nameField][2] = '';
        }
        else {
          marySuggestDefaultItem[nameField][2] = objSearchField.value;
        }
        cancelTimeout();
        suggestTimeout = setTimeout(function(){searchSuggestlist(nameField, 'directorysuggest', 0, '', '', '')}, suggestDelay);
    }
  };
  var objContainer = document.getElementById(nameField + 'container');
  var i,j;
  for (i = 0; i < document.forms.length; i++){
    for (j = 0; j < document.forms[i].elements.length; j++) {
      if(document.all){
        document.forms[i].elements[j].attachEvent('onfocus', setSuggestActiveElement );
        document.forms[i].elements[j].attachEvent('onblur',  clearSuggestActiveElement);

        // 1. don't unset the active element in case it is In Container (allows switching between the container's elements without the blur actions checking)
        // 2. unset the active element in case it is the search input (allows performing the blur actions checking when switching to non-form elements)
        if(!isInContainer(document.forms[i].elements[j], objContainer) || document.forms[i].elements[j] === objSearchField) {
          document.forms[i].elements[j].attachEvent('onblur',  clearSuggestActiveElement);
        }
      }else{
        document.forms[i].elements[j].addEventListener('focus', setSuggestActiveElement, false);
        if(!isInContainer(document.forms[i].elements[j], objContainer) || document.forms[i].elements[j] === objSearchField) {
          document.forms[i].elements[j].addEventListener('blur', clearSuggestActiveElement, false);
        }
      }
    }
  }

  var rsltElt = document.getElementById(nameField + 'resultspan');
  if(rsltElt){
    if(document.all){
      rsltElt.attachEvent('onfocus', function(event){
        objSearchField.focus();
      } );
    }else{
      rsltElt.addEventListener('focus', function(event){
        objSearchField.focus();
      }, false);
    }
  }
  var cancelElt = document.getElementById(nameField + 'cancelsuggest');
  if(cancelElt){
    if(document.all){
      cancelElt.attachEvent('onfocus', setSuggestActiveElement );
      cancelElt.attachEvent('onblur', function(event){
        var objEl = event.target ? event.target : event.srcElement;

        // 1. don't unset the active element in case it is In Container (allows switching between the container's elements without the blur actions checking)
        // 2. unset the active element in case it is the search input (allows performing the blur actions checking when switching to non-form elements)
        if(!isInContainer(objEl, objContainer) || objEl == cancelElt) {
          mobjActiveElement = null;
        }
        window.setTimeout('checkSuggestInputBlur("' + nameField + '", 0);', 100);
      } );
    }else{
      cancelElt.addEventListener('focus', setSuggestActiveElement, false);
      cancelElt.addEventListener('blur', function(event){
        var objEl = event.target ? event.target : event.srcElement;

        // 1. don't unset the active element in case it is In Container (allows switching between the container's elements without the blur actions checking)
        // 2. unset the active element in case it is the search input (allows performing the blur actions checking when switching to non-form elements)
        if(!isInContainer(objEl, objContainer) || objEl == cancelElt) {
          mobjActiveElement = null;
        }
        window.setTimeout('checkSuggestInputBlur("' + nameField + '", 0);', 100);
      }, false);
    }
  }

  // perform onBlur actions as needed
  if(document.all){
    objSearchField.attachEvent('onblur', function(e){
      window.setTimeout('checkSuggestInputBlur("' + nameField + '", 0);', 100);
    } );
  }else{
    objSearchField.addEventListener('blur', function(e){
      window.setTimeout('checkSuggestInputBlur("' + nameField + '", 0);', 100);
     }, false);
  }

}

function scheduleInstallSuggestDirectoryHandler(nameField, onShowChoice){
  var fncOldLoad = window.onload;
  window.onload=function(){
//    fncOldLoad();
    installDirectorySuggestHandler(nameField, onShowChoice);
  };
}

function showSuggestDirectoryQuestion(nameField, helpText) {
  var searchValue = document.getElementById(nameField + 'search').value;
  if (helpText === null) {
    helpText = '';
  }
  lastDisableChangeWarning = document.frm.disableChangeWarning;
  document.frm.disableChangeWarning = true;
  document.getElementById(nameField + "searchspan").style.display = "block";
  document.getElementById(nameField + "displayspan").style.display = "none";
  if (document.getElementById(nameField + "secondsearchspan") !== null) {
    document.getElementById(nameField + "secondsearchspan").style.display = "none";
  }
  if (searchValue === ""){
    document.getElementById(nameField + "resultspan").innerHTML = "";
    setSuggestShadowSize(nameField);
  }
}

function showPopUpProgress(namePopupField){
  var objCompaniesContainer = document.getElementById(namePopupField + 'result');

  objCompaniesContainer.innerHTML = '<center><img src="/images/spinner.gif" border=0 align="middle" vspace=110 alt=""></center>';
}

function showPopUpError(objContainer, strError){
  if(objContainer) {
    objContainer.innerHTML = '<font color=\'#c00000\'><b>Error: ' + strError + '</b></font>';
  }
}

function searchCompaniesByURL(nameField, listType, namePopupField, dataSetId, pg, pgMove, termCompany){
  searchCompaniesByURL2(nameField, listType, namePopupField, dataSetId, pg, pgMove, "", termCompany);
}

function searchCompaniesByURL2(nameField, listType, namePopupField, dataSetId, pg, pgMove, header, termCompany){
  var searchValue = document.getElementById(namePopupField + 'search').value;
  var objCompaniesContainer = document.getElementById(namePopupField + 'result');
  var xmlhttp = getXMLHTTP();
  var resultValue = '';

  if (typeof(termCompany) === 'undefined' || termCompany === '') {
    termCompany = 'Company';
  }

  // validation for being empty
  if(typeof(searchValue) === 'undefined' || searchValue === ''){
    showPopUpError(objCompaniesContainer, '"URL" cannot be empty. Please enter a valid value');
    return;
  }

  // validation for having whitespaces
  if(!checkURL(searchValue)){
    showPopUpError(objCompaniesContainer, '\'' + searchValue + '\' is not URL! Please enter correct URL.');
    return;
  }

  showPopUpProgress(namePopupField);
  xmlhttp.open("GET", '/tm/pick' + listType + '.asp?SearchURL=' + encodeURL(searchValue) + '&NameField=' + nameField + '&DataSetID=' + dataSetId + '&Page=' + pg + '&PageMove=' + pgMove + '&TermCompany=' + termCompany, true);

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
      resultValue = resultValue + xmlhttp.responseText;
      objCompaniesContainer.innerHTML = resultValue;
      if (header !== '') {
        var headerFld = document.getElementById('textHeader');
        if(headerFld !== null) {
          headerFld.innerHTML = header;
        }

      }
    }
  };
  xmlhttp.send(null);
}

function addCompanyPopUp_Choice1(nameField){
  var objSearchField = document.getElementById(nameField + 'search');

  hideMessageBox();
  try{
    objSearchField.focus();
  }catch(err){
  }
}

function addCompanyPopUp_Choice2(nameField, dataSetId, termCompany){
  var strContent = '';
  var hgt = 0;

  if (typeof(termCompany) === 'undefined' || termCompany === '') {
    termCompany = 'Company';
  }

  hideMessageBox();

  if (document.body) {
    hgt = (document.body.clientHeight - document.body.scrollTop) / 2;
  }
  else {
    hgt = 300;
  };

  strContent =
    '<div>Please enter an <b>URL</b> and press <b>Search</b>:</div>' +
    '<div style=\'white-space:nowrap;width:650px;\'>' +
      '<table cellspacing=0 cellpadding=0 border=0 align=left>' +
        '<tr>' +
          '<td>' +
            '<div id=\'InputWrapperDiv_addcompanypopupsearch\'><input id=addcompanypopupsearch type=text size=65 maxlength=255></div>\n' +
          '</td>' +
          '<td style=\'padding-left:3px;\'>\n' +
            '<input type=button value=Search class=buttonformopen style=\'width:60px;\'' +
             'onclick=\'javascript:searchCompaniesByURL("' + nameField + '", "companiesbyurl", "addcompanypopup", "' + dataSetId + '", "", "", "' + termCompany + '");\'>' +
            '<input type=button onclick=\'javascript:hideMessageBox();addCompanyPopUp("' + nameField + '", "", "' + termCompany + '")\' value=Cancel class=buttonformopen style=\'width:60px;\'>\n' +
          '</td>' +
        '</tr>' +
      '</table>' +
    '</div>' +
    '<div id=addcompanypopupresult style=\'width:650px;height:' + hgt + 'px;overflow:auto;word-wrap:break-word;\'></div>';

  showMessageBox('Add ' + termCompany + ' - Search by Website', strContent, 660, hgt + 85, 0, [], [], '');

  // FF bug fix (cursor disappeares inside a text input)
  setTimeout(function(){
    var objInputWrapperDiv = document.getElementById('InputWrapperDiv_addcompanypopupsearch');
    var objInput = document.getElementById('addcompanypopupsearch');
    try{
      objInputWrapperDiv.style.display = 'none';
      objInputWrapperDiv.style.overflow = 'auto';
      objInputWrapperDiv.style.display = 'block';
    }
    catch(err){}
    try{
      objInput.focus();
    }
    catch(err2){}
  }, 50);

}

function addCompanyPopUp_AddNewCompany_ShowMatches(nameField, dataSetId, newCoName, newCoURL, termCompany){

  if (typeof(termCompany) === 'undefined' || termCompany === '') {
    termCompany = 'Company';
  }

  hideMessageBox();
  var strBullet = '<img src="/images/homepage/diag_arrow2.gif" width=9 height=9 border=0 align="middle">&nbsp;';
  var strContent =
    '<div style=\'white-space:nowrap;width:650px;\'>' +
      '<table cellspacing=0 cellpadding=0 border=0>' +
        '<tr>' +
          '<td>' +
            '<div id=addcompanypopupresult style=\'width:650px;height:330px;margin-top:10px;overflow:auto;word-wrap:break-word;\'><center><img src="/images/spinner.gif" border=0 align="middle" vspace=110 alt=""></center></div>' +
          '</td>' +
        '</tr>' +
      '</table>' +
      '<center>' +
      '<table cellspacing=0 cellpadding=0 border=0>' +
        '<tr>' +
          '<td align=left>' +
            strBullet + '<a href=\'javascript:addCompanyPopUp_AddNewCompany_ShowForm("' + nameField + '", ' + dataSetId + ', "' + encodeHTML(newCoName).replace("&#39;", "&#92;&#39;") + '", "' + encodeHTML(newCoURL).replace("&#39;", "&#92;&#39;") + '", "' + termCompany + '");\'>Change URL and Name of my ' + termCompany.toLowerCase() + '</a><br>' +
            strBullet + '<a href=\'javascript:addCompanyPopUp_AddNewCompany_SubmitForm("' + nameField + '", ' + dataSetId + ', "yes", "' + termCompany + '");\'>Save the ' + termCompany.toLowerCase() + ' with information I provided</a><br>' +
            strBullet + '<a href=\'javascript:addCompanyPopUp_Choice1("' + nameField + '");\'>Close</a><br>' +
            '<input type="hidden" value="' + encodeHTML(newCoName) + '" id="X' + nameField + '.NewCoName">' +
            '<input type="hidden" value="' + encodeHTML(newCoURL) + '" id="X' + nameField + '.NewCoURL">' +
            '<input type="hidden" value="' + encodeHTML(newCoURL) + '" id="addcompanypopupsearch">' +
          '</td>' +
        '</tr>' +
      '</table>' +
      '</center>' +
    '</div>';
  showMessageBox('Add ' + termCompany + ': Show Matches', strContent, 660, 445, 0, [], [], '');
  searchCompaniesByURL2(nameField , 'companiesbyurl', 'addcompanypopup', dataSetId , '', '', 'We found companies in our system that match URL you provided, if your ' + termCompany.toLowerCase() + ' is in the list below click it and it will be used in the process:', termCompany);
}

function addCompanyPopUp_AddNewCompany_SubmitForm(nameField, dataSetId, noMatch, termCompany){

  if (typeof(termCompany) === 'undefined' || termCompany === '') {
    termCompany = 'Company';
  }

  var fldNewCoName = document.getElementById('X' + nameField + '.NewCoName');
  var fldNewCoURL = document.getElementById('X' + nameField + '.NewCoURL');
  var url = '/tm/pickcompanysuggest.asp?Action=Add&NewCoName='+ encodeURL(fldNewCoName.value) + '&NewCoURL='+ encodeURL(fldNewCoURL.value) + '&NoMatch=' + noMatch + '&NameField=' + nameField + '&DataSetID=' + dataSetId + '&TermCompany=' + termCompany;

  hideMessageBox();
  showMessageBox('Add ' + termCompany, '<div><center><img src="/images/spinner.gif" border=0 align="middle" vspace=50 alt=""></center></div>', 600, 150, 0, [], [], '');
  xmlhttpAJAXNewCompany = sendRequest(url,
    function(result){
      eval(result);
   });
}

function addCompanyPopUp_AddNewCompany_ShowForm(nameField, dataSetId, newCoName, newCoURL, termCompany){
  hideMessageBox();

  if (typeof(termCompany) === 'undefined' || termCompany === '') {
    termCompany = 'Company';
  }

  var strContent =
    '<div style=\'white-space:nowrap;width:650px;\'>' +
      '<table cellspacing=0 cellpadding=0 border=0 width=100% >' +
        '<tr>' +
          '<td>Adding new ' + termCompany.toLowerCase() + '</td>' +
        '</tr>' +
        '<tr>' +
          '<td>' +
          '<table border="0" cellspacing="1" cellpadding="2" style=\'BACKGROUND-COLOR: #ece9d8;\'>' +
            '<tr>' +
              '<td>' +
                '<b>' + termCompany + ' Name</b>&nbsp;' +
              '</td>\n' +
              '<td>&nbsp;</td>' +
              '<td>' +
                '<input type="text" value="' + encodeHTML(newCoName) + '" id="X' + nameField + '.NewCoName" size="60" maxlength="255" style="FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE: 9pt;">' +
                '<div id="X' + nameField + '.NewCoName.ERR" class="fieldError"></div>' +
              '</td>' +
              '<td>&nbsp;</td>' +
            '</tr>' +
            '<tr>' +
              '<td>' +
                'Primary ' + termCompany + ' Web Page Address&nbsp;' +
              '</td>' +
              '<td>http://&nbsp;</td>' +
              '<td>' +
                '<input type="text" value="' + encodeHTML(newCoURL) + '" id="X' + nameField + '.NewCoURL" size="60" maxlength="255" style="FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE: 9pt;">&nbsp;' +
              '</td>' +
              '<td>' +
                '<input type="button" class="buttonformopen" name="View" value="View" onclick="javascript:var fld = document.getElementById(\'X' + nameField + '.NewCoURL\'); var url = fld.value.replace(/^\\s*|\\s*$/g,\'\'); if (url == \'\') {window.alert(\'You must enter a URL in the field in order to view that URL\');} else if(!checkURL(url)){alert(\'\\\'\' + url + \'\\\' is not URL! Please enter correct URL.\');} else {createWinFromField(fld, \'Primary ' + termCompany + ' Web Page Address\');}">&nbsp;' +
              '</td>' +
            '</tr>' +
          '</table>' +
          '</td>' +
        '</tr>' +
        '<tr>' +
          '<td align=center>' +
            '<input type=button onclick=\'javascript:return validateCompanyShortForm("' + nameField + '", "' + dataSetId + '", "' + termCompany + '");\' value=Save class=buttonformopen style=\'width:60px;\'>&nbsp;' +
            '<input type=button onclick=\'javascript:hideMessageBox();addCompanyPopUp("' + nameField + '", "", "' + termCompany + '")\' value=Cancel class=buttonformopen style=\'width:60px;\'>' +
          '</td>' +
        '</tr>' +
      '</table>' +
    '</div>';
  showMessageBox('Add ' + termCompany, strContent, 700, 150, 0, [], [], '');
  var fld = document.getElementById("X' + nameField + '.NewCoName");
  if (fld){
    fld.focus();
  }
  else if(msgbox){
    msgbox.focus();
  }
}

function validateCompanyShortForm(fldName, dataSetId, termCompany){
  var blnURL = true;
  var fld = document.getElementById('X' + fldName + '.NewCoURL');
  var fldCoName = document.getElementById('X' + fldName + '.NewCoName');
  var url = fld.value;
  if(fldCoName.value == ''){
    if (termCompany == 'publication'){
      alert('Publication Name can\'t be empty!');	
    }
    else{		
      alert('Company Name can\'t be empty!');
    }
    return false;
  }
  if(url != '' && !checkURL(url)){
    alert('\'' + url + '\'  is not a valid URL! Please enter a correct URL to continue.');
    return false;
  }
  addCompanyPopUp_AddNewCompany_SubmitForm(fldName, dataSetId, "", termCompany);
}

function addCompanyPopUp(nameField, dataSetId, termCompany){
  var objSearchField = document.getElementById(nameField + 'search');
  var strContent = '';
  var strBullet = '<img src="/images/homepage/diag_arrow2.gif" width=9 height=9 border=0 align="middle">&nbsp;';

  if (typeof(termCompany) === 'undefined' || termCompany === '') {
    termCompany = 'Company';
  }

  strContent =
    '<div><b>' + objSearchField.value + '</b> is not in our database. mBLAST has a lot of companies in our database already, so you may have typed the name a bit differently that what we already have on file. What do you want to do?</div>' +
    '<br>' +
    '<center>' +
      '<table cellspacing=0 cellpadding=0 border=0>' +
        '<tr>' +
          '<td align=left>' +
            strBullet + '<a id=\'' + nameField + 'choice1\' href=\'javascript:addCompanyPopUp_Choice1("' + nameField + '");\'>Change what I typed</a><br>' +
            strBullet + '<a href=\'javascript:addCompanyPopUp_Choice2("' + nameField + '", "' + dataSetId + '", "' + termCompany + '");\'>Try finding my ' + termCompany + ' by website URL</a><br>' +
            strBullet + '<a href=\'javascript:addCompanyPopUp_AddNewCompany_ShowForm("' + nameField + '", "' + dataSetId + '", "' + encodeHTML(objSearchField.value).replace("&#39;", "&#92;&#39;") + '", "", "' + termCompany + '");\'>Add <b>' + encodeHTML(objSearchField.value) + '</b> as a new ' + termCompany.toLowerCase() + '</a><br>' +
          '</td>' +
        '</tr>' +
      '</table>' +
    '</center>';
  showMessageBox('Add ' + termCompany, strContent, 510, 190, 0, [], [], 'addCompanyPopUp_Choice1("' + nameField + '")');
  var fld = document.getElementById(nameField + 'choice1');
  if(fld){
    fld.focus();
  }
  else if(msgbox){
    msgbox.focus();
  }
}

function suggestionCancel(nameField){
  if(!marySuggestDefaultItem || !marySuggestDefaultItem[nameField]) {
    return;
  }
  marySuggestDefaultItem[nameField][0] = 0;
  marySuggestDefaultItem[nameField][1] = '';
  var fldSearch = document.getElementById(nameField + 'search');
  fldSearch.value  = '';
  setSuggestHide(nameField);
  hidePicklist(nameField);
}

function checkSuggestInputBlur(nameField, dataSetId){
  var strSearchInput = nameField + 'search';
  var objContainer = document.getElementById(nameField + 'container');
  var blnContainer = false;
  var searchValue = document.getElementById(nameField + 'search').value;

  if (mstrReqID === '' || searchValue === '') {
    marySuggestDefaultItem[nameField][0] = 0;
    marySuggestDefaultItem[nameField][1] = '';
    setSuggestHide(nameField);
    hidePicklist(nameField);
    return ;
  }
  // check for mobjActiveElement's location in the container
  if ( !mobjActiveElement && isInContainer(document.activeElement, objContainer)){
    return;
  }
  if ( mobjActiveElement && mobjActiveElement.type === 'submit'){
    suggestionCancel(nameField);
    return;
  }
  blnContainer = isInContainer(mobjActiveElement, objContainer);
  if(!blnContainer){
    if( (!mobjActiveElement) || (mobjActiveElement && mobjActiveElement.id != strSearchInput) ){
      // if blur when no results - Add company dialog
      if(marySuggestDefaultItem[nameField][0] === 0 && marySuggestParams[nameField].membership == 'Anyone.') {
        if(!msgbox){
          addCompanyPopUp(nameField, dataSetId, '');
        }
      }

      // if blur when results exist - select default of them
      if(marySuggestDefaultItem[nameField][0] > 0){
        showSuggestlistChoice(nameField, 0, '');
      }
    }
  }
}

function suggestSelectionScroll(e) {
  var y = e.offsetTop;
  var rsltList = e.offsetParent;
  if ((y + e.clientHeight) > (rsltList.clientHeight + rsltList.scrollTop )){
    rsltList.scrollTop = y + e.clientHeight - rsltList.clientHeight;
  }
  else if (y < rsltList.scrollTop ){
    rsltList.scrollTop = y;
  }
}

function moveSuggestSelectionUp(nameField){
  var objSuggestItem = null;

  // actual moving
  if(mlngCurrentIndex <= 0){
    return;
  }

  if(mlngCurrentIndex >= 0 && mlngCurrentIndex < marySuggestItems[nameField].length){
    objSuggestItem = document.getElementById(nameField + 'suggest' + marySuggestItems[nameField][mlngCurrentIndex][0]);
    objSuggestItem.className = 'suggestitem';
  }
  mlngCurrentIndex--;

  if(mlngCurrentIndex >= 0 && mlngCurrentIndex < marySuggestItems[nameField].length){
    objSuggestItem = document.getElementById(nameField + 'suggest' + marySuggestItems[nameField][mlngCurrentIndex][0]);
    objSuggestItem.className = 'suggestitem_hl';
    suggestSelectionScroll(objSuggestItem);
    marySuggestDefaultItem[nameField][0] = marySuggestItems[nameField][mlngCurrentIndex][0];
    marySuggestDefaultItem[nameField][1] = marySuggestItems[nameField][mlngCurrentIndex][1];
  }
}

function moveSuggestSelectionDown(nameField){
  var objSuggestItem = null;

  // actual moving
  if(mlngCurrentIndex >= marySuggestItems[nameField].length - 1){
    return;
  }

  if(mlngCurrentIndex >= 0 && mlngCurrentIndex < marySuggestItems[nameField].length){
    objSuggestItem = document.getElementById(nameField + 'suggest' + marySuggestItems[nameField][mlngCurrentIndex][0]);
    objSuggestItem.className = 'suggestitem';
  }
  mlngCurrentIndex++;

  if(mlngCurrentIndex >= 0 && mlngCurrentIndex < marySuggestItems[nameField].length){
    objSuggestItem = document.getElementById(nameField + 'suggest' + marySuggestItems[nameField][mlngCurrentIndex][0]);
    objSuggestItem.className = 'suggestitem_hl';
    suggestSelectionScroll(objSuggestItem);
    marySuggestDefaultItem[nameField][0] = marySuggestItems[nameField][mlngCurrentIndex][0];
    marySuggestDefaultItem[nameField][1] = marySuggestItems[nameField][mlngCurrentIndex][1];
  }
}

function setSuggestSelection(nameField, strCoID){
  var i;
  var objSuggestItem = null;

  // define the suggest item's index
  for(i = 0; i < marySuggestItems[nameField].length; i++){
    if(marySuggestItems[nameField][i][0] == strCoID){
      if(mlngCurrentIndex != i){
        if(mlngCurrentIndex >= 0 && mlngCurrentIndex < marySuggestItems[nameField].length){
          objSuggestItem = document.getElementById(nameField + 'suggest' + marySuggestItems[nameField][mlngCurrentIndex][0]);
          objSuggestItem.className = 'suggestitem';
        }
      }
      mlngCurrentIndex = i;
      if(mlngCurrentIndex >= 0 && mlngCurrentIndex < marySuggestItems[nameField].length){
        objSuggestItem = document.getElementById(nameField + 'suggest' + marySuggestItems[nameField][mlngCurrentIndex][0]);
        objSuggestItem.className = 'suggestitem_hl';
        marySuggestDefaultItem[nameField][0] = marySuggestItems[nameField][mlngCurrentIndex][0];
        marySuggestDefaultItem[nameField][1] = marySuggestItems[nameField][mlngCurrentIndex][1];
      }
      break;
    }
  }
}

function setSuggestResultValue(nameField, resultValue, lngRowCount){
  var objSearchField = document.getElementById(nameField + 'search');
  var objSuggestSpan = document.getElementById(nameField + 'resultspan');

  setSuggestSize(nameField);
  objSuggestSpan.style.width = '';

  objSuggestSpan.innerHTML = resultValue;

  var lgnSuggestWidth = calculateWidth(objSuggestSpan);
  if(lgnSuggestWidth > 0){
    var lgnSearchWidth = calculateWidth(objSearchField);
    if(lgnSearchWidth > lgnSuggestWidth) {
      objSuggestSpan.style.width = lgnSearchWidth + 'px';
    }
    var elt  = document.getElementById('page-inner');
    if(!elt){
      elt  = document.body;
    }
    var maxSuggestWidth = elt.clientWidth - calculateOffsetLeft(objSuggestSpan) + calculateOffsetLeft(elt);
    if(lgnSuggestWidth > maxSuggestWidth){
      lgnSuggestWidth = maxSuggestWidth - 15;
      objSuggestSpan.style.width = lgnSuggestWidth + 'px';
    }
  }

  setSuggestShadowSize(nameField);
}

function showSuggestProgress(nameField){
  var objSearchField = document.getElementById(nameField + 'search');
  var objSuggestSpan = document.getElementById(nameField + 'resultspan');

  setSuggestLines(nameField, 2);
  setSuggestResultValue(nameField, '<center style="height:30px;"><img src="/images/spinner.gif" border=0 align="middle" vspace=7 alt=""></center>', 0);
  objSuggestSpan.style.width = calculateWidth(objSearchField) + 'px';
  setSuggestShow(nameField);
  setSuggestShadowSize(nameField);
}

var xmlhttpsearchSuggestlist = null;

function searchSuggestlist(nameField, listType, dataSetId, helpText, termCompany, typeDataSet) {

  if (typeof(termCompany) === 'undefined' || termCompany === '') {
    termCompany = 'Company';
  }

  if (xmlhttpsearchSuggestlist){
    xmlhttpsearchSuggestlist.abort();
  }
  var searchValue = document.getElementById(nameField + 'search').value;
  var resultValue = "";
  var resultRowCount = 0;
  var strReqID = 0;
  var objSearchField = document.getElementById(nameField + 'search');
  var objSuggestSpan = document.getElementById(nameField + 'resultspan');
  var aspURL = '/tm/pick' + listType + '.asp';

  if(typeof(searchValue) === 'undefined' || searchValue === ''){
    setSuggestHide(nameField);
    setSuggestResultValue(nameField, '', 0);
    return;
  }

  if (document.getElementById(nameField + "displayaddspan") !== null) {
    document.getElementById(nameField + "displayaddspan").style.display = "block";
  }
  showSuggestProgress(nameField);
  mstrReqID = new Date().getTime();
  xmlhttpsearchSuggestlist = sendRequestXMLWithContext(aspURL + '?SearchName=' + encodeURL(searchValue) + '&NameField=' + nameField + '&DataSetID=' + dataSetId + '&ReqID=' + mstrReqID + '&TermCompany=' + termCompany + '&TypeDataSet=' + typeDataSet, null,


    function(resultXML, context) {
      var xmldoc = resultXML;

      var objReqID = xmldoc.getElementsByTagName('reqid').item(0);
      var objResponsevalue = xmldoc.getElementsByTagName('responsevalue').item(0);
      var objRowcount = xmldoc.getElementsByTagName('rowcount').item(0);
      var objSuggestDefaultID = xmldoc.getElementsByTagName('defaultid').item(0);
      var objSuggestDefaultName = xmldoc.getElementsByTagName('defaultname').item(0);
      var objResponsedata = xmldoc.getElementsByTagName('responsedata').item(0);

      if(objResponsevalue && objRowcount && objSuggestDefaultID && objSuggestDefaultName){
        mlngCurrentIndex = 0;
        if(objRowcount.textContent){
        // FF
          strReqID = objReqID.textContent;
          resultValue = objResponsevalue.textContent;
          resultRowCount = objRowcount.textContent;
          marySuggestDefaultItem[nameField][0] = objSuggestDefaultID.textContent;
          marySuggestDefaultItem[nameField][1] = objSuggestDefaultName.textContent;
        }
        else{
        // IE
          strReqID = objReqID.text;
          resultValue = objResponsevalue.text;
          resultRowCount = objRowcount.nodeTypedValue;
          marySuggestDefaultItem[nameField][0] = objSuggestDefaultID.nodeTypedValue;
          marySuggestDefaultItem[nameField][1] = objSuggestDefaultName.nodeTypedValue;
        }

        if(strReqID == mstrReqID){
        // if the request is the latest one
          if(resultRowCount > 10){
            setSuggestLines(nameField, 10);
          }
          else{
            setSuggestLines(nameField, resultRowCount);
          }
          setSuggestResultValue(nameField, resultValue, resultRowCount);
        }
      }
      else {
        mlngCurrentIndex = -1;
      }

      if(objResponsedata){
        var i = 0, j = 0;
        var objItem, objItemId, objItemName;
        var aryNodes;

        var lngItemId = 0;
        var strItemName = '';

        marySuggestItems[nameField] = [];
        aryNodes = objResponsedata.getElementsByTagName('item');

        for(j = 0; j < aryNodes.length; j++){
          objItem = aryNodes[j];
          if(objItem){
            objItemId = objItem.getElementsByTagName('id').item(0);
            objItemName = objItem.getElementsByTagName('name').item(0);

            if(objItemId.textContent){
            // FF
              if(objItemId) {
                lngItemId = objItemId.textContent;
              }
              if(objItemName) {
                strItemName = objItemName.textContent;
              }
            }
            else{
            // IE
              if(objItemId) {
                lngItemId = objItemId.nodeTypedValue;
              }
              if(objItemName) {
                strItemName = objItemName.text;
              }
            }

            marySuggestItems[nameField][i] = {0:lngItemId, 1:strItemName};
            i++;
          }
        }
      }
    }
  );
}

function setSuggestActiveElement(event){
  if(!event) {
    event = window.event;
  }
  mobjActiveElement = (event.target !== undefined) ? event.target : event.srcElement;
}

function clearSuggestActiveElement(event){
  mobjActiveElement = null;
}

function installSuggestHandler(nameField, dataSetId, onShowChoice, termCompany, typeDataSet){

  if (typeof(termCompany) === 'undefined' || termCompany === '') {
    termCompany = 'Company';
  }

  var objSearchField = document.getElementById(nameField + 'search');

  // prepare Default Suggest Item data container for the certain 'nameField'
  marySuggestDefaultItem[nameField] = {0:0, 1:'', 2:''};

  // prepare Suggest Items data container for certain 'nameField'
  marySuggestItems[nameField] = [];

  marySuggestParams[nameField] = {};
  marySuggestParams[nameField].onShowChoice = eval(onShowChoice);
  var membership = document.getElementById("Membership");
  marySuggestParams[nameField].membership = membership?membership.value:"";

  // Suggest
  setSuggestSize(nameField);
  // Suggest Shadow
  setSuggestShadowSize(nameField);

  // onResize routine
  if(document.all) {// IE
    window.attachEvent('onresize', function(e){setSuggestSize(nameField);} );
  }
  else {// FF
    window.addEventListener('resize', function(e){setSuggestSize(nameField);}, false);
  }

  lastDate = new Date();
  // on-Enter form autosubmission prevention / onKeypress routine
  // used for keyboard Suggest items selection
  //
  // Besides, all the three events(keypress/keyup/keydown) are used smartly here to support cross-browsing(IE/FF) at:
  // - on-Enter form autosubmission prevention
  // - Up/Down arrows selection
  // - Autocomplete part unselection prevention
  objSearchField.onkeypress = function(e){
    if(!e) {
      e=window.event;
    }
    var key = e.keyCode ? e.keyCode : e.which;
    if(key == 13) {
      e.cancelBubble = true;

      var fldSearch = document.getElementById(nameField + 'search');
      if(fldSearch.value === ''){
        marySuggestDefaultItem[nameField][0] = 0;
        marySuggestDefaultItem[nameField][1] = '';
        setSuggestHide(nameField);
        hidePicklist(nameField);
      }
      else {
        if( marySuggestItems[nameField].length === 0){
          if (marySuggestParams[nameField].membership == 'Anyone.'){
            addCompanyPopUp(nameField, dataSetId, termCompany);
          }
        }
        else {
          if( marySuggestDefaultItem[nameField][0] === 0){
            addCompanyPopUp_AddNewCompany_ShowForm(nameField, dataSetId, marySuggestDefaultItem[nameField][1], '', "' + termCompany + '");
          }
          else {
            showSuggestlistChoice(nameField, marySuggestDefaultItem[nameField][0], marySuggestDefaultItem[nameField][1]);
          }
        }
      }
      return false;
    }
  };

  objSearchField.onkeydown = function(e){
    if(!e) {
      e=window.event;
    }
    var key = e.keyCode ? e.keyCode : e.which;
    switch(key){
      case 38:  // Up
        e.cancelBubble = true;
        moveSuggestSelectionUp(nameField);
        return false;
      case 40:  // Down
        e.cancelBubble = true;
        moveSuggestSelectionDown(nameField);
        return false;
    }
  };

  // onKeyup routine
  objSearchField.onkeyup = function(e){
    if(!e) {
      e=window.event;
    }
    var key = e.keyCode ? e.keyCode : e.which;
    switch(key){
      case 13:  // Enter
      case 16:  // Shift
      case 17:  // Ctrl
      case 18:  // Alt
      case 19:  // Pause/Break
      case 20:  // CapsLock
      case 33:  // PgUp
      case 34:  // PgDn
      case 35:  // End
      case 36:  // Home
      case 37:  // Left
      case 38:  // Up
      case 39:  // Right
      case 40:  // Down
      case 45:  // Ins
      case 91:  // Win L
      case 92:  // Win R
      case 93:  // Menu
      case 112: // F1
      case 113: // F2
      case 114: // F3
      case 115: // F4
      case 116: // F5
      case 117: // F6
      case 118: // F7
      case 119: // F8
      case 120: // F9
      case 121: // F10
      case 122: // F11
      case 123: // F12
        break;
      case 9:   // Tab
      case 27:  // Esc
        suggestionCancel(nameField);
        break;
      default:
        // 8 - BackSpace, 46 - Del
        if(key == 8 || key == 46) {
          marySuggestDefaultItem[nameField][2] = '';
        }
        else {
          marySuggestDefaultItem[nameField][2] = objSearchField.value;
        }
        cancelTimeout();
        suggestTimeout = setTimeout(function(){searchSuggestlist(nameField, 'companysuggest', dataSetId, '', termCompany, typeDataSet)}, suggestDelay);

    }
  };
  var objContainer = document.getElementById(nameField + 'container');
  var i,j;
  for (i = 0; i < document.forms.length; i++){
    for (j = 0; j < document.forms[i].elements.length; j++) {
      if(document.all){
        document.forms[i].elements[j].attachEvent('onfocus', setSuggestActiveElement );
        document.forms[i].elements[j].attachEvent('onblur',  clearSuggestActiveElement);

        // 1. don't unset the active element in case it is In Container (allows switching between the container's elements without the blur actions checking)
        // 2. unset the active element in case it is the search input (allows performing the blur actions checking when switching to non-form elements)
        if(!isInContainer(document.forms[i].elements[j], objContainer) || document.forms[i].elements[j] === objSearchField) {
          document.forms[i].elements[j].attachEvent('onblur',  clearSuggestActiveElement);
        }
      }else{
        document.forms[i].elements[j].addEventListener('focus', setSuggestActiveElement, false);
        if(!isInContainer(document.forms[i].elements[j], objContainer) || document.forms[i].elements[j] === objSearchField) {
          document.forms[i].elements[j].addEventListener('blur', clearSuggestActiveElement, false);
        }
      }
    }
  }

  var rsltElt = document.getElementById(nameField + 'resultspan');
  if(rsltElt){
    if(document.all){
      rsltElt.attachEvent('onfocus', function(event){
        objSearchField.focus();
      } );
    }else{
      rsltElt.addEventListener('focus', function(event){
        objSearchField.focus();
      }, false);
    }
  }
  var cancelElt = document.getElementById(nameField + 'cancelsuggest');
  if(cancelElt){
    if(document.all){
      cancelElt.attachEvent('onfocus', setSuggestActiveElement );
      cancelElt.attachEvent('onblur', function(event){
        var objEl = event.target ? event.target : event.srcElement;

        // 1. don't unset the active element in case it is In Container (allows switching between the container's elements without the blur actions checking)
        // 2. unset the active element in case it is the search input (allows performing the blur actions checking when switching to non-form elements)
        if(!isInContainer(objEl, objContainer) || objEl == cancelElt) {
          mobjActiveElement = null;
        }
        window.setTimeout('checkSuggestInputBlur("' + nameField + '", ' + dataSetId + ');', 100);
      } );
    }else{
      cancelElt.addEventListener('focus', setSuggestActiveElement, false);
      cancelElt.addEventListener('blur', function(event){
        var objEl = event.target ? event.target : event.srcElement;

        // 1. don't unset the active element in case it is In Container (allows switching between the container's elements without the blur actions checking)
        // 2. unset the active element in case it is the search input (allows performing the blur actions checking when switching to non-form elements)
        if(!isInContainer(objEl, objContainer) || objEl == cancelElt) {
          mobjActiveElement = null;
        }
        window.setTimeout('checkSuggestInputBlur("' + nameField + '", ' + dataSetId + ');', 100);
      }, false);
    }
  }

  // perform onBlur actions as needed
  if(document.all){
    objSearchField.attachEvent('onblur', function(e){
      window.setTimeout('checkSuggestInputBlur("' + nameField + '", ' + dataSetId + ');', 100);
    } );
  }else{
    objSearchField.addEventListener('blur', function(e){
      window.setTimeout('checkSuggestInputBlur("' + nameField + '", ' + dataSetId + ');', 100);
     }, false);
  }

}

function scheduleInstallSuggestHandler(nameField, dataSetId, onShowChoice, termCompany, typeDataSet){
  var fncOldLoad = window.onload;
  window.onload=function(){
//    fncOldLoad();
    installSuggestHandler(nameField, dataSetId, onShowChoice, termCompany, typeDataSet);
  };
}

function setresulttext(nameField, results) {
  document.getElementById(nameField + "resultspan").style.display = "block";
  document.getElementById(nameField + "resultspan").innerHTML = results;
}

function showPicklistChoice(nameField, recordID, value) {
  document.getElementById(nameField).value = recordID;
  if(window.Form) {
    var fld = Form.getField(nameField);
    if (fld) {
      fld.changed(recordID);
    }
  }
  if (document.getElementById(nameField + ".D") !== null) {
    document.getElementById(nameField + ".D").value = value;
  }
  if (document.getElementById("CoOptionID") !== null) {
    document.getElementById("CoOptionID").value = recordID;
  }
  if (document.frm !== undefined) {
      if (document.frm[nameField + ".Locate"] !== undefined) {
          document.frm[nameField + ".Locate"].value = document.frm[nameField + ".Locate"].value.replace("Add ", "Change ");
      }
  }
  document.getElementById(nameField + "display").innerHTML = value;
  document.getElementById(nameField + "search").value = document.getElementById(nameField + "display").innerHTML;
  hidePicklist(nameField);
  locateRemoveLink(nameField, '', 1);
}

function showPicklistChoice2(nameField, recordID, value, valueDisplay) {
  document.getElementById(nameField).value = recordID;
  if(window.Form) {
    var fld = Form.getField(nameField);
    if (fld) {
      fld.changed(recordID);
    }
  }
  if (document.getElementById(nameField + ".D") !== null) {
    document.getElementById(nameField + ".D").value = value;
  }
  document.getElementById(nameField + "search").value = value;
  if (document.frm[nameField + ".Locate"] !== undefined) {
    document.frm[nameField + ".Locate"].value = document.frm[nameField + ".Locate"].value.replace("Add ","Change ");
  }
  document.getElementById(nameField + "display").innerHTML = valueDisplay;
  hidePicklist(nameField);
  locateRemoveLink(nameField, '', 1);
}

function showPicklistChoice3(nameField, recordID, value, valueExt) {
  if (valueExt === '') {
    valueExt = '{}';
  }
  var v = eval('(' + valueExt + ')');
  document.getElementById(nameField).value = recordID;
  if(window.Form) {
    var fld = Form.getField(nameField);
    if (fld) {
      if (v.CoID) {
        fld.changed(v.CoID, recordID);
      }
      else {
        fld.changed(recordID);
      }
    }
  }
  if (document.getElementById(nameField + ".D")) {
    document.getElementById(nameField + ".D").value = value;
  }
  if (document.getElementById("CoOptionID")) {
    document.getElementById("CoOptionID").value = recordID;
  }
  document.getElementById(nameField + "search").value = value;
  if (document.frm[nameField + ".Locate"]) {
    document.frm[nameField + ".Locate"].value = document.frm[nameField + ".Locate"].value.replace("Add ","Change ");
  }
  if(document.getElementById(nameField + "display")){
    if (v.valueDisplay) {
      document.getElementById(nameField + "display").innerHTML = v.valueDisplay;
    }
    else {
      document.getElementById(nameField + "display").innerHTML = value;
    }
  }
  hidePicklist(nameField);
  locateRemoveLink(nameField, '', 1);
}

function companycontactcreate(form, el, coid) {
  window.open("/workspace/contactadd.asp?Action=Add&NewEngine=True&RtnFormID=" + form + "&RtnQuestionID=" + el + "&RtnCoID=" + coid, "createcontact", "height=500,width=750,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no");
}

function windowpick(form, url, param, value, hidden) {
  if (param !== '') {
    param = '&' + param;
  }
  window.open(url + "?Value=" + encodeURL(window.document.forms[form].elements[value].value) + "&RtnFormId=" + form + "&RtnValue=" + value + "&RtnHidden=" + hidden + param, "pickwindow", "height=550,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,width=750");
}

function checkAll(obj, chkobj) {
  var i;

  if (chkobj !== undefined){
    if (chkobj !== null) {
      if (chkobj.length === undefined) {
        chkobj.checked = obj.checked;
      }
      else {
        for (i = 0; i < chkobj.length; i++) {
          chkobj[i].checked = obj.checked;
        }
      }
    }
  }
}

function checkBoxAll(chkobj, value){
  var i;
  if (chkobj !== undefined){
    if (chkobj !== null) {
      for (i = 0; i < chkobj.length; i++)
        chkobj[i].checked = value ;
    }
  }
}


function checkObject(chkobj, value){
  chkobj.checked = value;
}

function linkSubmit(orderby, orderdirection) {
  document.frm.OrderBy.value = orderby;
  document.frm.OrderDirection.value = orderdirection;
  document.frm.submit();
}

function linkSublistSubmit(frm, orderby, orderdirection) {
  var fldOrderBy = document.getElementById("OrderBy_" + frm.name);
  var fldOrderDir = document.getElementById("OrderDirection_" + frm.name);
  if (fldOrderBy !== null) {
    fldOrderBy.value = orderby;
    fldOrderDir.value = orderdirection;
  }
  else {
    frm.OrderBy.value = orderby;
    frm.OrderDirection.value = orderdirection;
  }
  frm.submit();
}

function sbmtHTML() {
  if (typeof(divHTML) !== 'undefined') {
    document.forms.frm.HTML.value = divHTML.innerHTML;
  }
  return true;
}

function goURL(URL) {
  try {
    location.href = URL;
  }
  catch(e){
    return false;
  }
}

function checkRecsPerPage() {
  var re = /^([1-9])(\d{0,2})$/;
  if (re.test(document.frm.RecsPerPage.value)) {
    return true;
  }
  else {
    alert('Please, enter correct value for page size!');
  return false;
  }
}

function checkSubListRecsPerPage(frmname) {
  var re = /^([1-9])(\d{0,2})$/;
  if (re.test(frmname.RecsPerPage.value)) {
    return true;
  }
  else {
    alert('Please, enter correct value for page size!');
  return false;
  }
}

function validateRecsPerPage(evnt){
 var key;

  if (window.event) {
    evnt = window.event;
    key = evnt.keyCode;
  }
  else {
    if (evnt) {
      key = evnt.which;
    }
    else {
      return true;
    }
  }
  if (key == 13){
    evnt.cancelBubble = true;
    if (evnt.stopPropagation) {
      evnt.stopPropagation();
    }
    var btn = document.getElementById('RecordsSubmit');
    btn.click();
    return false;
  }

  // control keys
  if ((key === null) || (key === 0) || (key == 8) ||
    (key == 9) || (key == 13) || (key == 27) || (key >= 0x30) && (key <= 0x39)) {
    return true;
  }
  return false;
}

function saveDisplaySettings(action) {
  if (document.frames && document.frames("DisplaySettings") !== null) {
    var sPath = "http://" + document.location.hostname + "/workspace/profile/savesettings.asp?helptext=" + action;
    document.frames("DisplaySettings").document.location.href = sPath;
  }
}

function hideHelp() {
  this.fld = document.getElementById('helpHidden');
  this.fld.style.display = 'block';
  this.fld = document.getElementById('helpHiddenButtons');
  this.fld.style.display = 'block';
  this.fld = document.getElementById('helpText');
  this.fld.style.display = 'none';
  this.fld = document.getElementById('helpTextButtons');
  this.fld.style.display = 'none';
  this.fld = document.getElementById('helpMore');
  this.fld.style.display = 'none';
  saveDisplaySettings('hidden');
}

function hideMoreHelp() {
  this.fld = document.getElementById('helpHidden');
  this.fld.style.display = 'none';
  this.fld = document.getElementById('helpHiddenButtons');
  this.fld.style.display = 'none';
  this.fld = document.getElementById('helpText');
  this.fld.style.display = 'block';
  this.fld = document.getElementById('helpTextButtons');
  this.fld.style.display = 'block';
  this.fld = document.getElementById('helpMore');
  this.fld.style.display = 'none';
  saveDisplaySettings('hidden');
}

function showHelp() {
  this.fld = document.getElementById('helpHidden');
  this.fld.style.display = 'none';
  this.fld = document.getElementById('helpHiddenButtons');
  this.fld.style.display = 'none';
  this.fld = document.getElementById('helpText');
  this.fld.style.display = 'block';
  this.fld = document.getElementById('helpTextButtons');
  this.fld.style.display = 'block';
  this.fld = document.getElementById('helpMore');
  this.fld.style.display = 'none';
  saveDisplaySettings('display');
}

function showMoreHelp() {
  this.fld = document.getElementById('helpHidden');
  this.fld.style.display = 'none';
  this.fld = document.getElementById('helpHiddenButtons');
  this.fld.style.display = 'none';
  this.fld = document.getElementById('helpText');
  this.fld.style.display = 'block';
  this.fld = document.getElementById('helpTextButtons');
  this.fld.style.display = 'none';
  this.fld = document.getElementById('helpMore');
  this.fld.style.display = 'block';
  saveDisplaySettings('display');
}

function treeCheck(el) {
  if(el.checked) {
    treeCheckParent(el.value);
  }
  else {
    treeUncheckChild(el.value);
    treeUncheckSingleParent(el.value);
  }
}

function TreeNode(prnt, id, name, elem) {
  this.children = [];
  this.id = id;
  this.name = name;
  this.prnt = prnt;
  this.elem = elem;
}

function clsTree() {
  this.elements = document.getElementsByName("CheckedDetails");
  this.list = [];
  this.top = new TreeNode(null, 0, null, "");
  this.list.push(this.top);
  this.chosen = document.getElementById("DivChosenDetails");
}

function add(nodeId, prntId, name) {
  for(var i = this.list.length - 1; i >= 0 ; i--) {
    var prnt = this.list[i];
    var el = null;
    if (prnt.id == prntId) {
      if (this.elements !== null) {
        if (typeof this.elements.length !== undefined) {
          el = this.elements[this.list.length - 1];
        }
        else {
          el = this.elements;
        }
      }
      else {
        el = this.elements;
      }
      var newNode = new TreeNode(prnt, nodeId,  name, el);
      prnt.children.push(newNode);
      this.list.push(newNode);
      return;
    }
  }
}

function check(el) {
  if(el.checked) {
    this.checkParent(el.value);
  }
  else {
    this.uncheckChild(el.value);
    this.uncheckSingleParent(el.value);
  }
  this.displayChosen();
}

function checkParent(id) {
  for (var i = 0; i < this.list.length; i++){
    var n = this.list[i];
    if (n.id == id) {
      var p = n.prnt;
      while(p) {
        if(p.elem) {
          p.elem.checked = true;
        }
        p = p.prnt;
      }
      return;
    }
  }
}

function uncheckChild(id) {
  for(var i = 0; i < this.list.length; i++) {
    var n = this.list[i];
    if (n.id == id) {
      this.uncheckSubTree(n);
      return;
    }
  }
}

function uncheckSubTree(n) {
  for(var i = 0; i < n.children.length; i++) {
    var child = n.children[i];
    if (child.elem.checked) {
      child.elem.checked = false;
      this.uncheckSubTree(child);
    }
  }
}

function uncheckSingleParent(id) {
  for(var i = 0; i < this.list.length; i++) {
    var n = this.list[i];
    if (n.id == id) {
      this.uncheckParent(n);
      return;
    }
  }
}

function uncheckParent(n) {
  var p = n.prnt;
  if (p) {
    for(var i = 0; i < p.children.length; i++) {
      if (p.children[i].elem && p.children[i].elem.checked){
        return;
      }
    }
    if (p.elem) {
      p.elem.checked = false;
    }
    this.uncheckParent(p);
  }
}

function addChosenCategory(n, p) {
  var e = null;
  if (n.name !== null && n.name !== '') {
    e = document.createElement("DIV");
    e.style.fontSize = "8pt";
    e.style.marginLeft = "18px";
    e.innerHTML = "<img border=0 height=16 width=16 src=\"/images/hier_t_lst.gif\"><img border=0 height=16 width=16 src=\"/images/hier_fold.gif\">&nbsp;<a href=\"#HD" + n.id + "\">" + n.name + "</a>";
    p.appendChild(e);
    if ((p.id == "DivChosenDetails" && p.childNodes.length > 1) || (p.id != "DivChosenDetails" && p.childNodes.length > 4)) {
      if (p.childNodes[p.childNodes.length - 2].childNodes[0].tagName == "IMG") {
        p.childNodes[p.childNodes.length - 2].childNodes[0].src = "/images/hier_t.gif";
      }
      p.childNodes[p.childNodes.length - 2].style.backgroundImage = "url(/images/hier_line.gif)";
      p.childNodes[p.childNodes.length - 2].style.backgroundRepeat = "repeat-y";
    }
    if (p.id != "DivChosenDetails") {
      if (e.childNodes[1].tagName == "IMG"){
        p.childNodes[1].src = "/images/hier_fold_open.gif";
      }
    }
  }
  else {
    e = p;
  }
  for(var i = 0; i < n.children.length; i++) {
    if (n.children[i].elem && n.children[i].elem.checked) {
      addChosenCategory(n.children[i], e);
    }
  }
}

function calcChosen() {
  //
}

function displayChosen() {
  if(this.chosen !== null) {
    this.chosen.innerHTML = "";
    this.chosen.style.display = "none";
    addChosenCategory(this.top, this.chosen);
    this.chosen.style.display = "inline";
  }
}

function validateEmail(fld) {
  var pass = true;
  var emailPat = /^(.+)@(.+)$/;
  var specialChars = "\\(\\)><@#+=/$|,!?'%&*{}^\\;:\\\\\\\"\\.\\[\\]";
  var validChars = "[^\\s" + specialChars + "]";
  var quotedUser = "(\"[^\"]*\")";
  var atom = validChars + '+';
  var word = "(" + atom + "|" + quotedUser + ")";
  var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
  var matchArray = fld.value.match(emailPat);
  var i;

  pass = (matchArray !== null);
  if (pass) {
    var user = matchArray[1];
    for (i = 0; i < user.length; i++) {
      if (user.charCodeAt(i) > 127) {
        pass = false;
      }
    }
  }
  if (pass) {
    var domain = matchArray[2];
    for (i = 0; i < domain.length; i++) {
      if (domain.charCodeAt(i) > 127) {
        pass = false;
      }
    }
  }
  if (pass && !user.match(userPat)) {
    pass = false;
  }
  if (pass) {
    var atomPat = new RegExp("^" + atom + "$");
    var domArr = domain.split(".");
    var len = domArr.length;
    for (i = 0; i < len; i++) {
      if (domArr[i].search(atomPat )== -1) {
        pass = false;
      }
    }
  }
  if (pass && len < 2) {
    pass = false;
  }

  if (!pass) {
    alert('Error: "Email address" is incomplete or contains invalid values.');
    if (!fld.disabled) {
      fld.focus();
    }
  }
  return pass;
}

function validateEmailNotRequired(fld) {
  if (isEmpty(fld)) {
    return true;
  }
  return validateEmail(fld);
}

function validateTerms(fld) {
  var pass = true;

  if (fld.checked == 0) {
    pass = false;
    alert('You must agree to the mBLAST Terms and Conditions.');
    if (!fld.disabled) {
      fld.focus();
    }
  }

  return pass;
}

function validatePolicy(fld) {
  var pass = true;

  if (!fld.checked) {
    pass = false;
    alert('You must agree to the mBLAST Privacy Policy.');
    if (!fld.disabled) {
      fld.focus();
    }
  }

  return pass;
}

function validateAwardRules(fld) {
  var pass = true;

  if (fld.checked === 0) {
    pass = false;
    alert('You must read the rules and guidelines and agree to these conditions.');
    if (!fld.disabled) {
      fld.focus();
    }
  }

  return pass;
}

function validateAwardCategories(fld) {
  var pass = false;

  var count = fld.length;

  for (var i = 0; i < count; i++) {
    if (fld[i].checked) {
      pass = true;
    }
  }

  if (!pass) {
    alert("You must select at least one category.");
    try {
       fld[0].focus();
    }
    catch(e) {}
  }
  return pass;
}

function selectFormQuestion(){
  var wnd = window.open('formgrouplist.asp',null,'location:none,menubar:none');
}

clsTree.prototype.add = add;
clsTree.prototype.check = check;
clsTree.prototype.checkParent = checkParent;
clsTree.prototype.uncheckChild = uncheckChild;
clsTree.prototype.uncheckSingleParent = uncheckSingleParent;
clsTree.prototype.uncheckSubTree = uncheckSubTree;
clsTree.prototype.uncheckParent = uncheckParent;
clsTree.prototype.calcChosen = calcChosen;
clsTree.prototype.displayChosen = displayChosen;

// Title: DateTime picker
var divCalendar = null, frmCalendar = null, calendar_target;

// datetime parsing and formatting routimes. modify them if you wish other datetime format
function str2dt(str_datetime) {
  var re_date = /^(\d+)\-(\d+)\-(\d+)$/;
  if (!re_date.exec(str_datetime)){
    return (new Date ());
  }
  return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1));
}

function dt2dtstr (dt_datetime) {
  return (dt_datetime.getDate() + "-" + (dt_datetime.getMonth()+1) + "-" + dt_datetime.getFullYear());
}

function dt2tmstr (dt_datetime) {
  return (dt_datetime.getHours() + ":" + dt_datetime.getMinutes() + ":" + dt_datetime.getSeconds());
}

function draw_calendar(strQuestionMonth, strQuestionDay, strQuestionYear, str_datetime) {

  var strDateQuestions = "'"+strQuestionMonth+"', '"+strQuestionDay+"', '"+strQuestionYear+"'";
  var arr_months = ["January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"];
  var week_days = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
  var n_weekstart = 1; // day week starts from (normally 0 or 1)

  var dt_datetime = (str_datetime === null || str_datetime === "" ?  new Date() : str2dt(str_datetime));
  var dt_prev_month = new Date(dt_datetime);
  dt_prev_month.setMonth(dt_datetime.getMonth()-1);
  var dt_next_month = new Date(dt_datetime);
  dt_next_month.setMonth(dt_datetime.getMonth()+1);
  var dt_prev_year = new Date(dt_datetime);
  dt_prev_year.setFullYear(dt_prev_year.getFullYear()-1);
  var dt_next_year = new Date(dt_datetime);
  dt_next_year.setFullYear(dt_datetime.getFullYear()+1);
  var dt_firstday = new Date(dt_datetime);
  dt_firstday.setDate(1);
  dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
  var dt_lastday = new Date(dt_next_month);
  dt_lastday.setDate(0);

  var b = (document.getElementById(strQuestionDay) !== null);

  // html generation (feel free to tune it for your particular application)
  // print calendar header
  var str_buffer = "<table style=\"BORDER-RIGHT: #888855 1px outset;BORDER-TOP: #ffffff 1px outset;BORDER-LEFT: #ffffff 1px outset;BORDER-BOTTOM: #888855 1px outset;\" cellspacing=\"0\"  height=\"100%\" width=\"100%\">\n"+
    "<tr><td class='CalendarBorder'>\n"+
    "<table  border=\"0\" height=\"100%\" width=\"100%\">\n"+
    "<tr>\n";

  if (b) {
    str_buffer +=
    "<td align=\"right\" style=\"CURSOR:HAND;\" onclick=\"javascript:draw_calendar(" +
    strDateQuestions+", '"+ dt2dtstr(dt_prev_month)+"');\">"+
    "<img src=\"/images/Calendarprev.gif\" width=\"16\" height=\"16\" border=\"0\""+
    " alt=\"previous month\"></td>\n"+
    "<td style='width:90px' class=\"CalendarHeader\" align=\"center\">" +arr_months[dt_datetime.getMonth()] + "</td>\n"+
    " <td  align=\"left\" style=\"CURSOR:HAND;\" onclick=\"javascript:draw_calendar("+
    strDateQuestions+", '"+dt2dtstr(dt_next_month)+"');\">"+
    "<img src=\"/images/Calendarnext.gif\" width=\"16\" height=\"16\" border=\"0\""+
    " alt=\"next month\"></td>\n"+

    "<td >&nbsp;&nbsp;</td>\n"+

    "<td align=\"right\" style=\"CURSOR:HAND;\" onclick=\"javascript:draw_calendar("+
    strDateQuestions+", '"+ dt2dtstr(dt_prev_year)+"');\">"+
    "<img src=\"/images/Calendarprev.gif\" width=\"16\" height=\"16\" border=\"0\""+
    " alt=\"previous year\"></td>\n"+
    "<td class=\"CalendarHeader\" align=\"center\">"+dt_datetime.getFullYear()+"</td>\n"+
    " <td  align=\"left\" style=\"CURSOR:HAND;\" onclick=\"javascript:draw_calendar("+
    strDateQuestions+", '"+dt2dtstr(dt_next_year)+"');\">"+
    "<img src=\"/images/Calendarnext.gif\" width=\"16\" height=\"16\" border=\"0\""+
    " alt=\"next year\"></td>\n"+

    "</tr>\n" +
    "<tr><td colspan='7'><table cellspacing='1' cellpadding='3' border='0' width='100%' height=\"100%\">";

    var dt_current_day = new Date(dt_firstday);
    // print weekdays titles
    str_buffer += "<tr>\n";
    for (var n=0; n<7; n++) {
      str_buffer += "  <td class=\"CalendarTitle\">"+
      week_days[(n_weekstart+n)%7]+"</td>\n";
    }
    // print calendar table
    str_buffer += "</tr>\n";
    var rows = 0;
    while (dt_current_day.getMonth() == dt_datetime.getMonth() || dt_current_day.getMonth() == dt_firstday.getMonth() || (rows < 6) ) {
      // print row heder
      str_buffer += "<tr>\n";
      for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
          if (dt_current_day.getDate() == dt_datetime.getDate() &&
            dt_current_day.getMonth() == dt_datetime.getMonth()){
            // print current date
            str_buffer += "  <td class=\"CalendarCurrent\" ";
          }
          else {
            if (dt_current_day.getDay() === 0 || dt_current_day.getDay() == 6) {
              // weekend days
              str_buffer += "  <td class=\"CalendarWeekEnd\" ";
            }
            else {
              // print working days of current month
              str_buffer += "  <td class=\"CalendarBody\" ";
            }
          }
          str_buffer += "onclick=\"javascript:saveAndExit(new Date (" + dt_current_day.getFullYear() + "," + dt_current_day.getMonth() + "," + dt_current_day.getDate() + ")," + strDateQuestions+");\" ";

          if (dt_current_day.getMonth() == dt_datetime.getMonth()) {
            // print days of current month
            str_buffer += " style=\"color:#000000;\" ";
          }
          else {
            // print days of other months
            str_buffer += " style=\"color:#A9A9A9;\" ";
          }
          str_buffer += "align=\"right\">";

          str_buffer += dt_current_day.getDate()+"</a></td>\n";
          dt_current_day.setDate(dt_current_day.getDate()+1);
      }
      // print row footer
      str_buffer += "</tr>\n";
      rows++;
    }
    str_buffer +=
    "</table>\n";
  }
  else {
    str_buffer +=
    "<td width=\"100%\">&nbsp;&nbsp;</td>\n"+
    "<td align=\"right\"><a class=\"Calendar\" href=\"javascript:draw_calendar("+
    strDateQuestions+", '"+ dt2dtstr(dt_prev_year)+"');\">"+
    "<img src=\"/images/Calendarprev.gif\" width=\"16\" height=\"16\" border=\"0\""+
    " alt=\"previous year\"></a></td>\n"+
    "<td class=\"CalendarHeader\" align=\"center\">"+dt_datetime.getFullYear()+"</td>\n"+
    "  <td  align=\"left\"><a class=\"Calendar\" href=\"javascript:draw_calendar("+
    strDateQuestions+", '"+dt2dtstr(dt_next_year)+"');\">"+
    "<img src=\"/images/Calendarnext.gif\" width=\"16\" height=\"16\" border=\"0\""+
    " alt=\"next year\"></a></td>\n"+

    "</tr><tr>"+

    "<td colspan='4'><table cellspacing='1' cellpadding='3' border='0' width='100%' height=\"100%\">\n";

    for (var i = 0; i < 12; i = i + 2) {
      str_buffer +=
      "<tr>"+
      "<td class=\"" + ((dt_datetime.getMonth() == i)?"CalendarCurrent":"CalendarBody") + "\"><a class=\"Calendar\" href=\"javascript:saveAndExit(new Date (" + dt_datetime.getFullYear() + "," + i + ",1)," + strDateQuestions + ");\">" + arr_months[i] + "</a></td>"+
      "<td class=\"" + ((dt_datetime.getMonth() == i + 1)?"CalendarCurrent":"CalendarBody") + "\"><a class=\"Calendar\" href=\"javascript:saveAndExit(new Date (" + dt_datetime.getFullYear() + "," + (i + 1) + ",1)," + strDateQuestions + ");\">" + arr_months[i + 1] + "</a></td>"+
      "</tr>\n";
    }

    str_buffer +=
    "</table></td>";

  }

  // clear date button
  str_buffer +=
    "<tr><td colspan=\"7\" align=\"center\" style=\"CURSOR:HAND;\" class=\"CalendarHeader\" onclick=\"saveAndExit(null, " + strDateQuestions + ")\">Clear Date</td></tr>";

  // print calendar footer
  str_buffer += "</tr></table>\n</td></tr></table>\n";

  if (!bMSIE2){
    str_buffer += "<INPUT id=CalendarFocusController type=text style='height:0;width:0;'/>\n";
  }
  divCalendar.innerHTML = str_buffer;
}

function showCalendar(strObjPos, strQuestionMonth, strQuestionDay, strQuestionYear, str_datetime)
{
  if (divCalendar === null) {
    divCalendar = document.createElement('DIV');
    divCalendar.id = "divCalendar";
    divCalendar.backgroundColor = "#A9A9A9";
    divCalendar.style.display = "none";
    divCalendar.style.zIndex = 99999;
    divCalendar.style.position = "absolute";
    divCalendar.style.whiteSpace = "nowrap";
    divCalendar.width = 240;
    divCalendar.style.width = "240px";
    divCalendar.style.height = "180px";
    divCalendar.style.border = "1px solid black";
    divCalendar.onmouseout= new Function('prepareForHideCalendar(true);');
    divCalendar.onmouseover= new Function('prepareForHideCalendar(false);');
    document.body.appendChild(divCalendar);
  }

  if (frmCalendar === null && bMSIE2) {
    frmCalendar = document.createElement("IFRAME");//('<iframe id="frmCalendar" src="javascript:false;" scrolling="no" frameborder="0" style="position:absolute; top:0px; left:0px; display:none;width:240;height:180;"></iframe>');
    frmCalendar.id = "frmCalendar";
    frmCalendar.src = '/IEFrameWarningBypass.htm'; //"javascript:false;";
    frmCalendar.scrolling="no";
    frmCalendar.frameborder="0";
    frmCalendar.style.position = "absolute";
    frmCalendar.style.top = "0px";
    frmCalendar.style.left = "0px";
    frmCalendar.style.display = "none";
    frmCalendar.style.width = "240px";
    frmCalendar.style.height = "180px";
    document.body.appendChild(frmCalendar);
  }
  var t=0;
  var l=0;
  var state=false;

  var cNode = document.getElementById(strObjPos);
  while(cNode.tagName != 'BODY') {
    l+=cNode.offsetLeft;
    t+=cNode.offsetTop;
    cNode=cNode.offsetParent;
  }
  t++;
  var objPos = document.getElementById(strObjPos);
  draw_calendar(strQuestionMonth, strQuestionDay, strQuestionYear, str_datetime);
  l = l + objPos.offsetWidth;// - divCalendar.width; //divCalendar.style.posWidth ;

  divCalendar.style.top = (t+objPos.offsetHeight);
  divCalendar.style.left = l;
  divCalendar.style.display = "block";
  divCalendar.focus();
  if(bMSIE2){
    frmCalendar.style.top = (t+objPos.offsetHeight);
    frmCalendar.style.left = l;
    frmCalendar.style.width = divCalendar.style.posWidth ;
    frmCalendar.style.height = divCalendar.style.posHeight;
    frmCalendar.style.zIndex = divCalendar.style.zIndex - 1;
    frmCalendar.style.display = "block";
    frmCalendar.style.backgroundColor = "black";
  }
  calendar_target = strQuestionMonth;
}

function setNextDates(strDay) {
  var i;

  if(typeof arrChangedDate == "object") {
    var element_index;
    for(i = 0; i < arrChangedDate.length; i++) {
      if(arrChangedDate[i][0] == strDay) {
        element_index = i;
      }
    }
    if (element_index > 0)
    {
      var tempDay = document.getElementById(arrChangedDate[element_index - 1][0]).selectedIndex;
      var tempMonth = document.getElementById(arrChangedDate[element_index - 1][1]).selectedIndex;
      var tempYear = document.getElementById(arrChangedDate[element_index - 1][2]).value;
      if(tempDay == "0" || tempMonth == "0" || tempYear === ''){
        return "";
      }else{
        return tempDay + "-" + tempMonth + "-" + tempYear;
      }
    }else{
      return "";
    }
  }
}

function date4target(strQuestionMonth, strQuestionDay, strQuestionYear) {
  var d1, d2, d3;
  d1 = document.getElementById(strQuestionMonth);
  d2 = document.getElementById(strQuestionDay);
  d3 = document.getElementById(strQuestionYear);
  if (d1 !== null && d2 !== null && d3 !== null) {
    var tempDate = setNextDates(strQuestionDay);
    if (tempDate !== '' && ( d1.value === '' || d2.value === '' || d3.value === '' ) ) {
      return tempDate;
    }
    else {
      return (d2.value + '-' + d1.value + '-' + d3.value );
    }
  }
  else if (d1 !== null && d2 === null && d3 !== null) {
    return ('1-' + d1.value + '-' + d3.value );
  }
  else {
    return (dt2dtstr((new Date())));
  }
}

function hideCalendar()
{
  if (divCalendar !== null) {
    divCalendar.style.display = "none";
    divCalendar = null;
  }
  if (frmCalendar !== null && bMSIE2 ) {
    frmCalendar.style.display = "none";
  }

}

function show_calendar(strQuestionMonth, strQuestionDay, strQuestionYear ) {
  if (divCalendar !== null && divCalendar.style.display != "none" && strQuestionMonth == calendar_target) {
    hideCalendar();
  }
  else {
    showCalendar(strQuestionMonth +"btn", strQuestionMonth, strQuestionDay, strQuestionYear, date4target(strQuestionMonth, strQuestionDay, strQuestionYear));
  }
}

function saveAndExit(datetime, strQuestionMonth, strQuestionDay, strQuestionYear){
  if (datetime !== null) {
    document.getElementById(strQuestionMonth).value = datetime.getMonth()+1;
    var d = document.getElementById(strQuestionDay);
    if (d) {
      d.value = datetime.getDate();
    }
    document.getElementById(strQuestionYear).value = datetime.getFullYear();
  }
  else {
    document.getElementById(strQuestionMonth).value = '';
    var d2 = document.getElementById(strQuestionDay);
    if (d2) {
      d2.value = '';
    }
    document.getElementById(strQuestionYear).value = '';
  }
  hideCalendar();
}

function toggleHelp()
  {
    var x=document.getElementById('helpMore'), y=document.getElementById('helpBar');
    var strLess = "Less help...";
    var strMore = "More help...";
    if (!y.srcb)
      {
        y.srcb = strMore;
        x.srcb = x.style.display;
        x.src2 = '';
      }
    if (y.innerHTML == strMore)
     {
        x.style.display = x.src2;
        y.innerHTML = strLess;
     }
      else
     {
      x.style.display = x.srcb;
      y.innerHTML = strMore;
     }
  }

function processRetrieverSources()
{
  var Src = document.frm.Sources;
  var check = Src[0].checked;

  for (var i = 1; i < Src.length; i++) {
    Src[i].disabled = check;
  }
}

function prepareForHideCalendar(prepare)
{
  if (divCalendar === null) {
    return;
  }
  if(prepare) {
    if(bMSIE2){
       divCalendar.onblur=hideCalendar;
       divCalendar.focus();
     }
     else {
       document.getElementById('CalendarFocusController').onblur=hideCalendar;
       document.getElementById('CalendarFocusController').focus();
     }
   }
   else {
    if (bMSIE2){
      divCalendar.onblur=null;
    }
    else {
      document.getElementById('CalendarFocusController').onblur=null;
    }
  }
}

function linkField(fieldName) {
  var elt = document.getElementById(fieldName + '.Linked');
  if (elt === null || elt === undefined) elt = document.getElementById(fieldName + '_1.Linked');
  elt.value = 1;
  this.fld = document.getElementById(fieldName + 'LDIV');
  this.fld.style.display = 'block';
  this.fld = document.getElementById(fieldName + 'LDIVU');
  this.fld.style.display = 'none';
}

function unlinkField(fieldName) {
  var elt = document.getElementById(fieldName + '.Linked');
  if (elt === null || elt === undefined) elt = document.getElementById(fieldName + '_1.Linked');
  elt.value = 0;
  this.fld = document.getElementById(fieldName + 'LDIV');
  this.fld.style.display = 'none';
  this.fld = document.getElementById(fieldName + 'LDIVU');
  this.fld.style.display = 'block';
}

function ignoreChanges(ms) {
//ignores form changes for ms milliseconds
  if (document.frm) {
    document.frm.disableChangeWarning = true;
    if (ms > 0) {
      window.setTimeout("document.frm.disableChangeWarning = false;", ms);
    }
  }
}

function processHierarchyPreview(id) {
  if (bSample) {
    id.value = '';
    bSample = false;
  }
}

function validateSbmt() {
  var f = document.frm;
  if (f.Sbmt === null) {
    alert('sbmt is null');
  }
  else {
    alert('sbmt is NOT null' + f.Sbmt.value);
    f.Sbmt.click();
  }
}

function setTextToElt(elt, contentText){
var newText ;
  newText = document.createTextNode(contentText);

  while(elt.childNodes.length > 0) {
    elt.removeChild(elt.lastChild);
  }

  elt.appendChild(newText);
}

function updateCharactersRemaining(fld, maxLength) {
  var blnIE = document.all ? true : false;

  if (typeof(fld) == 'string') {
    fld = document.getElementById(fld);
  }

  fld.blur();

  var fldInf = document.getElementById(fld.name + 'Inf');
  var cntCr = 0;
  var fldLen = fld.value.length;

  if (!blnIE && fld.value !== '') {
    cntCr = (fld.value.replace(new RegExp('[^\n]',"g"), '')).length;
    fldLen = fldLen + cntCr;
  }

  if(fldLen > maxLength) {
    setTextToElt(fldInf, '0');
  }
  else {
    setTextToElt(fldInf, maxLength - fld.value.length);
  }

  fld.focus();
}

function limitTEXTAREALength(fld, maxLength){
  var blnIE = document.all ? true : false;
  var cntCr = 0;

  if (typeof(fld) == 'string') {
    fld = document.getElementById(fld);
  }

  var fldLen = fld.value.length;
  if (!blnIE && fld.value !== '') {
    cntCr = (fld.value.replace(new RegExp('[^\n]',"g"), '')).length;
    fldLen = fldLen + cntCr;
  }

  maxLength = maxLength - cntCr;
  if(fldLen > maxLength ){
    fld.value = fld.value.substring(0, maxLength);
    updateCharactersRemaining(fld, maxLength);
  }
  return false;
}

function getWords(fldValue) {
var x = fldValue.replace(/^\s*|\s*$/g,"");//trim

  if (x.length > 0){
    return x.replace(/(\s+|$)/g,'\n').split('\n');
  }
  else {
    return [];
  }
}

function updateWordsRemaining(fld, maxWords) {
  if (typeof(fld) == 'string') {
    fld = document.getElementById(fld);
  }

  fld.blur();

  var fldInf = document.getElementById(fld.name + 'WrdCnt');
  var words = getWords(fld.value);
  var wordsCnt=0;

  if(words.length > 0){
    wordsCnt = words.length - 1;
  }

  if(wordsCnt >= maxWords) {
    setTextToElt(fldInf, '0');
  }
  else {
    setTextToElt(fldInf, maxWords - wordsCnt);
  }

  fld.focus();
}

function updateRatingTotal(ratingQ)
{ var total = 0;
  var elts, eltWeight;
  var ratingList = document.getElementById(ratingQ+'WList');
  var items = ratingList.value.split(",");
  for (var i=0; i < items.length; i++) {
    elts = document.getElementsByName(items[i]);
    eltWeight = document.getElementById(items[i]+'W');
    for (var j=0; j < elts.length; j++) {
      if (elts[j].checked){
        total = total + elts[j].value*eltWeight.value/100;
      }
    }
  }
  var ratingTotal = document.getElementById(ratingQ+'Total');
  setTextToElt(ratingTotal,total.toFixed(2));
}

//limitTEXTAREAMaxWords
function limitTEXTAREAMaxWords(fld, maxWords){
  if (typeof(fld) == 'string') {
    fld = document.getElementById(fld);
  }

  var words = getWords(fld.value);
  var strTmp, i;

  if((words.length-1) > maxWords  ){
    strTmp = fld.value;
    for(i=words.length-1; i >= maxWords; i--){
      strTmp = strTmp.replace(new RegExp(words[i]+'\\s*$',"gi"),'');
    }
    fld.value = strTmp;
    updateWordsRemaining(fld, maxWords);
  }
  return false;
}

function updateRatingOverall(ratingQ){
  var total = 0.0;
  var elts;
  var ratingList = document.getElementById(ratingQ+'.List');
  var items = ratingList.value.split(",");
  for (var i=0; i < items.length; i++) {
    elts = document.getElementsByName(items[i]);
    for (var j=0; j < elts.length; j++) {
      if (elts[j].checked){
        total = total + parseFloat(elts[j].value);
      }
    }
  }
  var ratingTotal = document.getElementById(ratingQ+'.Total');
  if(total > 0) {
    setTextToElt(ratingTotal, total.toFixed(2));
  }
  else {
    setTextToElt(ratingTotal, '');
  }
}

function selectCheckbox(chkBox) {
  var elem = document.getElementById(chkBox);
  if(!elem.disabled){
    elem.checked = !elem.checked;
    if(elem.onclick)
      elem.onclick();
  }
}

function selectRadio(radio, index) {
  var elem = document.getElementsByName(radio);
  if(elem[index].disabled){
    return;
  }
  elem[index].checked = true;
  elem[index].click();
}

function selectRadioNotClick(radio, index) {
  var elem = document.getElementsByName(radio);
  if(elem[index].disabled){
    return;
  }
  elem[index].checked = true;
}

function selectRadioByValue(radio, value) {
  var elem = document.getElementsByName(radio);
  var i;

  if (elem.length === undefined){
    if(elem.value == value && !elem.disabled){
      elem.checked = true;
    }
  }
  else{
    for (i = 0; i < elem.length; i++){
      if(elem[i].value == value && !elem[i].disabled){
        elem[i].checked = true;
      }
    }
  }
}

function isRadioSelectedByValue(radio, value) {
  var elem = document.getElementsByName(radio);
  var i;

  if (elem.length === undefined){
    if(elem.value == value && elem.checked){
      return true;
    }
  }
  else{
    for (i = 0; i < elem.length; i++){
      if(elem[i].value == value && elem[i].checked){
        return true;
      }
    }
  }
  return false;
}

function selectRadioWithCheckboxes(radio, index) {
  var elem = document.getElementsByName(radio);
  var i, j;

  if(elem[index].disabled)
  {
    return;
  }
  // loop throught all choices
  for(i = 0; i < elem.length; i++)
  {
    var blnChecksDisabled = true;
    if(i == index)
    {
      elem[index].checked = true;
      blnChecksDisabled = false;
    }
    var strChoice = radio + '_Ch' + i.toString();
    var chksCountElt = document.getElementById(strChoice + '.V');
    if(chksCountElt && chksCountElt.value > 0)
    {
      for(j = 1; j <= chksCountElt.value; j++)
      {
        var chkElt = document.getElementById(strChoice + '_I' + j.toString());
        if(chkElt)
        {
          chkElt.disabled = (blnChecksDisabled || chkElt.value === '');
        }
      }
    }
  }
}

function isOtherSelected(fld, otherfld) {
  this.otherfld = document.getElementById(otherfld);
  if(this.otherfld === null){
    return;
  }
  this.fld = document.getElementById(fld);
  if (this.fld.value == "[Other]") {
    this.otherfld.style.display = 'inline';
  }
  else {
    this.otherfld.style.display = 'none';
  }
}

// login timeout routines
var loginTimeout;
var loginxmlHTTP;
var sessionLimit = 1000*60*60; // 60 minutes

function setLoginTimeout() {
  loginTimeout = window.setTimeout(mBLAST.showLoginWindow, sessionLimit);
}

function loginResponse() {
  if (loginxmlHTTP.readyState == 4) {
    if (loginxmlHTTP.responseText === '') {
      loginTimeout = window.setTimeout(mBLAST.showLoginWindow, sessionLimit);
      mBLAST.hideLoginWindow();
    }
    else {
      var loginErr = document.getElementById('loginError');
      loginErr.innerHTML = loginxmlHTTP.responseText;
      loginErr.style.display = "block";
    }
  }
}

function login() {

  window.clearTimeout(loginTimeout);
  var loginErr = document.getElementById('loginError');
  loginErr.innerHTML = '';
  loginErr.style.display = "none";

  var loginUID = document.getElementById('PopLoginUID').value;
  var loginPWD = document.getElementById('PopLoginPWD').value;
  var loginBrandID = document.getElementById('LoginBrandID').value;
  loginxmlHTTP = getXMLHTTP();

  loginxmlHTTP.open("GET", '/ws/sessionlogin.asp?u=' + loginUID + '&p=' + loginPWD + '&b=' + loginBrandID + '&r=' + Math.random(), true);

  loginxmlHTTP.onreadystatechange = loginResponse;
  loginxmlHTTP.send(null);

}

function sessionCookiePresent(loginBrandID){
  var cookie = document.cookie;
  var sessionCookie = "Session" + loginBrandID +"=";
  var i,j;

  i = cookie.indexOf(sessionCookie);
  if(i < 0){
    return false;
  }
  i = i + sessionCookie.length;
  j = cookie.indexOf(";", i);
  if((j-i) != 44){
    return false;
  }

  return true;
}

function rememberCookiePresent(loginBrandID){
  var cookie = document.cookie;
  var rememberCookie = "Remember" + loginBrandID +"=";
  var i,j;

  i = cookie.indexOf(rememberCookie);
  if(i < 0){
    return false;
  }
  i = i + rememberCookie.length;
  j = cookie.indexOf(";", i);
  if(j < 0){
    return false;
  }

  cookie = cookie.substring(i, j-1);

  i = cookie.indexOf("GUID=");
  if(i < 0){
    return false;
  }
  i = i + 5; // length of 'GUID='
  j = cookie.indexOf("&", i);
  if(j < 0){
    j = cookie.length;
  }

  if(j-i < 10){
    return false;
  }

  return true;
}

function checkLoginStatus() {

  window.clearTimeout(loginTimeout);
  var loginBrandID;
  if(document.getElementById('LoginBrandID')) {
    loginBrandID = document.getElementById('LoginBrandID').value;
  }

  if( !sessionCookiePresent(loginBrandID)) {
    return true;
  }
  if( !rememberCookiePresent(loginBrandID)) {
    return true;
  }

  loginxmlHTTP = getXMLHTTP();
  loginxmlHTTP.open("GET", '/cd/ws/checklogin.asp?b=' + loginBrandID + '&r=' + Math.random(), false);

  loginxmlHTTP.send(null);

  if (loginxmlHTTP.responseText === '') {
    return false;
  }
  else {
    return true;
  }
}


// end of login timeout routines

function showFieldHelp(fld) {
  if (document.getElementById(fld).style.display == 'block') {
    document.getElementById(fld).style.display = 'none';
  }
  else {
    document.getElementById(fld).style.display = 'block';
  }
}

function setNewFileOption(fld){
  if (fld !== null) {
    fld[0].checked = true;
  }
}

function centerdialog(thewidth, theheight, thesource) {
  var winWidth, winHeight, dialogiframe, newleft, newtop, theblocker;
  dialogiframe = document.getElementById("thedialog");
  theblocker = document.getElementById("blockerbox");
  theblocker.style.width = document.body.scrollWidth;
  theblocker.style.height = document.body.scrollHeight;
  theblocker.style.display = 'block';
  winWidth = (document.all)?document.body.clientWidth:window.innerWidth;
  winHeight = (document.all)?document.body.clientHeight:window.innerHeight;
  newleft = (winWidth - thewidth) / 2 +"px";
  newtop = (winHeight - theheight) / 2 +"px";
  dialogiframe.style.width = thewidth +"px";
  dialogiframe.style.height = theheight +"px";
  dialogiframe.style.left = newleft;
  dialogiframe.style.top = newtop;
  dialogiframe.src = thesource;
  dialogiframe.style.display = 'block';
}

function closedialog() {
  var dialogiframe = document.getElementById("thedialog");
  dialogiframe.style.display = 'none';
  var theblocker = document.getElementById("blockerbox");
  theblocker.style.display = 'none';
}

function copyCompanyValue(LCoIDObj, LCoNameObj, LCoURLObj, RCoIDObj, RCoNameObj, RCoURLObj, RCoNameLblObj, RCoURLLblObj) {
  if (document.getElementById(LCoNameObj) !== null) {
    if (document.getElementById(RCoNameLblObj)) {
      document.getElementById(RCoNameLblObj).innerHTML = document.getElementById(LCoNameObj).value;
    }
  }
  else {
    if (document.getElementById(RCoNameLblObj)) {
      document.getElementById(RCoNameLblObj).innerHTML = "";
    }
  }

  if (document.getElementById(LCoIDObj) !== null) {
    if (document.getElementById(RCoIDObj)) {
      document.getElementById(RCoIDObj).value = document.getElementById(LCoIDObj).value;
    }
  }
  else {
    if (document.getElementById(RCoIDObj)) {
      document.getElementById(RCoIDObj).value = "";
    }
  }

  if ((document.getElementById(RCoURLLblObj) !== null) && (document.getElementById(LCoURLObj) !== null)) {
    document.getElementById(RCoURLLblObj).innerHTML = document.getElementById(LCoURLObj).value;
    document.getElementById(RCoURLLblObj).href = document.getElementById(LCoURLObj).value;
  }
  else {
    if (document.getElementById(RCoURLLblObj) !== null) {
      document.getElementById(RCoURLLblObj).innerHTML = "";
      document.getElementById(RCoURLLblObj).href = "";
    }
  }
}

function copyEventTypeValue(LNameObj, RNameLblObj, RNameObj) {
  if (document.getElementById(LNameObj) !== null) {
    if (document.getElementById(RNameLblObj)) {
      document.getElementById(RNameLblObj).innerHTML = document.getElementById(LNameObj).value;
    }
    if (document.getElementById(RNameObj)) {
      document.getElementById(RNameObj).value = document.getElementById(LNameObj).value;
    }
  }
}

function copyVenueValue(ImpVenueID, VenueIDObj, LNameObj, RNameLblObj, RNameObj) {
  if (document.getElementById(VenueIDObj) !== null) {
    document.getElementById(VenueIDObj).value = ImpVenueID;
  }

  if (document.getElementById(LNameObj) !== null) {
    if (document.getElementById(RNameLblObj) !== null) {
      document.getElementById(RNameLblObj).innerHTML = document.getElementById(LNameObj).value;
    }
    if (document.getElementById(RNameObj) !== null) {
      document.getElementById(RNameObj).value = document.getElementById(LNameObj).value;
    }
  }
}

function copyDateTimeValue(leftObj1, leftObj2, leftObj3, leftObj4, leftObj5, leftObj6, rightObj1, rightObj2, rightObj3, rightObj4, rightObj5, rightObj6) {
  if (document.getElementById(rightObj1) && document.getElementById(leftObj1)) {
    document.getElementById(rightObj1).selectedIndex = document.getElementById(leftObj1).value;
  }
  if (document.getElementById(rightObj2) && document.getElementById(leftObj2)) {
    document.getElementById(rightObj2).selectedIndex = document.getElementById(leftObj2).value;
  }
  if (document.getElementById(rightObj3) && document.getElementById(leftObj3)) {
    document.getElementById(rightObj3).value = document.getElementById(leftObj3).value;
  }
  if (document.getElementById(rightObj4) && document.getElementById(leftObj4)) {
    document.getElementById(rightObj4).value = document.getElementById(leftObj4).value;
  }
  if (document.getElementById(rightObj4) && document.getElementById(leftObj4)) {
    if (document.getElementById(leftObj4).value == '12') {
      document.getElementById(rightObj4).selectedIndex = 1;
    }
  }
  if (document.getElementById(rightObj5) && document.getElementById(leftObj5)) {
    document.getElementById(rightObj5).value = document.getElementById(leftObj5).value;
  }
  if (document.getElementById(rightObj6) && document.getElementById(leftObj6)) {
    document.getElementById(rightObj6).value = document.getElementById(leftObj6).value;
  }
}

function copyPhoneValue(leftObj1, leftObj2, leftObj3, leftObj4, rightObj1, rightObj2, rightObj3, rightObj4) {
  document.getElementById(rightObj1).value = document.getElementById(leftObj1).value;
  document.getElementById(rightObj2).value = document.getElementById(leftObj2).value;
  document.getElementById(rightObj3).value = document.getElementById(leftObj3).value;
  document.getElementById(rightObj4).value = document.getElementById(leftObj4).value;
}

function getErrorField(fld) {
  var num = "0123456789";
  var i;
  var s;
  var errnme = '';

  if (typeof fld == 'string') {
    s = fld;
  }
  else {
    s = fld.id;
  }

  if(s === ''){
    s = fld.name;
  }

  if (s.substring(0, 1) == 'Q') {
    errnme = 'Q';
    i = 1;
    for (i = 1; i < s.length && num.indexOf(s.substring(i, i+1)) != "-1"; i++) {
      errnme += s.substring(i, i+1);
    }
  }
  else {
    errnme = s;
  }

  return errnme + '.ERR';
}

function removeErrorMsg(fld, isArray) {
  var fl;

  fl = isArray ? fld[0] : fld;

  var errfld = document.getElementById(getErrorField(fl));
  if (errfld !== null) {
    errfld.style.display = 'none';
    if (!isArray) {
      if (fld.type == 'radio' || fld.type == 'checkbox') {
        fld.style.backgroundColor = '#f3f3ec';
      }
      else {
        fld.style.backgroundColor = '#ffffff';
      }
    }
    else {
      for (var i = 0; i < fld.length; i++) {
        if (fld[i].type == 'radio' || fld[i].type == 'checkbox') {
          fld[i].style.backgroundColor = '#f3f3ec';
        }
        else {
          fld[i].style.backgroundColor = '#ffffff';
        }
      }
    }
  }
}

function removeErrorMsg2(fld, isArray) {
  var fl;

  fl = isArray ? fld[0] : fld;

  var errfld = document.getElementById(getErrorField(fl));
  if (errfld !== null) {
    errfld.style.display = 'none';
    if (!isArray) {
      if (fld.type == 'radio' || fld.type == 'checkbox') {
        fld.style.backgroundColor = '#f3f3ec';
      }
      else {
        fld.style.backgroundColor = '#ffffff';
      }
    }
    else {
      for (var i = 0; i < fld.length; i++) {
        if (fld[i].type == 'radio' || fld[i].type == 'checkbox') {
          fld[i].style.backgroundColor = '#f3f3ec';
        }
        else {
          fld[i].style.backgroundColor = '#ffffff';
        }
      }
    }
  }
}
function isNumeric(numvalue) {
  var regexp =  /^\d*\.?\d*?$/;
  var result = regexp.test(numvalue);
  if (result === null) {
    result = false;
  }
  return result;
}

function showValidMsg(fld, nme, msg, req, isArray) {
  var fl;
  var isDisplay;
  var flnumber;
  var fldfocusnumber;

  fl = isArray ? fld[0] : fld;

  nme = nme.replace(/<br>/, " ");
  var errfld = document.getElementById(getErrorField(fl));
  if (errfld === null) {
    if (req) {
      alert('Error: "' + nme + '" is required.  ' + msg);
    }
    else {
      alert('Error: "' + nme + '" is incomplete or contains invalid values.  ' + msg);
    }
  }
  else {
    errfld.style.display = 'block';
    if (req) {
      errfld.innerHTML = 'Error: "' + nme + '" is required.  ' + msg;
    }
    else {
      errfld.innerHTML = 'Error: "' + nme + '" is incomplete or contains invalid values.  ' + msg;
    }
    if (!isArray) {
      fld.style.backgroundColor = '#feff9f';
    }
    else {
      for (var i = 0; i < fld.length; i++) {
        fld[i].style.backgroundColor = '#feff9f';
      }
    }
  }

  if (!focusSet) {
    fldfocus = null;
  }

  if (fldfocus !== null) {
    if (fldfocus.name == fl.name){
      focusSet = false;
    }else {
      if((!fldfocus.name == '')||(!fldfocus.name == 'undefined'))
      { flnumber = fl.name.replace("Q", "");
        fldfocusnumber = fldfocus.name.replace("Q", "");
        flnumber = flnumber.replace("_", ".");
        fldfocusnumber = fldfocusnumber.replace("_", ".");
        if (isNumeric(flnumber) && isNumeric(fldfocusnumber)) {
          if (flnumber <= fldfocusnumber) {
            fldfocus = fl;
          }
        }
      }
    }
  }

  if (!focusSet || fldfocus === null) {
    if (!bMSIE2) {
      isDisplay = (fl.style === null);
      if (!isDisplay && fl.type == 'hidden') {
        try {
          if (errfld !== null){
            errfld.focus();
            fldfocus = fl;
            focusSet = true;
            errfld.scrollIntoView(true);
           }
        }
        catch(e) {}
      }
      else{
        try {
          fl.focus();
          fldfocus = fl;
          focusSet = true;
          fl.scrollIntoView(true);
        }
        catch(e2) {}
      }
    }
    else {
      isDisplay = (fl.style === null);
      if (!isDisplay) {
        isDisplay = (fl.style.display != 'none');
        try {
          if (errfld !== null && fl.type == 'hidden'){
            errfld.focus();
            fldfocus = fl;
            focusSet = true;
            errfld.scrollIntoView(true);
           }
        }
        catch(e3) {}
      }
      if (!fl.disabled && fl.type != 'hidden' && isDisplay) {
        try {
          fl.focus();
          fldfocus = fl;
          focusSet = true;
          fl.scrollIntoView(true);
        }
        catch(e4) {}
      }
    }
  }
}

function showValidMsg2(fld, msg, isArray) {
  var fl;
  var isDisplay;
  var flnumber;
  var fldfocusnumber;

  fl = isArray ? fld[0] : fld;

  var errfld = document.getElementById(getErrorField(fl));
  if (errfld === null) {
    alert(msg);
  }
  else {
    errfld.style.display = 'block';
    errfld.innerHTML = msg;
    if (!isArray) {
      fld.style.backgroundColor = '#feff9f';
    }
    else {
      for (var i = 0; i < fld.length; i++) {
        fld[i].style.backgroundColor = '#feff9f';
      }
    }
  }

  if (!focusSet) {
    fldfocus = null;
  }

  if (fldfocus !== null) {
    if (fldfocus.name == fl.name){
      focusSet = false;
    }
    else {
      flnumber = fl.name.replace("Q", "");
      fldfocusnumber = fldfocus.name.replace("Q", "");
      flnumber = flnumber.replace("_", ".");
      fldfocusnumber = fldfocusnumber.replace("_", ".");
      if (isNumeric(flnumber) && isNumeric(fldfocusnumber)) {
        if (flnumber <= fldfocusnumber) {
          fldfocus = fl;
        }
      }
    }
  }

  if (!focusSet || fldfocus === null) {
    if (!bMSIE2) {
      isDisplay = (fl.style === null);
      if (!isDisplay && fl.type == 'hidden') {
        try {
          if (errfld !== null){
            errfld.focus();
            fldfocus = fl;
            focusSet = true;
            errfld.scrollIntoView(true);
           }
        }
        catch(e) {}
      }
      else{
        try {
          fl.focus();
          fldfocus = fl;
          focusSet = true;
          fl.scrollIntoView(true);
        }
        catch(e2) {}
      }
    }
    else {
      isDisplay = (fl.style === null);
      if (!isDisplay) {
        isDisplay = (fl.style.display != 'none');
        try {
          if (errfld !== null && fl.type == 'hidden'){
            errfld.focus();
            fldfocus = fl;
            focusSet = true;
            errfld.scrollIntoView(true);
           }
        }
        catch(e3) {}
      }
      if (!fl.disabled && fl.type != 'hidden' && isDisplay) {
        try {
          fl.focus();
          fldfocus = fl;
          focusSet = true;
          fl.scrollIntoView(true);
        }
        catch(e4) {}
      }
    }
  }
}

function showValidMsg3(fld, nme, msg, req, isArray) {
  var fl;
  var isDisplay;
  var flnumber;
  var fldfocusnumber;

  fl = isArray ? fld[0] : fld;

  nme = nme.replace(/<br>/, " ");
  var errfld = document.getElementById(getErrorField(fl));
  if (errfld === null) {
    if (req) {
      alert('Error: "' + nme + '" is required.  ' + msg);
    }
    else {
      alert('Error: "' + nme + '" is incomplete or contains invalid values.  ' + msg);
    }
  }
  else {
    errfld.style.display = 'block';
    if (req) {
      errfld.innerHTML = 'Error: "' + nme + '" is required.  ' + msg;
    }
    else {
      errfld.innerHTML = 'Error: "' + nme + '" is incomplete or contains invalid values.  ' + msg;
    }
  }

  if (!focusSet) {
    fldfocus = null;
  }

  if (fldfocus !== null) {
    if (fldfocus.name == fl.name){
      focusSet = false;
    }else {
      if ((!fldfocus.name == 'undefined') || (!fldfocus.name == ''))
      {
        if ((!fl.name == 'undefined') || (!fl.name == ''))
        {
          flnumber = fl.name.replace("Q", "");
          fldfocusnumber = fldfocus.name.replace("Q", "");
          flnumber = flnumber.replace("_", ".");
          fldfocusnumber = fldfocusnumber.replace("_", ".");
          if (isNumeric(flnumber) && isNumeric(fldfocusnumber)) {
            if (flnumber <= fldfocusnumber) {
              fldfocus = fl;
            }
          }
        }
      }
    }
  }

  if (!focusSet || fldfocus === null) {
    if (!bMSIE2) {
      isDisplay = (fl.style === null);
      if (!isDisplay && fl.type == 'hidden') {
        try {
          if (errfld !== null){
            errfld.focus();
            fldfocus = fl;
            focusSet = true;
            errfld.scrollIntoView(true);
           }
        }
        catch(e) {}
      }
      else{
        try {
          fl.focus();
          fldfocus = fl;
          focusSet = true;
          fl.scrollIntoView(true);
        }
        catch(e2) {}
      }
    }
    else {
      isDisplay = (fl.style === null);
      if (!isDisplay) {
        isDisplay = (fl.style.display != 'none');
        try {
          if (errfld !== null && fl.type == 'hidden'){
            errfld.focus();
            fldfocus = fl;
            focusSet = true;
            errfld.scrollIntoView(true);
           }
        }
        catch(e3) {}
      }
      if (!fl.disabled && fl.type != 'hidden' && isDisplay) {
        try {
          fl.focus();
          fldfocus = fl;
          focusSet = true;
          fl.scrollIntoView(true);
        }
        catch(e4) {}
      }
    }
  }
}

function isValidNumber(fld, nme, chr) {
  var num = "0123456789-.";
  var i;
  var temp;
  var pass = true;
  var s;

  removeErrorMsg(fld, false);

  num = num + chr;
  s = fld.value;
  i = s.indexOf(",,");
  if (i != -1) {
    s = s.substring(0, i);
  }
  for (i = 0; i < s.length; i++) {
    temp = "" + s.substring(i, i+1);
    if (num.indexOf(temp) == "-1") {
      pass = false;
    }
  }
  if (!pass){
    showValidMsg(fld, nme, "", false, false);
  }
  else {
    if (fldfocus !== null) {
      if (fldfocus.name == fld.name) {
        fldfocus = null;
      }
    }
  }
  return pass;
}

function isNotEmptyKeyword(fld, nme, fldName) {
  removeErrorMsg2(document.getElementById(fldName), false);

  var fldIndex = document.getElementById(fldName + '.Index');

  if (fldIndex.value  == 0)
  {
    showValidMsg3(document.getElementById(fldName), nme, "Please enter a value for it.", true, false);
    return true;
  }

  return false;
}
function isNotEmptyKeyword1(fld, nme, fldName, appendname) {
  removeErrorMsg2(document.getElementById(fldName), false);

  if((document.getElementById(fldName + appendname).innerHTML == 'Click Add Company --&gt;') || (document.getElementById(fldName + appendname).innerHTML == 'Click Add Media Outlet --&gt;') )
  {
    showValidMsg3(document.getElementById(fldName), nme, "Please enter a value for it.", true, false);
    return true;
  }

  return false;
}
function isLinkedN(fld) {
  var fldLinked = document.getElementById(fld.name + '.Linked' );
  if (fldLinked !== null && fldLinked.value == '1') {
    return true;
  }
  return false;
}

function isValidText(fld, nme, req, num) {
  var pass = true, linked = false;

  removeErrorMsg(fld, false);

  // For new engine check if the field is linked
  if (document.getElementById(fld.name + '.LV') !== null) {
    if (isLinkedN(fld)) {
      fld = document.getElementById(fld.name + '.LV');
      linked = true;
    }
  }
  if(req && !linked ){
    var fldNAOptions = document.getElementsByName(fld.name+'.NA');
    for (var i = 0; i < fldNAOptions.length; i++) {
      if (fldNAOptions[i].checked && fldNAOptions[i].value=='1' ){
        return true;
      }
    }
  }

  if (isEmpty(fld)) {
    if (!req) {
      return true;
    }
    pass = false;
    showValidMsg(fld, nme, "", req, false);
  }
  if (pass && num){
    pass = isValidNumber(fld, nme, "");
  }
  else {
    if (fldfocus !== null) {
      if (fldfocus.name == fld.name) {
        fldfocus = null;
      }
    }
  }
  return pass;
}

function isValidNumLetter(fld, nme, chr) {
  var num = "0123456789-.ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var i;
  var temp;
  var pass = true;
  var s;

  removeErrorMsg(fld, false);

  num = num + chr;
  s = fld.value;
  s = s.toUpperCase();
  i = s.indexOf(",,");
  if (i != -1) {
    s = s.substring(0, i);
  }
  for (i = 0; i < s.length; i++) {
    temp = "" + s.substring(i, i+1);
    if (num.indexOf(temp) == "-1") {
      pass = false;
    }
  }
  if (!pass){
    showValidMsg(fld, nme, "", false, false);
   }
   else {
    if (fldfocus !== null) {
      if (fldfocus.name == fld.name) {
        fldfocus = null;
      }
    }
  }
  return pass;
}

function isSpaces(fld)
{
  var chr = "";
  var spc = true;
  if (fld.value.length === 0) {
    spc = false;
  }
  for (var i = 0; i < fld.value.length; i++) {
    chr = fld.value.charAt(i);
    if (chr != ' ') {
      spc = false;
    }
  }
  return spc;
}

function fixChars(fld, chr1, chr2, chr3, replChr)
{
  var tmp = "";
  var chr = "";
  for (var i = 0; i < fld.value.length; i++) {
    chr = fld.value.charAt(i);
    if ((chr != chr1) && (chr != chr2) && (chr != chr3)) {
      tmp += chr;
    }
    else {
      tmp += replChr;
    }
  }
  fld.value = tmp;
}

function ComboBox(editBox, trigger, menu){
  var combo=this;
  var util=combo.util;
  combo.editBoxElement=util.get(editBox);
  combo.triggerElement=util.get(trigger);
  combo.dropDownMenuElement = util.get(menu);
  combo.dropDownMenuElement.itemsContainer=combo.dropDownMenuElement.getElementsByTagName('UL').item(0);

  combo.addItem=function(value){
    var newItem=combo.dropDownMenuElement.itemsContainer.appendChild(document.createElement('LI'));
    newItem.className='combomenuitem';
    newItem.onmouseover=function(){newItem.className='combomenuitemover';};
    newItem.onmouseout=function(){newItem.className='combomenuitem';};
    var anc=newItem.appendChild(document.createElement('A'));
    anc.href='#';
    anc.innerHTML=value;
    newItem.onclick=function(){combo.editBoxElement.value=anc.innerHTML;};
  };

  combo.removeItem=function(ind){
    var res=null;
    if(combo.dropDownMenuElement.itemsContainer.childNodes.length > ind) {
      res=combo.dropDownMenuElement.itemsContainer.removeChild(combo.dropDownMenuElement.itemsContainer.childNodes.item(ind));
    }
    return res;
  };

  combo.clearList=function(){
    while(combo.removeItem(1)){}
  };

  combo.comboTriggerClick=function(evt) {
    combo.dropDown();
    util.stopEvent(evt);
  };

  combo.documentClicked=function(p_oEvent) {
    combo.dropDownMenuElement.style.display='none';
  };

  combo.AjaxObject={ };
  combo.AjaxObject.asyncRequest=function(method, url){
    combo.AjaxObject.http_request=combo.AjaxObject.createXMLHTTPObject();
    if(combo.AjaxObject.http_request) {
      combo.AjaxObject.http_request.onreadystatechange = function(){
          if (combo.AjaxObject.http_request.readyState == 4 && combo.AjaxObject.http_request.status == 200) {
            combo.AjaxObject.success({'responseText':combo.AjaxObject.http_request.responseText, 'responseXML':combo.AjaxObject.http_request.responseXML});
          }
        };
      combo.AjaxObject.http_request.open(method, url, true);
      combo.AjaxObject.http_request.send(null);
    }
  };

  combo.AjaxObject.success=function(o){
    var resp = null;
    if(window.ActiveXObject){
      resp = new ActiveXObject("Microsoft.XMLDOM");
      resp.async="false";
      resp.loadXML(o.responseText);
    }
    else {
      resp=o.responseXML;
    }
    var XMLDoc=resp.documentElement;
    combo.clearList();
    var items=XMLDoc.getElementsByTagName('item');
    for(var i=0; i<items.length; ++i) {
      combo.addItem(items.item(i).attributes.getNamedItem("text").text);
    }
  };

  combo.AjaxObject.createXMLHTTPObject=function(){
    var res=null;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
       res = new XMLHttpRequest();
       if (res.overrideMimeType) {
         res.overrideMimeType('text/xml');
       }
    } else if (window.ActiveXObject) { // IE
       try {
         res = new ActiveXObject("Msxml2.XMLHTTP");
       }
       catch (e) {
         try {
           res = new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch (e2) {}
       }
    }
    return res;
  };

  combo.loadItemsFromUrl=function(url){
    if(url.indexOf('?')>-1) {
      url = url + '&' + encodeURIComponent((new Date()).getTime());
    }
    else {
      url = url + '?' + encodeURIComponent((new Date()).getTime());
    }
    combo.AjaxObject.asyncRequest('GET', url);
  };

  combo.dropDown=function(){
    if(combo.onBeforeDropDown()){
      var parentCombo=combo.editBoxElement.parentNode;
      util.setX(combo.dropDownMenuElement, util.getX(parentCombo));
      util.setY(combo.dropDownMenuElement, util.getY(parentCombo)+parentCombo.offsetHeight-1);
      combo.dropDownMenuElement.style.width=util.getStyle(parentCombo, 'width');
      combo.dropDownMenuElement.style.display='block';
    }
  };

  combo.onBeforeDropDown=function(evt){ return true;};
  combo.util.addListener(combo.triggerElement, 'click', combo.comboTriggerClick);
  combo.util.addListener(document, 'click', combo.documentClicked);
}

ComboBox.prototype.util={
  get:function(el){
    return typeof(el)=='string' ? document.getElementById(el) : el;
  },
  getX:function(el){
    var x = 0;
    while (el.offsetParent) {
      x += el.offsetLeft;
      el = el.offsetParent;
    }
    if(isNaN(x)) {
      x=0;
    }
    return x+'px';
  },
  setX:function(el, posX){
    el.style.left=parseInt(posX, 10)+'px';
  },
  getY:function(el){
    var y = 0;
    while (el.offsetParent) {
      y += el.offsetTop;
      el = el.offsetParent;
    }
    return y;
  },
  setY:function(el, posY){
    el.style.top=parseInt(posY, 10)+'px';
  },
  addListener:function(obj, eventName, funcName){
    if(window.addEventListener) {
      obj.addEventListener(eventName, funcName, false);
    }
    else {
      obj.attachEvent('on'+eventName, funcName);
    }
  },
  stopEvent:function(evt){
    if (evt.stopPropagation) {
      evt.stopPropagation();
    }
    else {
      evt.cancelBubble = true;
    }
    if (evt.preventDefault) {
      evt.preventDefault();
    }
    else {
      evt.returnValue = false;
    }
  },
  getStyle:function(el, st){
    var s = '';
    if(el.currentStyle) {
      s = el.currentStyle[st];
    }
    else {
      if(document.defaultView) {
        s = document.defaultView.getComputedStyle(el, '').getPropertyValue(st);
      }
    }
    return s;
  }
};

function copyTextValue(leftObj, rightObj) {
  document.getElementById(rightObj).value = document.getElementById(leftObj).value;
}

function logoRemove(el){
  var img = document.getElementById(el+'IMG');
  if(img !== null){
      img.src = '';
      img.alt = '';
      img.style.display = 'none';
  }
  if (document.getElementById(el) !== null) {
    document.getElementById(el).value = 0;
  }
  if (document.getElementById(el+'A') !== null) {
    document.getElementById(el+'A').href = '';
  }
  if (document.getElementById(el+'Info') !== null) {
    document.getElementById(el+'Info').innerHTML = '';
  }
  if (document.getElementById(el+'Remove') !== null) {
    document.getElementById(el+'Remove').style.display = 'none';
  }
  if (document.frm[el + ".Locate"] !== undefined) {
    document.frm[el + ".Locate"].value = document.frm[el + ".Locate"].value.replace("Change ","Add ");
  }
}

function KeywordRemove(el) {
  var Keyword = document.getElementById(el);
  if(Keyword) {
    Keyword.value = '';
  }

  var txt = document.getElementById(el);
  if(txt) {
    txt.style.display = 'none';
  }

  var remove = document.getElementById(el+'Remove');
  if(remove) {
    remove.style.display = 'none';
  }

  var add = document.getElementById(el+'Add');
  if(add) {
    add.style.display = 'inline';
  }

  var inf = document.getElementById(el+'Inf');
  if(inf) {
    inf.style.display = 'none';
  }

  var displayspan = document.getElementById(el+'displayspan');
  if(displayspan) {
    displayspan.style.display = 'none';
  }
}

function KeywordAdd(el) {
  var txt = document.getElementById(el);
  if(txt) {
    txt.style.display = 'inline';
  }

  var remove = document.getElementById(el+'Remove');
  if(remove) {
    remove.style.display = 'inline';
  }

  var add = document.getElementById(el+'Add');
  if(add) {
    add.style.display = 'none';
  }

  var inf = document.getElementById(el+'Inf');
  if(inf) {
    inf.style.display = 'inline';
  }

  var displayspan = document.getElementById(el+'displayspan');
  if(displayspan) {
    displayspan.style.display = 'inline';
  }
}

function selectClientType(nameField, recordID, coID, searchName) {
  var xmlhttp = false;

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    }
    catch (e) {
      xmlhttp=false;
    }
  }
  if (!xmlhttp) {
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e1) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e2) {
        xmlhttp = false;
      }
    }
  }

  if (!xmlhttp && window.createRequest) {
    try {
      xmlhttp = window.createRequest();
    }
    catch (e3) {
      xmlhttp = false;
    }
  }

  xmlhttp.open("GET", "/tm/pickclient.asp?RecordID=" + recordID + "&NameField=" + nameField + "&SelectProfile=" + coID + "&Action=Type", true);

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
      document.getElementById(nameField + "resultspan").innerHTML = xmlhttp.responseText;
    }
  };
  xmlhttp.send(null);

  if (document.getElementById(nameField + "searchname") !== null) {
    document.getElementById(nameField + "searchname").innerHTML = searchName;
  }
  if (document.getElementById(nameField + "clienttype") !== null) {
    document.getElementById(nameField + "clienttype").style.display = "block";
  }
  if (document.getElementById(nameField + "searchspan") !== null) {
    document.getElementById(nameField + "searchspan").style.display = "none";
  }
  if (document.getElementById(nameField + "display") !== null) {
    document.getElementById(nameField + "display").style.display = "block";
  }
}

function searchClientType(nameField, recordID, coID, searchName) {
  var xmlhttp = false;
  var relationRecordID = 0;
  var i;
  var fld, elmnts;

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    }
    catch (e1) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp) {
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e2) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e3) {
        xmlhttp = false;
      }
    }
  }

  if (!xmlhttp && window.createRequest) {
    try {
      xmlhttp = window.createRequest();
    }
    catch (e4) {
      xmlhttp = false;
    }
  }
  xmlhttp.open("GET", "/tm/pickclient.asp?RecordID=" + recordID + "&NameField=" + nameField + "&SelectProfile=" + coID + "&Action=CheckClient", true);

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
      relationRecordID = xmlhttp.responseText;
      if (relationRecordID === '0') {
        selectClientType(nameField, recordID, coID, searchName);
      }
      else {
        fld = document.getElementById(nameField);
        if (fld.type == 'radio') {
          elmnts = document.getElementsByName(nameField);
          for (i = 0; i < elmnts.length; i++) {
            if (elmnts[i].value == relationRecordID) {
              elmnts[i].checked = true;
            }
          }
        } else {
          for (i = 0; i < fld.options.length; i++) {
            if (fld.options[i].value == relationRecordID) {
              fld.options[i].selected = true;
            }
          }
        }
        document.getElementById(nameField + ".CL").value = searchName;
        hidePicklist(nameField);
        if (window.Form) {
          fld = Form.getField(nameField);
          if (fld) {
            fld.changed( relationRecordID );
          }
        }
      }
    }
  };
  xmlhttp.send(null);
}

function showClientPickListChoice(nameField, recordID, coID, value, relationID) {
  var xmlhttp = getXMLHTTP();
  var userID;
  var relationRecordID;
  var linkValue;

  if (document.getElementById(nameField + ".U") !== null) {
    userID = document.getElementById(nameField + ".U").value;
  }

  xmlhttp.open("GET", "/tm/pickclient.asp?RecordID=" + recordID + "&NameField=" + nameField + "&SelectProfile=" + coID + "&RelationID=" + relationID + "&PersonRecordID=" + userID + "&Action=InsClient", true);

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
      relationRecordID = xmlhttp.responseText;
      fld = null;
      if (window.Form) {
        fld = Form.getField(nameField);
        if (fld !== null) {
          fld.appendCompanyItem(window, relationRecordID, value);
        }
      }
      document.getElementById(nameField + "clienttype").style.display = "none";
      document.getElementById(nameField + ".CL").value = value;
      hidePicklist(nameField);
      if (fld !== null) {
        fld.changed( relationRecordID );
      }
    }
  };
  xmlhttp.send(null);
}

function AJAX() {
  this.callbacks = [];
}

var oAJAX = new AJAX();

function AJAX_onReady() {
  oAJAX.onReady();
}

AJAX.prototype.Get = function(url, onReady, context, useText) {
  if (url){
    var domainMatch = url.match( /:\/\/(www\.)?([^\/:]+)/ );
    var domain = '';
    if ( domainMatch && domainMatch[2] ) {
      domain += domainMatch[2];
      if (domain != document.domain ) {
         url = '/cd/ws/widget/rssproxy.asp?URL=' + url.replace("&", "%26");
      }
      else if ( url.indexOf('://') > 0 ) {
         url = url.substr(url.indexOf('/', url.indexOf('://') + 3));
      }
    }
    // cancel existing calls with same onReady and context
    for (var i = 0; i < this.callbacks.length; i++) {
      if (this.callbacks[i]) {
        if (this.callbacks[i].onReady == onReady && this.callbacks[i].onReady == context ) {
          this.callbacks[i].xmlRequest.abort();
          this.callbacks[i] = null;
          break;
        }
      }
    }
    var xmlRequest;
    try {
      xmlRequest = new XMLHttpRequest();
    }
    catch(e) {
      try {
        xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e2) {
      }
    }
    var setRequestHeaderMethodExists = true;
    try {
      setRequestHeaderMethodExists = (xmlRequest && xmlRequest.setRequestHeader);
    }
    catch(e3) {}
    var callback = {};
    callback.onReady = onReady;
    callback.context = context;
    callback.useText = useText;
    callback.async = true;

    for (var j = 0; j < this.callbacks.length; j++) {
      if (!this.callbacks[j]) {
        break;
      }
    }
    this.callbacks[j] = callback;
    try{
      if (setRequestHeaderMethodExists) {
        xmlRequest.onreadystatechange = AJAX_onReady;
        callback.xmlRequest = xmlRequest;
        xmlRequest.open("GET", url, true);
        xmlRequest.send(null);
        return;
      }
    }
    catch(e4) {}
  }
};

AJAX.prototype.onReady = function () {
  var i;

  for (i = 0; i < this.callbacks.length; i++) {
      var callback = this.callbacks[i];
      if (callback && callback.xmlRequest && (callback.xmlRequest.readyState == 4)) {
          this.callbacks[i] = null;
          if(callback.useText) {
            var response = callback.xmlRequest.responseText;
            callback.onReady(response, callback.context);
          }
          else {
            callback.onReady(callback.xmlRequest.responseXML, callback.context);
          }

          var callbackFrame = document.getElementById("__AJAXFRAME" + i);
          if (callbackFrame) {
              callbackFrame.parentNode.removeChild(callbackFrame);
          }
      }
  }
};

var scSpeed = 3;
var scUpVar;
var scDownVar;
var scFirstObj;
var scContentObj;
var scContainerObj;

function scListDown(tabID){
  scContentObj = document.getElementById('sccontent' + tabID);
  scContainerObj = document.getElementById('sccontainer' + tabID);

  if (parseInt(scContentObj.style.top, 10) >= (scContainerObj.offsetHeight - scContentObj.offsetHeight - scSpeed)){
    scContentObj.style.top = parseInt(scContentObj.style.top, 10)- scSpeed + 'px';
  }
  scDownVar = setTimeout('scListDown(' + tabID + ')', 18);
}

function scListUp(tabID){
  scContentObj = document.getElementById('sccontent' + tabID);

  if (parseInt(scContentObj.style.top, 10) <= 0){
    scContentObj.style.top = parseInt(scContentObj.style.top, 10) + scSpeed + 'px';
  }

  scUpVar = setTimeout('scListUp(' + tabID + ')', 18);
}

function scListPosition(testID){
  scFirstObj = document.getElementById('scfirst' + testID);
  var scActiveObj = document.getElementById('scactive' + testID);

  if (scActiveObj){
    scContentObj = document.getElementById('sccontent' + testID);
    scContainerObj = document.getElementById('sccontainer' + testID);

    if (scContentObj && scContainerObj){
      if (scFirstObj){
        scContentObj.style.top = parseInt(scContentObj.style.top, 10) - parseInt(scActiveObj.offsetTop, 10) + 'px';
        scContentObj.style.top = parseInt(scContentObj.style.top, 10) + parseInt(scContainerObj.offsetHeight, 10)/2 + 'px';

        if(parseInt(scContentObj.offsetTop, 10) > 0){
          scContentObj.style.top = 3 + 'px';
        }
        else{
          scContentObj.style.top = parseInt(scContentObj.style.top, 10) - 10;
        }
      }
      else{
        scContentObj.style.top = parseInt(scContentObj.style.top, 10) - parseInt(scActiveObj.offsetTop, 10) + 'px';
      }
    }
  }
}

function treehasClass(elem, className) {
  return new RegExp("(^|\\s)"+className+"(\\s|$)").test(elem.className);
}

function treeAction(event) {
  event = event || window.event;
  var clickedElem = event.target || event.srcElement;

  if (!treehasClass(clickedElem, 'Tree_Expand')) {
    return;
  }

  var node = clickedElem.parentNode;
  if (treehasClass(node, 'Tree_IsLeaf')) {
    return;
  }

  var newClass = treehasClass(node, 'Tree_IsOpen') ? 'Tree_IsClosed' : 'Tree_IsOpen';
  var re =  /(^|\s)(Tree_IsOpen|Tree_IsClosed)(\s|$)/;
  node.className = node.className.replace(re, '$1'+newClass+'$3');
}


function updateExportQueueStatus(eltName, queueID){
  var aspURL = '/tm/exportqueue.asp';
  sendRequestWithContext(aspURL + '?QueueID=' + queueID, eltName,
    function(result, context){
      var elt = document.getElementById(context);
      var obj = eval('(' + result +')');
      if (obj.error !== ''){
        elt.innerHTML = 'Export generation failed. Please try to download it later.';
      }
      else if (obj.path !== ''){
        elt.innerHTML = '<a href=\'' + obj.path + '\'>Download</a> (created on ' + obj.processedDTS + ')';
      }
      else {
        elt.innerHTML = 'Export is set for generation to be downloaded at ' + obj.queuedDTS;
        setTimeout( 'updateExportQueueStatus(\'' + context + '\', ' + obj.queueId + ')', 5000);
      }
    }
  );
}

function showTagInput(fldName){
  var fld = document.getElementById(fldName+'.AddTag');
  fld.style.display = '';
}

function hideTagInput(fldName){
  var fld = document.getElementById(fldName+'.AddTag');
  fld.style.display = 'none';
}

function addTagElement(fldName, value){
  // Trim value
  value = value.replace(/^\s*|\s*$/g,"");
  if(value  === ''){
    return -1;
  }
  var fldContainer = document.getElementById(fldName + '.Container');
  var fldIndex = document.getElementById(fldName + '.Index');
  var len = 0;
  // Check if keyword already exists
  for(var i = 1; i <= fldIndex.value; i++){
    var fld = document.getElementById(fldName + 'H.' + i);
    if(fld){
      len = len + fld.value.length + 1;
      if(fld.value == value){
        return -2;
      }
    }
  }
  var fldMax = document.getElementById(fldName + '.MAX');
  len = len + value.length;

  if (fldMax && fldMax.value> 0 && len > fldMax.value){
    return -3;
  }

  var index = 1 + fldIndex.value*1;
  fldIndex.value = index;

  var fldTagCntr = document.createElement('DIV');
  fldTagCntr.id = fldName + '.' + index;

  var fldTagName = document.createElement('SPAN');
  fldTagName.appendChild(document.createTextNode(value));
  fldTagCntr.appendChild(fldTagName);

  var fldTag;
  if (document.all) {
    fldTag = document.createElement('<INPUT NAME=\'' + fldName +'\' />');
  }
  else {
    fldTag = document.createElement('INPUT');
    fldTag.name = fldName;
  }
  fldTag.type = 'hidden';
  fldTag.id = fldName + 'H.' + index;
  fldTag.value = value;
  fldTagCntr.appendChild(fldTag);
  fldTagCntr.appendChild(document.createTextNode('  '));
  var fldTagRemove = document.createElement('IMG');
  fldTagRemove.src = '/images/del_2.gif';
  fldTagRemove.className = 'removeTag';
  fldTagRemove.title = 'remove tag';
  eval('fldTagRemove.onclick = function(){removeTag(\'' + fldName + '\', \'' + fldTagCntr.id + '\')}');
  fldTagCntr.appendChild(fldTagRemove);

  fldContainer.appendChild(fldTagCntr);

  if (fldMax){
    var fldInf = document.getElementById(fldName + 'Inf');
    if (len > 0){
      len++;
    }
    len = fldMax.value - len;
    if (len < 0) {
      len = 0;
    }
    setTextToElt(fldInf, len);
    var fldValue = document.getElementById(fldName + '.NewTag');
    fldValue.maxLength = len;
  }

  return 0;
}

function removeTag(fldName, fldId){
  var fld = document.getElementById(fldId);
  if(fld){
    fld.parentNode.removeChild(fld);

    var fldIndex = document.getElementById(fldName + '.Index');
    fldIndex.value = fldIndex.value - 1
  }
  var fldMax = document.getElementById(fldName + '.MAX');
  if (fldMax){
    var fldIndex = document.getElementById(fldName + '.Index');
    var len = 0;
    // Check if keyword already exists
    for(var i = 1; i <= fldIndex.value; i++){
      fld = document.getElementById(fldName + 'H.' + i);
      if(fld){
        len = len + fld.value.length + 1;
      }
    }
    var fldInf = document.getElementById(fldName + 'Inf');
    len = fldMax.value - len;
    if (len < 0) {
      len = 0;
    }
    setTextToElt(fldInf, len);
    var fldValue = document.getElementById(fldName + '.NewTag');
    fldValue.maxLength = len;
  }
}

function addTag(fldName){
  var errfld = document.getElementById(fldName + '.ERR');
  if (errfld) {
    removeErrorMsg2(errfld, false);
  }

  var fldValue = document.getElementById(fldName + '.NewTag');
  var res = addTagElement(fldName, fldValue.value);
  if (res === 0){
    fldValue.value = '';
  }
  else
    if (res === -2){
      alert('Tag \'' + fldValue.value + '\' already exists. Please enter another tag.');
    }
}

function pickTags(nameField, blnURL, content, existTags) {
  var xmlhttp = false;
  if (!xmlhttp && typeof XMLHttpRequest !== 'undefined') {
     xmlhttp = new XMLHttpRequest();
  }
  else {
    if (window.ActiveXObject) {
      try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e) {
        try {
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e2) {}
      }
    }
  }
  if (!xmlhttp) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }
  xmlhttp.open('POST', '/tm/pickkeywords.asp');

  xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xmlhttp.send('Mode=' + blnURL + '&Content=' + encodeURL(content) + '&Tags=' + encodeURL(existTags));

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
      var i;
      var value = xmlhttp.responseText;
      var fldMax = document.getElementById(nameField + '.MAX');
      if (fldMax && fldMax.value > 0){
        var fldIndex = document.getElementById(nameField + '.Index');
        var len = 0;
        for(i = 1; i <= fldIndex.value; i++){
          var fld = document.getElementById(nameField + 'H.' + i);
          if(fld){
            len = len + fld.value.length + 1;
          }
        }
      }

      var tags = value.split(',');
      for(i = 0; i < tags.length; i++){
        if(len !== undefined && (len + 1 + tags[i].length > fldMax.value)){
          alert('' + (tags.length - i - 1) + ' suggested keywords will not be added because there is no more space for them.' );
          return;
        }
        addTagElement(nameField, tags[i]);
        if(len !== undefined) {
          len = len + 1 + tags[i].length;
        }
      }
    }
  };
}

function genTags(nameField, blnURL, nameTagsField) {
  var i;
  var valTag = '';

  if (nameTagsField.indexOf('|',0) < 0) {
    valTag = document.getElementById(nameTagsField).value;
    if (valTag === '' && document.getElementById(nameTagsField + ".LV") !== null){
      valTag = document.getElementById(nameTagsField + ".LV").value;
    }
  }
  else {
    var fields = nameTagsField.split("|");
    i = 0;
    while (i < fields.length && valTag === '') {
      valTag = document.getElementById(fields[i]).value;
      i++;
    }
  }

  var tags = document.getElementsByName(nameField);
  var existTags = '';
  for(i = 0; i < tags.length; i++){
    existTags = existTags + tags[i].value + ',';
  }

  document.frm.disableChangeWarning = true;
  document.getElementById(nameField + "progressspan").style.display = '';
  pickTags(nameField, blnURL, valTag, existTags);
  document.getElementById(nameField + "progressspan").style.display = 'none';
}

function enterHandler(evt, btn) {
  if ((evt.which && evt.which == 13) || (evt.keyCode && evt.keyCode == 13)) {
    evt.returnValue=false;
    evt.cancel = true;
    btn.click();
    return false;
  }
  else {
    return true;
  }
}

function copyTagsValue(leftObj, rightObj) {
  var value = document.getElementById(leftObj).value;
  var tagsIdx = document.getElementById(rightObj + '.Index');
  if (tagsIdx) {
    for(var i = 1; i <= tagsIdx.value; i++){
      removeTag(rightObj, rightObj + '.' + i);
    }
  }

  var tags = value.split(',');
  for(var j = 0; j < tags.length; j++){
    addTagElement(rightObj, tags[j]);
  }
}

var frmAward = null;

function addAwardPopUp_AddNewAward_SubmitForm(nameField){

  var fldNewAwardName = document.getElementById('X' + nameField + '.NewAwardName');
  var fldNewAwardURL = document.getElementById('X' + nameField + '.NewAwardURL');
  var fldNewAwardCoID = document.getElementById('X' + nameField + '.NewAwardCoID');
  var url = '/tm/pickaward.asp?Action=Add&NewAwardName='+ encodeURL(fldNewAwardName.value) + '&NewAwardURL='+ encodeURL(fldNewAwardURL.value) + '&NewAwardCoID='+ encodeURL(fldNewAwardCoID.value) + '&NameField=' + nameField ;

  if (frmAward) {
    msgbox = frmAward;
    frmAward = null;
    hideMessageBox();
  }
  hideMessageBox();
  showMessageBox('Add Award', '<div><center><img src="/images/spinner.gif" border=0" align="middle" vspace=50 alt=""></center></div>', 600, 150, 0, [], [], '');
  xmlhttpAJAXNewAward = sendRequest(url,
    function(result){
      eval(result);
   });
}

function addAwardPopUp_AddNewAward_ShowForm(nameField, strContent){
  if (frmAward) {
    msgbox = frmAward;
    frmAward = null;
    hideMessageBox();
  }
  var newAwardName = '';
  var fld = document.getElementById(nameField + "search");
  if(fld) {
    newAwardName = fld.value;
  }
  strContent = strContent.replace('[AwardName]', newAwardName);
  showMessageBox('Add Award', strContent, 600, 200, 0, [], [], '');
  frmAward = msgbox;
  msgbox = null;
  installSuggestHandler('X' + nameField + '.NewAwardCoID', 0, '', '', '');
  fld = document.getElementById("X' + nameField + '.NewAwardName");
  if (fld){
    fld.focus();
  }
  else if(frmAward){
    frmAward.focus();
  }
}

function addAwardPopUp_AddNewAward_CancelForm(){
  if (frmAward) {
    msgbox = frmAward;
    frmAward = null;
    hideMessageBox();
  }
}
function viewURL(fldName, caption){
  var fld = document.getElementById(fldName);
  var url = fld.value.replace(/^\s*|\s*$/g,'');
  if (url === '') {
    window.alert('You must enter a URL in the field in order to view that URL');
  }
  else {
    if(!checkURL(url)) {
      alert('Error: URL is incomplete or contains invalid values.');
    }
    else {
      createWinFromField(fld, caption);
    }
  }
}

function validateAwardShortForm(fldName){
  var pass = true;
  var errfld = document.getElementById(getErrorField('X' + fldName + '.NewAwardName'));
  if (errfld != null) {
    errfld.style.display = 'none';
  }
  if(isEmpty(document.getElementById('X' + fldName + '.NewAwardName'), 'Award Name')){
    if (errfld != null) {
      errfld.innerHTML = 'Error: Award Name is required! Please fill Award Name.';
      errfld.style.display = 'block';
    }
    pass = false;
  }
  errfld = document.getElementById(getErrorField('X' + fldName + '.NewAwardURL'));
  if (errfld != null) {
    errfld.style.display = 'none';
  }
  var url = document.getElementById('X' + fldName + '.NewAwardURL').value;
  if(!checkURL(url)){
    if (errfld != null) {
      errfld.innerHTML = 'Error: URL is incomplete or contains invalid values.';
      errfld.style.display = 'block';
    }
    pass = false;
  }
  if (!pass) {
    return false;
  }
  return addAwardPopUp_AddNewAward_SubmitForm(fldName);
}

function validateQuestionForm(){
  var pass = true;
  var elTypeId = document.getElementById("TypeID");
  var elMaxLength = document.getElementById("MaxLength");
  if(elTypeId !== null && elTypeId.options !== undefined && elMaxLength !== null) {
    var typeId = elTypeId.options[elTypeId.selectedIndex].value;
    if((typeId == 1 || typeId == 2 || typeId == 22) && elMaxLength.type == "text" && elMaxLength.value == 0) {
      pass = false;
      showValidMsg (elMaxLength, "Maximum characters", "'Maximum characters' must be greater than 0.", false, false);
    }
  }
  elMaxLength = document.getElementById("MAXSize");
  if (elMaxLength !== null && elTypeId.options !== undefined && elTypeId !== null) {
    var typeId = elTypeId.options[elTypeId.selectedIndex].value;
    if ((typeId == 5 || typeId == 11 || typeId == 52 || typeId == 53) && elMaxLength.type == "text" && elMaxLength.value <= 0) {
      pass = false;
      showValidMsg(elMaxLength, "Maximum file size", "'Maximum file size' must be greater than 0.", false, false);
    }
  }
  return pass;
}

function checkTree()
{
  var pass = true;
  var errorDiv = document.getElementById('CategoryErr');
  var Chk = document.getElementById('TreeChk').value;
  if (Chk === '' || Chk == ',') {
    errorDiv.innerHTML = '<br> Error: "You must select at least one category. Please click Modify Directory button to classify your entry."<br>';
    pass = false;
  }
  else {
    errorDiv.innerHTML = '';

  }
  return pass;
}

function FetchReportBoxOnForm(userID, formID, recordID) {
  hideMessageBox();
  var sMsgText = '<table cellspacing=0 cellpadding=0 border=0><tr><td colspan=2>Did you see something wrong with the information on this page? We would like to fix it. Please describe what is wrong in the box below.<br><br>'
  sMsgText = sMsgText + '<textarea name=Report id=Report cols=85 rows=10 onkeyup="updateCharactersRemaining(document.getElementById(\'Report\'), 1024);" onfocus="ReportTimer=SetReportTimer();" onblur=clearInterval(ReportTimer)></textarea>'
  sMsgText = sMsgText + '<br>Characters remaining:&nbsp;<span id=ReportInf name=ReportInf>1024</span></td></tr><tr><td><span style=\'display: block;\' id=Report.ERR class=fieldError>&nbsp;</span></td><td>&nbsp;</td></tr></table>'
  showMessageBox('Report Data Changes', sMsgText, 500, 345, 0, ['Submit', 'Cancel'], ['jscrpt:return submitBugOnForm(' + userID + ', ' + formID + ', ' + recordID + ');', ''], '');
}

function submitBugOnForm(userID, formID, recordID) {
  var strReport = '';
  strReport = document.getElementById('Report').value;
  strReport = strReport.replace(/\n/g, '<br>');
  
  if (isNotEmpty(Report, "Description")) {
    var contentConnection = new httpConnection();
    if (contentConnection) {
      hideMessageBox();
      showMessageBox('Sending data', '<div><img src="/images/spinner.gif" border=0 align="middle" alt="">&nbsp;&nbsp;Please wait while we send this information to mBLAST.</div>', 350, 110, 0, [], [], '');
      contentConnection.connect('/tm/sendbugtask.asp?Type=2&UserID=' + userID + '&FormID=' + formID + '&SessionID=' + recordID + '&Report=' + strReport, 'GET', '', submittingBug);
    }
    return true;
  }
  else {        
    return false;
  }
}

function FetchReportBoxInSearch(userID, searchText, searchType, strSrch) {
  hideMessageBox();
  var sMsgText = '<table cellspacing=0 cellpadding=0 border=0><tr><td colspan=2>Did you see something wrong with the information on this page? We would like to fix it. Please describe what is wrong in the box below.<br><br>'
  sMsgText = sMsgText + '<textarea name=Report id=Report cols=85 rows=10 onkeyup="updateCharactersRemaining(document.getElementById(\'Report\'), 1024);" onfocus="ReportTimer=SetReportTimer();" onblur=clearInterval(ReportTimer)></textarea>'
  sMsgText = sMsgText + '<br>Characters remaining:&nbsp;<span id=ReportInf name=ReportInf>1024</span></td></tr><tr><td><span style=\'display: block;\' id=Report.ERR class=fieldError>&nbsp;</span></td><td>&nbsp;</td></tr></table>'
  showMessageBox('Report Data Changes', sMsgText, 500, 345, 0, ['Submit', 'Cancel'], ['jscrpt:return submitBugInSearch(' + userID + ', "' + searchText + '", "' + searchType + '", "' + strSrch + '");', ''], '');
}

function submitBugInSearch(userID, searchText, searchType, strSrch) {
  var strReport = '';
  strReport = document.getElementById('Report').value;
  strReport = strReport.replace(/\n/g, '<br>');
  strSrch = strSrch.replace(/%2B/g, '+');
  
  if (isNotEmpty(Report, "Description")) {
    var contentConnection = new httpConnection();
    if (contentConnection) {
      hideMessageBox();
      showMessageBox('Sending data', '<div><img src="/images/spinner.gif" border=0 align="middle" alt="">&nbsp;&nbsp;Please wait while we send this information to mBLAST.</div>', 350, 110, 0, [], [], '');
      contentConnection.connect('/tm/sendbugtask.asp?Type=3&UserID=' + userID + '&Search=' + searchText + '&SearchType=' + searchType + '&Srch=' + strSrch +'&Report=' + strReport, 'GET', '', submittingBug);
    }
    return true;
  }
  else {    
    return false;
  }
}

function submittingBug(oXML) {
  showMessageBox('Report Data Changes', 'Thank you for submitting your data change to mBLAST. We will review and action your request within the next 24 hours, and will contact you if further information is required.', 300, 150, 'frm', ['OK'], [''], '');
}

function SetReportTimer() {
  return setInterval("limitTEXTAREALength(document.getElementById('Report'), 1024)", 30);
}
function setCheckboxes(chkbox)
{
if(chkbox == 'LimitSearchTo0')
{
    if(document.getElementById(chkbox).checked)
    {
        document.getElementById('LimitSearchTo1').checked = true
        document.getElementById('LimitSearchTo2').checked = true
        document.getElementById('LimitSearchTo3').checked = true
        document.getElementById('LimitSearchTo4').checked = true
    }
    else
    {
        document.getElementById('LimitSearchTo1').checked = false
        document.getElementById('LimitSearchTo2').checked = false
        document.getElementById('LimitSearchTo3').checked = false
        document.getElementById('LimitSearchTo4').checked = false
    }
  }

    if(document.getElementById('LimitSearchTo0').checked)
        document.getElementById('LimitSearchTo0').value="1";
    else
        document.getElementById('LimitSearchTo0').value ="0";
   if(document.getElementById('LimitSearchTo1').checked)
        document.getElementById('LimitSearchTo1').value="1";
    else
        document.getElementById('LimitSearchTo1').value ="0";
   if(document.getElementById('LimitSearchTo2').checked)
        document.getElementById('LimitSearchTo2').value="1";
    else
        document.getElementById('LimitSearchTo2').value ="0";
   if(document.getElementById('LimitSearchTo3').checked)
        document.getElementById('LimitSearchTo3').value="1";
    else
        document.getElementById('LimitSearchTo3').value ="0";
   if(document.getElementById('LimitSearchTo4').checked)
        document.getElementById('LimitSearchTo4').value="1";
    else
        document.getElementById('LimitSearchTo4').value ="0";

    if(document.getElementById('LimitSearchTo5').checked)
        document.getElementById('LimitSearchTo5').value="1";
    else
        document.getElementById('LimitSearchTo5').value ="0";

}

var ConfirmCreateWin = function(msg, link) {
  showMessageBox('Confirm', msg, 200, 110, 0, ['Yes', 'No'], ['jscrpt: hideMessageBox(); createwin("' + link + '");', ''], '');
}

//Shadowbox.init();

function setHiddenValue() {

  var ctl = document.getElementById("ViewID");
  document.frm.ViewID.value = ctl.options[ctl.selectedIndex].value;
  if (document.frm.Action !== undefined)
    document.frm.Action.value = 'Filter';
}

function isValidDate(dtValue) {
  dtValue = dtValue.replace(/-/gi, "/");

  var dt = new Date(dtValue);
  var day = dtValue.split('/')[1];
  var mon = dtValue.split('/')[0];
  var yr = dtValue.split('/')[2];

  if (dt.getDate() != day) {
    return (false);
  }
  else if (dt.getMonth() != mon - 1) {
    return (false);
  }
  else if (parseInt(yr) < 1980 || dt.getFullYear() != yr) {
    return (false);
  }

  return (true);
}

function dateCompare(startDate, endDate)
{
  var start = new Date(startDate.replace(/-/gi, "/"));
  var end = new Date(endDate.replace(/-/gi, "/"));

  return (start <= end);
}

function enableDoPublicationDiv(dropDown, divID, showIndex) {
  if (dropDown.selectedIndex == showIndex) {
    document.getElementById(divID).style.display = "block";
  }
  else {
    document.getElementById(divID).style.display = "none";
  }
}

function keyPublicationsFrmValidate()
{
  var dtStartDate = document.getElementById('KeyPublicationStartDate_1').value + '/' + document.getElementById('KeyPublicationStartDate_2').value + '/' + document.getElementById('KeyPublicationStartDate_3').value;
  var dtEndDate = document.getElementById('KeyPublicationEndDate_1').value + '/' + document.getElementById('KeyPublicationEndDate_2').value + '/' + document.getElementById('KeyPublicationEndDate_3').value;

  if (!isValidDate(dtStartDate)) {
    alert('Invalid start date, please choose correct one!');
    return (false);
  }

  if (!isValidDate(dtEndDate)) {
    alert('Invalid end date, please choose correct one!');
    return (false);
  }

  if (!dateCompare(dtStartDate, dtEndDate)) {
    alert('The end date should be greater than start date');
    return (false);
  }
  return true;
}
function WebPresenceDatabaseCtl_onchange(dropDown, divID, showIndex) {
  if (dropDown.selectedIndex == showIndex) {
    document.getElementById(divID).style.display = "block";
  }
  else {
    document.getElementById(divID).style.display = "none";
  }
  return true;
}
function UpdatePublicationName(publicationRecordID, wpPublicationName) {
  var strPublicationName = document.getElementById(publicationRecordID + 'display').innerHTML;
  document.getElementById(wpPublicationName).value = strPublicationName
}
function UpdateFromDateAndToDate(divFromDate, divToDate, wpFromDate, wpToDate) {
  var dtFrom = document.getElementById(divFromDate + '_1').value + '-' + document.getElementById(divFromDate + '_2').value + '-' + document.getElementById(divFromDate + '_3').value;
  var strDateValues = '&FromDate=' + dtFrom;
  if (!isValidDate(dtFrom)) {
    alert(dtFrom + ' is not a valid date');
    return (false);
  }
  var dtTo = document.getElementById(divToDate + '_1').value + '-' + document.getElementById(divToDate + '_2').value + '-' + document.getElementById(divToDate + '_3').value;
  strDateValues += '&ToDate=' + dtTo;
  if (!isValidDate(dtTo)) {
    alert(dtTo + ' is not a valid date');
    return (false);
  }
  if (!dateCompare(dtFrom, dtTo)) {
    alert('From Date is not greater than End Date');
    return (false);
  }
  document.getElementById(wpFromDate).value = dtFrom
  document.getElementById(wpToDate).value = dtTo
  return (true);
}

function gethtmlblock() {
  document.getElementById('<%=ExportPanelsHidden.ClientID%>').value = document.getElementById("ExportPanelDiv").innerHTML;
}
function KeyInfluencerReportSubmit() {
  if (!UpdateFromDateAndToDate('KeyInfluencerFromDate', 'KeyInfluencerToDate', 'WPFromDate', 'WPToDate')) {
    return (false);
  }
  UpdatePublicationName('KeyInfluencerPublicationRecordID', 'WPPublicationName');
}
function ShowHideControls(controltoshow, firstcontrol, secondcontrol) {
  document.getElementById(controltoshow).style.display = 'block';
  document.getElementById(firstcontrol).style.display = 'none';
  document.getElementById(secondcontrol).style.display = 'none';
}
function UpdateDateOptionValues(wpControlPrefix, divFromDate, wpDateOption, wpQuarter, wpMonth, WPFromDate) {
  if (document.getElementById(wpControlPrefix + "QuarterRadioCtl").checked) {
    document.getElementById(wpQuarter).value = document.getElementById(wpControlPrefix + "QuarterCtl").value;
    document.getElementById(wpDateOption).value = 0;
    return true;
  }
  if (document.getElementById(wpControlPrefix + "MonthRadioCtl").checked) {
    document.getElementById(wpMonth).value = document.getElementById(wpControlPrefix + "MonthCtl").value;
    document.getElementById(wpDateOption).value = 1;
    return true;
  }
  if (document.getElementById(wpControlPrefix + "DateTimePickerRadioCtl").checked) {
    var dtFrom = document.getElementById(divFromDate + '_1').value + '-' + document.getElementById(divFromDate + '_2').value + '-' + document.getElementById(divFromDate + '_3').value;
    if (!isValidDate(dtFrom)) {
      alert(dtFrom + ' is not a valid date');
      return (false);
    }
    document.getElementById(WPFromDate).value = dtFrom;
    document.getElementById(wpQuarter).value = 2;
    return true;
  }

}
function ShareofWebDiscussionReportSubmit() {
  var dd1 = getControlFromChildNodes(document.getElementById('WPShareofWebContentDiv'), 'SELECT');
  document.getElementById("WPContent").value = dd1.options[dd1.selectedIndex].value;
  var dd2 = getControlFromChildNodes(document.getElementById('WPShareofWebDatabaseDiv'), 'SELECT');
  document.getElementById("WPDatabase").value = dd2.options[dd2.selectedIndex].value;
  var dd3 = getControlFromChildNodes(document.getElementById('000023CompetitorDiv'), 'SELECT');
  document.getElementById("WPCompetitor").value = dd3.options[dd3.selectedIndex].value;

  if (!UpdateDateOptionValues('WPShareofWeb', 'WPShareofWebFromDate', 'WPDateOption', 'WPQuarter', 'WPMonth', 'WPFromDate')) {
    return (false);
  }
  UpdatePublicationName('ShareofWebPublicationRecordID', 'WPPublicationName');
}

function getControlFromChildNodes(ctl, tagName) {
  if (!ctl.hasChildNodes)
    return (false);
  for (ctlindex = 0; ctlindex < ctl.childNodes.length; ctlindex++) {
    if (ctl.childNodes[ctlindex].tagName != 'undefined' && ctl.childNodes[ctlindex].tagName != null && ctl.childNodes[ctlindex].tagName.toUpperCase() == tagName.toUpperCase()) {
      return (ctl.childNodes[ctlindex]);
      break;
    }
  }
  return (false);
}
function FetchReportBoxOnAwardView(userID, formID, recordID) {
  hideMessageBox();
  var sMsgText = '<table cellspacing=0 cellpadding=0 border=0><tr><td colspan=2>Did you see something wrong with the information on this page? We would like to fix it. Please describe what is wrong in the box below.<br><br>';
  sMsgText = sMsgText + '<textarea name=Report id=Report cols=55 rows=9 onkeyup="updateCharactersRemaining(document.getElementById(\'Report\'), 1024);" onfocus="ReportTimer=SetReportTimer();" onblur=clearInterval(ReportTimer)></textarea>';
  sMsgText = sMsgText + '<br>Characters remaining:&nbsp;<span id=ReportInf name=ReportInf>1024</span></td></tr><tr><td><span style=\'display: block;\' id=Report.ERR class=fieldError>&nbsp;</span></td><td>&nbsp;</td></tr></table>';

  showMessageBox('Report Data Changes', sMsgText, 500, 345, 0, ['Submit', 'Cancel'], ['jscrpt:return submitBugOnAwardView(' + userID + ', ' + formID + ', ' + recordID + ');', ''], '');

}
function submitBugOnAwardView(userID, formID, recordID) {
  var strReport = '';

  if (document.getElementById('Report').value.length > 0) {
    strReport = document.getElementById('Report').value;
    strReport = strReport.replace(/\n/g, '<br>');

    var contentConnection = new httpConnection();
    if (contentConnection) {

      hideMessageBox();
      showMessageBox('Sending data', '<div><img src="/images/spinner.gif" border=0 align="middle" alt="">&nbsp;&nbsp;Please wait while we send this information to mBLAST.</div>', 350, 110, 0, [], [], '');
      contentConnection.connect('/tm/sendbugtask.asp?Type=2&UserID=' + userID + '&FormID=' + formID + '&SessionID=' + recordID + '&Report=' + strReport, 'GET', '', submittingBug);

    }
    return true;
  }
  else {    
    document.getElementById('Report.ERR').innerHTML = "<b>Error: Description is required. Please enter a value for it.</b>";
    return false;
  }
}
