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 cathegoryItem = $('.categories-matrix li');
	    var switchController = $('.switch .tabs li a');
	    var switchData = $('.switch .case');
        var resultDetailsExpander = $('.result-details-expander');
        var showAllDetail = $('.show-all-info a');


	    var emailPattern = /[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-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');
	        return false;
	    };
/*
 * Добавление нового участника
 * на странице редактирования команды
 */
	    var addPlayer = function() {
	    	//alert("");
	        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");
	        var str = newPlayerFirstame + ' ' + newPlayerLastname + ' ' + newPlayerGeder + ' ' + newPlayerBrthYear + ' ' + newPlayerCity;
	        var 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>');
	        var 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 + '" />');
	        var addedPlayer,
                playersCount;
            newPlayer.append(newPlayerForm);
	        deletePlayerBtn = newPlayer.find('.delete');
       		deletePlayerBtn.click(deletePlayer);
        	editPlayerBtn = newPlayer.find('.edit');
        	editPlayerBtn.click(showEditForm);
	        if (!isEdit) {
	        	//window.alert(newPlayer);
	            addedPlayer = players.append(newPlayer);

	        	delete addedPlayer;
	        } else {
	            addPlayerForm.parent().replaceWith(newPlayer);
	        }
			//alert(delete newPlayer);
	        playersCount = $('.command-participant').length;
	        if (playersCount < maxPlayers) {
	            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);
	        return false;
	    };

	    /*
	     * Отображения пароля 
	     * TODO: проверить, нужна ли эта функция вообще
	     */
	    
	    var showPassword = function() {
	        $(this).hide();
	        passwordForm.addClass("c-change-password-show");
	        return false;
	        }
	    
	    /*
	     * Проверка валидности формы участника команды
	     */

	    var checkPlayerForm = function () {
	        var newPlayerValues = new Array(),
            newPlayerValuesLength,
            enableBtn=true;
	        newPlayerValues.push(newPlayerFirstame.attr('value'));
	        newPlayerValues.push(newPlayerLastname.attr('value'));
	        //newPlayerValues.push(addPlayerForm.find(".radiogroup input:checked").attr('value'));
	        newPlayerValues.push(newPlayerBrthYear.attr('value'));
	        newPlayerValuesLength = newPlayerValues.length;
	        for (var i=0; i < newPlayerValuesLength; i++) {
	            if (newPlayerValues[i] == 'null' || newPlayerValues[i] == '' || newPlayerValues[i] == ' ' ) {
	                enableBtn = false;
	                break;
	            }
	        }
		if (!newPlayerCity.selectedIndex) {
	            //enableBtn = false;
		    //console.log(newPlayerCity);
	        }
	        if (enableBtn) {
	        //console.log('d');    
		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');
	        var 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 = $('.command-participant .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);
	        editBtn.click(function() {

	        	editPlayerActions.css('visibility', 'visible');
	        });
	        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");
	        var 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 () {
	        var 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 () {
	        var errorMsg = '',
                enableBtn,
                errorBox;
	        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');
	        }
	    }

		/* TODO: Переписать в виде отдельной функции,
		 * вызываемой по событию
		 */
	    
	    $(".expander").click(function () {
	    	if($(this).hasClass('expanded')) {
	    		$(this).removeClass('expanded').parent().next().slideUp().addClass("collapsed");
	    	} else {
	    		$(this).addClass('expanded').parent().next().slideDown().removeClass("collapsed");
	    	}
	    	return false;
	    });
	    
	    var showAnswer = function () {
	    	$(this).parent().nextAll('.answer').eq(0).slideToggle();
	    	return false;
	    }
	    var showAnswerLong = function () {
	    	$(this).parent().nextAll('.longanswer').eq(0).slideToggle();
	    	return false;
	    }
	    var showHistory = function () {
	    	$(this).parent().nextAll('.history').eq(0).slideToggle();
	    	return false;
	    }
	    var markAsSelected = function () {
	    	if(!$(this).hasClass('disabled')){
		    	$(this).siblings().removeClass('selected');
		    	$(this).addClass('selected');
//		    	$(this).find('input').attr('checked', 'checked');
	    	}
	    }

	    var switchTabs = function () {
	    	$(this).parent().siblings().removeClass('current');
	    	$(this).parent().addClass('current');
	    	var currentClass = $(this).attr("class");
	    	switchData.removeClass('current');
	    	switchData.filter('.'+currentClass).addClass('current');
	    	return false;
	    }
        var showResultDetails = function () {
            var resultDetails = $(this).parents('tr').next('.result-details');
            resultDetails.toggle();
            return false;
        }


	    addPlayerForm.find('input').change(checkPlayerForm);
	    addPlayerFormAddBtn.click(addPlayer);
	    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);

        // TODO: Вернуть потом на место

	    registrationFormFields.change(checkRegistrationForm);
	    routeAnswerLink.click(showAnswer);
	    routeAnswerLongLink.click(showAnswerLong);
	    routeHistoryLink.click(showHistory);
	    cathegoryItem.click(markAsSelected);
	    switchController.click(switchTabs);
        resultDetailsExpander.click(showResultDetails);

        /*
         * Показывем фотку побольше
         */

        $('.image-box').click(function(){
            var link = $(this);
            if (link.find('div.image-box-canvas').length == 0) {
                var canvas = $('<div class="image-box-canvas"></div>').appendTo(link);
                var image = $('<img src="' + link.attr('href') + '" />').appendTo(canvas);
            } else {
                // Large image already opened, let us close it.
                link.find('div.image-box-canvas').remove();
            }
            return false;
        });
        
        showAllDetail.click(function() {
        	$('.result-details').hide();
        	if ($(this).attr('status')=="0") {
        		$(this)
        			.attr('status',"1")
        			.text($(this).attr('hide'));
            	$('.result-details').show();
        	} else {
        		$(this)
        			.attr('status',"0")
        			.text($(this).attr('show'));
        	}
			return false;
		})


        /* Попап в программе соревнований */


        var popup_handle = $('.popup-handle');

        var close_popup = function(e) {
            var init_obj = $(e.target);
            var popup = init_obj.parent();

            popup.fadeOut().removeClass('popup-open');
        }
        
        var show_popup = function(e) {
            var init_obj = $(e.target);
            var popup = init_obj.siblings('.popup-base').find('.popup');
            if(! popup.has('.popup-closer').length) {
                var closer = $('<span class="popup-closer">×</span>');
                closer.appendTo(popup).click(close_popup);
            }
            if(popup.hasClass('popup-open')) {
                popup.fadeOut().removeClass('popup-open');
            } else {
                $('.popup-open').fadeOut().removeClass('popup-open');
                popup.fadeIn().addClass('popup-open');
            }
        }


        popup_handle.click(show_popup);

        var dropdown_handle = $('.dropdown-handle');

        var close_dropdown = function(e) {
            var init_obj = $(e.target);
            var dropdown = init_obj.parent();

            dropdown.slideToggle().removeClass('dropdown-open');

            return false;
        }

        var show_dropdown = function(e) {
            var init_obj = $(e.target);
            var dropdown = init_obj.siblings('.dropdown-base').find('.dropdown');
            if(! dropdown.has('.dropdown-closer').length) {
                var closer = $('<span class="dropdown-closer">скрыть описание</span>');
                closer.appendTo(dropdown).click(close_dropdown);
            }
            if(dropdown.hasClass('dropdown-open')) {
                dropdown.slideToggle().removeClass('dropdown-open');
            } else {
                $('.dropdown-open').slideToggle().removeClass('dropdown-open');
                dropdown.slideToggle().addClass('dropdown-open');
            }
            return false;
        }


        dropdown_handle.click(show_dropdown);
    })
}

window.onload = function () {
	//window.alert(' ');
	document.getElementById('nojquery').innerHTML = '<div class="message error"><p>Ваш браузер, или файрвол, или злобный администратор, или кот, которого вы забыли покормить… в общем, мы не знаем кто точно, заблокировал загрузку очень нужно для работы сайта файла.</p><p>Сайт не может полноценно работать без этого файла (jquery.js, лежащий на сервере ajax.googleapis.com). Простите.</p></div>';
}

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-11942630-1']);
_gaq.push(['_setDomainName', '.runcity.ru']);
_gaq.push(['_trackPageview']);

(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + encodeURI(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) {
    var cookie = " " + document.cookie;
    var search = " " + name + "=";
    var setStr = null;
    var offset = 0;
    var end = 0;
    if (cookie.length > 0) {
        offset = cookie.indexOf(search);
        if (offset != -1) {
            offset += search.length;
            end = cookie.indexOf(";", offset)
            if (end == -1) {
                end = cookie.length;
            }
            setStr = decodeURI(cookie.substring(offset, end));
        }
    }
    return(setStr);
}


// Заглушка для console

if (typeof(console) == 'undefined') {
    var console = {
        log: function(message) {},
        info: function(message) {},
        warn: function(message) {},
        error: function(message) {
            alert(message);
        }
    }
}
