[44] | 1 | var Wistlet = {
|
---|
| 2 | init : function () {
|
---|
| 3 | var o = document.getElementsByTagName('body').item(0);
|
---|
| 4 |
|
---|
| 5 | //var text = (typeof(document.selection == 'undefined') ) ? getSelection() : document.selection.createRange().text;
|
---|
| 6 |
|
---|
| 7 | function getSel() {
|
---|
| 8 | var txt = '';
|
---|
| 9 | if (window.getSelection) {
|
---|
| 10 | txt = window.getSelection();
|
---|
| 11 | } else if (document.getSelection) {
|
---|
| 12 | txt = document.getSelection();
|
---|
| 13 | } else if (document.selection) {
|
---|
| 14 | txt = document.selection.createRange().text;
|
---|
| 15 | } else {
|
---|
| 16 | return;
|
---|
| 17 | }
|
---|
| 18 | return txt;
|
---|
| 19 | }
|
---|
| 20 |
|
---|
| 21 |
|
---|
| 22 | var s = '' +
|
---|
| 23 | '<form name="f" id="f" action="http://www.wists.com/s.php" method="get">'+
|
---|
| 24 | '<input name="c" id="c" type="hidden" value="null" />'+
|
---|
| 25 | '<input name="r" id="r" type="hidden" value="'+location+'" />'+
|
---|
| 26 | '<input name="u" id="u" type="hidden" value="" />'+
|
---|
| 27 | '<input name="title" id="title" type="hidden" value="'+document.title +'" />'+
|
---|
| 28 | '<input name="m" type="hidden" value="'+getSel()+'" />'+
|
---|
| 29 | '</form>'+
|
---|
| 30 | '<div>'+
|
---|
| 31 | '<a href="http://wists.com/"><img src="http://wists.com/mainimages/logo_top_left.gif" border=0></a><br />'+
|
---|
| 32 | '<p>Click on the most appropriate image below to create a thumbnail image for your bookmark:</a></p>'+
|
---|
| 33 | '<table width=800><tr width=800><td width=800>\n';
|
---|
| 34 |
|
---|
| 35 | var x = this.scrape_images();
|
---|
| 36 | if (x == 0)
|
---|
| 37 | {
|
---|
| 38 | location = 'http://www.wists.com/s.php?c=&r='+location+'&title='+document.title;
|
---|
| 39 | return true;
|
---|
| 40 | }
|
---|
| 41 | s += x +
|
---|
| 42 |
|
---|
| 43 | '</td></tr></table>\n'+
|
---|
| 44 | '<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>'+
|
---|
| 45 | '</div>';
|
---|
| 46 |
|
---|
| 47 | o.innerHTML = s;
|
---|
| 48 | this.strip_document();
|
---|
| 49 | this.style_document();
|
---|
| 50 | return true;
|
---|
| 51 | },
|
---|
| 52 | make_thumbnail : function (r) {
|
---|
| 53 | var s = '' +
|
---|
| 54 | '<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+'\');">'+
|
---|
| 55 | '<img src="'+r+'" alt="" onload="resizeImage(this);" />'+
|
---|
| 56 | '</a></td></tr></table>\n';
|
---|
| 57 | return s;
|
---|
| 58 | },
|
---|
| 59 | submit_form : function (r) {
|
---|
| 60 | var f = document.getElementById('f'); if (!f) return false;
|
---|
| 61 | var u = document.getElementById('u'); if (!u) return false;
|
---|
| 62 | u.setAttribute("value", r);
|
---|
| 63 | f.submit();
|
---|
| 64 | return false;
|
---|
| 65 | },
|
---|
| 66 | get_background : function (o) {
|
---|
| 67 | var s = '';
|
---|
| 68 | if (window.getComputedStyle) s = window.getComputedStyle(o,null).getPropertyValue("background-image");
|
---|
| 69 | if (o.currentStyle) s = o.currentStyle.backgroundImage;
|
---|
| 70 | if (s == "none") s = "";
|
---|
| 71 | return s;
|
---|
| 72 | },
|
---|
| 73 | scrape_images : function () {
|
---|
| 74 | var a = document.getElementsByTagName('*');
|
---|
| 75 | var s = '';
|
---|
| 76 | var n = 0;
|
---|
| 77 | var l = [];
|
---|
| 78 | for (var i=0; i < a.length; i++)
|
---|
| 79 | {
|
---|
| 80 | var o = a[i];
|
---|
| 81 | if (o.tagName == "IMG" && o.src != "")
|
---|
| 82 | {
|
---|
| 83 | n++;
|
---|
| 84 | if (!l[o.src])
|
---|
| 85 | {
|
---|
| 86 | l[o.src] = "1";
|
---|
| 87 | s += this.make_thumbnail(o.src);
|
---|
| 88 | }
|
---|
| 89 | }
|
---|
| 90 | else
|
---|
| 91 | {
|
---|
| 92 | var x = /url\(["']?(.+[^'"])["']?\)/gi.exec(this.get_background(o));
|
---|
| 93 | if (x && x != "" && x.length > 1)
|
---|
| 94 | {
|
---|
| 95 | n++;
|
---|
| 96 | if (!l[x[1]])
|
---|
| 97 | {
|
---|
| 98 | l[x[1]] = "1";
|
---|
| 99 | s += this.make_thumbnail(x[1]);
|
---|
| 100 | }
|
---|
| 101 | }
|
---|
| 102 | }
|
---|
| 103 | }
|
---|
| 104 | if (n > 0)
|
---|
| 105 | {
|
---|
| 106 | return s
|
---|
| 107 | }
|
---|
| 108 | else {
|
---|
| 109 | return n;
|
---|
| 110 | }
|
---|
| 111 | },
|
---|
| 112 | strip_document : function () {
|
---|
| 113 | var a = document.getElementsByTagName('*');
|
---|
| 114 | for (var i=0; i < a.length; i++)
|
---|
| 115 | {
|
---|
| 116 | var o = a[i];
|
---|
| 117 | if (o.tagName == "LINK" || o.tagName == "STYLE")
|
---|
| 118 | {
|
---|
| 119 | this.destroy_element(o);
|
---|
| 120 | }
|
---|
| 121 | else if (o.tagName == "IMG")
|
---|
| 122 | {
|
---|
| 123 | if (o.offsetWidth <= 10 || o.offsetHeight <= 10)
|
---|
| 124 | {
|
---|
| 125 | // this.destroy_element(o.parentNode);
|
---|
| 126 | }
|
---|
| 127 | }
|
---|
| 128 | }
|
---|
| 129 | return true;
|
---|
| 130 | },
|
---|
| 131 | style_document : function () {
|
---|
| 132 | var x = document.getElementsByTagName('head').item(0);
|
---|
| 133 | var o = document.createElement('link');
|
---|
| 134 | if (typeof o != 'object') o = document.standardCreateElement('link');
|
---|
| 135 | o.setAttribute('href','http://www.wists.com/wistlet.css?x=' + Math.floor(Math.random() * 9999));
|
---|
| 136 | o.setAttribute('rel','stylesheet');
|
---|
| 137 | o.setAttribute('type','text/css');
|
---|
| 138 | x.appendChild(o);
|
---|
| 139 | return true;
|
---|
| 140 | },
|
---|
| 141 | destroy_element : function (o) {
|
---|
| 142 | while (o.childNodes.length > 0)
|
---|
| 143 | {
|
---|
| 144 | o.removeChild(o.childNodes[0]);
|
---|
| 145 | }
|
---|
| 146 | o.parentNode.removeChild(o);
|
---|
| 147 | }
|
---|
| 148 | }
|
---|
| 149 |
|
---|
| 150 | function resizeImage(img) {
|
---|
| 151 |
|
---|
| 152 | var img_width = img.offsetWidth;
|
---|
| 153 | var img_height = img.offsetHeight;
|
---|
| 154 | var img_aspect_ratio = Math.round((img_width / img_height) * 100) / 100;
|
---|
| 155 |
|
---|
| 156 | var max_width = 120;
|
---|
| 157 | var max_height = 90;
|
---|
| 158 | var max_aspect_ratio = Math.round((max_width / max_height) * 100) / 100;
|
---|
| 159 |
|
---|
| 160 | // 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);
|
---|
| 161 |
|
---|
| 162 | var new_img_width = 0;
|
---|
| 163 | var new_img_height = 0;
|
---|
| 164 | var new_aspect_ratio = 0;
|
---|
| 165 |
|
---|
| 166 | // if no resize needed
|
---|
| 167 | if (img_width < 120 && img_height < 90) {
|
---|
| 168 | new_img_width = img_width;
|
---|
| 169 | new_img_height = img_height;
|
---|
| 170 |
|
---|
| 171 | // if wider
|
---|
| 172 | } else if (img_aspect_ratio > max_aspect_ratio) {
|
---|
| 173 | new_img_width = max_width;
|
---|
| 174 | new_img_height = Math.round(new_img_width / img_aspect_ratio);
|
---|
| 175 |
|
---|
| 176 | // if taller
|
---|
| 177 | } else if (img_aspect_ratio < max_aspect_ratio) {
|
---|
| 178 | new_img_height = max_height;
|
---|
| 179 | new_img_width = Math.round(new_img_height * img_aspect_ratio);
|
---|
| 180 |
|
---|
| 181 | // equal
|
---|
| 182 | } else {
|
---|
| 183 | new_img_width = max_width;
|
---|
| 184 | new_img_height = max_height;
|
---|
| 185 | }
|
---|
| 186 |
|
---|
| 187 | img.style.width = new_img_width + "px";
|
---|
| 188 | img.style.height = new_img_height + "px";
|
---|
| 189 | new_aspect_ratio = Math.round((new_img_width / new_img_height) * 100) / 100;
|
---|
| 190 |
|
---|
| 191 | // alert("new image size is " + new_img_width + "x" + new_img_height + "\n" + "new aspect ratio is " + new_aspect_ratio);
|
---|
| 192 | }
|
---|
| 193 |
|
---|
| 194 |
|
---|
| 195 | var sociable_old_onload = window.onload;
|
---|
| 196 | window.onload = function () {
|
---|
| 197 | imgs = document.getElementsByTagName("img");
|
---|
| 198 | for(var i = 0; i < imgs.length; i++) {
|
---|
| 199 | var img = imgs[i];
|
---|
| 200 | if (img.className == 'sociable-hovers sociable_wists') {
|
---|
| 201 | img.onclick = function() { Wistlet.init(); return false; }
|
---|
| 202 | }
|
---|
| 203 | }
|
---|
| 204 | if (sociable_old_onload) sociable_old_onload();
|
---|
| 205 | };
|
---|