/*
Script: preview_bubble.js
	Contains <PreviewBubble>

Author:
	converted to mootools.1.2 by a mckinven
License:
	MIT-style license.

*/

/*
Class: PreviewBubble
	a popup bubble for websnpr service

Arguments:
	options - see Options below

Options:
	deveoperkey: key provided by websnpr
*/
var PreviewBubble = new Class({
	Implements: Options,
	options: {
		deveoperKey:'2V6GhGqSh1G6',
		speed:'slow',
		local:false,
		src:'rel'
	},
	initialize: function(links, options){
		
		var options = this.setOptions(options);
		//console.log('test',this.options);
		
		this.currentWin = null;
		this.links = links;
		this.loaded = -1;
		this.opened = -1;
		this.setup();
	},
	setup:function()
	{
		this.links.addEvents({
			'mouseenter':this.popup.bind(this),
			'mouseleave':this.closepopup.bind(this)
		})
	},
	popup:function(e){
		if(this.currentWin==null)
		{
			var n = e.target;
			var x = e.client.x;
			var y = e.client.y;
			
			n.removeEvent('mouseenter');
			var myco = $(e.target).getCoordinates();
			var dims = {openTop:y+window.getScrollTop(),openLeft:x+10 ,directionTop:10,directionLeft:10}
			var bubble = 'leftpopup';
			if((dims.openLeft+243)>window.getWidth())
			{
				dims.openLeft = x;
				dims.directionLeft = -10;
				bubble = 'rightpopup';
			}
			
			//console.log(e);
			
			var addDiv=new Element('div');
			addDiv.addClass(bubble);
			addDiv.setStyles({left:dims.openLeft,top:dims.openTop,height:10});

			var menuDiv=new Element('div',{'class':{'background-color':'#eeeeee','padding':'3px','border-bottom':'2px solid red'}});
			var img = new Element('img',{id:'tmpimg',src:'css/loading.gif'});
			
			img.injectInside(addDiv);
			if(this.options.local==true)
			{
				var preload = new Element('img',{src:e.target.get(this.options.src)});	
				preload.addClass('client_logo_view');	
				preload.setStyle('position','absolute');
				preload.setStyle('left','28px');		
			}
			else
			{
				var preload = new Element('img',{src:'http://images.websnapr.com/?key=2V6GhGqSh1G6&url='+encodeURIComponent(n.href)});
					
			}
			preload.setStyle('opacity',0);
			preload.addEvent('load',function(e){
				//console.log(preload);
				if(preload.width>205){
					preload.width =205;
				}
				if(this.opened==1)
				{
					img.dispose();
					preload.injectInside(addDiv);
					preload.tween('opacity',[0,1]);
				}
				this.loaded=1;
			});
			var myEffects = new Fx.Morph(addDiv, {duration: 'normal',onComplete:function(){
				if(this.loaded!=-1)
				{
					img.dispose();
					preload.injectInside(addDiv);	
					preload.tween('opacity',[0,1]);
				}
				this.opened = 1;
			}});

			myEffects.start({
			'height': ['20px','195px'],
			'top':dims.openTop+dims.directionTop,
			'left':dims.openLeft+dims.directionLeft
			});

			addDiv.injectAfter($("outer_wrap"));
			this.currentWin = addDiv;		
		}
	},
	closepopup:function()
	{
		if(this.currentWin!=null)
		{
			this.currentWin.dispose();
		}
		this.currentWin=null;	
	},
	swap_img:function(pre,img)
	{
	
	}
});
