[SPIP] +2.1.12
[velocampus/web/www.git] / www / prive / javascript / spip_barre.js
diff --git a/www/prive/javascript/spip_barre.js b/www/prive/javascript/spip_barre.js
new file mode 100644 (file)
index 0000000..f993f7a
--- /dev/null
@@ -0,0 +1,110 @@
+// Barre de raccourcis
+// derive du:
+// bbCode control by subBlue design : www.subBlue.com
+
+// Startup variables
+var theSelection = false;
+
+// Check for Browser & Platform for PC & IE specific bits
+// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
+var clientPC = navigator.userAgent.toLowerCase(); // Get client info
+var clientVer = parseInt(navigator.appVersion); // Get browser version
+
+var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
+var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
+                && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
+                && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
+var is_moz = 0;
+
+var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
+var is_mac = (clientPC.indexOf("mac")!=-1);
+
+
+
+function barre_inserer(text,champ) {
+       var txtarea = champ;
+       if( document.selection ){
+               txtarea.focus();
+               var r = document.selection.createRange();
+               if ((r == null) || (typeof(r.selectionStart) == "undefined")) {
+                       txtarea.selectionStart = txtarea.value.length;
+                       txtarea.selectionEnd = txtarea.selectionStart;
+               }
+               else {
+                       var re = txtarea.createTextRange();
+                       var rc = re.duplicate();
+                       re.moveToBookmark(r.getBookmark());
+                       rc.setEndPoint('EndToStart', re);
+                       txtarea.selectionStart = rc.text.length;
+                       txtarea.selectionEnd = rc.text.length + r.text.length;
+               }
+       } 
+       mozWrap(txtarea, '', text);
+}
+
+
+// Shows the help messages in the helpline window
+function helpline(help, champ) {
+       champ.value = help;
+}
+
+
+function setCaretToEnd (input) {
+  setSelectionRange(input, input.value.length, input.value.length);
+}
+
+
+function setSelectionRange(input, selectionStart, selectionEnd) {
+  if (input.setSelectionRange) {
+    input.focus();
+    input.setSelectionRange(selectionStart, selectionEnd);
+  }
+  else if (input.createTextRange) {
+    var range = input.createTextRange();
+    range.collapse(true);
+    range.moveEnd('character', selectionEnd);
+    range.moveStart('character', selectionStart);
+    range.select();
+  }
+}
+
+// From http://www.massless.org/mozedit/
+function mozWrap(txtarea, open, close)
+{
+       var selLength = txtarea.textLength;
+       var selStart = txtarea.selectionStart;
+       var selEnd = txtarea.selectionEnd;
+       if (selEnd == 1 || selEnd == 2)
+               selEnd = selLength;
+       var selTop = txtarea.scrollTop;
+
+       // Raccourcir la selection par double-clic si dernier caractere est espace      
+       if (selEnd - selStart > 0 && (txtarea.value).substring(selEnd-1,selEnd) == ' ') selEnd = selEnd-1;
+       
+       var s1 = (txtarea.value).substring(0,selStart);
+       var s2 = (txtarea.value).substring(selStart, selEnd)
+       var s3 = (txtarea.value).substring(selEnd, selLength);
+
+       // Eviter melange bold-italic-intertitre
+       if ((txtarea.value).substring(selEnd,selEnd+1) == '}' && close.substring(0,1) == "}") close = close + " ";
+       if ((txtarea.value).substring(selEnd-1,selEnd) == '}' && close.substring(0,1) == "}") close = " " + close;
+       if ((txtarea.value).substring(selStart-1,selStart) == '{' && open.substring(0,1) == "{") open = " " + open;
+       if ((txtarea.value).substring(selStart,selStart+1) == '{' && open.substring(0,1) == "{") open = open + " ";
+
+       txtarea.value = s1 + open + s2 + close + s3;
+       selDeb = selStart + open.length;
+       selFin = selEnd + close.length;
+       window.setSelectionRange(txtarea, selDeb, selFin);
+       txtarea.scrollTop = selTop;
+       txtarea.focus();
+       
+       return;
+}
+
+// Insert at Claret position. Code from
+// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
+     function storeCaret (textEl) {
+       if (textEl.createTextRange) 
+         textEl.caretPos = document.selection.createRange().duplicate();
+     }
+