var checkWord = 0xF;

userNameCheck = function(clear) {
	var name = $('#loginFormContainer').find('input[rel=USER_NAME]').attr('value');
	if ( name == undefined ) return false;
	
	var uf = $('#USER_FIOU_CHECKER');
	markUfWait(uf);
	if ( name != '' )
		markUfOk(uf, 4);
	else
		markUfFail(uf, 'Введите ваше имя', 4);
	
	if ( clear == true )
		clearUf();
}
userLastNameCheck = function(clear) {
	var name = $('#loginFormContainer').find('input[rel=USER_LAST_NAME]').attr('value');
	if ( name == undefined ) return false;

	var uf = $('#USER_FIO_CHECKER');
	markUfWait(uf);
	if ( name != '' )
		markUfOk(uf, 5);
	else
		markUfFail(uf, 'Введите вашу фамилию', 5);

	if ( clear == true )
		clearUf();
}

userLoginCheck = function(clear) {
	var login = $('#loginFormContainer').find('input[rel=USER_LOGIN]').attr('value');
	if ( login == undefined ) return false;
	
	var uf = $('#USER_LOGIN_CHECKER');
	markUfWait(uf);
	$.get ( backEndDir + 'get_login.php', {login:login}, function ( data ) {
		data = eval("(" + data + ")");
		if ( data.ok == 1 )
			markUfOk(uf, 0);
		else
			markUfFail(uf, data.message, 0);
		if ( clear == true )
			clearUf();
	});
}

userPassCheck = function(clear) {
	var pass = $('#loginFormContainer').find('input[rel=USER_PASSWORD]').attr('value');
	if ( pass == undefined ) return false;
	
	var uf = $('#USER_PASSWORD_CHECKER');
	markUfWait(uf);
	$.get ( backEndDir + 'get_pass.php', {pass:pass}, function ( data ) {
		data = eval("(" + data + ")");
		if ( data.ok == 1 )
			markUfOk(uf, 1);
		else
			markUfFail(uf, data.message, 1);
		if ( clear == true )
			clearUf();
	});
}

userRePassCheck = function(clear) {
	var pass = $('#loginFormContainer').find('input[rel=USER_PASSWORD]').attr('value');
	var repass = $('#loginFormContainer').find('input[rel=USER_CONFIRM_PASSWORD]').attr('value');
	if ( repass == undefined ) return false;
	
	var uf = $('#USER_CONFIRM_PASSWORD_CHECKER');
	markUfWait(uf);
	
	if ( repass != pass ) {
		markUfFail(uf, 'Пароли не совпадают', 2);
	} else {
		$.get ( backEndDir + 'get_pass.php', {pass:repass}, function ( data ) {
			data = eval("(" + data + ")");
			if ( data.ok == 1 )
				markUfOk(uf, 2);
			else
				markUfFail(uf, data.message, 2);
			if ( clear == true )
				clearUf();
		});
	}
}

userEmailCheck = function (clear) {
	var email = $('#loginFormContainer').find('input[rel=USER_EMAIL]').attr('value');
	if ( email == undefined ) return false;
	
	var uf = $('#USER_EMAIL_CHECKER');
	markUfWait(uf);
	$.get ( backEndDir + 'get_email.php', {email:email}, function ( data ) {
		data = eval("(" + data + ")");
		if ( data.ok == 1 )
			markUfOk(uf, 3);
		else
			markUfFail(uf, data.message, 3);
		if ( clear == true )
			clearUf();
	});
}

markUfWait = function (uf) {
	$(uf).html('<img src="/images/check/preloader.gif" alt="wait">');
	$(uf).attr('title', '');
	//$('#submitButton').attr('disabled',true);
	//$('#submitButton').css("cursor","default");
}
markUfOk = function (uf, num) {
	$(uf).html('<img src="/images/check/ok.gif" alt="ok">');
	$(uf).attr('title', '');
	
	var p = 0xF - Math.pow(2,num);
	checkWord = checkWord & p;
	/*
	if ( checkWord == 0 ) {
		$('#submitButton').attr('disabled',false);
		$('#submitButton').css("cursor","pointer");
	}
	*/
}
markUfFail = function (uf, message, num) {
	$(uf).html('<img src="/images/check/wrong.gif" alt="fail" align="left">&nbsp;'+message);
	$(uf).attr('title', message);
	
	checkWord = checkWord | Math.pow(2,num);
	
	//$('#submitButton').attr('disabled',true);
	//$('#submitButton').css("cursor","default");
}
clearUf = function() {
	$('#USER_LOGIN_CHECKER').html('');
	$('#USER_PASSWORD_CHECKER').html('');
	$('#USER_CONFIRM_PASSWORD_CHECKER').html('');
	$('#USER_EMAIL_CHECKER').html('');
}


userTypeSpec = function(o) {
	if ( o ) {
		$('#specInfo').show();
	} else {
		$('#specInfo').hide();
	}
}
userTypeDiller = function(o) {
	if ( o ) {
		$('#dillerInfo').show();
		//$("#ufClinic").attr('value','');
	} else {
		$('#dillerInfo').hide();
		//$("#ufClinic").attr('value','no');
	}
}

function userClinicSelect() {
	var clinic = $('#ufClinicSelect').attr('value');
	
	$.getJSON ( backEndDir + 'get_clinics.php', {clinic:clinic}, function ( data ) {		
		if ( data.clinics.length > 0 ) {
			var clinics = '<div id="drop_ul"><ul>';
			for ( var i = 0; i < data.clinics.length; i++ ) {
				var id = data.clinics[i].id;
				clinics += '<li onclick="insertClinic('+data.clinics[i].id+', \''+data.clinics[i].name+'\')">'+data.clinics[i].name+'</a></li>';
			}
			clinics += '</ul></div>'
			$('#ufClinicSelectSet').html(clinics);
			$('#ufClinicSelectSet').show();
			$('#ufClinicSelectError').hide();
			$('#clinicAddContainer').hide();
		} else {
			$('#ufClinicSelectError').html('Такой клиники нет у нас в каталоге. Добавьте клинику');
			$('#clinicAddContainer').show();
			$('#ufClinicSelectSet').hide();			
			$('#ufClinicSelectError').show();
			insertClinic (0, clinic);
		}
	});
}

function insertClinic (id, text) {
	$('#ufClinicSelectSet').hide();
	$('#ufClinicSelect').attr('value', text );
	$('#ufClinic').attr('value', id);
	
	$('.errorHeading').remove();
	$('.errorText').remove();
	$('.errorList').remove();
	$('.resultText').remove();
	$('.resultList').remove();
}


function userUsersSelect() {
	var user = $('#messages_to').attr('value');
	$.get ( backEndDir + 'get_users.php', {user:user}, function ( data ) {
		data = eval("(" + data + ")");
		if ( data.users.length > 0 ) {
			var users = '<div id="drop_ul"><ul>';
			for ( var i = 0; i < data.users.length; i++ ) {
				var id = data.users[i].id;
				users += '<li onclick="insertUser('+data.users[i].id+', \''+data.users[i].bxId+'\', \''+data.users[i].name+'\')"><img src="'+data.users[i].picture+'" align="left">'+data.users[i].name+'</a></li>';
			}
			users += '</ul></div>'
			$('#userSelectSet').html(users);
			$('#userSelectSet').show();
			$('#userSelectError').hide();
		} else {
			$('#userSelectError').html('Пользователей с таким именем не найдено');
			$('#userSelectSet').hide();
			$('#userSelectError').show();
			insertUser (0, 0, user);
		}
	});
}

function insertUser (id, bxId, text) {
	$('#userSelectSet').hide();
	$('#messages_to').attr('value', text );
	$('#messages_toId').attr('value', bxId);
	if ( id > 0 ) {
		$('#userInfoContainer').html('Loading...');
		$('#userInfoContainer').load('/users/preview/'+id);
	} else {
		$('#userInfoContainer').html('');
	}
}


function generateAuth() {
	var letters = ['a', 'b', 'c', 'd', 'e', 'f', 'j', 'h', 'i', 'g', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
	var dLetters = ['a', 'b', 'c', 'd', 'e', 'f', 'j', 'h', 'i', 'g', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '[', ']', '\\', '/', '\'', '"', ':', '?', '.', ','];
	
	var login = '';
	var pass = '';
	for ( var i = 0; i < 8; i++ ) {
		rnd = Math.floor(Math.random()*letters.length);
		login += letters[rnd];
		
		rnd = Math.floor(Math.random()*dLetters.length);
		pass += dLetters[rnd];
	}
	
	$('#loginFormContainer').find('input[rel=USER_LOGIN]').attr('value', login);
	$('#loginFormContainer').find('input[type=password]').each(function(data){
		//this.type = 'text';		// fuckn IE
		//athis = this;		
		athis = createTextFromPass(this);
		
		$(athis).bind('keyup', function(e){
			if ( this.type != 'text' ) return;
			
			var keycode;
			if (e.keyCode != undefined ) keycode = e.keyCode;
			else keycode = e.which;
			if(e.ctrlKey && keycode == 67 || keycode == 17 ) {
				return;
			} else {
				//this.type = 'password';
				athis = createPassFromText(this);
			}
		});
	});
	$('#loginFormContainer').find('input[rel=USER_PASSWORD]').attr('value', pass);
	$('#loginFormContainer').find('input[rel=USER_CONFIRM_PASSWORD]').attr('value', pass);
	
	userLoginCheck();
	userPassCheck();
	userRePassCheck();
}


function createTextFromPass(pass) {
	var txt = document.createElement ('input');
	txt.type = 'text';
	txt.name = pass.name;
	txt.rel = $(pass).attr('rel');
	txt.id = pass.id;
	txt.className = pass.className;
	pass.parentNode.replaceChild(txt,pass);
	
	$('#loginFormContainer').find('input[rel=USER_PASSWORD]').bind ( 'keyup', function() {
		registerUserAction('userPassCheck');
	});
	$('#loginFormContainer').find('input[rel=USER_CONFIRM_PASSWORD]').bind ( 'keyup', function() {
		registerUserAction('userRePassCheck');
	});
	
	return txt;
}


function createPassFromText(text) {
	var pass = document.createElement ('input');
	pass.type = 'password';
	pass.name = text.name;
	pass.rel = $(text).attr('rel');
	pass.id = text.id;
	pass.className = text.className;
	pass.value = text.value;
	text.parentNode.replaceChild(pass,text);
	
	$('#loginFormContainer').find('input[rel=USER_PASSWORD]').bind ( 'keyup', function() {
		registerUserAction('userPassCheck');
	});
	$('#loginFormContainer').find('input[rel=USER_CONFIRM_PASSWORD]').bind ( 'keyup', function() {
		registerUserAction('userRePassCheck');
	});
	
	return pass;
}

function cancelAction (e) {
	var keycode;
	if (e.keyCode != undefined ) keycode = e.keyCode;
	else keycode = e.which;
	if( e.type == 'click' || keycode == 27 ) {
		$('#ufClinicSelectSet').hide();
		$('#userSelectSet').hide();
	}
}


$(document).ready ( function() {
	$('#loginFormContainer').find('input[rel=USER_NAME]').bind ( 'keyup', function() {
		registerUserAction('userNameCheck');
	}).bind ( 'blur', function() {
		registerUserAction('userNameCheck');
	});
	$('#loginFormContainer').find('input[rel=USER_LAST_NAME]').bind ( 'keyup', function() {
		registerUserAction('userLastNameCheck');
	}).bind ( 'blur', function() {
		registerUserAction('userLastNameCheck');
	});
	$('#loginFormContainer').find('input[rel=USER_LOGIN]').bind ( 'keyup', function() { 
		registerUserAction('userLoginCheck');
	}).bind ( 'blur', function() {
		registerUserAction('userLoginCheck');
	});
	$('#loginFormContainer').find('input[rel=USER_PASSWORD]').bind ( 'keyup', function() {
		registerUserAction('userPassCheck');
	}).bind ( 'blur', function() {
		registerUserAction('userPassCheck');
	});
	$('#loginFormContainer').find('input[rel=USER_CONFIRM_PASSWORD]').bind ( 'keyup', function() {
		registerUserAction('userRePassCheck');
	}).bind ( 'blur', function() {
		registerUserAction('userRePassCheck');
	});
	$('#loginFormContainer').find('input[rel=USER_EMAIL]').bind ( 'keyup', function() {
		registerUserAction('userEmailCheck');
	}).bind ( 'blur', function() {
		registerUserAction('userEmailCheck');
	});
	
	$('#ufClinicSelect').bind ( 'keyup', function() {
		registerUserAction('userClinicSelect');
	});
	$('#messages_to').bind ( 'keyup', function() {
		registerUserAction('userUsersSelect');
	});
	
	$('#ufType2').bind ( 'click', function() {
		userTypeSpec(this.checked);
	});
	$('#ufType3').bind ( 'click', function() {
		userTypeDiller(this.checked);
	});
	$(document).bind('click', function(e) {
		cancelAction(e);
	});
	$(document).bind('keyup', function(e) {
		cancelAction(e);
	});
	
	userLoginCheck(true);
	userPassCheck(true);
	userRePassCheck(true);
	userEmailCheck(true);
	userTypeSpec($('#ufType2').attr('checked'));
	userTypeDiller($('#ufType3').attr('checked'));
});
