$(document).ready(function(){
	$(document).keypress(function(data){

 		if (($('#entrancePopup').hasClass('epa')) && data.keyCode == 13) {
			name = $('#login_id').attr('value');
		    	pass = $('#pass_id').attr('value');
		    	remember = $('#remember_id').attr('checked') == true ? 1 : "";
		//Проверка, если установлен ключ "запомнить", тогда время хранения кук будет дляительным
		//иначе - сброс при выходе
		$.post("/login.php",{"login":name,"pass":pass,"key":"control"}, function(data){
		data_ = data.split('&');
			if(data_[0] == "success"){
			//расчет md5-пароля для сохранения в cookie
					pass = hex_md5(pass);
					$.cookie('user', name, { expires: 7 }); // на 7 дней - неделю
					$.cookie('pass', pass, { expires: 7 }); // на 7 дней - неделю
					window.location.reload(true);
					return true;
				}
			else   {
					createWindow(data_[0]);
					return false;
				}
		});
		}
	})

	$('.enterButton').click(function(){toggleTP('entrancePopup')});
	$('#bottonIn').click(function(){toggleTP('entrancePopup')});
	$('#click_out').click(function(){toggleTP('optionsPopup')});
	$('.optionsButton').click(function(){toggleTP('optionsPopup')});
	$('.openBarBook').click(function(){toggleTP('barBookPopup')});
	$('.closeW').click(closeW);
    $('.closeTP').click(closeP);
    $("#photoPrev").hide();
    //Обработка отправки нажатия кнопки поиска
	$('#search').submit(function(){
		if($('#search_str').val() == "") return false;
	});
	//к форме отправки комментария:
    $('#add_cooment').submit(function(){
	     err_flag = 0;
	     if($('#com_login_id').attr('value') == "") { err_flag = 1; $("#login_err").show();}
		 if($('#com_pass').attr('value') == "") { err_flag = 1; $("#pass_err").text("Не введен пароль");$("#pass_err").show()}
		 if(err_flag == 1) return false;

	 });

$('#user_quest').submit(function(){
	createWindow('user_quest_send');
})

$('#bottonIn').click(function(){
	name = $('#login_id').attr('value');
    	pass = $('#pass_id').attr('value');
    	remember = $('#remember_id').attr('checked') == true ? 1 : "";

	//Проверка, если установлен ключ "запомнить", тогда время хранения кук будет дляительным
	//иначе - сброс при выходе
        $.ajax({
		'url': "/login.php",
		'data': {"login":name,"pass":pass,"key":"control"},
		'dataType': 'html',
		'type': 'POST',
      	 	'error': function(data, err){
                //	alert('Error loading document = '+err);
         	},
		'success': function(data) {
		    	data_ = data.split('&');
			if(data_[0] == "success"){
			//расчет md5-пароля для сохранения в cookie
			pass = hex_md5(pass);
			$.cookie('user', name, { expires: 7 }); // на 7 дней - неделю
			$.cookie('pass', pass, { expires: 7 }); // на 7 дней - неделю
			window.location.reload(true);
			return true;
			}
			else   {
				createWindow(data_[0]);
				return false;
			}
		}
	});

});


});

function func_reg(data){
alert('ddddddd');
}

function declension($num)
{
if ((($num%10)>=2 && ($num%10)<=4) && ($num < 10 || $num > 20)) return "голоса";
if ((($num%10) >= 5 && ($num%10) <= 9) || ($num%10) == 0 || ($num >= 10 && $num <= 20)) return "голосов";
return "голос";
}
function toggleTP(popup) {


      //проверяем, если пользователь желает просмотреть барную книгу, тогда необходимо
	//её с использованием Ajax сформировать
      if(popup == 'barBookPopup'){
		$.post("/barbook.php",{},onAjax_barbook);
      }
	height = $('#'+popup).height();
	if ($('#'+popup).hasClass('epa')) {
		$('#'+popup).stop().animate({top:-height},300,function(){ $(this).hide(); }).removeClass('epa')
	} else {
		$('#'+popup).show().css({top:-height});
		$('#'+popup).stop().animate({top:0},400).addClass('epa');
	}
}
function closeP() {

	popup = $(this).parent().parent();
	height = $(popup).height();
	$(popup).stop().animate({top:-height},300,function(){ $(this).hide(); }).removeClass('epa');
	return false;
}

function recAdded() {
	var recAddedPopup = $('#recAddedPopup');
	setCenter(recAddedPopup);
	recAddedPopup.show();
	setTimeout((function(){ recAddedPopup.hide() }),1500);
}



function insert_comm(){
	login = $("#com_login_id").attr('value');
	pass = $("#com_pass").attr('value');
	id_com_subscribe = $("#id_com_subscribe").attr('value');
	id_com_remember = $("#id_com_remember").attr('value');


	//$com_remember = data_adapt($_REQUEST['com_remember']);
	text = $("#text").attr('value');
	part = $("#part").attr('value');
	id_in = $("#id_in").attr('value');




	//return comment_user_control();
	$.post("/login.php",{"login":login,"pass":pass,"key":"control"},function (data){
			data_ = data.split('&');
			if(data_[0] == "success"){
				$.get("/insert_comment.php",{"com_login_id":login,"com_pass":pass,"id_com_subscribe":id_com_subscribe,"text":text,"part":part,"id_in":id_in, "id_com_remember":id_com_remember},function (data){
						if(data_[1] != 'Y'){
							createWindow('comment_success_send');
						}
						window.location.reload(true);

				});

				
			}
			else
			createWindow(data_[0]);
	});
	//$('#ajax').hide();
	return false;


}

function onFunc(data){
	createWindow('comment_success_send');
	//alert(data);
}
/*
Функция генерирования сообщения на неверные действия пользователя
*/
function createWindow(case_) {
	var answer_arr= new Array()
	answer_arr["user_no"] = "Такого пользователя не существует";
	answer_arr["pass_err"] = "Пароль введен неверно";

	answer_arr["pass_rein_err"] = "Пароль повторен неверно";
	answer_arr["pass_err"] = "Пароль введен неверно";
	answer_arr["pass_success_alter"] = "Пароль успешно изменён";
	answer_arr["email_success_alter"] = "Почтовый ящик успешно изменён";
	answer_arr["pass_email_success_alter"] = "Почтовый ящик и пароль успешно изменёны";
	answer_arr["email_err"] = "Почтовый ящик введен неверно";
	answer_arr["error_data_dubl_email"] = "Такой почтовый ящик уже существует";

	answer_arr["recept_success_send"] = "Рецепт успешно отправлен";
	answer_arr["comment_success_send"] = "Ваш комментарий успешно добавлен, но ожидает проверки. После прохождения проверки беспокоить Вас больше не будем";
	answer_arr["data_err"] = "Введены неверные данные";
	answer_arr["new_pass_send"] = "Письмо с новым паролем отправлено на ваш почтовый ящик";

	answer_arr["rass_accept"] = "Вы подписаны на рассылку";
	answer_arr["rass_err"] = "При вводе адреса эл. почты допущена ошибка";

	answer_arr["success_send"] = "Ваш рецепт успешно отправлен на рассмотрение редактору";
	answer_arr["success_adv_send"] = "Ваш совет успешно отправлен на рассмотрение редактору";
        answer_arr["recept_err_send"] = "Введены неверные данные в форме отправки";
        answer_arr["user_quest_send"] = "Ваш запрос отправлен редакции";


	text = answer_arr[case_];

	$("#div_for_popup").html('<div class="recSendPopup2" id="recBuffer"><div class="recSendPopupInside"><a href="#" class="closeW"><img src="/images/x2.gif" alt="Закрыть"></a><span id = "text_id">'+text+'</span><br></div></div>');
	var recSendPopup = $('#recBuffer');
	$(".recSendPopupInside").css({width:230});
	$(".recSendPopupInside").css({color:'#ffffff'});
	setCenter(recSendPopup);
	recSendPopup.show();
	setTimeout((function(){ $('#recBuffer').hide() }),1500);
	$(".recSendPopupInside").css({width:160});

}

function onAjax_cgange(data){
if (data == 'pass_err' || data == 'pass_rein_err' || data == 'email_err' || data == 'pass_success_alter' || data == 'email_success_alter' || data == 'pass_email_success_alter' || data == 'error_data_dubl_email') {
	createWindow(data);
	document.getElementById('options_old_pass').value = "";
	document.getElementById('options_new_pass').value = "";
	document.getElementById('options_new_pass2').value = "";
	document.getElementById('change_email').value = "";
	return;
}

}

function onAjax_login(data){
//alert(data);
	if(data == "user_no" || data == "pass_err"){
	document.getElementById('login_id').value = "";
    	document.getElementById('pass_id').value = "";
		createWindow(data);
		return;
	}
	//alert(data);
	window.location.reload(true);
}


function recSend(window) {

if(window != "remPass"){
	$("#send_too").attr('value','');
	$("#send_subject").attr('value','');
	var recSendPopup = $('#recSendPopup');
	setCenter(recSendPopup);
	recSendPopup.show();
}
else{               	
	$("#entrancePopup").toggle();
	$("#login_").attr('value','');
	$("#mail_").attr('value','');
	var recSendPopup = $('#rememberPass');
	setCenter(recSendPopup);
	recSendPopup.show();
}
}

function rememberPass() {
	login = $("#login_").attr('value');
	mail = $("#mail_").attr('value');
	$.post("/remember_pass.php",{"login":login,"mail":mail},onAjax_remPass);
}

function onAjax_remPass(data) {
	$('#rememberPass').hide();
	if(data == "null"){
		createWindow('data_err');
	}
	else{
	    createWindow('new_pass_send');
	}
}

function setCenter(item) {

	windowHeight = document.documentElement.clientHeight;
	currentOffset = document.documentElement.scrollTop || document.documentElement.scrollTop;
	currentOffset = currentOffset + parseInt((windowHeight - $(item).height()) / 2);
	pLeft = (document.body.clientWidth - $(item).width()) / 2;
	$(item).css({top:currentOffset,left:pLeft}).show();
}

function closeW() {
	popup = $(this).parent().parent();
	popup.hide();
	return false;
}

function showPhoto() {
	var photoPopup = $('#photoPopup');
	setCenter(photoPopup);
	photoPopup.show();
}

function showPopup(popup) {

	currentOffset2 = 0;
	currentOffset = document.documentElement.scrollTop || document.documentElement.scrollTop;

	var windowHeight;
	if (!($.browser.opera)) { windowHeight = document.documentElement.clientHeight } else { windowHeight = document.body.clientHeight }
	if (windowHeight < $('#'+popup).height()) {
		currentOffset = (currentOffset + 10);
	} else {
		currentOffset2 = parseInt((windowHeight - $('#'+popup).height()) / 2);
	}
	pLeft = (document.body.clientWidth - $('#'+popup).width()) / 2;
	$('.iframe').show();
	$('#black').show();
	$('#'+popup).css({top:currentOffset+currentOffset2,left:pLeft}).show();
}

/////////////////////////////////


function closebarbook(){
	toggleTP('barBookPopup');
}

function logout(){
/*
    $("#barBookPopup").hide();
    $("#optionsButton").hide();
    $("#optionsPopup").hide();
    $(".optionsButton").hide();
    $(".openBarBook").hide();*/
    $.post("/login.php",{"key":"logout"},onAjax_logout);
}

function change_pass(){

	options_old_pass  = $("#options_old_pass").attr("value");
	options_new_pass  = $("#options_new_pass").attr("value");
	options_new_pass2 = $("#options_new_pass2").attr("value");
	email = $("#change_email").attr("value");

	if(email != "" && (options_old_pass != "" || options_new_pass != "" || options_new_pass2 != "")){
		$.post("/change_pass.php",{"oldpassword":options_old_pass,"password":options_new_pass,"password2":options_new_pass2,"email":email},onAjax_cgange);
		return;
	}

	if(options_old_pass != "" || options_new_pass != "" || options_new_pass2 != ""){
		$.post("/change_pass.php",{"oldpassword":options_old_pass,"password":options_new_pass,"password2":options_new_pass2},onAjax_cgange);
	}
	if(email != ""){
		$.post("/change_pass.php",{"email":email},onAjax_cgange);
	}

}

function add(id, type){
if (type == "0"){
	$.post("/barbook.php",{"type":"coctail","ins":"1","id":id},onAjax_barbook);
}
else{
	$.post("/barbook.php",{"type":"eat","ins":"1","id":id},onAjax_barbook);
}
recAdded(); //return false;"
}

function remove(id, type){
if (type == "0"){
	$.post("/barbook.php",{"type":"coctail","del":"1","id":id},onAjax_barbook);
}
else{
	$.post("/barbook.php",{"type":"eat","del":"1","id":id},onAjax_barbook);
}
}


function onAjax_(data)
{
//alert(data);
    document.getElementById('login_id').value = "";
    document.getElementById('pass_id').value = "";

    if(data == "1"){
	    $(".enterButton").hide();
	    $(".openBarBook").show();
        $(".optionsButton").show();
	}
	window.location.reload(true);
}
function onAjax_logout(data){
	$(".enterButton").show();
        $(".optionsButton").hide();
	$(".openBarBook").hide();

	$.cookie("user", null);
	$.cookie("pass", null);

	window.location.reload(true);
}

function onAjax_barbook(data){
	html_str = '<a href="#" class="closeTP" onclick = "javascript:closebarbook()"><img src="/images/x.gif" alt="Закрыть"></a>'+
			'<strong>Коктейли</strong><ul>';
	tmp_ = data.split("&");
	tmp = tmp_[0].split("/");
	for(i=1; i<tmp.length;i++){
		in_tmp = tmp[i].split(":");
		html_str += '<li><a href="/cocktails.php?id='+in_tmp[0]+'">«'+in_tmp[1]+'»</a> <a href="#" onclick = "remove('+in_tmp[0]+', 0)"><img src="/images/del.gif" alt="Удалить"></a></li>'
	}
	html_str += '</ul><strong>Закуски</strong>'+
			'<ul>';

	tmp = tmp_[1].split("/");
	for(i=1; i<tmp.length;i++){
		in_tmp = tmp[i].split(":");
		html_str += '<li><a href="/cocktails/snacks?id='+in_tmp[0]+'">«'+in_tmp[1]+'»</a> <a href="#" onclick = "remove('+in_tmp[0]+', 1)"><img src="/images/del.gif" alt="Удалить"></a></li>'
	}

	html_str += '</ul>';
	$('.barBookPopupInside').html(html_str);
}

function recept_send(id, type){
if($("#send_too").attr('value') == "" || $("#send_subject").attr('value') == "")  {
	createWindow("recept_err_send");
}
else{
 
//Здесь должна быть проверка на корректноть запонения формы отправки
	$.post("/user2user_rec_send.php",{"type":type,"id":id,"addr":$("#send_too").attr('value'),"subj":$("#send_subject").attr('value')},onAjax_recept_send);
}
}

function onAjax_recept_send(data){
	$("#recSendPopup").hide();
	createWindow("recept_success_send");
}

function foo(level_1,level_2){
		$("#"+level_1).html($("#"+menu_1).text());
}
function foo2(level_1,level_2){
//alert(level_2);
 	if(id != "") $("#"+level_2).html($("#"+menu_2).html());
 	else $("#"+level_2).html($("#"+menu_2).text());
	if(level_1 == 'up38' && level_2 != "top"){
		$this = $("#top");
		li_ = $this.parent()
		li_.addClass('top20');
	}
}
function active_m(menu_1,menu_2){
	$this = $("#"+menu_2);
	li_ = $this.parent()
	li_.addClass('active');
	$this.append("<em></em>");
}

function photo_next(id, direct){
    idd = String();
    idd = $('.photoPopupInside').attr('src');  //alert(idd);
    id_cur = parseInt(idd.substr(idd.indexOf('doc_fg')+('doc_fg').length+1));
	$.post("/get_photos.php",{'id':id,'direct':direct,'id_cur':id_cur},function (data){
		//photoPrev
		//photoNext
		if(data != "null"){
			data = data.split('&');
			$('.photoPopupInside').attr('src','/img/saved/'+data[0]);
			if(direct == "next"){
				$("#photoPrev").show();
				if (data[3] == data[1]) {
					$("#photoNext").hide();
				}
				else{
					$("#photoNext").show();
				}
			}
			else{
				$("#photoNext").show();
				if (data[2] == data[1]) {
					$("#photoPrev").hide();
				}
				else{
					$("#photoPrev").show();
				}
			}
		}else{
		//	if(direct == "prev")
		}
	});
}
function onAjax_photos(data){
//photoPrev
//photoNext
	alert('direct = '+direct);
	if(data != "null")
	$('.photoPopupInside').attr('src','/img/saved/'+data);
}

function send_subscribe_email(){
	mail_address = $('#mail_addr').attr('value');
	$.post("/insert_email.php",{'mail':mail_address},onAjax_subscribe_email);
}
function onAjax_subscribe_email(data){
	if(data != "null"){
		$('#mail_addr').attr('value','');
		createWindow('rass_accept');
	}
	else {
		createWindow('rass_err');
	}
}


function alcocount(precis_count){
//precis_count - точность округления
	precis_count = Math.pow(10,precis_count);
	promil_accept = 0.3;
  	var male = $('#male').attr('checked');
	var female = $('#female').attr('checked');
	var mass = $('#mass').attr('value');
    if (isNaN(parseFloat(mass))){
    	$('#volume_alc').html('Неверно указан вес!<em></em>');
    	return;
		/*$('#mass').attr('value','70');
		mass = $('#mass').attr('value');*/
	};
	var alcohol = $('#alcohol').attr('value');
    if (isNaN(parseFloat(alcohol))){
        $('#volume_alc').html('Неверно указано содержание спирта!<em></em>');
    	return;
		/*$('#alcohol').attr('value','10');
		alcohol = $('#alcohol').attr('value');*/
	};

	alcohol = alcohol.replace(eval("/" + ',' + "/g"), '.');
	$('#alcohol').attr('value',alcohol);

	koef_sex = (male == true)? 0.68 : 0.55;

	if (isNaN(parseFloat(mass))){
        $('#volume_alc').html('Неверно указан вес!<em></em>');
    	return;
		/*$('#alcohol').attr('value','10');
		alcohol = $('#alcohol').attr('value');*/
	};
	mass = parseFloat(mass);
	volume = Math.round((mass*koef_sex*0.01*promil_accept*10*precis_count)/(alcohol*0.8))/precis_count;

	if (isNaN(parseFloat(volume))){
        $('#volume_alc').html('Неверно указано содержание спирта!<em></em>');
    	return;
		/*$('#alcohol').attr('value','10');
		alcohol = $('#alcohol').attr('value');*/
	};
	if(parseInt(volume) == volume)
		liter = volume_declension(parseInt(volume));
	else
		liter = 'литра';
	if (volume == "Infinity") {
		volume = "Много";
		liter = "";
	}
	$('#volume_alc').html(volume+' <em>'+liter+'</em>');

}























//////////////////////////////////////////////////////////////////////////
//Плагин для работы с cookie
//////////////////////////////////////////////////////////////////////////
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};
//////////////////////////////////////////////////////////////////////////



























///////////////////////////////////////////////////////////////////////


/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

/*
 * Configurable variables. You may need to tweak these to be compatible with
 * the server-side, but the defaults work in most cases.
 */
var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */

/*
 * These are the functions you'll usually want to call
 * They take string arguments and return either hex or base-64 encoded strings
 */
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }

/*
 * Perform a simple self-test to see if the VM is working
 */
function md5_vm_test()
{
  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}

/*
 * Calculate the MD5 of an array of little-endian words, and a bit length
 */
function core_md5(x, len)
{
  /* append padding */
  x[len >> 5] |= 0x80 << ((len) % 32);
  x[(((len + 64) >>> 9) << 4) + 14] = len;

  var a =  1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d =  271733878;

  for(var i = 0; i < x.length; i += 16)
  {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;

    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);

    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);

    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);

    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);

    a = safe_add(a, olda);
    b = safe_add(b, oldb);
    c = safe_add(c, oldc);
    d = safe_add(d, oldd);
  }
  return Array(a, b, c, d);

}

/*
 * These functions implement the four basic operations the algorithm uses.
 */
function md5_cmn(q, a, b, x, s, t)
{
  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}

/*
 * Calculate the HMAC-MD5, of a key and some data
 */
function core_hmac_md5(key, data)
{
  var bkey = str2binl(key);
  if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);

  var ipad = Array(16), opad = Array(16);
  for(var i = 0; i < 16; i++)
  {
    ipad[i] = bkey[i] ^ 0x36363636;
    opad[i] = bkey[i] ^ 0x5C5C5C5C;
  }

  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
  return core_md5(opad.concat(hash), 512 + 128);
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
 * to work around bugs in some JS interpreters.
 */
function safe_add(x, y)
{
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left.
 */
function bit_rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * Convert a string to an array of little-endian words
 * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
 */
function str2binl(str)
{
  var bin = Array();
  var mask = (1 << chrsz) - 1;
  for(var i = 0; i < str.length * chrsz; i += chrsz)
    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
  return bin;
}

/*
 * Convert an array of little-endian words to a string
 */
function binl2str(bin)
{
  var str = "";
  var mask = (1 << chrsz) - 1;
  for(var i = 0; i < bin.length * 32; i += chrsz)
    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
  return str;
}

/*
 * Convert an array of little-endian words to a hex string.
 */
function binl2hex(binarray)
{
  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var str = "";
  for(var i = 0; i < binarray.length * 4; i++)
  {
    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  }
  return str;
}

/*
 * Convert an array of little-endian words to a base-64 string
 */
function binl2b64(binarray)
{
  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  var str = "";
  for(var i = 0; i < binarray.length * 4; i += 3)
  {
    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
    for(var j = 0; j < 4; j++)
    {
      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
    }
  }
  return str;
}


/**
 * Подстановка экшна в форму
 */
function regActAdd(){
    $('#registration').attr('action','/insert_user.php');
}
