// http://snipplr.com/view/637/strip-html-tags-from-string/
function stripHtml(s) {
	return s.replace(/\\&/g, '&amp;').replace(/\\</g, '&lt;');
}

function disableSubmit(form) {
	form.commit.disabled = true;
}

function enableSubmit(form) {
	form.commit.disabled = false;
}

function prepareDimpLauncher() {
  $("a.dimpLauncher").click(function(e) {
    window.frames['dimpLauncherFrame'].location.href = this.href;
    var infoBox = $(this).siblings('.dimpLaunchInfoBox');
    if (!infoBox.length)
      return false;
    infoBox = $(infoBox[0]);
    if (!infoBox.is(':hidden'))
      return false;
    infoBox.slideDown(200);
    window.setTimeout(function() { infoBox.slideUp(200); }, 3000);
    return false;
  })
}

var originalSpanValues = new Object();

function applyUnixFilterToInputs(inputs) {
  $(inputs).change().keyup(function(e) {
    var replaced = this.value.toLowerCase().replace(/[^a-z0-9_\-]/g, '');
    if (this.value != replaced)
      this.value = replaced;
  })
}

function bindInputToLiveSpan(input, liveSpan) {
  originalSpanValues[liveSpan] = $(input).attr('placeholder');
  $(input).change().keyup(function(e) {
    var val = this.value == "" ? originalSpanValues[liveSpan] : this.value;
    $(liveSpan).text(val);
  });
}

function bindInputToHtmlPreviewSpan(input, previewSpan) {
	$(input).change().keyup(function() {
		if (this.value == "") {
			$(previewSpan).children(".placeholder").show();
			$(previewSpan).children(".contents").html("")
		} else {
			$(previewSpan).children(".placeholder").hide();
			$(previewSpan).children(".contents").html(this.value)
		}
	});
}

function bindAppcastItemFields() {
	$("#appcast_item_version_string").change().keyup(function() {
		$(".releaseLink").hide();
		$('.releaseNonLinkWrapper').show();
		if (this.value == "") {
			$(".releaseVersion")
				.addClass("readonlyPlaceholder")
				.text("1.0");
		} else {
			$(".releaseVersion")
				.removeClass("readonlyPlaceholder")
				.text(this.value);
		}
	});
}

function setupFeedbackForm() {
	var emailConfirmationShown = false;
	$(document.feedbackForm).submit(function () {
		if (!emailConfirmationShown && document.feedbackForm.text.value.indexOf("?") > 0) {
			$(document.feedbackForm.email).addClass("needsAttention");
			$(document.feedbackForm.email).attr("placeholder", "Type your email address here.");
			$(document.feedbackForm.commit).val("Send anyway");
			$(".noEmailConfirmationPlaceholder").html(
				'<p class="noEmailConfirmation">It appears you entered a question, but you did not give an email address for a response. Sure?</p>'
			);
			$(document.feedbackForm.email).change().keyup(function() {
				var buttonText = document.feedbackForm.email.value == "" ? "Send anyway" : "Send";
				$(document.feedbackForm.commit).val(buttonText);
			});
			emailConfirmationShown = true;
			return false;
		} else {
			return true;
		}
	});
}

$(document).ready(function() {
  prepareDimpLauncher();
  applyUnixFilterToInputs("#user_unix_name");
  bindInputToLiveSpan("#user_public_name", ".livePublicName");
  bindInputToLiveSpan("#user_unix_name", ".liveUnixName");
	bindInputToHtmlPreviewSpan("#appcast_item_release_notes",
			"#releaseNotesPreview");
	bindInputToHtmlPreviewSpan("#appcast_description", 
			"#appcastDescriptionPreview");
	bindAppcastItemFields();
	setupFeedbackForm();
})