$(document).ready(function(){
	
	if($('#videotur').length != 0){
		
		var data = [];
		
		$('#videotur #themes .slide').each(function(){
			data.push({"content": '<ul>' + $(this).html() + '</ul>'});
		});
		$('#videotur #themes').agile_carousel({
		    carousel_data:data,
		    carousel_outer_height: 240,
		    carousel_height: 210,
		    slide_height: 210,
		    carousel_outer_width: 1000,
		
		    slide_width: 1000,
		    transition_type: "fade",
		    continuous_scrolling: true,
			control_set_1: "numbered_buttons",
		    timer: 7000
		});
	}
	
	if($('#top_banners').length != 0){
		var data = [
			{"content": $('#slide1').html()},
			{"content": $('#slide2').html()}
		];
		
		$('#top_banners').agile_carousel({
		    carousel_data:data,
		    carousel_outer_height: 420,
		    carousel_height: 420,
		    slide_height: 420,
		    carousel_outer_width: 1033,
		
		    slide_width: 1000,
		    transition_type: "fade",
		    continuous_scrolling: true,
			control_set_1: "numbered_buttons",
		    timer: 7000
		});
	}

	validateSignin();
	
	if ($("#name").length) {
		$("#name").focus();
	}
	
	$('.add_file').click(function(){
		$('#divfile input').trigger('click');
		return false;
	});

	var window_signin = false;
	$('#menu-li_signin:not(.isauth), #menu-li_signin_bottom:not(.isauth), .signin-lnk').live('click',function(){
		
		
		if (window_signin === false) {
			window_signin = $("#dialog").html();
			$.fancybox({
				content: $("#dialog #signin_float"),
				//overlayColor: '#eff3f6',
				centerOnScroll: true,
				padding: 0
			});
		} else {
			
			$.fancybox({
				content: window_signin,
				//overlayColor: '#eff3f6',
				centerOnScroll: true,
				padding: 0
			});
			
		}
		validateSignin();
		$("#signin_float #email").focus();
		return false;
	});
	
	$('#close_button').click(function(){
		$('#dialog').hide();
		return false;
	});	
	
	/******************* Questions *********************/
	
	
	$("#questions_list p").hide();
	
	
	$("#questions_list a").click(function(){
		var answer = $(this).parent().find('p');
		var hiddenHeight = answer.height();
		if (answer.is(':hidden')) {
			$("#questions_list p").not(':hidden').slideUp('slow');
			answer.slideDown();
		}
		else 
			answer.slideUp();
	});
	
	if($('#questions_list').length != 0){
		var anchor = document.location.hash.replace('#','');
		$('a[name="'+anchor+'"]').click();
	}
	
	
	
	/****************** SignUp ************************/
	function validateSignin(){
		var signinValidator = $("#signin form, #signin_float form").validate({
			submitHandler: function(form){
				$(form).ajaxSubmit({
					success: function(result, b, c){
						try {
							var output = jQuery.parseJSON(result);
							if (output.success != undefined && output.success == true) {
								var site = output.site;
								window.location = site;
							}
							else {
								signinValidator.showErrors({
									"email": view.translate("Неправильное значение email/пароль")
								});
							}
						} 
						catch (e) {
							$.fancybox({
								content: result
							});
						}
					}
				})
			},
			success: function(label){
				$(label).parent().find("div").addClass('success_icon');
			},
			focusInvalid: false,
			focusCleanup: true,
			rules: {
				email: {
					required: true,
					email: true
				},
				password: {
					required: true,
					minlength: 6
				}
			},
			messages: {
			
				email: {
					required: view.translate("Пожалуйста, укажите email адрес"),
					email: view.translate("Неверный формат почты")
				},
				password: {
					required: view.translate("Пожалуйста, введите пароль"),
					minlength: view.translate("Пароль должен быть не менее 6 символов")
				}
			},
			errorPlacement: function(error, element){
				error_item = element.parent().parent().find(".state_field");
				error.appendTo(error_item);
			},
			
			highlight: function(element, errorClass, validClass){
				$(element).parent().parent().find(".state_field").addClass('red');
				$(element).parent().find("div").addClass('error_icon');
			},
			unhighlight: function(element, errorClass, validClass){
				$(element).parent().parent().find(".state_field").removeClass('red');
				$(element).parent().find("div").removeClass('error_icon');
			}
		});
	}
	
jQuery.validator.addMethod("subdomain", function(value, element) { 
		
  		return  this.optional(element) || 
		/^(?:http\:\/\/)?(?:www\.)?([a-z0-9][a-z0-9-]{0,62}[a-z0-9])(?:\.nethouse)?(?:\.ru)?$/i.test(value); 
	}, view.translate("Введите корректное имя сайта"));	

jQuery.validator.addMethod("subdomainlength", function(value, element, params) { 	
		matches = value.match(/^(?:http\:\/\/)?(?:www\.)?([a-z0-9][a-z0-9-]{0,62}[a-z0-9])(?:\.nethouse)?(?:\.ru)?$/i);
		value = matches[1];
  		return  this.optional(element) || (value.length >= params[0] && value.length <= params[1]); 
	}, view.translate("Длина адреса от {0} до {1} символов"));	

jQuery.validator.addMethod("letter", function(value, element){
	return this.optional(element) ||
		/^[a-zа-яё\s-]+$/i.test(value);
}, view.translate("Поле должно состоять только из букв"));	

jQuery.validator.addMethod("remote_validate", function(value, element, param){

		var errorMessage = param[1];
		param = param[0];

		if ( this.optional(element) )
			return "dependency-mismatch";

		var previous = this.previousValue(element);
		if (!this.settings.messages[element.name] )
			this.settings.messages[element.name] = {};
		previous.originalMessage = this.settings.messages[element.name].remote;
		this.settings.messages[element.name].remote = previous.message;

		param = typeof param == "string" && {
			url:param
		} || param;

		if ( this.pending[element.name] ) {
			return "pending";
		}
		if ( previous.old === value ) {
			return previous.valid;
		}

		previous.old = value;
		var validator = this;
		this.startRequest(element);
		startAjaxRequest(element);
		var data = {};
		data[element.name] = value;
		$.ajax($.extend(true, {
			url: param,
			mode: "abort",
			port: "validate" + element.name,
			dataType: "json",
			data: data,
			cache:false,
			timeout: 5000,
			complete: function(jqXHR, textStatus) {
				stopAjaxRequest(element);
				validator.showErrors();
				if (textStatus != 'success') {
					validator.stopRequest(element);
					alert(view.translate('При проверке данных произошла ошибка, попробуйте повторить позже'));
				}
			},
			success: function(response,textStatus, jqXHR) {
				//validator.settings.messages[element.name].remote = previous.originalMessage;				
				var valid = response === true;
				if ( valid ) {
					var submitted = validator.formSubmitted;
					validator.prepareElement(element);
					validator.formSubmitted = submitted;
					validator.successList.push(element);
					validator.showErrors();
				} else {
					var errors = {};
					var message = response || validator.defaultMessage( element, "remote" );
					errors[element.name] = errorMessage;/*previous.message = $.isFunction(message) ? message(value) : message;*/
					validator.showErrors(errors);
				}
				previous.valid = valid;
				validator.stopRequest(element, valid);
				stopAjaxRequest(element);
			}
		}, param));
		return "pending";

});

	var startAjaxRequest = function(element){
		$(element).parent().find("div").addClass('pending_icon');
	};
	
	var stopAjaxRequest = function(element){
		$(element).parent().find("div").removeClass('pending_icon');
	};
	
	var signupValidElements = [];
	
	function isValidSignupForm()
	{
		var fields = ['name','email','password','repeat_password','company','site','agreement'];
		for (i in fields) {
			if (signupValidElements[ fields[i]] === undefined || signupValidElements[ fields[i]] == 0) {
				$("#submit").parent().addClass('disable');
				return false;
			}
		}
		$("#submit").parent().removeClass('disable');
		return true;
	}
	
	var signupValidator = $("#signup form").validate(
	{
		success:function(label) {
			if ($(label).parents('#offert').length) {
				var id = 'agreement';
			} else {
				var id = $(label).parents('.info_field').parent().find('input').attr('id');
			}
			$(label).parents('.info_field').parent().find('div.element div').addClass('success_icon');
			
			if (signupValidElements[id] == undefined || signupValidElements[id] == 0) {
				signupValidElements[id] = 1;
			}
			isValidSignupForm();
		},
		focusInvalid : false,
		focusCleanup : true,
		onclick:function(a){
			signupValidator.element('#' + $(a).attr('id'));
		},
		rules: {
			name: {
				required: true,
				maxlength: 60,
				letter: true
			},
			email: {
				required: true,
				email: true,
				remote_validate: ["/signup/validatemail", view.translate("Такой email уже зарегистрирован")]
			},
			password: {
				required: true,
				minlength: 6
			},
			repeat_password: {
				required:true,
				equalTo: "#password"
			},
			agreement: {
				required: true
			},			
			company: {
				required: true
			},
			'captcha[input]': {
				required: true
			},
			site: {
				required: true,
				subdomain: true,
				subdomainlength: [6, 64],
				remote_validate: ["/signup/validatesite", view.translate("Адрес сайта занят")]			  			  		  
			}
		},
		messages: {
			name: {
				required: view.translate("Введите Ваше имя"),
				maxlength: view.translate("Максимальная длина") + " - {0} " + view.translate("символов")
			},
			email: {
				required: view.translate("Пожалуйста, укажите email адрес"),
				email: view.translate("Неверный формат почты"),
				remote_validate: view.translate("Такой email уже зарегистрирован")
			},
			password: {
				required: view.translate("Введите пароль"),
				minlength: view.translate("Пароль должен быть не менее 6 символов")
			},
			repeat_password: {
				required: view.translate("Введите пароль"),
				equalTo: view.translate("Подтвердите пароль")
			},
			agreement: {
				required: view.translate("Подтвердите условия пользовательского соглашения")
			},
			company: {
				required: view.translate("Введите название компании")
			},
			'captcha[input]': {
				required: view.translate("Обязательное поле")
			},
			site: {
				required: view.translate("Введите адрес сайта"),
				subdomainlength: view.translate("Длина адреса от {0} до {1} символов"),
				remote_validate: view.translate("Адрес сайта занят")				
			}

		},
		errorPlacement: function(error, element) {
			error_item = element.parent().parent().find(".state_field");
			error.appendTo( error_item);
		},
		
		highlight: function(element, errorClass, validClass) {
			var id = $(element).attr('id');
			if (signupValidElements[id] != undefined) {
				signupValidElements[id] = 0;
			}
			isValidSignupForm();
			$(element).parent().parent().find(".state_field").addClass('red');
			$(element).addClass('error');
			$(element).parent().find("div").removeClass('success_icon');
		},
		unhighlight: function(element, errorClass, validClass) {
			$(element).parent().parent().find(".state_field").removeClass('red');
			$(element).removeClass('error');
		//$(element).parent().find("div").removeClass('error_icon');
		}
	});
	
	$("#signup .reload").click(function(){
		var container_captcha = $(this).parent();

		$.post('/getcaptcha', function(data){
			container_captcha.find('#captcha-id').val(data.id);
			container_captcha.find('img').attr('src',data.src);
		});
		return false;
	});
	
	var reactivateValidElements = [];
	
	function isValidReactivateForm()
	{
		var fields = ['email'];
		for (i in fields) {
			if (reactivateValidElements[ fields[i]] === undefined || reactivateValidElements[ fields[i]] == 0) {
				$("#submit").parent().addClass('disable');
				return false;
			}
		}
		$("#submit").parent().removeClass('disable');
		return true;
	}
	
	//$("#userinfo select").chosen();
	var reactivateValidator = $("#reactivate_form").validate(
	{
		success:function(label) {
			if ($(label).parents('#offert').length) {
				var id = 'agreement';
			} else {
				var id = $(label).parents('.info_field').parent().find('input').attr('id');
			}
			$(label).parents('.info_field').parent().find('div.element div').addClass('success_icon');
			
			if (reactivateValidElements[id] == undefined || reactivateValidElements[id] == 0) {
				reactivateValidElements[id] = 1;
			}
			isValidReactivateForm();
		},
		focusInvalid : false,
		focusCleanup : true,
		onclick:function(a){
			reactivateValidator.element('#' + $(a).attr('id'));
		},
		rules: {
			
			email: {
				required: true,
				email: true,
				remote_validate: ["/reactivate/emailnotexist", view.translate("Такой email не зарегистрирован")]
			}
		},
		messages: {
			email: {
				required: view.translate("Пожалуйста, укажите email адрес"),
				email: view.translate("Неверный формат почты"),
				remote_validate: view.translate("Такой email не зарегистрирован")
			}
		},
		errorPlacement: function(error, element) {
			error_item = element.parent().parent().find(".state_field");
			error.appendTo( error_item);
		},
		
		highlight: function(element, errorClass, validClass) {
			var id = $(element).attr('id');
			if (reactivateValidElements[id] != undefined) {
				reactivateValidElements[id] = 0;
			}
			isValidReactivateForm();
			$(element).parent().parent().find(".state_field").addClass('red');
			$(element).addClass('error');
			$(element).parent().find("div").removeClass('success_icon');
		},
		unhighlight: function(element, errorClass, validClass) {
			$(element).parent().parent().find(".state_field").removeClass('red');
			$(element).removeClass('error');
		//$(element).parent().find("div").removeClass('error_icon');
		}
	});
	
	
	$("select#country").chosen({no_results_text: view.translate("Выберите страну")}).change(function(){
		var countryId = $(this).val();
		$.post('/userinfo/getregion', {country:countryId}, function(data){
			if (data.success != undefined && data.success == true) {
				var regions = data.regions;				
				var options = '';
				for (region in regions) {
					options += '<option value="'+regions[region].id+'" label="'+regions[region].name+'">'+regions[region].name+'</option>';
				}
				$("select#region").html(options);
				$("select#region").trigger("liszt:updated");
				$("select#city").html('');
				$("select#city").trigger("liszt:updated");
			}
		},"json");
		
	});
	
	$("select#region").chosen({no_results_text: view.translate("Выберите регион")}).change(function(){
		var regionId = $(this).val();
		var countryId = $("select#country").val();
		$.post('/userinfo/getcity', {region:regionId,country:countryId},function(data){
			if (data.success != undefined && data.success == true) {
				var cities = data.cities;				
				var options = '';
				for (city in cities) {
					options += '<option value="'+cities[city].id+'" label="'+cities[city].name+'">'+cities[city].name+'</option>';
				}
				$("select#city").html(options);
				$("select#city").trigger("liszt:updated");
			}			
		},"json");
	});
	
	$("select#city").chosen({no_results_text: view.translate("Выберите город")});//.change(function(){
//		console.log( $(this).val() );
//	})

	jQuery.validator.addMethod("number_my", function(value, element) { 
  		return  this.optional(element) || 
		/^[0-9-]+$/.test(value); 
	}, view.translate("Телефонный должен состоять из цифр"));
	
	jQuery.validator.addMethod("rangelengthnumber", function(value, element,params) { 
		var len = value.replace(/-/g,'').length;
		return  this.optional(element) || len >= params[0] && len <= params[1];
	}, view.translate("Длина номера от {0} до {1} символов"));	
	
	jQuery.validator.addMethod("maxlengthnumber", function(value, element,params) {
		return  this.optional(element) || 
		(($('#userinfo #phone_city').val() + $('#userinfo #phone_local').val()).replace(/-/g, '').length == 10)
	}, view.translate("Длина номера должна быть 10 символов"));			
	
	$("#userinfo form").validate(
	{	
		focusInvalid : false,
	    focusCleanup : true,
	    rules: {
	      phone_country: {
			number: true,
			maxlength: 3
			//maxlengthnumber: true
			
	      },
	      phone_city: {
	        number: true,
			//maxlengthnumber: true,
			rangelength: [3,5]
			
	      },
		  phone_local: {
      		number_my: true
			//maxlengthnumber: true
			//rangelengthnumberr:[5,7]
			
			
    	  },
		  slogan:
		  {
			required:true,
		  	maxlength:80
		  }
		  	
	    },
	    messages: {
			phone_country: {
				number: view.translate("Код страны должен состоять только из цифр"),
				maxlength: view.translate("Максимальная длина кода страны") + " - 3 " +  view.translate("символа")
			},
			phone_city: {
				required: view.translate("Введите код города"),
				number: view.translate("Код города должен состоять только из цифр"),
				rangelength: view.translate("Длина кода города от {0} до {1} цифр")
			},
			phone_local:{
				required: view.translate("Введите номер"),
				number_my:view.translate("Номер может состоять только из цифр и дефисов")
			},
			slogan: {
				required:view.translate("Введите слоган"),
				maxlength: view.translate("Максимальная длина") + ' {0} ' + view.translate("символов")
			}

	    },
	    errorPlacement: function(error, element) {
		  var x = $(element).parent().parent().parent().parent();
		  if (x.attr('class') == 'tel_number') {
		  	error_item = $("#tel_errors");
		  }
		  else{
		  	error_item = $(element).parent().find('.errors');
		  }
	      error_item.html(error);
	    },
	  	highlight: function(element, errorClass, validClass) {
			$(element).addClass('error');
		  },
		  unhighlight: function(element, errorClass, validClass) {
			$(element).removeClass('error');
		  }		
		
	});
	
	jQuery.validator.addMethod("number_count", function(value, element) { 
		return  this.optional(element) || 
		(($('#userinfo #telcode').val() + $('#userinfo #codecity').val() + $('#userinfo #number').val()).length == 11); 
	}, view.translate("Телефонный должен состоять из 11 цифр."));

	
	
	});

