$(function() {
	$.easing.def = 'easeInOutSine';
	var	glyph_link = $('#glyph a'),
		timer_glyph;
	$('#glyph').hover(function() {
		timer_glyph = setTimeout(function() {
			glyph_link.stop().fadeTo(1000,1);
		},300);
	},function() {
		clearTimeout(timer_glyph);
		glyph_link.stop().fadeTo(1000,0);
	}).mouseleave();
	var title = $('#title'),
		body = $('#body'),
		container = $('#container'),
		slider = $('#slider'),
		poems = new Array(),
		logPoem = function() {
			var entry = {title:title.val(),body:body.val()};
			if(poems.length>0&&poems[poems.length-1].title==entry.title&&poems[poems.length-1].body==entry.body) return;
			if(poems.length<=100) slider.width(poems.length+'%');
			slider.slider('option','max',poems.length).slider('value',poems.length);
			poems.push(entry);
		};
	title.data('sizer',$('#sizer_title'));
	body.data('sizer',$('#sizer_body'));
	$('textarea').bind('keyup click',function(e) {
		var sizer = $(this).data('sizer'),
			scrollTop = $(window).scrollTop(),
			oldHeight,
			newHeight,
			newWidth,
			text;
		text = $(this).val().replace(/--/g,'—').replace(/([\w\.\?,])'/g,'$1’').replace(/\'([\w\.\?,])/g,'‘$1').replace(/([\w\.\?,])"/g,'$1”').replace(/"([\w\.\?,])/g,'“$1');
		$(this).val(text);
		sizer.html(text.replace(/ /g,'&nbsp;').replace(/\n/g,'<br/>')+'<br/>');
		newWidth = Math.min(Math.max(title.data('sizer').width(),body.data('sizer').width()),500)+30;
		oldHeight = $(this).height();
		newHeight = sizer.height();
		$(this).height(sizer.height());
		$(window).scrollTop(scrollTop+(newHeight-oldHeight));
		title.add(body).width(newWidth);
		container.width(newWidth+24);
		return;
	}).keydown(function(e) {		
		if(e.keyCode==32||e.keyCode==13) { // if this was the space or enter key or blur
			logPoem();
		}
	}).focusout(function(e) {
		logPoem();
	}).mouseenter(function() {
		title.add(body).stop().animate({backgroundColor:'#ffd'},1000,function() {
			$(this).animate({backgroundColor:'#fbfbfb'},750);
		});
	}).mouseenter();
	title.bind('keyup blur',function() {
		var text = $(this).val();
		document.title = (text ? text + ' • ' : '')+'Composer';
	}).focus();
	slider.slider({
		max:0,
		step:1,
		slide:function(e,ui) {
			if(e.originalEvent) { // if changed by user input
				var step = slider.slider('option','step');
				if(poems.length) {
					title.val(poems[ui.value].title);
					body.val(poems[ui.value].body).keyup();
				}
			}
		}
	});
});
