[SPIP] +spip v3.0.17
[lhc/web/clavette_www.git] / www / prive / javascript / spip_barre.js
1 // Barre de raccourcis
2 // derive du:
3 // bbCode control by subBlue design : www.subBlue.com
4
5 // Startup variables
6 var theSelection = false;
7
8 // Check for Browser & Platform for PC & IE specific bits
9 // More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
10 var clientPC = navigator.userAgent.toLowerCase(); // Get client info
11 var clientVer = parseInt(navigator.appVersion); // Get browser version
12
13 var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
14 var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
15 && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
16 && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
17 var is_moz = 0;
18
19 var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
20 var is_mac = (clientPC.indexOf("mac")!=-1);
21
22
23
24 function barre_inserer(text,champ) {
25 var txtarea = champ;
26 if( document.selection ){
27 txtarea.focus();
28 var r = document.selection.createRange();
29 if (r == null) {
30 txtarea.selectionStart = txtarea.value.length;
31 txtarea.selectionEnd = txtarea.selectionStart;
32 }
33 else {
34 var re = txtarea.createTextRange();
35 var rc = re.duplicate();
36 re.moveToBookmark(r.getBookmark());
37 rc.setEndPoint('EndToStart', re);
38 txtarea.selectionStart = rc.text.length;
39 txtarea.selectionEnd = rc.text.length + r.text.length;
40 }
41 }
42 mozWrap(txtarea, '', text);
43 }
44
45
46 // Shows the help messages in the helpline window
47 function helpline(help, champ) {
48 champ.value = help;
49 }
50
51
52 function setCaretToEnd (input) {
53 setSelectionRange(input, input.value.length, input.value.length);
54 }
55
56
57 function setSelectionRange(input, selectionStart, selectionEnd) {
58 if (input.setSelectionRange) {
59 input.focus();
60 input.setSelectionRange(selectionStart, selectionEnd);
61 }
62 else if (input.createTextRange) {
63 var range = input.createTextRange();
64 range.collapse(true);
65 range.moveEnd('character', selectionEnd);
66 range.moveStart('character', selectionStart);
67 range.select();
68 }
69 }
70
71 // From http://www.massless.org/mozedit/
72 function mozWrap(txtarea, open, close)
73 {
74 var selLength = txtarea.textLength;
75 var selStart = txtarea.selectionStart;
76 var selEnd = txtarea.selectionEnd;
77 if (selEnd == 1 || selEnd == 2)
78 selEnd = selLength;
79 var selTop = txtarea.scrollTop;
80
81 // Raccourcir la selection par double-clic si dernier caractere est espace
82 if (selEnd - selStart > 0 && (txtarea.value).substring(selEnd-1,selEnd) == ' ') selEnd = selEnd-1;
83
84 var s1 = (txtarea.value).substring(0,selStart);
85 var s2 = (txtarea.value).substring(selStart, selEnd)
86 var s3 = (txtarea.value).substring(selEnd, selLength);
87
88 // Eviter melange bold-italic-intertitre
89 if ((txtarea.value).substring(selEnd,selEnd+1) == '}' && close.substring(0,1) == "}") close = close + " ";
90 if ((txtarea.value).substring(selEnd-1,selEnd) == '}' && close.substring(0,1) == "}") close = " " + close;
91 if ((txtarea.value).substring(selStart-1,selStart) == '{' && open.substring(0,1) == "{") open = " " + open;
92 if ((txtarea.value).substring(selStart,selStart+1) == '{' && open.substring(0,1) == "{") open = open + " ";
93
94 txtarea.value = s1 + open + s2 + close + s3;
95 selDeb = selStart + open.length;
96 selFin = selEnd + close.length;
97 window.setSelectionRange(txtarea, selDeb, selFin);
98 txtarea.scrollTop = selTop;
99 txtarea.focus();
100
101 return;
102 }
103
104 // Insert at Claret position. Code from
105 // http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
106 function storeCaret (textEl) {
107 if (textEl.createTextRange)
108 textEl.caretPos = document.selection.createRange().duplicate();
109 }
110