event refactor, landing on HEAD!
[freeside.git] / httemplate / elements / fckeditor / editor / dialog / fck_select / fck_select.js
diff --git a/httemplate/elements/fckeditor/editor/dialog/fck_select/fck_select.js b/httemplate/elements/fckeditor/editor/dialog/fck_select/fck_select.js
new file mode 100644 (file)
index 0000000..181b666
--- /dev/null
@@ -0,0 +1,194 @@
+/*\r
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben\r
+ *\r
+ * == BEGIN LICENSE ==\r
+ *\r
+ * Licensed under the terms of any of the following licenses at your\r
+ * choice:\r
+ *\r
+ *  - GNU General Public License Version 2 or later (the "GPL")\r
+ *    http://www.gnu.org/licenses/gpl.html\r
+ *\r
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
+ *    http://www.gnu.org/licenses/lgpl.html\r
+ *\r
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")\r
+ *    http://www.mozilla.org/MPL/MPL-1.1.html\r
+ *\r
+ * == END LICENSE ==\r
+ *\r
+ * Scripts for the fck_select.html page.\r
+ */\r
+\r
+function Select( combo )\r
+{\r
+       var iIndex = combo.selectedIndex ;\r
+\r
+       oListText.selectedIndex         = iIndex ;\r
+       oListValue.selectedIndex        = iIndex ;\r
+\r
+       var oTxtText    = document.getElementById( "txtText" ) ;\r
+       var oTxtValue   = document.getElementById( "txtValue" ) ;\r
+\r
+       oTxtText.value  = oListText.value ;\r
+       oTxtValue.value = oListValue.value ;\r
+}\r
+\r
+function Add()\r
+{\r
+       var oTxtText    = document.getElementById( "txtText" ) ;\r
+       var oTxtValue   = document.getElementById( "txtValue" ) ;\r
+\r
+       AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;\r
+       AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;\r
+\r
+       oListText.selectedIndex = oListText.options.length - 1 ;\r
+       oListValue.selectedIndex = oListValue.options.length - 1 ;\r
+\r
+       oTxtText.value  = '' ;\r
+       oTxtValue.value = '' ;\r
+\r
+       oTxtText.focus() ;\r
+}\r
+\r
+function Modify()\r
+{\r
+       var iIndex = oListText.selectedIndex ;\r
+\r
+       if ( iIndex < 0 ) return ;\r
+\r
+       var oTxtText    = document.getElementById( "txtText" ) ;\r
+       var oTxtValue   = document.getElementById( "txtValue" ) ;\r
+\r
+       oListText.options[ iIndex ].innerHTML   = HTMLEncode( oTxtText.value ) ;\r
+       oListText.options[ iIndex ].value               = oTxtText.value ;\r
+\r
+       oListValue.options[ iIndex ].innerHTML  = HTMLEncode( oTxtValue.value ) ;\r
+       oListValue.options[ iIndex ].value              = oTxtValue.value ;\r
+\r
+       oTxtText.value  = '' ;\r
+       oTxtValue.value = '' ;\r
+\r
+       oTxtText.focus() ;\r
+}\r
+\r
+function Move( steps )\r
+{\r
+       ChangeOptionPosition( oListText, steps ) ;\r
+       ChangeOptionPosition( oListValue, steps ) ;\r
+}\r
+\r
+function Delete()\r
+{\r
+       RemoveSelectedOptions( oListText ) ;\r
+       RemoveSelectedOptions( oListValue ) ;\r
+}\r
+\r
+function SetSelectedValue()\r
+{\r
+       var iIndex = oListValue.selectedIndex ;\r
+       if ( iIndex < 0 ) return ;\r
+\r
+       var oTxtValue = document.getElementById( "txtSelValue" ) ;\r
+\r
+       oTxtValue.value = oListValue.options[ iIndex ].value ;\r
+}\r
+\r
+// Moves the selected option by a number of steps (also negative)\r
+function ChangeOptionPosition( combo, steps )\r
+{\r
+       var iActualIndex = combo.selectedIndex ;\r
+\r
+       if ( iActualIndex < 0 )\r
+               return ;\r
+\r
+       var iFinalIndex = iActualIndex + steps ;\r
+\r
+       if ( iFinalIndex < 0 )\r
+               iFinalIndex = 0 ;\r
+\r
+       if ( iFinalIndex > ( combo.options.length - 1 ) )\r
+               iFinalIndex = combo.options.length - 1 ;\r
+\r
+       if ( iActualIndex == iFinalIndex )\r
+               return ;\r
+\r
+       var oOption = combo.options[ iActualIndex ] ;\r
+       var sText       = HTMLDecode( oOption.innerHTML ) ;\r
+       var sValue      = oOption.value ;\r
+\r
+       combo.remove( iActualIndex ) ;\r
+\r
+       oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ;\r
+\r
+       oOption.selected = true ;\r
+}\r
+\r
+// Remove all selected options from a SELECT object\r
+function RemoveSelectedOptions(combo)\r
+{\r
+       // Save the selected index\r
+       var iSelectedIndex = combo.selectedIndex ;\r
+\r
+       var oOptions = combo.options ;\r
+\r
+       // Remove all selected options\r
+       for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )\r
+       {\r
+               if (oOptions[i].selected) combo.remove(i) ;\r
+       }\r
+\r
+       // Reset the selection based on the original selected index\r
+       if ( combo.options.length > 0 )\r
+       {\r
+               if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;\r
+               combo.selectedIndex = iSelectedIndex ;\r
+       }\r
+}\r
+\r
+// Add a new option to a SELECT object (combo or list)\r
+function AddComboOption( combo, optionText, optionValue, documentObject, index )\r
+{\r
+       var oOption ;\r
+\r
+       if ( documentObject )\r
+               oOption = documentObject.createElement("OPTION") ;\r
+       else\r
+               oOption = document.createElement("OPTION") ;\r
+\r
+       if ( index != null )\r
+               combo.options.add( oOption, index ) ;\r
+       else\r
+               combo.options.add( oOption ) ;\r
+\r
+       oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : '&nbsp;' ;\r
+       oOption.value     = optionValue ;\r
+\r
+       return oOption ;\r
+}\r
+\r
+function HTMLEncode( text )\r
+{\r
+       if ( !text )\r
+               return '' ;\r
+\r
+       text = text.replace( /&/g, '&amp;' ) ;\r
+       text = text.replace( /</g, '&lt;' ) ;\r
+       text = text.replace( />/g, '&gt;' ) ;\r
+\r
+       return text ;\r
+}\r
+\r
+\r
+function HTMLDecode( text )\r
+{\r
+       if ( !text )\r
+               return '' ;\r
+\r
+       text = text.replace( /&gt;/g, '>' ) ;\r
+       text = text.replace( /&lt;/g, '<' ) ;\r
+       text = text.replace( /&amp;/g, '&' ) ;\r
+\r
+       return text ;\r
+}
\ No newline at end of file