var centering = true;
var dv = ' '; // default value of the crumb
var w1 = '15px'; // smaller width of the crumb
var w2 = '68px'; // larger value of the crumb

$(document).ready(function() {
	$("#url").select();
	$("#crumb").keyup(function() {
		$(this).val($(this).val().replace(/[^a-zA-Z0-9_-]/, ''));
	});
	$("#squeeze-url").click(function() {
		$("#shorten").submit();
	});
	$("#shorten").submit(function() {
		if($("#crumb").val() == dv)
			$("#crumb").val('');

		var str = 'action=shorten&' + $("#shorten").serialize();
		//alert('/process.crumble.php?'+str)
		$.ajax({
			type: "POST",
			url: '/process.crumble.php',
			data: str,
			dataType: 'json',
			timeout: 1000*10, // timeout after 10 seconds
			success: function(data, textStatus) {
				var e = document.createElement('div');
				$(e).hide();
				if(data.error) {
					$(e).addClass('error').html(data.error);
					var hide = setTimeout(function() {
						$(e).slideUp('fast');
					}, 5000);
				} else if(data.url_crumb && data.url_destination && data.clicks) {
					var crumb = document.createElement('span');
					var crumbA = document.createElement('a');
					var v = 'http://oran.gs/'+data.url_crumb;
					$(crumbA).attr('href', v).html(v).click(copyCrumb);
					$(crumb).addClass('crumb').prepend(crumbA);
					$(e).addClass('success').html('<span class="destination"><a href="'+data.url_destination+'">'+data.url_destination+'</a></span>'+'<span class="clicks">'+data.clicks+' clicks</span>').prepend(crumb);
				}
				$("#results").prepend(e);
				$(e).slideDown('fast');
				resetForm();
				centerWrapper();
			},
			error: function() {
				var e = document.createElement('div');
				$(e).hide().addClass('error').html('There was an unforseen error.  Please try again later.');
				$("#results").prepend(e);
				$(e).slideDown('fast');
				var hide = setTimeout(function() {
					$(e).slideUp('fast');
				}, 5000);
			//							alert('Hmm... Didn\'t work.');
			}
		});

		return false;
	});
	$(window).resize(centerWrapper);
	$("#crumb").blur(setCrumb).focus(setCrumb);
});
$(window).load(function() {
	centerWrapper();
});

function setCrumb()
{
	// if it has the default value, clear it and, enlarge it
	if($(this).val() == dv) {
		$(this).val('').animate({
			width:w2
		});
	}

	// if it is clear, give the default value, and shrink it.
	else if($(this).val() == '') {
		$(this).animate({
			width:w1
		}).val(dv);
	}
}
function resetForm()
{
	$("#crumb").css({
		width:w1
	}).val(dv);

	$("#url").val('').select();
}
function copyCrumb(event)
{
	//alert('here');
	event.preventDefault();
	var v = $(this).attr('href');
	var i = document.createElement('input');
	$(i).val(v).blur(unCopyCrumb).keyup(function() {
		$(this).val(v);
	});
	$(this).after(i).remove();
	$(i).focus().select();
//	copy(v);
}
function unCopyCrumb()
{
	var v = $(this).val();
	var a = document.createElement('a');
	$(a).attr('href', v).html(v).click(copyCrumb);
	$(this).after(a).remove();
}
function centerWrapper()
{
	var x = setTimeout(function() {
		var margin = 50;
		var m = 30; // estimated movement
		var w = $(window).height();
		var h = $("#wrapper").outerHeight();
		var o = $("#wrapper").offset();
		var t;

		if(o.top == 0 || (w/2) - (h/2) > margin) {
			t = (w/2) - (h/2);
		} else {
			t = margin;
		}

		$("#wrapper").queue(function() {
			$(this).animate({
			'top':t+'px'
			});

			// this makes it so it doesn't get caught on itself. it will resize every 100 miliseconds instead of every resize incriment.
			var y = setTimeout(function() {
				$("#wrapper").dequeue();
				$("#wrapper").queue('fx', []);
			}, 100);
		});
//alert('window height: '+w+' wrapper outerHeight: '+h+' wrapper offset top: '+o.top);
	}, 0);
}