﻿(function ($) {
	var defaults = {
		returnUrl: window.location.href, error: '.login-error',
		validate: function () { return true; },
		position: { left: '35%', top: '150px' },
		box: '.login-box',
		loader: '.login-loader',
		cancel: '.login-cancel-login',
		submit: '.login-submit',
		url: '',
		zIndex: 101,
		appendTo: 'body'
	};
	$.fn.extend({
		login: function (params) {
			params = $.extend({}, defaults, params);
			var fadeToBlack = $('.fade-to-black');
			if (fadeToBlack.length == 0) {
				fadeToBlack = $('<div/>').css({
					opacity: .3,
					backgroundColor: '#000',
					position: 'absolute',
					top: 0,
					left: 0,
					zIndex: params.zIndex,
					display: 'none'
				}).width($(document).width()).height($(document).height() + 310).html('&nbsp;').addClass('fade-to-black').appendTo(params.appendTo);
			}

			$(window).resize(function () {
				$('.fade-to-black').width($(document).width()).height($(document).height());
			});

			var wrapper = $('.login-box-wrapper');
			if (wrapper.length == 0) {
				wrapper = $('<div/>').css(params.position).css({
					position: 'absolute',
					zIndex: params.zIndex + 100,
					display: 'none'
				}).addClass('login-box-wrapper').appendTo(params.appendTo);

				var tm = false;
				$(window).scroll(function () {
					if (tm) clearTimeout(tm);
					tm = setTimeout(function () {
						wrapper.animate({ 'top': (150 + $(window).scrollTop()) + 'px' }, 250);
					}, 200);
				});
			}

			$(params.cancel).click(function () {
				$(params.error).html('');
				$('#KeepMeLogged').attr('checked', false);
				fadeToBlack.hide();
				wrapper.hide();
			});

			$(params.box + ' input').keyup(function (e) {
				if (e.keyCode == 13) {
					tryLogin();
				}
			});

			var status = 0;
			var tryLogin = function () {
				if (status == 0 && params.validate()) {
					if (params.url == "http://localhost/sdwlogin")
						params.url = "http://" + window.location.host + "/sdwlogin";
					$(params.error).html('');
					$(params.loader).fadeIn('slow');
					status = 1;

					var data = {
						username: $('#username').val(),
						password: $('#password').val()
					};
					if ($('#KeepMeLogged').attr('checked')) {
						data.KeepMeLogged = $('#KeepMeLogged').val();
					}
					$.ajax({
						timeout: 20000,
						error: function () {
							status = 0;
							$(params.loader).fadeOut(function () {
								$(params.error).html('Service unavailable please try again later');
							});
						},
						type: 'POST',
						url: params.url,
						dataType: 'json',
						data: data,
						success: function (json) {
							status = 0;
							$(params.loader).fadeOut(function () {
								if (json.status) {
									switch (json.status) {
										case "success":
											window.location.href = params.returnUrl;
											break;

										case "error":
											$(params.error).html(json.message);
											break;
									}
								}
							});

						}
					});
				}
			};


			$(params.submit).click(function () {
				tryLogin();
				return false;
			});

			$(this).click(function () {
				fadeToBlack.show();
				wrapper.show();
				if (wrapper.children(params.box).length == 0) {
					$(params.box).appendTo('.login-box-wrapper')
				}
				$(params.box).show();
				return false;
			});
		}
	});
})(jQuery);




