if (typeof($) != "undefined") {
	$(document).ready(function() {
		$('#nojquery').css({
			'height': 0,
			'padding': 0,
			'overflow': 'hidden'
		});
	    /* Набор элементов формы */
	    var now = new Date();
	    var year = now.getFullYear();
	    var rstrackForm = $("form.rstrack-form");
	    var addPlayerBtn = $(".c-player-add");
	    var addPlayerForm = $('.c-participant-form');
	    var addPlayerFormAddBtn = $(".c-participant-add-btn");
	    var playerDump = $(".c-participant-placeholder");
	    var players = $(".command-participants-list");
	    var changePasswordBtn = $(".c-change-password-btn");
	    var passwordForm = $(".c-change-password");
	    var newPlayerFirstame = addPlayerForm.find("#c-participant-firstname");
	    var newPlayerLastname = addPlayerForm.find("#c-participant-lastname");
	    var newPlayerGeder = addPlayerForm.find(".radiogroup input:checked");
	    var newPlayerBrthYear = addPlayerForm.find("#c-participant-birthyear");
	    var newPlayerCity = addPlayerForm.find("#c-participant-city");
	    var newPlayerAltCity = addPlayerForm.find("#c-participant-alt-city");
	    var deletePlayerBtn = $('.command-participant .delete');
	    var editPlayerBtn = $('.command-participant .edit');
	    var customCityBox = $('p.c-participant-alt-city');
	    var passwordToggler = $('.password-toggler');
	    var selectCathegoryField = $('input.cathegories');
	    var emailField = $("input.email");
	    var passField = $("input.password");
	    var registrationForm = $('form.registration-form');
	    var registrationFormFields = $('form.registration-form input, form.registration-form select');
	    var routeAnswerLink = $('.route a.show-answer');
	    var routeAnswerLongLink = $('.route a.show-longanswer');
	    var routeHistoryLink = $('.route a.show-history');


	    var emailPattern = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;

	    var birthYearPattern = new RegExp('^[0-9]{0,4}$');

	    var passPattern = new RegExp('^\\s*$');

	    var showAddPlayerForm = function() {
	        addPlayerBtn.hide();
	        addPlayerForm.addClass('c-participant-form-show');
	        addPlayerFormAddBtn.click(addPlayer);
	        return false;
	    };

	    var addPlayer = function() {
	        playerDump.remove();
	        var timeStamp = new Date();
	        var msTimeStamp = timeStamp.getTime();
	        var addPlayerForm = $(this).parent().parent();
	        var isEdit = $(this).attr('isEdit');
	        var newPlayerFirstame = addPlayerForm.find("#c-participant-firstname");
	        var newPlayerLastname = addPlayerForm.find("#c-participant-lastname");
	        var newPlayerGeder = addPlayerForm.find(".radiogroup input:checked");
	        var newPlayerBrthYear = addPlayerForm.find("#c-participant-birthyear");
	        var newPlayerCity = addPlayerForm.find("#c-participant-city");
	        var newPlayerAltCity = addPlayerForm.find("#c-participant-alt-city");
	        var newPlayerGeder = addPlayerForm.find(".radiogroup input:checked");
	        var newPlayerFirstameValue = newPlayerFirstame.attr('value');
	        var newPlayerLastnameValue = newPlayerLastname.attr('value');
	        var newPlayerGederValue = newPlayerGeder.attr('value');
	        var newPlayerBrthYearValue = newPlayerBrthYear.attr('value');
	        var newPlayerCityValue = addPlayerForm.find("#c-participant-city option:selected").text();
	        var newPlayerCityId = addPlayerForm.find("#c-participant-city option:selected").attr("value");
	        var newPlayerAltCityValue = newPlayerAltCity.attr("value");
	        str = newPlayerFirstame + ' ' + newPlayerLastname + ' ' + newPlayerGeder + ' ' + newPlayerBrthYear + ' ' + newPlayerCity;
	        newPlayer = $('<div class="command-participant"><h3 class="c-participant"><span class="firstname">' + newPlayerFirstameValue + '</span> <span class="lastname">' + newPlayerLastnameValue + '</span></h3><p class="details"><span  class="city">' + ((newPlayerAltCityValue && newPlayerAltCityValue != 0) ? newPlayerAltCityValue : newPlayerCityValue) + '</span>, <span class="birtyear">' + newPlayerBrthYearValue + '</span> года рождения</p><p class="actions"><a class="edit" href="#edit">Изменить данные</a> | <a href="#delete" class="delete">Удалить</a></p></div>');
	        newPlayerForm = $('<input type="hidden" name="players[' + msTimeStamp + '][first_name]" class="player-firstname" value="' + newPlayerFirstameValue + '" /><input type="hidden" name="players[' + msTimeStamp + '][lastname_name]" class="player-lastname" value="' + newPlayerLastnameValue + '" /><input type="hidden" name="players[' + msTimeStamp + '][birthyear]" class="player-birthyear" value="' + newPlayerBrthYearValue + '" /><input type="hidden" name="players[' + msTimeStamp + '][gender]" class="player-gender" value="' + newPlayerGederValue + '" /><input type="hidden" name="players[' + msTimeStamp + '][city_id]" class="player-city" value="' + newPlayerCityId + '" /><input type="hidden" name="players[' + msTimeStamp + '][alt_city]" class="player-alt-city" value="' + newPlayerAltCityValue + '" />');
	        newPlayer.append(newPlayerForm);
	        if (!isEdit) {
	            players.append(newPlayer);
	        } else {
	            addPlayerForm.parent().replaceWith(newPlayer);
	        }

	        playersCount = $('.command-participant').length;
	//        TODO: количество участников нужно брать из переменной.
	        if (playersCount < 4) {
	            addPlayerBtn.show();
	        }
	        addPlayerForm.removeClass('c-participant-form-show');
	        newPlayerFirstame.removeAttr('value');
	        newPlayerLastname.removeAttr('value');
	        newPlayerBrthYear.removeAttr('value');
	        newPlayerAltCity.removeAttr('value');
	        newPlayerGeder.removeAttr("checked");
	        addPlayerFormAddBtn.attr('disabled', 'disabled');
	        newPlayerCity.attr("selectedIndex", 0);
	        deletePlayerBtn = $('.command-participant .delete');
	        deletePlayerBtn.click(deletePlayer);
	        editPlayerBtn = $('.command-participant .edit');
	        editPlayerBtn.click(showEditForm);
	        return false;
	    };

	    var showPassword = function() {
	        $(this).hide();
	        passwordForm.addClass("c-change-password-show");
	        return false;
	        }

	    var checkPlayerForm = function () {
	        newPlayerValues = new Array();
	        newPlayerValues.push(newPlayerFirstame.attr('value'));
	        newPlayerValues.push(newPlayerLastname.attr('value'));
	        newPlayerValues.push(newPlayerGeder.attr('value'));
	        newPlayerValues.push(newPlayerBrthYear.attr('value'));
	        //newPlayerValues.push(newPlayerCity.text());
	        newPlayerValuesLength = newPlayerValues.length;
	        enableBtn = true;
	        for (i=0; i < newPlayerValuesLength; i++) {
	            if (newPlayerValues[i] == 'null' || newPlayerValues[i] == '' || newPlayerValues[i] == ' ' ) {
	                enableBtn = false;
	                break;
	            }
	        }
	        if (!newPlayerCity.attr("selectedIndex")) {
	            enableBtn = false;
	        }
	        if (enableBtn) {
	            addPlayerFormAddBtn.removeAttr('disabled');
	        };
	        delete newPlayerValues;
	        return false;
	    }

	    var checkCity = function () {
	        //alert();
	        var form = $(this).parent().parent();
	        var customCityBox = form.find('p.c-participant-alt-city');
	        var newPlayerAltCity = form.find('#c-participant-alt-city');
	        checkedCity = $(this).find('option:selected');
	        if (checkedCity.hasClass('custom-city')) {
	            customCityBox.addClass('visible');
	        } else {
	            customCityBox.removeClass('visible');
	            newPlayerAltCity.attr('value', '');
	        }
	        checkPlayerForm();
	    }

	    var deletePlayer = function () {
	        deletePlayer = $(this).parent().parent();
	        deletePlayer.detach();
	        return false;
	    }

	    var showEditForm = function () {
	        var editPlayer = $(this).parent().parent();
	        var editPlayerFirstName = editPlayer.find('.player-firstname').attr('value');
	        var editPlayerLastName = editPlayer.find('.player-lastname').attr('value');
	        var editPlayerGender = editPlayer.find('.player-gender').attr('value');
	        var editPlayerBirthYear = editPlayer.find('.player-birthyear').attr('value');
	        var editPlayerCityId = editPlayer.find('.player-city').attr('value');
	        var editPlayerAltCity = editPlayer.find('.player-alt-city').attr('value');
	        var editPlayerActions = editPlayer.find('.actions')


	        var editForm = addPlayerForm.clone().appendTo(editPlayer);
	        var editBtn = editForm.find('.c-participant-add-btn');
	        var cancelBtn = $("<input type='button' value='Отменить' />").appendTo(editBtn.parent());
	        var editFormFirstame = editForm.find("#c-participant-firstname");
	        var editFormLastname = editForm.find("#c-participant-lastname");
	        var editFormGeder = editForm.find(".radiogroup input.c-participant-gender-" + editPlayerGender);
	        var editFormBirthYear = editForm.find("#c-participant-birthyear");
	        var editFormCity = editForm.find("#c-participant-city option.[value=" + editPlayerCityId + "]");
	        var editFormAltCity = editForm.find("#c-participant-alt-city");
	        var editFormCustomCityBox = editForm.find('p.c-participant-alt-city');
	        var editFormCities = editForm.find('#c-participant-city');

	        editPlayerActions.css('visibility', 'hidden');
	        editFormFirstame.attr('value', editPlayerFirstName);
	        editFormLastname.attr('value', editPlayerLastName);
	        editFormBirthYear.attr('value', editPlayerBirthYear);
	        if (editPlayerAltCity) {
	            editFormAltCity.attr('value', editPlayerAltCity);
	        }
	        editFormGeder.attr('checked', 'checked');
	        editFormCity.attr('selected', 'selected');
	        editFormBirthYear.blur(checkBirthYear);
	        if (editFormCity.hasClass('custom-city')) {
	            editFormCustomCityBox.addClass('visible');
	        }
	        editFormCities.change(checkCity);
	        editBtn.attr('value', 'Сохранить изменения');
	        editBtn.attr('isEdit', true);
	        editBtn.removeAttr('disabled');
	        editBtn.click(addPlayer);
	        editForm.addClass('c-participant-form-show');
	        cancelBtn.click(function () {
	            editForm.detach();
	            editPlayerActions.css('visibility', 'visible');
	        });
	        return false;
	    }

	    var togglePassword = function () {
	        var field = $("form.rstrack-form input#password");
	        n = field.length;
	        for (i=0; i<n; i++) {
	            if (field[i].type == 'password') {
	                field[i].type='text';
	                $(this).text('Спрятать пароль');
	            }
	            else {
	                field[i].type='password';
	                $(this).text('Показать пароль');
	            }
	        }
	        return false;
	    }

	    var checkRegistrationForm = function () {
	        enableBtn = true;
	        if (typeof $('input[@type=radio]:checked').attr('value') === 'undefined') {
	            enableBtn = false;
	        }
	        if (passField.attr('value').match(passPattern)) {
	            enableBtn = false;        }
	        if (!emailField.attr('value').match(emailPattern)) {
	            enableBtn = false;
	        }
	        if (enableBtn) {
	            registrationForm.find('input[type=submit]').removeAttr('disabled');
	        }
	    }

	    var validateForm = function () {
	        errorMsg = '';
	        if (typeof $('input[@type=radio]:checked').attr('value') === 'undefined') {
	            enableBtn = false;
	            errorMsg += "<p>Выберите категорию</p>";
	        }
	        if (passField.attr('value').match(passPattern)) {
	            enableBtn = false;        }
	        if (!emailField.attr('value').match(emailPattern)) {
	            enableBtn = false;
	        }
	        if (!enableBtn) {
	            registrationForm.find('input[type=submit]').addAttr('disabled', 'disabled');
	            errorBox = $('<div class="message error">' + errorMsg + '</div>');
	            $(this).append(errorBox);
	            return false;
	        }
	    }

	    var disableRegistrationForm = function() {
	        registrationForm.find('input[type=submit]').attr('disabled', 'disabled');
	    }

	    var checkEmail = function () {
	        //alert($(this).attr('value'));
	        if (!$(this).attr('value').match(emailPattern)) {
	            $(this).addClass('invalid');
	            disableRegistrationForm();
	        }
	        else {
	            $(this).removeClass('invalid');
	        }
	    }

	    var checkCathegory = function () {
	        if (!typeof $('input[@type=radio]:checked').attr('value') === 'undefined') {
	            disableRegistrationForm();
	            return false;
	        }
	        else {
	            return true;
	        }
	    }

	    var checkPass = function () {
	        if ($(this).attr('value').match(passPattern)) {
	            $(this).addClass('invalid');
	            disableRegistrationForm();
	        }
	        else {
	            $(this).removeClass('invalid');
	        }
	    }

	    var checkBirthYear = function () {
	        if(!$(this).attr('value').match(birthYearPattern) || $(this).attr('value') < 1920 || $(this).attr('value') > year) {
	            $(this).addClass('invalid');
	        } else {
	            $(this).removeClass('invalid');
	        }
	    }

	    $(".expander").click(function () {
	        if ($(this).text() == "+") {
	            $(this).parent().parent().find(".collapsible").removeClass("collapsed");
	            $(this).text("-");
	            $(this).addClass("expanded");
	        }
	        else {
	            $(this).parent().parent().find(".collapsible").addClass("collapsed");
	            $(this).text("+");
	            $(this).removeClass("expanded");
	        }
	        return false;
	    });

	    var showAnswer = function () {
	    	$(this).parent().next('.answer').slideToggle();
	    	return false;
	    }
	    var showAnswerLong = function () {
	    	$(this).parent().next('.longanswer').slideToggle();
	    	return false;
	    }
	    var showHistory = function () {
	    	$(this).parent().nextAll('.history').eq(0).slideToggle();
	    	return false;
	    }

	    addPlayerForm.find('input').change(checkPlayerForm);
	    newPlayerCity.change(checkCity);
	    newPlayerBrthYear.blur(checkBirthYear);
	    addPlayerBtn.click(showAddPlayerForm);
	    changePasswordBtn.click(showPassword);
	    deletePlayerBtn.click(deletePlayer);
	    editPlayerBtn.click(showEditForm);
	    passwordToggler.click(togglePassword);
	    registrationForm.submit(validateForm);
	    passField.blur(checkPass);
	    passField.change(checkPass);
	    emailField.blur(checkEmail);
	    selectCathegoryField.change(checkCathegory);
	    selectCathegoryField.blur(checkCathegory);
	    registrationFormFields.change(checkRegistrationForm);
	    routeAnswerLink.click(showAnswer);
	    routeAnswerLongLink.click(showAnswerLong);
	    routeHistoryLink.click(showHistory);
	})
}

window.onload = function () {
	//window.alert(' ');
	document.getElementById('nojquery').innerHTML = '<div class="message error"><p>Ваш браузер, или файрвол, или злобный администратор, или кот, которого вы забыли покормить… в общем, мы не знаем кто точно, заблокировал загрузку очень нужно для работы сайта файла.</p><p>Сайт не может полноценно работать без этого файла (jquery.js, лежащий на сервере ajax.googleapis.com). Простите.</p></div>';
}
