function PreviewLink() {
	window.addEvent('load', function(){
		var html='<img src="http://images.websnapr.com/?key={0}&url={1}" width="202" height="152" border="0">';
		$$('.previewlink').each(function(trigger){
			new ToolTip(
			trigger, html.format(encodeURIComponent('kW5HZC6hzrR9'),escape(trigger.href)),
			{mode: 'cursor', display: 'inline', width: 232, style: 'default', sticky: 0}
			);
		});
	});
}

var ToolTip = new Class({
    initialize: function(trigger, content, options){
        this.setOptions({
            duration: 300,
            transition: Fx.Transitions.linear,
            wait: false,
            tooltipClass: "yoo-tooltip",
            style: "default",
            width: 250,
            display: "inline",
            mode: "cursor",
            sticky: 0
        }, options);
        this.open = false;
        this.trigger = $(trigger);
        this.trigger.setStyles(this.triggerstyles());
        this.tooltip = (new Element("div", {
            "class": this.options.tooltipClass,
            "styles": {
                "position": "absolute",
                "top": 0,
                "left": 0,
                'z-index': 10,
                "visibility": "hidden",
                "width": this.options.width
            }
        })).injectTop(document.body);
        this.tooltip_style = (new Element("div", {
            "class": this.options.style
        })).injectInside(this.tooltip);
        this.tooltip_tl = (new Element("div", {
            "class": "tooltip-tl",
            "styles": {
                width: this.options.width
            }
        })).injectInside(this.tooltip_style);
        this.tooltip_tr = (new Element("div", {
            "class": "tooltip-tr"
        })).injectInside(this.tooltip_tl);
        this.tooltip_t = (new Element("div", {
            "class": "tooltip-t",
            "styles": {
                height: 15
            }
        })).injectInside(this.tooltip_tr);
        this.tooltip_l = (new Element("div", {
            "class": "tooltip-l",
            "styles": {
                width: this.options.width
            }
        })).injectAfter(this.tooltip_tl);
        this.tooltip_r = (new Element("div", {
            "class": "tooltip-r"
        })).injectInside(this.tooltip_l);
        this.tooltip_m = (new Element("div", {
            "class": "tooltip-m"
        })).injectInside(this.tooltip_r).setHTML(content);
        this.tooltip_bl = (new Element("div", {
            "class": "tooltip-bl",
            "styles": {
                width: this.options.width
            }
        })).injectAfter(this.tooltip_l);
        this.tooltip_br = (new Element("div", {
            "class": "tooltip-br"
        })).injectInside(this.tooltip_bl);
        this.tooltip_b = (new Element("div", {
            "class": "tooltip-b"
        })).injectInside(this.tooltip_br);
        this.tooltip_arrow = (new Element("div", {
            "class": "tooltip-arrow",
            "styles": {
                height: 23
            }
        })).injectInside(this.tooltip_b);
        if (this.options.sticky) {
            this.close = (new Element("div", {
                "class": "tooltip-close"
            })).injectInside(this.tooltip_tl);
        }
        this.fx = new (Fx.Styles)(this.tooltip, this.options);
        this.trigger.addEvent("mouseenter", this.show.bindWithEvent(this));
        if (this.options.sticky) {
            this.close.addEvent("mouseenter", this.hide.bindWithEvent(this));
        }
        else {
            this.trigger.addEvent("mouseleave", this.hide.bindWithEvent(this));
        }
    },
    show: function(event){
        if (!this.open) {
            this.pos = this.position(event);
            this.tooltip.setStyles({
                opacity: 0,
                top: this.pos.top + "px",
                left: this.pos.left + "px"
            });
            this.fx.start({
                opacity: 1,
                top: (this.pos.top - 10) + "px"
            });
            this.open = true;
        }
    },
    hide: function(event){
        this.fx.start({
            opacity: 0,
            top: (this.pos.top - 20) + "px"
        });
        this.open = false;
    },
    position: function(event){
        var trg = this.trigger.getCoordinates();
        var tip = this.tooltip.getCoordinates();
        if (this.options.mode == "cursor") {
            var event = new Event(event);
            trg = $extend(trg, {
                top: event.page.y,
                left: event.page.x,
                width: 0
            });
        }
        return {
            top: trg.top - tip.height,
            left: trg.left - tip.width / 2 + trg.width / 2
        };
    },
    triggerstyles: function(){
        var styles = {
            display: this.options.display
        };
        if (!this.trigger.getFirst()) {
            return styles;
        }
        var first = this.trigger.getFirst().getCoordinates();
        return $extend(styles, {
            width: first.width
        });
    }
});
ToolTip.implement(new Options);
