if(typeof KMNDR == 'undefined'){
	KMNDR = {}
}



jQuery(
	function($){

KMNDR.load_script = function(url, callback){
	if(KMNDR.load_script.loaded[url]){
		callback();
		return false
	}

	KMNDR.load_script.loaded[url] = true;

	var script_tag = document.createElement('script');

	script_tag.type = 'text/javascript';
	script_tag.onload = callback;

	script_tag.onreadystatechange = function(){
		if (this.readyState == 'complete') {
			callback();
		}
	};

	script_tag.src = url;

	document.getElementsByTagName('head')[0].appendChild(script_tag);
};

KMNDR.load_script.loaded = {};


KMNDR.SocialNetworks = {
	VKONTAKTE : 1,
	MAILRU : 2,
	FACEBOOK : 3,
	settings: {
		vkontakte : {
			api_id : 1862298
		},
		mailru : {
			api_id:465812,
			private_key:'00f6d5de4100ccc45554a38bc7606c5c'
		},
		facebook : {
			api_id: 173423772683263
		}
	}
};

KMNDR.AuthPopup = {};

KMNDR.AuthPopup.init = function(){
	var form = $('#auth_popup');
	var auth_window = $('#social_auth .auth_window');
	var social_auth_button = auth_window.find('.social_button');

	$('#social_networks li').click(
		function(){
			var element = $(this);
			var network_id = this.className;

			$('#social_networks li').removeClass('current');

			element.addClass('current');

			$('#social_auth .message').addClass('hidden');

			KMNDR.AuthPopup.preloader.show();
			auth_window.removeClass('hidden');


			auth_window.find('.service_name').text(({
				fb:'Facebook',
				mailru:'Mail.ru',
				vk:'Вконтакте'
			})[network_id]);

			social_auth_button.removeClass('fb mailru').addClass(network_id);

			KMNDR.AuthPopup.auth_method = network_id;

			KMNDR.load_script(
				({
					vk:'http://vkontakte.ru/js/api/openapi.js?123',
					fb:'http://connect.facebook.net/en_US/all.js',
					mailru:'http://cdn.connect.mail.ru/js/loader.js?123'
				})[network_id],function(){

					if (KMNDR.AuthPopup.auth_method == 'mailru') {
						mailru.loader.require('api', function(){
							mailru.connect.init(KMNDR.SocialNetworks.settings.mailru.api_id, KMNDR.SocialNetworks.settings.mailru.private_key);

							mailru.events.listen(mailru.connect.events.login, function(session){
								KMNDR.AuthPopup.make_social_auth(KMNDR.SocialNetworks.MAILRU);
							});
						});
					}

					KMNDR.AuthPopup.preloader.hide();
				}
			);
		}
	);

	social_auth_button.click(
		function(){
			KMNDR.AuthPopup.preloader.show();

			if(KMNDR.AuthPopup.auth_method == 'vk'){
				VK.init({
					apiId: KMNDR.SocialNetworks.settings.vkontakte.api_id,
					nameTransportPath: '/_social/vk_xd_receiver.html'
				});

				VK.Auth.login(
					function(){
						KMNDR.AuthPopup.make_social_auth(KMNDR.SocialNetworks.VKONTAKTE);
					}
				);

			} else if(KMNDR.AuthPopup.auth_method == 'fb'){
				FB.init({
                            appId:KMNDR.SocialNetworks.settings.facebook.api_id ,
                            status:false,
                            cookie: true,
                            oauth:true
                        });

//				if(jQuery.browser.opera){
//				    FB.XD._transport="postmessage";
//				    FB.XD.PostMessage.init();
//				}


				if(typeof (FB.authResponse) == 'undefined'){
					FB.login(
						function(){
							KMNDR.AuthPopup.make_social_auth(KMNDR.SocialNetworks.FACEBOOK);
						}
					,{scope:'email, user_about_me'});
				} else {
					KMNDR.AuthPopup.make_social_auth(KMNDR.SocialNetworks.FACEBOOK);
				}

			} else if(KMNDR.AuthPopup.auth_method == 'mailru'){
				mailru.connect.login();
			}
		}
	);

	$('#social_auth .auth_window .close').click(
		function(){
			KMNDR.AuthPopup.reset_auth();
		}
	);

	var confirm_form = {};

	this.confirm_form = confirm_form;

	confirm_form.main_form = jQuery('#social_additional_form');
	confirm_form.forms = confirm_form.main_form.find('.form');
	confirm_form.forms_control = confirm_form.main_form.find('ul.controls li');
	confirm_form.continue_btn = confirm_form.main_form.find('.continue');

	confirm_form.show_form = function(index){
		this.forms_control.removeClass('current').eq(index).addClass('current');
		this.forms.addClass('hidden').eq(index).removeClass('hidden');

		this.form_mode = index;
		this.continue_btn.attr('disabled','disabled');
	};

	var validateEmail = function(){
		var value = jQuery(this).val();

		if(!(/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i.test(value)) || value.lenght == 0){
			confirm_form.continue_btn.attr('disabled','disabled');
			return
		}

		confirm_form.continue_btn.removeAttr('disabled');
	};

	confirm_form.main_form.find('input[name=email]').change(validateEmail).keyup(validateEmail);

	var login_fields = confirm_form.main_form.find('#login_field, #password_field');

	var validateLogin = function(){
		var input = jQuery(this);
		if(input.val().length >= 3){
			input.addClass('validated');
		} else {
			input.removeClass('validated');
		}

		if(
			login_fields.eq(0).hasClass('validated') &&
			login_fields.eq(1).hasClass('validated')
		){
			confirm_form.continue_btn.removeAttr('disabled');
		} else {
			confirm_form.continue_btn.attr('disabled','disabled');
		}
	}

	login_fields.change(validateLogin).keyup(validateLogin);

	confirm_form.forms_control.click(
		function(){
			var control = jQuery(this);

			if(KMNDR.AuthPopup.auth_process_status == 'is_registered'){
				if(control.hasClass('selected')){
					confirm_form.forms.addClass('hidden');
					control.removeClass('selected');

					confirm_form.form_mode = 2;

					confirm_form.continue_btn.removeAttr('disabled');
					return false
				}
			}

			confirm_form.show_form(control.is('#show_email_enter_form')?0:1)
		}
	);

	confirm_form.continue_btn.click(
		function(){
			KMNDR.AuthPopup.preloader.show();

			confirm_form.continue_btn.attr('disabled','disabled');

			jQuery.ajax(
				{
					url:'/ajax_headler/social/email_confirm.php',
					dataType:'json',
					data: (
						function(){
							var data = {};

							data.id = KMNDR.AuthPopup.current_social_type_id;

							if(confirm_form.form_mode == 0){
								data.form_type = 'new_mail';
								data.email = confirm_form.main_form.find('input[name=email]').val();
							} else if(confirm_form.form_mode == 1){
								data.form_type = 'auth';
								data.login = jQuery('#login_field').val();
								data.password = jQuery('#password_field').val();
							} else {
								data.form_type = 'new_user';
							}

							return data
						}
					)(),
					success: function(status){

						status = status.status;

						if(status == 'success'){
							location.reload(true);
							return
						}

						KMNDR.AuthPopup.preloader.hide();

						if(status == 'require_email'){
							confirm_form.show_form(1);
							return
						}

						if(status == 'error'){
							jQuery('#allready_registered_form .err').removeClass('hidden');
							return
						}


					}
				}
			);

		}
	);

	var countries_loaded = false;

	$('#auth_popup .tabs li').click(
		function(){
			var element = $(this),
				registration_mode = element.hasClass('registration');

			if(registration_mode){
				$('#auth_popup').addClass('register_form_mode');

				if(!countries_loaded){
					$.ajax({
						url:'/ajax_headler/city/get_country_register.php',
						dataType:'html',
						success: function(html){
							$('#register_country_select').append(html);
							countries_loaded = true;
						}
					});
				}
			} else {
				$('#auth_popup').removeClass('register_form_mode');
			};

			$('#auth_popup .tabs li').removeClass('current');
			element.addClass('current');

			$('#auth_popup .auth_form_content').addClass('hidden').filter(
				registration_mode?'#auth_register_content':'#auth_login_content'
			).removeClass('hidden');

		}
	);

	form.find('.tabs li.registration .pseudo').click(
		function(evt){
			form.find('.tabs li').eq(0).click();
			return false
		}
	);

	$('#register_user').click(
		function(){
			var fields = $('#auth_register_content .field:not(.submit)'),
				validation_funcs = {
					email: function(value){
						return  (/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i.test(value))
					},
					text: function(value){
						return !!(jQuery.trim(value).length)
					},
					password_repeat: function(value){
						return (value == $('#registration_password').val())
					},
					select_item: function(value){
						return !!(parseInt(value))
					},
					city:function(value){
						return !!(parseInt($('#register_city_id').val()))
					}
				},

				checked_fields = 0;

			fields.each(
				function(){
					var element = $(this),
						field_type = this.className.match(/(\w+)_field/)[1],
						input_value = element.find('input , select').val();

					if((validation_funcs[field_type])(input_value)){
						element.removeClass('wrong');
						checked_fields++;

						if(field_type=='email'){

							$('#register_user').attr('disabled','disabled').val('Пожалуйста, подождите');

							setTimeout(
								function(){

									$.ajax({
										url:'/ajax/users/check_email.php',
										data: {
											email:input_value
										},
										dataType:'json',
										success: function(json){
											if(json.status == 'ok'){

												if(checked_fields == fields.size()){
													$('#auth_register_content').submit()
												} else {
													$('#register_user').removeAttr('disabled').val('Зарегистрироваться');
												}

											} else {

												element.addClass('wrong').find('.err_msg').html('Пользователь с таким e-mail уже зарегистрирован. <br />Если это вы, то перейдите на <span class="pseudo to_login_form">форму входа</span>.');
												$('#register_user').removeAttr('disabled').val('Зарегистрироваться');
											}

										}
									});

								},500
							)

						}

					} else {
						if(field_type == 'email'){
							element.find('.err_msg').text('Введите свой настоящий e-mail.');
						}

						element.addClass('wrong');
					}

				}
			);

			return false
		}
	);


	$('#auth .links, .let_social_auth , .lets_social').click(function(){
		KMNDR.AuthPopup.show();

		if($(this).hasClass('register')){
			form.find('.tabs li').eq(1).click()
		}

		return false
	});

	$('#register_country_select').change(
		function(){
			$('#register_user').attr('disabled','disabled').val('Пожалуйста, подождите');

			$.ajax({
				url:'/ajax_headler/city/get_city_option.php',
				data:{
					country:$(this).val()
				},
				dataType: 'html',
				success: function(html){
					$('#register_user').removeAttr('disabled').val('Зарегистрироваться');
					$('.field.city_field').removeClass('hidden');
					$('#register_city_select').html('<option value="0">Выберите город</option>'+html)
				}
			});

		}
	);

	var register_city_field = $('.smart_field');
	var register_city_status = false;

	register_city_field.find('.mode_control').click(
		function(){
			register_city_status = !register_city_status;

			if(register_city_status == true){
				$(this).text('Основные города');
			} else {
				$(this).text('Все города');
			}

			register_city_field.find('.mode').addClass('hidden').eq(register_city_status?1:0).removeClass('hidden');

		}
	);

	$('#register_city_name').citySelector(
		{
			ajax_url:'/ajax_headler/city/response_add.php',
			params: {
				country: function(){
					return $('#register_country_select').val()
				}
			},
			click_callback:function(input,close_suggest){
				$('#register_city_id').val( this[0].onclick() );
				input.val(this.find('.city').text());

				close_suggest();
			}
		}
	);

	$('#register_city_select').change(function(){
		$('#register_city_id').val( $(this).val() );
	});

	form.find('.close_auth_popup').click(
		function(){
			form.addClass('hidden');
			$('#page_fader').addClass('hidden');
			KMNDR.AuthPopup.reset_auth();
		}
	);

	form.find('.go_registration').click(
		function(){
			form.find('.tabs li').eq(1).click()
		}
	);


	$('.auth_required').live('click',
		function(){
			KMNDR.AuthPopup.show();
			KMNDR.AuthPopup.redirect_to = this.href;
			return false
		}
	);

	$('#plain_auth').submit(
		function(){
			$('.preloader_layer').removeClass('hidden');

			function animatePreloader() {
				$('#plain_auth .preloader').css({
					backgroundPosition:'-133px 0px'
				}).animate({
					backgroundPosition:'140px 0px'
				},1100,function(){
					animatePreloader();
				});
			}

			animatePreloader();
		}
	);

	var setAuthType = function(value){
		if(/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i.test(value)){
			$('#plain_auth input[name=auth_type]').val('email');

			$('#plain_auth input[name=USER_LOGIN]').attr('name','openid_url');
			$('#plain_auth input[name=USER_PASSWORD]').attr('name','pass');
		} else {
			$('#plain_auth input[name=auth_type]').val('login');

			$('#plain_auth input[name=openid_url]').attr('name','USER_LOGIN');
			$('#plain_auth input[name=pass]').attr('name','USER_PASSWORD');
		}
	};

	$('input[name=USER_LOGIN]').change(
		function(){
			setAuthType(this.value);
		}
	).keyup(
		function(){
			setAuthType(this.value);
		}
	);
};

KMNDR.AuthPopup.reset_auth = function(){
	$('#social_networks li').removeClass('current');
	$('#social_auth .message, #plain_auth').removeClass('hidden');
	$('#social_auth .auth_window').addClass('hidden');

	KMNDR.AuthPopup.preloader.hide();
};

KMNDR.AuthPopup.make_social_auth = function(social_type_id){


	KMNDR.AuthPopup.current_social_type_id = social_type_id;

	KMNDR.AuthPopup.confirm_form.continue_btn.attr('disabled','disabled');
	KMNDR.AuthPopup.confirm_form.main_form.addClass('hidden');

	jQuery.ajax(
		{
			url:'/ajax_headler/social/social_request.php',
			dataType:'json',
			data: {
				id:social_type_id
			},
			success : function(status){
				status = status.status;
				/* Если статус success - перезагружаем страницу */
				if(status == 'success'){
					if(typeof KMNDR.AuthPopup.redirect_to != 'undefined'){
						location = KMNDR.AuthPopup.redirect_to
					} else {
						location.reload(true);
					}

					return
				}

				KMNDR.AuthPopup.preloader.hide();

				/* Показываем форму подтверждения*/

				KMNDR.AuthPopup.confirm_form.main_form.removeClass('hidden');

				KMNDR.AuthPopup.auth_process_status = status;

				/* Если нет email - показываем форму еmail */
				if(status == 'require_email'){
					$('#plain_auth, #social_auth').addClass('hidden');

					KMNDR.AuthPopup.confirm_form.forms_control.removeClass('hidden');
					KMNDR.AuthPopup.confirm_form.main_form.find('.enter_email').removeClass('hidden');

					return
				}

				if(status == 'is_registered'){
					$('#email_enter_form').addClass('hidden');
					KMNDR.AuthPopup.confirm_form.forms_control.eq(1).removeClass('hidden').addClass('current');

					KMNDR.AuthPopup.confirm_form.continue_btn.removeAttr('disabled');
				}

			}
		}
	);

};

KMNDR.AuthPopup.preloader = {
	show: function(){
		if(this.stopped){
			this.stopped = false;
			return false
		}

		$('#social_auth .auth_window .w').addClass('hidden');


		$('#social_auth .auth_window .preloader').removeClass('hidden').css({
			backgroundPosition:'-133px 0px'
		}).animate({
			backgroundPosition:'140px 0px'
		},1100,function(){
			KMNDR.AuthPopup.preloader.show();
		});

	},
	hide: function(){
		$('#social_auth .auth_window .w').removeClass('hidden');
		$('#social_auth .auth_window .preloader').addClass('hidden');
		this.stopped = true;
	}
};

KMNDR.AuthPopup.show = function(){
	var popup = $('#auth_popup');

	$('#page_fader').removeClass('hidden');
	popup.removeClass('hidden');

	var setPosition = function(){
		popup.css(
			'top', $(document).scrollTop() + 40
		)
	};
//
//	setPosition();
//
//	$(document).scroll(function(){
//		setPosition();
//	});
//
};


		KMNDR.AuthPopup.init();
	}
);
