main.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. $(document).ready(function() {
  2. console.log("ready");
  3. var _win = {
  4. w:$(document).width(),
  5. h:$(document).height()
  6. },
  7. _$root = $('#root'),
  8. _pl = 58,
  9. _active_pages = {},
  10. _current_pages = 0,
  11. _page_left_bg, _page_right_bg,
  12. _$page_left = $('#page-left'), _$page_right = $('#page-right'),
  13. _$overlay_left = $('#page-left .overlay'), _$overlay_right = $('#page-right .overlay'),
  14. _$maps_left = $('#page-left .maps'), _$maps_right = $('#page-right .maps'),
  15. _bgs_prefix = "images/pages/";
  16. _$railway = $('#railway');
  17. // ____ _ __
  18. // / _/___ (_) /_
  19. // / // __ \/ / __/
  20. // _/ // / / / / /_
  21. // /___/_/ /_/_/\__/
  22. function init(){
  23. // console.log("init", _PAGES[0].bg);
  24. initLayout();
  25. initData();
  26. initRailway();
  27. initkeyboard();
  28. changePages();
  29. };
  30. function initLayout(){
  31. _$root.css({
  32. 'margin-top':(_win.h-_$root.height())/2
  33. });
  34. };
  35. function initData(){
  36. for (var p = 0; p < _PAGES.length; p++) {
  37. if(typeof _PAGES[p][0].page !== "undefined"){
  38. _active_pages[(_PAGES[p][0].page+1)/2] = p;
  39. }
  40. else if(typeof _PAGES[p][1].page !== "undefined"){
  41. _active_pages[_PAGES[p][1].page/2] = p;
  42. }
  43. }
  44. console.log("_active_pages", _active_pages);
  45. };
  46. // _ __
  47. // / | / /___ __ __
  48. // / |/ / __ `/ | / /
  49. // / /| / /_/ /| |/ /
  50. // /_/ |_/\__,_/ |___/
  51. function initRailway(){
  52. var $ul = $('<ul>');
  53. var ap, bgl, bgr;
  54. for (var p = 0; p <= _pl; p++) {
  55. console.log("-- PAGE --", p);
  56. ap = typeof _active_pages[p] !== "undefined" ? _active_pages[p] : false;
  57. // console.log("ap",ap);
  58. if(ap !== false){
  59. bgl = typeof _PAGES[ap][0].bg !== "undefined" ? _bgs_prefix+"thumbs/"+_PAGES[ap][0].bg : false;
  60. bgr = typeof _PAGES[ap][1].bg !== "undefined" ? _bgs_prefix+"thumbs/"+_PAGES[ap][1].bg : false;
  61. }else{
  62. bgl = bgr = false;
  63. }
  64. // console.log("_PAGES[ap][1].bg", _PAGES[ap][1].bg);
  65. // console.log("bgl", bgl);
  66. // console.log("bgr", bgr);
  67. if(p!=0)
  68. $('<li>')
  69. .addClass('page page-'+p+' page-left')
  70. .addClass(bgl ? 'active' : 0)
  71. .css({'background-image': bgl ? "url("+bgl+")" : "none"})
  72. .appendTo($ul);
  73. if(p<_pl)
  74. $('<li>')
  75. .addClass('page page-'+p+' page-right')
  76. .addClass(bgr ? 'active' : 0)
  77. .css({'background-image': bgr ? "url("+bgr+")" : "none"})
  78. .appendTo($ul);
  79. }
  80. $ul.appendTo(_$railway);
  81. }
  82. // TODO: next page arrow
  83. // ____
  84. // / __ \____ _____ ____ _____
  85. // / /_/ / __ `/ __ `/ _ \/ ___/
  86. // / ____/ /_/ / /_/ / __(__ )
  87. // /_/ \__,_/\__, /\___/____/
  88. // /____/
  89. function nextPages(){
  90. if(_current_pages < _PAGES.length-1){
  91. _current_pages+=1;
  92. changePages();
  93. }
  94. };
  95. function prevPages(){
  96. if(_current_pages > 0){
  97. _current_pages-=1;
  98. changePages();
  99. }
  100. };
  101. function changePages(){
  102. console.log("changePages", _current_pages);
  103. if (typeof _PAGES[_current_pages][0].bg !== "undefined") {
  104. var pl = _PAGES[_current_pages][0];
  105. _$page_left
  106. .css({'background-image': "url("+_bgs_prefix+pl.bg+")"})
  107. .removeClass(pageClassToRemove)
  108. .addClass('page-'+pl.page);
  109. }else{
  110. _$page_left.css({'background-image': "none"});
  111. }
  112. if (typeof _PAGES[_current_pages][1].bg !== "undefined") {
  113. var pr = _PAGES[_current_pages][1];
  114. _$page_right
  115. .css({'background-image': "url("+_bgs_prefix+pr.bg+")"})
  116. .removeClass(pageClassToRemove)
  117. .addClass('page-'+pr.page);
  118. }else{
  119. _$page_right.css({'background-image': "none"});
  120. }
  121. // updatePagesOverlays();
  122. };
  123. function pageClassToRemove(){
  124. var c = $(this).attr('class').match(/page-+\d+/);
  125. if(c && c.length)
  126. return c[0];
  127. };
  128. function updatePagesOverlays(){
  129. console.log("updatePagesOverlays");
  130. // remove all pages overlays
  131. $('.overlay, .maps',_$page_left).children().remove();
  132. $('.overlay, .maps',_$page_right).children().remove();
  133. console.log("Overlays", _PAGES[_current_pages].overlays);
  134. // build page_left overlays
  135. for (var map in _PAGES[_current_pages].overlays) {
  136. if (_PAGES[_current_pages].overlays.hasOwnProperty(map)) {
  137. map = _PAGES[_current_pages].overlays[map];
  138. console.log("Map",map);
  139. _$maps_left.append(
  140. $('<div>')
  141. .addClass("map")
  142. .attr('overlay', map.over)
  143. .css({
  144. "left":map.x,
  145. "top":map.y,
  146. "width":map.w,
  147. "height":map.h
  148. })
  149. .bind("mouseover", function(e){
  150. $(this)
  151. .parents('.page').find('.overlay')
  152. .css({
  153. // 'background-color':"red",
  154. 'background-image':'url(images/vectos/'+$(this).attr('overlay')+')'
  155. });
  156. })
  157. );
  158. }
  159. }
  160. };
  161. // __ __ __ __
  162. // / //_/__ __ __/ /_ ____ ____ __________/ /
  163. // / ,< / _ \/ / / / __ \/ __ \/ __ `/ ___/ __ /
  164. // / /| / __/ /_/ / /_/ / /_/ / /_/ / / / /_/ /
  165. // /_/ |_\___/\__, /_.___/\____/\__,_/_/ \__,_/
  166. // /____/
  167. function initkeyboard(){
  168. keyboardJS.bind('right', function(event) {
  169. // console.log(event);
  170. nextPages();
  171. });
  172. keyboardJS.bind('left', function(event) {
  173. // console.log(event);
  174. prevPages();
  175. });
  176. };
  177. init();
  178. });