theme.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. //------------------------- ADD jQuery Mobile ----------------------------------//
  2. /*! jQuery Mobile v1.4.5 | Copyright 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
  3. (function(e,t,n){typeof define=="function"&&define.amd?define(["jquery"],function(r){return n(r,e,t),r.mobile}):n(e.jQuery,e,t)})(this,document,function(e,t,n,r){(function(e,n){e.extend(e.support,{orientation:"orientation"in t&&"onorientationchange"in t})})(e),function(e){e.event.special.throttledresize={setup:function(){e(this).bind("resize",n)},teardown:function(){e(this).unbind("resize",n)}};var t=250,n=function(){s=(new Date).getTime(),o=s-r,o>=t?(r=s,e(this).trigger("throttledresize")):(i&&clearTimeout(i),i=setTimeout(n,t-o))},r=0,i,s,o}(e),function(e,t){function p(){var e=s();e!==o&&(o=e,r.trigger(i))}var r=e(t),i="orientationchange",s,o,u,a,f={0:!0,180:!0},l,c,h;if(e.support.orientation){l=t.innerWidth||r.width(),c=t.innerHeight||r.height(),h=50,u=l>c&&l-c>h,a=f[t.orientation];if(u&&a||!u&&!a)f={"-90":!0,90:!0}}e.event.special.orientationchange=e.extend({},e.event.special.orientationchange,{setup:function(){if(e.support.orientation&&!e.event.special.orientationchange.disabled)return!1;o=s(),r.bind("throttledresize",p)},teardown:function(){if(e.support.orientation&&!e.event.special.orientationchange.disabled)return!1;r.unbind("throttledresize",p)},add:function(e){var t=e.handler;e.handler=function(e){return e.orientation=s(),t.apply(this,arguments)}}}),e.event.special.orientationchange.orientation=s=function(){var r=!0,i=n.documentElement;return e.support.orientation?r=f[t.orientation]:r=i&&i.clientWidth/i.clientHeight<1.1,r?"portrait":"landscape"},e.fn[i]=function(e){return e?this.bind(i,e):this.trigger(i)},e.attrFn&&(e.attrFn[i]=!0)}(e,this),function(e,t,n,r){function T(e){while(e&&typeof e.originalEvent!="undefined")e=e.originalEvent;return e}function N(t,n){var i=t.type,s,o,a,l,c,h,p,d,v;t=e.Event(t),t.type=n,s=t.originalEvent,o=e.event.props,i.search(/^(mouse|click)/)>-1&&(o=f);if(s)for(p=o.length,l;p;)l=o[--p],t[l]=s[l];i.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1);if(i.search(/^touch/)!==-1){a=T(s),i=a.touches,c=a.changedTouches,h=i&&i.length?i[0]:c&&c.length?c[0]:r;if(h)for(d=0,v=u.length;d<v;d++)l=u[d],t[l]=h[l]}return t}function C(t){var n={},r,s;while(t){r=e.data(t,i);for(s in r)r[s]&&(n[s]=n.hasVirtualBinding=!0);t=t.parentNode}return n}function k(t,n){var r;while(t){r=e.data(t,i);if(r&&(!n||r[n]))return t;t=t.parentNode}return null}function L(){g=!1}function A(){g=!0}function O(){E=0,v.length=0,m=!1,A()}function M(){L()}function _(){D(),c=setTimeout(function(){c=0,O()},e.vmouse.resetTimerDuration)}function D(){c&&(clearTimeout(c),c=0)}function P(t,n,r){var i;if(r&&r[t]||!r&&k(n.target,t))i=N(n,t),e(n.target).trigger(i);return i}function H(t){var n=e.data(t.target,s),r;!m&&(!E||E!==n)&&(r=P("v"+t.type,t),r&&(r.isDefaultPrevented()&&t.preventDefault(),r.isPropagationStopped()&&t.stopPropagation(),r.isImmediatePropagationStopped()&&t.stopImmediatePropagation()))}function B(t){var n=T(t).touches,r,i,o;n&&n.length===1&&(r=t.target,i=C(r),i.hasVirtualBinding&&(E=w++,e.data(r,s,E),D(),M(),d=!1,o=T(t).touches[0],h=o.pageX,p=o.pageY,P("vmouseover",t,i),P("vmousedown",t,i)))}function j(e){if(g)return;d||P("vmousecancel",e,C(e.target)),d=!0,_()}function F(t){if(g)return;var n=T(t).touches[0],r=d,i=e.vmouse.moveDistanceThreshold,s=C(t.target);d=d||Math.abs(n.pageX-h)>i||Math.abs(n.pageY-p)>i,d&&!r&&P("vmousecancel",t,s),P("vmousemove",t,s),_()}function I(e){if(g)return;A();var t=C(e.target),n,r;P("vmouseup",e,t),d||(n=P("vclick",e,t),n&&n.isDefaultPrevented()&&(r=T(e).changedTouches[0],v.push({touchID:E,x:r.clientX,y:r.clientY}),m=!0)),P("vmouseout",e,t),d=!1,_()}function q(t){var n=e.data(t,i),r;if(n)for(r in n)if(n[r])return!0;return!1}function R(){}function U(t){var n=t.substr(1);return{setup:function(){q(this)||e.data(this,i,{});var r=e.data(this,i);r[t]=!0,l[t]=(l[t]||0)+1,l[t]===1&&b.bind(n,H),e(this).bind(n,R),y&&(l.touchstart=(l.touchstart||0)+1,l.touchstart===1&&b.bind("touchstart",B).bind("touchend",I).bind("touchmove",F).bind("scroll",j))},teardown:function(){--l[t],l[t]||b.unbind(n,H),y&&(--l.touchstart,l.touchstart||b.unbind("touchstart",B).unbind("touchmove",F).unbind("touchend",I).unbind("scroll",j));var r=e(this),s=e.data(this,i);s&&(s[t]=!1),r.unbind(n,R),q(this)||r.removeData(i)}}}var i="virtualMouseBindings",s="virtualTouchID",o="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),u="clientX clientY pageX pageY screenX screenY".split(" "),a=e.event.mouseHooks?e.event.mouseHooks.props:[],f=e.event.props.concat(a),l={},c=0,h=0,p=0,d=!1,v=[],m=!1,g=!1,y="addEventListener"in n,b=e(n),w=1,E=0,S,x;e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(x=0;x<o.length;x++)e.event.special[o[x]]=U(o[x]);y&&n.addEventListener("click",function(t){var n=v.length,r=t.target,i,o,u,a,f,l;if(n){i=t.clientX,o=t.clientY,S=e.vmouse.clickDistanceThreshold,u=r;while(u){for(a=0;a<n;a++){f=v[a],l=0;if(u===r&&Math.abs(f.x-i)<S&&Math.abs(f.y-o)<S||e.data(u,s)===f.touchID){t.preventDefault(),t.stopPropagation();return}}u=u.parentNode}}},!0)}(e,t,n),function(e){e.mobile={}}(e),function(e,t){var r={touch:"ontouchend"in n};e.mobile.support=e.mobile.support||{},e.extend(e.support,r),e.extend(e.mobile.support,r)}(e),function(e,t,r){function l(t,n,i,s){var o=i.type;i.type=n,s?e.event.trigger(i,r,t):e.event.dispatch.call(t,i),i.type=o}var i=e(n),s=e.mobile.support.touch,o="touchmove scroll",u=s?"touchstart":"mousedown",a=s?"touchend":"mouseup",f=s?"touchmove":"mousemove";e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(t,n){e.fn[n]=function(e){return e?this.bind(n,e):this.trigger(n)},e.attrFn&&(e.attrFn[n]=!0)}),e.event.special.scrollstart={enabled:!0,setup:function(){function s(e,n){r=n,l(t,r?"scrollstart":"scrollstop",e)}var t=this,n=e(t),r,i;n.bind(o,function(t){if(!e.event.special.scrollstart.enabled)return;r||s(t,!0),clearTimeout(i),i=setTimeout(function(){s(t,!1)},50)})},teardown:function(){e(this).unbind(o)}},e.event.special.tap={tapholdThreshold:750,emitTapOnTaphold:!0,setup:function(){var t=this,n=e(t),r=!1;n.bind("vmousedown",function(s){function a(){clearTimeout(u)}function f(){a(),n.unbind("vclick",c).unbind("vmouseup",a),i.unbind("vmousecancel",f)}function c(e){f(),!r&&o===e.target?l(t,"tap",e):r&&e.preventDefault()}r=!1;if(s.which&&s.which!==1)return!1;var o=s.target,u;n.bind("vmouseup",a).bind("vclick",c),i.bind("vmousecancel",f),u=setTimeout(function(){e.event.special.tap.emitTapOnTaphold||(r=!0),l(t,"taphold",e.Event("taphold",{target:o}))},e.event.special.tap.tapholdThreshold)})},teardown:function(){e(this).unbind("vmousedown").unbind("vclick").unbind("vmouseup"),i.unbind("vmousecancel")}},e.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:30,getLocation:function(e){var n=t.pageXOffset,r=t.pageYOffset,i=e.clientX,s=e.clientY;if(e.pageY===0&&Math.floor(s)>Math.floor(e.pageY)||e.pageX===0&&Math.floor(i)>Math.floor(e.pageX))i-=n,s-=r;else if(s<e.pageY-r||i<e.pageX-n)i=e.pageX-n,s=e.pageY-r;return{x:i,y:s}},start:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,r=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[r.x,r.y],origin:e(t.target)}},stop:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,r=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[r.x,r.y]}},handleSwipe:function(t,n,r,i){if(n.time-t.time<e.event.special.swipe.durationThreshold&&Math.abs(t.coords[0]-n.coords[0])>e.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-n.coords[1])<e.event.special.swipe.verticalDistanceThreshold){var s=t.coords[0]>n.coords[0]?"swipeleft":"swiperight";return l(r,"swipe",e.Event("swipe",{target:i,swipestart:t,swipestop:n}),!0),l(r,s,e.Event(s,{target:i,swipestart:t,swipestop:n}),!0),!0}return!1},eventInProgress:!1,setup:function(){var t,n=this,r=e(n),s={};t=e.data(this,"mobile-events"),t||(t={length:0},e.data(this,"mobile-events",t)),t.length++,t.swipe=s,s.start=function(t){if(e.event.special.swipe.eventInProgress)return;e.event.special.swipe.eventInProgress=!0;var r,o=e.event.special.swipe.start(t),u=t.target,l=!1;s.move=function(t){if(!o||t.isDefaultPrevented())return;r=e.event.special.swipe.stop(t),l||(l=e.event.special.swipe.handleSwipe(o,r,n,u),l&&(e.event.special.swipe.eventInProgress=!1)),Math.abs(o.coords[0]-r.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault()},s.stop=function(){l=!0,e.event.special.swipe.eventInProgress=!1,i.off(f,s.move),s.move=null},i.on(f,s.move).one(a,s.stop)},r.on(u,s.start)},teardown:function(){var t,n;t=e.data(this,"mobile-events"),t&&(n=t.swipe,delete t.swipe,t.length--,t.length===0&&e.removeData(this,"mobile-events")),n&&(n.start&&e(this).off(u,n.start),n.move&&i.off(f,n.move),n.stop&&i.off(a,n.stop))}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe.left",swiperight:"swipe.right"},function(t,n){e.event.special[t]={setup:function(){e(this).bind(n,e.noop)},teardown:function(){e(this).unbind(n)}}})}(e,this)});
  4. //-------------------------- NO MORE ADDING ------------------------------------//
  5. //-------------------------- LETS DO SAME CUSTOM SCRIPT ------------------------//
  6. if (window.jQuery) {
  7. $(window).load(function(){
  8. if (window.devicePixelRatio > 1) {
  9. var images = findImagesByRegexp('contacts_thumbnail', document);
  10. for(var i = 0; i < images.length; i++) {
  11. var lowres = images[i].src;
  12. old_size = lowres.match(/\/(\d*)$/)[1]
  13. var highres = lowres.replace(/\/(\d*)$/, "/" + String(old_size*2));
  14. images[i].src = highres;
  15. }
  16. var images = findImagesByRegexp(/gravatar.com\/avatar.*size=\d+/, document)
  17. for(var i = 0; i < images.length; i++) {
  18. var lowres = images[i].src;
  19. old_size = lowres.match(/size=(\d+)/)[1]
  20. var highres = lowres.replace(/size=(\d+)/, "size=" + String(old_size*2));
  21. images[i].src = highres;
  22. images[i].height = old_size;
  23. images[i].width = old_size;
  24. }
  25. var images = findImagesByRegexp(/\/attachments\/thumbnail\/\d+$/, document)
  26. for(var i = 0; i < images.length; i++) {
  27. var lowres = images[i].src;
  28. var height = images[i].height
  29. var width = images[i].width
  30. var highres = lowres + "?size=" + Math.max(height, width)*2;
  31. if (Math.max(height, width) > 0) {
  32. images[i].src = highres;
  33. images[i].height = height;
  34. images[i].width = width;
  35. }
  36. }
  37. // Sized thumbnails
  38. var images = findImagesByRegexp(/\/attachments\/thumbnail\/\d+\/\d+$/, document)
  39. for(var i = 0; i < images.length; i++) {
  40. var lowres = images[i].src;
  41. var height = images[i].height
  42. var width = images[i].width
  43. old_size = lowres.match(/\/(\d*)$/)[1]
  44. var highres = lowres.replace(/\/(\d*)$/, "/" + String(old_size*2));
  45. images[i].src = highres;
  46. if (Math.max(height, width) > 0) {
  47. images[i].src = highres;
  48. images[i].height = height;
  49. images[i].width = width;
  50. }
  51. }
  52. // People avatars
  53. var images = findImagesByRegexp(/people\/avatar.*size=\d+$/, document)
  54. for(var i = 0; i < images.length; i++) {
  55. var lowres = images[i].src;
  56. old_size = lowres.match(/size=(\d+)$/)[1]
  57. var highres = lowres.replace(/size=(\d+)$/, "size=" + String(old_size*2));
  58. images[i].src = highres;
  59. }
  60. }
  61. });
  62. } else {
  63. document.observe("dom:loaded", function() {
  64. if (window.devicePixelRatio > 1) {
  65. var images = findImagesByRegexp('thumbnail', document);
  66. for(var i = 0; i < images.length; i++) {
  67. var lowres = images[i].src;
  68. old_size = lowres.match(/size=(\d*)$/)[1]
  69. var highres = lowres.replace(/size=(\d*)$/, "size=" + String(old_size*2));
  70. images[i].src = highres;
  71. }
  72. var images = findImagesByRegexp(/gravatar.com\/avatar.*size=\d+/, document)
  73. for(var i = 0; i < images.length; i++) {
  74. var lowres = images[i].src;
  75. old_size = lowres.match(/size=(\d+)/)[1]
  76. var highres = lowres.replace(/size=(\d+)/, "size=" + String(old_size*2));
  77. images[i].src = highres;
  78. images[i].height = old_size;
  79. images[i].width = old_size;
  80. }
  81. }
  82. });
  83. }
  84. function findImagesByRegexp(regexp, parentNode) {
  85. var images = Array.prototype.slice.call((parentNode || document).getElementsByTagName('img'));
  86. var length = images.length;
  87. var ret = [];
  88. for(var i = 0; i < length; ++i) {
  89. if(images[i].src.search(regexp) != -1) {
  90. ret.push(images[i]);
  91. }
  92. }
  93. return ret;
  94. };
  95. //Work with cookie
  96. function setCookie(name, value, options) {
  97. options = options || {};
  98. var expires = options.expires;
  99. if (typeof expires == "number" && expires) {
  100. var d = new Date();
  101. d.setTime(d.getTime() + expires*1000);
  102. expires = options.expires = d;
  103. }
  104. if (expires && expires.toUTCString) {
  105. options.expires = expires.toUTCString();
  106. }
  107. value = encodeURIComponent(value);
  108. var updatedCookie = name + "=" + value;
  109. for(var propName in options) {
  110. updatedCookie += "; " + propName;
  111. var propValue = options[propName];
  112. if (propValue !== true) {
  113. updatedCookie += "=" + propValue;
  114. }
  115. }
  116. document.cookie = updatedCookie;
  117. }
  118. function getCookie(name) {
  119. var matches = document.cookie.match(new RegExp(
  120. "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  121. ));
  122. return matches ? decodeURIComponent(matches[1]) : undefined;
  123. }
  124. function deleteCookie(name) {
  125. setCookie(name, "", { expires: -1 })
  126. }
  127. $(document).ready(function () {
  128. var burger_height;
  129. var submenu_sum_width;
  130. var topmenu_sum_width;
  131. var overwidthed_flag = false;
  132. var overwidthed_height;
  133. var is_sidebar_minimized = getCookie('sidebar'); //Получаем из куки текущее состояние сайдбара
  134. var acc_plus_logg;
  135. var ani_time = 500; // Время выполнения анимации (скорость произвольной анимации считается в X*ani_time)
  136. var cookie_life = 3600*24*50; // Время жизни куки
  137. var sidebar = 0; //Ширина кусочка сайдбара в процентах
  138. var qs_start_width; // Стартовая ширина квик-сёрча
  139. var $scwid = $(window).width();
  140. //Перемещение mm-menu для создания плавающей менюшки
  141. //Код перенесен в самое начало выполняемого скрипта
  142. $('#main-menu').html( '<div class="main_menu">'+ $('#main-menu').html() + '</div>');
  143. $('#main-menu .main_menu ul li').each(function(){
  144. submenu_sum_width += $(this).outerWidth();
  145. if( submenu_sum_width > $('.main_menu').outerWidth() - 2){
  146. $(this).addClass('overwidth');
  147. }
  148. else{
  149. $(this).removeClass('overwidth');
  150. }
  151. });
  152. $('#context-menu').remove();
  153. $('body').append('<div id="context-menu" style="display: none;"></div>');
  154. /*SUB_FUNCTIONS FOR CALC POSITION*/
  155. function redraw_sidebar(){
  156. }
  157. /********************CALC_POSITION*************************************/
  158. function calc_position(){
  159. $scwid = $(window).width();
  160. //redraw_sidebar();
  161. if( burger_height > 0 ) { $('.burger').css('height', '0px'); $('.burger_controller ').removeClass('opened'); }
  162. //Просчитываем суммарную ширину всех дочек субменюшки - если она больше родителя - добавляем магию
  163. submenu_sum_width = 0;
  164. var sm_delta = 2;
  165. $('#main-menu .main_menu ul li').each(function(){
  166. submenu_sum_width += $(this).outerWidth();
  167. if( submenu_sum_width > $('.main_menu').outerWidth() - sm_delta){
  168. $(this).addClass('overwidth');
  169. }
  170. else{
  171. $(this).removeClass('overwidth');
  172. }
  173. });
  174. $('.mm_burger').html('');
  175. if(submenu_sum_width > $('.main_menu').outerWidth()- sm_delta)
  176. {
  177. if(!overwidthed_flag){
  178. overwidthed_flag = true;
  179. $('.main_menu').before('<div class="mm_burger_caller"></div>');
  180. $('#main-menu').append('<ul class="mm_burger"></ul>');
  181. }
  182. $('.main_menu ul li.overwidth').each(function(){
  183. $(this).clone().removeClass('overwidth').appendTo('.mm_burger');
  184. //Если менюшка открыта во время рисайза
  185. if( $('.mm_burger_caller').hasClass('opened') ){
  186. $('.mm_burger').css({'height': $('.mm_burger li').size()*$('.mm_burger li').outerHeight() });
  187. }
  188. })
  189. }
  190. else{
  191. $('.mm_burger').remove();
  192. $('.mm_burger_caller').remove();
  193. overwidthed_flag = false;
  194. }
  195. $('.ellipsis').remove();
  196. $('.fmm_wrapper').remove();
  197. topmenu_sum_width = 0;
  198. $('.burger_clone').css({'display': 'block'});
  199. $('.burger_clone li').each(function(){
  200. topmenu_sum_width += $(this).outerWidth();
  201. if(topmenu_sum_width > $('#top-menu').outerWidth() - acc_plus_logg){$('.header_elements').addClass('first_stage'); var acc_plus_logg_fs = $('#account').outerWidth(true) + $('#loggedas').outerWidth(true);}
  202. else {$('.header_elements').removeClass('first_stage');}
  203. //if(topmenu_sum_width > $('.header_elements').innerWidth() - 110 - 135 - 80 ){
  204. //if(topmenu_sum_width > $('.header_elements').innerWidth() - $('#account').outerWidth(true) - $('#loggedas').outerWidth(true) - 80 ){
  205. if(topmenu_sum_width > $('.header_elements').innerWidth() - acc_plus_logg_fs - 80 ){
  206. $(this).addClass('overwidth');
  207. $('.ellipsis').remove();
  208. $('.burger_clone').append('<div class="ellipsis"><a href="#">...</a></div>');
  209. }
  210. else {
  211. $(this).removeClass('overwidth');
  212. $('.ellipsis').remove();
  213. }
  214. $('.ellipsis').tap(function(){
  215. if( $('.fmm_wrapper').size() == 0 ){
  216. $('.burger_clone').append('<div class="fmm_wrapper"><ul></ul></div>');
  217. $('.burger_clone li.overwidth').each(function(){
  218. $(this).clone(true).removeClass('overwidth').appendTo('.fmm_wrapper ul');
  219. });
  220. }
  221. else
  222. {
  223. $('.fmm_wrapper').remove();
  224. }
  225. });
  226. });
  227. //Схлопывание H1
  228. if ( $('#header').innerWidth() - qs_start_width - 60 < $('#header h1').outerWidth() ){
  229. $('#quick-search').addClass('adapted');
  230. }
  231. else{
  232. $('#quick-search').removeClass('adapted');
  233. }
  234. //Пересчет новой ширины
  235. $('.sidebar_wrapper').css('min-width', $('BODY').outerWidth()*0.25-31 );
  236. $nmh = $(window).height() - $('#header').outerHeight(true) - $('#top-menu').outerHeight(true) - $('#footer').outerHeight(true);
  237. //$('#main').css({'min-height': $nmh});
  238. //$('#content').css({'min-height':'100%'});
  239. $('#content').css({'min-height': $nmh});
  240. }
  241. /***************CALC_POSITION END****************************/
  242. //Аппендим viewport для скейла на мобилах
  243. $('head').append('<meta name="viewport" content="width=device-width, initial-scale=1.0">');
  244. //Работа с бургером
  245. $('#top-menu').children('ul').addClass('burger');
  246. $('#top-menu').prepend('<div class="burger_controller_wrapper"><a href="#" class="burger_controller"></a></div>');
  247. $('.burger').clone().removeClass('burger').addClass('burger_clone').insertBefore('#account');
  248. burger_height = $('.burger').outerHeight();
  249. $('.burger').css('height', '0px');
  250. $('.burger_controller_wrapper').css('display', 'none');
  251. //Подсказки для немобил в хедере
  252. $('#account a').each(function(){
  253. this_text = $(this).text();
  254. $(this).attr('title', this_text);
  255. });
  256. $('#main-menu').on('tap', '.mm_burger_caller', function(){
  257. if ( $('.mm_burger_caller').hasClass('opened') ){
  258. $('.mm_burger').animate({'height':'0px'})
  259. $('.mm_burger_caller').removeClass('opened');
  260. }
  261. else
  262. {
  263. $('.mm_burger').animate({'height': $('.mm_burger li').size()*$('.mm_burger li').outerHeight() });
  264. $('.mm_burger_caller').addClass('opened');
  265. }
  266. });
  267. //Тап по бургер-коллеру открывает и сворачивает менюшку
  268. $('#top-menu .burger_controller').on('tap', function(){
  269. var burger = '#top-menu .burger';
  270. if( $(this).hasClass('opened') ){ $(burger).animate({"height":"0px"}, ani_time); $(this).removeClass('opened'); }
  271. else { $(burger).animate({"height":burger_height+"px"}, ani_time); $(this).addClass('opened'); }
  272. return false;
  273. });
  274. //Костыляки
  275. //Перемещаем все элементы хедера в один блок
  276. $('#top-menu').prepend('<div class="header_elements"></div>');
  277. $('.burger_controller_wrapper').appendTo('.header_elements');
  278. $('.burger_clone').appendTo('.header_elements');
  279. $('#account').appendTo('.header_elements');
  280. $('#loggedas').appendTo('.header_elements');
  281. acc_plus_logg = $('#account').outerWidth() + $('#loggedas').outerWidth() + 60;
  282. //Новая версия свертывания сайдбара
  283. //Если сайдбар присутствует на странице
  284. if( !$('#sidebar').children().length == 0 ){
  285. //Подготовка DOM'а
  286. //Ставим полоску для свайпа (она же отрабатывает как куки_сеттер)
  287. //$('#main').append('<div class="sidebar_caller"></div>');
  288. $('#wrapper2').append('<div class="sidebar_caller"></div>');
  289. //Закидываем содержимое сайда в обертку, которая позволит не изменять видимый контент при свайпе
  290. var sidebar_size = $('#sidebar').outerWidth() - 30;
  291. //Состояния в зависимости от стейта куки
  292. if(is_sidebar_minimized == 'true' || typeof is_sidebar_minimized === 'undefined'){
  293. //Если кука еще не установлена ИЛИ если стейт сайда установлен в true
  294. $('#sidebar').addClass('opened');
  295. $('#content').css('width', '75%');
  296. $('#sidebar').css('width', '25%');
  297. }
  298. else{
  299. //Если сайд должен быть свернут на старте загрузки
  300. //$('.sidebar_caller').css({'right':'0%'});
  301. $('.sidebar_caller').addClass('opened');
  302. $('#sidebar').width(0);
  303. $('#content').css('width', '100%');
  304. }
  305. $('#sidebar').html( '<div class="sidebar_wrapper" style="min-width: '+ sidebar_size +'px">' + $('#sidebar').html() + '</div>' );
  306. //Крестик
  307. $('.sidebar_wrapper').prepend('<div class="sidebar_closer"></div>');
  308. $('.sidebar_closer').tap(function(){
  309. swipe_sidebar();
  310. });
  311. //end-крестик
  312. $('.sidebar_caller').tap(function(){
  313. swipe_sidebar();
  314. });
  315. function swipe_sidebar(){
  316. if(!$('#sidebar').hasClass('opened')){
  317. $('#sidebar').addClass('opened');
  318. $('.sidebar_caller').removeClass('opened');
  319. $('#sidebar').animate({'width':'25%'}, ani_time/2, 'linear');
  320. //$('.sidebar_caller').animate({'right':'25%'}, ani_time/2, 'linear');
  321. $('#content').animate({'width':'75%'}, ani_time/2, 'linear', function(){
  322. });
  323. deleteCookie('sidebar');
  324. setCookie('sidebar', true, {'expires': cookie_life, 'path': '/'});
  325. }
  326. else{
  327. $('#sidebar').animate({'width':'0%'}, ani_time/2, 'linear');
  328. //$('.sidebar_caller').animate({'right':'0%'}, ani_time/2, 'linear');
  329. $('#content').animate({'width':'100%'}, ani_time/2, 'linear', function(){
  330. $('#sidebar').removeClass('opened');
  331. $('.sidebar_caller').addClass('opened');
  332. });
  333. deleteCookie('sidebar');
  334. setCookie('sidebar', false, {'expires': cookie_life, 'path': '/'});
  335. }
  336. }
  337. }
  338. if( $('#header h1').html().length < 1 ){ $('#header h1').html('&nbsp;'); }
  339. qs_start_width = $('#quick-search').outerWidth();
  340. //Попытка подгрузки
  341. $('#content').append('<div id="content2"></div>');
  342. $('#content2').load();
  343. //После выполнения последнего изменения на странице нужно произвести пересчет ширин и подгон
  344. calc_position();
  345. //После рисайза и смены ориентации делается то же самое
  346. $(window).resize(function(){
  347. calc_position();
  348. });
  349. $( window ).on( "orientationchange", function( event ) {
  350. calc_position();
  351. });
  352. /*
  353. //Под аяксовую подгрузку страничек
  354. $('#header a, #top-main a').click(function(){
  355. console.log('click!');
  356. console.log('click2!');
  357. url = $(this).attr('href');
  358. if(url != window.location){
  359. window.history.pushState(null, null, url);
  360. }
  361. loadContent();
  362. return false;
  363. });
  364. */
  365. });
  366. /*
  367. var url;
  368. function loadContent() {
  369. $('#main').append("<div id='content'/>");
  370. $.ajax({
  371. dataType: 'html',
  372. url: location.origin + url,
  373. success: function(data){
  374. var $response=$(data);
  375. var content = $response.find('#main').html();
  376. if ($response.filter('#wrapper').length == 0) {
  377. $('#content').html(data);
  378. } else {
  379. $('#main').html(content);
  380. }
  381. var bodyClass = data.match('<body class="(.*)">');
  382. var menuClass = data.match('<div id="main" class="(.*)">');
  383. console.log(menuClass[1]);
  384. console.log(bodyClass[1]);
  385. $('body').attr('class',bodyClass[1]);
  386. var menu = $response.find('#main-menu').html();
  387. if ($('#header').find('#main-menu').length == 0) {
  388. $('#header').append("<div id='main-menu'>");
  389. }
  390. $('#main').attr("class",menuClass[1]);
  391. $('#main-menu').html(menu);
  392. if (!$("#main").hasClass("nosidebar")){
  393. $("#content").append("<div class='toggleSidebar_btn'></div>")
  394. }
  395. },
  396. beforeSend: function (request)
  397. {
  398. request.setRequestHeader("X-Requested-With", 'test');
  399. }
  400. });
  401. };
  402. window.onpopstate = function () {
  403. url = window.location.pathname;
  404. loadContent();
  405. };
  406. */