pastebin

Paste Search Dynamic
Recent pastes
adapt.js
  1. var articles_found = Array();
  2. var articles_seen = Array();
  3. var adapt_loop = 1;
  4. var adapt_max_files = 6;
  5. var old_pos = 0;
  6.  
  7. function adapt_is_found(iters,key,value)
  8. {
  9.         for(k=0;k<iters-1;k++) if (articles_found[k] && articles_found[k][key]==value) return true;
  10.         return false;
  11. }
  12.  
  13. function get_adapt_box(data,mode,file_nr)
  14. {
  15.         if (!mode)
  16.         $(window).scroll(function() {
  17.                 var pos = $(this).scrollTop();
  18.                 if (Math.abs(pos-old_pos)>=50) {old_pos = pos; /*$('#test_div2').html(parseInt($('#test_div2').html())+1);*/ setTimeout("adapt_box_seen("+old_pos+")",500)}
  19.                 });
  20.        
  21.         var item_count = 3;
  22.         if (design_mode==2) item_count = 4;
  23.        
  24.         if (data)
  25.         {
  26.                 var topcats = article_history('topcats',{n:6});
  27.                 if (mode=='_2' || mode=='_3') topcats = article_history('topcats',{n:6,m:(parseInt(mode.split('_')[1]-1)*3)});
  28.                
  29.                 //console.log(mode+' file '+file_nr+' topcats '+topcats);
  30.  
  31.                 //topcats = shuffle_array(topcats);
  32.                 //alert('loop='+adapt_loop+'; file='+file_nr+'; mode='+mode+'; topcats='+topcats);
  33.        
  34.                 for(i=0;i<item_count;i++)
  35.                 {
  36.                         if (file_nr<adapt_max_files && adapt_loop==1 && adapt_is_found(item_count,'categoryId',topcats[i])) continue;
  37.                        
  38.                         var articles = data[topcats[i]];
  39.                        
  40.                         var tmp_found = Array();
  41.                         if (articles)
  42.                         for (j=0;j<articles.length;j++)
  43.                         {
  44.                                 var a = articles[j];
  45.        
  46.                                 if (article_history('is_read',{aid:a.id}) || $('#article_'+a.id).length>0 || adapt_is_found(item_count,'id',a.id) || (adapt_loop==1 && article_history('is_seen',{aid:a.id})>12))  continue;
  47.                                
  48.                                 tmp_found.push(a);
  49.                                 if (tmp_found.length>=5) break;
  50.                         }
  51.  
  52.                         if (tmp_found[0])
  53.                         {
  54.                                 var r = Math.floor(Math.random()*tmp_found.length);
  55.                                 articles_found.push(tmp_found[r]);
  56.                         }
  57.                        
  58.                         if (articles_found.length>=item_count) break;
  59.                 }
  60.                
  61.                 //console.log('mode='+mode+' '+articles_found.length);
  62.                
  63.                 if (articles_found.length<item_count)
  64.                 {
  65.                         var f = file_nr+1;
  66.                         if (f<=adapt_max_files) get_adapt_box(0,mode,file_nr+1);
  67.                         if (f>adapt_max_files && adapt_loop==1) {adapt_loop++; get_adapt_box(0,mode,1);}
  68.                 }
  69.                 else adapt_box_draw(mode,articles_found);
  70.         }
  71.         else
  72.         {
  73.                 var poststr = '';
  74.                 var url = '/ajax/adapt?f='+file_nr;
  75.                 var cached = article_history('get_cache',{file:file_nr});
  76.                 if (cached) get_adapt_box(cached,mode,file_nr);
  77.                 else $.ajax({type:'GET', dataType:'json', url:url, data:poststr, success:function(response){ if (response>'') {get_adapt_box(response,mode,file_nr);article_history('set_cache',{file:file_nr,data:response}); } }});
  78.         }
  79. }
  80.  
  81. var foggy_src_got = false;
  82. function adapt_box_draw(mode,articles)
  83. {
  84.         var item_count = 3;
  85.         if (design_mode==2) item_count = 4;
  86.        
  87.         var after = 1;
  88.         if (mode=='_2') after = 6;
  89.         if (mode=='_3') after = 12;
  90.        
  91.         if ($('.a-first').length>0) after = after + 4;
  92.         if (design_mode==2 && mode>'') after = parseInt(mode.replace('_',''));
  93.        
  94.         var is_article = false;
  95.         if ($('#open_article').length>0) is_article = true;
  96.        
  97.         if (articles.length>=item_count)
  98.         {
  99.                 var el = 'best-box'+mode;
  100.                 var cl = 'best-box';
  101.                 if (design_mode==2) cl+= '2';
  102.                
  103.                 var html = '<div id="'+el+'" class="'+cl+'">';
  104.                 if (design_mode==2) html += '<h3>Tev patiks إ،ie raksti</h3>';
  105.                 var foggy = '';
  106.                 var up_label = '';
  107.                
  108.                 for(i=0;i<item_count;i++)
  109.                 {
  110.                         var a = articles[i];
  111.                        
  112.                         //console.log('mode='+mode+'; item start='+a.id);
  113.                                
  114.                         html += '<div class="bb-item" id="article_'+a.id+'">';
  115.                
  116.                         html +='<div class="bb-item-in">';
  117.                        
  118.                         if (a.fog) foggy = ' onload="foggy(this,\'set\');" ';
  119.                         else foggy = '';
  120.                        
  121.                         //console.log(a.title+' foggy '+foggy);
  122.                        
  123.                         if (foggy && $('#foggy_scr').length==0 && !foggy_src_got)
  124.                         {
  125.                                 //console.log('call foggy scr');
  126.                                 //$('head').append('<script id="foggy_scr" type="text/javascript" src="/resp/js/jquery.foggy.min.js"></script>');
  127.                                 $.ajaxSetup({async: false});
  128.                                 $.getScript('/resp/js/jquery.foggy.min.js', function(){ $.ajaxSetup({async: true}); });
  129.                                 //console.log('call foggy src');
  130.                                 foggy_src_got = true;
  131.                         }
  132.                        
  133.                         up_label = '';
  134.                         if (a.ul) up_label = '<span class="up_label '+a.ul+'">'+a.ul_info+'</span>';
  135.                        
  136.                         html += '<div class="bb-img">'+up_label+'<a href="'+a.fullUrl+'"><img id="bb-img_'+a.id+'" src="'+a.image+'" alt="'+strip_tags(a.title)+'"'+foggy+'></a>';
  137.                         html += '<a class="bb-cat" href="/'+a.fullUrl.split('/')[1]+'">'+a.catName+'</a><div class="clear"></div></div>';
  138.                                
  139.                         if (design_mode==2) html += '<div class="bb-title-wrap">';
  140.                         html += '<a class="bb-title" href="'+a.fullUrl+'">'+strip_tags(a.title)+'</a>';
  141.                         if (design_mode==2) html += '<span class="com" title="Raksta komentؤپri">'+a.comments+'</span></div>';
  142.                
  143.                         html += '<a class="bb-votes" href="'+a.fullUrl+'"><span class="vplus_act" title="إ o rakstu pozitؤ«vi vؤ“rtؤ“juإ،i">'+a.plusVotes+'</span><span class="vminus_act" title="إ o rakstu negatؤ«vi vؤ“rtؤ“juإ،i">'+a.minusVotes+'</span><span class="clear"></span></a>';
  144.        
  145.                         html += '<div class="bb-params">';
  146.                         html += '<a href="'+a.fullUrl+'" class="hitsIco" title="إ o rakstu lasؤ«juإ،i">'+a.hits+'</a>';
  147.                         html += '<a href="'+a.fullUrl+'#com_form" class="comsIco" title="إ o rakstu komentؤ“juإ،i">'+a.comments+'</a>';
  148.                         html += '<div class="clear"></div></div>';
  149.                                
  150.                         //if ($('#nickname').html()=='wtfs') html = html + adapt_loop+' '+article_history('is_seen',{aid:a.id});
  151.                        
  152.                         html += '<div class="clear"></div></div></div>';
  153.                        
  154.                         //console.log('mode='+mode+'; item end='+a.id);
  155.                 }
  156.                 html += '<div class="clear"></div></div>';
  157.                
  158.                 if ($('#'+el)) $('#'+el).remove();
  159.                 if ($('#clan_box')) $('#clan_box').remove();
  160.                
  161.                 var elem_after = '#content_in article:nth('+after+')';
  162.                 if (design_mode==2) elem_after = '#clear_'+(after*2);
  163.                
  164.                 if (!is_article) $(elem_after).after(html);
  165.                 else article_adapt_box_draw(html);
  166.  
  167.                 init_tooltips('#'+el+' img, #'+el+' a, #'+el+' span');
  168.                
  169.                 if (!is_article) $('#'+el+' a').live('click', function(){ save_click('adapt-box'+mode, $(this).attr('href'))});
  170.                
  171.                
  172.                 if (!is_article && (!mode || mode=='_2'))
  173.                 {
  174.                         articles_found = Array();
  175.                         adapt_loop = 1;
  176.                         if (!mode) setTimeout("get_adapt_box(0,'_2',1)",500);
  177.                         if (mode=='_2') get_adapt_box(0,'_3',1);       
  178.                 }
  179.                
  180.         }
  181. }
  182.  
  183. function article_adapt_box_draw(html)
  184. {
  185.     var wrap = '<div id="article_adapt" style="display:none"><a class="close" onclick="$(this).parent().hide(\'slow\');createCookie(\'ref_banner\',1,1);"></a><div class="clear"></div>'+html+'</div>';
  186.     $('body').append(wrap);
  187.     $('#article_adapt .bb-votes').remove();
  188.     $('#article_adapt .bb-params').remove();
  189.    
  190.     $('#article_adapt a').live('click', function(){ save_click('adapt-box-article', $(this).attr('href'))});
  191.    
  192.     $("#article_adapt").show("slow");
  193. }
  194.  
  195. function adapt_box_seen(pos)
  196. {
  197.         if (pos==old_pos)
  198.         {
  199.                 $('.best-box .bb-item').each(function() {if ($(this).visible())
  200.                                         {
  201.                                                 var id = $(this).attr('id').split('_')[1];
  202.                                                 if (articles_seen.indexOf(id)==-1)
  203.                                                 {
  204.                                                         articles_seen.push(id);
  205.                                                         article_history('box_seen',{aid:id});
  206.                                                         //$('#test_div').html($('#test_div').html()+'seen '+id+'; ');
  207.                                                 }
  208.                                                
  209.                                         }
  210.                 });
  211.         }
  212. }
  213.  
  214. function article_history(mode,opts)
  215. {
  216.         var storage_key = 'article_stats';
  217.         var cache_key = 'article_cache';
  218.         if (opts && opts.cache_key) cache_key = opts.cache_key;
  219.        
  220.         if (mode=='store' && typeof(Storage) !== "undefined" && opts && opts.aid>0 && opts.cid>0)
  221.         {
  222.                 var a = localStorage.getItem(storage_key);
  223.                 if (a && a.length>10) a = JSON.parse(a);
  224.                        
  225.                 if (!a || !a['a'] || (Object.keys(a['a']).length>2000)) {a = {}; a['a'] = {}; a['c'] = {}; a['a'][opts.aid] = 0; a['c'][opts.cid] = 0;}
  226.                        
  227.                 if (!a['a'][opts.aid])
  228.                 {
  229.                         a['a'][opts.aid] = 1;
  230.                        
  231.                         if (!a['c'][opts.cid]) a['c'][opts.cid] = 1;
  232.                         else a['c'][opts.cid]++;
  233.                 }
  234.                        
  235.                 localStorage.setItem(storage_key, JSON.stringify(a));
  236.         }
  237.        
  238.         if (mode=='box_seen' && typeof(Storage) !== "undefined" && opts && opts.aid>0)
  239.         {
  240.                 var a = localStorage.getItem(storage_key);
  241.                 if (a && a.length>10) a = JSON.parse(a);
  242.                        
  243.                 if (!a) a = {};
  244.                 if (!a['s'] || Object.keys(a['s']).length>2000) a['s'] = {};
  245.                        
  246.                 if (!a['s'][opts.aid]) a['s'][opts.aid] = 1;
  247.                 else a['s'][opts.aid]++;
  248.                        
  249.                 localStorage.setItem(storage_key, JSON.stringify(a));
  250.         }
  251.        
  252.         if (mode=='topcats' || mode=='topcats_def')
  253.         {
  254.                 var topcats =        Array(30,23,18,67,6,13,8,69,68);
  255.                 var top_cat_weight = Array( 7, 6,5, 4, 3, 2,2, 1, 1);
  256.                 var return_topcats = Array();
  257.                
  258.                 var n = 3;
  259.                 var m = 0;
  260.                
  261.                 if (opts && opts.n && parseInt(opts.n)>0) n = parseInt(opts.n);
  262.                 if (opts && opts.m && parseInt(opts.m)>0) m = parseInt(opts.m);
  263.                        
  264.                 var a = null;
  265.                 if (typeof(Storage) !== "undefined" && mode=='topcats')
  266.                 {
  267.                         a = localStorage.getItem(storage_key);
  268.                         if (a && a.length>10) a = JSON.parse(a);
  269.                 }
  270.                 else {a = {}; a['c'] = {};}
  271.                        
  272.                 if (a && a['c'] && Object.keys(a['c']).length<n+m)
  273.                 {
  274.                         var l = Object.keys(a['c']).length;
  275.                         for(i=l;i<n+m;i++)
  276.                                 for(j=0;j<topcats.length;j++)
  277.                                 {
  278.                                         //alert('i='+i+'; j='+j+' check='+topcats[j]);
  279.                                         if (!a['c'][topcats[j]]) {a['c'][topcats[j]] = top_cat_weight[j]; /*alert('add='+topcats[j]);*/break;}
  280.                                 }
  281.                 }
  282.                            
  283.                 if (a && a['c'] && Object.keys(a['c']).length>=n+m)
  284.                 {
  285.                         //for(i=0;i<n+m;i++) if (!a['c'][topcats[i]]) a['c'][topcats[i]] = 1;
  286.                                    
  287.                         var obj = a['c'];
  288.                         var cats = '';
  289.                         cats = Object.keys(obj).sort(function(a,b){return obj[b]-obj[a]});
  290.    
  291.                         for(i=0;i<n;i++) topcats[i] = parseInt(cats[i+m]);
  292.                 }
  293.                
  294.                 if (topcats.length>n) for(i=0;i<n;i++) return_topcats[i] = topcats[i];
  295.                 else return_topcats = topcats;
  296.                  
  297.                 return return_topcats;
  298.         }
  299.        
  300.         if ((mode=='is_read' || mode=='is_seen') && opts.aid)
  301.         {
  302.                 if (typeof(Storage) !== "undefined")
  303.                 {
  304.                         var a = localStorage.getItem(storage_key);
  305.                         if (a && a.length>10) a = JSON.parse(a);
  306.                         else return false;
  307.                        
  308.                         var key = 'a';
  309.                         if (mode=='is_seen') key = 's';
  310.  
  311.                         if (a[key] && a[key][opts.aid]) return a[key][opts.aid];
  312.                         else return false;
  313.                 }
  314.                 else return false;
  315.         }
  316.        
  317.         if ((mode=='set_cache' || mode=='get_cache') && opts.file)
  318.         {
  319.                 if (typeof(Storage) !== "undefined")
  320.                 {
  321.                         var a = localStorage.getItem(cache_key);
  322.                         var d = new Date();
  323.                         var now = Math.round(d.getTime()/1000);
  324.  
  325.                        
  326.                         if (mode=='get_cache' && a && a.length>10)
  327.                         {
  328.                                 a = JSON.parse(a);
  329.                                 if (a && a['expire'] && parseInt(a['expire'])>=now && a['data'] && a['data'][opts.file]) return a['data'][opts.file];
  330.                                 else return false;
  331.                         }
  332.  
  333.                         if (mode=='set_cache')
  334.                         {
  335.                                 var expire = now+3600*4;
  336.                                 if (opts && opts.expire) expire = opts.expire;
  337.  
  338.                                 if (a && a.length>10) a = JSON.parse(a);
  339.                                 if (!a || !a['expire'] || parseInt(a['expire'])<now || !a['data']) {a ={}; a['expire'] = expire; a['data'] = {}; }
  340.                                
  341.                                 a['data'][opts.file] = opts.data;
  342.                                
  343.                                 localStorage.setItem(cache_key, JSON.stringify(a));
  344.                         }
  345.                 }
  346.                 else return false;
  347.         }
  348.        
  349.        
  350.         if (($('#open_article').length==0) && ($('#nickname').html()=='wtfs' || $('#nickname').html()=='kakasy'))
  351.         {
  352.             var a = localStorage.getItem(storage_key);
  353.             if (a && a.length>10) a = JSON.parse(a);
  354.             else return false;
  355.                
  356.             if ($('#bb-test').length==0) $('.best-box:last').after('<div id="bb-test"></div>')
  357.             if (a && a['a'] && a['s']) $('#bb-test').html('a='+Object.keys(a['a']).length+'; s='+Object.keys(a['s']).length);
  358.         }
  359.        
  360.         return false;
  361. }
  362.  
  363. function top_cats_draw(data,opts)
  364. {
  365.     if (lang=='ru' || $('#head_cats').length==0) return false;
  366.    
  367.     if (!data)
  368.     {
  369.                 var d = new Date();
  370.                 var now = Math.round(d.getTime()/1000);
  371.                 var exp = now+1800;
  372.                 var top_cat_cache = article_history('get_cache',{cache_key:'top_cat_info',expire:exp,file:1});
  373.                 //top_cat_cache = false;
  374.                 if (!top_cat_cache)
  375.                 {
  376.                         var top_cats = article_history('topcats',{n:9});
  377.                         if (top_cats[0]) $.ajax({type:'GET', /*dataType:'json',*/ url:'/ajax/cat_data', data:'ids='+JSON.stringify(top_cats), success:function(response){ if (response>'') {top_cats_draw(response,opts); article_history('set_cache',{cache_key:'top_cat_info',expire:exp,file:1,data:response}); }  }});
  378.                 }
  379.                 else {top_cats_draw(top_cat_cache,opts);}
  380.     }
  381.     else
  382.     {
  383.                 var cats = JSON.parse(data);
  384.                 var web = 'web';
  385.                 var parent = '#head_cats';
  386.                 var stats_key = 'adapt-cats-web';
  387.                
  388.                 if (is_mob)
  389.                 {
  390.                         web = '';
  391.                         if (design_mode==1) parent = '#mob_cats';
  392.                         stats_key = 'adapt-cats-mob';
  393.                 }
  394.                
  395.                 var used_cats = {};
  396.                 var html = '';
  397.                 var last_top = 0;
  398.                        
  399.                 for(i=0;i<cats.length;i++)
  400.                 if (cats && cats[i].id)
  401.                 {
  402.                         var cl = '';
  403.                         if (opts && opts.currTag && opts.currTag==cats[i].id) cl = 'class="act"';
  404.                         var name = cats[i].name;
  405.        
  406.                         html = '<a href="/'+cats[i].url+'" '+cl+' onclick="save_click(\''+stats_key+'\', \''+cats[i].url+'\');">'+adapt_names('top_cats'+web,cats[i].name)+'</a>';
  407.                         if (!web || design_mode==2) html = '<span>'+html+'</span>';
  408.                        
  409.                         $(parent).append(html);
  410.                 }
  411.                        
  412.                 if (design_mode==1)
  413.                 {
  414.                         if (web) html = '<a href="#" class="morec" onclick="save_click(\''+stats_key+'\', \'more\');show_morecats();return false;">vairؤپk <font>&#9660;</font></a>';
  415.                         else html = '<span><a href="#" class="morec" onclick="save_click(\''+stats_key+'\', \'more\');open_menu(\'cat\',\'head_mob3\',\'down\');return false;">vairؤپk <font>&#9660;</font></a></span>';
  416.                 }
  417.                 else html = '<span class="morec"><a href="#" onclick="save_click(\''+stats_key+'\', \'more\');menu_open(\'morecats\',{elem:\'#head_bottom\'});return false;">vairؤپk <font>&#9660;</font></a></span>';
  418.                
  419.                 if (web && design_mode==1) $(parent).prepend(html);
  420.                 else $(parent).append(html);
  421.  
  422.                 add_custom_cat({name:'Prognoإ¾u spؤ“le',url:'/prognozu-spele',img:'/img/icons/prediktors.png',pos:'first',is_web:web,stats:stats_key,elem:parent})
  423.                 if (design_mode==1) remove_duplicate_cats();
  424.                 if (design_mode==2)
  425.                 {
  426.                         for(i=0;i<3;i++)
  427.                         if ($(parent+' span:first').offset().top + 5 < $(parent+' .morec').offset().top) $(parent+' span.morec').prev().remove();
  428.                 }
  429.     }
  430.    
  431. }
  432.  
  433. function add_custom_cat(data)
  434. {
  435.         cl = '';
  436.         if (window.location.pathname==data.url) cl = 'class="act"';
  437.  
  438.         var html = '<a href="'+data.url+'" '+cl+' onclick="save_click(\''+data.stats+'\', \''+data.url+'\');"><img src="'+data.img+'">'+data.name+'</a>';
  439.         if (!data.is_web || design_mode==2) html = '<span class="custom">'+html+'</span>';
  440.        
  441.         $(data.elem).prepend(html);
  442. }
  443.  
  444. function remove_duplicate_cats()
  445. {
  446.         var used_cats = {};
  447.         var parent = '#head_cats';
  448.         if ($('#head_web:visible').length==0) parent = '#mob_cats';
  449.         var top_check = $(parent+' a:first').offset().top;
  450.         //console.log('top_check='+top_check);
  451.        
  452.         $(parent+' a').each(function() {if ($(this).offset().top<=top_check+10) {var link = $(this).attr('href'); used_cats[link] = 1; /*console.log('used='+link);*/} });
  453.         $('#cat a').each(function() {var link = $(this).attr('href'); if (used_cats[link]) {/*console.log('remove='+link);*/ $(this).remove();} });
  454. }
  455.  
  456. function show_morecats()
  457. {
  458.         if ($('#more_cat_wrap').length>0)
  459.         {
  460.                 $('#more_cat_wrap').remove();
  461.         }
  462.         else
  463.         {
  464.                 var html = '<div id="more_cat_wrap"><div id="more_cats" class="submenu" style="width:340px;overflow:hidden;" >';
  465.                
  466.                 $('#cat a').each(function() {if ($(this).attr('class').indexOf('mobonly')==-1) {html += '<a href="'+$(this).attr('href')+'" >'+$(this).find('span').html()+'</a>'}});            
  467.                
  468.                 html += '</div></div>';
  469.                
  470.                 $('#head').append(html);
  471.         }
  472.  
  473. }
  474.  
  475. function adapt_names(mode,name)
  476. {
  477.     if (mode=='top_cats')
  478.     {
  479.         if (name.length>14)
  480.         {
  481.             return name.replace('&',' &').split(' ')[0];
  482.         }
  483.     }
  484.     if (mode=='top_catsweb')
  485.     {
  486.         return name.replace('&amp;',' &amp; ');
  487.     }
  488.    
  489.     return name;
  490. }
Parsed in 0.114 seconds