    function TrimStr(s) {
      s = s.replace(/^\s+/g, '');
      return s.replace(/\s+$/g, '');
    }

    function OnShowLoginField()
    {
        var obj = $("#user-login");
        if(obj.is(':visible')){
                obj.hide();
            return;
        }

        obj.show();
    }

    function OnShowLoginForm(processType)
    {
        var handlerUrl = "scripts/bowlers/ajax_resp/bbml_common_forms_handler.php";
        var data = new Object();
        data.action = "login";
        data.process = processType;

        var dataString = $.toJSON(data);
         $.post(handlerUrl, {data: dataString}, function(res){
            var elemDiv = $('#CommonForms');
            elemDiv.show();
            elemDiv.html(res.viewCtrl);

            $('div.r-all').corner("15px");
        });
    }

    function OnShowRegistrationForm(processType)
    {
        var handlerUrl = "scripts/bowlers/ajax_resp/bbml_common_forms_handler.php";
        var data = new Object();
        data.action = "registration";
        data.process = processType;

        var dataString = $.toJSON(data);
        $.post(handlerUrl, {data: dataString}, function(res){
            var elemDiv = $('#CommonForms');
            elemDiv.show();
            elemDiv.html(res.viewCtrl);
            var obj = $("#user-login");
            if(obj.is(':visible'))
                obj.hide();
        });
    }

    function OnLogin(processType, id)
    {
        var handlerUrl = "scripts/bowlers/ajax_resp/bbml_validation_handler.php";
        var data = new Object();
        data.action = "do_login";
        data.login = $("#email").val();
        data.password = $("#passwd").val();

        var errorField = $('#ErrorField');
        errorField.hide();

        var dataString = $.toJSON(data);
         $.post(handlerUrl, {data: dataString}, function(res){
            var elemDiv = $('#CommonForms');
            if(res.viewCtrl == "success")
            {
                elemDiv.hide();
                if(processType == "create_tour")
                {
                    OnSaveTournament(id);
                }
                else
                if(processType == "take_part")
                {
                    location.reload();
                }
                else
                if(processType == "do_login")
                {
                    location.reload();
                }
            }
            else
            {
                errorField.html("<p align=\"center\" style=\"color:#ff0000;\">Вы не правильно ввели логин и/или пароль</p>" + res.viewCtrl);
                errorField.show();
            }
        });
    }

    var g_EmailRegex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
    function OnRegistration(processType, id)
    {
        var first_name = TrimStr($("#first_name").val());
        var last_name = TrimStr($("#last_name").val());
        var email = TrimStr($("#email").val());
        var passwd1 = TrimStr($("#passwd1").val());
        var passwd2 = TrimStr($("#passwd2").val());
        var captcha = TrimStr($("#captcha").val());

        var errorField = $('#ErrorField');
        errorField.hide();

        var errors = "";
        if(first_name.length == 0)
            errors += "<p align=\"left\" style=\"color:#ff0000;\">Требуется заполнить поле - Имя</p>";

        if(last_name.length == 0)
            errors += "<p align=\"left\" style=\"color:#ff0000;\">Требуется заполнить поле - Фамилия</p>";

        if(email.length == 0)
            errors += "<p align=\"left\" style=\"color:#ff0000;\">Требуется заполнить поле - Email</p>";
        else
        if(!g_EmailRegex.test(email))
            errors += "<p align=\"left\" style=\"color:#ff0000;\">Поле Email не является e-mail адресом</p>";

        if(passwd1.length == 0)
            errors += "<p align=\"left\" style=\"color:#ff0000;\">Требуется заполнить поле - Пароль</p>";

        if(passwd1 != passwd2)
            errors += "<p align=\"left\" style=\"color:#ff0000;\">Пароли не совпадают</p>";

        if(captcha.length == 0)
            errors += "<p align=\"left\" style=\"color:#ff0000;\">Требуется заполнить поле - Код подтверждения</p>";

        if(errors.length > 0){
            errorField.show();
            errorField.html(errors);
            return;
        }

        var handlerUrl = "scripts/bowlers/ajax_resp/bbml_validation_handler.php";
        var data = new Object();
        data.action = "do_registration";
        data.first_name= first_name;
        data.last_name = last_name;
        data.email = email;
        data.passwd = passwd1;
        data.captcha = captcha;

        var dataString = $.toJSON(data);
         $.post(handlerUrl, {data: dataString}, function(res){
            if(res.viewCtrl == "success")
            {
                var successCtrl = "<table cellspacing=\"2\" cellpadding=\"2\" border=\"0\" width=\"100%\">";
                    successCtrl += "<tr>";
                        successCtrl += "<td>";
                            successCtrl += "Поздравляем, Вы успешно зарегистрировались и авторизовались в системе Большая Лига Мастеров Боулинга.<br><br>";
                            successCtrl += "На Ваш почтовый ящик было отправлено сообщение с кодом активации Вашего аккаунта.<br><br>";
                            successCtrl += "Если аккаунт не будет активирован в течении 2х суток, он будет заблокирован.<br>";
                        successCtrl += "</td>";
                    successCtrl += "</tr>";
                    successCtrl += "<tr>";
                        successCtrl += "<td><input class=\"btn done\" type=\"button\" onclick=\"OnEventCancel();\" value=\"Закрыть\"/></td>";
                    successCtrl += "</tr>";
                successCtrl += "</table>";
                $('#RegistrationFormBody').html(successCtrl);

                if(processType == "create_tour")
                {
                    OnSaveTournament(id);
                }
                else
                if(processType == "take_part")
                {
                    location.reload();
                }
                else
                if(processType == "do_login")
                {
                    location.reload();
                }
            }
            else
            {
                if(res.viewCtrl == "bad_captcha"){
                    errors = "<p align=\"left\" style=\"color:#ff0000;\">Вы ввели неправильный код подтверждения</p>";
                }

                if(res.viewCtrl == "email_exists"){
                    errors = "<p align=\"left\" style=\"color:#ff0000;\">Такой Email уже зарегистрирован в системе</p>";
                }

                errorField.show();
                errorField.html(errors);

                OnUpdateCaptcha($('#captcha_field'));
            }
        });
    }

    function OnUpdateCaptcha(ctrl)
    {
        var handlerUrl = "scripts/bowlers/ajax_resp/bbml_validation_handler.php";
        var data = new Object();
        data.action = "update_captcha";
        var dataString = $.toJSON(data);
         $.post(handlerUrl, {data: dataString}, function(res){
            ctrl.html(res.viewCtrl);
        });
    }

    function OnDoValidation(dayId)
    {
        var cell = TrimStr($("#cell").val());
        var skype = TrimStr($("#skype").val());

        var errorField = $('#ErrorField');
        errorField.hide();

        var errors = "";
        if(cell.length == 0 || skype.length == 0 || (cell == "Ваш телефон" && skype == "Skype"))
            errors += "<p align=\"left\" style=\"color:#ff0000;\">Требуется заполнить одно из полей - Телефон или Skype</p>";

        if(errors.length > 0){
            errorField.show();
            errorField.html(errors);
            return;
        }

        var data = new Object();
        data.action = "do_organizer_validation";
        data.cell = cell;
        data.skype = skype;
        data.dayId = dayId;

        var dataString = $.toJSON(data);
        $.post("scripts/bowlers/ajax_resp/bbml_validation_handler.php", {data: dataString}, function(res){
            if(res.viewCtrl == "success"){
                OnShowProperties(dayId);
            }
        });
    }

    function OnEventCancel()
    {
         $('#CommonForms').hide();
    }

    function ShowAllEvents(eventId)
    {
        var subEventsNode = $("#SubEvents_" + eventId);
        var ref = $("#MoreInfo_" + eventId);

        if(subEventsNode.is(':visible')){
            subEventsNode.hide();
            ref.text("подробнее...");
        }
        else{
            subEventsNode.show();
            ref.text("скрыть...");
        }
    }
