MAX30 / smotriBcastListOnOnePage

// ==UserScript==
// @name smotriBcastListOnOnePage
// @description Show all broadcast on the same page.
// @version 1.1
// @author Max Max
// @license MIT
// @include http://smotri.com/broadcast/list/   
// @include http://*/broadcast/list/ 
// @include http://smotri.com/broadcast/list/erotic/
// @include http:/*/broadcast/list/erotic/
// @match http://smotri.com/broadcast/list/
// @match http://*/broadcast/list/
// @match http://smotri.com/broadcast/list/erotic/
// @match http:/*/broadcast/list/erotic/
// @icon http://i58.tinypic.com/1tpu1l.png
// @run-at document-end
// @grant none
// ==/UserScript==

// [1] не запускаем скрипт во фреймах
if (window.self!=window.top) {return;}
// [2] дополнительно подсказка хромиуму
if (!window.location.href.match(/\/broadcast\/list\//)) {return;} 
// [3] для уникальности проверяем тег
if (!document.getElementById('UserInbox')) {return;} 

var script, timer = 60000; 
(script=document.createElement("script")).textContent = 'try{_D=0;function _error(m){var t=_D;_D=1;_log(m);_D=t;}function _log(m){};slider_._content=new Array();slider_.slider_div=document.createElement(\'div\');slider_.slider_div.setAttribute("class",\'AjaxSlider\');slider_.slider_div.setAttribute("style",\'padding-left:0px;\');_gm_sec=null;__int='+timer+';slider_.serverTimeout=12000;slider_.setServerTimeout=function(){this.clearServerTimeout();this.sth_=setTimeout(this.rtt,this.serverTimeout);};slider_.clearServerTimeout=function(){if(this.sth_)clearTimeout(this.sth_);};slider_.rtt=function(){if(!slider_.loading)return;_log("Timeouted! - Renewing requests");if(slider_.checkPages())_log("Error! 2");};slider_.checkPages=function(){var ok=true;for(var i=1;i<=this.total_page;++i){if(!this._content[i]){this.reqPage(i);ok=false;}}if(!ok)this.setServerTimeout();return ok;};slider_.getPage=function(){if(this.loading||this.total_page<=1)return;window.clearInterval(broadcastListInterval);window.clearInterval(_gm_sec);loadingPopup("ajax_slider_loading_"+this.prefix,this.block_id,1);loadingPopup("ajax_slider_loading_"+this.prefix,this.block_id,0);if(typeof gm_sec_!=="undefined"){if(!this.lpopup){this.lpopup=document.createElement("div");this.lpopup.setAttribute("style","display:none; border:1px gray solid; padding:5px; position:relative; top:0px; font-size:x-small; background-color:#F3F7F8; -moz-opacity:0.9; filter:alpha(opacity=90); opacity: 0.9;");gm_sec_.appendChild(this.lpopup);}this.lpopup.style.display=null;gm_sec_.appendChild(this.lpopup);}var i=0;this.zaehler=0;this.loading=true;this.toRequest=this.total_page;this._content.splice(0);_log("------ Обновление страниц ------");while(++i<=this.total_page)this.reqPage(i);this.setServerTimeout();};slider_._error=function(x,p){if(!this.loading)return;_log("Error occured for page "+p+"! reiterate request. readyState:"+x.readyState+", status:"+x.status+", statusText:"+x.statusText);this.reqPage(p);};slider_.reqPage=function(i,add){var obj=this;eval("var _ecb = function(x){obj._error(x, "+i+");};");delete new Ajax.VideoRequest(obj.url,{method:\'get\',parameters:obj.prefix+\'spage=\'+i,asynchronous:true,onSuccess:function(transport){if(!obj.loading)return;var ret=eval("("+transport.responseText+")");if(obj.total_page>ret.total_page)_log("number of pages decreased; pages:"+ret.total_page);obj.total_page=ret.total_page;if(ret.total_page<ret.page)_log("got excess page ("+ret.page+")");else if(obj._content[ret.page]){_log("got duplicate page ("+ret.page+"), ignoring");return;}else{_log("got page "+ret.page);++obj.zaehler;}obj.drawContent(ret.content,ret.page);if(obj.zaehler==obj.toRequest&&obj.zaehler<obj.total_page){_log("number of pages increased; pages:"+ret.total_page);var t=obj.zaehler;obj.toRequest=obj.total_page;while(++t<=obj.total_page)obj.reqPage(t);}obj.setServerTimeout();},onFailure:_ecb});};slider_.drawContent=function(content,page){try{if(page<=this.total_page)this._content[page]=content;if(this.zaehler>=this.total_page){if(!this.checkPages()){_log("check error!");return;}_log(" >>>> Success!");this.clearServerTimeout();$(this.block_id).update(this._content.join(""));this._content.splice(0);this.draw();this.loading=false;loadingPopup("ajax_slider_loading_"+this.prefix,this.block_id,1);if(this.lpopup){this.lpopup.style.display="none";this.lpopup.innerHTML=null;}}}catch(e){_error("Error!")}};_countdown=function(){gm_sec_.textContent=Math.ceil((__int-(new Date).getTime()+__countdown)/1000);};slider_.draw=function(){var items=document.evaluate("count(//td[@class=\'videoItemTd\'])",document,null,XPathResult.NUMBER_TYPE,null).numberValue;this.slider_div.innerHTML="<p style=\\"color:silver; float:left;\\"><span style=\\"color:#666;\\">"+items+"</span> трансляций на <span style=\\"color:#666;\\">"+this.total_page+"</span> страницах</p><span class=\\"Page\\"><span class=\\"NoSel\\"><a href=\\"javascript:;\\">Обновить</a></span></span><p style=\\"color:silver; float:right;\\"><span style=\\"color:silver;\\">обновление через </span><span id=\\"gm_sec\\" style=\\"color:#666;\\"><strong>"+(__int/1000)+"</strong></span>  сек</p>";var e=document.getElementById(this.slider_block);e.innerHTML="";e.appendChild(this.slider_div);gm_sec_=document.getElementById("gm_sec");__countdown=(new Date).getTime();_gm_sec=setInterval(_countdown,1000);broadcastListInterval=setInterval(function(){try{slider_.reload();}catch(e){_error("Error!")}},__int);this.slider_div.firstChild.nextSibling.onclick=function(){slider_.reload();};};slider_.reload();}catch(e){_error("Smotri-One-Page-List: Exception! "+e.lineNumber)}'; document.body.appendChild(script);