// =================================================================== // Author: Matt Kruse // WWW: http://www.mattkruse.com/ // // NOTICE: You may use this code for any purpose, commercial or // private, without any further permission from the author. You may // remove this notice from your final code if you wish, however it is // appreciated by the author if at least my web site address is kept. // // You may *NOT* re-distribute this code in any way except through its // use. That means, you can include it in your product, or your web // site, or any other form where the code is actually being used. You // may not put the plain javascript up on your site for download or // include it in your javascript libraries for download. // If you wish to share this code with others, please just point them // to the URL instead. // Please DO NOT link directly to my .js files from your site. Copy // the files to your server and use them there. Thank you. // =================================================================== // ------------------------------------------------------------------- // selectUnselectMatchingOptions(select_object,regex,select/unselect,true/false) // This is a general function used by the select functions below, to // avoid code duplication // ------------------------------------------------------------------- function selectUnselectMatchingOptions(obj,regex,which,only) { if (window.RegExp) { if (which == "select") { var selected1=true; var selected2=false; } else if (which == "unselect") { var selected1=false; var selected2=true; } else { return; } var re = new RegExp(regex); for (var i=0; i (b.text+"")) { return 1; } return 0; } ); for (var i=0; i object as follows: // onDblClick="moveSelectedOptions(this,this.form.target) // This way, when the user double-clicks on a value in one box, it // will be transferred to the other (in browsers that support the // onDblClick() event handler). // ------------------------------------------------------------------- function moveSelectedOptions(from,to) { // Unselect matching options, if required if (arguments.length>3) { var regex = arguments[3]; if (regex != "") { unSelectMatchingOptions(from,regex); } } // Move them over for (var i=0; i=0; i--) { var o = from.options[i]; if (o.selected) { from.options[i] = null; } } if ((arguments.length<3) || (arguments[2]==true)) { sortSelect(from); sortSelect(to); } from.selectedIndex = -1; to.selectedIndex = -1; } // ------------------------------------------------------------------- // copySelectedOptions(select_object,select_object[,autosort(true/false)]) // This function copies options between select boxes instead of // moving items. Duplicates in the target list are not allowed. // ------------------------------------------------------------------- function copySelectedOptions(from,to) { var options = new Object(); for (var i=0; i 1 option selected, do nothing var selectedCount=0; for (i=0; i 1 option selected, do nothing var selectedCount=0; for (i=0; i=0; i--) { var o=from.options[i]; if (o.selected) { from.options[i] = null; } } from.selectedIndex = -1; } // ------------------------------------------------------------------- // removeAllOptions(select_object) // Remove all options from a list // ------------------------------------------------------------------- function removeAllOptions(from) { for (var i=(from.options.length-1); i>=0; i--) { from.options[i] = null; } from.selectedIndex = -1; }