var MultipleLinks = new Class({
	
	Implements: [Options, Events],
	
	options:{
		links : [
			['http://google.com','_blank','Google'],
			['http://facebook.com','_blank','FaceBook']
		],
		hideDelay : 800
	},

	initialize: function(element, options){
		this.setOptions(options);
		this.element = $(element);
		
		var opts = this.options;
		var element = this.element;
		
		var multipleLinkList = new Element('ul',{
				'class' : 'multiple_link',
				'style' : 'display:none; position:absolute; z-index:9999;'
		});
		
			
		
		opts.links.each(function(myLink){
			
			var multipleLinkItem = new Element('li',{
				'class': 'multiple_link_item'
			});
			
			var linkShell = new Element('a',{
				'href' : myLink[0],
				'target' : myLink[1],
				'title' : myLink[2],
				'html' : myLink[2]
			});
			
			linkShell.inject(multipleLinkItem);
			multipleLinkItem.inject(multipleLinkList);
		});
		
		multipleLinkList.inject(element, 'after');
		
		
		element.addEvent('click', function(event){
			event.stop();
			multipleLinkList.setStyle('display','block');
			multipleLinkList.setStyle('opacity', 1);
			
			var size = window.getSize(), scroll = window.getScroll(),
			props = {x: 'left', y: 'top'},
			obj = {};
			var listSize = multipleLinkList.getSize();
		
			for (var z in props){
				obj[props[z]] = event.page[z];
				//if ((obj[props[z]] + multipleLinkList[z] - scroll[z]) > size[z]) obj[props[z]] = event.page[z]  - multipleLinkList[z] ;
				if ((obj[props[z]] + listSize[z] - scroll[z]) > size[z]) obj[props[z]] = event.page[z] - ( (obj[props[z]] + listSize[z] - scroll[z]) - size[z] );
			}
			
			multipleLinkList.setStyles(obj);
			
			multipleLinkList.addEvent('mouseleave',function(){
				$clear(this.timer);
				this.timer = this.hide.delay(opts.hideDelay, this, multipleLinkList);
			}.bind(this));
			
			multipleLinkList.addEvent('mouseenter',function(){
				this.timer = $clear(this.timer);
				multipleLinkList.setStyle('opacity',1);
			}.bind(this));
			
		}.bind(this));
		
		return this;
	},
	
	hide: function(el){
		var hideTween = new Fx.Tween(el,{'duration':300,'onComplete' : function(){
			el.setStyle('display','none');
		}});
		hideTween.start('opacity','0');
		
		//el.setStyle('display','none');
	}
});