1 // Common Javascript support functions.
4 var data_path = '/phpwiki';
5 var pagename = 'HomePage';
6 var script_url= '/wiki';
7 var stylepath = data_path+'/themes/MonoBook/';
8 var folderArrowPath = data_path+'/themes/default/images';
9 var use_path_info = true;
12 function escapeQuotes(text) {
13 var re=new RegExp("'","g");
14 text=text.replace(re,"\\'");
15 re=new RegExp('"',"g");
16 text=text.replace(re,'"');
17 re=new RegExp("\\n","g");
18 text=text.replace(re,"\\n");
22 function WikiURL(page) {
23 if (typeof page == "undefined")
26 return script_url + '/' + escapeQuotes(page) + '?';
28 return script_url + '?pagename=' + escapeQuotes(page) + '&';
32 function flipAll(formObj) {
34 for (var i=0; i < formObj.length; i++) {
35 fldObj = formObj.elements[i];
36 if ((fldObj.type == 'checkbox') && (fldObj.name.substring(0,2) == 'p[')) {
38 isFirstSet = (fldObj.checked) ? true : false;
39 fldObj.checked = (isFirstSet) ? false : true;
44 function toggletoc(a, open, close, toclist) {
45 var toc=document.getElementById(toclist)
46 if (toc.style.display=='none') {
47 toc.style.display='block'
48 a.title='"._("Click to hide the TOC")."'
51 toc.style.display='none';
52 a.title='"._("Click to display")."'
57 // Global external objects used by this script.
58 /*extern ta, stylepath, skin */
60 // add any onload functions in this hook (please don't hard-code any events in the xhtml source)
63 if (!window.onloadFuncts) {
64 var onloadFuncts = [];
67 function addOnloadHook(hookFunct) {
68 // Allows add-on scripts to add onload functions
69 onloadFuncts[onloadFuncts.length] = hookFunct;
72 function hookEvent(hookName, hookFunct) {
73 if (window.addEventListener) {
74 window.addEventListener(hookName, hookFunct, false);
75 } else if (window.attachEvent) {
76 window.attachEvent("on" + hookName, hookFunct);
80 // Todo: onloadhook to re-establish folder state in pure js, no cookies. same for toc.
81 function showHideFolder(id) {
82 var div = document.getElementById(id+'-body');
83 if ( div == null) return;
84 var img = document.getElementById(id+'-img');
85 var expires = new Date(); // 30 days
86 expires.setTime(expires.getTime() + (30 * 24 * 60 * 60 * 1000));
87 var suffix = " expires="+expires.toGMTString(); //+"; path="+data_path;
88 //todo: invalidate cache header
89 if ( div.style.display == 'none' ) {
90 div.style.display = 'block';
91 img.src = folderArrowPath + '/folderArrowOpen.png';
92 document.cookie = "folder_"+id+"=Open;"+suffix;
94 div.style.display = 'none';
95 img.src = folderArrowPath + '/folderArrowClosed.png';
96 document.cookie = "folder_"+id+"=Closed;"+suffix;
100 function setupshowHideFolder() {
101 var ids = ["p-tb", "p-tbx", "p-tags", "p-rc" /*,"toc"*/];
102 for (var i = 0; i < ids.length; i++) {
105 var cookieStr = "folder_"+id+"=";
106 var cookiePos = document.cookie.indexOf(cookieStr);
107 if (cookiePos > -1) {
108 var body = document.getElementById(id+'-body');
109 if (body) body.style.display = document.cookie.charAt(cookiePos + cookieStr.length) == "C" ? 'block' : 'none';
116 hookEvent("load", setupshowHideFolder);
118 function runOnloadHook() {
119 // don't run anything below this for non-dom browsers
120 if (doneOnloadHook || !(document.getElementById && document.getElementsByTagName)) {
124 // set this before running any hooks, since any errors below
125 // might cause the function to terminate prematurely
126 doneOnloadHook = true;
130 // Run any added-on functions
131 for (var i = 0; i < onloadFuncts.length; i++) {
136 //note: all skins should call runOnloadHook() at the end of html output,
137 // so the below should be redundant. It's there just in case.
138 hookEvent("load", runOnloadHook);
140 //hookEvent("load", mwSetupToolbar);
142 // This script was provided for free by
143 // http://www.howtocreate.co.uk/tutorials/javascript/domcss
144 // See http://www.howtocreate.co.uk/jslibs/termsOfUse.html
145 function getAllSheets() {
146 if( !window.ScriptEngine && navigator.__ice_version ) { return document.styleSheets; }
147 if( document.getElementsByTagName ) { var Lt = document.getElementsByTagName('link'), St = document.getElementsByTagName('style');
148 } else if( document.styleSheets && document.all ) { var Lt = document.all.tags('LINK'), St = document.all.tags('STYLE');
149 } else { return []; } for( var x = 0, os = []; Lt[x]; x++ ) {
150 var rel = Lt[x].rel ? Lt[x].rel : Lt[x].getAttribute ? Lt[x].getAttribute('rel') : '';
151 if( typeof( rel ) == 'string' && rel.toLowerCase().indexOf('style') + 1 ) { os[os.length] = Lt[x]; }
152 } for( var x = 0; St[x]; x++ ) { os[os.length] = St[x]; } return os;
154 function changeStyle() {
155 for( var x = 0, ss = getAllSheets(); ss[x]; x++ ) {
156 if( ss[x].title ) { ss[x].disabled = true; }
157 for( var y = 0; y < arguments.length; y++ ) {
158 if( ss[x].title == arguments[y] ) { ss[x].disabled = false; }
160 function PrinterStylesheet() {
161 changeStyle('Printer');