From 6453c26ae71a40c195dc5adb51dde5ca4cebff84 Mon Sep 17 00:00:00 2001 From: Janusz Dobrowolski Date: Fri, 16 May 2008 18:38:09 +0000 Subject: [PATCH] Ajax funcionality additions --- js/inserts.js | 241 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 185 insertions(+), 56 deletions(-) diff --git a/js/inserts.js b/js/inserts.js index e24c37f8..c3ff6e1f 100644 --- a/js/inserts.js +++ b/js/inserts.js @@ -1,3 +1,114 @@ +function debug(msg) { + document.getElementById('msgbox').innerHTML= + document.getElementById('msgbox').innerHTML+'
'+msg +} + +function progbar(container) { + container.innerHTML= "
"+ + user.loadtxt+"
"; +} + +function _expand(tabobj) { + + var ul = tabobj.parentNode.parentNode; + var alltabs=ul.getElementsByTagName("input"); + var frm = tabobj.form; + + if (ul.getAttribute("rel")){ + for (var i=0; i=0) { + var len = select.length; + var byid = this.className=='combo'; + var ac = this.value.toUpperCase(); + select.options[select.selectedIndex].selected = false; + for (i = 0; i < len; i++) { + var txt = byid ? select.options[i].value : select.options[i].text; + if (txt.toUpperCase().indexOf(ac) >= 0) { + select.options[i].selected = true; + break; + } + } + } + }; + e.onkeydown = function(ev) { +// this.lastkey = event.keyCode; + this.back = (ev||window.event).shiftKey; // save shift state for onblur handler + } +} + +function _set_combo_select(e) { + + e.onblur = function(event) { + event = event||window.event; + if(!this.back && this.selectedIndex>=0) { + var sname = '_'+this.name+'_update'; + var box = document.getElementsByName(this.getAttribute('rel'))[0]; + var opt = this.options[this.selectedIndex]; + var byid = this.className=='combo'; + var update = document.getElementsByName(sname)[0]; + if (opt.value != 0) { + if(box) box.value = byid ? opt.value : opt.text; + if(update) { + if(update.className == 'combo_select') { + document.getElementsByName('_focus')[0].value=this.name; + JsHttpRequest.request(sname); + } else { + update.click(); + this.focus(); + } + } + } + this.size = 1; + } + return true; + } + e.onchange = function() { + if (this.options[this.selectedIndex].value==0) + document.getElementsByName(this.getAttribute('rel'))[0].value=''; + } +/* e.onkeydown = function(event) { + event = event||window.event; + if(event.keyCode==13) { + var box = document.getElementsByName(this.getAttribute('rel'))[0]; + this.style.display='none'; + box.style.display=''; + this.back=true; + box.focus(); + } + } +*/} + /* Behaviour definitions */ @@ -16,7 +127,10 @@ var inserts = { document.getElementsByName('_focus')[0].value = element.name; }; element.onkeydown = function(event) { - if (event.keyCode==32) { + event = event||window.event; + this.back = event.shiftKey; // save shift state for onblur handler + this.lastkey = event.keyCode; + if (event.keyCode==32) { if(this.init_size==undefined) this.init_size = this.size; if(this.init_size<=1) { @@ -30,11 +144,16 @@ var inserts = { } } } - } - element.onblur = function(event) { + }; + element.onblur = function() { if(this.init_size<=1) this.size = 1; - } + }; + var c = element.className; + if (c == 'combo' || c == 'combo2') +// if (element.onblur==undefined) { + _set_combo_select(element); +// } } }, 'input': function(element) { // we do not want to change focus on submit @@ -42,56 +161,68 @@ var inserts = { element.onfocus = function() { document.getElementsByName('_focus')[0].value = element.name; }; - } - }, - // combo: text input and related selector - 'input.combo': function(element) { - if(element.onkeydown==undefined) { - element.onkeydown=function(event) { - if (event.keyCode==13) event.keyCode=9; - }; - element.onkeyup = function() { - var select = document.getElementsByName(this.getAttribute('rel'))[0]; - var len = select.length; - var ac = this.value; - var txt; - var was = select.selectedIndex; - select.options[select.selectedIndex].selected = false; - for (i = 0; i < len; i++) { -// txt = select.options[i].text; - txt = select.options[i].value; - if (txt.indexOf(ac) >= 0) { - select.options[i].selected = true; - select._changed = was!=i; - break; + var c = element.className; + if (c == 'combo' || c == 'combo2') { + if(element.onkeydown==undefined) { + _set_combo_input(element); } - } - }; - element.onblur = function() { - var button = document.getElementsByName(this.name+'_button')[0]; - var select = document.getElementsByName(this.getAttribute('rel'))[0]; -// var val = select.options[select.selectedIndex].text; TODO - var val = select.options[select.selectedIndex].value; - if (this.value != "") - this.value = val; - return true; - }; + } } }, - 'select.combo': function(element) { - element.onblur = function() { - var box = document.getElementsByName(this.getAttribute('rel'))[0]; - val = this.options[this.selectedIndex].value; - box.value = val; - this.size = 1; - if (this._changed) this.form.submit(); - return true; - } - }, 'input.combo_submit': function(element) { - // this hides search button for js enabled browsers + // this hides search button for js enabled browsers + element.style.display = 'none'; + }, + 'input.combo_select': function(element) { + // this hides select button for js enabled browsers + element.style.display = 'none'; + }, + 'input.combo_reload': function(element) { element.style.display = 'none'; + }, + 'input.ajaxsubmit': function(e) { + e.onclick = function() { + JsHttpRequest.request(this.name); + return false; + } + }, + 'input.editbutton': function(e) { + e.onclick = function() { + JsHttpRequest.request(this.name); + return false; + } + }, + 'ul.ajaxtabs': function(ul) { + var ulist=ul.getElementsByTagName("li"); + for (var x=0; x