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*=password][type!=hidden]").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++)
	{
		//Пока передаем только info_id и form_id в числе первых двух, потом надо будет сделать массив
		if(i == 2)
		temp.push("'"+info_id+"', ");
		else if(i == 3)
		temp.push("'"+form_id+"', ");
		else
		temp.push("0, ");
	}
	temp.push("2, ");
	temp.unshift("caller(");
	var mycallback = temp.join("");

	var success = false;
	var check = /^caller\([0-9a-z\,\'\#\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 += get_all_form_data(form_id);
		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(config_info_id, config_form_id, step, success)
{
	var info_id = config_info_id;/*"#contacts_form_info";*/
	var form_id = config_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 ToolkitAddBulletin(config_info_id, config_form_id, step, success)
{
	var info_id = config_info_id; //"#add_bulletin_info";
	var form_id = config_form_id; //"#add_bulletin_form";
	var data_row = 'script=add_bulletin';
	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_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 = "#commentsFormResult";
	var form_id = "#commentsForm";
	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 ToolkitAddBlogTopic(config_info_id, config_form_id, step, success)
{
	var info_id = config_info_id; //"#blog_form_info";
	var form_id = config_form_id; //"#blog_form";
	var data_row = 'script=add_blog_topic';
	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","");
			window.location.reload();
		}
	}
}

function set_rating(item_id, rating)
{
	var data_row = 'script=set_rating&item_id='+item_id+'&rating='+rating;
	jQuery.ajax({
		type: "post",
		dataType: "json",
		data: data_row,
		url: "/ajax/",
		success: function(data, textStatus)
		{
			if(data.error==0)
			{
				$(".rating_stars .active[rel="+item_id+"]").removeClass('active');
				$(".rating_stars div[rel="+item_id+"]").each(function(){
					if($(this).attr("value") <= rating) $(this).css('background-position', '0 -40px');
				});
				$("#rating_value_"+item_id).html(data.rating);
			}
			else
			{
				$(".rating_stars .active[rel="+item_id+"]").css('background-position', '0 0');
			}
		},
		error: function()
		{

		}
	});
}

function ToolkitAddToCart(shopItemId, shopItemCount)
{
    $("#buy"+shopItemId).hide();
    $("#resultInfo"+shopItemId).hide().removeClass('success').removeClass('error').html('Подождите...').show();
    blinking = setInterval(function(){blink("#resultInfo"+shopItemId);}, 500);
    var data_row = 'script=add_to_cart&shopItemId='+shopItemId+'&shopItemCount='+shopItemCount;
    jQuery.ajax({
        type: "post",
        dataType: "json",
        data: data_row,
        url: "/ajax/",
        success: function(data, textStatus)
        {
            clearInterval(blinking);
            $("#buy"+shopItemId).show();
            $("#resultInfo"+shopItemId).html(data.text).addClass(data.error == 0 ? 'success' : 'error').show();
        },
        error: function()
        {

        }
    });
}

function ToolkitRemoveFromCart(shopId, shopItemId)
{
    $("#cartRecount"+shopId).hide();
    $("#resultInfoRecount"+shopId).hide().removeClass('success').removeClass('error').html('Подождите...').show();
    blinking = setInterval(function(){blink("#resultInfoRecount"+shopId);}, 500);
    var data_row = 'script=remove_from_cart&shopId='+shopId+'&shopItemId='+shopItemId;
    jQuery.ajax({
        type: "post",
        dataType: "json",
        data: data_row,
        url: "/ajax/",
        success: function(data, textStatus)
        {
            clearInterval(blinking);
            if(data.total > 0)
            {
                $(".numberPartOfTotalPrice").html(data.total);
                $("#cartRecount"+shopId).show();
                $("#resultInfoRecount"+shopId).html(data.text).addClass(data.error == 0 ? 'success' : 'error').show();
                $("#cartItemsTableTr"+shopItemId).remove();
            }
            else
                $(".cartItemsWrapper").html('<p>Ваша корзина совсем пуста.</p>');
        },
        error: function()
        {
        }
    });
}

function ToolkitSendOrder(config_info_id, config_form_id, step, success)
{
    var info_id = config_info_id;/*"#contacts_form_info";*/
    var form_id = config_form_id;/*"#contacts_form";*/

    var data_row = 'script=send_order';
    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 ToolkitCartRecount(shopId)
{
    $("#cartRecount"+shopId).hide();
    $("#resultInfoRecount"+shopId).hide().removeClass('success').removeClass('error').html('Подождите...').show();
    blinking = setInterval(function(){blink("#resultInfoRecount"+shopId);}, 500);

    var jsonArray = [];
    $('.cartItemCount').each(function(){
        var jsonObject = new Object();
        jsonObject.id = $(this).attr('rel');
        jsonObject.count = $(this).val();
        jsonArray.push(jsonObject);
    });
    var jsonString = JSON.stringify(jsonArray)

    var data_row = 'script=cart_recalculation&shopId='+shopId+'&recountArray='+jsonString;

    jQuery.ajax({
        type: "post",
        dataType: "json",
        data: data_row,
        url: "/ajax/",
        success: function(data, textStatus)
        {
            clearInterval(blinking);
            $("#cartRecount"+shopId).show();
            $("#resultInfoRecount"+shopId).html(data.text).addClass(data.error == 0 ? 'success' : 'error').show();
            $(".numberPartOfTotalPrice").html(data.total);
        },
        error: function()
        {

        }
    });
}

function ToolkitCartClear(shopId)
{
    $("#cartClear"+shopId).hide();
    $("#resultInfoRecount"+shopId).hide().removeClass('success').removeClass('error').html('Подождите...').show();
    blinking = setInterval(function(){blink("#resultInfoRecount"+shopId);}, 500);
    var data_row = 'script=clear_cart&shopId='+shopId;
    jQuery.ajax({
        type: "post",
        dataType: "json",
        data: data_row,
        url: "/ajax/",
        success: function(data, textStatus)
        {
            clearInterval(blinking);
            if(data.error == 0)
                $(".cartItemsWrapper").html('<p>Ваша корзина совсем пуста.</p>');
            else
            {
                $("#cartClear"+shopId).show();
                $("#resultInfoRecount"+shopId).html(data.text).addClass(data.error == 0 ? 'success' : 'error').show();
            }
        },
        error: function()
        {
        }
    });
}
