AC_4897, AC_4898, AC_4899: Multifile uploader fixes.
[acontent.git] / include / jscripts / transformable.js
1 // ************************************************************************\r
2 // * Transformable                                                        *\r
3 // ************************************************************************\r
4 // * Copyright (c) 2009                                                   *\r
5 // * Adaptive Technology Resource Centre / University of Toronto          *\r
6 // *                                                                      *\r
7 // * This program is free software. You can redistribute it and/or        *\r
8 // * modify it under the terms of the GNU General Public License          *\r
9 // * as published by the Free Software Foundation.                        *\r
10 // ************************************************************************\r
11 \r
12 var trans = trans || {};\r
13 trans.utility = trans.utility || {};\r
14 trans.course = trans.course || {};\r
15 trans.editor = trans.editor || {};\r
16 trans.newwindow;\r
17 trans.utility.selected;\r
18 \r
19 (function() {\r
20   /**\r
21    * pops up a 600 * 600 new window\r
22    */\r
23   trans.utility.poptastic = function (url) {\r
24     var newwindow=window.open(url,'popup','height=600,width=600,scrollbars=yes,resizable=yes');\r
25     if (window.focus) {newwindow.focus()}\r
26   };\r
27 //      ATutor.poptastic = function (url) {\r
28 //              var newwindow=window.open(url,'popup','height=600,width=600,scrollbars=yes,resizable=yes');\r
29 //              if (window.focus) {\r
30 //                      newwindow.focus();\r
31 //              }\r
32 //      };\r
33 \r
34   trans.utility.getexpirydate = function (nodays){\r
35     var UTCstring;\r
36     Today = new Date();\r
37     nomilli=Date.parse(Today);\r
38     Today.setTime(nomilli+nodays*24*60*60*1000);\r
39     UTCstring = Today.toUTCString();\r
40     return UTCstring;\r
41   };\r
42   \r
43   /**\r
44    * set cookie value and expiry\r
45    */\r
46   trans.utility.setcookie = function (name,value,duration){\r
47     cookiestring=name+"="+escape(value)+";path=/;expires="+trans.utility.getexpirydate(duration);\r
48     document.cookie=cookiestring;\r
49     if(!trans.utility.getcookie(name)){\r
50       return false;\r
51     } else {\r
52       return true;\r
53     }\r
54   };\r
55   \r
56   /**\r
57    * get cookie value\r
58    */\r
59   trans.utility.getcookie = function (cookiename) {\r
60     var cookiestring=""+document.cookie;\r
61     var index1=cookiestring.indexOf(cookiename);\r
62     if (index1==-1 || cookiename=="") return ""; \r
63     var index2=cookiestring.indexOf(';',index1);\r
64     if (index2==-1) index2=cookiestring.length; \r
65     return unescape(cookiestring.substring(index1+cookiename.length+1,index2));\r
66   };\r
67   \r
68   trans.utility.setDisplay = function (objId) {\r
69     var toc = document.getElementById(objId);\r
70   \r
71     var state = trans.utility.getcookie(objId);\r
72     if (document.getElementById(objId) && state && (state == 'none')) {\r
73       trans.utility.toggleToc(objId);\r
74     }\r
75   };\r
76   \r
77   trans.utility.setstates = function () {\r
78     return;\r
79     var objId = "side-menu";\r
80     var state = trans.utility.getcookie(objId);\r
81     if (document.getElementById(objId) && state && (state == 'none')) {\r
82       trans.utility.toggleToc(objId);\r
83     }\r
84   \r
85     var objId = "toccontent";\r
86     var state = trans.utility.getcookie(objId);\r
87     if (document.getElementById(objId) && state && (state == 'none')) {\r
88       trans.utility.toggleToc(objId);\r
89     }\r
90   };\r
91   \r
92   trans.utility.showTocToggle = function (objId, show, hide, key, selected) {\r
93     if(document.getElementById) {\r
94       if (key) {\r
95         var accesskey = " accesskey='" + key + "' title='"+ show + "/" + hide + " Alt - "+ key +"'";\r
96       } else {\r
97         var accesskey = "";\r
98       }\r
99   \r
100       if (selected == 'hide') {\r
101         document.writeln('<a href="javascript:trans.utility.toggleToc(\'' + objId + '\')" ' + accesskey + '>' +\r
102         '<span id="' + objId + 'showlink" style="display:none;">' + show + '</span>' +\r
103         '<span id="' + objId + 'hidelink">' + hide + '</span>'  + '</a>');\r
104       } else {\r
105         document.writeln('<a href="javascript:trans.utility.toggleToc(\'' + objId + '\')" ' + accesskey + '>' +\r
106         '<span id="' + objId + 'showlink">' + show + '</span>' +\r
107         '<span id="' + objId + 'hidelink" style="display:none;">' + hide + '</span>'  + '</a>');\r
108       }\r
109     }\r
110   };\r
111   \r
112   trans.utility.toggleToc = function (objId) {\r
113     var toc = document.getElementById(objId);\r
114     if (toc == null) {\r
115       return;\r
116     }\r
117     var showlink=document.getElementById(objId + 'showlink');\r
118     var hidelink=document.getElementById(objId + 'hidelink');\r
119   \r
120     if (hidelink.style.display == 'none') {\r
121       document.getElementById('contentcolumn').id="contentcolumn_shiftright";\r
122       jQuery("[id="+objId+"]").slideDown("slow");\r
123       hidelink.style.display='';\r
124       showlink.style.display='none';\r
125     } else {\r
126       document.getElementById('contentcolumn_shiftright').id="contentcolumn";\r
127       jQuery("[id="+objId+"]").slideUp("slow");\r
128       hidelink.style.display='none';\r
129       showlink.style.display='';\r
130     }\r
131     trans.utility.setcookie(objId, hidelink.style.display, 1);\r
132   };\r
133   \r
134   // toggle a div, for example "create user group" => "add privileges" section\r
135   trans.utility.toggleDiv = function (objId) {\r
136     var toc = document.getElementById(objId);\r
137     if (toc == null) return;\r
138   \r
139     if (toc.style.display == 'none')\r
140     {\r
141       toc.style.display = '';\r
142       document.getElementById("toggle_image").src = "images/arrow-open.png";\r
143       document.getElementById("toggle_image").alt = "Collapse";\r
144       document.getElementById("toggle_image").title = "Collapse";\r
145     }\r
146     else\r
147     {\r
148       toc.style.display = 'none';\r
149       document.getElementById("toggle_image").src = "images/arrow-closed.png";\r
150       document.getElementById("toggle_image").alt = "Expand";\r
151       document.getElementById("toggle_image").title = "Expand";\r
152     }\r
153   };\r
154   \r
155   // toggle content folder in side menu "content navigation"\r
156   trans.utility.toggleFolder = function (cid, expand_text, collapse_text, course_id)\r
157   {\r
158     if (jQuery("#tree_icon"+cid).attr("src") == tree_collapse_icon) {\r
159       jQuery("#tree_icon"+cid).attr("src", tree_expand_icon);\r
160       jQuery("#tree_icon"+cid).attr("alt", expand_text);\r
161       jQuery("#tree_icon"+cid).attr("title", expand_text);\r
162       trans.utility.setcookie("t.c"+course_id+"_"+cid, null, 1);\r
163     }\r
164     else {\r
165       jQuery("#tree_icon"+cid).attr("src", tree_collapse_icon);\r
166       jQuery("#tree_icon"+cid).attr("alt", collapse_text);\r
167       jQuery("#tree_icon"+cid).attr("title", collapse_text);\r
168       trans.utility.setcookie("t.c"+course_id+"_"+cid, "1", 1);\r
169     }\r
170     \r
171     jQuery("#folder"+cid).slideToggle();\r
172   };\r
173   \r
174   // toggle elements in side menu\r
175   trans.utility.elementToggle = function (elem, title, compact_title, base_path, show_text, hide_text)\r
176   {\r
177     element_collapse_icon = base_path+"images/mswitch_minus.gif";\r
178     element_expand_icon = base_path+"images/mswitch_plus.gif";\r
179     \r
180     if (jQuery(elem).attr("src") == element_collapse_icon) {\r
181       jQuery(elem).attr("src", element_expand_icon);\r
182       jQuery(elem).attr("alt", show_text + " "+ title);\r
183       jQuery(elem).attr("title", show_text + " "+ title);\r
184       trans.utility.setcookie("m_"+compact_title, 0, 1);\r
185     }\r
186     else {\r
187       jQuery(elem).attr("src", element_collapse_icon);\r
188       jQuery(elem).attr("alt", hide_text + " "+ title);\r
189       jQuery(elem).attr("title", hide_text + " "+ title);\r
190       trans.utility.setcookie("m_"+compact_title, 1, 1);;\r
191     }\r
192     \r
193     jQuery(elem).parent().next().slideToggle();\r
194   };\r
195   \r
196   trans.utility.printSubmenuHeader = function (title, compact_title, base_path, show_text, hide_text, default_value)\r
197   {\r
198         cookie_value = trans.utility.getcookie("m_"+compact_title);\r
199         \r
200         if (cookie_value == "0" || (cookie_value == "" && default_value == "hide"))\r
201     {\r
202       image = base_path + "images/mswitch_plus.gif";\r
203       alt_text = show_text + " " + title;\r
204     }\r
205     else\r
206     {\r
207       image = base_path+"images/mswitch_minus.gif";\r
208       alt_text = hide_text + " " + title;\r
209     }\r
210     \r
211     document.writeln('<h4 class="box">'+\r
212     '  <input src="'+image+'"' + \r
213     '         onclick="trans.utility.elementToggle(this, \''+title+'\', \''+compact_title+'\', \''+base_path+'\', \''+show_text+'\', \''+hide_text+'\'); return false;"' +\r
214     '         alt="'+ alt_text + '" ' +\r
215     '         title="'+ alt_text + '"' +\r
216     '         style="float:right" type="image" /> '+ title +\r
217     '</h4>');\r
218   };\r
219   \r
220   trans.utility.rowselect = function (obj) {\r
221     obj.className = 'selected';\r
222     if (trans.utility.selected && trans.utility.selected != obj.id)\r
223       document.getElementById(trans.utility.selected).className = '';\r
224     trans.utility.selected = obj.id;\r
225   };\r
226   \r
227   trans.utility.rowselectbox = function (obj, checked, handler) {\r
228     var functionDemo = new Function(handler + ";");\r
229     functionDemo();\r
230   \r
231     if (checked)\r
232       obj.className = 'selected';\r
233     else\r
234       obj.className = '';\r
235   };\r
236 \r
237 })();\r