$(document).ready(function(){
	C.init();
})

var C={
	current_menuitem: null,//на странице заказа id элемента с фокусом
	gallery_callbaks: {},

	init: function(){
		//подключаем shadowbox
		C.shadowboxInit();

		//показываем флэш-меню
		C.flash.drawMenu();

		//инициализируем корзину
		C.cart.init();

		//инициализируем меню
		C.menu.init();

		//подгружаем маленькую флэш карту
		C.flash.drawMoscowMapSmall();

		//если мы на странице карты москвы, то показываем флэш-карту
		C.flash.drawMoscowMap();

		//если мы на странице заказа, то пытаемся блокируем строку для ввода адреса
		C.cart.changeAddrSbox();

		//баллун на регистрацию
		C.logreg.init();
		
		//в анкете рисуем звездочки
		C.anketaStars();
		
		// в галерее создаем рейтинги
		C.galleryStars();
		
		// создаем обработчики для ссылок "скачать в высоком разрешении"
		C.galleryHQ();
		
		// делаем ссылки с заголовков на страницах Доставка и Заказ
		C.headersLinks();

		//боремся с png
		C.correctPngView();
		
		//captcha
		C.setCaptchaWidth();
		
		//убираем кнопку "Показать" рядом с выпадающим списком категорий на странице отзывов
		C.changeCtgComments();
		
		//запрещаем ввод более 1024 символов в отзывах
		C.maxCommentLength();

		window.onresize=C.doResize;
		//откладываем вызов C.doResize() чтобы он корректно отработался в Safari
		setTimeout('C.doResize()',500);
	},

	doResize: function(){
		var width_control=$('#header').width();
		if($('body.id106').length){
			$('#body').height($.evScreenHeight() - 100);
		} else if($('body.id109').length){
			$('#body').height($.evScreenHeight() - 80);
		}else{
			if(width_control>1200){
				$('#body').css({width:'1200px'});
			}else{
				$('#body').css({width:'100%'});
			}
		}
		if($('#contentBox').length){
			C.menu.contentbox_top=$('#header')[0].offsetHeight + $('#contentBox')[0].offsetTop;
			C.menu.contentbox_left=$('#lcol')[0].offsetWidth + $('#contentBox')[0].offsetLeft;
			$('#bigMenuImageBox').hide();
		}
	},

	shadowboxInit: function(){
		Shadowbox.init({
			players:["img","html"],
			skipSetup: true,
			language: 'ru'
		})
		var $photos=$('#contentBox a[rel^=shadowbox]');
		if($photos.length){
			var hash={
				fadeDuration: .25,
				resizeDuration: .25,
				overlayOpacity: .50,
				continuous: true,
				handleOversize: 'drag',
				initialWidth: 400,
				initialHeight: 300
			}
			$photos.each(function(){
				Shadowbox.setup(this,hash);
			})
		}
		var $blogs=$('#galleryPhotos div.photo a.blog');
		if($blogs.length){
			var hash={
				player: 'html',
				width: 395,
				height: 152,
				title: 'Скопируйте код'
			}
			$blogs.each(function(){
				hash.content='<div style="width:395px;height:152px;overflow:hidden;"><textarea style="margin:0;width:381px;height:138px;padding:6px;border: 1px solid #999;">'+ $(this).attr('rel')+ '</textarea></div>';
				Shadowbox.setup(this,hash)
			})
		}
		if(location.hash.indexOf('photo')==1){
			setTimeout('C.galleryShowOne()',500);
		}
	},

	cart: {
		remove_id: null,
		codeword_success: false,

		init: function(){
			var $order_tabs=$('#orderTabs');
			var $order_form=$('#orderForm');
			var $selfpickup_order_form=$('#selfpickupOrderForm');
			
			//табы
			var tab_index;
			$order_tabs.children('ul').children('li').each(function(i){
				if (this.className=='active') tab_index=i;
			})
			$order_tabs.tabs().tabs('select',tab_index);

			//обработчик добавления в корзину
			C.cart.events();

			//обработчик клика по чекбоксу "я внутри мкад"
			$('#insideMkadInput').bind('click change focus', function(){
				var inside_mkad_checked=this.checked;
				if(C.cart.total >= C.cart.SUM2){
					var disabled_bool=false;
				}else if(C.cart.total >= C.cart.SUM1 && inside_mkad_checked){
					var disabled_bool=false;
				}else{
					var disabled_bool=true;
				}
				//блокируем/разблокируем поля формы простого заказа
				$order_form.find('input.formItemText, textarea, input[name=sbmt]').each(function(i){
					this.disabled=disabled_bool;
				});
			}).trigger('focus');

			//обработчик баллуна дисконтной карты
			$order_tabs.find('span.question').bind('mouseover mouseout', function(evt){
				if(evt.type=='mouseover'){
					$(this).children('span.discountInfo').show();
				}else if(evt.type=='mouseout'){
					$(this).children('span.discountInfo').hide();
				}
			});

			//datepicker
			$selfpickup_order_form.find('input[name=selfpickup[date]]').datepicker({dateFormat:'dd.mm.yy'});

			//обработчик кодового слова
			var sendCodeword_function=function(el){
				if(el.value && el.value.length>=3){
					var codeword=el.value;
					$.ajax({
						type: 'GET',
						url: './',
						dataType: 'json',
						data: {codeword:codeword},
						success: function(json){
							if(json.success && !C.cart.codeword_success){
								C.cart.codeword_success=true;
								if(json.discount && json.giftname){
									var p_html='<span class="fieldTxtName"><b>Вы ввели правильное кодовое слово!</b><br>Пожалуйста, выберите подарок или скидку.<br></span>';
									p_html+='<table class="codewordDiscountGift"><tr class="top">';
									p_html+='<td class="gift"><img src="'+json.giftpicture+'" width="168" height="168"></td>';
									p_html+='<td class="discount"><b>'+json.discount+'%</b></td>';
									p_html+='</tr><tr class="btm">';
									p_html+='<td class="gift"><input type="radio" name="gift_discount" value="gift"> '+json.giftname+'</td>';
									p_html+='<td class="discount"><input type="radio" name="gift_discount" value="discount"> скидка</td>';
									p_html+='</tr></table>';
								}else if(json.discount){
									var p_html='<span class="fieldTxtName">Вы ввели правильное кодовое слово и <b>получаете скидку '+json.discount+'%</b><br></span>';
								}else if(json.giftname){
									var p_html='<span class="fieldTxtName">Вы ввели правильное кодовое слово и <b>получаете подарок «'+json.giftname+'»</b><br></span>';
								}
								var $p=$(document.createElement('p')).html(p_html).insertAfter(el.parentNode.parentNode);
								$p.hide().slideDown('fast', function(){
									$p.prev().slideUp('fast',function(){
										el.value=codeword;
									});
								});
							}
						}
					});
				}
			}
			/*$selfpickup_order_form.find('input[name=selfpickup[codeword]]').bind('keyup mouseup',function(evt){
				$selfpickup_order_form.find('input[name=selfpickup[card]]')[0].disabled=(this.value!='');
				sendCodeword_function(this);
			});
			$selfpickup_order_form.find('input[name=selfpickup[card]]').bind('keyup mouseup',function(evt){
				$selfpickup_order_form.find('input[name=selfpickup[codeword]]')[0].disabled=(this.value!='');
			});*/
			$order_form.find('input[name=cart[codeword]]').bind('keyup mouseup',function(evt){
				$order_form.find('input[name=cart[card]]')[0].disabled=(this.value!='');
				sendCodeword_function(this);
			});
			$order_form.find('input[name=cart[card]]').bind('keyup mouseup',function(evt){
				$order_form.find('input[name=cart[codeword]]')[0].disabled=(this.value!='');
			});
		},

		events: function(){
			if($('#menuBox form').length){
				$('#menuBox form').bind('submit',function(event){
					var form=event.target;
					return C.cart.menuSubmit(form);
				})
			}
			if($('#fullcartForm').length){
				$('#fullcartForm input[name^=remove]').mousedown(function(evt){
					C.cart.remove_id=parseInt(evt.target.name.substr(6));
				});
				$('#fullcartForm').submit(function(){
					return C.cart.fullcartSubmit();
				})
			}
		},

		menuSubmit: function(form){
			var id=parseInt(form.elements['itemid'].value);
			var hm=parseInt(form.elements['howmany'].value);
			if(id>0 && hm>=0){
				//показываем ajax-анимацию
				$('#onthecart'+id).addClass('ajaxload').empty();
				//создаем json-запрос
				$.getJSON('./', {json:1, action:'add2cart', id:id, hm:hm}, function(json){
					if(json.ok){
						if(json.hm>0){
							var html='в корзине '+json.hm+' шт.<br><a href="/menu/order/">оформить заказ</a>';
							var val=json.hm;
							var src='/img/change.btn.gif';
						}else{
							var html='';
							var val=0;
							var src='/img/add.btn.gif';
						}
						//убираем ajax-анимацию, изменяем текст
						$('#onthecart'+json.id).removeClass('ajaxload').html(html);
						//также изменяем value текстового поля
						document.forms['menuitem'+json.id+'form'].elements['howmany'].value=val;
						//также изменяем src кнопки
						$('#menuitem'+json.id+'form td.order input').attr('src',src);
						//также изменяем текст маленькой корзины
						C.cart.shortRedraw(json.cn, json.cp);
					}else{
						//убираем ajax-анимацию
						$('#onthecart'+json.id).removeClass('ajaxload')
						//сообщаем об ошибке
						alert('Не удалось добавить продукт в корзину.\nПожалуйста, обновите страницу и попробуйте еще раз.')
					}
				})
			}else{
				var txt='Пожалуйста, уточните,\nсколько вы хотите заказать?';
				var onthecart_txt=$('#onthecart'+id).text();
				if(onthecart_txt.indexOf('шт.')>0){
					txt+='\n\nВведите 0 чтобы удалить продукт из корзины';
				}
				alert(txt);
				document.forms['menuitem'+id+'form'].elements['howmany'].select();
			}
			
			return false;
		},

		shortRedraw: function(number, price){
			if(number>0){
				if($('#cart').length==0){
					$('<div id="cart"><p></p></div>').appendTo('#cartBox');
				}
				$('#cart p').empty().append('<b>Блюд</b>: '+number+' шт.<br><b>Сумма</b>: '+price+' руб.<br><a href="/menu/order/" title="Оформить заказ"></a>');
			}else{
				$('#cart').remove();
			}
		},

		fullcartSubmit: function(){
			$('#fullcartForm span.ajaxloader').css({visibility:'visible'});
			var remove=(C.cart.remove_id)?'&remove'+C.cart.remove_id+'=+':'';
			$('#fullcartForm').ajaxSubmit({
				url: './?ajax=2'+remove,
				dataType: 'json',
				success: function(json){
					C.cart.total=json.cp;
					$('#fullcart').remove();
					$('#contentBox').prepend(json.html);
					C.cart.events();
					//также изменяем текст маленькой корзины
					C.cart.shortRedraw(json.cn, json.cp);
					//также скрываем/показываем формы заказа/местоположения
					$('#insideMkadInput').trigger('focus');
				}
			});
			return false;
		},

		changeAddrSbox: function(){
			try{
				var elements=document.forms['orderForm'].elements;
				var sbox_selected_index=elements['customers_address'].options.selectedIndex;
				elements['cart[address]'].disabled=(sbox_selected_index>0);
			}catch(e){/*alert(e)*/}
		},

		addrFocusBlur: function(elem,type){
			if(type==1){
				if(elem.value=='или введите новый'){
					elem.value='';
				}
			}else{
				if(elem.value==''){
					elem.value='или введите новый';
				}
			}
		}
	},

	menu: {
		contentbox_top: null,
		contentbox_left: null,
		is_animating: false,
		timer: null,
		init: function(){
			if($('#menuBox').length==0){return;}
			//добавляем слой для показа больших картинок и вешаем на него событие 
			$('<div id="bigMenuImageBox"><div class="shadow1"></div><div class="shadow2"></div><div class="pad"><img src="/img/void.gif"></div></div>').appendTo('body').mouseout(function(){
				$('#bigMenuImageBox').hide();
			}).click(function(){
				// $('#bigMenuImageBox').hide();
			}).hide();
			//добавляем события для показа больших картинок
			C.menu.events();
		},

		events: function(){
			$('#menuBox a[rel]').bind('click mouseover mouseout', function(evt){
				evt.preventDefault();
				if(evt.type == 'mouseout'){
					if(C.showBig_timer){
						clearTimeout(C.showBig_timer)
						delete(C.showBig_timer)
					}
				}else if(evt.type == 'mouseover'){
					var $link=$(this);
					var src=$link.attr('href');
					// var wh=$link.attr('rel').split('\|');
					// var width=parseInt(wh[0]);
					// var height=parseInt(wh[1]);
					var left=$link[0].offsetLeft;//left=left+(50-width/2);
					left+=C.menu.contentbox_left;
					left+=-14;
					var top=$link[0].offsetTop;//top=top+(50-height/2);
					top+=C.menu.contentbox_top;
					top+=-14;
					C.showBig_timer=setTimeout('C.menu.showBig("'+src+'",'+left+','+top+')', 150);
				}
			})
		},

		showBig: function(src,left,top){
			if(C.menu.timer){clearTimeout(C.menu.timer);}
			if(C.menu.is_animating){
				C.menu.timer=setTimeout('C.menu.showBig("'+src+'",'+left+','+top+')',100);
				return;
			}
			var img = new Image();
			img.src = src;
			img.onload = function(){
				C.menu.is_animating=true;
				//помещаем большую картинку в бокс
				$('#bigMenuImageBox img').attr({src:src});
				//помещаем бокс с большой картикой сверху на маленькую картинку
				$('#bigMenuImageBox').css({width:128,height:128,left:left,top:top}).css({display:'block'});
				//включаем анимацию выращивания картинки до ее настоящего размера
				$('#bigMenuImageBox').animate({left:(left-34),top:(top-34),width:196,height:196},300,'linear',function(){
					C.menu.is_animating=false;
				}).css({overflow:'visible'});
			}
		}
	},

	flash: {
		menu_swf: null,//файл меню
		menu_prev: null,//откуда переходим
		menu_current: null,//куда переходим
		map_swf: null,//файл карты
		map_xml: null,//xml карты
		map_small_swf: null,//файл карты
		map_small_xml: null,//xml карты
		html_menu: null,//html-вариант меню

		drawMenu: function(){
			if($('#headFlashBox').length){
				var so = new SWFObject(C.flash.menu_swf, "headFlash", "100%", "283", "8", "#f6f2e7");
				so.addParam('wmode', 'transparent');
				so.addVariable('link_home', ((location.pathname=='/')?'':'/'));
				so.addVariable('link_delivery', '/menu/delivery/');
				so.addVariable('link68', '/');
				so.addVariable('link69', '/restaurants/');
				so.addVariable('link70', '/menu/');
				so.addVariable('link71', '/offers/');
				so.addVariable('link72', '/about/');
				so.addVariable('link100', '/gallery/');
				so.addVariable('link103', '/feedback/');
				so.addVariable('prev', C.flash.menu_prev);
				so.addVariable('current', C.flash.menu_current);
				$('#headFlashBox').append(C.flash.html_menu);
				so.write("headFlashBox");
			}
		},

		drawMoscowMapSmall: function(){
			if($('#moscowmapSmallFlashBox').length){
				var so = new SWFObject(C.flash.map_small_swf, "moscowmapSmallFlash", "180", "235", "8", "#ffffff");
				so.addVariable("path", C.flash.map_small_xml);
				so.addParam("wmode", "transparent");
				so.write("moscowmapSmallFlashBox");
			}
		},

		drawMoscowMap: function(){
			if($('#moscowmapFlashBox').length){
				var so = new SWFObject(C.flash.map_swf, "moscowmapFlash", "500", "650", "8", "#f6f2e7");
				so.addVariable("path", C.flash.map_xml);
				so.addParam("wmode", "transparent");
				so.write("moscowmapFlashBox");
			}
		}
	},

	logreg: {
		init: function(){
			$('#loginBlock span.question').mouseover(function(){
				$('#regAdvantages').show();
			}).mouseout(function(){
				$('#regAdvantages').hide();
			});
		},

		loginFocus: function(elem){
			if(elem.value=='логин'){elem.value=''}
			var ua = navigator.userAgent.toLowerCase();
			if (ua.indexOf('msie') != -1) {
				C.logreg.passwdFocus(0);
			}
		},

		loginBlur: function(elem){
			if(elem.value==''){elem.value='логин'}
		},

		passwdFocus: function(elem){
			if (elem == 0) {
				elem = document.getElementById('pwdField');
			}
			//меняем <input type="text"> на <input type="password">
			var input_name=$(elem).attr('name');
			var new_elem=$('<input type="password" name="'+input_name+'" onblur="C.logreg.passwdBlur(this)">').insertBefore(elem).get(0);
			$(elem).remove();
			var ua = navigator.userAgent.toLowerCase();
			if (ua.indexOf('msie') != -1) {
				return;
			}
			new_elem.focus();
		},

		passwdBlur: function(elem){
			var ua = navigator.userAgent.toLowerCase();
			if (ua.indexOf('msie') != -1) { return; }
			if(!elem.value){
				//меняем <input type="password"> на <input type="text">
				var input_name=$(elem).attr('name');
				var new_elem=$('<input type="text" name="'+input_name+'" value="пароль" onfocus="C.logreg.passwdFocus(this)">').insertBefore(elem).get(0);
				$(elem).remove();
			}
		}
	},

	setCaptchaWidth: function(){
		//если мы на странице комментариев или в обрабной связи, то перемещаем кнопку отправки комментария внутрь span.captcha
		if($('#commentsForm span.captcha').length){
			//$('#commentsForm input.sbmt').appendTo('#commentsForm span.captcha');
			var c = $('#commentsForm input.sbmt')
			c.appendTo('#commentsForm span.captcha'); c.css("width","");
		}else if($('#feedbackBlock span.captcha').length){
			//$('#commentsForm input.sbmt').appendTo('#commentsForm span.captcha');
			var c = $('#feedbackBlock input.sbmt')
			c.appendTo('#feedbackBlock span.captcha'); c.css("width","");
		}
	},
	
	changeCtgComments: function(){
		var $form=$('form#commentsCtg');
		if($form.length){
			$form.find('input[type=submit]').hide();
			$form.find('select').bind('change',function(){
				$form.submit();
			});
		}
	},
	
	maxCommentLength: function(){
		var $form=$('#newCommentForm');
		if($form.length){
			$textarea=$form.find('textarea[name=comments[comment]]');
			if($textarea.length){
				var $parent_span=$textarea.parent().parent().find('span.fieldTxtName');
				var $symbols_left=$(document.createElement('span')).addClass('symbolsLeft').appendTo($parent_span);
				var max=1024;
				$textarea.bind('keyup',function(evt){
					if(this.value.length>max){
						this.value=this.value.substr(0,max);
					}
					$symbols_left.text('осталось символов: '+(max-this.value.length));
				}).trigger('keyup');
			}
		}
	},
	
	anketaStars: function(){
		var span_rate=$('#anketaForm span.rate, #newCommentForm span.rate');
		if(span_rate.length){
			span_rate.each(function(){
				$(this).hide().parent()
					.append($(document.createElement('span')).addClass('star n1'))
					.append($(document.createElement('span')).addClass('star n2'))
					.append($(document.createElement('span')).addClass('star n3'))
					.append($(document.createElement('span')).addClass('star n4'))
					.append($(document.createElement('span')).addClass('star n5'))
					.children('span.star').bind('mouseout mouseover click',function(event){
						var $target=$(event.target);
						var n=parseInt($target.attr('className').substr(6));
						if(event.type=='mouseover'){
							for(var i=0; i<n; i++){
								$target.parent().children('span.star').eq(i).css({backgroundPosition:'left bottom'})
							}
						}else if(event.type=='mouseout'){
							var input_value=($target.parent().children('span.rate').children('input')[0].value || 0);
							for(var i=0; i<5; i++){
								var pos=(i>=input_value)?'left top':'left bottom';
								$target.parent().children('span.star').eq(i).css({backgroundPosition:pos})
							}
						}else if(event.type=='click'){
							$target.parent().children('span.rate').children('input')[0].value=n;
						}
					}).trigger('mouseout');
			});
		}
	},
	
	galleryStars: function(){
		$gallery=$('#galleryPhotos');
		if($gallery.length){
			$gallery.find('div.pair>div.photo span.dateRating').each(function(){
				var rating_rel=$(this).children('span.rating').attr('rel');
				if(rating_rel=='canvote'){
					var $stars=$(document.createElement('span')).addClass('stars').appendTo(this);
					var star_n_initial=0;
					for(var i=1; i<=5; i++){
						var $star=$(document.createElement('span')).addClass('star').attr({rel:'n'+i}).appendTo($stars);
					}
					$stars.children().bind('mouseover click',function(evt){
						var $star=$(evt.target);
						var star_n=parseInt($star.attr('rel').substr(1));
						var photo_rel=$(this).parents('div.photo').attr('rel');
						if(evt.type=='mouseover'){
							$stars.children().each(function(i){
								$(this).css({backgroundPosition: ((i<star_n)?'1px -19px':'1px 0')});
							})
						}else if(evt.type=='click'){
							var $rating=$star.parents('span.dateRating').children('span.rating');
							$rating.children('span.ajaxload').show();
							var id=parseInt(photo_rel.substr(2));
							C.gallery_callbaks[photo_rel]=function(json_r){
								$rating.children('span.ajaxload').hide();
								if(json_r==0){
									//alert('Вы или кто-то другой поставили оценку с этого IP-адреса только что. Пожалуйста, подождите некоторе время.')
									$stars.children().unbind('mouseover mouseout click');
									$stars.fadeOut('slow');
								}else{
									$rating.children('span.value').text(json_r);
									$stars.fadeOut('fast',function(){
										$stars.empty().css({color: '#FFA300', width: 115}).text('Ваш голос учтен!').fadeIn('fast');
									});
								}
							};
							var d1=new Date();
							$.ajax({
								dataType: 'json',
								data: {i:id, n:star_n, action:'vote'},
								success: function(json){
									if(json){
										var json_r=(json.r || 0);
										var call='C.gallery_callbaks["'+photo_rel+'"]("'+json_r+'")';// console.log(call);
										var d2=new Date();
										var mls=d2.getTime() - d1.getTime();
										mls=(mls<1000)?(1000-mls):0;
										setTimeout(call,mls);
									}
								}
							});
						}
					})
				}
			})
		}
	},

	galleryShowOne: function(){
		var id=parseInt(location.hash.substr(6));
		if(id){
			var link=$('#galleryPhotos div.pair > div[rel=id'+id+'] a.preview')[0];
			if(link){
				var cache=Shadowbox.inCache(link);
				if(cache){
					Shadowbox.open(cache);
				}
			}
		}
	},

	galleryHQ: function(){
		var $hq_links=$('#galleryPhotos div.photo a.hq');
		if($hq_links.length){
			$hq_links.bind('click',function(evt){
				evt.preventDefault();
				var rel=$(this).parents('div.photo').attr('rel');
				var photo_id=parseInt(rel.substr(2));
				$.ajax({
					url: '/_scripts/request_hq.php',
					dataType: 'json',
					data: {f:photo_id},
					success: function(json){
						if(json && json.ok){
							alert('После обработки вашего запроса\nссылка на скачивание будет отправлена на ваш E-mail:\n'+json.email);
						}else{
							alert('Извините, для данной фотографии\nизображение в высоком разрешении отсутствует');
						}
					}
				});
			})
		}
	},
	
	headersLinks: function(){
		var $headers_link_menu=$('#pageTitle>h1.si-89, #pageTitle>h1.si-77');
		if($headers_link_menu.length){
			$headers_link_menu.css({cursor:'pointer'}).click(function(){location.href='/menu/'});
		}
	},

	correctPngView: function(){
		if($.browser.msie){
			if($('body.first').length || $('#menuBox').length){
				$('img[src$=png]').each(function(){
					this.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+ this.src+ "',sizingMethod='scale')";
					this.src='/img/void.gif';
				})
			}
		}
	},

	_f: function(){
	}
}

