var UserModel = function() {
	var handle = this;
	this.msg = {
		register_success	:	"",
		login_success		:	"",
		validation			:	{
			first_name_req	:	"Моля, Въведете Име",
			last_name_req	:	"Моля, Въведете Фамилия",
			mobile_req		:	"Моля, Въведете мобилен телефон",
			email_req		:	"Моля, Въведете e-mail адрес",
			web_not_valid	:	"Моля, Въведете валиден интернет адрес",
			username_req	:	"Моля, Въведете потребитеско име",
			password_req	:	"Моля, Въведете парола",
			passconf_req	:	"Моля, Потвърдете паролата си"
		}
	};
	this.busy	=	false;
	this.state	=	state_obj;
	this.log = function(msg) {
		this.state.log("user", msg); 
	};
	this.gate		=	conf.base_url + "gate/user-registration.php";
	this.gate_main	=	conf.base_url + "gate/";
	var gate_main	=	conf.base_url + "gate/";
	
	this.register = function() {
		this.err	=	[];
		this.clear	=	[];
		var obj = {
			first_name	:	$("input#first_name").val(),
			last_name	:	$("input#last_name").val(),
			city_id		:	$("select#city_id").val(),
			tel			:	$("input#tel").val(),
			mobile		:	$("input#mobile").val(),
			skype		:	$("input#skype").val(),
			email		:	$("input#email").val(),
			web			:	$("input#web").val(),
			user		:	$("input#user").val(),
			pass		:	$("input#pass").val(),
			passconf	:	$("input#passconf").val()
		};
		if (check.empty(obj.first_name)) {
			this.err.push({key:'first_name', err:this.msg.validation.first_name_req});
		} else {
			this.clear.push('first_name');
		}
		if (check.empty(obj.last_name)) {
			this.err.push({key:'last_name', err:this.msg.validation.last_name_req});
		} else {
			this.clear.push('last_name');
		}
		if (check.empty(obj.mobile)) {
			this.err.push({key:"mobile", err:this.msg.validation.mobile_req});
		} else {
			this.clear.push('mobile');
		}
		if (check.empty(obj.email)) {
			this.err.push({key:'email', err:this.msg.validation.email_req});
		} else {
			this.clear.push('email');
		}
		if (check.empty(obj.user)) {
			this.err.push({key:'user', err:this.msg.validation.username_req});
		} else {
			this.clear.push('user');
		}
		if (check.empty(obj.pass)) {
			this.err.push({key:'pass', err:this.msg.validation.password_req});
		} else {
			this.clear.push('pass');
		}
		if (check.empty(obj.passconf)) {
			this.err.push({key:'passconf', err:this.msg.validation.passconf_req});
		} else {
			this.clear.push('passconf');
		}
		if ( ! check.empty(obj.web)) {
			if (!check.url(obj.web)) {
				this.err.push({key:'web', err:this.msg.validation.web_not_valid});
			} else {
				this.clear.push('web');
			}
		}
		for (var i in this.clear) {
			$('#'+this.clear[i]+'_err').text('');
		}
		if (this.err.length > 0) {
			for (var i in this.err) {
				$('#'+this.err[i].key+'_err').text(this.err[i].err);
			}
		} else {
			this.busy = true;
			$.post(
			  this.gate,
			  obj,
			  function (o) {
				if (o.state) {
					handle.log(handle.msg.register_success);
					$("#user_register_form_wrap")
						.remove();
					$("#user_register_success")
						.removeClass("h");
						
					//handle.reset_test_add_form();
					//handle.reload = true;
				} else {
					for (var i in o.err) {
						$('#'+i+'_err').text(o.err[i]);
					}
				}
				handle.busy = false;
			  },
			  "json"
			);
		}
	};
	var login = function() {
		var err	=	[];
		var clear	=	[];
		var obj = {
			mode	:	"user",
			act		:	"login",
			user	:	$("#user").val(),
			pass	:	$("#pass").val(),
		};
		if (check.empty(obj.user)) {
			err.push({key:'user', err:this.msg.validation.username_req});
		} else {
			clear.push('user');
		}
		if (check.empty(obj.pass)) {
			err.push({key:'pass', err:this.msg.validation.password_req});
		} else {
			clear.push('pass');
		}
		for (var i in clear) $('#'+clear[i]+'_err').text('');
		if (err.length > 0) {
			for (var i in err) $('#'+err[i].key+'_err').text(err[i].err);
		} else {
			$.post(gate_main, obj, function (o) {
					if (o.state) {
						handle.log(handle.msg.login_success);
						$("#err_handler")
							.removeClass("red")
							.empty();
						window.location = o.go;
					//handle.reset_test_add_form();
					//handle.reload = true;
					} else {
						$("#err_handler")
							.addClass("red")
							.html(o.msg);
						for (var i in o.err) {
							$('#'+i+'_err').text(o.err[i]);
						}
					}
					
				}, "json"
			);
		}
	};
	this.check_email_availability = function(email) {
		if (email != '') {
			$.post(
				"/gate/check.php",
				{what:'ajax-email', email: email },
				function (o) {
					if (!o.state) {
						$('input[name=email]').val('');
						$('#email_err')
							.addClass("red")
							.text("E-mail адреса, който сте посочили [ " + o.email + " ] вече се използва от потребител на системата.");
					} else {
						$('input#email')
							.removeClass("red")
						$('#email_err')
							.removeClass("red")
							.text("");
					}
				},
				"json"
			);
		}
	};
	this.check_user_availability = function(user) {
		$.post(
			"/gate/check.php",
			{what:'ajax-user', user: user },
			function (o) {
				if( !o.status ){
					$('input#user').val("");
					$("#user_err")
						.addClass("red")
						.text("Вече има потребител с това име [ " + o.user + " ] ");
					
				} else {
					$("#user_err")
						.removeClass("red")
						.text("");
					
				}
			},
			"json"
		);
	};
	this.handleLogin = function () {
		$("form#user_login_form")
		  .unbind("submit")
		  .bind("submit", function (e) {
				e.preventDefault();
				
				login();
			}
		);
	};
	//
	this.handleRegister = function() {
		$("form#user_register_form")
		  .unbind("submit")
		  .bind("submit", function (e) {
				e.preventDefault();
				handle.register();
			}
		);
		$("input#email")
			.bind("blur", function() {
					handle.check_email_availability($("input#email").val());
				}
			);
		$("input#user")
			.bind("blur", function() {
					handle.check_user_availability($("input#user").val());
				}
			);
	};
	//init registration
	this.init = function() {
		if (arguments[0] != undefined) {
			switch (arguments[0]) {
			case "register":
				this.handleRegister();
			break;
			case "login":
				this.handleLogin();
			break;
			}
		}
	}
}