(function($) {
	/** 
	 * Plugin base constructor 
	 * @param [] options 
	 * @return void 
	*/
	$.fn.implementPopup = function(options) {
		// build main options before element iteration
		var opts = $.extend({}, $.fn.implementPopup.defaults, options);
		
		// iterate and reformat each matched element
		return this.each(function() {
			_this = $(this);
			
			// build element specific options
			var o = $.meta ? $.extend({}, opts, _this.data()) : opts;
			
			// implement popup
			$.fn.implementPopup.setPosition(_this);
			_this.addClass(o.hiddenClass);
			
			// implement overlay
			var _overlay = implementOverlay(o.overlayOpacity);
			
			// set popup position on window resize
			$(window).resize(function(){
				if(!_this.hasClass(o.hiddenClass)) $.fn.implementPopup.setPosition(_this);
			});
			
			// set popup position on window scroll (IE)
			$(window).scroll(function(){
				if(!_this.hasClass(o.hiddenClass) && $.browser.msie) $.fn.implementPopup.setPosition(_this);
			});
			
			// hide popup by clickin' overlay
			_overlay.click(function(){
				var _popup = $(o.popupBox).filter(':visible');
				$.fn.implementPopup.hidePopup(_popup);
			});
			
			// hide popup by clickin' "Close" button
			$(o.closeLink,_this).click(function(){
				var _popup = $(o.popupBox).filter(':visible');
				$.fn.implementPopup.hidePopup(_popup);
				return false;
			});
		});
	};
	
	/**
	 * private
	 * overlay implementation
	*/
	function implementOverlay(_opacity) {
		overlayBox = $('#'+$.fn.implementPopup.defaults.overlayId);
		if(!overlayBox.length) {
			overlayBox = $('<div id="' + $.fn.implementPopup.defaults.overlayId + '"></div>');
			$('body').append(overlayBox);
		}
		if(!overlayBox.hasClass($.fn.implementPopup.defaults.implementedClass)) {
			overlayBox.css({
				opacity:_opacity,
				display:'none'
			}).addClass($.fn.implementPopup.defaults.implementedClass);
		}
		return overlayBox;
	};
	
	/**
	 * public
	 * popup position
	*/
	$.fn.implementPopup.setPosition = function(popupItem) {
		var _height = 0;
		var _width = 0;
		var _minWidth = $($.fn.implementPopup.defaults.pageFirstElement).outerWidth();
		if (window.innerHeight) {
			_height = window.innerHeight;
			_width = window.innerWidth;
		} else {
			_height = document.documentElement.clientHeight;
			_width = document.documentElement.clientWidth;
		}
		var _thisHeight = popupItem.outerHeight();
		var _page = $('body');
		if (popupItem.length) {
			var _overlay = $('#'+$.fn.implementPopup.defaults.overlayId);
			if(_overlay.length && $.browser.msie){
				if (_height > _page.innerHeight()) {
					_overlay.css('height',_height);
				} else {
					_overlay.css('height',_page.innerHeight());
				}
				if (_width < _minWidth) {
					_overlay.css('width',_minWidth);
				} else {
					_overlay.css('width','100%');
				}
			}
			if (_height > _thisHeight) {
				if (!window.innerHeight) {
					popupItem.css({
						position:'absolute',
						top: (document.documentElement.scrollTop + (_height - _thisHeight) / 2)+"px"
					});
				} else {
					popupItem.css({
						position:'fixed',
						top: ((_height - popupItem.outerHeight()) / 2)+"px"
					});
				}
			} else {
				popupItem.css({
					position:'absolute',
					top: 0
				});
				if($.browser.msie){
					_overlay.css('height',_thisHeight);
				}
			}
			if (_width > popupItem.outerWidth()) popupItem.css({left:(_width - popupItem.outerWidth()) / 2 + "px"});
			else popupItem.css({position:'absolute',left: 0});
		}
	};
	
	/**
	 * public
	 * show popup
	*/
	$.fn.implementPopup.showPopup = function(popupItem) {
		var _overlay = $('#'+$.fn.implementPopup.defaults.overlayId);
		if(_overlay.length){
			_overlay
				.css({
					display:'block',
					opacity:0
				})
				.animate({
					opacity:$.fn.implementPopup.defaults.overlayOpacity
				},$.fn.implementPopup.defaults.showOverlaySpeed);
		}
		
		popupItem.css({
			marginTop:'-' + $.fn.implementPopup.defaults.topMargin + 'px',
			opacity:0
		}).removeClass($.fn.implementPopup.defaults.hiddenClass);

		$.fn.implementPopup.setPosition(popupItem);
		popupItem.animate({
			marginTop:0,
			opacity:1
		},$.fn.implementPopup.defaults.showPopupSpeed);
		
	};
	
	/**
	 * public
	 * hide popup
	*/
	$.fn.implementPopup.hidePopup = function(popupItem,callbackFunction) {
		popupItem.animate({
			marginTop: '-=' + $.fn.implementPopup.defaults.topMargin,
			opacity:0
		},$.fn.implementPopup.defaults.hidePopupSpeed,function(){
			popupItem.addClass($.fn.implementPopup.defaults.hiddenClass).css({
				opacity:1,
				marginTop:0
			});
		});
		var _overlay = $('#'+$.fn.implementPopup.defaults.overlayId);
		if(_overlay.length){
			_overlay.animate({
				opacity:0
			},$.fn.implementPopup.defaults.hideOverlaySpeed,function(){
				_overlay.css({
					opacity: $.fn.implementPopup.defaults.overlayOpacity
				}).hide();
				if(callbackFunction && jQuery.isFunction(callbackFunction)) {
					callbackFunction.apply(popupItem);
				}
			});
		}
	};
	
	/** 
	 * default options for plugin 
	 * public 
	 * @var array defaults
	*/
	$.fn.implementPopup.defaults = {
		hiddenClass: 'hidden-popup', // hidden popup className, 'hidden-popup'
		overlayId: 'black-overlay', // overlay Id
		popupBox: 'div.popup', // popup element
		closeLink: 'a.xclose', // close popup link
		implementedClass: 'implemented', // popup ready class
		pageFirstElement: 'div.bg-page', // body first child element
		topMargin: 50, // popup animation top offset, 50px
		overlayOpacity: .6, // overlay opacity, 0.6
		showOverlaySpeed: 200, // overlay appear speed, 200ms
		showPopupSpeed:200, // popup appear speed, 200ms
		hideOverlaySpeed: 200, // overlay disappear speed, 200ms
		hidePopupSpeed:200 // popup disappear speed, 200ms
	};
})(jQuery);

$(document).ready(
function(){
	
	var popupCode = $('#code-popup');

	if(popupCode) popupCode.implementPopup({
		pageFirstElement: 'body > div:eq(0)', // body first child element
		topMargin: 50, // popup animation top offset, 50px
		overlayOpacity: .8, // overlay opacity, 0.6
		showOverlaySpeed: 200, // overlay appear speed, 200ms
		showPopupSpeed:200, // popup appear speed, 200ms
		hideOverlaySpeed: 200, // overlay disappear speed, 200ms
		hidePopupSpeed:200 // popup disappear speed, 200ms
	});
	

	$('div#index').pngFix();

	
	$('input#promo_code').focus(
		function()
		{
			if(!auth)
			{
				$(this).val('');
				alert('Для ввода кода Вам необходимо зарегистрироваться/авторизоваться');
				$(this).blur();
			}
			else if(!phone)
			{
				if($.browser.msie && $.browser.version=="6.0")
					$('#code-popup').removeClass('hidden-popup');
				else
					$.fn.implementPopup.showPopup(popupCode);
				
				$(this).blur();
			}
		});
	
	$('#setphone').click(
		function()
		{
			var mobile = $('#mobile').val();
			
			if(mobile == '')
				alert('Вы не ввели номер телефона');
			else
				$.ajax({
					url: '/request/setmobile',
					type: 'POST',
					data: {mobile: mobile},
					dataType: 'json',
					error: function(){ alert('Ошибка'); },
					success: function(resp)
					{
						if(!resp.result)
							alert(resp.msg);
						else
						{
							$('a.xclose').click();
							phone = 1;
							$('input#promo_code').focus();
						}
							
					}
				});
			
			return false;
		});
	
	
	$('a#enter_code').click(
		function()
		{
			if(!auth)
				alert('Для ввода кода Вам необходимо зарегистрироваться/авторизоваться');
			else
			{
				var code = $.trim($('input#promo_code').val());
				if(code == '')
					alert('Пустой код');
				else
				{
					$('#code-loader').show();
					$.ajax(
					{
						type: 'POST',
						url: '/request/sendcode',
						data: {code: code},
						dataType: 'json',
						success:
							function(resp)
							{
								$('#code-loader').hide();
								
								if(!resp.result)
									alert(resp.msg);
								else
    								alert(resp.data.msg);
							}
					});
				}
			}
			
			return false;
		});

	$('a#reg_link').click(
		function()
		{
			$('div#registration').slideDown(800);
			return false;
		});
		
	$('a#cancel_registration').click(
		function()
		{
			$('div#registration').slideUp(800);
			$("form#form_reg")[0].reset();
			return false;
		});
		
	$('select#select_city').change(
		function()
		{
			if($(this).val() == 0)
				$('#other_city_title, #other_city_input').show();
			else
				$('#other_city_title:visible, #other_city_input:visible').hide();
		});
	
	$('a#remind_password_link').click(
		function()
		{
			$('div#remind_password').slideDown(400);
			return false;
		});
	
	$('a#cancel_remind_password').click(
		function()
		{
			$('div#remind_password').slideUp(400);
			$('div#remind_password input').val('');
			return false;
		});
		
	$('a#send_remind_password').click(
		function()
		{
			var email = $('div#remind_password input').val();
			
			$.ajax(
					{
						type: 'POST',
						url: '/request/remindpassword',
						data: {email: email},
						success:
							function(response)
							{
								var resp = $.toJSON(response);
								if(!resp.result)
									alert(resp.msg);
								else
								{
									$('div#remind_password input').val('');
									$('div#remind_password').slideUp(400);
    								alert('Ваш логин и пароль выслан на e-mail');
								}
							}
					});
			
			return false;
		});
		
	$('div#expert_questions').jScrollPane();
	$('div#masterclass_questions').jScrollPane();

/*
	$("#content").sortable({
		opacity: 0.5,
		handle: 'div.left_col',
		start:
			function(elem,ui)
			{
				//alert(elem+ui);
			}
	});
	
	$("#content").disableSelection();
*/

	$('form#search_form').submit(
		function()
		{
			var srch = $('input#search_text').val();
			
			if(srch.length < 3)
				alert('Запрос должен содержать не менее 3 символов');
			else if(srch.toLowerCase() == 'zlaty bazant')
				egg();
			else
				return true;
				
			return false;
		});
		
	$('a#search_link').click(
		function()
		{
			var srch = $('input#search_text').val();
			
			if(srch.length < 3)
				alert('Запрос должен содержать не менее 3 символов');
			else if(srch.toLowerCase() == 'zlaty bazant')
				egg();
			else
				$('form#search_form').submit();
				
			return false;
		});
		
	function egg()
	{

		var flashvars = {
			file_init: "/flash/init.xml",
			file_get_rating: "/xml/gamerating",
			file_send_result: "/xml/gameresult"
		};
		
		var params = {
			menu: "false",
			scale: "noScale",
			allowFullscreen: "true",
			allowScriptAccess: "always",
			bgcolor: "#249440",
			align: "middle",
			width: "100%",
			height: "100%",
			wmode: "transparent"
		};
		
		$('body').append($('<div class="egg"><div id="egg" style="width: 100%; height: 100%;"></div></div>'));
		swfobject.embedSWF("/flash/game.swf", "egg", "100%", "100%", "9.0.0", "/flash/expressInstall.swf", flashvars, params, {});
		
		if($.browser.msie)
			$('div.egg').css({'top': $(window).scrollTop()});
	}
	
	if($.browser.msie)
		$(window).scroll(
		function()
		{
			$('div.egg').css({'top': $(window).scrollTop()});
		});
	
});

	
	
	function exitGame()
	{
		$('div.egg').remove();
	}
