$(document).ready(function(){
	var $window = $(window),
		$body = $('body');
	var pagesMinCount = 17;
	//Выставляем класс к body для резины
	$window.bind('resize', function(){
		//Если ширина окна не укладывается в 1280px
		if ($window.width() < 1180){
			if (!$body.hasClass('w1024')){
				pagesMinCount = 11;
				$body.addClass('w1024').trigger('ddResize', ['1024']);
			}
		}else{
			if ($body.hasClass('w1024')){
				pagesMinCount = 17;
				$body.removeClass('w1024').trigger('ddResize', ['1280']);
			}
		}
	}).trigger('resize');
	
	$body.bind('ddResize', function(event, width){
		if (width == '1024'){
			
		}
		var pages = $('.pagination div.pages');
		//Ребилдим постраничку
		if (pages.length){
			pages.data('jsp').destroy();
			Pagenate();
		}
	});
	
	//Опции диалоговых окон по умолчанию
	var dialogOpt = {
		autoOpen: false,
		closeText: '',
		resizable: false,
		draggable: true,
		width: 529,
		modal: true
	};
	
	//Опции валидации по умолчанию
	var validateOpt = {
		errorClass: 'error',
		validClass: 'ok',
		//Чтобы подсказки об ошибках не вылетали, бля
		errorPlacement: function(){return false;},
		//Вывод ошибок
		invalidHandler: function(form, validator){
			var errorList =  validator.errorList;
			$('.dd.ok, .dd.error').removeClass('ok').removeClass('error');//Убираем классы у стилизованных списков
			var errors = new Array();
			//Перебираем ошибки
			for (var index in errorList){
				var elem = $(errorList[index].element);
				if (elem.is('select')){elem.parent().next('.dd').addClass('error');}//Ошибки стилизованных списков
				//Находим название поля
				var text = elem.parents('.row:first').find('.left').text();
				text = text.replace(/\*/, '').replace(/\:/, '');//Убираем лишние символы
				errors.push(text);
			}
			var alert_cont = $(validator.errorContext).parents('.ui-dialog-content:first').find('.alert');
			//Если нашлись ошибки
			if (errors.length){
				var text = 'Пол';
				text += errors.length == 1 ? 'е':'я';
				text += ' «';
				text += errors.join(', ');
				text +=	'» обязательн';
				text += errors.length == 1 ? 'о':'ы';
				text += ' для заполнения!';
				alert_cont.text(text);
				alert_cont.show();
			}else alert_cont.hide();
		}
	};
	
	//Выставление класов у кнопки закрытия окна
	$('.ui-dialog-titlebar-close')
		.live('mousedown', function(){$(this).addClass('active');})
		.live('mouseout', function(){$(this).removeClass('active');});
		
	//Проверяем наличи постранички и минимальное количество страниц
	function Pagenate(){
		var pagenatePages = $('.pagination div.pages');
		var pagesCount = $('a', pagenatePages).length;
		if (pagenatePages.length > 0 && pagesCount > pagesMinCount){
			//Скроллинг для постраничной навигации
			pagenatePages.jScrollPane({
				showArrows: false,
				horizontalDragMinWidth: 9,
				animateScroll: true//,
//				autoReinitialise: true
			});
			//Перебираем все контейнеры с постраничной навигацией, прокручиваем к текущим пунктам
			pagenatePages.each(function(){
				var $this = $(this);
				$this.data('jsp').scrollToElement($this.find('.active:first'));
			});
		}
	}
	Pagenate();
	
	//Сворачивание содержания на странице конкретной работы
	$('.content_list a.false').click(function(){
		$(this).siblings('ol').slideToggle();
		return false;
	});
	
	//Выставление оценки конкретной работе
	$('.set_rate span').mouseenter(function(){
		var $this = $(this),
			starsNext = $this.nextAll(),
			starsPrev = $this.prevAll().add($this);
		starsNext.removeClass('hover');
		starsPrev.addClass('hover');
	}).click(function(){
		var $this = $(this),
			rate = $this.index() + 1,
			//Находим id страницы, приводим к целочисленному
			pageid = parseInt($this.siblings('.none').text(), 10);
		//Отправка
		$.ajax({
			url: '/module/vote.php',/*АДРЕС ДЛЯ ОТПРАВКИ*/
			type: 'post',
			data: {
				rate: rate,/*рейтинг*/
				pageid: pageid/*id страницы*/
			},
			dataType: 'json',
			success: function(reply){
	             alert('Ваша оценка «' + rate + '»');
                }				 //Действия после запроса
		});
	});
	
	
	//Окно для всяких сообщений
	var dialogMessage = $('.dlg_message');
	dialogMessage.dialog($.extend({},dialogOpt,{
		open: function(event, ui){
			var $this = $(this), cont = $this.find('.content');
			cont.html($this.data('ddMessage'));
		},
		beforeclose: function(event, ui){
			var back_dialog = $(this).data('ddBackDialog');
			if (back_dialog) back_dialog.dialog('close');
			$(this).data('ddBackDialog', false);
		},
		dialogClass: 'dlgMessage'
	}));
	
	//Окно заказа
	var dialogOrder = $('div.dlg_order');
	dialogOrder.dialog($.extend({},dialogOpt,{
		dialogClass: 'dlgOrder'
	}));
	
	//Окно контактов
	var dialogContacts = $('div.dlg_contacts');
	dialogContacts.dialog($.extend({},dialogOpt,{
		dialogClass: 'dlgContacts'
	}));
	
	//Стилизуем элементы при открытии окна
	dialogOrder.one('dialogopen', function(){
		//Стилизуем выпадающие списки
		$('.ui-dialog select').msDropDown();
		$('.dd').append('<span class="list_arrow"></span>');
		
		//Поле выбора даты
		$.datepicker.regional['ru'] = {
			closeText: 'Закрыть',
			prevText: '&larr;Пред',
			nextText: 'След&rarr;',
			currentText: 'Сегодня',
			monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
			monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек'],
			dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
			dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
			dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
			weekHeader: 'Нед',
			dateFormat: 'dd MM yy',
			firstDay: 1,
			isRTL: false,
			showMonthAfterYear: false,
			yearSuffix: ''
		}; 
		$.datepicker.setDefaults($.datepicker.regional['ru']);
		$('.datePicker').datepicker();
		
		//Стилизуем добавление файлов
		$('.ui-dialog input[type=file]').ddInputFile({
			button: $('<a href="" class="btn2"><span class="left"></span><span class="center">Выбрать файл</span><span class="right"></span></a>'),
			rowFile: $('<div><span class="name"></span> <span class="size"></span> <span class="ddInputFileRemove">?</span></div>'),
			nameClass: '.name',
			sizeClass: '.size',
			removeClass: '.ddInputFileRemove'
		});
	});

	//Дополнительные контакты
	var add_contacts = $('.add_contacts');	
	$('a', add_contacts).click(function(){
		var $this = $(this),
			field = $('<div class="row"><div class="left">'+$this.text()+'</div>'+
					'<div class="right"><input type="text" name="'+$this.attr('name')+'" /></div><div class="clear"></div></div>');
		if ($this.siblings('a').length == 0) add_contacts.hide();
		$this.remove();
		add_contacts.before(field);
		return false;
	});
	
	//Валидация окна заказа
	$('form', dialogOrder).validate($.extend({},validateOpt,{
		submitHandler: function(form){
			//Открываем окно контактов
			dialogContacts.dialog('open');
			return false;
		},
		//Правила для валидации
		rules: {
			work_want: 'required',
			work_subject: 'required',
			work_date: 'required',
			work_list: 'number',
			work_sourse: 'number'
		}
	}));
	//Валидация окна контактов
	$('form', dialogContacts).validate($.extend({},validateOpt,{
		submitHandler: function(form){
			$('.ajaxLoader', dialogContacts).show();
			var contact = $('form', dialogContacts).serializeArray(),
				post = new Array();
			for (var index in contact) post[contact[index].name] = contact[index].value;//Собираем контакты
			//Отправка данных
			$('form', dialogOrder).ajaxSubmit({
				url: location.href,/*******************Адрес для отправки*/
				type: 'POST',
				data: post,
				success: function(data){
					$('.ajaxLoader', dialogContacts).hide();
					//Проверяем статус ответа
					if (data == 1){
						//Выводим сообщение об успехе
						dialogMessage.data('ddMessage', '<p>Спасибо за заказ!</p><p>В течение дня по указаному номеру телефона с вами свяжется исполнитель вашей работы. </p>');
						dialogMessage.dialog('option', 'title', 'Заказ отправлен');
		 				dialogOrder.dialog('close');
		 				dialogContacts.dialog('close');
						dialogMessage.dialog('open');
					}else{
						//Сообщение об ошибки
						dialogMessage.data('ddMessage', '<p>Во время отправки заявки произошла непредвиденная ошибка =(<br />Попробуйте чуть позже.</p>');
						dialogMessage.dialog('option', 'title', 'Ошибка!');
						dialogMessage.dialog('open');
					}
				}
			});
			return false;
		},
		//Правила для валидации
		rules: {
			contact_name: 'required',
			contact_email: {
				required: true,
				email: true
			},
			contact_phone: 'required',
			contact_counry: 'required',
			contact_city: 'required',
			contact_grade: 'number'
		}
	}));
	//Открытие заказа работы
	$('.btn1').click(function(){
		dialogOrder.dialog('open');
		return false;
	});
	//Открытие окна контактов
	$('.dlg_contacts_open').click(function(){
		$('form', dialogOrder).submit();
		return false;
	});
	//Отправка заказа
	$('.dlg_submit').click(function(){
		$('form', dialogContacts).submit();
		return false;
	});
	//Закрытие окон
	$('.dlg_close').click(function(){
		$(this).parents('.ui-dialog-content:first').dialog('close');
		return false;
	});
	
	//Часики
	var hour = $('.clock .hour'),
		minutes = $('.clock .minutes');
	function Clock(){
		var time = new Date();
		hour.text(time.getHours());
		minutes.text(time.getMinutes());
	}
	setInterval(Clock, 1000);
	
	//Поиск
	var find_block = $('.find_block');
	$('a', find_block).bind('click', function(){
		find_block.attr('action', $(this).attr('href')).submit();
		return false;
	});
});
