bkruse: branch 1.4 r1384 - /branches/1.4/config/scripts/astman.js

SVN commits to the Asterisk-GUI project asterisk-gui-commits at lists.digium.com
Fri Aug 17 16:47:01 CDT 2007


Author: bkruse
Date: Fri Aug 17 16:47:00 2007
New Revision: 1384

URL: http://svn.digium.com/view/asterisk-gui?view=rev&rev=1384
Log:
Added astman function combo_box, used in the sx00i
branch and menus.html. Written by pari, I just copied
it into the public branches.

Modified:
    branches/1.4/config/scripts/astman.js

Modified: branches/1.4/config/scripts/astman.js
URL: http://svn.digium.com/view/asterisk-gui/branches/1.4/config/scripts/astman.js?view=diff&rev=1384&r1=1383&r2=1384
==============================================================================
--- branches/1.4/config/scripts/astman.js (original)
+++ branches/1.4/config/scripts/astman.js Fri Aug 17 16:47:00 2007
@@ -557,6 +557,95 @@
 			'<TR><TD><img src="/asterisk/static/config/images/loading.gif"></TD>' +
 			'<TD valign=middle align=center>&nbsp;&nbsp;<div id=message_text></div></TD></TR></TABLE>';
 	document.body.appendChild(h);
+}
+
+function combo_box(a, b, c ){	
+	var combo_text = document.getElementById(a);
+	var combo_selectdiv = document.getElementById(b);
+	var combo_selectbox = document.getElementById(c);
+	var TAB = 9;
+	var ENTER = 13;
+	var ESC = 27;
+	var KEYUP = 38;
+	var KEYDN = 40;
+	var BKSPACE = 8;
+
+	function xyz(event){
+		if( event.keyCode == ENTER || event.keyCode == ESC || event.keyCode == TAB){
+			combo_selectdiv.style.display = "none";
+			return false;
+		}else if( event.keyCode == KEYDN ||  event.keyCode == KEYUP ){
+			combo_selectbox.focus();
+			return false;
+		}else if( event.keyCode == BKSPACE && !combo_text.value.length ){
+			combo_selectdiv.style.display = "none";
+			return false;
+		}else{
+			combo_selectdiv.style.display = "";
+			return true;
+		}
+	}
+	
+	function abcd(event){
+		if( event.keyCode == ENTER || event.keyCode == ESC || event.keyCode == TAB){
+		return false;
+		}
+		for (var i=0; i < combo_selectbox.options.length; i++){
+			if(combo_selectbox.options[i].value.toLowerCase().match(combo_text.value.toLowerCase()) ){
+				combo_selectbox.selectedIndex = i;
+				return true;
+			}
+		}
+		combo_selectdiv.style.display = "none";				
+	}
+
+	function efgh(event) {
+		if( event.keyCode == ENTER ){
+			combo_text.value = combo_selectbox.value;
+			combo_text.focus();
+			combo_selectdiv.style.display = "none";
+			return false;
+		}else if( event.keyCode == ESC ){
+			combo_text.focus();
+			combo_selectdiv.style.display = "none";
+		}else{
+			return true;
+		}
+	}
+	function ijkl(event) {
+		combo_text.value = combo_selectbox.value;
+		combo_text.focus();
+		combo_selectdiv.style.display = "none";
+	}
+
+	combo_selectdiv.style.position ="absolute";
+	combo_selectdiv.style.top = 0;
+	combo_selectdiv.style.left = 0;
+//	combo_selectdiv.style.z-index = 10000;
+	combo_selectdiv.style.display = "none";
+
+	ASTGUI.events.add( combo_text , 'keychange' , combobox_activate ) ;
+	ASTGUI.events.add( combo_text , 'focus' , combobox_activate ) ;
+	ASTGUI.events.add( combo_text , 'focusout' , function(){ combo_selectdiv.style.display ='none'; } ) ;
+	ASTGUI.events.add( combo_text , 'keypress' , xyz) ;
+	ASTGUI.events.add( combo_text , 'keyup' , abcd ) ;
+	ASTGUI.events.add( combo_selectbox, 'keypress' , efgh ) ;
+	ASTGUI.events.add( combo_selectbox, 'click' , ijkl ) ;
+
+	function combobox_activate(){
+		var tmp_left = combo_text.offsetLeft;
+		var tmp_top = combo_text.offsetTop + combo_text.offsetHeight;
+		var tmp_parent = combo_text;
+		while(tmp_parent.offsetParent != document.body){
+			tmp_parent = tmp_parent.offsetParent;
+			tmp_left += tmp_parent.offsetLeft;
+			tmp_top += tmp_parent.offsetTop;
+		}
+		combo_selectdiv.style.left = tmp_left;
+		combo_selectdiv.style.top = tmp_top ;
+		combo_selectdiv.style.width = combo_text.offsetWidth;
+		combo_selectdiv.style.display = "";
+	}
 }
 
 function  InArray(search_array, searchstring ){




More information about the asterisk-gui-commits mailing list