Salome HOME
*** empty log message ***
[modules/smesh.git] / doc / salome / gui / SMESH / whutils.js
1 //      WebHelp 5.10.004\r
2 var gsFileName="";\r
3 var gsDivName="";\r
4 var xmlDoc=null;\r
5 var sdocPath=null;\r
6 var gsInsertBeforeEndHTML="";\r
7 var sReplaceStringsSrc=new Array();\r
8 var gsDivName="dataDiv";\r
9 var gnLoadDivNum=0;\r
10 sReplaceStringsSrc[0]="&";\r
11 sReplaceStringsSrc[1]=">";\r
12 sReplaceStringsSrc[2]="<";\r
13 sReplaceStringsSrc[3]=""";\r
14 sReplaceStringsSrc[4]=String.fromCharCode(8364);\r
15 sReplaceStringsSrc[5]=" ";\r
16 \r
17 var sReplaceStringsDst=new Array();\r
18 sReplaceStringsDst[0]="&";\r
19 sReplaceStringsDst[1]=">";\r
20 sReplaceStringsDst[2]="<";\r
21 sReplaceStringsDst[3]="\"";\r
22 sReplaceStringsDst[4]=String.fromCharCode(128);\r
23 sReplaceStringsDst[5]=" ";\r
24 var goHighLighted=null;\r
25 \r
26 function _getRelativePath(strParentPath,strCurrentPath)\r
27 {\r
28         if(_isAbsPath(strCurrentPath)) return _getPath(strCurrentPath);\r
29         strParentPath=_replaceSlash(strParentPath);\r
30         strParentPath=_getPath(strParentPath);\r
31         strCurrentPath=_replaceSlash(strCurrentPath);\r
32         strCurrentPath=_getPath(strCurrentPath);\r
33         for(var i=0;i<strParentPath.length&&i<strCurrentPath.length;i++)\r
34         {\r
35                 if(strParentPath.charAt(i)!=strCurrentPath.charAt(i))\r
36                         break;\r
37         }\r
38         \r
39         strParentPath=strParentPath.substring(i);\r
40         strCurrentPath=strCurrentPath.substring(i);     \r
41         \r
42         var nPathPos=0;\r
43         while(nPathPos!=-1)\r
44         {\r
45                 nPathPos=strParentPath.indexOf("/");\r
46                 if(nPathPos!=-1)\r
47                 {\r
48                         strParentPath=strParentPath.substring(nPathPos+1);\r
49                         strCurrentPath="../"+strCurrentPath;\r
50                 }\r
51         }\r
52         return strCurrentPath;\r
53 }\r
54 \r
55 function _getRelativeFileName(strParentPath,strCurrentPath)\r
56 {\r
57         strParentPath=_replaceSlash(strParentPath);\r
58         strParentPath=_getPath(strParentPath);\r
59         strCurrentPath=_replaceSlash(strCurrentPath);\r
60         for(var i=0;i<strParentPath.length&&i<strCurrentPath.length;i++)\r
61         {\r
62                 if(strParentPath.charAt(i)!=strCurrentPath.charAt(i))\r
63                         break;\r
64         }\r
65         \r
66         strParentPath=strParentPath.substring(i);\r
67         strCurrentPath=strCurrentPath.substring(i);     \r
68         \r
69         var nPathPos=0;\r
70         while(nPathPos!=-1)\r
71         {\r
72                 nPathPos=strParentPath.indexOf("/");\r
73                 if(nPathPos!=-1)\r
74                 {\r
75                         strParentPath=strParentPath.substring(nPathPos+1);\r
76                         strCurrentPath="../"+strCurrentPath;\r
77                 }\r
78         }\r
79         return strCurrentPath;\r
80 }\r
81 \r
82 function _isAbsPathToHost(sPath)\r
83 {\r
84         return (sPath.indexOf("/")==0);\r
85 }\r
86 \r
87 function _getHost(sPath)\r
88 {\r
89         var nPos=sPath.indexOf("//");\r
90         if(nPos>0)\r
91         {\r
92                 var nPosx=sPath.indexOf("/",nPos+2);\r
93                 if(nPosx>0)\r
94                         return sPath.substring(0,nPosx);\r
95                 else\r
96                         return sPath;\r
97         }\r
98         return sPath;\r
99 }\r
100 \r
101 function _getFullPath(sPath,sRelPath)\r
102 {\r
103         if(_isAbsPath(sRelPath))\r
104                 return sRelPath;\r
105         else if(_isAbsPathToHost(sRelPath))\r
106                 return _getHost(sPath)+sRelPath;\r
107         else\r
108         {\r
109                 var sFullPath=sPath;\r
110                 var nPathPos=0;\r
111                 while(nPathPos!=-1)\r
112                 {\r
113                         var nPathPos=sRelPath.indexOf("../");\r
114                         if(nPathPos!=-1)\r
115                         {\r
116                                 sRelPath=sRelPath.substring(nPathPos+3);\r
117                                 sFullPath=sFullPath.substring(0,sFullPath.length-1);\r
118                                 var nPos2=sFullPath.lastIndexOf("/");\r
119                                 if(nPos2!=-1)\r
120                                         sFullPath=sFullPath.substring(0,nPos2+1);\r
121                                 else\r
122                                         break;\r
123                         }\r
124                 }\r
125                 sFullPath+=sRelPath;\r
126                 return sFullPath;\r
127         }       \r
128 }\r
129 \r
130 function _isAbsPath(strPath)\r
131 {\r
132         var strUpper=strPath.toUpperCase();\r
133         return (strUpper.indexOf(":")!=-1||strUpper.indexOf("\\\\")==0);\r
134 }\r
135 \r
136 function _replaceSlash(strURL)\r
137 {       \r
138         var re=new RegExp("\\\\","g");\r
139         var strReplacedURL=strURL.replace(re,"/");\r
140         return strReplacedURL;\r
141 }\r
142 \r
143 function _getPath(strURL)\r
144 {\r
145         pathpos=strURL.lastIndexOf("/");\r
146         if(pathpos>0)\r
147                 return strURL.substring(0,pathpos+1);\r
148         else\r
149                 return "";\r
150 }\r
151 \r
152 function removeItemFromArray(oArray,i)\r
153 {\r
154         if(oArray.length&&i>=0&&i<oArray.length)\r
155         {\r
156                 var len=oArray.length;\r
157                 for(var s=i;s<len-1;s++)\r
158                         oArray[s]=oArray[s+1];\r
159                 oArray.length=len-1;\r
160         }\r
161 }\r
162 \r
163 function insertItemIntoArray(oArray,i,obj)\r
164 {\r
165         if(oArray.length&&i>=0&&i<=oArray.length)\r
166         {\r
167                 var len=oArray.length;\r
168                 for(var s=len;s>i;s--)\r
169                         oArray[s]=oArray[s-1];\r
170                 oArray[i]=obj;          \r
171         }\r
172 }\r
173 \r
174 function loadData(sFileName)\r
175 {\r
176         var i=gnLoadDivNum;\r
177         var sName=gsDivName+gnLoadDivNum++;\r
178         loadData_2(sFileName,sName);\r
179 }\r
180 \r
181 function loadData_2(sFileName,sDivName)\r
182 {\r
183         if(!getElement(sDivName))\r
184         {\r
185                 if(!insertDataDiv(sDivName))\r
186                 {\r
187                         gsFileName=sFileName;\r
188                         gsDivName=sDivName;\r
189                         return;\r
190                 }\r
191         }\r
192         var sHTML="";\r
193         if(gbMac)\r
194                 sHTML+="<iframe src=\""+sFileName+"\"></iframe>";\r
195         else\r
196                 sHTML+="<iframe style=\"visibility:hidden;width:0;height:0\" src=\""+sFileName+"\"></iframe>";\r
197         \r
198         var oDivCon=getElement(sDivName);\r
199         if(oDivCon)\r
200         {\r
201                 if(gbNav6)\r
202                 {\r
203                         if(oDivCon.getElementsByTagName&&oDivCon.getElementsByTagName("iFrame").length>0)\r
204                         {\r
205                                 oDivCon.getElementsByTagName("iFrame")[0].src=sFileName;\r
206                         }\r
207                         else\r
208                                 oDivCon.innerHTML=sHTML;\r
209                 }\r
210                 else\r
211                         oDivCon.innerHTML=sHTML;\r
212         }\r
213 }\r
214 \r
215 function loadDataXML(sFileName)\r
216 {\r
217         var sCurrentDocPath=_getPath(document.location.href);\r
218         sdocPath=_getFullPath(sCurrentDocPath,sFileName);\r
219         if(gbIE5)\r
220         {\r
221                 xmlDoc=new ActiveXObject("Microsoft.XMLDOM");\r
222                 xmlDoc.async=true;\r
223                 xmlDoc.onreadystatechange=checkState;\r
224                 if(document.body!=null)\r
225                         xmlDoc.load(sdocPath);\r
226         }\r
227         else if(gbNav6)\r
228         {\r
229                 xmlDoc=document.implementation.createDocument("","",null);\r
230                 xmlDoc.addEventListener("load",initializeData,false);\r
231                 xmlDoc.load(sdocPath,"text/xml");\r
232         }\r
233 }\r
234 \r
235 function initializeData()\r
236 {\r
237         if(xmlDoc!=null)\r
238                 putDataXML(xmlDoc,sdocPath);\r
239 }\r
240 \r
241 function checkState()\r
242 {\r
243         if(xmlDoc!=null)\r
244         {\r
245                 var state=xmlDoc.readyState;\r
246                 if(state==4)\r
247                 {\r
248                         var err=xmlDoc.parseError;\r
249                         if(err.errorCode==0)\r
250                                 putDataXML(xmlDoc,sdocPath);\r
251                         else\r
252                                 onLoadXMLError();\r
253                 }\r
254         }\r
255 }\r
256 \r
257 function insertDataDiv(sName)\r
258 {\r
259         var sHTML="";\r
260         if(gbMac)\r
261                 sHTML+="<div id="+sName+" style=\"display:none;\"></div>";\r
262         else\r
263                 sHTML+="<div id="+sName+" style=\"visibility:hidden\"></div>";\r
264         if((gbIE5||gbNav6)&&document.body)\r
265                 document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
266         else\r
267         {\r
268                 gsInsertBeforeEndHTML=sHTML;\r
269                 setTimeout("insertWhenBodyReady();",100);\r
270                 return false;\r
271         }\r
272         return true;\r
273 }\r
274 \r
275 function insertWhenBodyReady()\r
276 {\r
277         if(gsInsertBeforeEndHTML=="") return;\r
278         if(document.body)\r
279         {\r
280                 document.body.insertAdjacentHTML("beforeEnd",gsInsertBeforeEndHTML);\r
281                 gsInsertBeforeEndHTML="";\r
282                 loadData_2(gsFileName,gsDivName);\r
283         }\r
284         else\r
285         {\r
286                 setTimeout("insertWhenBodyReady();",100);\r
287         }\r
288 }\r
289 \r
290 function window_BUnload()\r
291 {\r
292         for(var i=0;i<gnLoadDivNum;i++)\r
293         {\r
294                 var oDivCon=getElement(gsDivName+i);\r
295                 if(oDivCon)\r
296                         oDivCon.innerHTML="";\r
297         }\r
298 }\r
299 \r
300 function removeThis(obj)\r
301 {\r
302         if(obj.parentNode)\r
303                 obj.parentNode.removeChild(obj);\r
304         else\r
305                 obj.outerHTML="";\r
306 }\r
307 \r
308 function getParentNode(obj)\r
309 {\r
310         if(obj.parentNode)\r
311                 return obj.parentNode;\r
312         else if(obj.parentElement)\r
313                 return obj.parentElement;\r
314         return null;\r
315 }\r
316 \r
317 function getElement(sID)\r
318 {\r
319         if(document.getElementById)\r
320                 return document.getElementById(sID);\r
321         else if(document.all)\r
322                 return document.all(sID);\r
323         return null;\r
324 }\r
325 \r
326 function getChildrenByTag(obj,sTagName)\r
327 {\r
328         if(obj.getElementsByTagName)\r
329         {\r
330                 var aChildren=new Array();\r
331                 var aElements=getElementsByTag(obj,sTagName);\r
332                 if(aElements!=null)\r
333                 {\r
334                         for(var i=0;i<aElements.length;i++)\r
335                         {\r
336                                 if(aElements[i].parentNode==obj)\r
337                                         aChildren[aChildren.length]=aElements[i];\r
338                         }\r
339                         return aChildren;\r
340                 }\r
341                 else\r
342                         return new Array();\r
343         }\r
344         else if(obj.children)\r
345                 return obj.children.tags(sTagName);\r
346 }\r
347 \r
348 function getElementsByTag(obj,sTagName)\r
349 {\r
350         if(obj.getElementsByTagName)\r
351                 return obj.getElementsByTagName(sTagName);\r
352         else if(obj.all)\r
353                 return obj.all.tags(sTagName);\r
354         return null;\r
355 }\r
356 \r
357 function _htmlToText(sHTML)\r
358 {\r
359         if(sHTML==null) return null;\r
360         var sText=sHTML;\r
361         for(var i=0;i<sReplaceStringsSrc.length;i++)\r
362         {\r
363                 var re=new RegExp(sReplaceStringsSrc[i],"g");\r
364                 sText=sText.replace(re,sReplaceStringsDst[i]);\r
365         }       \r
366         return sText;\r
367 }\r
368 \r
369 function _textToHtml_nonbsp(sText)\r
370 {\r
371         if(sText==null) return null;\r
372         var sHTML=sText;\r
373         for(var i=0;i<sReplaceStringsSrc.length-1;i++)\r
374         {\r
375                 var re=new RegExp(sReplaceStringsDst[i],"g");\r
376                 sHTML=sHTML.replace(re,sReplaceStringsSrc[i]);\r
377         }       \r
378         return sHTML;\r
379 }\r
380 \r
381 function _textToHtml(sText)\r
382 {\r
383         if(sText==null) return null;\r
384         var sHTML=sText;\r
385         for(var i=0;i<sReplaceStringsSrc.length;i++)\r
386         {\r
387                 var re=new RegExp(sReplaceStringsDst[i],"g");\r
388                 sHTML=sHTML.replace(re,sReplaceStringsSrc[i]);\r
389         }       \r
390         return sHTML;\r
391 }\r
392 \r
393 \r
394 function getInnerText(obj)\r
395 {\r
396         var renbsp2sp=new RegExp("\xa0","g");\r
397         if(obj.innerText)\r
398         {\r
399                 var sText=obj.innerText;\r
400                 sText=sText.replace(renbsp2sp," ");\r
401                 return sText;\r
402         }\r
403         else\r
404         {\r
405                 if(obj.nodeValue)\r
406                 {\r
407                         var sValue=obj.nodeValue;\r
408                         sValue=sValue.replace(renbsp2sp," ");\r
409                         return sValue;\r
410                 }\r
411                 else\r
412                 {\r
413                         var sText="";\r
414                         var oChild=obj.firstChild;\r
415                         while(oChild!=null)\r
416                         {\r
417                                 sText+=getInnerText(oChild);\r
418                                 oChild=oChild.nextSibling;\r
419                         }\r
420                         return sText;\r
421                 }\r
422         }\r
423                 \r
424 }\r
425 \r
426 function HighLightElement(obj,sHighLightColor,sNormalColor)\r
427 {\r
428         if(obj!=null)\r
429         {\r
430                 resetHighLight(sNormalColor);\r
431                 if (obj.style)\r
432                         obj.style.backgroundColor=sHighLightColor;\r
433                 goHighLighted=obj;\r
434         }\r
435 }\r
436 \r
437 function resetHighLight(sNormalColor)\r
438 {\r
439         if(goHighLighted!=null)\r
440         {\r
441                 if (goHighLighted.style)\r
442                         goHighLighted.style.backgroundColor=sNormalColor;\r
443                 goHighLighted=null;\r
444         }\r
445 }\r
446 \r
447 function whFont(sName,sSize,sColor,sStyle,sWeight,sDecoration)\r
448 {\r
449         this.sName=sName;\r
450         this.sSize=sSize;\r
451         this.sColor=sColor;\r
452         this.sStyle=sStyle;\r
453         this.sWeight=sWeight;\r
454         this.sDecoration=sDecoration;\r
455 }\r
456 \r
457 function getFontStyle(oFont)\r
458 {\r
459         var sStyle="";\r
460         if(oFont)\r
461         {\r
462                 sStyle+="font-family:"+oFont.sName+";";\r
463                 if(gbMac)\r
464                 {\r
465                         var nSize=parseInt(oFont.sSize);\r
466                         if(gbIE5)\r
467                                 nSize+=2;\r
468                         else\r
469                                 nSize+=4;\r
470                         sStyle+="font-size:"+nSize+"pt;";\r
471                 }\r
472                 else\r
473                         sStyle+="font-size:"+oFont.sSize+";";\r
474                         \r
475                 sStyle+="font-style:"+oFont.sStyle+";";\r
476                 sStyle+="font-weight:"+oFont.sWeight+";";\r
477                 sStyle+="text-decoration:"+oFont.sDecoration+";";\r
478                 sStyle+="color:"+oFont.sColor+";";\r
479         }\r
480         return sStyle;\r
481 }\r
482 \r
483 function _browserStringToText(sBStr)\r
484 {\r
485         var sText="";\r
486         // change %xxx back to the real char.\r
487         var nPos=sBStr.indexOf('%');\r
488         while(nPos!=-1)\r
489         {\r
490                 sText+=sBStr.substring(0,nPos);\r
491                 sBStr=sBStr.substring(nPos+1);\r
492                 var sNum="";\r
493                 var i=0;\r
494                 while(sBStr.charAt(i)>='0'&&sBStr.charAt(i)<='9')\r
495                 {\r
496                         sNum+=sBStr.charAt(i++);        \r
497                 }\r
498                 if(sNum!=""){\r
499                         var nNum=parseInt(sNum,16);\r
500                         sText+=String.fromCharCode(nNum);\r
501                         sBStr=sBStr.substring(i);\r
502                 }\r
503                 nPos=sBStr.indexOf('%');\r
504         }\r
505         sText+=sBStr;\r
506         return sText;\r
507 }\r
508 \r
509 function excapeSingleQuotandSlash(str)\r
510 {\r
511         if(str==null) return null;\r
512         var nPos=0;\r
513         var sRes="";\r
514         var nPosNew=str.indexOf("\\",nPos);\r
515         while(nPosNew!=-1){\r
516                 sRes+=str.substring(nPos,nPosNew+1)+"\\";\r
517                 nPos=nPosNew+1;\r
518                 nPosNew=str.indexOf("\\",nPos);\r
519         }\r
520         if(nPos<str.length)\r
521                 sRes+=str.substring(nPos);\r
522         var re=new RegExp("'","g");\r
523         sRes=sRes.replace(re,"\\'");\r
524         return sRes;\r
525 }\r
526 \r
527 var gbWhUtil=true;