//=====================================================================================================================
//НАСТРОЙКИ
//=====================================================================================================================
var settings = {
	'url' 				: 	'http://savvateev.org',
	'domain'			:	'savvateev.org'
}

//=========================================================================================================================
//ДОПОЛНЕНИЕ КОТОРОЕ ПОЗВОЛЯЕТ ОТКРЫВАТЬ ССЫЛКИ ЗА ПРЕДЕЛАМИ ДОМЕНА В НОВОМ ОКНЕ
//=========================================================================================================================
jQuery.fn.targetOn = function(options){
	var currentDomain = location.hostname;
	return this.each(function() {
		jQuery(this).click(function(){
			var href = jQuery(this).attr('href');
			var linkDomain = this.hostname;
			if(linkDomain != currentDomain) {window.open(href); return false}	
		})
	});
};
jQuery.fn.targetOff = function(options){
	return this.each(function() {
		 $(this).unbind('click')
	});
};


//====================================================================================================================
//ДОПОЛНЕНИЕ ДЛЯ СТИЛИЗАЦИИ <input type="file">
//====================================================================================================================
jQuery.fn.jInputFile = function(options){
	
	return this.each(function() {
		var inputObj = this;
		
		$(inputObj).val('');
		$(inputObj).wrap('<div></div>');
		$(inputObj).parent().css('height',$(inputObj).height());
		$(inputObj).after('<div class="jInputFile-fakeButton"></div><div class="jInputFile-blocker"></div><div class="jInputFile-activeBrowseButton jInputFile-fakeButton"></div><div class="jInputFile-fileName"></div>');
		$(inputObj).addClass('jInputFile-customFile');
		
		$(inputObj).hover(
			function () {
				$(inputObj).parent().children('.jInputFile-activeBrowseButton').css('display', 'block');
			},
			function () {
				$(inputObj).parent().children('.jInputFile-activeBrowseButton').css('display', 'none');
			}
		);
		
		$(inputObj).change(function(){
			var file = $(inputObj).val();
           
			//Находим название файла и его расширение
			var reWin = /.*\\(.*)/;
            var fileName = file.replace(reWin, "$1");
            var reUnix = /.*\/(.*)/;
            fileName = fileName.replace(reUnix, "$1");
			var regExExt =/.*\.(.*)/;
            var ext = fileName.replace(regExExt, "$1");
			
			//Показываем значок и имя файла
			var pos;
            if (ext){
                switch (ext.toLowerCase())
                {
                    case 'doc': pos = '0'; break;
                    case 'bmp': pos = '16'; break;                       
                    case 'jpg': pos = '32'; break;
                    case 'jpeg': pos = '32'; break;
                    case 'png': pos = '48'; break;
                    case 'gif': pos = '64'; break;
                    case 'psd': pos = '80'; break;
                    case 'mp3': pos = '96'; break;
                    case 'wav': pos = '96'; break;
                    case 'ogg': pos = '96'; break;
                    case 'avi': pos = '112'; break;
                    case 'wmv': pos = '112'; break;
                    case 'flv': pos = '112'; break;
                    case 'pdf': pos = '128'; break;
                    case 'exe': pos = '144'; break;
                    case 'txt': pos = '160'; break;
                    default: pos = '176'; break
                };
                $(inputObj).parent().children('.jInputFile-fileName').html(fileName).css({'background-position':('0px -'+pos+'px'),'background-repeat':'no-repeat', 'display':'block'});
            };	
		});	
	});
};

//======================================================================================================================
//ДОПОЛНЕНИЕ, КОТОРОЕ ПОЗВОЛЯЕТ ВКЛЮЧАТЬ И ОТКЛЮЧАТЬ ВЫДЕЛЕНИЕ
//======================================================================================================================
jQuery.fn.extend({
	disableSelection : function() {
		this.each(function() {
			this.onselectstart = function() { return false; };
			this.unselectable = "on";
			jQuery(this).css('-moz-user-select', 'none');
		});
	},
	enableSelection : function() {
		this.each(function() {
			this.onselectstart = function() {};
			this.unselectable = "off";
			jQuery(this).css('-moz-user-select', 'auto');
		});
    }
});



$(document).ready(function() {

	//Ссылки с классом lightbox открываем в lightbox
	$('a.lightbox').lightBox();

	//Все ссылки за пределами домена открываем в новом окне
	//$('a').targetOn();
	
	//Для ссылок с классом link-alert запрашиваем подтверждение
	$('.link-alert').click(function(){
		 return confirm('Вы уверены, шеф?');
	});
	
	//Для textarea c классом jtageditor делаем расширение
	//setTimeout (function () {$('.jtageditor').height($('.jtageditor').height()-30).jTagEditor()}, 300);
	mySettings = {	
		onShiftEnter:  	{keepDefault:false, replaceWith:'<br />\n'},
		onCtrlEnter:  	{keepDefault:false, openWith:'\n<p>', closeWith:'</p>'},
		onTab:    		{keepDefault:false, replaceWith:'	'},
		markupSet:  [ 	
			{name:'Параграф', key:'P', openWith:'<p>', closeWith:'</p>'},
			{separator:'---------------' },
			{name:'Жирный', key:'B', openWith:'<span class="bold">', closeWith:'</span>'},
			{name:'Курсив', key:'I', openWith:'<span class="italic">', closeWith:'</span>'},
			{name:'Перечеркнутый', key:'S', openWith:'<span class="strike">', closeWith:'</span>'},
			{separator:'---------------' },
			{name:'Ссылка', key:'L', openWith:'<a href="[![Адрес:!:http://]!]">[![Текст]!]', closeWith:'</a>'},
			{name:'Изображение', key:'I', replaceWith:'<img src="[![Адрес:!:http://]!]" alt="[![Альтернативный текст]!]" />' }
		]
	};
	$('.jtageditor').markItUp(mySettings);
	
	
	
	//Для блоков с классом jcorner скругляем углы
	$('.jcorner').corner('10px');
	
	//Стилизуем импут с классом jInputFile
	$('.jInputFile').jInputFile();
	
	
	
	//ПОДКЛЮЧАЕМ ПОДСВЕТКУ КОДА
	SyntaxHighlighter.config.tagName = 'code';
	SyntaxHighlighter.defaults['toolbar'] = false;
		
	function path() {
		var args = arguments,
		result = [];
		for(var i = 0; i < args.length; i++)
		result.push(args[i].replace('@', 'http://savvateev.org/js/syntaxhighlighter/scripts/'));
		return result
	};
 
	SyntaxHighlighter.autoloader.apply(null, path(
		'applescript            @shBrushAppleScript.js',
		'actionscript3 as3      @shBrushAS3.js',
		'bash shell             @shBrushBash.js',
		'coldfusion cf          @shBrushColdFusion.js',
		'cpp c                  @shBrushCpp.js',
		'c# c-sharp csharp      @shBrushCSharp.js',
		'css                    @shBrushCss.js',
		'delphi pascal          @shBrushDelphi.js',
		'diff patch pas         @shBrushDiff.js',
		'erl erlang             @shBrushErlang.js',
		'groovy                 @shBrushGroovy.js',
		'java                   @shBrushJava.js',
		'jfx javafx             @shBrushJavaFX.js',
		'js jscript javascript  @shBrushJScript.js',
		'perl pl                @shBrushPerl.js',
		'php                    @shBrushPhp.js',
		'text plain             @shBrushPlain.js',
		'py python              @shBrushPython.js',
		'ruby rails ror rb      @shBrushRuby.js',
		'sass scss              @shBrushSass.js',
		'scala                  @shBrushScala.js',
		'sql                    @shBrushSql.js',
		'vb vbnet               @shBrushVb.js',
		'xml xhtml xslt html    @shBrushXml.js'
	));
	
	SyntaxHighlighter.all();



	//Подсветка кода
	//$('pre code').each(function(i, e) {hljs.highlightBlock(e, '    ')});









	

	
//=====================================================================================================================
//ГЛАВНОЕ МЕНЮ
//=====================================================================================================================
	var menu = {
		'color1' : '#9c6450',
		'color2' : '#ab7b6a'
	}
	
	$('#menu-home').children('.menu-link1').hover(
		function () {
			$(this).css('background-color', menu.color2);
		},
		function () {
			$(this).css('background-color', menu.color1);
		}
	);
	
	$('.menu-item').children('.menu-link1').hover(
		function () {
			$(this).css('background-color', menu.color2);
		},
		function () {
			var pane = $(this).parent().children('.menu-pane');
			if (($(pane).html())  && ($(pane).css('display') == 'none')){
				$(this).css('background-color', menu.color1);
			}
			if (!($(pane).html())){
				$(this).css('background-color', menu.color1)
			}
		}
	);
	
	//При клике на элементе меню
	$('.menu-item').children('.menu-link1').click(function(){
		var link = this;
		var pane = $(this).parent().children('.menu-pane');
		var margin = 30;
		
		//Если у элемента есть всплывающая панель и она скрыта показываем ее
		if (($(pane).html()) && ($(pane).css('display') == 'none')){
			$('.menu-pane').css('display', 'none');
			$('#menu-auth-pane').css('display', 'none')
			$('.menu-link1').css({'background-color':menu.color1, 'border-bottom-color':'white'});
			$(link).css({'background-color':menu.color2, 'border-bottom-color':menu.color2});
			
			$(pane).css('display', 'block');
		
			//Вычисляем и задаем ширину панели
			var paneWidth = margin;
			$(pane).children('a').each(function() {
				paneWidth += $(this).width() + margin;
			});
			$(pane).width(paneWidth);
			
			//Вычисляем и задаем положение панели
			var left = $(link).offset().left + Math.round($(link).width()/2) - Math.round(paneWidth/2);
			if (left<0){left=0}
			if ((left+paneWidth)>$(window).width()){left = $(window).width()-paneWidth}
			$(pane).css('left', left + 'px');
			
			return false;
		}
		
		//Если у элемента есть всплывающая панель и она показана убираем ее
		if (($(pane).html()) && ($(pane).css('display') == 'block')){
			$(pane).css('display', 'none');
			$(link).css('border-bottom-color', 'white');
			
			return false;
		}
	});
	

	
//=====================================================================================================================
//АВТОРИЗАЦИЯ
//=====================================================================================================================
	$('#menu-in').children('.menu-link1').hover(
		function () {
			$(this).css('background-color', menu.color2);
		},
		function () {
			if ($('#menu-auth-pane').css('display') == 'none'){
				$(this).css('background-color', menu.color1);
			}
		}
	);
	$('#menu-out').children('.menu-link1').hover(
		function () {
			$(this).css('background-color', menu.color2);
		},
		function () {
			$(this).css('background-color', menu.color1);
		}
	);
	
	//Устанавливаем метки
	$('#menu-auth-login').val('').next().css('top', '15px').show();
	$('#menu-auth-password').val('').next().css('top', '48px').show();
	
	//При клике на значке войти
	$('#menu-in').children('.menu-link1').click(function(){
	
		//Если всплывающая панель скрыта показываем ее
		if ($('#menu-auth-pane').css('display') == 'none'){
			$('.menu-pane').css('display', 'none');
			$('#menu-auth-pane').css('display', 'block')
			$('.menu-link1').css({'background-color':menu.color1, 'border-bottom-color':'white'});
			$(this).css({'background-color':menu.color2, 'border-bottom-color':menu.color2});
			
			return false;
		}
		
		//Если всплывающая панель показана убираем ее
		if ($('#menu-auth-pane').css('display') == 'block'){
			$('#menu-auth-pane').css('display', 'none');
			$(this).css('border-bottom-color', 'white');
			
			return false;
		}
	});
	
	//Убираем метки при передаче фокуса полю ввода
	$('#menu-auth-login').focus(function(){
		$(this).next().hide();
	});
	$('#menu-auth-login').blur(function(){
		if($(this).val() == ''){$(this).next().html('Логин').show()}
	});
	$('#menu-auth-password').focus(function(){
		$(this).next().hide();
	});
	$('#menu-auth-password').blur(function(){
		if($(this).val() == ''){$(this).next().html('Пароль').show()}
	});
	
	//При клике на кнопке войти
	$('#menu-auth-submit').click(function(){
		jQuery.ajax({
			cache: false,
			url: settings.url + '/ajax/enter.cgi',
			type: 'post',
			datatype: 'xml',
			data: {'login':$('#menu-auth-login').val(), 'password':$('#menu-auth-password').val()},
			success: function(xmlData, textStatus){			
				if($('result', xmlData).text() == 1) {
					$.cookie('SID', $('sid', xmlData).text(), {expires:30, path:'/', domain:'.'+settings.domain});
					window.location.reload();
				}
				else{
					if($('loginerror', xmlData).text() != ''){
						$('#menu-auth-login').val('').next().html('<span class="red">'+$('loginerror', xmlData).text()+'</span>').show();
					}
					if($('pswerror', xmlData).text() != ''){
						$('#menu-auth-password').val('').next().html('<span class="red">'+$('pswerror', xmlData).text()+'</span>').show();
					}
				}		
			}
		});
		
		return false;
	});
	
	
	
	
	
		
//=====================================================================================================================
//КАПЧА
//=====================================================================================================================
	$('.form-captcha').each(function(i) {
		
		var p = this;
		var checkCaptchaScript = settings.url + '/ajax/checkCaptcha.cgi';									//скрипт проверки капчи
		var successfullString = '<span class="green">Поле заполнено верно</span>';							//код в случае успешной проверки
		var captchaImg = $(this).children('img');															//изображение с капчей
		var captchaInput = $(this).children(':text');														//поле, куда вводить цифры
		
		//Убираем аттрибут disabled
		$(captchaInput).removeAttr('disabled');

		//Добавляем ссылку обновить
		var reloadLink = $('<a class="captcha-reload" href="">Обновить</a>');
		$(this).append('<br />').append(reloadLink);
		
		//При клике на этой ссылке обновляем капчу
		var captchaSrc = $(captchaImg).attr('src');				//путь к изображению с капчей	
		$(reloadLink).click(function() {
			$(captchaImg).attr('src', captchaSrc + Math.round(Math.random()*99999999) + '/');
			return false;
		});
		
		//При потере фокуса проверяем капчу
		$(captchaInput).blur(function() {
			setTimeout (function () {
				checkCaptcha();
			}, 100);
		});
		
		//При вводе символов в поле
		$(captchaInput).keydown(function() {
			setTimeout (function () {
				setError('');	 																			//очищаем поле с ошибкой
				var captchaVal = $(captchaInput).val();														//цифры которые ввел пользователь
				if (captchaVal.length == 5) {checkCaptcha()}
			}, 100);
		});
		
		
		
		function checkCaptcha() {
			var captchaVal = $(captchaInput).val();															//цифры которые ввел пользователь
			var captchaId = $(p).children('input:hidden').val();											//идентификатор капчи
			
			$(captchaInput).attr('readonly', 'readonly');													//блокируем поле на время проверки
			
			jQuery.ajax({
				cache: false,
				url: checkCaptchaScript,
				type: 'post',
				datatype: 'text',
				data: {'id':captchaId, 'value':captchaVal},
				success: function(data, textStatus){
					if (data == '') {
						setError('<span class="green">Цифры введены правильно</span>')
					}
					else {
						setError(data);
						$(captchaInput).removeAttr('readonly');
					}
				}
			});
		}
		
		function setError(error) {
			if($(p).children('.form-error').length){
				$(p).children('.form-error').html(error+'&nbsp;');
			}
			else {
				if(error != '') {
					$(captchaInput).after('<br /><span class="form-error">'+error+'</span>');
				}
			}
		}
			
		
	});
});
