// Две ф-ии общие для COOKIES function setCookie (name, value, expires, path, domain, secure) { document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } function getCookie(name) { var cookie = " " + document.cookie; var search = " " + name + "="; var setStr = null; var offset = 0; var end = 0; if (cookie.length > 0) { offset = cookie.indexOf(search); if (offset != -1) { offset += search.length; end = cookie.indexOf(";", offset) if (end == -1) { end = cookie.length; } setStr = unescape(cookie.substring(offset, end)); } } return(setStr); } // Следующие ф-ии для счетчика кликов материалов function checkNum(numvalue , cookieval) { var offset = 0; if (cookieval.length > 0) { while(true){ offset = cookieval.indexOf(numvalue, offset+1); if ( numvalue == cookieval.substring(0, numvalue.length ) ) return true; else if( offset == -1 ) return false; else if ( typeof(cookieval[offset+numvalue.length]) == 'undefined' | cookieval[offset+numvalue.length] == 'n' ) return true; } } return false; } function countElem(numvalue , cookiename){ var cookieval = getCookie(cookiename); if( cookieval == null ) var cookievalue = numvalue; else if( !checkNum(numvalue , cookieval) ) var cookievalue = cookieval + 'n' + numvalue; else return false; setCookie(cookiename, cookievalue, '60*60*3', '/'); return true; } // Указывает позицию последнего вхождения function get_last_index( char , str ){ var v = -1; var offset = 0; while( true ){ v = str.indexOf( char, v+1 ); if( v != -1 ) offset = v; else break; } return offset; } $(document).ready(function(){ // Установка AJAX $('#loading') .ajaxStart(function(){ $(this).show(); }) .ajaxStop(function(){ $(this).hide(); }); // Если в адресной строке есть #q_№№ var qn = document.location.href.indexOf('#q_'); if( qn != -1 ) $("a[name="+document.location.href.substr(qn+1)+"]").click(); $("[name^=menu_elem_]").click(function(){ var elname='.'+$(this).attr('name'); $(elname).not(".menu_static").slideToggle(500, function(){ // $('.menu_child').not(elname).not(".menu_static").slideUp(500); }); }); if( $.browser.msie && $.browser.version == '6.0' ){ $('#header div,img[src*=png],div.pngfix').pngFix(); $('.fancy_bg_s').width($("#div_name").width()-1); } // Если фрагмент есть, то переадресация... if( $.param.fragment() != '' ){ if($.param.fragment() == 'index') location.href='http://'+domain+'/'; else location.href='http://'+domain+'/'+$.param.fragment(); return false; } // Keep a mapping of url-to-container for caching purposes. var cache = { '': '' }; function vk_share(){ var url; // Теперь всё зависит от URL, есть ли там фрагмент.. if(location.href.indexOf('#') != -1) url='http://'+domain+'/'+location.href.substring(location.href.indexOf('#')+1); // Фрагмента нет, это первая загрузка.. else url=location.href; $(".vk_share").append(VK.Share.button(false,{type: "round", text: "Рекомендовать"})).find('img').css({padding: '0', "border-width": '0', margin: '0'}); } function ajaxclick(link){ var prefix = 'http://'+domain+'/'; prelength = prefix.length; if( link.hasClass('fancybox') ) return false; else if( link.attr('href').substring(1,9) == 'fragment' ) return false; else if( link.attr('href') == prefix ) location.href='#index'; else if( link.attr('href').substring(0,prelength) == prefix ) location.href='#'+link.attr('href').substring(prelength); else if( link.attr('href').substring(0,7) == 'http://' ) return true; else{ // Теперь всё зависит от URL, есть ли там фрагмент.. if(location.href.indexOf('#') != -1) location.href='#'+location.href.substring(location.href.indexOf('#')+1)+link.attr('href'); // Фрагмента нет, это первая загрузка.. else location.href='#'+location.href.substring(prelength)+link.attr('href'); } return false; } // Bind an event to window.onhashchange that, when the history state changes, // gets the url from the hash and displays either our cached content or fetches // new content to be displayed. $(window).bind( 'hashchange', function(e) { var url = $.param.fragment(); if( url == '' ) return false; else if( url == 'index' ) url = ''; if ( cache[ url ] ) { $.each( cache[ url ], function( s, k ) { var c=$('#'+s).empty().append(k); c.find('a:not(.fancybox,.notajax)').click(function(){ return ajaxclick($(this)); }); c.find('a.fancybox').fancybox(); vk_share(); }); } else { $.getJSON('http://'+domain+'/'+url, function(data){ $.each( data, function( s, k ) { var c=$('#'+s).empty().append(k); c.find('a:not(.fancybox,.notajax)').click(function(){ return ajaxclick($(this)); }); c.find('a.fancybox').fancybox(); }); if(typeof(yaCounter962912) != 'undefined') yaCounter962912.hit('http://'+domain+'/'+url); cache[ url ] = data; vk_share(); }); } }); // AJAX для меню $("a").not('.fancybox').not('.notajax').click(function(){ return ajaxclick($(this)); }); vk_share(); // Since the event is only triggered when the hash changes, we need to trigger // the event now, to handle the hash the page may have loaded with. $(window).trigger( 'hashchange' ); });