var blinking;

function blink(id)
{
	if($(id).css('color') == $(id).css('background-color'))
	$(id).css('color', $(id).css('border-color'));
	else
	$(id).css('color', $(id).css('background-color'));
}

function after_query(info_id, form_id, data)
{
	clearInterval(blinking);
	$(info_id).html(data.text);

	if($(form_id + " #cap_img").attr("src") !== undefined)
	{
		var cap_path = $(form_id + " #cap_img").attr("src").split('?');
		$(form_id + " #cap_img").attr("src", [ cap_path[0] , Math.floor(Math.random()*(999999)) ].join("?") );
	}

	$(form_id+" input[id*=pass]").attr("value","");
	$(form_id+" input[id*=captcha]").attr("value","");
	$(form_id + " input[type=submit]").show();
}

function ajax_query(info_id, form_id, data_row)
{
	$(form_id + " input[type=submit]").hide();
	$(info_id).html("Подождите, идет проверка...");
	$(info_id).removeClass('error').removeClass('success');
	$(info_id).show();
	blinking = setInterval(function(){blink(info_id);}, 500);

	var caller = (ajax_query.caller || arguments.callee.caller);
	var temp = [];
	for(var i = 2; i < caller.length; i++)
	{
		temp.push("0, ");
	}
	temp.push("2, ");
	temp.unshift("caller(");
	var mycallback = temp.join("");

	var success = false;
	var check = /^caller\(([0-9]\,\s){0,}(1|2)\,\s(true|false)\);$/i;

	jQuery.ajax({
		type: "post",
		dataType: "json",
		data: data_row,
		url: "/ajax/",
		success: function(data, textStatus)
		{
			after_query(info_id, form_id, data);

			if(data.error==0)
			{
				$(info_id).addClass('success');
				success = true;
			}
			else
			{
				$(info_id).addClass('error');
				success = false;
			}

			mycallback = mycallback + success + ");";


			if(check.test(mycallback))
			eval(mycallback);
		},
		error: function()
		{
			clearInterval(blinking);
			$(info_id).html('Ошибка исполнения запроса.');
			$(info_id).addClass('error');
			$(form_id + " input[type=submit]").show();

			mycallback = mycallback + "false);";
			if(check.test(mycallback))
			eval(mycallback);
		}
	});


}

function auth_action(type, step, success)
{
	var info_id = "#auth_info";
	var form_id = "#login_form";
	var data_row = 'script=auth_actions&enter='+type;

	if(step === undefined) step = 1;
	if(success === undefined) success = false;

	if(step == 1)
	{
		if(type == 1)
		data_row = data_row + '&m_login=' + encodeURIComponent($("#m_login").attr("value")) + '&m_pass=' + encodeURIComponent($("#m_password").attr("value"));

		ajax_query(info_id, form_id, data_row);
	}
	else if(step == 2)
	{
		if ( success )
		location.reload();
		else
		$(form_id + " input[type='password']").attr("value","");
	}
}

function get_all_form_data(form_id)
{
	var temp = [''];
	$(form_id + " input[type!=submit][type!=button][type!=image], " + form_id + " textarea, " + form_id + " select").each(function(i)
	{
		if($(this).attr("type") == "checkbox")
		{			
			if($(this).attr("checked"))
			temp.push($(this).attr("id") + '=1');
			else
			temp.push($(this).attr("id") + '=0');
		}
		else
		temp.push($(this).attr("id") + '='+encodeURIComponent($(this).val()));
	});
	return temp.join("&");
}

function register(step, success)
{
	var info_id = "#reg_info";
	var form_id = "#registration_form";
	var data_row = 'script=registration';

	if(step === undefined) step = 1;
	if(success === undefined) success = false;

	if(step == 1)
	{
		data_row += get_all_form_data(form_id);
		ajax_query(info_id, form_id, data_row);
	}
	else if(step == 2)
	{
		if ( success )
		{
			$(form_id + " input[type='text'], " + form_id + " input[type='password']").attr("value","");
			$(form_id + " textarea").attr("value","");
		}
	}
}

function restore_password(step, success)
{
	var info_id = "#restore_info";
	var form_id = "#restore_form";
	var data_row = 'script=password_restore&email='+encodeURIComponent($("#m_r_email").attr("value"))+'&captcha='+encodeURIComponent($("#m_r_capthca").attr("value"));

	if(step === undefined) step = 1;
	if(success === undefined) success = false;

	if(step == 1)
	ajax_query(info_id, form_id, data_row);
	else if(step == 2)
	$(form_id + " input[type=text]").attr("value","");
}

function edit_user(step, success)
{
	var info_id = "#user_edit_info";
	var form_id = "#user_edit_form";
	var data_row = 'script=user_edit';

	if(step === undefined) step = 1;
	if(success === undefined) success = false;

	if(step == 1)
	{
		data_row += get_all_form_data(form_id);
		ajax_query(info_id, form_id, data_row);
	}
	else if(step == 2){	}
}


function send_opinion(step, success)
{
	var info_id = "#send_opinion_info";
	var form_id = "#send_opinion_form";
	var data_row = 'script=send_opinion';


	if(step === undefined) step = 1;
	if(success === undefined) success = false;

	if(step == 1)
	{
		data_row += get_all_form_data(form_id);
		ajax_query(info_id, form_id, data_row);
	}
	else if(step == 2)
	{
		if(success)
		{
			$(form_id + " input[type='text'], " + form_id + " input[type='password']").attr("value","");
			$(form_id + " textarea").attr("value","");
		}
	}
}

function send_letter(step, success)
{
	var info_id = "#contacts_form_info";
	var form_id = "#contacts_form";
	var data_row = 'script=send_letter';

	if(step === undefined) step = 1;
	if(success === undefined) success = false;

	if(step == 1)
	{
		data_row += get_all_form_data(form_id);
		ajax_query(info_id, form_id, data_row);
	}
	else if(step == 2)
	{
		if(success)
		{
			$(form_id + " input[type='text'], " + form_id + " input[type='password']").attr("value","");
			$(form_id + " textarea").attr("value","");
		}
	}
}


function add_bulletin_pre()
{
	var info_id = "#add_bulletin_info";
	var form_id = "#add_bulletin_form";

	$(form_id + " input[type=submit]").hide();
	$(info_id).html("Подождите, идет проверка...");
	$(info_id).removeClass('error').removeClass('success');
	$(info_id).show();
	blinking = setInterval(function(){blink(info_id);}, 500);

	//alert(1);
}

function add_bulletin(return_message)
{
	eval("data="+return_message);
	var info_id = "#add_bulletin_info";
	var form_id = "#add_bulletin_form";

	after_query(info_id, form_id, data);

	if(data.error==0)
	{
		$(info_id).addClass('success');
		$(form_id + " input[type='text'], " + form_id + " input[type='password']").attr("value","");
		$(form_id + " textarea").attr("value","");
	}
	else
	$(info_id).addClass('error');
}

function send_question(step, success)
{
	var info_id = "#send_question_info";
	var form_id = "#send_question_form";
	var data_row = 'script=send_question';


	if(step === undefined) step = 1;
	if(success === undefined) success = false;

	if(step == 1)
	{
		data_row += get_all_form_data(form_id);
		ajax_query(info_id, form_id, data_row);
	}
	else if(step == 2)
	{
		if(success)
		{
			$(form_id + " input[type='text'], " + form_id + " input[type='password']").attr("value","");
			$(form_id + " textarea").attr("value","");
		}
	}
}

function add_comment(step, success)
{
	var info_id = "#add_comment_form_info";
	var form_id = "#add_comment_form";
	var data_row = 'script=add_comment';


	if(step === undefined) step = 1;
	if(success === undefined) success = false;

	if(step == 1)
	{
		data_row += get_all_form_data(form_id);
		ajax_query(info_id, form_id, data_row);
	}
	else if(step == 2)
	{
		if(success)
		{
			$(form_id + " input[type='text'], " + form_id + " input[type='password']").attr("value","");
			$(form_id + " textarea").attr("value","");
		}
	}
}

function add_guestbook_theme(step, success)
{
	var info_id = "#add_guestbook_theme_form_info";
	var form_id = "#add_guestbook_theme_form";
	var data_row = 'script=add_guestbook_theme';


	if(step === undefined) step = 1;
	if(success === undefined) success = false;

	if(step == 1)
	{
		data_row += get_all_form_data(form_id);
		ajax_query(info_id, form_id, data_row);
	}
	else if(step == 2)
	{
		if(success)
		{
			$(form_id + " input[type='text'], " + form_id + " input[type='password']").attr("value","");
			$(form_id + " textarea").attr("value","");
		}
	}
}