206 lines
8.4 KiB
JavaScript
Executable File
206 lines
8.4 KiB
JavaScript
Executable File
var Wistlet = {
|
|
init : function () {
|
|
var o = document.getElementsByTagName('body').item(0);
|
|
|
|
//var text = (typeof(document.selection == 'undefined') ) ? getSelection() : document.selection.createRange().text;
|
|
|
|
function getSel() {
|
|
var txt = '';
|
|
if (window.getSelection) {
|
|
txt = window.getSelection();
|
|
} else if (document.getSelection) {
|
|
txt = document.getSelection();
|
|
} else if (document.selection) {
|
|
txt = document.selection.createRange().text;
|
|
} else {
|
|
return;
|
|
}
|
|
return txt;
|
|
}
|
|
|
|
|
|
var s = '' +
|
|
'<form name="f" id="f" action="http://www.wists.com/s.php" method="get">'+
|
|
'<input name="c" id="c" type="hidden" value="null" />'+
|
|
'<input name="r" id="r" type="hidden" value="'+location+'" />'+
|
|
'<input name="u" id="u" type="hidden" value="" />'+
|
|
'<input name="title" id="title" type="hidden" value="'+document.title +'" />'+
|
|
'<input name="m" type="hidden" value="'+getSel()+'" />'+
|
|
'</form>'+
|
|
'<div>'+
|
|
'<a href="http://wists.com/"><img src="http://wists.com/mainimages/logo_top_left.gif" border=0></a><br />'+
|
|
'<p>Click on the most appropriate image below to create a thumbnail image for your bookmark:</a></p>'+
|
|
'<table width=800><tr width=800><td width=800>\n';
|
|
|
|
var x = this.scrape_images();
|
|
if (x == 0)
|
|
{
|
|
location = 'http://www.wists.com/s.php?c=&r='+location+'&title='+document.title;
|
|
return true;
|
|
}
|
|
s += x +
|
|
|
|
'</td></tr></table>\n'+
|
|
'<p>Don\'t like any of these images? <a href="http://www.wists.com/s.php?c=&r='+location+'&title='+document.title +'">Create a thumbnail screenshot</a> instead!</p>'+
|
|
'</div>';
|
|
|
|
o.innerHTML = s;
|
|
this.strip_document();
|
|
this.style_document();
|
|
return true;
|
|
},
|
|
make_thumbnail : function (r) {
|
|
var s = '' +
|
|
'<table style="float:left;"><tr><td width=120 height=90 valign=middle align=center><a href="http://www.wists.com/" onclick="return Wistlet.submit_form(\''+r+'\');">'+
|
|
'<img src="'+r+'" alt="" onload="resizeImage(this);" />'+
|
|
'</a></td></tr></table>\n';
|
|
return s;
|
|
},
|
|
submit_form : function (r) {
|
|
var f = document.getElementById('f'); if (!f) return false;
|
|
var u = document.getElementById('u'); if (!u) return false;
|
|
u.setAttribute("value", r);
|
|
f.submit();
|
|
return false;
|
|
},
|
|
get_background : function (o) {
|
|
var s = '';
|
|
if (window.getComputedStyle) s = window.getComputedStyle(o,null).getPropertyValue("background-image");
|
|
if (o.currentStyle) s = o.currentStyle.backgroundImage;
|
|
if (s == "none") s = "";
|
|
return s;
|
|
},
|
|
scrape_images : function () {
|
|
var a = document.getElementsByTagName('*');
|
|
var s = '';
|
|
var n = 0;
|
|
var l = [];
|
|
for (var i=0; i < a.length; i++)
|
|
{
|
|
var o = a[i];
|
|
if (o.tagName == "IMG" && o.src != "")
|
|
{
|
|
n++;
|
|
if (!l[o.src])
|
|
{
|
|
l[o.src] = "1";
|
|
s += this.make_thumbnail(o.src);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var x = /url\(["']?(.+[^'"])["']?\)/gi.exec(this.get_background(o));
|
|
if (x && x != "" && x.length > 1)
|
|
{
|
|
n++;
|
|
if (!l[x[1]])
|
|
{
|
|
l[x[1]] = "1";
|
|
s += this.make_thumbnail(x[1]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (n > 0)
|
|
{
|
|
return s
|
|
}
|
|
else {
|
|
return n;
|
|
}
|
|
},
|
|
strip_document : function () {
|
|
var a = document.getElementsByTagName('*');
|
|
for (var i=0; i < a.length; i++)
|
|
{
|
|
var o = a[i];
|
|
if (o.tagName == "LINK" || o.tagName == "STYLE")
|
|
{
|
|
this.destroy_element(o);
|
|
}
|
|
else if (o.tagName == "IMG")
|
|
{
|
|
if (o.offsetWidth <= 10 || o.offsetHeight <= 10)
|
|
{
|
|
// this.destroy_element(o.parentNode);
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
},
|
|
style_document : function () {
|
|
var x = document.getElementsByTagName('head').item(0);
|
|
var o = document.createElement('link');
|
|
if (typeof o != 'object') o = document.standardCreateElement('link');
|
|
o.setAttribute('href','http://www.wists.com/wistlet.css?x=' + Math.floor(Math.random() * 9999));
|
|
o.setAttribute('rel','stylesheet');
|
|
o.setAttribute('type','text/css');
|
|
x.appendChild(o);
|
|
return true;
|
|
},
|
|
destroy_element : function (o) {
|
|
while (o.childNodes.length > 0)
|
|
{
|
|
o.removeChild(o.childNodes[0]);
|
|
}
|
|
o.parentNode.removeChild(o);
|
|
}
|
|
}
|
|
|
|
function resizeImage(img) {
|
|
|
|
var img_width = img.offsetWidth;
|
|
var img_height = img.offsetHeight;
|
|
var img_aspect_ratio = Math.round((img_width / img_height) * 100) / 100;
|
|
|
|
var max_width = 120;
|
|
var max_height = 90;
|
|
var max_aspect_ratio = Math.round((max_width / max_height) * 100) / 100;
|
|
|
|
// alert("orig image size is " + img_width + "x" + img_height + "\n" + "aspect ratio is " + img_aspect_ratio + "\n\n" + "max image size is " + max_width + "x" + max_height + "\n" + "max aspect ratio is " + max_aspect_ratio);
|
|
|
|
var new_img_width = 0;
|
|
var new_img_height = 0;
|
|
var new_aspect_ratio = 0;
|
|
|
|
// if no resize needed
|
|
if (img_width < 120 && img_height < 90) {
|
|
new_img_width = img_width;
|
|
new_img_height = img_height;
|
|
|
|
// if wider
|
|
} else if (img_aspect_ratio > max_aspect_ratio) {
|
|
new_img_width = max_width;
|
|
new_img_height = Math.round(new_img_width / img_aspect_ratio);
|
|
|
|
// if taller
|
|
} else if (img_aspect_ratio < max_aspect_ratio) {
|
|
new_img_height = max_height;
|
|
new_img_width = Math.round(new_img_height * img_aspect_ratio);
|
|
|
|
// equal
|
|
} else {
|
|
new_img_width = max_width;
|
|
new_img_height = max_height;
|
|
}
|
|
|
|
img.style.width = new_img_width + "px";
|
|
img.style.height = new_img_height + "px";
|
|
new_aspect_ratio = Math.round((new_img_width / new_img_height) * 100) / 100;
|
|
|
|
// alert("new image size is " + new_img_width + "x" + new_img_height + "\n" + "new aspect ratio is " + new_aspect_ratio);
|
|
}
|
|
|
|
|
|
var sociable_old_onload = window.onload;
|
|
window.onload = function () {
|
|
imgs = document.getElementsByTagName("img");
|
|
for(var i = 0; i < imgs.length; i++) {
|
|
var img = imgs[i];
|
|
if (img.className == 'sociable-hovers sociable_wists') {
|
|
img.onclick = function() { Wistlet.init(); return false; }
|
|
}
|
|
}
|
|
if (sociable_old_onload) sociable_old_onload();
|
|
};
|