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);
        /*data_row = data_row + '&m_login=' + encodeURIComponent($("#m_login").attr("value")) + '&m_pass=' + encodeURIComponent($("#m_password").attr("value") + '&m_system_check_1=' + encodeURIComponent($("#m_auth_system_check_1").attr("value")) + '&m_system_check_2=' + encodeURIComponent($("#m_auth_system_check_2").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_captcha").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 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","");
        }
    }
}

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()
        {

        }
    });
}

/**
* Upload Service
*/
function UploadServiceInitialize()
{
    $("form.uploadServiceForm").each(function(){
        $(this).submit(function(){ UploadServiceAdd($(this)); return false; })
        .end().find('input[type=submit]').bind('click', function(){ UploadServiceAdd($(this)); return false; });
    })
}

function UploadServiceAdd(webForm, step, success)
{
    var dataRow = ['script=uploadServiceAdd', $(webForm).serialize()].join('&'),
    formId = '#' + $(webForm).attr('id'),
    infoId = '#' + $(webForm).find('.result_info').attr('id');

    $(webForm).find("input[type=submit]").hide()
    .end()
    .find(infoId).html("Подождите, идет проверка...").removeClass('error').removeClass('success').show();

    blinking = setInterval(function(){blink(infoId);}, 500);

    jQuery.ajax({
        type: "post",
        dataType: "json",
        data: dataRow,
        url: "/ajax/",
        success: function(data, textStatus)
        {
            after_query(infoId, formId, data);
            if(data.error == 0)
                $(infoId).addClass('success');
            else
                $(infoId).addClass('error');
        },
        error: function()
        {
            clearInterval(blinking);
            $(webForm).find("input[type=submit]").show()
            .end()
            .find(infoId).html('Ошибка исполнения запроса.').addClass('error').show();
        }
    });

    /* if(step === undefined) step = 1;
    if(success === undefined) success = false;
    if(step == 1)
    ajax_query(infoId, formId, dataRow);
    else if(step == 2)
    {
    if(success)
    {
    $(formId + " input[type='text'], " + formId + " input[type='password']").attr("value","");
    $(formId + " textarea").attr("value","");
    }
    }*/
}
