initial commit
This commit is contained in:
parent
5aeabf52d6
commit
5a6bd1d07b
148 changed files with 7509 additions and 0 deletions
253
WebRoot/js/fsim.js
Normal file
253
WebRoot/js/fsim.js
Normal file
|
|
@ -0,0 +1,253 @@
|
|||
|
||||
|
||||
//if(window.url.indexOf("divv")!=-1) {
|
||||
// alert("turning on divv devv mode");
|
||||
//div,span {
|
||||
//border: 1px solid #f00;
|
||||
//margin: 1px;
|
||||
//}
|
||||
//}
|
||||
|
||||
|
||||
var IE = document.all?true:false;
|
||||
var req = null;
|
||||
if (!IE) {
|
||||
document.captureEvents(Event.KEYBOARD);
|
||||
}
|
||||
|
||||
// full autocomplete off AND XHTML compatible
|
||||
for(i=0;i<document.forms.length;i++)void(document.forms[i].setAttribute('autocomplete', 'off'));
|
||||
|
||||
function debug(text) {
|
||||
|
||||
var divObject = document.getElementById('debug');
|
||||
divObject.innerHTML = divObject.innerHTML+text+'<br/>';
|
||||
|
||||
}
|
||||
|
||||
function initRequest() {
|
||||
if (window.XMLHttpRequest) {
|
||||
req = new XMLHttpRequest();
|
||||
} else if (window.ActiveXObject) {
|
||||
IE = true;
|
||||
req = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
}
|
||||
|
||||
function sendRequest(url,oDiv) {
|
||||
|
||||
if(req.readyState==1) {
|
||||
// not while loading.
|
||||
return;
|
||||
}
|
||||
|
||||
req.table = oDiv;
|
||||
req.onreadystatechange=callBack;
|
||||
req.open("GET",url,true);
|
||||
req.send(null);
|
||||
|
||||
}
|
||||
|
||||
function callBack()
|
||||
{
|
||||
// if xmlhttp shows "loaded"
|
||||
if(req && req.readyState==4)
|
||||
{
|
||||
// if "OK"
|
||||
if (req.status==200)
|
||||
{
|
||||
//alert("just got: "+xmlhttp.responseText);
|
||||
//document.write(xmlhttp.responseText);
|
||||
ac = req.table;
|
||||
oDiv = ac.oDiv;
|
||||
|
||||
// clear the popup div.
|
||||
while ( oDiv.hasChildNodes() )
|
||||
{
|
||||
oDiv.removeChild(oDiv.firstChild);
|
||||
}
|
||||
|
||||
var items = req.responseXML.getElementsByTagName("item");
|
||||
//alert("just got items:"+items);
|
||||
var to = "";
|
||||
for (loop = 0; loop < items.length; loop++)
|
||||
{
|
||||
var item = items.item(loop).firstChild.nodeValue;
|
||||
var hits = items.item(loop).getAttribute('hits');
|
||||
|
||||
var oDivBinder = document.createElement('div');
|
||||
oDivBinder.id = loop;
|
||||
oDivBinder.className = 'fsimCompleteBinderNormal';
|
||||
|
||||
var oDivItem = document.createElement('div');
|
||||
oDivItem.innerHTML = item;
|
||||
oDivItem.className = 'fsimCompleteWords';
|
||||
|
||||
oDivBinder.onmousedown = AutoComplete.prototype.onDivMouseDown;
|
||||
oDivBinder.onmouseover = AutoComplete.prototype.onDivMouseOver;
|
||||
oDivBinder.onmouseout = AutoComplete.prototype.onDivMouseOut;
|
||||
|
||||
//var oSpanHits = document.createElement('div');
|
||||
//oSpanHits.className = 'fsimCompleteHits';
|
||||
//oSpanHits.innerHTML = 'hits: '+hits;
|
||||
|
||||
oDivBinder.appendChild(oDivItem);
|
||||
//oDivBinder.appendChild(oSpanHits);
|
||||
|
||||
oDiv.AutoComplete = ac;
|
||||
oDiv.appendChild(oDivBinder);
|
||||
}
|
||||
//alert("got: "+to);
|
||||
oDiv.style.visibility = "visible";
|
||||
//oDiv.stlyeClass = "pop";
|
||||
oDiv.className = "pop";
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("Problem retrieving XML data status:"+req.statusText);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function AutoComplete(url, oText, oDiv)
|
||||
{
|
||||
// initialize member variables
|
||||
this.oText = oText; // the text box
|
||||
this.oDiv = oDiv; // a hidden <div> for the popup auto-complete
|
||||
this.url=url;
|
||||
this.selectedItem = null;
|
||||
|
||||
this.preKeyword = "";
|
||||
|
||||
|
||||
initRequest();
|
||||
|
||||
//if(IE) {
|
||||
// turn of autocompletion in IE for this field !
|
||||
oText.autocomplete = 'off';
|
||||
//}
|
||||
|
||||
// attach handlers to the text-box
|
||||
oText.AutoComplete = this;
|
||||
oText.onkeyup = AutoComplete.prototype.onTextChange;
|
||||
oText.onblur = AutoComplete.prototype.onTextBlur;
|
||||
}
|
||||
|
||||
AutoComplete.prototype.onTextBlur = function()
|
||||
{
|
||||
this.AutoComplete.onblur();
|
||||
}
|
||||
|
||||
AutoComplete.prototype.onblur = function()
|
||||
{
|
||||
this.oDiv.style.visibility = "hidden";
|
||||
}
|
||||
|
||||
AutoComplete.prototype.onTextChange = function(e)
|
||||
{
|
||||
if(IE) {
|
||||
var e = window.event;
|
||||
}
|
||||
//debug('keycode='+e.keyCode);
|
||||
var keyCode = e.keyCode;
|
||||
|
||||
if(32 === keyCode) {
|
||||
this.AutoComplete.preKeyword = this.AutoComplete.oText.value;
|
||||
return;
|
||||
}
|
||||
|
||||
if(40 === keyCode || 38 === keyCode) {
|
||||
|
||||
if(this.AutoComplete.selectedItem !== null) {
|
||||
this.AutoComplete.selectedItem.className = "fsimCompleteBinderNormal";
|
||||
var currentID = this.AutoComplete.selectedItem.id;
|
||||
//debug("curID="+currentID);
|
||||
}
|
||||
var nextItem = null;
|
||||
if(40 === keyCode) {
|
||||
if(!currentID) {
|
||||
var currentID = -1;
|
||||
}
|
||||
currentID++;
|
||||
nextItem = this.AutoComplete.oDiv.childNodes.item(currentID);
|
||||
nextItem.className = "fsimCompleteBinderHighlight";
|
||||
this.AutoComplete.selectedItem = nextItem;
|
||||
|
||||
this.AutoComplete.oText.value = this.AutoComplete.preKeyword+nextItem.firstChild.innerHTML;
|
||||
|
||||
}
|
||||
if(38 === keyCode) {
|
||||
if(!currentID) {
|
||||
var currentID = this.AutoComplete.oDiv.childNodes.lenght+1;
|
||||
}
|
||||
currentID--;
|
||||
nextItem = this.AutoComplete.oDiv.childNodes.item(currentID);
|
||||
nextItem.className = "fsimCompleteBinderHighlight";
|
||||
this.AutoComplete.selectedItem = nextItem;
|
||||
|
||||
this.AutoComplete.oText.value = this.parentNode.AutoComplete.preKeyword+nextItem.firstChild.innerHTML;
|
||||
}
|
||||
|
||||
} else {
|
||||
this.AutoComplete.onchange();
|
||||
}
|
||||
}
|
||||
|
||||
AutoComplete.prototype.selectRange = function (iStart, iLength)
|
||||
{
|
||||
if (this.oText.createTextRange) {
|
||||
var oRange = this.oText.createTextRange();
|
||||
oRange.moveStart("character", iStart);
|
||||
oRange.moveEnd("character", iLength - this.textbox.value.length);
|
||||
oRange.select();
|
||||
} else if (this.oText.setSelectionRange) {
|
||||
this.oText.setSelectionRange(iStart, iLength);
|
||||
}
|
||||
|
||||
this.oText.focus();
|
||||
}
|
||||
|
||||
|
||||
AutoComplete.prototype.onchange = function()
|
||||
{
|
||||
var txt = this.oText.value;
|
||||
if(""!=txt) {
|
||||
this.selectedItem = null;
|
||||
sendRequest(this.url+txt,this);
|
||||
} else {
|
||||
// hide !
|
||||
this.oDiv.style.visibility = "hidden";
|
||||
this.oText.focus();
|
||||
}
|
||||
}
|
||||
|
||||
AutoComplete.prototype.onDivMouseDown = function()
|
||||
{
|
||||
this.parentNode.AutoComplete.oText.value = this.parentNode.AutoComplete.preKeyword+this.firstChild.innerHTML;
|
||||
this.parentNode.AutoComplete.selectedItem = null;
|
||||
}
|
||||
|
||||
AutoComplete.prototype.onDivMouseOver = function()
|
||||
{
|
||||
if(this.parentNode.AutoComplete.selectedItem !== null) {
|
||||
this.parentNode.AutoComplete.selectedItem.className = "fsimCompleteBinderNormal";
|
||||
}
|
||||
this.className = 'fsimCompleteBinderHighlight';
|
||||
this.parentNode.AutoComplete.selectedItem = this;
|
||||
|
||||
this.parentNode.AutoComplete.oText.value = this.parentNode.AutoComplete.preKeyword+this.firstChild.innerHTML;
|
||||
}
|
||||
|
||||
AutoComplete.prototype.onDivMouseOut = function()
|
||||
{
|
||||
this.className = 'fsimCompleteBinderNormal';
|
||||
}
|
||||
|
||||
|
||||
function createAutoComplete()
|
||||
{
|
||||
new AutoComplete('/search?m=1&l=',
|
||||
document.getElementById('q'),
|
||||
document.getElementById('fsimKeywordsPopup'));
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue