]> git.sur5r.net Git - contagged/blobdiff - scripts/interface/ittabs.js
JavaScript updates (migration to JQuery + Interface)
[contagged] / scripts / interface / ittabs.js
diff --git a/scripts/interface/ittabs.js b/scripts/interface/ittabs.js
new file mode 100644 (file)
index 0000000..54b9330
--- /dev/null
@@ -0,0 +1,92 @@
+/**\r
+ * Interface Elements for jQuery\r
+ * TTabs\r
+ * \r
+ * http://interface.eyecon.ro\r
+ * \r
+ * Copyright (c) 2006 Stefan Petre\r
+ * Dual licensed under the MIT (MIT-LICENSE.txt) \r
+ * and GPL (GPL-LICENSE.txt) licenses.\r
+ *   \r
+ *\r
+ *\r
+ */\r
+\r
+jQuery.iTTabs =\r
+{\r
+       doTab : function(e)\r
+       {\r
+               pressedKey = e.charCode || e.keyCode || -1;\r
+               if (pressedKey == 9) {\r
+                       if (window.event) {\r
+                               window.event.cancelBubble = true;\r
+                               window.event.returnValue = false;\r
+                       } else {\r
+                               e.preventDefault();\r
+                               e.stopPropagation();\r
+                       }\r
+                       if (this.createTextRange) {\r
+                               document.selection.createRange().text="\t";\r
+                               this.onblur = function() { this.focus(); this.onblur = null; };\r
+                       } else if (this.setSelectionRange) {\r
+                               start = this.selectionStart;\r
+                               end = this.selectionEnd;\r
+                               this.value = this.value.substring(0, start) + "\t" + this.value.substr(end);\r
+                               this.setSelectionRange(start + 1, start + 1);\r
+                               this.focus();\r
+                       }\r
+                       return false;\r
+               }\r
+       },\r
+       destroy : function()\r
+       {\r
+               return this.each(\r
+                       function()\r
+                       {\r
+                               if (this.hasTabsEnabled && this.hasTabsEnabled == true) {\r
+                                       jQuery(this).unbind('keydown', jQuery.iTTabs.doTab);\r
+                                       this.hasTabsEnabled = false;\r
+                               }\r
+                       }\r
+               );\r
+       },\r
+       build : function()\r
+       {\r
+               return this.each(\r
+                       function()\r
+                       {\r
+                               if (this.tagName == 'TEXTAREA' && (!this.hasTabsEnabled || this.hasTabsEnabled == false)) {\r
+                                       jQuery(this).bind('keydown', jQuery.iTTabs.doTab);\r
+                                       this.hasTabsEnabled = true;\r
+                               }\r
+                       }\r
+               );                      \r
+       }\r
+};\r
+\r
+jQuery.fn.extend (\r
+       {\r
+               /**\r
+                * Enable tabs in textareas\r
+                * \r
+                * @name EnableTabs\r
+                * @description Enable tabs in textareas\r
+                *\r
+                * @type jQuery\r
+                * @cat Plugins/Interface\r
+                * @author Stefan Petre\r
+                */\r
+               EnableTabs : jQuery.iTTabs.build,\r
+               /**\r
+                * Disable tabs in textareas\r
+                * \r
+                * @name DisableTabs\r
+                * @description Disable tabs in textareas\r
+                *\r
+                * @type jQuery\r
+                * @cat Plugins/Interface\r
+                * @author Stefan Petre\r
+                */\r
+               DisableTabs : jQuery.iTTabs.destroy\r
+       }\r
+);
\ No newline at end of file