Advertisement
KiberInfinity

Wallpaper Rotator

Mar 9th, 2013
66
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name          Wallpaper Rotator (vkopt plugin)
  3. // @description   (by KiberInfinity id13391307)
  4. // @include       http://*vkontakte.ru/*
  5. // @include       http://*vk.com/*
  6. // ==/UserScript==
  7.  
  8. var vkThemeWallpaperRotator=null;
  9.  
  10. (function(){
  11.    var w={
  12.       wid:0,
  13.       walls:[
  14.          'http://cs9811.vk.me/u13391307/137964159/w_a648156f.jpg',
  15.          'http://cs9811.vk.me/u13391307/137964159/w_03ce8e6d.jpg',
  16.          'http://cs9811.vk.me/u13391307/137964159/w_eaff67d9.jpg',
  17.          'http://cs10787.vk.me/u13391307/137964159/w_0c77e2c4.jpg',
  18.          'http://cs10787.vk.me/u13391307/137964159/w_d190159c.jpg',
  19.          'http://cs301612.vk.me/v301612516/48c6/fnUyv-O8DaE.jpg'
  20.       ],
  21.       anim:400, //ms
  22.       delay:3*1000, //ms
  23.       lang:{
  24.          'SetBg':'\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0444\u043e\u043d',
  25.          'Help':'Wallpaper rotator'//'\u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u043e\u0440\u0449\u0438\u043a\u0435 \u0444\u043e\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043a\u0438 <b>"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0444\u043e\u043d"</b> \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u043e\u043d \u0442\u0435\u043c\u044b.'
  26.       },
  27.       id:'vkTWallRttrBgUrl',
  28.       css:function(){
  29.       return '\
  30.         .bg_anim{\
  31.            position:fixed;\
  32.            left:0px; top:0px; right:0px; bottom:0px;\
  33.            background-attachment: fixed !important;\
  34.            background-position: 50% 50% !important;\
  35.            background-repeat: no-repeat !important;\
  36.            background-size: cover !important;\
  37.            -webkit-transition: opacity '+w.anim+'ms linear;\
  38.            -moz-transition: opacity '+w.anim+'ms linear;\
  39.            -o-transition: opacity '+w.anim+'ms linear;\
  40.            transition: opacity '+w.anim+'ms linear;\
  41.         }\
  42.         ';
  43.       },
  44.       tpl:'html body, html body[onresize*="onBodyResize"][need_background]{ background:url("%URL%") fixed no-repeat 50% 50% !important; background-size: cover !important;}',
  45.       run:function(){
  46.          w.wid=Math.round(Math.random()*(w.walls.length-1));
  47.          var bg=w.walls[w.wid];//localStorage[w.id] || "";
  48.          /*
  49.          if (bg!=""){
  50.            bg=w.tpl.replace(/%URL%/g,bg);
  51.          }*/
  52.          
  53.          var styleElement = document.createElement("style");
  54.          styleElement.type = "text/css";
  55.          styleElement.id=w.id;
  56.          styleElement.appendChild(document.createTextNode(w.css()));
  57.          
  58.          var append=function(){
  59.             var headID = document.getElementsByTagName('head')[0];
  60.             if (!headID) {
  61.                setTimeout(append,10);
  62.                return;
  63.             } else {
  64.                headID.appendChild(styleElement);
  65.             }
  66.          
  67.          }
  68.          var append_bg=function(){
  69.             var body = document.getElementsByTagName('body')[0];
  70.             if (!body) {
  71.                setTimeout(append_bg,10);
  72.                return;
  73.             } else {
  74.                var bg1 = document.createElement("div");
  75.                bg1.id='vk_bg1';
  76.                bg1.style.opacity=1;
  77.                bg1.style.backgroundImage="url('"+w.walls[w.wid]+"')";
  78.                //console.log(w.walls[w.wid]);
  79.                bg1.className='bg_anim';
  80.                body.insertBefore(bg1, body.firstChild);
  81.                
  82.                bg1 = document.createElement("div");
  83.                bg1.id='vk_bg2';
  84.                bg1.style.opacity=1;
  85.                w.wid=(w.wid+1)>=w.walls.length?0:w.wid+1;
  86.                //console.log(w.walls[w.wid]);
  87.                bg1.style.backgroundImage="url('"+w.walls[w.wid]+"')";
  88.                bg1.className='bg_anim';
  89.                body.insertBefore(bg1, body.firstChild);              
  90.                //body.appendChild(styleElement);
  91.             }
  92.          
  93.          }        
  94.          
  95.          append();
  96.          append_bg();  
  97.  
  98.          w.next_int=setInterval(w.next,w.delay);
  99.          if (document.getElementById('vkSkinMan') && window._vkopt_started)  vkMsg(w.lang['Help'],4000);
  100.      
  101.       },
  102.       next:function(){
  103.          var bg1=ge('vk_bg1');
  104.          var bg2=ge('vk_bg2');
  105.          var cur=(bg1.style.opacity==1?bg1:bg2);
  106.          var next=(cur==bg1?bg2:bg1);
  107.          bg1.style.opacity=(bg1.style.opacity==0)?1:0;
  108.          /*
  109.          next.style.opacity=1;
  110.          cur.style.opacity=0;*/
  111.          setTimeout(function(){
  112.             w.wid=(w.wid+1)>=w.walls.length?0:w.wid+1;
  113.             cur.style.backgroundImage="url('"+w.walls[w.wid]+"')";
  114.          },w.anim+100);
  115.       },
  116.       set_wall:function(url){
  117.          var bg = url || "";
  118.          localStorage[w.id]=bg;
  119.          if (bg!=""){
  120.            bg=w.tpl.replace(/%URL%/g,bg);
  121.          }
  122.          document.getElementById(w.id).innerHTML=bg;
  123.          return false;
  124.       },
  125.       onDisable:function(){
  126.          document.getElementById(w.id).innerHTML='';
  127.          clearInterval(w.next_int);
  128.          re('vk_bg1');
  129.          re('vk_bg2');
  130.       },
  131.       pvActions:function(photo_data){// return string
  132.          console.log(photo_data);
  133.          var src = photo_data.w_src || photo_data.z_src || photo_data.y_src || photo_data.x_src;
  134.          return '<div>'+
  135.             '<a href="#" class="fl_r" onclick="return vkThemeWallpaperRotator.set_wall(\'\');">x</a>'+
  136.             '<a href="#" onclick="return vkThemeWallpaperRotator.set_wall(\''+src+'\');">'+w.lang['SetBg']+'</a>'+
  137.          '</div>';
  138.       }
  139.    };
  140.  
  141.   vkThemeWallpaperRotator=w;
  142. })();
  143.  
  144. vkThemeOnDisable=vkThemeWallpaperRotator.onDisable;
  145. vkThemeWallpaperRotator.run();
  146.  
  147. /* VKOPT PLUGIN */
  148. if (!window.vkopt_plugins) vkopt_plugins={};
  149. (function(){
  150.    var PLUGIN_ID = 'vkThemeWallpaperRotator';
  151.    var PLUGIN_NAME = 'vk.com Theme Wallpaper Rotator';  
  152.    var ADDITIONAL_CSS='';
  153.  
  154.    vkopt_plugins[PLUGIN_ID]={
  155.       Name:PLUGIN_NAME,
  156.       css:ADDITIONAL_CSS,
  157.       // FUNCTIONS
  158.       init:             null,                              // function();                        //run on connect plugin to vkopt
  159.       pvActions:        null //vkThemeWallpaperRotator.pvActions, // function(photo_data); ||  String    //PHOTOVIEWER_ACTIONS
  160.    };
  161.    if (window.vkopt_ready) vkopt_plugin_run(PLUGIN_ID);
  162. })();
Advertisement
RAW Paste Data Copied
Advertisement