

// Определяет произошло ли событие e вне блока block
function utils_isEventOut(block, e) {
	if ($(e.target).get(0)==$(block).get(0)) return false;
	return $(e.target).closest('HTML', $(block).get(0)).length!=0;
}


/* Стилизованные элементы форм */
$(document).ready(function(){
	
	$('.js-formCheckbox').each(function(){
		
		var el = $(this);
		
		el.before('<span href="#" class="b-formCheckbox"></span>');
		el.css({
			'position'		: 'absolute',
			'left' 			: '-10000px',
			'top'			: '0'
		});
		
		var my = el.prev();
		
		function setStatus() {
			$('.js-formCheckbox').each(function(){
				if ($(this).attr('checked')) {
					if ($(this).attr('disabled'))
						$(this).prev().addClass('b-formCheckbox-checked-disabled');
					else
						$(this).prev().addClass('b-formCheckbox-checked');
				} else {
					$(this).prev().removeClass('b-formCheckbox-checked');
				}
			});
		}
		
		my.click(function(){ el.click(); setStatus(); });
		el.change(function(){ setStatus(); });
		setStatus();
		
	});
	
	
	$('.js-formRadio').each(function(){
		
		var el = $(this);
		
		el.before('<span href="#" class="b-formRadio"></span>');
		el.css({
			'position'		: 'absolute',
			'left' 			: '-10000px',
			'top'			: '0'
		});
		
		var my = el.prev();
		
		function setStatus() {
			$('.js-formRadio').each(function(){
				if ($(this).attr('checked'))
					$(this).prev().addClass('b-formRadio-checked');
				else
					$(this).prev().removeClass('b-formRadio-checked');
			});
		}
		
		my.click(function(){ el.click(); setStatus(); });
		el.change(function(){ setStatus(); });
		setStatus();
		
	});
	
	
	$('.js-formText').each(function(){
		
		var el = $(this);
		var w = el.width();
		
		el
		 .wrap('<div class="b-formText"></div>')
		 .before('<div class="b-formText-l"></div><div class="b-formText-r"></div><div class="b-formText-bg"></div>');
		
		var block = el.parent();
		var block_bg = $('.b-formText-bg', block);
		
		block.css('width', w + 'px');
		block_bg.css('width', w - 14 - 11 + 'px');
		el.css('width', w - 20 + 'px');
		
	});
	
	
	var count_formSelect = 0;
	$('.js-formSelect').each(function(){
		
		// Считаем кол-во селектов
		count_formSelect++;
		
		var elID = count_formSelect; 	// ID текушего селекта
		var el = $(this);				// Селект
		var w = el.width();				// Ширина блока
		
		// Задаем каркас блока
		var html = '';
		html+=	'<div class="b-formSelect">';
		html+=		'<div class="b-formSelect-l"></div>';
		html+=		'<div class="b-formSelect-r"></div>';
		html+=		'<div class="b-formSelect-bg"></div>';
		html+=		'<div class="b-formSelect-txt"></div>';
		html+=		'<div class="b-formSelect-el"></div>';
		html+=		'<ul class="b-formSelect-popup"></ul>';
		html+=	'</div>'+"\n";
		
		// Добавляем каркас в структуру и скрываем селект
		el.before(html).hide();
		
		// Задаем переменные для удобства
		var block = el.prev();
		var block_bg = $('.b-formSelect-bg', block);
		var my = $('.b-formSelect-el', block);
		var my_txt = $('.b-formSelect-txt', block);
		var popup = $('.b-formSelect-popup', block);
		
		// Внешний вид блока
		block.css('width', w + 'px');
		block_bg.css('width', w - 14 - 11 + 'px');
		my_txt.css('width', w - 10 - 28 + 'px');		
		
		// Если задана высота выпадющего списка - учитываем
		if (el.data('popupheight')!=undefined) popup.css('height', el.data('popupheight'));
		
		// Первоначальные устанвоки
		my_txt.html($('OPTION:selected', el).html());
		
		// Заполняем элементы
		var items = '';
		$('OPTION', this).each(function(){
			items+= '<li ' + ( (items=='') ? ' class="b-formSelect-popup-first"' : '' ) + 'data-value="' + $(this).val() + '">' + ($(this).html()=='' ? '&nbsp': $(this).html()) + '</li>';
		});
		popup.append(items);
		
		// Подсвечивать элементы блока при наведении
		$('LI', popup).hover(
			function(){ $(this).addClass('b-formSelect-popup-hover'); },
			function(){ $(this).removeClass('b-formSelect-popup-hover'); }
		);
		
		// Скрывает выбор
		function hide() {
			popup.hide();
			$(document).unbind('mouseup.formSelect'+elID);
		}
		
		// Клик на блоке
		my.click(function(){
			
			// Показать/скрыть выбор
			if (popup.css('display')!='none') {
				
				hide();
				
			} else {
				
				popup.show();
				
				// Задаём ширину выпадающего блока
				popup.css('width', 'auto');
				var popup_w = popup.width()+20
				if (popup_w<w) popup_w = w;
				popup.css('width', popup_w+'px');
				if (el.data('popupheight')!=undefined) popup.css('overflow', 'auto');
				
				// Выпадение вверх
				if (el.attr('data-top')==1) {
					popup.css('top', '-' + popup.height() + 'px');
				}
				
				// При клике вне блока - скрывать
				$(document).bind('mouseup.formSelect'+elID, function(e) {
					if (utils_isEventOut(my, e) && utils_isEventOut(popup, e))
						hide();
				});
				
			}
		
		});
		
		// Выбор элемента
		$('LI', popup).click(function(){
			
			// Поменять текущий элемент
			my_txt.html($(this).html());
			$('OPTION', el).removeAttr('selected');
			$('OPTION[value="'+$(this).data('value')+'"]', el).attr('selected', 'selected');
			
			// Скрыть список
			hide();			
		});
		
	});
	
	
	$('.js-formTextarea').each(function(){
		
		var elWrap = $(this);
		var el = $('TEXTAREA', elWrap);
		var w = elWrap.width();
		var h = elWrap.height();
		
		// Задаем каркас
		var html = '';
		html+=	'<table class="b-formTextarea"><tr><td>';
		html+=		'<table class="b-formTextarea-wrap"><tr><td class="b-formTextarea-tl"></td><td class="b-formTextarea-t">&nbsp;</td><td class="b-formTextarea-tr"></td></tr></table>';
		html+=		'<table class="b-formTextarea-wrap"><tr><td class="b-formTextarea-l"></td><td class="b-formTextarea-body"></td><td class="b-formTextarea-r"></td></tr></table>';
		html+=		'<table class="b-formTextarea-wrap"><tr><td class="b-formTextarea-bl"></td><td class="b-formTextarea-b">&nbsp;</td><td class="b-formTextarea-br"></td></tr></table>';
		html+=	'</td></tr></table>'+"\n";
		
		elWrap.before(html);
		
		var block = elWrap.prev();
		
		el.appendTo($('.b-formTextarea-body', block));
		elWrap.hide();
		
		// Задаём размеры
		el
		 .css('width', w - 20 + 'px')
		 .css('height', h - 20 + 'px');
		
	});
	
	
	$('.js-submit').click(function(){
		$(this).closest('FORM').submit();
		return false;
	});
	
});


/* Заказ */
$(document).ready(function(){
	
	// Зарегестрированный пользователь или новый клиент
	$('.b-blockOrder .client INPUT').click(function(){
		
		// Скрываем все
		$('.t-new, .t-exists').hide();
		
		// Показываем нужную форму
		$('.t-'+$(this).val()).show();
		
	});
	
	// Инициализация
	$('.b-blockOrder .client INPUT:checked').click();
	
	// Подсказка для процентов
	$('.b-blockOrder .step2 .place .procent').hover(
		function(){ $(this).next().show(); },
		function(){ $(this).next().hide(); }
	);
	
});
