MooTools.More=	{version:"1.2.2.1"};Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(b,a){this.parent(b,a);this.load();},save:function(){var a=JSON.encode(this.hash);
				if(!a||a.length>4096){return false;}if(a=="{}"){this.dispose();}else{this.write(a);}return true;},load:function(){this.hash=new Hash(JSON.decode(this.read(),true));
				return this;}});Hash.each(Hash.prototype,function(b,a){if(typeof b=="function"){Hash.Cookie.implement(a,function(){var c=b.apply(this.hash,arguments);if(this.options.autoSave){this.save();
				}return c;});}});var URI=new Class({Implements:Options,regex:/^(?:(\w+):)?(?:\/\/(?:(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)?(\.\.?$|(?:[^?#\/]*\/)*)([^?#]*)(?:\?([^#]*))?(?:#(.*))?/,parts:["scheme","user","password","host","port","directory","file","query","fragment"],schemes:{http:80,https:443,ftp:21,rtsp:554,mms:1755,file:0},initialize:function(b,a){this.setOptions(a);
				var c=this.options.base||URI.base;b=b||c;if(b&&b.parsed){this.parsed=$unlink(b.parsed);}else{this.set("value",b.href||b.toString(),c?new URI(c):false);
				}},parse:function(c,b){var a=c.match(this.regex);if(!a){return false;}a.shift();return this.merge(a.associate(this.parts),b);},merge:function(b,a){if(!b.scheme&&!a.scheme){return false;
				}if(a){this.parts.every(function(c){if(b[c]){return false;}b[c]=a[c]||"";return true;});}b.port=b.port||this.schemes[b.scheme.toLowerCase()];b.directory=b.directory?this.parseDirectory(b.directory,a?a.directory:""):"/";
				return b;},parseDirectory:function(b,c){b=(b.substr(0,1)=="/"?"":(c||"/"))+b;if(!b.test(URI.regs.directoryDot)){return b;}var a=[];b.replace(URI.regs.endSlash,"").split("/").each(function(d){if(d==".."&&a.length>0){a.pop();
				}else{if(d!="."){a.push(d);}}});return a.join("/")+"/";},combine:function(a){return a.value||a.scheme+"://"+(a.user?a.user+(a.password?":"+a.password:"")+"@":"")+(a.host||"")+(a.port&&a.port!=this.schemes[a.scheme]?":"+a.port:"")+(a.directory||"/")+(a.file||"")+(a.query?"?"+a.query:"")+(a.fragment?"#"+a.fragment:"");
				},set:function(b,d,c){if(b=="value"){var a=d.match(URI.regs.scheme);if(a){a=a[1];}if(a&&!$defined(this.schemes[a.toLowerCase()])){this.parsed={scheme:a,value:d};
				}else{this.parsed=this.parse(d,(c||this).parsed)||(a?{scheme:a,value:d}:{value:d});}}else{this.parsed[b]=d;}return this;},get:function(a,b){switch(a){case"value":return this.combine(this.parsed,b?b.parsed:false);
				case"data":return this.getData();}return this.parsed[a]||undefined;},go:function(){document.location.href=this.toString();},toURI:function(){return this;
				},getData:function(c,b){var a=this.get(b||"query");if(!$chk(a)){return c?null:{};}var d=a.parseQueryString();return c?d[c]:d;},setData:function(a,c,b){if($type(arguments[0])=="string"){a=this.getData();
				a[arguments[0]]=arguments[1];}else{if(c){a=$merge(this.getData(),a);}}return this.set(b||"query",Hash.toQueryString(a));},clearData:function(a){return this.set(a||"query","");
				}});["toString","valueOf"].each(function(a){URI.prototype[a]=function(){return this.get("value");};});URI.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/};
				URI.base=new URI($$("base[href]").getLast(),{base:document.location});String.implement({toURI:function(a){return new URI(this,a);}});Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(b,a){this.parent(b,a);
				this.load();},save:function(){var a=JSON.encode(this.hash);if(!a||a.length>4096){return false;}if(a=="{}"){this.dispose();}else{this.write(a);}return true;
				},load:function(){this.hash=new Hash(JSON.decode(this.read(),true));return this;}});Hash.each(Hash.prototype,function(b,a){if(typeof b=="function"){Hash.Cookie.implement(a,function(){var c=b.apply(this.hash,arguments);
				if(this.options.autoSave){this.save();}return c;});}});			
				Element.implement({measure:function(e){var g=function(h){return !!(!h||h.offsetHeight||h.offsetWidth);};if(g(this)){return e.apply(this);
				}var d=this.getParent(),b=[],f=[];while(!g(d)&&d!=document.body){b.push(d.expose());d=d.getParent();}var c=this.expose();var a=e.apply(this);c();b.each(function(h){h();
				});return a;},expose:function(){if(this.getStyle("display")!="none"){return $empty;}var a=this.getStyles("display","position","visibility");return this.setStyles({display:"block",position:"absolute",visibility:"hidden"}).setStyles.pass(a,this);
				},getDimensions:function(a){a=$merge({computeSize:false},a);var d={};var c=function(f,e){return(e.computeSize)?f.getComputedSize(e):f.getSize();};if(this.getStyle("display")=="none"){d=this.measure(function(){return c(this,a);
				});}else{try{d=c(this,a);}catch(b){}}return $chk(d.x)?$extend(d,{width:d.x,height:d.y}):$extend(d,{x:d.width,y:d.height});},getComputedSize:function(a){a=$merge({styles:["padding","border"],plains:{height:["top","bottom"],width:["left","right"]},mode:"both"},a);
				var c={width:0,height:0};switch(a.mode){case"vertical":delete c.width;delete a.plains.width;break;case"horizontal":delete c.height;delete a.plains.height;
				break;}var b=[];$each(a.plains,function(g,f){g.each(function(h){a.styles.each(function(i){b.push((i=="border")?i+"-"+h+"-width":i+"-"+h);});});});var e={};
				b.each(function(f){e[f]=this.getComputedStyle(f);},this);var d=[];$each(a.plains,function(g,f){var h=f.capitalize();c["total"+h]=0;c["computed"+h]=0;g.each(function(i){c["computed"+i.capitalize()]=0;
				b.each(function(k,j){if(k.test(i)){e[k]=e[k].toInt()||0;c["total"+h]=c["total"+h]+e[k];c["computed"+i.capitalize()]=c["computed"+i.capitalize()]+e[k];}if(k.test(i)&&f!=k&&(k.test("border")||k.test("padding"))&&!d.contains(k)){d.push(k);
				c["computed"+h]=c["computed"+h]-e[k];}});});});["Width","Height"].each(function(g){var f=g.toLowerCase();if(!$chk(c[f])){return;}c[f]=c[f]+this["offset"+g]+c["computed"+g];
				c["total"+g]=c[f]+c["total"+g];delete c["computed"+g];},this);return $extend(e,c);}});var Tips=new Class({Implements:[Events,Options],options:{onShow:function(a){a.setStyle("visibility","visible");
				},onHide:function(a){a.setStyle("visibility","hidden");},title:"title",text:function(a){return a.get("rel")||a.get("href");},showDelay:100,hideDelay:100,className:null,offset:{x:16,y:16},fixed:false},initialize:function(){var a=Array.link(arguments,{options:Object.type,elements:$defined});
				if(a.options&&a.options.offsets){a.options.offset=a.options.offsets;}this.setOptions(a.options);this.container=new Element("div",{"class":"tip"});this.tip=this.getTip();
				if(a.elements){this.attach(a.elements);}},getTip:function(){return new Element("div",{"class":this.options.className,styles:{visibility:"hidden",display:"none",position:"absolute",top:0,left:0}}).adopt(new Element("div",{"class":"tip-top"}),this.container,new Element("div",{"class":"tip-bottom"})).inject(document.body);
				},attach:function(b){var a=function(d,c){if(d==null){return"";}return $type(d)=="function"?d(c):c.get(d);};$$(b).each(function(d){var e=a(this.options.title,d);
				d.erase("title").store("tip:native",e).retrieve("tip:title",e);d.retrieve("tip:text",a(this.options.text,d));var c=["enter","leave"];if(!this.options.fixed){c.push("move");
				}c.each(function(f){d.addEvent("mouse"+f,d.retrieve("tip:"+f,this["element"+f.capitalize()].bindWithEvent(this,d)));},this);},this);return this;},detach:function(a){$$(a).each(function(c){["enter","leave","move"].each(function(d){c.removeEvent("mouse"+d,c.retrieve("tip:"+d)||$empty);
				});c.eliminate("tip:enter").eliminate("tip:leave").eliminate("tip:move");if($type(this.options.title)=="string"&&this.options.title=="title"){var b=c.retrieve("tip:native");
				if(b){c.set("title",b);}}},this);return this;},elementEnter:function(b,a){$A(this.container.childNodes).each(Element.dispose);["title","text"].each(function(d){var c=a.retrieve("tip:"+d);
				if(!c){return;}this[d+"Element"]=new Element("div",{"class":"tip-"+d}).inject(this.container);this.fill(this[d+"Element"],c);},this);this.timer=$clear(this.timer);
				this.timer=this.show.delay(this.options.showDelay,this,a);this.tip.setStyle("display","block");this.position((!this.options.fixed)?b:{page:a.getPosition()});
				},elementLeave:function(b,a){$clear(this.timer);this.tip.setStyle("display","none");this.timer=this.hide.delay(this.options.hideDelay,this,a);},elementMove:function(a){this.position(a);
				},position:function(d){var b=window.getSize(),a=window.getScroll(),e={x:this.tip.offsetWidth,y:this.tip.offsetHeight},c={x:"left",y:"top"},f={};for(var g in c){f[c[g]]=d.page[g]+this.options.offset[g];
				if((f[c[g]]+e[g]-a[g])>b[g]){f[c[g]]=d.page[g]-this.options.offset[g]-e[g];}}this.tip.setStyles(f);},fill:function(a,b){if(typeof b=="string"){a.set("html",b);
				}else{a.adopt(b);}},show:function(a){this.fireEvent("show",[this.tip,a]);},hide:function(a){this.fireEvent("hide",[this.tip,a]);}});
	

/**************************************************************

	Script	: Vl.am
	Version	: 1.0
	Authors	: Erik Huisman
	
**************************************************************/

var Vlam = new Class({
					 
	Implements: [Options,Events],
	
	options: {},
	
	initialize: function(tweets, tips, options){
		
		this.tweets 	= tweets;
		this.tweetcount = 0;
		this.tips 		= tips;
		this.tipscount 	= 0;
		
		this.resultsIn = new Fx.Morph('rc', {
			duration: 400, 
			transition: Fx.Transitions.Sine.easeOut,
			onComplete: function(el){
				this.resultsOut.start({'height': [0,150]});		
			}.bind(this)
		});
		
		this.resultsOut = new Fx.Morph('rc', {
			duration: 400, 
			transition: Fx.Transitions.Sine.easeOut,
			onComplete: function(el){
							
			}
		});	
		
		var o = 'Enter a long url to burn it';
		var u = 'Paste your long url here';
	
		var me = this;
		
		$$('.t').addEvents({
			'mouseenter':	function(e){ if(this.value == o)  { this.value = u;  this.addClass('th') }},				
			'mouseleave':	function(e){ if(this.value == u)  { this.value = o;  this.removeClass('th') }},
			'focus':		function(e){ if(this.value == u)  { this.value = ''; this.addClass('o') }},
			'blur':			function(e){ if(this.value == '') { this.value = o;  this.removeClass('o'); } else { me.enter(this.value); } },
			'keydown':		function(e){ if(e.key == 'enter') { this.blur(); }}
		});	
	
		$$('.s').addEvent('click',$lambda(false));
		
		$('textarea').addEvent('keyup', this.docount);
		$('tweet').addEvent('click', this.dotweet);
			
		this.history = new Hash.Cookie('historycookie',{duration: 365});

		this.showbookmarklet();
		this.showtips();
		this.showtweets();
		this.showhistory();
		
	}, 
	
	showhistory: function(){
		
		this.history.each(function(hl,hs){  
							  
			$$('#his .none').destroy();				  
				
			tr    = new Element('tr');
			short = new Element('td', { 'class':'short', 'html': '<a href="http://twitter.com/home?status=http://vl.am/'+hs+'">http://vl.am/'+hs+'</a><input type="text" value="http://vl.am/'+hs+'" />' });
			count = new Element('td', { 'class':'count' });
			long  = new Element('td', { 'class':'long', 'html': '<a href="http://vl.am/'+hs+'">'+hl+'</a>' });
			
			short.inject(tr);
			count.inject(tr);
			long.inject(tr);
			
			tr.inject($('his'),'top');
			
			count.load('http://vl.am/api/count/plain/'+hs);
			
		});
		
		$$('#history .long a').each(function(item){ 
			var uri = new URI(item.get('html'));
			item.set('html',uri.get('host')+'...');
			item.set('title',uri);
		});
		$$('#history .long').setStyle('display','block')
		
		var myTips = new Tips('#history .long a', { 'className':'tooltip' } );
		
		$$('#his tr').each( function(item,index){ if(index>=5){ item.addClass('hide'); } });
		if($$('#his tr').length >= 5) { 
			var showall = new Element('tr', {'html': '<td colspan="3">Show all burned urls...</td>', 'class': 'showall', 'events': { 'click': function(){ $$('#his tr').removeClass('hide'); $$('#his .showall').addClass('hide');  }} }).inject($('his'),'bottom');
		}

	},
	
	showtweets: function() {
			var balloonOut = new Fx.Morph('balloon', {
				duration: 800, 
				transition: Fx.Transitions.Sine.easeOut,
				onComplete: function(el){
								
					$$('#balloon p').set('html',this.tweets.results[this.tweetcount].text);
					$('twitteruser').set('html','@'+this.tweets.results[this.tweetcount].from_user);
					$('twitteruser').set('href','http://twitter.com/'+this.tweets.results[this.tweetcount].from_user);
					$('retweet').set('href','http://twitter.com/home?status='+this.tweets.results[this.tweetcount].original);
					$('twitteruserimg').set('src',this.tweets.results[this.tweetcount].profile_image_url);
					if(this.tweetcount<this.tweets.results.length) { this.tweetcount++ } else { this.tweetcount = 0; };
					balloonIn.start({
						'top': [0, 14], 
						'opacity': [0, 1] 
					});
				}.bind(this)
			});
			
			var balloonIn = new Fx.Morph('balloon', {
				duration: 800, 
				transition: Fx.Transitions.Sine.easeOut,
				onComplete: function(el){
					//alert('out in 10 sec');
					
					(function() {
						balloonOut.start({
							'top': [14,0], 
							'opacity': [1,0] 
						});
					}).delay(10000);
				}
			});	
			
			balloonOut.start({
				'top': [14, 0], 
				'opacity': [1, 0] 
			});	
			
	}, 
	
	showbookmarklet: function(){
		if(Browser.Engine.trident){ $('bookmarklet').addClass('ie'); }	
		$('bmhide').addEvent('click', function(e){ e.stop; $('bookmarklet').fade('out'); $('bmshow').fade('in'); var bmCookie = Cookie.write('bmshow', 'false',{ duration: 365 }); });
		$('bmshow').addEvent('click', function(e){ e.stop; $('bookmarklet').fade('in');  $('bmshow').fade('out'); var bmCookie = Cookie.dispose('bmshow'); });
		if(Cookie.read("bmshow") == 'false') { $('bookmarklet').set('opacity',0).setStyle('display','block'); } else {  $('bookmarklet').setStyle('display','block'); $('bmshow').set('opacity',0);  }
	}, 
	
	showtips: function(){
		$('dykhide').addEvent('click', function(e){ e.stop; $('dyk').fade('out'); $('dykshow').fade('in'); var bmCookie = Cookie.write('dykshow', 'false',{ duration: 365 }); });
		$('dykshow').addEvent('click', function(e){ e.stop; $('dyk').fade('in');  $('dykshow').fade('out'); var bmCookie = Cookie.dispose('dykshow'); });
		if(Cookie.read("dykshow") == 'false') { $('dyk').set('opacity',0).setStyle('display','block'); } else {  $('dyk').setStyle('display','block'); $('dykshow').set('opacity',0);  }
		
		var dykOut = new Fx.Morph('tip', {
			duration: 400, 
			transition: Fx.Transitions.Sine.easeOut,
			onComplete: function(el){
				
				$('tip').set('html',this.tips[this.tipscount]);
				if(this.tipscount<(this.tips.length-1)) { this.tipscount++ } else { this.tipscount = 0; };
	
				dykIn.start({
					'margin-top': [-10,0], 
					'opacity': [0, 1] 
				});
			}.bind(this)
		});
		var dykIn = new Fx.Morph('tip', {
			duration: 400, 
			transition: Fx.Transitions.Sine.easeOut,
			onComplete: function(el){
				//alert('out in 10 sec');
				(function() {
					dykOut.start({
						'margin-top': [0,10], 
						'opacity': [1,0] 
					});
				}).delay(8000);
			}
		});	
		
		dykOut.start({ 'opacity': [0, 0] });
		
	},

	docount: function (){
		len = $('textarea').get('value').length;
		if (len > 140) { 
			val = $('textarea').get('value').substring(0,140);
			$('textarea').set('value', val);
		}
		$('counter').set('html',140 - len);
	},
	
	dotweet: function(){
		rel = "http://twitter.com/home?status=" + $('textarea').get('value');
		window.location.replace(rel);
	},
	
	enter: function(url) {
			
		var jsonRequest = new Request.JSON({url: "api/shorten/json/"+url, onComplete: function(data){
			
			this.resultsIn.start({'height': [$('rc').getStyle('height'), 0]});
			
			if(data.status.result == 'ok'){ 
			
				var percentage 	= Math.round(100 - ((data.url.length / data.original.length)*100)) + '%';  
				var info 		= 'We burned <span>'+percentage+'</span> of this url.'; 
				
				$$('#results .p').set('html', percentage).set('opacity','0').fade('in');
				$$('#results .i').set('html', info +'<br/><span>short url</span> <input value="http://vl.am/'+data.hash+'" />').set('opacity','0').fade('in');
				$('textarea').set('value', 'http://vl.am/' +data.hash+ ' ').set('opacity','0').fade('in');	
				
				this.history.set( data.hash , data.original );
				
				uri = new URI(data.original);
				
				tr    = new Element('tr');
				short = new Element('td', { 'class':'short', 'html': '<a href="http://twitter.com/home?status=http://vl.am/'+data.hash+'">http://vl.am/'+data.hash+'</a><input type="text" value="http://vl.am/'+data.hash+'" />' });
				count = new Element('td', { 'class':'count' });
				long  = new Element('td', { 'class':'long', 'html': '<a href="http://vl.am/'+data.hash+'">'+uri.get('host')+'...</a>' });
				
				short.inject(tr);
				count.inject(tr);
				long.inject(tr);
				
				tr.inject($('his'),'top');
				
				count.load('http://vl.am/api/count/plain/'+data.hash);				
			
			} else if(data.status.result == 'error'){

				var percentage 	= '0%';  
				if(data.status.code == 400) { var info = 'This seems to be an invalid url'; }
				if(data.status.code == 401) { var info = 'This is a pretty short url. <br/> No need to chop it!'; }
				if(data.status.code == 402) { var info = 'You can\'t shorten our own url\'s'; }
				if(data.status.code == 403) { var info = 'Only official coutrycodes are allowed'; }
				
				$$('#results .p').set('html', percentage).set('opacity','0').fade('in');
				$$('#results .i').set('html', info ).set('opacity','0').fade('in');
				$('textarea').set('value', '').set('opacity','0').fade('in');	
			
			} else {
				
				$$('#results .p').set('html','0%').set('opacity','0').fade('in');
				$$('#results .i').set('html', 'Nothing happened yet').set('opacity','0').fade('in');
				$('textarea').set('value','').set('opacity','0').fade('in');
				
			}
			
		}.bind(this)}).get();
			
	}
	
	
})