﻿$j(function () {
	dialog.init();
	$j('.dialogbutton, .dialogbutton_orange, .dialogbutton_grey').setHoverClass("hover");
});

var dialog = {
	init: function () {
		$j('.dialogsplit input').live('focus', function () {
			if ($j(this).parents('.dialogcontent').hasClass('dialoginactive')) {
				$j('.dialogsplit .dialogcontent').addClass('dialoginactive');
				$j(this).parents('.dialogcontent').removeClass('dialoginactive');
				$j('.dialogsplit .dialogcontent .formcol').removeClass('inputerrorflag').find('.inputerror span').css('display', 'none');
			}

		});
	},
	userAddress: {
		init: function ($jzipCodeElement) {
			$zipCodeElement.keypress(function (e) {
				if (e.keyCode == 13) {
					e.preventDefault();
					$j('.streetname-textbox').focus();
				}
			}).keyup(function (e) {
				if ($j(this).val().length > 3) {
					dialog.userAddress.searchDistrict($j(this));
				}
				else {
					$j(".city").val('');
				}
			})

			$j(".streetname-textbox").live('keypress', function (e) {
				if (e.keyCode == 13) {
					e.preventDefault();
				}
			});
		},
		searchDistrict: function ($zipCodeElement) {
			var city = $j('.city');
			if ($zipCodeElement.val() == "") {
				city.val("");
			}
			else {
				$j.ajax({
					type: 'POST',
					url: '/Tools/Webservices/KasiaAddress.asmx/SearchDistrictByZipcode',
					contentType: 'application/json; charset=utf-8',
					dataType: 'json',
					data: '{"zipcode": ' + $zipCodeElement.val() + '}',
					success: function (data) {
						var cityData = data.d;
						city.val(cityData);
						if (city.val() != '') {
							dialog.userAddress.getStreetNames($zipCodeElement)
						}
					}
				});
			}
		},
		getStreetNames: function ($zipCodeElement) {
			var streetname = $j('.streetname-textbox');
			streetname.bind("autocompletechange", function (event, ui) {
				var formcol = streetname.parents(".formcol");
				if (streetname.val().toUpperCase() != $j("input[name=selected-street]").val() && streetname.val() != '') {
					//streetname.val("");
					if (!formcol.hasClass("inputerrorflag")) {
						formcol.addClass("inputerrorflag");
					}
					$j("#invalidaddress span:first").show();
				} else {
					var invalidAddressDiv = formcol.find("#invalidaddress");
					if (invalidAddressDiv[0]) {
						if (streetname.val() != '') {
							formcol.removeClass("inputerrorflag");
						}
						invalidAddressDiv.find("span:first").hide();
					}
				}
			});
			streetname.autocomplete({
				source: function (request, response) {
					$j.ajax({
						type: "POST",
						url: "/Tools/Webservices/KasiaAddress.asmx/SearchStreetNames",
						contentType: "application/json; charset=utf-8",
						dataType: "json",
						data: "{'postalcode': " + $zipCodeElement.val() + ", 'search': '" + escape(streetname.val()) + "'}",
						success: function (data) {
							if (data.d != null && data.d.length > 2) {
								response($j.map(jQuery.parseJSON(data.d), function (item) {
									return {
										value: item.displayname, id: item.amsid
									}
								}));
							} else {
								var noresult = new Array();
								noresult[0] = {
									value: "Ingen resultater", id: -1
								}
								response(noresult)
							}
							$('.ui-autocomplete').addClass('dialogautocomplete');
						}
					});
				},
				selectFirst: true,
				minLength: 4,
				select: function (event, ui) {
					var label = $j.trim(ui.item.label);
					if (ui.item.id == 0) {
						// Only a street name is choosen
						var label = $j.trim(ui.item.label);
						this.value = label + " ";
						streetname.autocomplete('search');
						event.preventDefault();
					}
					else if (ui.item.id == -1) {
						// No results
						event.preventDefault();
					}
					else if (ui.item.id > 0) {
						this.value = label;
						$j("input[name=amsid]").val(ui.item.id);
						$j("input[name=selected-street]").val(label.toUpperCase());
						var formcol = streetname.parents(".formcol");
						var invalidAddressDiv = formcol.find("#invalidaddress");
						if (invalidAddressDiv[0]) {
							formcol.removeClass("inputerrorflag");
							invalidAddressDiv.find("span:first").hide();
						}
					}
				},
				open: function () {
					$j(this).removeClass("ui-corner-all").addClass("ui-corner-top");
				},
				close: function () {
					$j(this).removeClass("ui-corner-top").addClass("ui-corner-all");
				}
			});

		}

	},
	credentials: {
		init: function () {
			$j(".username-textbox").live('keypress', function (e) {
				if (e.keyCode == 13) {
					e.preventDefault();
					dialog.credentials.submit();
				}
			});

			$j(".password-textbox").live('keypress', function (e) {
				if (e.keyCode == 13) {
					e.preventDefault();
					dialog.credentials.submit();
				}
			});

			$j(".submit-credentials").live('click', function () {
				dialog.credentials.submit();
			});
		},
		submit: function () {
			if (!formValidation.validateGroup($j(".dialogright"), 'login')) {
				return;
			}

			var username = $j(".username-textbox");
			var password = $j(".password-textbox");
			var returnurl = $j("input[name='returnurl']");
			var rememberMe = $j(".rememberme-checkbox");

			var $form = $j("#sso-login");
			$form.find("input[name='username']").val(username.val());
			$form.find("input[name='password']").val(password.val());
			$form.find("input[name='RememberMe']").val(rememberMe.val());

			$form.submit();
		}
	}
};
