Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2012
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name       ASW-Plan
  3. // @namespace  http://use.i.E.your.homepage/
  4. // @version    0.1
  5. // @description  enter something useful
  6. // @match      http://www.asw-berufsakademie.de/fileadmin/download/download/Sked%20Stundenplan/*.html
  7. // @copyright  2012+, You
  8. // ==/UserScript==
  9.  
  10. var weekNum = 1;
  11. var weekTable = document.getElementsByTagName('table')[weekNum];
  12.  
  13. // Create a map to link each date (from header row) with its horizontal position
  14. var days  = weekTable.getElementsByClassName('t');
  15. var dayMap = {};
  16. for(var i=0; i<days.length; i++) {
  17.     var pos = findPos(days[i]);
  18.     dayMap[days[i].innerHTML] = pos.x;
  19.     //alert(pos.x + ' -> ' + days[i].innerHTML);
  20. }
  21.  
  22. // Find the closest horizontal position for each course
  23. var courses = weekTable.getElementsByClassName('v');
  24. var out = '';
  25. for(var i=0; i<courses.length; i++) {
  26.     var pos = findPos(courses[i]);
  27.     var date = findClosest(pos.x, dayMap);
  28.     out += courses[i].innerHTML + '\n   ==> ' + date + '\n';
  29. }
  30. alert(out);
  31.  
  32. function findPos(obj) {
  33.     var curleft = 0, curtop = 0;
  34.     if (obj.offsetParent) {
  35.         do {
  36.             curleft += obj.offsetLeft;
  37.             curtop += obj.offsetTop;
  38.         } while (obj = obj.offsetParent);
  39.         return { x: curleft, y: curtop };
  40.     }
  41.     return undefined;
  42. }
  43.  
  44. function findClosest(horiPos, dayMap) {
  45.     var xDiff = -1;
  46.     var winner;
  47.     for(var date in dayMap) {
  48.         var tmpDiff = Math.abs(dayMap[date] - horiPos);
  49.         if(xDiff == -1 || tmpDiff < xDiff) {
  50.             xDiff = tmpDiff;
  51.             winner = date;
  52.         }
  53.     }
  54.     return winner;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement