Script at http://1.rp-api.com/rjs/repost-arti ...(script src)(report as good / report as bad) /*
* article reposter
* copyright 2010 free range content inc
*/
var _rpu = _rpu || { };
(function(window, document, undefined) {
if (document.rpuloaded) {
return;
}
document.rpuloaded = {};
//bail if disabled
if (_rpu.off == true) {
return;
}
document.rpuloaded.framesetup = framesetup;
//basic housekeeping
var hostdata = null;
var my_host = 'http://1.rp-api.com';
var my_static_host = my_host.replace(/\/\//, "//static.");
var $;
var jquery;
var teasers = false;
var starttime =(new date()).gettime();
//shortcuts
var w = window,
d = document,
l = d.location,
ec = encodeuricomponent;
if (w._rpuquery !== undefined && typeof w._rpuquery == 'function') {
$ = jquery = w._rpuquery;
//woot! we already have the right jquery
framesetup(); //go 4 it
} else if (w.jquery === undefined || !/1\.(4\.3|4.\4|5|6|7|8)/.test(w.jquery.fn.jquery)) {
if (document.location.protocol == 'https:') {
require("https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js", jqloaddone, "rpuquery"); //thanks google!)
} else {
require("http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js", jqloaddone, "rpuquery"); //thanks google!)
}
} else {
var script_tag = d.getelementbyid('rpuquery'); //is it ours?
if(script_tag != undefined) {
script_tag.rpu_callbacks.push(jqloaddone); //even if we have jquery ours is loading so use it
} else {
$ = w._rpuquery = jquery = w.jquery;
//woot! we already have the right jquery
framesetup(); //go 4 it
}
}
//load complete handler for jq - restores users jq and hides ours
function jqloaddone() {
if (jquery === undefined) { //for some reason ie9 is calling this twice
if (window._rpuquery === undefined) {
$ = jquery = window.jquery.noconflict(true);
window._rpuquery = jquery;
} else {
$ = jquery = window._rpuquery;
}
framesetup(); //go 4 it
}
}
function require(jsfile, callback, id) {
var script_tag;
script_tag = d.getelementbyid(id);
if (!script_tag) {
script_tag = d.createelement('script');
script_tag.setattribute("type", "text/javascript");
script_tag.setattribute("src", jsfile);
script_tag.setattribute("id", id);
(d.getelementsbytagname("head")[0] || d.documentelement).appendchild(script_tag);
script_tag.rpu_callbacks = [];
script_tag.rpu_callbacks.push(callback);
if (typeof callback == 'function') {
script_tag.onload = docallbacks;
script_tag.onreadystatechange = function() { // ie
if (this.readystate == 'complete' || this.readystate == 'loaded') {
docallbacks();
}
};
}
} else {
if (script_tag.rpu_callbacks === false) {
(callback)(); //race catcher
} else {
script_tag.rpu_callbacks.push(callback);
}
}
function docallbacks() {
while (script_tag.rpu_callbacks.length) {
(script_tag.rpu_callbacks.shift())();
}
script_tag.rpu_callbacks = false; //done
}
};
function framesetup() {
settimeout(realframesetup,1); //force us out of the script queue to prevent weird reace condition wihere there are multiple jquery instances
}
function realframesetup() {
//wrap jquery ready in a try/catch per http://stackoverflow.com/questions/1890512/handling-errors-in-jquerydocument-ready
//so that other peoples errors don't blow us up.
jquery.fn.oldready = jquery.fn.ready;
jquery.fn.ready = function(){
try{
return jquery.fn.oldready.apply(this, arguments);
}catch(e){
if ("line" in e) {
e.linenumber = e.line;
}
try {
console.log("jquery failed callback: "+e.tostring()+" "+e.filename+":"+e.linenumber);
} catch (e) {
//ignore error if we have no console
}
return false;
}
};
jquery(document).ready(function($) {
var acount;
msginit();
//clean up crap in our embed codes that 'helpful' editors added
$('.rpuembedcode br').remove();
//if :empty and :parent worked the way any rational human expects this would be easy
$(".rpuembedcode p").each(function() {
if ($.trim($(this).text()).length == 0) {
var kids = $(this).children(); //save the kids
if (kids.length) {
$(this).after(kids);
}
$(this).remove(); //kill the parent;
}
});
setscopes();
findarticles();
//now we sit back and poll for changes in the number of articles - this handles the case where
//somebody loaded another embed via ajax
acount = $('.rpuarticle').size();
//worst case catch for never ending pages becasue we don't always get a resize evvent
settimeout(apoll, 500);
function apoll() {
setscopes();
findarticles();
settimeout(apoll, 500);
}
//catch never ending pages
$('body').resize(function() {
setscopes();
findarticles();
});
});
}
function findarticles() {
var pos = 0;
$('.rpuarticle').not(".rpurepostmain").each(function() {
var tease, rpkey = $(this).attr('id'),
rpopt = {},
cls, jumpreg = /.*rpujump-(\d+).*/,
scope;
//only do articles we have'nt already processed
if ($(this).hasclass('rpuprocessed')) {
return;
}
$(this).addclass('rpuprocessed');
if($(this).closest(&quo t;.rpunoexpand").size() != 0) {
return;
}
//$(this).hasclass('rpunotease') ? tease = false : tease = teasers; //override auto tease
if (rpkey !== undefined && rpkey != "") {
rpkey = rpkey.replace(/^repost-(\w{32}).*/, "$1");
} else {
var classes = $(this).attr('class');
rpkey = classes.replace(/.*rpurepost-(\w{32}).*/, "$1");
$(".rpurepost-"+rpkey+"-top:first").attr('id', 'repost-' + rpkey); //flag any dupes as done;
}
if (_rpu['_' + rpkey] == undefined) {
_rpu['_' + rpkey] = {
title: true,
jump: 0
};
}
//check for class bassed options
if ($(this).hasclass('rpunotitle')) {
_rpu['_' + rpkey].title = false;
}
cls = $(this).attr('class');
if (jumpreg.test(cls)) {
_rpu['_' + rpkey].jump = cls.replace(jumpreg, '$1')
}
if (_rpu['_' + rpkey]) {
rpopt = _rpu['_' + rpkey];
}
if ($('.rpurepost-' + rpkey + '-bottom').size() > 0) {
$('.rpurepost-' + rpkey + '-bottom').hide();
tease = false;
} else {
if (rpopt.jump > 0) {
tease = rpopt.jump;
} else {
tease = true;
$('.rpurepost-' + rpkey + '-top').parent().find(".rpubrk").show();
}
}
if (!$.support.ajax) {
$("#repost-" + options.rpkey).append("<p>sorry, this browser is unable to display this article correctly. however you may read the article on it's original site by clicking on the link above.</p>");
} else {
//only invoke for the -top div
if (!$(this).hasclass('rpurepost-' + rpkey + '-bottom') && $(this).attr('id') == "repost-"+rpkey) {
scope = $(this).closest('._rpuarticlescope');
settimeout(function() {
doarticle(rpkey, tease, scope);
},(pos * 100)+1);
pos++;
}
}
});
//see if anybody needs a callback
if ('init' in _rpu) {
for (var callback in _rpu.init) {
(_rpu.init[callback])();
}
}
}
function doarticle(rpkey, teasers, scope) {
my_host = findhost(my_host);
my_static_host = my_host.replace(/\/\//, "//static.");
var w = math.max(300,$(".rpurepost-" + rpkey +"-top").width());
var button = (scope).find('.rpurepostbutton, .rpurepostusbutton, .rpurepostusbuttonwrap, .rpurepostbuttonwrap');
if (teasers) {
//remove the button class and set the href to preview page
if(button.length) {
$(button).attr('href', 'http://www.repost.us/article-preview/#!shash=' + rpkey)
.attr('rpuref', 'http://www.repost.us/article-preview/#!shash=' + rpkey)
.addclass('_rpunotonpage');
}
} else {
$(button).hide();
}
$("#repost-" + rpkey).append('<p id="rpurepost-text-helper">test<a href="#">link</a></p>');
var fgcol = $("#rpurepost-text-helper").css('color');
var bgcol = $("#rpurepost-text-helper").css('background-color');
var lkcol = $("#rpurepost-text-helper a").css('color');
var font = $("#rpurepost-text-helper").css('font-family');
var fsiz = $("#rpurepost-text-helper").css('font-size');
var lnht = $("#rpurepost-text-helper").css('line-height');
var align = $("#rpurepost-text-helper").css('text-align');
if(!fsiz.match(/px/)) {
fsiz="14px"; //do somthing sensibe if they are using ancient <font size="3"> tags
lnht ="normal";
}
if (bgcol == 'transparent') { // ie i'm looking at you - we have to go up until we find a color
var helper = document.getelementbyid("rpurepost-text-helper");
while (helper != document && $(helper).css('background-image') == undefined && $(helper).css('background-color') == 'transparent') {
helper = helper.parentnode;
}
bgcol = $(helper).css('background-color')
}
$("#rpurepost-text-helper").remove();
if ($("#repost-" + rpkey).hasclass('rpuarticle-no-tease')) {
teasers = false;
}
var params = {
fgcol: fgcol,
bgcol: bgcol,
lkcol: lkcol,
rpkey: rpkey,
font: font,
fsiz: fsiz,
lnht: lnht,
parent: document.location.href,
teaser: teasers,
width: w,
align: align
}
$('img').each(function() {
try {
var m = $(this).attr('src').match(/repost-us-image-\d+/);
if (m !== null && $("#repost-" + rpkey+ " img").size()) {
var n = parseint(m[0].replace(/repost-us-image-/,""));
var r = new regexp(n);
var i = $("#repost-" + rpkey+ " img").attr('src');
if (i.match(r)) {
params['nf'] = true;
}
}
} catch(e) {
//ignore;
}
});
var options = [];
options.push('id=' + encodeuricomponent(rpkey));
options.push('t=' + teasers);
options.push('width=' + math.max(w, 300));
if ("rpusubid" in window) options.push('subid='+encodeuricomponent(rpusubid));
var extras = "";
if (rpkey == '00000000000000000000000000000000') {
options.push('url=' + encodeuricomponent($("#rputarget").text()));
options.push('bsel=' + encodeuricomponent(_rpu.bsel));
options.push('tsel=' + encodeuricomponent(_rpu.tsel));
options.push('bneg=' + encodeuricomponent(_rpu.bneg));
options.push('hid=' + encodeuricomponent(_rpu.hid));
//extras = window.location.search.replace(/^\?/,"&");
}
options.push('ref=' + encodeuricomponent(document.location));
messageproc(); //listen for replies before we open the iframe
_rpu["_" + rpkey].alt = $("#repost-" + rpkey).html();
$("#repost-" + rpkey).addclass("rpuslug"); //wrapp the inner in a dic so we can hide it later
$("#repost-"+rpkey+ ".rpuslug").hide();
var moreid = "more";
if(document.location.hash.match(/#more-\d+/)) {
moreid = document.location.hash.replace(/#/,"");
$('#'+moreid).remove(); //make ther old more tag go away
}
var splashid = math.floor((math.random()*3)+1);
options.push("splashid=" + splashid);
$("#repost-" + rpkey)
.after('<iframe id="repost-frame-' + rpkey + '" src="' + my_host + '/repost/fetch.php?' + options.join('&') + extras + '#' + encodeuricomponent(hashencode(params)) + '" scrolling="no" frameborder="0" width="' + w + '" height="0">')
.prepend('<a id="'+moreid+'">').before('</a><div class="rpupreload rpupreload-'+rpkey+'" style="font-family:\'signika\',\'open sans\',\'helvetica neue\',helvetica,arial,sans-serif;font-size:200%;color:#f60;border:none;text-align:center; height:200px;margin-top:90px;"><img src="'+ _rpu.splash[splashid - 1] +'"></div>');
$("#repost-frame-" + rpkey).width(w);
try {
d = (new date()).gettime();
console.log("embed frame added "+(d-starttime)+"ms");
} catch (e) {
//ignore error if we have no console
}
settimeout(checktimeout(rpkey),15000);
//$(".rpupreload").fadeto (0,0).fadeto(4000,1);
//throb($(".rpupreload"),5, 1,0.01);
if(document.location.hash.length > 1) {
var h = document.location.hash;
document.location.hash = "#";
document.location.hash = h; //force a jump to the new anchor location
}
function checktimeout(rpkey) {
return (function() {
if($("#repost-frame-"+rpkey).height() == 0) {
//ooops we did't resize in 20 seconds
var orig = $("#repost-"+rpkey+" a.rputitle").attr('href');
$(".rpupreload-"+rpkey).hide();
$(&quo t;#repost-"+rpkey+".rpuslug").show();
$("#repost-"+rpkey+&quo t; .rputhumb").hide();
$("#repost-"+rpkey+".rpuslug").append(&q uot;error: embed failed to load - the content may still be available at it's <a target=\"_blank\" href=\""+orig+"\">original location</a>");
}
});
}
var opts = {
lines: 10,
// the number of lines to draw
length: 0,
// the length of each line
width: 20,
// the line thickness
radius: 40,
// the radius of the inner circle
color: fgcol,
// #rbg or #rrggbb
speed: 1,
// rounds per second
trail: 70,
// afterglow percentage
shadow: true // whether to render a shadow
};
$(window).resize(function() {
nw = $("#repost-frame-" + rpkey).parent().width();
if (w != nw) {
$("#repost-frame-" + rpkey).width(nw);
}
});
}
function messageproc() {
$.receivemessage(function(e) {
var param = e.data.split('&'),
options = {},
rmatch = new regexp(findhost());
if ('origin' in e && !e.origin.match(rmatch)) {
return;
}
if (_rpu.snapshot) {
return;
}
for (var i = 0; i < param.length; i++) {
var arg = param[i].split('=', 2);
arg[1] = arg[1].replace(/\+/gm, ' ');
options[arg[0]] = decodeuricomponent(arg[1]);
}
//stats some vars we'll need to send mssages back
var srcframe = "repost-frame-" + options.rpkey;
var srcel = document.getelementbyid(srcframe);
var tgt = $("#" + srcframe).attr('src');
if(options.alive) {
_rpu.framealive = true;
$("#repost-" + options.rpkey+ " .rpuslug").hide(); //make the embed slug and thmbnail dissapear
try {
d = (new date()).gettime();
console.log("embed frame alive "+(d-starttime)+"ms");
} catch (e) {
//ignore error if we have no console
}
}
if (options.title) {
var te = jqescape(options.title),
t = $("h1,h2,h3").filter('*:contains("' + te + '")'),
srcoff = $(srcel).offset(),
rpopt = _rpu['_' + options.rpkey] || {};
//suppress the title if we've been asked to or the same title appreasr in an h1 h2 h3 within 600px of the frame.
if (t.size()) {
var toff = t.offset();
if(toff.top < srcoff.top && toff.top > srcoff.top - 600) {
$.postmessage('hidetitle', tgt, srcel.contentwindow);
}
}
if(rpopt.title === false) {
$.postmessage('hidetitle', tgt, srcel.contentwindow);
}
}
if (options.error) {
$(".rpupreload-"+options.rpkey).remove();
$("#repost-frame-" + options.rpkey).remove();
$("#repost-" + options.rpkey).html(_rpu["_" + options.rpkey].alt); //put the alt text back
if (options.error.match(/edisabled|etou/)) {
$("#repost-" + options.rpkey).find(".rputhumb,.rpusnip").remove();
}
if (!options.error.match(/zeroimp/)) {
$("#repost-" + options.rpkey).append(decodeuricomponent(options.error)); //.append("<p>you may read the article on it's original site by clicking on the link above.</p>");
}
$("#repost-"+options.rpkey+".rpuslug&quo t;).show();
return;
}
if (options.brk) {
_rpu['_' + options.rpkey].jump = options.brk;
}
if (options.ht) {
var fht = $("#repost-frame-" + options.rpkey).attr('height'),
h = number(options.ht),
fw = $("#repost-frame-" + options.rpkey).attr('width'),
w = $("#repost-frame-" + options.rpkey).parent().width();
if (!isnan(h) && h != fht) {
$(".rpupreload-"+options.rpkey).remove();
$("#repost-frame-&quo t; + options.rpkey).height(h).attr('height', h).show();
try {
d = (new date()).gettime();
console.log("embed resize "+h+"px "+(d-starttime)+"ms");
} catch (e) {
//ignore error if we have no console
}
}
if (fw != w) { //somebody resized us - probably blogger
$("#repost-frame-" + options.rpkey).attr('width', w);
}
$("#repost-" + options.rpkey+ ".rpuslug").hide(); //make the embed slug and thmbnail dissapear
}
if (options.canonical) {
$('link[rel=canonical]').remove();
$('head').prepend('<link rel="canonical" href="' + options.canonical + '" />'); //this is for ajax snapshotters becasue canonical set withe js is pretty useless otherwise
}
if (options.content) {
//we got content back from a snapshot request - stop doing anything else
_rpu.snapshot = true;
}
//if anybody else has registered to listen let them in on the act
if ('listener' in _rpu) {
for (var l in _rpu.listener) {
(_rpu.listener[l])(options);
}
}
});
}
function hashencode(vars) {
var rval = "";
for (key in vars) {
rval = rval + key + ':' + encodeuricomponent(vars[key]) + '/';
}
return rval;
}
function setscopes() {
//if ($('._rpuarticlescope').size() != 0) return; //been here - bail
$("._rpubuttonscope").addclass('_rpuarticlescope'); //pigyback if the work is already done
$('a.clipthisbutton,a.cucurateusbutton,a.rpurepostbutton,a.rpurepostusbutton,a.rpur epostusbutton').not(".rpurepostprocessed").each(function() {
var href = $(this).attr('href'),
urls, scope = this;
if ($(scope).closest('._rpuarticlescope').size() == 0) {
while ('parentnode' in scope && scope.parentnode) {
var buttons = $(scope.parentnode).find('a.rpurepostbutton,a.rpurepostusbutton,a.rpurepostusbutton'),
burl = {};
if (buttons.length > 1) {
var uniquebuttons = 0;
$(buttons).each(function() {
var href = $(this).attr('href');
if (!(href in burl)) uniquebuttons++;
burl[$(this).attr('href')] = 1;
});
if (uniquebuttons > 1) { //differing buttons scope limit found.
$(scope).addclass('_rpuarticlescope').data('button', this);
break;
}
}
scope = scope.parentnode; //step up
}
}
//check for the single button case;
if (!scope.parentnode) {
$('body').addclass('_rpuarticlescope').data('button', this);
}
if($(this).closest('._rpuarticlescope').find(".rpuarticle").size( )) {
//there is a repost inside this button scope
var classes = $(this).closest('._rpuarticlescope').find(".rpuarticle").attr('class'),
rpke y = classes.replace(/.*rpurepost-(\w{32}).*/, "$1");
$(this).attr('href', 'http://www.repost.us/article-preview/#!shash=' + rpkey)
.attr('rpuref', 'http://www.repost.us/article-preview/#!shash=' + rpkey)
.addclass('_rpunotonpage');
}
$(this).addclass("rpurepostprocessed&q uot;);
});
}
function findhost(host) {
//find out where we came from
var hash = document.location.hash,
src = $('script[src*="rjs/repost-article.js"]').attr('src'),
proto = document.location.protocol;
if (!proto.match(/^http/)) { //file protocol not allowed
proto = "http:";
}
//allow debug override withe #myhost= fragment but
//debug hosts can only have alpha and dashes and must be .local for security reasons
if (hash && hash.match(/myhost=[^\.&]*/)) {
_rpu.host = "http://" + hash.replace(/#myhost=([-\w]*)/, '$1') + ".local";
}
if ('host' in _rpu) {
return _rpu.host; //if already set in debug or before by another script return that
}
if (src && src.match(/^https?:\/\/|^\/\//)) {
var h = src.replace(/\w*:?\/\/([^/]+).*/, "$1");
_rpu.host = proto + "//" + h.replace(/^static\./, ""); //strip any static prefix (added back as needed later)
} else {
_rpu.host = proto +"//1.rp-api.com";
}
return _rpu.host;
}
function gethostinfo() {
try {
clkey = $('.clipthisbutton:first').attr('href').replace(/.*clipthis\/(\w*).*/, "$1");
} catch (e) {
clkey = 'badkey';
};
var ref = $('.clipthisbutton:first').attr('href');
if (ref && ref.match(/.*clipthis\/.*\?url=/)) {
ref = decodeuricomponent(ref.replace(/.*clipthis\/.*\?url=/, ""));
} else {
ref = l.href;
}
$.getjson(my_host + "/buildclp.php?key=" + clkey + "&url=" + encodeuricomponent(ref) + "&jsoncallback=?", function(data, textstatus) {
hostdata = data;
});
}
function readcookie(name) {
var nameeq = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charat(0) == ' ') c = c.substring(1, c.length);
if (c.indexof(nameeq) == 0) return unescape(c.substring(nameeq.length, c.length));
}
return null;
}
function jqescape(str) {
return str.replace(/["\\]/g, '\\$&');
//return str.replace(/[#;&,\.\+\*~':"!\^\$\[\]\(\)=>|\/\\]/g, '\\$&');
}
function throb(el,period,midopacity,startopacity) {
$('head').append("<style>@-webkit-keyframes rputhrob{0%{opacity:"+startopacity+"}50%{opacity:"+midopacity+"}100%{o pacity:"+startopacity+"}}@-moz-keyframes rputhrob{0%{opacity:"+startopacity+"}50%{opacity:"+midopacity+"}100%{o pacity:"+startopacity+"}}@-o-keyframes rputhrob{0%{opacity:"+startopacity+"}50%{opacity:"+midopacity+"}100%{o pacity:"+startopacity+"}}@keyframes rputhrob{0%{opacity:"+startopacity+"}50%{opacity:"+midopacity+"}100%{o pacity:"+startopacity+"}}.rputhrob{-webkit-animation:rputhrob 2s infinite ease-in-out;-moz-animation:rputhrob 2s infinite ease-in-out;-o-animation:rputhrob 2s infinite ease-in-out;animation:rputhrob 2s infinite ease-in-out}</style>");
$(el).addclass("rputhrob");
}
/*
* jquery postmessage - v0.5 - 9/11/2009
* http://benalman.com/projects/jquery-postmessage-plugin/
*
* copyright (c) 2009 "cowboy" ben alman
* dual licensed under the mit and gpl licenses.
* http://benalman.com/about/license/
*/
function msginit() {
(function($) {
// a few vars used in non-awesome browsers.
var interval_id, last_hash, cache_bust = 1,
// a var used in awesome browsers.
rm_callback,
// a few convenient shortcuts.
window = this,
false = !1,
// reused internal strings.
postmessage = 'postmessage',
addeventlistener = 'addeventlistener',
p_receivemessage,
// i couldn't get window.postmessage to actually work in opera 9.64!
has_postmessage = window[postmessage]; //&& !$.browser.opera;
// method: jquery.postmessage
//
// this method will call window.postmessage if available, setting the
// targetorigin parameter to the base of the target_url parameter for maximum
// security in browsers that support it. if window.postmessage is not available,
// the target window's location.hash will be used to pass the message. if an
// object is passed as the message param, it will be serialized into a string
// using the jquery.param method.
//
// usage:
//
// > jquery.postmessage( message, target_url [, target ] );
//
// arguments:
//
// message - (string) a message to be passed to the other frame.
// message - (object) an object to be serialized into a params string, using
// the jquery.param method.
// target_url - (string) the url of the other frame this window is
// attempting to communicate with. this must be the exact url (including
// any query string) of the other window for this script to work in
// browsers that don't support window.postmessage.
// target - (object) a reference to the other frame this window is
// attempting to communicate with. if omitted, defaults to `parent`.
//
// returns:
//
// nothing.
$[postmessage] = function(message, target_url, target) {
if (!target_url) {
return;
}
// serialize the message if not a string. note that this is the only real
// jquery dependency for this script. if removed, this script could be
// written as very basic javascript.
message = typeof message === 'string' ? message : $.param(message);
if(!target_url.match(/https?:/)) {
target_url = document.location.protocol + target_url;
}
// default to parent if unspecified.
target = target || parent;
if (has_postmessage) {
// the browser supports window.postmessage, so call it with a targetorigin
// set appropriately, based on the target_url parameter.
target[postmessage](message, target_url.replace(/([^:]+:\/\/[^\/]+).*/, '$1'));
} else if (target_url) {
// the browser does not support window.postmessage, so set the location
// of the target to target_url#message. a bit ugly, but it works! a cache
// bust parameter is added to ensure that repeat messages trigger the
// callback.
target.location = target_url.replace(/#.*$/, '') + '#' + (+new date) + (cache_bust++) + '&' + message;
}
};
// method: jquery.receivemessage
//
// register a single callback for either a window.postmessage call, if
// supported, or if unsupported, for any change in the current window
// location.hash. if window.postmessage is supported and source_origin is
// specified, the source window will be checked against this for maximum
// security. if window.postmessage is unsupported, a polling loop will be
// started to watch for changes to the location.hash.
//
// note that for simplicity's sake, only a single callback can be registered
// at one time. passing no params will unbind this event (or stop the polling
// loop), and calling this method a second time with another callback will
// unbind the event (or stop the polling loop) first, before binding the new
// callback.
//
// also note that if window.postmessage is available, the optional
// source_origin param will be used to test the event.origin property. from
// the mdc window.postmessage docs: this string is the concatenation of the
// protocol and "://", the host name if one exists, and ":" followed by a port
// number if a port is present and differs from the default port for the given
// protocol. examples of typical origins are https://example.org (implying
// port 443), http://example.net (implying port 80), and http://example.com:8080.
//
// usage:
//
// > jquery.receivemessage( callback [, source_origin ] [, delay ] );
//
// arguments:
//
// callback - (function) this callback will execute whenever a <jquery.postmessage>
// message is received, provided the source_origin matches. if callback is
// omitted, any existing receivemessage event bind or polling loop will be
// canceled.
// source_origin - (string) if window.postmessage is available and this value
// is not equal to the event.origin property, the callback will not be
// called.
// source_origin - (function) if window.postmessage is available and this
// function returns false when passed the event.origin property, the
// callback will not be called.
// delay - (number) an optional zero-or-greater delay in milliseconds at
// which the polling loop will execute (for browser that don't support
// window.postmessage). if omitted, defaults to 100.
//
// returns:
//
// nothing!
$.receivemessage = p_receivemessage = function(callback, source_origin, delay) {
if (has_postmessage) {
// since the browser supports window.postmessage, the callback will be
// bound to the actual event associated with window.postmessage.
if (callback) {
// unbind an existing callback if it exists.
rm_callback && p_receivemessage();
// bind the callback. a reference to the callback is stored for ease of
// unbinding.
rm_callback = function(e) {
if ((typeof source_origin === 'string' && e.origin !== source_origin) || ($.isfunction(source_origin) && source_origin(e.origin) === false)) {
return false;
}
callback(e);
};
}
if (window[addeventlistener]) {
window[callback ? addeventlistener : 'removeeventlistener']('message', rm_callback, false);
} else {
window[callback ? 'attachevent' : 'detachevent']('onmessage', rm_callback);
}
} else {
// since the browser sucks, a polling loop will be started, and the
// callback will be called whenever the location.hash changes.
interval_id && clearinterval(interval_id);
interval_id = null;
if (callback) {
delay = typeof source_origin === 'number' ? source_origin : typeof delay === 'number' ? delay : 100;
interval_id = setinterval(function() {
var hash = document.location.hash,
re = /^#?\d+&/;
if (hash !== last_hash && re.test(hash)) {
last_hash = hash;
callback({
data: hash.replace(re, '')
});
}
}, delay);
}
}
};
})(jquery);
}
})(window, document);
_rpu.splash = [
"data:image/png;base64,ivborw0kggoaaaansuheugaaazaaaabocamaaado11y+aaaagxrfwhrtb2z 0d2fyzqbbzg9izsbjbwfnzvjlywr5ccllpaaaabhqtfrf////n6mp8mcj9zbd+loq/nbehcvly+npqmdxdaaabr5jre fuenrsne2aozaihbmc9v7vefs1bgio+9szvvecpzma22hecqn5ackqbeeqbeeqbeeqbeeqbn1tnmysa922nhunp3apj 2z8usd1tp/qtv7so/dgraayiqhku4amapjlqbhavgviacbfboqa5luadbtamokpznvilj2yh7i2bkdpe8sgei6avv22 a1s5+cbppn8fccvahfizmigky2q8khhhjrmqvusibivlt7co1v3xxtdecmgqa3gvivtlkdyxsqskcatimg101y1fabw 2edhvoqncq1skog/iprhi63kmry0kzjzmirkuxwuv87jzij3txvi0qwee1p+7ljsbkmub8khego9cfogexsuugiayhc rqf1feqwceakdmcglztsrkwgpnpc5bzrktochxkdhpruolss+rbdxw7fu4r7h693o72/watnt3lsndh4g2eqpeplhqg uktpbah8wstrqasg0b2s7xtodffxprgqkb0curayjse8xskwgzsi082grwhgptzsnxx1bm2bzlcf4h6lslqte79miqd yfk5menvyvnt9dcqpfs2catwwarydsdkrcjougrnpdvvvnnwdysovougkdzb0hnpqiabavlfyqnaigvsqdyvoq1gwe8 ckz13usaqfny4cqrexwai8gy/lu2hka6hayhuepfbigwa1i9g3gqf9suu9kmajasrsrelbqhzjy1ryynprh0leyza8m wptck39cfd2emifktqm2b7ji5ashjivwhjxq6ngvlecsjfb4gzkahjadt37k4oboslc8ueapjnk0gq0syuhnv0q3otc y/j6wjq+pc80tzqrzqlqrgpacmzjcdkubuuedzhlw+dbcbs1wnrr0yc8qd/ra17yici94dk2bjjccio9wgubiyie3hw luxe+sel2s0hhn83gjihtqeoorfe306tdmjr8zcnbdmg5yzaznsohvryd6hkqmprihm2kg0zmiqtbggkhcmjkr7k7pr 0l8jufj+nsq7pzzkz3nx5yzvnv+vjo/ozuhk9rzgz+fe3o8ho+phh80dp+shv3eksfmfbuvxmook0sbuxakeqbeeqbe eqbeeqbh1mjz/qx/ta+wdbearbearbeprlwvser5lem7igj9khgaaibca/phgc/jzgcxzm/7ziomn1b/msxmm7mtxfc n5+rdsxxsvl3n1f3tz4plpk/0+lsiaqzytuthros3pb8rz+yqpzheeuf4hm4zlxzaagd8ykxm+k7ty88bdspaygbwbz x2+64rza2xsgufnusjb3xygmsoazl5mkslehb/g6wndzvz1pah96egpl2qdklsclwoamfkgr9xv7gduwtkokba2sm7z 6u9l+f5tm5gkt21r87qwzigrloyc870qmhove+uin50wka3shbn+xkbdigahxg25jt7oaqm6ykmcrc/fauf/fdia/zc fhgeh1tqqgp1viuohrtp066w0jshvmaorcc9gdbwdk3dfrtjqonwdi6a2soyo1hxrjfjj3/zbpuziuwbxofl5vidwrj z50onejssgspc/4grn1fnlat4n8xxyivtubbre7wfz3iqdisrbigr4l/gkf/0tk+b7w8cnvwoilnbrcj+e+a9dcd0py beoggxrhp8tocyekjo08ldw89jvr03rmhyxqu5t0p2d02gefa4znsajml/qvahaagqdkakdqnqaqknhunkuxqbaeqra eqraeqxftxwegacrzmqd+m02yaaaaaelftksuqmcc",
"data:image/png;base64,ivborw0kggoaa aansuheugaaazaaaabocamaaado11y+aaaagxrfwhrtb2z0d2fyzqbbzg9izsbjbwfnzvjlywr5ccllpaaaabhqtfrf ////n6mp8mcj9zbe+loq/nbehcvly+npf60dugaabt5jrefuenrsxdui4yoidqkk///hp01irmbld5qzzpy1xnzze8n sqdtulaaaaaaaaaaaaaaaaaaaaacgbaenbm/zfl4ufgo8tciygrwh+/mohuwjytefqqqw9wu4fcvth7crisfl54n8my fo1he26fw3cg/v7ig0ancdhhhr34a6zkt0spcswsvyuwijrp1uaxrv6f0mu6nthpkthihr0myg7yekfpvtxulqpfqnx rqg0s8gdxlilltc5kniut9t4htvbvzrkbwf5difidbzi0j5xpjak9sthuko+fhmyo96qjbrtnz0cj/x8x+vqnftxyui vrmlncf2+flmsr81baxkavrlznjd/ex8+yfr5hnyiis32moeirz/qiurinlrq5ksmjwz6k6ee2vcl6noo1iirr2nnfi ui9txkmoqjfp9vgvdckperorwud5y3cflsih6zwyhffvzqhhjaji0qbqeutijyr1abvfifsfbzrtub79pxd4vi6opna ihhpxda6xlp6k/niyjqvqtos6gu916sn245yjavbbpvuome4ggzecqwo75zvhf60s4fmhw3y9hxohaqsxrhxuakx5sw jevjt6sf0o1rplmw5gwc4ebirwgbxy//zgqzzg2ybs5zopti3epqt0lrmae8bqhrymi5srohacim4frtah91din6msr ahczeek9qexllpvo2mw/rcj+44yytq5vbdhbtajucxp3qwmlebpez8tiegm6uqj7czpww6j0e6xrr1s+r3vnw+0pmfy saeje7pa0ynjp0kqpce2qhwv/ze5bfgc3vs/zev1gejn26snciqughiupxmaioojwunzxu2zdsbtiy/+nmvq9yyifca zqby8lcrlnsylxrfycqqruvfu8zkdopk3i8ykiir1r0x8nemikosaqidkvpukyxa3owbg2pcbkzdvh3kez7f0i2zblp kv422omi2sdpgeymikaqoionmbuihourgxrp5yo46fwy3vzjwnhteqmhnziwfbvfeu+grckizxurefx5vadqvjthnbb hbwrc6purteq/i5culewltehesojmoy0rh0tiytjg2gxmjjzpyzegqnnialkpj/vfkqbtzcakj9hst4jjcurjirka7e cekhimiaknsymxexzrzyj175q7eyaogzofuhis7/xcahasfcuygqevv1cujd+z6smszonxwqnrubhkn0qfrc+phciob jnxsgetc8pleewvk0jqsinf9vz3leava2wpsgv9dpkn6hvpmeouthzonsvoblcxleezycj8dwmhp3gnsbegirj1bzc1 elmyetqjhlzsclasuakkeznu/jtdi4gbkonrzuhezg6arnsw/g8zujm6nympdf5z6oogv+mx6zlsjohji0iktinfkvy ztbd232hrgo3sdkdbo6qehqdedlh3myjygqh6hman1nvucjvteriz+kkl8qdpjqghft9bjiqgrpc5h2ioewoouhvikt pqfj7vqt1cammefqesgvkaiiqp0ev+mfxar9fij/0ghlcystpvu0ncfg1ks4cfs01+yncm6stzwk1hncwf1oafwwn29 oyeb9yq9nk3fg7hkiz1oacjapm0i3x3cihd589ifkb6s7gflngwntndvfdac982e9xb6mohmsrxffvddxb+duerjk95 3tligaaaaaaaaaaaaaaaadgb8hjf/dh8ed7awaaaaaaaaaa+e0oy1aal4bc2wogukf/gbaqaocqm7cu25/huq6p/ccr l7pmd7cvwgsz6sxtegk7n28kid+8g+n34td+r8zcmareksg1+5bd011w5etvwvgdm/r9j7fpz6wnb2ryym2e9dbuctv xeaj5achn/i2bzgm+8ocl9zezesgnxihm4kbnpu4qqtqxf3vpol+8pv3dzqchyd+xvlhxorasknlpklumpghdfwpkdt hzeo8gyvqev39cyu9hkk6+blga1u/m0/lgo3gqct2jvoqoj+lvt8azscvogm6v9jcqkduixo7njvqrtaihn+whj5key gnh+ntsehjjd5klrh9ssydk4z1kpfbifafo+ut8clubqref6if68gaioxxgktvknkhitvhwnsxau41uk1lvsva2ysdo wb0yff7vidmrrzz1qmrb3jpfcowzyxahawbnbgcuh4ineqpkostltbcjaiexe4gjfc0hwt8nsjaqvj2beq/1ejnrti1 tr83qxnxomajcfo51fbqm8uge5lmrh+onwvv/nrq+5wfvmxg1cq5jwvbtkcjsbb4ciaseacdkbymewwkqajswxbnqaw aaaaaaaaaaapcv4t8bbgbbgkncjjvstgaaaabjru5erkjggg==",
"data:image/png;base64,ivbo rw0kggoaaaansuheugaaazaaaabocamaaado11y+aaaagxrfwhrtb2z0d2fyzqbbzg9izsbjbwfnzvjlywr5ccllpaa aabhqtfrf////n6mp8mcj9y9d+loq/nbehcvly+npmkh57gaabtpjrefuenrsnetircomhdkmcd7/ju+nkuaqzohu92 nx+tnrviqpsachrueqbeeqbeeqbeeqbefxjslihh9hnh2i/josouvgp8ljq38dybopi8c3xdl6lk5rpk3yxud6+6nks 77gz4thmctjnfp2inmufzh9tjm9hazyzpcccwsebyiui0d4vwax2r8rjat9jtwzatl9didkk8vmhpcz78nfbor/brdx zokm19jlxwzk+hvami9/5lhw9t5i/8nmjnf2mhole8j6ip+sl4fwdwr5ppj+bp0w/p2wm8xd7fkax3myop4jjgyphhk bql3gxh4io9pc+vjey1ze+vrgtf++t4vjqkykco+pdowkbdjrvnhmrye7qaegtevbyasfhehwjpyiqhhirsc1wamqqf 9gzyeggbjrvvk4a0ipeemuszlonr6mjmm5eznmavknfbqiwu+l6ejolpbznovsiw1eud/nze85ej5yiidanknh0y3zw /sylfbsn0hwrprjm3wfdxu8wpuxiynooifiebt1reem6ji+dcrk3vpgj0cikwwthxlyxwyjj+o3p3ljlqv5pfnviviq lyro2izom5i0elfxgcqqqknawpi1vhuk2zcp32zfuldmvyve706bmyqnz5legdiazdpqsys0wgdaek+nn45towuiz+i uof9zcktucyrdwwu12fzl/zc9qxm2xa0csvsfyiq4j8ghsnvqqsm58lnywwldqjrjqnqcbemn2anpgehsi5m9fh2bqa z2o8s+jeb1nh+3bgjk6ucbtpgt18h4bajf/c2acmj+ysdbdmmil2uiktip3i7e3kqbkduhqsgtbpiin5w0haxdenfpp rrdcehn2cpsa0km0diq52bmsornqfqvmuc6g/8pikzetr4ebafd1xooqkhkp8qjosr5sjx2jfhopevchfqkhc8aodzn ggai3pgn2m6yel1ef/q+hmxuxv4ojw3w7qv1imucf4ds2egznwuibwpjsm8uierqgjdoba0aytoyun1utztecitpgey mzv91m5dpcpc9argdyl1m6gmza/38m4hwy0d6u3ywxwziwndbqtzeysd+lu+bkl6ct4kbcx4jh1u/hui/0+fuvubsp2 mcibx0yjd+0cyxqz1bnkrxsj40wahj6/10ghibsmuh/c4boecv5chjqjxhqmdu9w5etiewhg+phivogmhbxtybqgjkr 7wuajlcoiw1jy8aowrupsxmzoo3e2ohqqwqlo5c0nhibsbsjk8ma3noudgzgzipq8ftbmty37amarhlhvlpzj4ityoz f19m0dqscwqes4ticcgfic1vsc6bjfn69ajmfh3t9a6qlrioanzp6xkmpseptbsj6l2vwggrbcbqmoqdijsp0z8dodj fgrowfreirsb8mijazjeud4zkcspvmqomuqje8ih6cybcdcgmm6daxzu/ckqluwk0amt3s7ke0iog8vi6c7kcpkut1g aq8zzxfijmvymmhso7qcjjdy6bcnw8szwxugpx1/jpycug+qj9abch8cbglnm+myt6u4jxic2dqqvifs5b/parwsvvl l4xl3lynq+5ber6ryo7gw/mt6t2g4/t1pkfnf3mh9x6blfpmz06/wwfpbjexx9c7py9uz3f3dyswwfipnm29nhqqa6f mnjl4aiciaiciaiciaiciaga0+mp9g16opxbearbearbear9kdjvfqdvknzjzphqep0aeacbaoqvaz4//zzmex4sp57 jovnmdpav/djtu8yunvi8dlvq6hdsg4a05v6fjuifql6qkf4uhpa0obhegplspytosmv0znwzqmmdeqnsrldnv4lsez sbyaugff4mtodqxhra/oz5gb015koj0qrwppn6ugfro2rsnafvebuugvi+irfp37dju/+rqnpwm2s2qfgtpok7a4hdk 7iye4gxdydv/5dsvx9tn/j92xnbwihys3vfbvgdipcyeqnhgrgf/fomwyde6ulexqkhkza5a+jxlupc+aygn9wqx0gn 8ua4liogkl9uq0abmo2qaet2gjkverrjo643bjc7halivtukrttuqegvr6z0mtqa3o5llanyy1cj222js35ii27jteg uxq8hm1wf/dajqx2v7bdj2md8ztm6gvkd/+nil9uq8v5vnrgyxrlcjqign9uq5/i2dm8sc6617p/yho61do3xedfw2n idmsj8iir/gima8r7m+cnk7asnzjsbeaja8nyixgzozh1+ub3rnuew/zkeu36pjhn7ox9caaigeid834cgowegucg2/ /0dgiaigiaigiaign6g/hngahm0slvggme6aaaaaelftksuqmcc"
];
02.21.10
ICQ Bot is down
ICQ Bot no more supported.
02.20.08ICQ Bot updates!
New funcs. Now bot will show you topics ob adult boards with checked domain. Also two commands are realized: boards [domain] will show snippets and iframes [domain] will show iframes and scripts with description.
02.16.08CJLog ICQ Bot!
Use power of CJLog in your ICQ. Just add our bot 450-825-540 to your IM and you can check your traders for blacklist status, purity, traffic, niches, illegal scripts much quickly!
02.07.08CJLog Alerts!
With CJLog Alerts your sites will newer been hacked or go down. CJLog Alerts will inform you about anwanted changes or downtimes.