nitro.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // nitrogen compatibility layer
  2. function direct(term){ ws.send(enc(tuple(atom('direct'), term))); }
  3. function validateSources(){ return true; }
  4. function querySourceRaw(Id){
  5. var val, el = document.getElementById(Id);
  6. if(!el){
  7. val = qs('input[name=' + Id + ']:checked');
  8. val = val ? val.value : "";
  9. }else switch(el.tagName){
  10. case 'FIELDSET':
  11. val = qs('[id="' + Id + '"]:checked');
  12. val = val ? val.value : "";
  13. break;
  14. case 'INPUT':
  15. switch(el.getAttribute("type")){
  16. case 'radio':
  17. case 'checkbox':
  18. val = qs('input[name=' + Id + ']:checked');
  19. val = val ? val.value : "";
  20. break;
  21. case 'date':
  22. val = Date.parse(el.value);
  23. val = val && new Date(val) || "";
  24. break;
  25. case 'calendar':
  26. val = pickers[el.id]._d || "";
  27. break;
  28. default:
  29. var edit = el.contentEditable;
  30. if(edit && edit === 'true') val = el.innerHTML;
  31. else val = el.value;
  32. }
  33. break;
  34. default:
  35. var edit = el.contentEditable;
  36. if(edit && edit === 'true'){
  37. val = el.innerHTML;
  38. }else{
  39. val = el.value;
  40. switch(val){
  41. case "true": val = new Boolean(true); break;
  42. case "false": val = new Boolean(false); break;
  43. }
  44. }
  45. }
  46. return val;
  47. }
  48. function querySource(Id){
  49. var qs = querySourceRaw(Id);
  50. if(qs instanceof Date){
  51. return tuple(number(qs.getFullYear()),
  52. number(qs.getMonth() + 1),
  53. number(qs.getDate()));
  54. }else if(qs instanceof Boolean){
  55. return atom(qs.valueOf());
  56. }else{ return bin(qs); }
  57. }
  58. (function(){
  59. window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame ||
  60. window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
  61. })();