﻿/// <reference path="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4-vsdoc.js" />
/// <reference name="MicrosoftAjax.js" />

window.scrollTo = function () { };

$(function () {
	$(".ux-quote-form .form-pair :input").keydown(function (evt) {
		var code = evt.keyCode || evt.which;
		if (code == Sys.UI.Key.enter) {
			var next = $(this).closest(".form-pair").next(".form-pair").children(":input");
			if (next.length != 0) {
				next.focus();
				if (next.is("select"))
					next.attr("size", $("option", next).length);
				return false;
			}
		}
	});

	$(".ux-quote-form select").blur(function () { $(this).attr("size", 1); });
	$(".ux-open-terms").click(function (evt) { $find("TermsPopup").show(); evt.stopPropagation(); return false; });
	$(".ux-close-terms").click(function () { $find("TermsPopup").hide(); });
	// Deprecated: $(".ux-delete").click(function () { return confirm("Are you sure you wish to delete this application?") });
	$("table.ux-hover-rows tbody tr").hover(function () { $(this).toggleClass("hover") });
	$("table.ux-data-table").each(function () {
		var table = $(this);
		table.find("tr td:first-child, tr th:first-child").addClass("first");
		table.find("tr td:last-child, tr th:last-child").addClass("last");
		table.after("<div class='table-footer-shadow'><div><div></div></div></div>");

		// Setup tooltips
		table.find("a.ux-tooltip").each(function () {
			var icon = $(this);
			var tooltip;
			icon.hover(function () {
				if (!tooltip) {
					var content = icon.attr("title");
					tooltip = $("<span class='tooltip'>" + content + "<span /></span>")
						.css({
							display: "none",
							top: function () { return icon.position().top - 61 },
							left: function () { return icon.position().left - 89 }
						});
					icon.after(tooltip);
				}
				tooltip.toggle();
			});
		});
	});
	$("input.ux-focus").focus(function () { $(this).select() });

	// Setup searching on dealers/referrers dashboards
	(function () {
		var uxSearchFilter = $(".ux-search-filter");
		if (!uxSearchFilter.length)
			return;

		var uxSearchInput = $(".ux-search-input", uxSearchFilter);
		var performSearch = function (term) {
			if (term) {
				var location = window.location.toString();
				var index = location.indexOf('?');
				location = index != -1 ? location.substring(0, index) : location;
				window.location = location + "?s=" + term;
			}
		}

		uxSearchInput.watermark("Search");
		uxSearchInput.keydown(function (evt) {
			var code = evt.keyCode || evt.which;
			if (code == Sys.UI.Key.enter) {
				performSearch($(this).val());
				return false;
			}
		});
	})();

	// Setup tabs
	var uxTabs = $("ul.ux-tabs");
	uxTabs.each(function () {
		var tabs = $(this);
		tabs.find("li a.selected").append("<span><span /></span>");
		tabs.find("li:first").addClass("first");
		tabs.find("li:last").addClass("last");
	});
});

// Watermark plugin
(function ($) {
	jQuery.fn.watermark = function (placeholder) {
		
		var field = this;
		field.data("watermark", placeholder);

		var focus = function () {
			if (field.hasClass("watermark")) {
				field.removeClass("watermark");
				field.val("");
			}
		};

		var blur = function () {
			if (field.val() == "") {
				field.addClass("watermark");
				field.val(placeholder);
			}
		};

		field.focus(focus);
		field.blur(blur);
		blur();
	}
})(jQuery);

// This stops ValidationSummary from scrolling to the top, but it also breaks the scrollTo method.
baseScrollTo = window.scrollTo;
window.scrollTo = function () { baseScrollTo(0, $(document.body).outerHeight()); return true; };

$(function () {
	if (typeof (WebForm_OnSubmit) != "undefined") {
		var orig = WebForm_OnSubmit;
		var pairs = $(".validator").closest(".form-pair");
		var updatePair = function (pair) {
			var errors = pair.find(".validator:visible").length;
			pair[errors ? "addClass" : "removeClass"]("field-error");
		};

		WebForm_OnSubmit = function () {
			var result = orig.apply(this, arguments);
			pairs.each(function () { updatePair($(this)); });
			return result;
		};

		pairs.find(":input").blur(function () { updatePair($(this).closest(".form-pair")); });
	}
});
