var VLinkify = new Class({
	Implements: [Options, Events],
	options:{
		element:'body',
		types:'a'
	},
	initialize: function(options){
		this.setOptions(options);
		this.parser = VLinkify_Parser;
		this.element = document.getElement(this.options.element);
		this.scan();
		
		this.fireEvent('ping');
	},
	scan:function(){
		this.parser.each(function(parseFunc){
			var elements = this.element.getElements(this.options.types+'[href*='+this.parser.keyOf(parseFunc)+']').filter(function(el){return !el.retrieve('linkified')});
			if(elements){
				this.addEvent('ping', function(){
					parseFunc(elements);
				});
			}
			}.bind(this)	
		);
	}
});



var VLinkify_Parser = new Hash({
	'yfrog.com':function(elements){//add :small
		elements.each(function(el){
			
				var img = new Element('img', {src:el.href+':small', 'class':'linkimg'}).store('realurl');
				var div = new Element('span', {'class':'linkimgcon'}).adopt([img]);
				
				var w = new Element('span').adopt([new Element('span', {text:el.get('text'), 'class':'hl'}), div]);
				el.set('text', '').grab(w);
				el.addClass('twitpic').addClass('linkified').addClass('infomsg');
				el.store('linkified', true);
			
			
		});
	},
	'twitpic.com':function(elements){
		elements.each(function(el){//take last 'directory' and put twitpic.com/show/thumb/ before
				var r = el.href.split('/');
				
				var last = r[r.length-1];
				var img = new Element('img', {src:'http://twitpic.com/show/thumb/'+last+'', 'class':'linkimg'}).store('realurl');
				var div = new Element('span', {'class':'linkimgcon'}).adopt([img]);
				
				var w = new Element('span').adopt([new Element('span', {text:el.get('text'), 'class':'hl'}), div]);
				el.set('text', '').grab(w);
				el.addClass('twitpic').addClass('linkified').addClass('infomsg');
				el.store('linkified', true);
			
			
		});
	},
	'youtube.com':function(elements){//youtube has 2 images... read the code ;)
		elements.each(function(el){
			var r = el.href.match("[\\?&]v=([^&#]*)");
			if(r && r[1]){
			
			
				var img = new Element('img', {src:'http://img.youtube.com/vi/'+r[1]+'/1.jpg', 'class':'linkimg'});
				var img2 = new Element('img', {src:'http://img.youtube.com/vi/'+r[1]+'/2.jpg', 'class':'linkimg'});
				var div = new Element('span', {'class':'linkimgcon'}).adopt([img, img2]);
				
				var w = new Element('span').adopt([new Element('span', {text:el.get('text')}), div]);
				el.set('text', '').grab(w);
				//console.log('http://img.youtube.com/vi/'+r[1]+'/2.jpg');
				el.addClass('youtube').addClass('linkified');
				el.store('linkified', true);
			}
		});
	
	},
	'youtu.be':function(elements){
		elements.each(function(el){
			var r = el.href.match(".be/([^&?#]*)");
			if(r && r[1]){
			
			
				var img = new Element('img', {src:'http://img.youtube.com/vi/'+r[1]+'/1.jpg', 'class':'linkimg'});
				var img2 = new Element('img', {src:'http://img.youtube.com/vi/'+r[1]+'/2.jpg', 'class':'linkimg'});
				var div = new Element('span', {'class':'linkimgcon'}).adopt([img, img2]);
				
				var w = new Element('span').adopt([new Element('span', {text:el.get('text')}), div]);
				el.set('text', '').grab(w);
				//console.log('http://img.youtube.com/vi/'+r[1]+'/2.jpg');
				el.addClass('youtube').addClass('linkified');
				el.store('linkified', true);
			}
		});
	
	},
	'flickr':function(elements){
	}
});

