You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

174 lines
4.5 KiB

  1. var movimPollHandlers = new Array();
  2. var onloaders = new Array();
  3. /**
  4. * Adds a function to the onload event.
  5. */
  6. function movim_add_onload(func)
  7. {
  8. onloaders.push(func);
  9. }
  10. /**
  11. * Function that is run once the page is loaded.
  12. */
  13. function movim_onload()
  14. {
  15. for(var i = 0; i < onloaders.length; i++) {
  16. if(typeof(onloaders[i]) === "function")
  17. onloaders[i]();
  18. }
  19. }
  20. function log(text)
  21. {
  22. if(typeof text !== 'undefined') {
  23. text = text.toString();
  24. text = text.replace(/</g, '&lt;').replace(/>/g, '&gt;');
  25. }
  26. }
  27. function prependChild(parent,child)
  28. {
  29. parent.insertBefore(child,parent.childNodes[0]);
  30. }
  31. function movim_parse_form(formname) {
  32. var form = document.forms[formname];
  33. if(!form)
  34. return false;
  35. var data = H();
  36. for(var i = 0; i < form.elements.length; i++) {
  37. if(form.elements[i].type == 'checkbox') {
  38. data.set(form.elements[i].name,
  39. form.elements[i].checked);
  40. } else if(form.elements[i].type == 'radio'
  41. && form.elements[i].checked ) {
  42. data.set(form.elements[i].name,
  43. form.elements[i].value);
  44. } else if(form.elements[i].type != 'radio'){
  45. data.set(form.elements[i].name,
  46. form.elements[i].value);
  47. }
  48. }
  49. return data;
  50. }
  51. function movim_reload(uri) {
  52. window.location.replace(uri);
  53. }
  54. /* A magical function to autoresize textarea when typing */
  55. function movim_textarea_autoheight(textbox) {
  56. textbox.style.height = 0;
  57. textbox.style.height = textbox.scrollHeight+"px";
  58. }
  59. /**
  60. * Class manipulation
  61. */
  62. function movim_has_class(element,classname) {
  63. var element = document.querySelector(element);
  64. return element.className.match(new RegExp('(\\s|^)'+classname+'(\\s|$)'));
  65. }
  66. function movim_add_class(element,classname) {
  67. if(!movim_has_class(element,classname)) {
  68. var element = document.querySelector(element);
  69. element.className += " "+classname;
  70. }
  71. }
  72. function movim_remove_class(element,classname) {
  73. if (movim_has_class(element,classname)) {
  74. var reg = new RegExp('(\\s|^)'+classname+'(\\s|$)');
  75. var element = document.querySelector(element);
  76. element.className=element.className.replace(reg,' ');
  77. }
  78. }
  79. function movim_toggle_class(element, classname) {
  80. if(movim_has_class(element, classname))
  81. movim_remove_class(element,classname);
  82. else
  83. movim_add_class(element, classname);
  84. }
  85. /**
  86. * Set a global var for widgets to see if document is focused
  87. */
  88. var document_focus = true;
  89. var document_title = document.title;
  90. var messages_cpt = 1;
  91. document.onblur = function() { document_focus = false; }
  92. document.onfocus = function() { document_focus = true; document.title = document_title; messages_cpt = 1; }
  93. function movim_title_inc() {
  94. document.title='[' + messages_cpt + '] ' + document_title ;
  95. messages_cpt++;
  96. }
  97. function movim_change_class(params) {
  98. var node = document.getElementById(params[0]);
  99. node.className = params[1];
  100. }
  101. function movim_toggle_display(param) {
  102. var node = document.querySelector(param);
  103. if(node.style.display == 'block')
  104. node.style.display = 'none';
  105. else
  106. node.style.display = 'block';
  107. }
  108. /**
  109. * Feed Javascript
  110. */
  111. function getFeedMessage() {
  112. var text = document.querySelector('#feedmessagecontent');
  113. message = text.value;
  114. text.value = '';
  115. text.blur();
  116. return encodeURIComponent(message);
  117. }
  118. function frameHeight(n, text) {
  119. if(n.className == 'button tiny icon alone add merged left') {
  120. n.className = 'button tiny icon alone rm merged left';
  121. text.style.minHeight = '20em';
  122. } else {
  123. n.className = 'button tiny icon alone add merged left';
  124. text.style.minHeight = '1.5em';
  125. }
  126. }
  127. function richText(n) {
  128. if(n.className == 'button tiny icon yes merged right') {
  129. n.className = 'button tiny icon no merged right';
  130. document.querySelector('.menueditor').style.display = 'block';
  131. } else {
  132. n.className = 'button tiny icon yes merged right';
  133. document.querySelector('.menueditor').style.display = 'none';
  134. }
  135. }
  136. /**
  137. * Geolocalisation function
  138. */
  139. function setPosition(node) {
  140. if (navigator.geolocation) {
  141. navigator.geolocation.getCurrentPosition(
  142. function (position) {
  143. var poss = position.coords.latitude +','+position.coords.longitude;
  144. node.value = poss;
  145. showPosition(poss);
  146. },
  147. // next function is the error callback
  148. function (error) { }
  149. );
  150. }
  151. }