Code Search for Developers
 
 
  

field_completion.html from AlphaMail at Krugle


Show field_completion.html syntax highlighted

<HTML>
   <HEAD>
      <STYLE>
         .highlight {
            color: red;
         }
         DIV#CompletionBox {
            background: rgb(200,200,200);
         }
      </STYLE>
      <SCRIPT TYPE="text/javascript">

         function CompletionState()
         {
            this.visible = false; // Is the field completion visible?
            this.item = 0; // Which item is highlighted?
            this.words = new Array();
            this.xref = new Array();
         }

         var state = new CompletionState();
         var words = new Array("bite my shiny metal butt", "test", "tepid", "help", "would you like", "like", "hello", "world");

         function findWords(state, allowed, pattern)
         {
            var i;
            var re = new RegExp("(" + pattern + ")", "i");
            var re_valid = new RegExp("^[a-z]", "i");
            var n=0;

            if(pattern.length < 1 || !re_valid.exec(pattern)) {
               state.words = new Array();
               return;
            }

            pattern = pattern.toLowerCase();
            state.words = new Array();
            state.xref = new Array();

            for(i=0; i<allowed.length; i++) {
               if(re.exec(allowed[i])) {
                  state.words[n] = allowed[i];
                  state.words[n] = state.words[n].replace(re, "<B>$1</B>");
                  state.xref[n] = i;
                  n++;
               }
            }
         }

         function popup(evt)
         {
            var f = document.getElementById("header");
            var box = document.getElementById("CompletionBox");
            var i;
            var s = "";
            var code;
            var cursorpos = f.email.selectionStart;
            var val = f.email.value;
            var lastcomma = val.lastIndexOf(",");
            var re = new RegExp("^(.*, *){0,1}([^,]*)$");

            // Cursor must be in proper state: (not highlighting, 
            // after last comma, at end-of-string)
            if(f.email.selectionStart != f.email.selectionEnd ||
               lastcomma > cursorpos || cursorpos != val.length) {
               window.status = "bad cursor position";
               box.innerHTML = "";
               state.visible = false;
               return;
            }

            // Get the section of the text-area to complete
            var toComplete = val.substring(lastcomma, val.length);
            toComplete = toComplete.replace(re, "$2");
            window.status = "Trying to complete: " + toComplete;
            
            if(!evt) evt = window.event;
            code = evt.keyCode;

            switch(code) {
               case evt.DOM_VK_UP:
                  if(state.item > 0) state.item--;
                  break;
               case evt.DOM_VK_DOWN:
                  if(state.item < words.length-1) state.item++;
                  break;
               case evt.DOM_VK_TAB:
               case evt.DOM_VK_ENTER:
               case evt.DOM_VK_RETURN:
                  if(state.visible) {
                     f.email.value = f.email.value.replace(re, "$1" + words[state.xref[state.item]]);
                     state.visible = false;
                  }
                  break;
               default:  // Something else...must reset popup
                  findWords(state, words, toComplete);
                  if(state.words.length > 0) {
                     state.visible = true;
                     state.item = 0;
                  } else {
                     state.visible = false;
                  }
            }

            if(state.visible) {
               s = "";
               for(i=0; i<state.words.length; i++) {
                  if(i == state.item) 
                     s = s + '<SPAN CLASS="highlight">' + state.words[i] + 
                         '</SPAN>' + "<BR>";
                  else
                     s = s + state.words[i] + "<BR>";
               }
               box.innerHTML = s;
            } else
               box.innerHTML = "";
         }

         function suppressKeys(event)
         {
            var code = event.keyCode;

            if(state.visible && 
               (code == event.DOM_VK_TAB ||
                code == event.DOM_VK_UP ||
                code == event.DOM_VK_DOWN ||
                code == event.DOM_VK_RETURN ||
                code == event.DOM_VK_ENTER
               )) return false;

            return true;
         }
      </SCRIPT>
   </HEAD>
   <BODY bgcolor="white">
      <FORM ID="header">
         <TEXTAREA ROWS=3 COLS=80 NAME="email" onKeyUp="return popup(event);" onKeyPress="return suppressKeys(event);" >
         </TEXTAREA>
      </FORM>
      <DIV ID="CompletionBox" STYLE="position: absolute; width: 300px; background: rgb(200,200,200); top:100; left:100;"></DIV>
   </BODY>
</HTML>




See more files for this project here

AlphaMail

AlphaMail is an accelerated web mail interface with a C++ middleware layer that is more effective than an IMAP proxy which is a highly scalable (10k+ users). The interface includes modern features, Section 508 compliance, and universal browser support.

Project homepage: http://sourceforge.net/projects/alphamail
Programming language(s): C++,Java,JavaScript,Perl
License: other

  data1.html
  data2.html
  droptarget.js
  droptarget_test.html
  field_completion.html
  server_command.html
  table_edit.html
  test.html
  transparentpixel.gif
  wz_dragdrop.js
  wz_dragdrop.zip
  wz_tooltip.js
  wz_tooltip.zip