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"
    }
  ]
};

var maskElement;

function createMask() {
  if (document.getElementById("maskWin")) {
    maskElement = document.getElementById("maskWin");
    maskElement.style.width = document.body.scrollWidth;
    maskElement.style.height = document.body.scrollHeight;
  }
  else {
    maskElement = document.createElement("iframe");
    maskElement.src = "/template/mask.asp";

    maskElement.id = "maskWin";
    maskElement.style.width = document.body.scrollWidth;
    maskElement.style.height = document.body.scrollHeight;
    maskElement.className = "cssMask";
    document.body.appendChild(maskElement);
  }
  if (window.SWFUpload) {
    for(var i=0; i<SWFUpload.movieCount; i++) {
      if ((uploadbox !== null) && i != 0) {
        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 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;
  wn.style.top = (hgt - wn.offsetHeight) / 2 + document.body.scrollTop;
}

function showAlertWindow (ires, blnSmt, 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 ver = deconcept.SWFObjectUtil.getPlayerVersion();

  //var bSkip = (ver['major'] == 9 && ver['minor'] == 0 && ver['rev'] <= 16);
  var bSkip = (ver.major === 9 && ver.minor === 0 && ver.rev <= 16);

  //if (ver["major"] <= 0 || bSkip) {
  if (ver.major <= 0 || bSkip) {
    sMsgFl = sMsgFl + sContFl;
  }

  createMask();

  var sType =  (parseInt(blnSmt, 10) == 1) ? "submit" : "button";
  document.write ("<div id='alertWindow' class='form-messagebox'>");
  document.write ("<div class='header' style='cursor:default;'>Alert Message: mBLAST System Check</div>");

  document.write ("<div class='body'>");

  document.write ("<table>");
  document.write ("<tr><td colspan=2>");
  document.write ("<span style='color: red;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++) {
      strURL = strURL.replace(eval("/&Check=" + i + "/g"), "");
      strURL = strURL.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','" + strURL + "','');");
      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 ("<tr>");
  document.write ("<td align='center' colspan=2>");
  document.write ("<input type='" + sType + "' class='buttonopen' name='Sbmt' value='OK' onclick='hideAlertWindow();'>");
  document.write ("</td>");
  document.write ("</tr>");
  document.write ("</table>");
  document.write ("<br></div></div>");

  aw = document.getElementById('alertWindow');
  showWindow(aw);
}

function hideAlertWindow()
{
  var aw = document.getElementById('alertWindow');
  aw.style.display = "none";
  removeMask();
}

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 checkFlash()
{
  var bres = false;
  var ver = deconcept.SWFObjectUtil.getPlayerVersion();
  //var bSkip = (ver['major'] === 9 && ver['minor'] === 0 && ver['rev'] <= 16);
  var bSkip = (ver.major === 9 && ver.minor === 0 && ver.rev <= 16);
  //if (ver['major'] >= 9  && !bSkip) {
  if (ver.major >= 10  && !bSkip) {
    bres = true;
  }
  return bres;
}

function AppendFlashComment(taskid, userid) {
  var ver = deconcept.SWFObjectUtil.getPlayerVersion();
  //var fver = ver['major'] + '.' + ver['minor'] + '.' + ver['rev'];
  var fver = ver.major + '.' + ver.minor + '.' + ver.rev;
  var xmlhttp = false;

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
     xmlhttp = new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e1) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e2) {}
    }
  }

  if (!xmlhttp) {
    alert('Cannot create XMLHTTP instance');
    return false;
  }

  xmlhttp.open('GET', '/500-100flash.asp?TaskID=' + taskid + '&UserID=' + userid + '&FlashVersion=' + fver, true);


  xmlhttp.send(null);
}

function GetFlashVersion() {
  var ver = deconcept.SWFObjectUtil.getPlayerVersion();
  //var fver = ver['major'] + '.' + ver['minor'] + '.' + ver['rev'];
  var fver = ver.major + '.' + ver.minor + '.' + ver.rev;
  var f = document.getElementById("FlashVersion");

  if (f !== null) {
    f.value = fver;
  }
}

function checkBrowserFlashLogin(strURL) {
  var retval = 1;
  var bval1 = checkFlash();
  var bval2 = checkBrowser();
  if (strURL.indexOf("Check") == -1) {
    if (!bval1) {
      retval = 2;
    }
    if (!bval2) {
      retval = 3;
    }
    if (!bval1 && !bval2) {
      retval = 4;
    }

    if (strURL.indexOf("?") == -1) {
      strURL = strURL + "?Check=" + retval;
    }
    else {
      strURL = strURL + "&Check=" + retval;
    }
    document.location = strURL;
  }
}

function checkBrowserFlash(blnSmt, strURL)
{
  var ires = 1;
  var bval1 = checkFlash();
  var bval2 = checkBrowser();
  var f = document.getElementById("Check");

  if (f !== null) {
    f.value = 1;
    if (!bval1) {
      ires = 2;
    }
    if (!bval2) {
      ires = 3;
    }
    if (!bval1 && !bval2) {
      ires = 4;
    }
    if (ires > 1) {
      showAlertWindow (ires, blnSmt, strURL);
    }
  }
}

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;
// Global object to hold drag information.
var dragObj = {};
dragObj.zIndex = 200;

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 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.item(i);
    e = frm.elements.item(i);
    if (!frmHasInputFile && e.tagName == "INPUT" && e.type == "file" ) {
      frmHasInputFile = true;
    }
    if (!e.name.match('QH\d+')){
      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();
    // Init Contact Lists
    Form.initContactLists();
  }
  if (window.refreshJSUploadFrames !== undefined) {
    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();
      }
    }
  }
  // to initialize shadowbox
  Shadowbox.init();
}


function setfocus() {
  var f = document.getElementById("frm");
  var eltLinked, blnNoLnkd;
  if (f !== null) {
    var i = 0;
    var j = 0;
    while (i < f.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 === undefined) {
          blnNoLnkd = true;
        }
        else if (eltLinked === null ) {
          blnNoLnkd = true;
        }
        else if (eltLinked !== undefined && eltLinked.value === 0) {
          blnNoLnkd = true;
        }
        if ( blnNoLnkd) {
          if (e.disabled === false && eltName != "Seq1" && eltName != "DocsPerPage") {
            try { // suppress error if element is not visible
              e.focus();
            }
            catch(e) {
            }
            j = 1;
          }
        }
      }
      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) {
  if (window.name != "mblastwin") {
    window.open(newpage, "mblastwin", "height=580,scrollbars=yes,menubar=no,toolbar=no,location=no,resizable=yes,width=780,top=10,left=10");
  }
  else {
    window.open(newpage, "mblastwin1", "height=580,scrollbars=yes,menubar=no,toolbar=no,location=no,resizable=yes,width=780,top=30,left=30");
  }
}

function createwin2(url, target, features) {
  window.open(url, target, features);
}

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 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="600", 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(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="https?://[^/]*/DHTMLeditor/editor.html(#[^"/]*)/?"',"gi");
  var str;
  var i;

  window.opener.bDHTMLSaveEditor = true;

  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=\"https?\:\/\/\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 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 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("/ws/orgclass/profilelist.asp?RtnFormID=" + form + "&RtnSessionID=" + sessionid + "&RtnName=" + name + "", "pickclassprofile", "height=550,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,width=750");
}

function companypicklist(form, coname, coid, selectprofile) {
  window.open("/workspace/companypicklist.asp?SearchCoName=" + encodeURL(window.document.forms[form].elements[coname].value) + "&SelectProfile=" + selectprofile + "&RtnFormId=" + form + "&RtnCoName=" + coname + "&RtnCoId=" + coid + "", "pickcompany", "height=550,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,width=750");
}
function contactpicklist(form, coname, cosessionid, companyonly) {
  window.open("/workspace/contactpicklist.asp?SearchName=" + encodeURL(window.document.forms[form].elements[coname].value) + "&RtnFormId=" + form + "&RtnCoName=" + coname + "&RtnCoSessionId=" + cosessionid + "&CoOnly=" + companyonly + "", "pickcontact", "height=550,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,width=750");
}
function companycontactcreate(form, el, coid) {
  if (window.Form && Form.FormCoID !== 0) {
    coid = Form.FormCoID();
  }
 window.open("/workspace/contactadd.asp?Action=Add&RtnFormID=" + form + "&RtnQuestionID=" + el + "&RtnCoID=" + coid, "createcontact", "height=500,width=750,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no");
}

function publicationpicklist(form, pbname, pbsessionid) {
  window.open("/workspace/publicationpicklist.asp?SearchName=" + encodeURL(window.document.forms[form].elements[pbname].value) + "&RtnFormId=" + form + "&RtnCoName=" + pbname + "&RtnCoSessionId=" + pbsessionid , "pickpublication", "height=550,width=750,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no");
}

function servicetypepicklist(form, stid, stname) {
  window.open("/workspace/servicetypepicklist.asp?SearchName=" + encodeURL(window.document.forms[form].elements[stname].value) + "&RtnFormId=" + form + "&RtnStName=" + stname + "&RtnStId=" + stid + "", "pickservicetype", "height=550,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,width=750");
}

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 logopicklist(el) {
  window.open("/ws/logopicklist.asp?Set=" + el, "picklogo", "height=550,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,width=750");

}

// Routine from new engine
function logopicklist_new(el, company) {
  if(window.Form) {
    if (Form.FormCoID() !== 0) {
      company = Form.FormCoID();
    }
  }
  window.open("/ws/logopicklist.asp?Set=" + el + "&CoID=" + company, "picklogo", "height=550,scrollbars=yes,menubar=no,toolbar=no,location=no,status=no,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");
}

function creditcardpicklist(form, cardid, card, coid) {
  window.open("/workspace/creditcardpicklist.asp?RtnFormID=" + form + "&RtnCardID=" + cardid + "&RtnCard=" + card + "&CoId=" + coid + "", "pickcreditcard", "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 checkObject(chkobj, value) {
  chkobj.checked = value;
}

function linkSubmit(orderby, orderdirection) {
  document.frm.OrderBy.value = orderby;
  document.frm.OrderDirection.value = orderdirection;
//  alert (orderby + '<=>' + orderdirection);
  document.frm.submit();
}

function linkFormSubmit(frmname, orderby, orderdirection) {
  var frm = document.getElementById(frmname);
  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 checkDocsPerPage(frmname) {
  var frm = document.getElementById(frmname);
  var re = /^([1-9])(\d{0,2})$/;
  if (re.test(frm.DocsPerPage.value)) {
    return true;
  }
  else {
    alert('Please, enter only digits for Records Per Page!');
    return false;
  }
}

function validateDocsPerPage(e)
{ var key;

  if (window.event) {
   key = window.event.keyCode;
  }
  else if (e) {
   key = e.which;
  }
  else {
   return true;
  }

  // control keys
  if ((key === null) || (key === 0) || (key === 8) || (key === 9) || (key === 13) || (key === 27) || (key >= 0x30) && (key <= 0x39)) {
   return true;
  }
  else {
   return false;
  }
}

function saveDisplaySettings(action) {
  try {
    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    var sPath = "http://" + document.location.hostname + "/workspace/profile/savesettings.asp?helptext=" + action;
    xmlhttp.Open("GET", sPath, false);
    xmlhttp.Send("");
  }
  catch(e) {
  }
}

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("NodeId");
  this.list = [];
  this.top = new TreeNode(null, 0, null, "");
  this.list.push(this.top);
  this.chosen = document.getElementById("elChosenCategories");
  var f = document.frm.MaxCheckNum;
  if (f !== undefined) {
    this.maxchecks = f.value;
  }
  else {
    this.maxchecks = '0';
  }
  this.currchecks = 0;
}

function add(nodeId, prntId, name) {
  var el;
  for (var i = this.list.length - 1; i >= 0 ; i--) {
    var prnt = this.list[i];
    if (prnt.id == prntId) {
      if (typeof this.elements.length != "undefined") {
        el = this.elements[this.list.length - 1];
      }
      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.calcChosen();
    if (this.maxchecks !== '0' && this.currchecks > this.maxchecks) {
      this.currchecks--;
      alert('There is a limit to the number of categories that you may select.  You are not allowed to select more than ' + this.maxchecks + ' categories here.');
      el.checked = false;
      return;
    }
    this.checkParent(el.value);
  }
  else {
    this.uncheckChild(el.value);
    this.uncheckSingleParent(el.value);
  }
  this.displayChosen();
}

function calcChosen() {
  var checked = false;
  this.currchecks = 0;
  for(var i = 1; i < this.list.length; i++) {
    var n = this.list[i];
    checked = false;
    try
    {
          if (n.elem.checked) {
              if (n.children.length === 0) {
                this.currchecks++;
              }
              else {
                for (var j = 0; j < n.children.length; j++) {
                  if (n.children[j].elem.checked) {
                    checked = true;
                    break;
                  }
                }
                if (!checked) {
                  this.currchecks++;
                }
              }

            }
         }
    catch (err)
    {

    }
  }
  return;
}

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) {
  if (n.children.length === 0) {
    this.currchecks--;
  }
  else {
    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";
    if (n.elem.type == "hidden") {
      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;" + n.name + "";
    }
    else {
      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 == "elChosenCategories" && p.childNodes.length > 1) || (p.id != "elChosenCategories" && 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 != "elChosenCategories") {
      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) {
      if ((n.children[i].elem.type == "hidden" && n.children[i].elem.name == "NodeId") || (n.children[i].elem.type == "checkbox" && n.children[i].elem.checked)) {
        addChosenCategory(n.children[i], e);
      }
    }
  }
}

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 checkWithChild(el) {
  if (el.checked) {
    this.calcChosen();
    if (this.maxchecks !== '0' && this.currchecks > this.maxchecks) {
      this.currchecks--;
      alert('There is a limit to the number of categories that you may select.  You are not allowed to select more than ' + this.maxchecks + ' categories here.');
      el.checked = false;
      return;
    }
    this.checkParentWithChild(el.value);
  }
  else {
    this.uncheckChild(el.value);
    this.uncheckSingleParent(el.value);
  }
  this.displayChosen();
}

function checkParentWithChild(id) {
  for(var i = 0; i < this.list.length; i++) {
    var n = this.list[i];
    if (n.id == id) {
      this.checkSubTree(n);
      return;
    }
  }
}

function checkSubTree(n) {
  if (n.children.length === 0) {
    this.currchecks--;
  }
  else {
    for(var i = 0; i < n.children.length; i++) {
      var child = n.children[i];
        child.elem.checked = true;
        this.checkSubTree(child);
    }
  }
}


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) {
    pass = (user.match(userPat) !== null);
  }
  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) {
    pass = (len >= 2);
  }

  if (!pass) {
    alert('Error: "Email address" is incomplete or contains invalid values.');
    if (!fld.disabled) {
      fld.focus();
    }
  }
  return pass;
}

function isNumeric(numvalue) {
  var regexp =  /^\d*\.?\d*?$/;
  var result = regexp.test(numvalue);
  if (result === null) {
    result = false;
  }
  return result;
}

function isEmpty(fld) {
  var fldValue;
  if (typeof fld == 'string') {
    var f = document.getElementById(fld);
    if (!f) {
      var c = document.getElementsByName(fld);
      if (!c) {
        return true;
      }
      if (c.items) {
        fldValue = c[0].value;
      }
    }
    else {
      fldValue = f.value;
    }
  }
  else {
    fldValue = fld.value;
  }

  if (fldValue === null || fldValue.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1") === "") {
    return true;
  }
  return false;
}

function validateEmailNotRequired(fld) {
  if (isEmpty(fld)) {
    return true;
  }
  return validateEmail(fld);
}

function validateurl(fld) {
  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-zA-Z0-9-,_\\\|\{\}<>\[\]#%;\^\?:()~!`\+\*\-\.%\+=&])*)*)$/i;
    if (!objRE.test(path)) {
      return false;
    }
  }

  return true;
}

function validateTerms(fld) {
  var pass = true;
  if (!fld.checked) {
    pass = false;
    alert('You must agree to the mBLAST Terms and Conditions.');
    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;

  if (fld === null) {
    alert("Award should have at least one category.");
    return pass;
  }
  var count = (fld ? fld.length : 0);

  if (typeof(count) == "undefined") {
    pass = fld.checked;
  }
  else {
    for (var i = 0; i < count; i++) {
      if (fld[i].checked) {
        pass = true;
      }
    }
  }

  if (!pass) {
    alert("You must select at least one category.");
    if (typeof(count) == "undefined") {
      try {
       fld.focus();
      }
      catch(e1) {}
    }
    else {
      try {
       fld[0].focus();
      }
      catch(e2) {}
    }
  }
  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.displayChosen = displayChosen;
clsTree.prototype.calcChosen = calcChosen;
clsTree.prototype.checkWithChild = checkWithChild;
clsTree.prototype.checkParentWithChild = checkParentWithChild;
clsTree.prototype.checkSubTree = checkSubTree;

// 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 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) {
    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 !== undefined && divCalendar !== null) {
    divCalendar.style.display = "none";
    divCalendar = null;
  }
  if (frmCalendar !== undefined && frmCalendar !== null && bMSIE2 ) {
    frmCalendar.style.display = "none";
  }

}

function prepareForHideCalendar(prepare)
{
  if (divCalendar === undefined || 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 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 === undefined || divCalendar === null) {
    //divCalendar = document.createElement('<div id=divCalendar style="display:none;z-index:99999;position:absolute;white-space:nowrap;width:240;height:180;border:1px solid black;">&nbsp;</div>');
    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 === undefined || 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';
    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 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) + 'px';
  divCalendar.style.left = l + 'px';
  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 show_calendar(strQuestionMonth, strQuestionDay, strQuestionYear ) {
  if (divCalendar !== undefined && 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) {
  var d;
  if (datetime !== null) {
    document.getElementById(strQuestionMonth).value = datetime.getMonth()+1;
    d = document.getElementById(strQuestionDay);
    if (d) {
      d.value = datetime.getDate();
    }
    document.getElementById(strQuestionYear).value = datetime.getFullYear();
  }
  else {
    document.getElementById(strQuestionMonth).value = '';
    d = document.getElementById(strQuestionDay);
    if (d) {
      d.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 processRetrieverAgentsSelection() {
  var check = false;
  for (var i=0; i < document.frm.elements.length; i++) {
    if (document.frm.elements[i].name == 'Agents') {
      if (document.frm.elements[i].id === 0) {
        check = document.frm.elements[i].checked;
      }
      else {
        document.frm.elements[i].disabled=check;
      }
    }
  }
}

function linkField(fieldId) {
  var elt = document.getElementById('Q' + fieldId + 'Linked');
  elt.value = 1;
  this.fld = document.getElementById('Q' + fieldId + 'DIVL');
  this.fld.style.display = 'block';
  this.fld = document.getElementById('Q' + fieldId + 'DIVU');
  this.fld.style.display = 'none';
}

function unlinkField(fieldId) {
  var elt = document.getElementById('Q' + fieldId + 'Linked');
  elt.value = 0;
  this.fld = document.getElementById('Q' + fieldId + 'DIVL');
  this.fld.style.display = 'none';
  this.fld = document.getElementById('Q' + fieldId + 'DIVU');
  this.fld.style.display = 'block';
}

// ignores form changes for ms milliseconds
function ignoreChanges(ms) {
  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(fldID, maxLength) {
  var fld = document.getElementById(fldID );
  var fldInf = document.getElementById(fldID + 'Inf');

  if (fld.value.length > maxLength) {
    setTextToElt(fldInf, '0');
  }
  else {
    setTextToElt(fldInf, maxLength - fld.value.length);
  }
}

// limitTEXTAREALength
function limitTEXTAREALength(fldID, maxLength) {
  var fldTEXTAREA = document.getElementById(fldID );

  if (fldTEXTAREA.value.length > maxLength ) {
    fldTEXTAREA.value = fldTEXTAREA.value.substring(0, maxLength);
    updateCharactersRemaining(fldID, maxLength);
  }
  return false;
}

function updateRatingTotal(ratingQ) {
  var total = 0;
  var elts, eltWeight;
  var ratingList = document.getElementById(ratingQ+'List');
  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));
}

function updateRatingOverall(ratingQ) {
  var total = 0.0;
  var elts;
  var ratingList = document.getElementById(ratingQ+'List');
  var fldOverall = document.getElementById(document.getElementById(ratingQ+'Overall').value);
  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 (fldOverall) {
    fldOverall.value = total.toFixed(2).toString().replace(',', '.');
  }
  setTextToElt(ratingTotal, total.toFixed(2));
}

function updateWeightsIndicator(weightsQ) {
  var total = 0, indicatorText='';
  var weight;
  var items = document.getElementById(weightsQ).value.split("\n");
  for (var i=0; i < items.length; i++) {
    items[i] = items[i].replace(/^\s*|\s*$/g,"");//trim
    if (items[i].length > 0) {
      weight = 1*items[i];
      if (isNaN(weight) || (weight.toFixed(0) != items[i]) || weight < 1 || weight > 99 ) {
        indicatorText = 'Value \''+items[i]+'\' is invalid value for weight. Weight should be integer between 1 and 99';
        break;
      }
      total = total + weight;
    }
  }
  if (indicatorText.length === 0 ) {
    indicatorText = total.toFixed(0)+'%';
  }

  var weightsIndicator = document.getElementById(weightsQ+'i');
  setTextToElt(weightsIndicator, indicatorText);
}

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(fldID, maxWords) {
  var fld = document.getElementById(fldID );
  var fldInf = document.getElementById(fldID + 'WrdCnt');
  var words = getWords(fld.value);
  var wordsCnt=0;
  if (words.length > 0) {
    wordsCnt = words.length;
  }

  if (wordsCnt >= maxWords) {
    setTextToElt(fldInf, '0');
  }
  else {
    setTextToElt(fldInf, maxWords - wordsCnt);
  }
}

//limitTEXTAREAMaxWords
function limitTEXTAREAMaxWords(fldID, maxWords) {
  var fldTEXTAREA = document.getElementById(fldID );
  var words = getWords(fldTEXTAREA.value);
  var strTmp, i;

  if (words.length > maxWords ) {
    strTmp = fldTEXTAREA.value;
    for(i = words.length-1; i>=maxWords; i--) {
      strTmp = strTmp.substr(0, strTmp.lastIndexOf(words[i]));
    }
    fldTEXTAREA.value = strTmp;
    updateWordsRemaining(fldID, maxWords);
  }
  return false;
}

function startSkype(strSkype) {
  if (strSkype.length > 0) {
    window.open('createconfcall://' + strSkype);
  }

  return true;
}

function updateRankTotal(rankName, itemsCount) {
  var total = 0;
  var elt, eltWeight;

  for (var i=1; i <= itemsCount; i++) {
    elt = document.getElementById(rankName+'R'+i);
    eltWeight = document.getElementById(rankName+'R'+i+'w');
    if (elt.value !== '') {
      total = total + elt.value*eltWeight.value/100;
    }
  }
  var ratingTotal = document.getElementById(rankName+'total');
  setTextToElt(ratingTotal,total.toFixed(2));
}

function rankIt(RankId, index) {
  var lastRankRow;
  var row2 = null;
  var rankTable = document.getElementById(RankId + 'Rank');
  var row = document.getElementById(RankId + 'R' + index + 'row');
  var rank = document.getElementById(RankId + 'R' + index ).value;
  var originalIndex = document.getElementById(RankId + 'R' + index + 'i').value;
  var i;

  if (rank === '') {
    rank = '9999'; //great that any number, for move not ranked rows to the end of list
  }

  for(i = 0; i < rankTable.rows.length; i++) {
    var rowx = rankTable.rows[i];
    if (rowx.id.indexOf('row') >= 0) {
      lastRankRow = rowx;
      var row2Id = rowx.id.replace(/row/, '');
      var rank2 = document.getElementById(row2Id).value;
      var originalIndex2 = document.getElementById(row2Id + 'i').value;
      if (rowx != row &&
          ( parseInt(rank2, 10) > parseInt(rank, 10) ||
            rank2 == rank && originalIndex2 > originalIndex ||
            rank2 === '' && rank !== '' && rank != '9999' ||
            rank2 === '' && rank == '9999' && originalIndex2 > originalIndex)) {
        row2 = rowx;
        break;
      }
    }
  }

  if (row2) {
    rankTable.insertBefore(row, row2);
  }
  else {
    if (lastRankRow.nextSibling) {
      rankTable.insertBefore(row, lastRankRow.nextSibling);
    }
    else {
      rankTable.appendChild(row);
    }
  }
}

function str_replace(substr, newsubstr, str) {
  var replace_count = 0;

  while (str.indexOf(substr)>=0) {
    str = str.replace(substr, newsubstr);
    replace_count++;
  }

  return(str);
}

function dragGo(event) {
  var x, y;

  // Get cursor position with respect to the page.
  if (bMSIE2) {
    x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
  }
  else {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Move drag element by the same amount the cursor has moved.
  dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
  dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";

  if (bMSIE2) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  else {
    event.preventDefault();
  }
}

// Stop capturing mousemove and mouseup events.
function dragStop(event) {
  if (bMSIE2) {
    document.detachEvent("onmousemove", dragGo);
    document.detachEvent("onmouseup", dragStop);
  }
  else {
    document.removeEventListener("mousemove", dragGo, true);
    document.removeEventListener("mouseup",   dragStop, true);
  }
}

function dragStart(event, id) {
  var x, y;

  // If an element id was given, find it. Otherwise use the element being clicked on.
  dragObj.elNode = document.getElementById(id);

  // Get cursor position with respect to the page.
  if (bMSIE2) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  else {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Save starting positions of cursor and element.
  dragObj.cursorStartX = x;
  dragObj.cursorStartY = y;
  dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
  dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);

  if (isNaN(dragObj.elStartLeft)) {
    dragObj.elStartLeft = 0;
  }
  if (isNaN(dragObj.elStartTop)) {
    dragObj.elStartTop  = 0;
  }

  // Update element's z-index.
  dragObj.elNode.style.zIndex = ++dragObj.zIndex;

  // Capture mousemove and mouseup events on the page.
  if (bMSIE2) {
    document.attachEvent("onmousemove", dragGo);
    document.attachEvent("onmouseup", dragStop);
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  else {
    document.addEventListener("mousemove", dragGo,   true);
    document.addEventListener("mouseup",   dragStop, true);
    event.preventDefault();
  }
}

function post_redirect_changed(url) {
  var i;
  var frm;
  var val = '';
  var post_form = '';

  if ( (i = url.indexOf('?')) != -1 ) { // check for variables in URL
    var vars = url.substring(i+1);
    var param = '';
    url = url.substring(0, i);
    while ( vars.length > 0 ) { // if variables exists
      i = vars.indexOf('&');
      if ( i != -1 ) {
        param = vars.substring(0, i);
        vars = vars.substring(i+1);
      } else {
        param = vars;
        vars = '';
      }
      if ( (i = param.indexOf('=')) != -1) {
        var param_val = decodeURIComponent(param.substring(i+1));
        param_val = str_replace('"', '&quot;', param_val);
        val += '<input type=hidden name="' + param.substring(0, i) + '" value="' + param_val +'">';
      }
      else {
        val += '<input type=hidden name="' + param + '" value="">';
      }
    }
  }
  post_form = '<form type=hidden name=hidden_post_form method=post action="' + url + '">' + val + '</form>';
  id_post_form.innerHTML = post_form;
  frm = document.forms.hidden_post_form;
  frm.submit();
}

function redirect_changed(url) {
  var frm;
  var el;
  var i;
  var val;

  frm = document.forms.frm;

  for (i=0; i < frm.elements.length; i++) {
    el = frm.elements[i];

    if (el.type != 'button' && el.type != 'submit' && el.type != 'hidden' && el.value !== '') {
      if (url !== '') {
        url = url + '&';
      }
      val = str_replace('\n', '|', el.value);
      val = encodeURIComponent(val);
      url = url + el.name + '=' + val;
    }
  }
  if ( url.length < 2000 ) {
    location.href = url;
  }
  else {
    post_redirect_changed(url);
  }
}

document.write('<span id=id_post_form ></span>');

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 "";
    }
  }
}

// login timeout routines
var loginTimeout;
var sessionLimit = 1000*60*240; // 60 minutes

function showLoginWindow() {
  var lw = document.getElementById('loginWindow');
  showWindow(lw);
  document.getElementById('LoginUID').value = "";
  document.getElementById('LoginPWD').value = "";
  createMask();
}

function hideLoginWindow() {
  var lw = document.getElementById('loginWindow');
  lw.style.display = "none";
  removeMask();
}

function setLoginTimeout() {
  loginTimeout = window.setTimeout(showLoginWindow, sessionLimit);
}

var loginxmlHTTP;

function loginResponse() {
  if (loginxmlHTTP.readyState == 4) {
    if (loginxmlHTTP.responseText === "") {
      loginTimeout = window.setTimeout(showLoginWindow, sessionLimit);
      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('LoginUID').value;
  var loginPWD = document.getElementById('LoginPWD').value;
  var loginBrandID = document.getElementById('LoginBrandID').value;
  loginxmlHTTP = false;

  /*@cc_on @*/
  /*@if (@_jscript_version >= 5)
  // JScript gives us Conditional compilation, we can cope with old IE versions.
  // and security blocked creation of the objects.
   try {
     loginxmlHTTP = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (e) {
     try {
       loginxmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
     } catch (E) {
          loginxmlHTTP = false;
        }
  }
  @end @*/
  if (!loginxmlHTTP && typeof XMLHttpRequest != 'undefined') {
    try {
      loginxmlHTTP = new XMLHttpRequest();
    }
    catch (e1) {
      loginxmlHTTP = false;
    }
  }
  if (!loginxmlHTTP && window.createRequest) {
    try {
      loginxmlHTTP = window.createRequest();
    }
    catch (e2) {
      loginxmlHTTP = false;
    }
  }
  loginxmlHTTP.open("GET", '/ws/sessionlogin.asp?u=' + loginUID + '&p=' + loginPWD + '&b=' + loginBrandID + '&r=' + Math.random(), true);

  loginxmlHTTP.onreadystatechange = loginResponse;
  loginxmlHTTP.send(null);

}

function checkLoginStatus() {

  window.clearTimeout(loginTimeout);
  var loginBrandID;
  if(document.getElementById('LoginBrandID')) {
    loginBrandID = document.getElementById('LoginBrandID').value;
  }
  loginxmlHTTP = false;

  /*@cc_on @*/
  /*@if (@_jscript_version >= 5)
  // JScript gives us Conditional compilation, we can cope with old IE versions.
  // and security blocked creation of the objects.
   try {
     loginxmlHTTP = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (e) {
     try {
       loginxmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
     } catch (E) {
          loginxmlHTTP = false;
        }
  }
  @end @*/
  if (!loginxmlHTTP && typeof XMLHttpRequest != 'undefined') {
    try {
      loginxmlHTTP = new XMLHttpRequest();
    } catch (e1) {
      loginxmlHTTP = false;
      }
    }
  if (!loginxmlHTTP && window.createRequest) {
    try {
      loginxmlHTTP = window.createRequest();
    }
    catch (e2) {
      loginxmlHTTP = false;
    }
  }
  loginxmlHTTP.open("GET", '/cd/ws/checklogin.asp?b=' + loginBrandID + '&r=' + Math.random(), false);


  loginxmlHTTP.send(null);

  if (loginxmlHTTP.responseText === "") {
    return false;
  }
  else {
    return true;
  }
}

function showSubmitWindow() {
  var sw = document.getElementById('submitWindow');
  if (sw) {
    showWindow(sw);
    document.getElementById('submitSpinner').innerHTML = "<img src='/images/spinner.gif' border='0' align='middle'>";
    createMask();
  }
}

function hideSubmitWindow() {
  var sw = document.getElementById('submitWindow');
  sw.style.display = "none";
  removeMask();
}

// 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 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';
  dialogiframe.focus();
}

function closedialog() {
  var dialogiframe = document.getElementById("thedialog");
  dialogiframe.style.display = 'none';
  var theblocker = document.getElementById("blockerbox");
  theblocker.style.display = 'none';
}

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 locateRemoveLink(el, strTxt) {
  if (document.getElementById(el + 'Caption') !== null) {
    document.getElementById(el + 'Caption').innerHTML = strTxt;
  }
  if (document.getElementById(el + 'Remove') !== null) {
    document.getElementById(el + 'Remove').style.display = 'none';
  }
  if (document.frm[el] !== undefined) {
    document.frm[el].value = '';
  }
  if (document.frm[el + ".Locate"] !== undefined) {
    document.frm[el + ".Locate"].value = document.frm[el + ".Locate"].value.replace("Change ","Add ");
  }
  if (document.frm["CoID" + el] !== undefined) {
    document.frm["CoID" + el].value = '';
  }
}

function selectCheckbox(chkBox) {
  var elem = document.getElementById(chkBox);
  if (!elem.disabled) {
    elem.checked = !elem.checked;
    if(elem.onclick)
      elem.onclick();
  }
}

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 searchPicklist(nameField, listType, pg, pgMove, selectProfile) {
  var searchValue = document.getElementById(nameField + 'search').value;
  var xmlhttp = false;

  if (searchValue !== "") {
    if (document.getElementById(nameField + "displayaddspan") !== null) {
      document.getElementById(nameField + "displayaddspan").style.display = "block";
    }
    /*@cc_on @*/
    /*@if (@_jscript_version >= 5)
    // JScript gives us Conditional compilation, we can cope with old IE versions.
    // and security blocked creation of the objects.
     try {
       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
       try {
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (E) {
            xmlhttp = false;
          }
    }
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
      try {
        xmlhttp = new XMLHttpRequest();
      }
      catch (e1) {
        xmlhttp=false;
      }
    }
    if (!xmlhttp && window.createRequest) {
      try {
        xmlhttp = window.createRequest();
      }
      catch (e2) {
        xmlhttp = false;
      }
    }

    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) {
        document.getElementById(nameField + "resultspan").innerHTML = xmlhttp.responseText;
      }
    };
    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) {
  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";
  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";
  }
  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";
  }
  searchPicklist(nameField, listType, '', '', selectProfile);
  if (searchValue === "") {
    document.getElementById(nameField + "resultspan").innerHTML = "";
  }
}

function hidePicklist(nameField) {
  document.getElementById(nameField + "searchspan").style.display = "none";
  document.getElementById(nameField + "resultspan").style.display = "none";
  if (document.getElementById(nameField + "displayspan") !== null) {
    document.getElementById(nameField + "displayspan").style.display = "block";
  }
  if (document.getElementById(nameField + "display") !== null) {
    document.getElementById(nameField + "display").style.display = "block";
  }
  if (document.getElementById(nameField + "clienttype") !== null)
    document.getElementById(nameField + "clienttype").style.display = "none";
  if (document.getElementById(nameField + "secondsearchspan") !== null) {
    document.getElementById(nameField + "secondsearchspan").style.display = "none";
  }
  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) {
  hidePicklist(nameField);
  var searchValue = document.getElementById(nameField + 'search').value;
  createwin('/tm/addcompany.asp?Action=Add&Name=' + encodeURL(searchValue) + '&FieldName=' + nameField + '&Type=Client' + '&PRCoID=' + prCoID);
}

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 + "display") !== null) {
    document.getElementById(nameField + "display").style.display = "block";
  }
  if (document.getElementById(nameField + "searchspan") !== null) {
    document.getElementById(nameField + "searchspan").style.display = "none";
  }
}

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 = false;
  var userID;
  var relationRecordID;
  var fld;
  var oRadio = null;
  var oTbody = null;
  var oTr = null;
  var oTd = null;

  if (document.getElementById(nameField + "U") !== null) {
    userID = document.getElementById(nameField + "U").value;
  }

  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 (e) {
      xmlhttp = false;
    }
  }
  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 showPicklistChoice(nameField, recordID, value) {
  document.getElementById(nameField).value = recordID;
  if (document.getElementById(nameField + ".D") !== null) {
    document.getElementById(nameField + ".D").value = value;
  }
  document.getElementById(nameField + "search").value = value;
  document.getElementById(nameField + "display").innerHTML = value;
  hidePicklist(nameField);
}

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);
      }
    }
  }
  // unencode value
  var elt = document.createElement("SPAN");
  elt.innerHTML = value;
  value = elt.innerHTML;
  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 getXMLHTTP() {
  var xmlhttp = false;

  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 (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}

function sendRequest(url, callback) {
  var xmlhttp = getXMLHTTP();

  xmlhttp.open("GET", url, true);
  xmlhttp.onreadystatechange = function() {
   if (xmlhttp) {
     if (callback) {
       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 xmlhttp = getXMLHTTP();

  xmlhttp.open("GET", url, true);
  xmlhttp.onreadystatechange = function() {
    if (xmlhttp) {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        callback(xmlhttp.responseXML, context);
      }
    }
  };
  xmlhttp.send(null);

  return xmlhttp;
}

function disableButtons(frmId) {
  var reSWFName = /^SWFUpload_([1-9])+$/;
  var frm = document.getElementById(frmId);
  var i;
  var e;

  // 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);
      }
    }
  }
}

var msgbox = null;

function hideMessageBox() {
  if (msgbox) {
    msgbox.style.display = "none";
    removeMask();
    document.body.removeChild(msgbox);
    msgbox = null;
  }
}

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 parseDateTime(value) {
  var i;
  var j;

  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
  i = 0;
  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 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 + 'P2':
      frmElt.elements[i].value = phone[1];
      break;

    case fldId + 'P3':
      frmElt.elements[i].value = phone[2];
      break;

    case fldId + 'P4':
      frmElt.elements[i].value = phone[3];
      break;
    }
  }
}

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:
      frmElt.elements[i].value = datetime[0];
      break;

    case fldId + 'D2':
      frmElt.elements[i].value = datetime[1];
      break;

    case fldId + 'D3':
      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:
      frmElt.elements[i].value = datetime[3];
      break;

    case fldId + 'T2':
      frmElt.elements[i].value = datetime[4];
      break;

    case fldId + 'T3':
      frmElt.elements[i].value = datetime[5];
      break;

    case fldId + 'T4':
      frmElt.elements[i].value = datetime[6];
      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 + 'D1':
      frmElt.elements[i].value = datetime[0];
      break;

    case fldId + 'D2':
      frmElt.elements[i].value = datetime[1];
      break;

    case fldId + 'D3':
      frmElt.elements[i].value = datetime[2];
      break;

    case fldId + 'T1':
      frmElt.elements[i].value = datetime[3];
      break;

    case fldId + 'T2':
      frmElt.elements[i].value = datetime[4];
      break;

    case fldId + 'T3':
      frmElt.elements[i].value = datetime[5];
      break;

    case fldId + 'T4':
      frmElt.elements[i].value = datetime[6];
      break;
    }
  }
}

function MessageBoxButton(name, action, actionFormId, msgbox) {
  this.elt = document.createElement("INPUT");
  this.elt.type = "button";
  this.elt.className = "buttonopen";
  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]) {
              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] + 'P2').length > 0 ) {
                  setPhoneNumber(frmElt, btnParam[0], btnParam[1]);
                }
                else {
                  // Dates
                  if (document.getElementsByName(btnParam[0] + 'D3').length > 0 && document.getElementsByName(btnParam[0] + 'T2').length > 0) {
                    setDateTime(frmElt, btnParam[0], btnParam[1]);
                  }
                  else if (document.getElementsByName(btnParam[0] + 'D3').length > 0) {
                    setDate(frmElt, btnParam[0], btnParam[1]);
                  }
                  else if (document.getElementsByName(btnParam[0] + 'T2').length > 0) {
                    setTime(frmElt, btnParam[0], btnParam[1]);
                  }
                  else {
                    elt.value = btnParam[1];
                  }
                }
              }
            }
          }
          hideMessageBox();
          disableButtons(frmElt.id);
          frmElt.submit();
        };
      }
    }
  }
}

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;
  msgbox.style.height = height;
  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";
  msgbox.appendChild(msgboxContent);
  msgboxContent.innerHTML = content;
  // Buttons
  var msgboxButtons = document.createElement("DIV");
  msgboxButtons.className = "body";
  msgboxButtons.align = "center";
  msgbox.appendChild(msgboxButtons);

  if (buttonNames !== null && buttonActions !== null) {
    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);
}

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 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);
}

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');
  if (validateEmail(email)) {
    sendRequest('/code/workspace/emailpdf.asp?To=' + encodeURL(to.value) + '&Email=' + encodeURL(email.value) + '&Subj=' + encodeURL(subj.value) + '&Body=' + encodeURL(emailbody.value) + '&PDF=' + encodeURL(pdfattach), null);
    hideEmailBox();
  }
}

function showEmailBox2(url, title, to, email, subj, body, width, height) {
  showEmailBox3(url, title, to, email, subj, body, true, width, height)
}

function showEmailBox3(url, title, to, email, subj, body, attachmentType, 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);

  if(attachmentType === true) {
    // 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 + '\', ' + attachmentType.toString() + ');', 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, attachmentType) {
  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 != '') && (attachmentType === false || 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 drawGenerateQueueStatus(eltName, queueID, errText, successText, waitText, onClickFunc) {

  var aspURL = "";
  aspURL = '/tm/exportqueue.asp';

  sendRequestWithContext(aspURL + '?QueueID=' + queueID, eltName,
    function(result, context) {
      var elt = document.getElementById(context);
      var obj = eval('(' + result +')');
      if (obj.error !== '') {
        if ((obj.error != 'No data for pdf generation') && (obj.error != 'No data for zip generation')) {
          elt.innerHTML = errText;
        }
      else {
          elt.innerHTML = obj.error;
        }
      }
      else if (obj.path !== '') {
        if (onClickFunc !== '') {
          elt.innerHTML = '<a href="#" onClick="' + onClickFunc + '(\'' + obj.path + '\')">' + successText + '</a> (created on ' + obj.processedDTS + ')';
        }
        else {
          elt.innerHTML = '<a href=\'' + obj.path + '\'>' + successText + '</a> (created on ' + obj.processedDTS + ')';
        }
      }
      else {
        elt.innerHTML = waitText + obj.queuedDTS;
        setTimeout( 'drawGenerateQueueStatus(\'' + context + '\', ' + obj.queueId + ', \'' + errText + '\', \'' + successText + '\', \'' + waitText + '\', \'' + onClickFunc + '\')', 5000);
      }
    }
  );
}

function updateExportQueueStatus(eltName, queueID) {
  drawGenerateQueueStatus(eltName, queueID, 'Export generation failed. Please try to download it later.', 'Download', 'Export is set for generation to be downloaded at ', '');
}

function checkTree()
{
  var Tpass = true;
  var errorDiv = document.getElementById('CategoryErr');
  var TChk = document.getElementById('TreeChk').value;
  if (TChk === '' || TChk == ',') {
    errorDiv.innerHTML = '<br> Error: "You must select at least one category. Please click Modify Directory button to classify your survey."<br>';
    Tpass = false;
  }
  else {
    errorDiv.innerHTML = '';
  }
  return Tpass;
}

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 validateQuestionForm(){
  var pass = true;
  var elTypeId = document.frm.InputType;
  var elMaxLength = document.frm.MaxLength;
  if(elTypeId !== null && elMaxLength !== null) {
    var typeId = elTypeId.options[elTypeId.selectedIndex].value;
    if((typeId == 1 || typeId == 2 || typeId == 22 || typeId == 23) && elMaxLength.type == "text" && elMaxLength.value == 0) {
      pass = false;
      showValidMsg (elMaxLength, "Maximum length", "'Maximum length' must be greater than 0.", false, false);
    }
  }
  elMaxLength = document.frm.MAXSize;
  if (elMaxLength !== null && 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 FetchReportBox(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(\'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 submitBug(' + userID + ', ' + formID + ', ' + recordID + ');', ''], '');
}

function submitBug(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=1&UserID=' + userID + '&FormID=' + formID + '&SessionID=' + recordID + '&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('Report', 1024)", 30);
}

function setRadiobuttonExtendedData(rad, checkbox) {
  var radio = document.getElementsByName(rad);
  if (checkbox.checked)
    radio[1].checked = true;
}

function resetCheckBoxes(radiobatton, checkboxName) {
  if (radiobatton.checked)
  {
    var checkboxes = document.getElementsByName(checkboxName);
    for (var i = 0; i < checkboxes.length; i++)
    {
      checkboxes[i].checked = false;
    }
  }
}

function checkAlloptions(checkboxName) {
  var processorCheckboxes = document.getElementsByName(checkboxName);
  var selectAll;

  if(processorCheckboxes != null)
  {
    for(var i = 0; i< processorCheckboxes.length;i++)
    {
      if(processorCheckboxes[i].value == "0" && processorCheckboxes[i].checked)
      {
        selectAll = "Y";
      }
      else if(processorCheckboxes[i].value == "0" && processorCheckboxes[i].checked == false)
      {
        selectAll = "N";
      }
      if(selectAll == "Y")
      {
        processorCheckboxes[i].checked = true;
      }
      else if(selectAll = "N")
      {
        processorCheckboxes[i].checked = false;
      }
    }
  }
}

function selectAllOptionCheckbox(checkboxName) {
  var processorCheckboxes = document.getElementsByName(checkboxName);
  var selectAll = "Y";

  if(processorCheckboxes != null)
  {
    for(var i = 0; i< processorCheckboxes.length;i++)
    {
      if(i > 0)
      {
        if(!processorCheckboxes[i].checked)
        {
          selectAll = "N";
        }
      }
    }
    if(selectAll == "Y")
    {
      processorCheckboxes[0].checked = true;
    }
    else if(selectAll = "N")
    {
      processorCheckboxes[0].checked = false;
    }
  }
}

function fetchAssignTos(strPersonGroupField, strPersonField) {
  var xmlhttp = false;
  var objPersonID = document.getElementById('PersonID');
  var objSchedule = document.getElementById(strPersonField);
  var objPersonGroup = document.getElementById(strPersonGroupField);
  var objOldPersonGroup = document.getElementById('Old' + strPersonGroupField);
  var arySelected = new Array(null, null);
  for (i = 0; i < objSchedule.options.length; i++)
  {
    if (objSchedule.options[i].selected) {
      arySelected[0] = objSchedule.options[i].value;
      arySelected[1] = objSchedule.options[i].text;
      break;
    }
  }

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
     xmlhttp = new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e1) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e2) {}
    }
  }

  if (!xmlhttp) {
    alert('Cannot create XMLHTTP instance');
    return false;
  }

  xmlhttp.open('GET', '/workspace/intask/searchpersons.asp?PersonGroupID=' + objPersonGroup.value + '&PersonID=' + objPersonID.value, true);

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
      var strPersons = xmlhttp.responseText;
      var aryOptions = strPersons.split(';');
      var j;
      var aryValues;
      var objOption;
      if (objSchedule.type !== "hidden")
      {
        while(objSchedule.options.length > 0) {
          objSchedule.removeChild(objSchedule.options.item(0));
        }
        if ((strPersons.lastIndexOf(';' + arySelected[0] + '|') === -1) && (arySelected[1] !== 'Unassigned'))
        {
          objOption = document.createElement("OPTION");
          objSchedule.options.add(objOption);
          objOption.value = arySelected[0];
          objOption.text = arySelected[1];
          objSchedule.options[0].selected = true;
        }
        for (j = 0; j < aryOptions.length - 1; j++) {
          aryValues = aryOptions[j].split('|');
          objOption = document.createElement("OPTION");
          objSchedule.options.add(objOption);
          objOption.value = aryValues[0];
          objOption.text = aryValues[1];
          if (strPersons.lastIndexOf(';' + arySelected[0].toString() + '|') !== -1) {
            objSchedule.options[j].selected = (aryValues[0] === arySelected[0]);
          }
        }
      }
    }
  }

  xmlhttp.send(null);
}

function fetchCommentsToID(strPersonGroupField, strPersonField) {
  var xmlhttp = false;
  var objPersonID = document.getElementById('PersonID');
  var objCommentsTo = document.getElementById('CommentsToID');
  var objPersonGroup = document.getElementById(strPersonGroupField);
  var objOldPersonGroup = document.getElementById('Old' + strPersonGroupField);
  var arySelected = new Array(null, null);
  for (i = 0; i < objCommentsTo.options.length; i++)
  {
    if (objCommentsTo.options[i].selected) {
      arySelected[0] = objCommentsTo.options[i].value;
      arySelected[1] = objCommentsTo.options[i].text;
      break;
    }
  }

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
     xmlhttp = new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e1) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e2) {}
    }
  }

  if (!xmlhttp) {
    alert('Cannot create XMLHTTP instance');
    return false;
  }

  xmlhttp.open('GET', '/workspace/intask/searchpersons.asp?PersonGroupID=' + objPersonGroup.value, true);

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
      var strPersons = xmlhttp.responseText;
      var aryOptions = strPersons.split(';');
      var i, j;
      var aryValues;
      var objOption;
      if (objCommentsTo.type !== "hidden")
      {
        while(objCommentsTo.options.length > 0) {
          objCommentsTo.removeChild(objCommentsTo.options.item(0));
        }
        if ((strPersons.lastIndexOf(';' + arySelected[0] + '|') === -1) && (arySelected[1] !== 'Unassigned'))
        {
          objOption = document.createElement("OPTION");
          objCommentsTo.options.add(objOption);
          objOption.value = arySelected[0];
          objOption.text = arySelected[1];
          objCommentsTo.options[0].selected = true;
        }
        for (j = 0; j < aryOptions.length - 1; j++) {
          aryValues = aryOptions[j].split('|');
          objOption = document.createElement("OPTION");
          objCommentsTo.options.add(objOption);
          objOption.value = aryValues[0];
          objOption.text = aryValues[1];
          if (strPersons.lastIndexOf(';' + arySelected[0].toString() + '|') !== -1) {
            objCommentsTo.options[j].selected = (aryValues[0] === arySelected[0]);
          }
        }
      }
    }
  }

  xmlhttp.send(null);
}

var ConfirmCreateWin = function(msg, link) {
  showMessageBox('Confirm', msg, 200, 110, 0, ['Yes', 'No'], ['jscrpt: hideMessageBox(); createwin("' + link + '");', ''], '');
}

function showFieldPart(fld) {
  if (document.getElementById(fld).style.display == 'none') {
    document.getElementById(fld).style.display = 'block';
  }
}

function hideFieldPart(fld) {
  if (document.getElementById(fld).style.display == 'block') {
    document.getElementById(fld).style.display = 'none';
  }
}


function isValidDateValue(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) {
    //this is for the purpose JavaScript starts the month from 0
    return (false);
  }
  else if (parseInt(yr) < 1980 || dt.getFullYear() != yr) {
    return (false);
  }

  return (true);
}

function dateCompare(startDate, endDate) {
  startDate = startDate.replace(/-/gi, "/");
  endDate = endDate.replace(/-/gi, "/");

  var start = new Date(startDate);
  var end = new Date(endDate);

  return (start <= end);
}

function UpdateDates(reportID) {
  switch (reportID) {
    case '6':
      var dtFrom = document.getElementById('WPShareofWebFromDate_1').value + '-' + document.getElementById('WPShareofWebFromDate_2').value + '-' + document.getElementById('WPShareofWebFromDate_3').value;
      if (!isValidDateValue(dtFrom)) {
        alert(dtFrom + ' is not a valid date');
        return (false);
        }
        break;
        
    case '7': 
        var dtFrom = document.getElementById('VMMarketingFromDate_1').value + '-' + document.getElementById('VMMarketingFromDate_2').value + '-' + document.getElementById('VMMarketingFromDate_3').value;
        var strDateValues = '&FromDate=' + dtFrom;
        if (!isValidDateValue(dtFrom)) {
          alert(dtFrom + ' is not a valid date');
          return (false);
        }
        var dtTo = document.getElementById('VMMarketingToDate_1').value + '-' + document.getElementById('VMMarketingToDate_2').value + '-' + document.getElementById('VMMarketingToDate_3').value;
        strDateValues += '&ToDate=' + dtTo;
        if (!isValidDateValue(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('FromDateHiddenField').value = dtFrom;
        document.getElementById('ToDateHiddenField').value = dtTo;
        break;
      
  }
 function getHtmlBlock(intClientID,strPanel)
  {    
    document.getElementById(intClientID).value = document.getElementById(strPanel).innerHTML;
  }
}

var lastSelectedRadioId = '';

function checkAllCheckboxes(intItems, parentchkbox, rdoParent) {
    var checked = false;
    var i;

    getParent(rdoParent)

    if (lastSelectedRadioId == '') {
        lastSelectedRadioId = rdoParent;
    }

    checked = document.getElementById('All' + parentchkbox).checked;

    for (i = 0; i < intItems; i++) {
        document.getElementById('chk' + parentchkbox + '_' + i).checked = checked;
    }
}

function getParent(strParent) {
    if (lastSelectedRadioId == '') {
        lastSelectedRadioId = strParent;
    }
    document.getElementById('rdo' + strParent).click();
}

function clearAllCheckboxes(intItems, parentchkbox) {
    var checked = false;
    var i;

    if (lastSelectedRadioId != '') //if not clicked on first radio
    {
        document.getElementById('All' + lastSelectedRadioId).checked = checked;

        for (i = 0; i < intItems; i++) {
            document.getElementById('chk' + lastSelectedRadioId + '_' + i).checked = checked;
        }
        lastSelectedRadioId = parentchkbox;
    }

}

function OnRadioChange(rdo) {
    lastSelectedRadioId = rdo;
}
