main.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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. _$pagination = $('#pagination');
  18. _$pagi_l = $('#pagination .wrapper-l .p'), _$pagi_r = $('#pagination .wrapper-r .p');
  19. // ____ _ __
  20. // / _/___ (_) /_
  21. // / // __ \/ / __/
  22. // _/ // / / / / /_
  23. // /___/_/ /_/_/\__/
  24. function init(){
  25. // console.log("init", _PAGES[0].bg);
  26. initLayout();
  27. initData();
  28. initRailway();
  29. initkeyboard();
  30. initPagination();
  31. changePages();
  32. };
  33. function initLayout(){
  34. _$root.css({
  35. 'margin-top':(_win.h-_$root.height())/2
  36. });
  37. };
  38. function initData(){
  39. for (var p = 0; p < _PAGES.length; p++) {
  40. if(typeof _PAGES[p][0].page !== "undefined"){
  41. _active_pages[(_PAGES[p][0].page+1)/2] = p;
  42. }
  43. else if(typeof _PAGES[p][1].page !== "undefined"){
  44. _active_pages[_PAGES[p][1].page/2] = p;
  45. }
  46. }
  47. console.log("_active_pages", _active_pages);
  48. };
  49. // _ __
  50. // / | / /___ __ __
  51. // / |/ / __ `/ | / /
  52. // / /| / /_/ /| |/ /
  53. // /_/ |_/\__,_/ |___/
  54. function initRailway(){
  55. var $ul = $('<ul>');
  56. var ap, bgl, bgr;
  57. for (var dp = 0; dp <= _pl; dp++) {
  58. // console.log("-- DOUBLE PAGE --", dp);
  59. ap = typeof _active_pages[dp] !== "undefined" ? _active_pages[dp] : false;
  60. // console.log("ap",ap);
  61. if(ap !== false){
  62. bgl = typeof _PAGES[ap][0].bg !== "undefined" ? _bgs_prefix+"thumbs/"+_PAGES[ap][0].bg : false;
  63. bgr = typeof _PAGES[ap][1].bg !== "undefined" ? _bgs_prefix+"thumbs/"+_PAGES[ap][1].bg : false;
  64. }else{
  65. bgl = bgr = false;
  66. }
  67. // console.log("_PAGES[ap][1].bg", _PAGES[ap][1].bg);
  68. // console.log("bgl", bgl);
  69. // console.log("bgr", bgr);
  70. var p = dp*2;
  71. if(dp!=0)
  72. $('<li>')
  73. .addClass('page page-'+(p-1)+' double-page-'+dp+' page-left')
  74. .addClass(bgl ? 'active' : 0)
  75. .css({'background-image': bgl ? "url("+bgl+")" : "none"})
  76. .appendTo($ul);
  77. if(dp<_pl)
  78. $('<li>')
  79. .addClass('page page-'+p+' double-page-'+dp+' page-right')
  80. .addClass(bgr ? 'active' : 0)
  81. .css({'background-image': bgr ? "url("+bgr+")" : "none"})
  82. .appendTo($ul);
  83. }
  84. $ul.appendTo(_$railway);
  85. $('li', _$railway).on('click', function(event) {
  86. var p = $(this).attr('class').match(/page-(\d+)/)[1];
  87. console.log('page', p);
  88. console.log(p%2);
  89. // check if page is pair ou impair and calculate de double_page number
  90. var dp = p%2 ? (p*1+1)/2 : p/2;
  91. _current_pages = _active_pages[dp];
  92. changePages();
  93. });
  94. }
  95. // TODO: next page arrow
  96. // ____
  97. // / __ \____ _____ ____ _____
  98. // / /_/ / __ `/ __ `/ _ \/ ___/
  99. // / ____/ /_/ / /_/ / __(__ )
  100. // /_/ \__,_/\__, /\___/____/
  101. // /____/
  102. function nextPages(){
  103. if(_current_pages < _PAGES.length-1){
  104. _current_pages+=1;
  105. changePages();
  106. }
  107. };
  108. function prevPages(){
  109. if(_current_pages > 0){
  110. _current_pages-=1;
  111. changePages();
  112. }
  113. };
  114. function changePages(){
  115. console.log("changePages", _current_pages);
  116. $('li',_$railway).removeClass('current');
  117. if (typeof _PAGES[_current_pages][0].bg !== "undefined") {
  118. var pl = _PAGES[_current_pages][0];
  119. _$page_left
  120. .css({'background-image': "url("+_bgs_prefix+pl.bg+")"})
  121. .removeClass(pageClassToRemove)
  122. .addClass('page-'+pl.page);
  123. _$pagi_l.text(pl.page);
  124. $('li.page-'+pl.page).addClass('current');
  125. }else{
  126. _$page_left.css({'background-image': "none"});
  127. _$pagi_l.text("");
  128. }
  129. if (typeof _PAGES[_current_pages][1].bg !== "undefined") {
  130. var pr = _PAGES[_current_pages][1];
  131. _$page_right
  132. .css({'background-image': "url("+_bgs_prefix+pr.bg+")"})
  133. .removeClass(pageClassToRemove)
  134. .addClass('page-'+pr.page);
  135. _$pagi_r.text(pr.page);
  136. $('li.page-'+pr.page).addClass('current');
  137. }else{
  138. _$page_right.css({'background-image': "none"});
  139. _$pagi_r.text("");
  140. }
  141. // updatePagesOverlays();
  142. };
  143. function pageClassToRemove(){
  144. var c = $(this).attr('class').match(/page-+\d+/);
  145. if(c && c.length)
  146. return c[0];
  147. };
  148. function updatePagesOverlays(){
  149. console.log("updatePagesOverlays");
  150. // remove all pages overlays
  151. $('.overlay, .maps',_$page_left).children().remove();
  152. $('.overlay, .maps',_$page_right).children().remove();
  153. console.log("Overlays", _PAGES[_current_pages].overlays);
  154. // build page_left overlays
  155. for (var map in _PAGES[_current_pages].overlays) {
  156. if (_PAGES[_current_pages].overlays.hasOwnProperty(map)) {
  157. map = _PAGES[_current_pages].overlays[map];
  158. console.log("Map",map);
  159. _$maps_left.append(
  160. $('<div>')
  161. .addClass("map")
  162. .attr('overlay', map.over)
  163. .css({
  164. "left":map.x,
  165. "top":map.y,
  166. "width":map.w,
  167. "height":map.h
  168. })
  169. .bind("mouseover", function(e){
  170. $(this)
  171. .parents('.page').find('.overlay')
  172. .css({
  173. // 'background-color':"red",
  174. 'background-image':'url(images/vectos/'+$(this).attr('overlay')+')'
  175. });
  176. })
  177. );
  178. }
  179. }
  180. };
  181. // __ __ __ __
  182. // / //_/__ __ __/ /_ ____ ____ __________/ /
  183. // / ,< / _ \/ / / / __ \/ __ \/ __ `/ ___/ __ /
  184. // / /| / __/ /_/ / /_/ / /_/ / /_/ / / / /_/ /
  185. // /_/ |_\___/\__, /_.___/\____/\__,_/_/ \__,_/
  186. // /____/
  187. function initkeyboard(){
  188. keyboardJS.bind('right', function(event) {
  189. // console.log(event);
  190. nextPages();
  191. });
  192. keyboardJS.bind('left', function(event) {
  193. // console.log(event);
  194. prevPages();
  195. });
  196. };
  197. // ____ _ __ _
  198. // / __ \____ _____ _(_)___ ____ _/ /_(_)___ ____
  199. // / /_/ / __ `/ __ `/ / __ \/ __ `/ __/ / __ \/ __ \
  200. // / ____/ /_/ / /_/ / / / / / /_/ / /_/ / /_/ / / / /
  201. // /_/ \__,_/\__, /_/_/ /_/\__,_/\__/_/\____/_/ /_/
  202. // /____/
  203. function initPagination(){
  204. $('.wrapper-l .l', _$pagination).on('click', function(event) {
  205. prevPages();
  206. });
  207. $('.wrapper-r .l', _$pagination).on('click', function(event) {
  208. nextPages();
  209. });
  210. };
  211. init();
  212. });