/***********************************************************************************/

function trim( str, charlist ) {
	charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
	var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
	return str.replace(re, '');
}

/***********************************************************************************/

function str_replace(search, replace, subject) {
	var s = subject;
	var f = [].concat(search);
	var r = [].concat(replace);
	var l = (f.length>r.length) ? r.length : f.length;
	var i = 0;

	for (i=0; i<l; ++i)
	{
		s = s.split(f[i]).join(r[i]);
	}

	return s;
}

/***********************************************************************************/

function refreshSecretkey(id,type)
{
	if(typeof(type)=='undefined'){
		setTimeout("refreshSecretkeyTimeout('"+id+"')",100);
	}else{
		setTimeout("refreshSecretkeyTimeout('"+id+"','"+type+"')",50);
	}
}

//-----------------------------------------------------------------------------------

function refreshSecretkeyTimeout(id,type)
{
	if(typeof(type)=='undefined'){
		$('#'+id).attr({
			'src':'/secretkey.php?id='+Math.random(0)
		});
	}else{
		$('#'+id).attr({
			'src':'/secretkey.php?type='+type+'&id='+Math.random(0)
		});
	}
}

/***********************************************************************************/

jQuery.validator.addMethod("validemail", function(value, element, param) {
	if(trim(value)=='' && this.optional(element)==false)return false;
	var reg = /^[0-9a-z_\.-]+@[0-9a-z_^\.-]+\.[a-z]{2,6}$/i
	return this.optional(element) || (reg.test(value) || reg.test(value));
},'Please enter valid email');

//------------------------------------------------------------------------------------

jQuery.validator.addMethod("checkDate", function(value, element, param) {
	var day=parseInt($('#day').val());
	var month=parseInt($('#month').val())-1;
	var year=parseInt($('#year').val());
	if(!this.optional(element) && (day+month+year==-1))return true;
	var date = new Date( year, month, day )
	if((day==date.getDate())&&(month==date.getMonth())&&(year==date.getFullYear())&&(year>1753))
	{
		return true;
	}
	return false;
});

//------------------------------------------------------------------------------------

jQuery.validator.addMethod("validnickname", function(value) {
	if(value=='')return false;
	var reg = /^[a-zA-Z0-9]+$/i
	return reg.test(value) || reg.test(value);
}, 'Please enter valid nickname!');
/***********************************************************************************/
$(document).ready(function(){

	/***********************************************************************************/
	
	
	$("#regform").validate({
		errorElement: "em",
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		invalidHandler: function(form, validator) {
			$('#registration_loader').hide();
		},
		rules: {

			secretcode:{
				required:true
			},
			year:{
				required:true,
				checkDate:true
			},
			/*phone:{
				required:true
			},*/
			username:{
				required:true
			},
			login:{
				required:true,
				validnickname:true,
				minlength: 2
			},
			email: {
				required: true,
				validemail: true
			}
		},
		messages: {

			secretcode:{
				required:'Это поле обязательно для заполнения'
			},
			year:{
				required:'Это поле обязательно для заполнения',
				'checkDate':'Введите корректную дату рождения'
			},
			/*phone:{
				required:'Это поле обязательно для заполнения'
			},*/
			username:{
				required:'Это поле обязательно для заполнения'
			},
			login:{
				required:'Это поле обязательно для заполнения',
				validnickname:'Ник может содержать только символы a-zA-Z0-9',
				minlength:'Логин должен содержать не менее двух символов'
			},
			email: {
				required:'Это поле обязательно для заполнения',
				validemail:'Пожалуйста, введите корректный Email'
			}
		},
		submitHandler: function(form) {
			$('#registration_loader').hide();
			var f=$(form);
			var options = {
				beforeSubmit:  showRequestRegSubmit,
				success:       showResponseRegSubmit
			//clearForm: true        // clear all form fields after successful submit
			//resetForm: true        // reset the form after successful submit
			};
			f.ajaxSubmit(options);
		}

	});

	//-----------------------------------------------------------------------------------

	function showRequestRegSubmit(formData, jqForm, options)
	{
		$('#registration_loader').show();
	}

	//-----------------------------------------------------------------------------------

	function showResponseRegSubmit(responseText, statusText)
	{
		var form=$("#regform").get(0);
		if(responseText=='0')
		{
			location.href='/registration?do=success';
		}else {
			var errors=responseText.split(',');
			for(var e in errors)
			{
				switch(errors[e])
				{
					case '1':
						setTimeout("$('#reg_username').addClass('error');$('#reg_error_username').show().html('Это поле обязательно для заполнения.')",100);
						break;
					case '2':
						setTimeout("$('#reg_email').addClass('error');$('#reg_error_email').show().html('Это поле обязательно для заполнения.')",100);
						break;
					case '3':
						setTimeout("$('#reg_email').addClass('error');$('#reg_error_email').show().html('Пожалуйста, введите корректный Email.')",100);
						break;
					case '4':
						setTimeout("$('#reg_email').addClass('error');$('#reg_error_email').show().html('Такой Email уже используется.')",100);
						break;
					case '5':
						setTimeout("$('#reg_phone').addClass('error');$('#reg_error_phone').show().html('Это поле обязательно для заполнения.')",100);
						break;
					case '6':
						//setTimeout("$('#reg_secretcode').addClass('error');$('#reg_error_secretcode').show().html('Введите результат выражения, который Вы видите на картинке.')",100);
						setTimeout("$('#reg_secretcode').addClass('error');$('#reg_error_secretcode').show().html('Введите код, который Вы видите на картинке.')",100);
						break;
					case '7':
						setTimeout("$('#reg_login').addClass('error');$('#reg_error_login').show().html('Введите никнейм.')",100);
						break;
					case '8':
						setTimeout("$('#reg_login').addClass('error');$('#reg_error_login').show().html('Введите корректный никнейм, используя только a-zA-Z0-9.')",100);
						break;
					case '9':
						setTimeout("$('#reg_login').addClass('error');$('#reg_error_login').show().html('Такой никнейм уже существует.')",100);
						break;
					case '10':
						setTimeout("$('#reg_avatar').addClass('error');$('#reg_error_avatar').show().html('Для аватарок можно использовать только .jpg, .gif и .png изображения.')",100);
						break;
				}
			}
		}
		refreshSecretkey('reg_secretkey','register');
		$('#registration_loader').hide();
	}

	/***********************************************************************************/

	$("#order_form").validate({
		errorElement: "em",
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		invalidHandler: function(form, validator) {
			$('#order_loader').hide();
		},
		rules: {

			username:{
				required:true
			},
			
			phone:{
				required:true
			},
			
			city:{
				required:true
			},
			address:{
				required:true
			},
			
			email: {
				required: true,
				validemail: true
			}
		},
		messages: {

			
			phone:{
				required:'Это поле обязательно для заполнения'
			},
			username:{
				required:'Это поле обязательно для заполнения'
			},
			city:{
				required:'Это поле обязательно для заполнения'
			},
			address:{
				required:'Это поле обязательно для заполнения'
			},
			email: {
				required:'Это поле обязательно для заполнения',
				validemail:'Пожалуйста, введите корректный Email'
			}
		}

	});

	//-----------------------------------------------------------------------------------

	

	/***********************************************************************************/
	$("#profileform").validate({
		errorElement: "em",
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		invalidHandler: function(form, validator) {
			$('#profile_loader').hide();
		},
		rules: {

			year:{
				required:true,
				checkDate:true
			},
			confirm_password : {
				required 		: function(element) {
					return $('#password',$("#profileform")).val()!='';
				},
				equalTo: "#password"
			},
			phone:{
				required:true
			},
			username:{
				required:true
			}
		},
		messages: {

            
			year:{
				required:'Это поле обязательно для заполнения',
				'checkDate':'Введите корректную дату рождения'
			},
			phone:{
				required:'Это поле обязательно для заполнения'
				
			},
			confirm_password:{
				required:'Это поле обязательно для заполнения',
				equalTo:'Пароль и подтверждающий пароль должны совпадать'
			},
			username:{
				required:'Это поле обязательно для заполнения'
			}
		},
		submitHandler: function(form) {
			$('#profile_loader').hide();
			var f=$(form);
			var options = {
				beforeSubmit:  showRequestProfileSubmit,
				success:       showResponseProfileSubmit
			//clearForm: true        // clear all form fields after successful submit
			//resetForm: true        // reset the form after successful submit
			};
			f.ajaxSubmit(options);
		}

	});

	//-----------------------------------------------------------------------------------

	function showRequestProfileSubmit(formData, jqForm, options)
	{
		//alert(getTinyContent('about'));
		$('#profile_loader').show();
	}

	//-----------------------------------------------------------------------------------

	function showResponseProfileSubmit(responseText, statusText)
	{
		var form=$("#profileform").get(0);
		if(responseText=='0')
		{
			location.href='/registration?do=myprofile';
		}else {
			var errors=responseText.split(',');
			for(var e in errors)
			{
				switch(errors[e])
				{
					case '1':
						setTimeout("$('#profile_username').addClass('error');$('#profile_error_username').show().html('Это поле обязательно для заполнения.')",100);
						break;
					case '5':
						setTimeout("$('#profile_phone').addClass('error');$('#profile_error_phone').show().html('Это поле обязательно для заполнения.')",100);
						break;
					case '10':
						setTimeout("$('#profile_avatar').addClass('error');$('#profile_error_avatar').show().html('Для аватарок можно использовать только .jpg, .gif и .png изображения.')",100);
						break;
				}
			}
		}
		$('#profile_loader').hide();
	}
	/***********************************************************************************/
	$("#blogcommentform").validate({
		errorElement: "em",
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		invalidHandler: function(form, validator) {
			$('#blogcomment_loader').hide();
		},
		rules: {
			comment:{
				required:true
			}
		},
		messages: {
			comment:{
				required:'Это поле обязательно для заполнения'
			}
		},
		submitHandler: function(form) {
			$('#blogcomment_loader').hide();
			var f=$(form);
			var options = {
				beforeSubmit:  showRequestBlogCommentSubmit,
				success:       showResponseBlogCommentSubmit
			//clearForm: true        // clear all form fields after successful submit
			//resetForm: true        // reset the form after successful submit
			};
			f.ajaxSubmit(options);
		}

	});

	//-----------------------------------------------------------------------------------

	function showRequestBlogCommentSubmit(formData, jqForm, options)
	{
		//alert(getTinyContent('about'));
		$('#blogcomment_loader').show();
	}

	//-----------------------------------------------------------------------------------

	function showResponseBlogCommentSubmit(responseText, statusText)
	{
		var form=$("#blogcommentform").get(0);
		if(responseText=='0')
		{
			//alert($("#blogcommentform").attr('action')+'?do=success#comments');
			location.href=$("#blogcommentform").attr('action')+'?do=success&id='+Math.random()+'#comments';
		}else {
			var errors=responseText.split(',');
			for(var e in errors)
			{
				switch(errors[e])
				{
					case '1':
						setTimeout("$('#profile_username').addClass('error');$('#profile_error_username').show().html('Это поле обязательно для заполнения.')",100);
						break;
					case '5':
						setTimeout("$('#profile_phone').addClass('error');$('#profile_error_phone').show().html('Это поле обязательно для заполнения.')",100);
						break;
					case '10':
						setTimeout("$('#profile_avatar').addClass('error');$('#profile_error_avatar').show().html('Для аватарок можно использовать только .jpg, .gif и .png изображения.')",100);
						break;
				}
			}
		}
		$('#blogcomment_loader').hide();
	}
	/***********************************************************************************/
	$("#blogform").validate({
		errorElement: "em",
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		invalidHandler: function(form, validator) {
			$('#blog_loader').hide();
		},
		rules: {

			title:{
				required:true
			}
		},
		messages: {


			title:{
				required:'Это поле обязательно для заполнения'
                
			}
		},
		submitHandler: function(form) {
			$('#profile_loader').hide();
			var f=$(form);
			var options = {
				beforeSubmit:  showRequestBlogSubmit,
				success:       showResponseBlogSubmit
			//clearForm: true        // clear all form fields after successful submit
			//resetForm: true        // reset the form after successful submit
			};
			f.ajaxSubmit(options);
		}

	});

	//-----------------------------------------------------------------------------------

	function showRequestBlogSubmit(formData, jqForm, options)
	{
		//alert(getTinyContent('about'));
		$('#blog_loader').show();
	}

	//-----------------------------------------------------------------------------------

	function showResponseBlogSubmit(responseText, statusText)
	{
		var form=$("#blogform").get(0);
		if(responseText=='0')
		{
			location.href=form.action+'?do=createblog&success=true';
		}else {
			var errors=responseText.split(',');
			for(var e in errors)
			{
				switch(errors[e])
				{
					case '1':
						setTimeout("$('#blog_title').addClass('error');$('#blog_error_title').show().html('Это поле обязательно для заполнения.')",100);
						break;
					case '2':
						setTimeout("$('#blog_image').addClass('error');$('#blog_error_image').show().html('Для аватарок можно использовать только .jpg, .gif и .png изображения.')",100);
						break;

				}
			}
		}
		$('#blog_loader').hide();
	}

	/***********************************************************************************/

	$("#loginform").validate({
		errorElement: "em",
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		invalidHandler: function(form, validator) {
			$('#login_loader').hide();
		},
		rules: {

            
			login:{
				required:true//,
			//  validemail: true
			},
			password: {
				required: true
			}
		},
		messages: {

            
			login:{
				required:'Это поле обязательно для заполнения'//,
			//validemail:'Пожалуйста, введите корректный Email'
			},
			password: {
				required:'Это поле обязательно для заполнения'
                
			}
		},
		submitHandler: function(form) {
			$('#login_loader').hide();
			var f=$(form);
			var options = {
				beforeSubmit:  showRequestLoginSubmit,
				success:       showResponseLoginSubmit
			//clearForm: true        // clear all form fields after successful submit
			//resetForm: true        // reset the form after successful submit
			};
			//alert(getTinyContent('about'));
			f.ajaxSubmit(options);
		}

	});

	//-----------------------------------------------------------------------------------

	function showRequestLoginSubmit(formData, jqForm, options)
	{
		$('#login_loader').show();
	}

	//-----------------------------------------------------------------------------------

	function showResponseLoginSubmit(responseText, statusText)
	{
		var form=$("#loginform").get(0);
		if(responseText=='0')
		{
			location.reload(true);
			//location.href='/registration?do=myprofile';
		}else {
			var errors=responseText.split(',');
			for(var e in errors)
			{
				switch(errors[e])
				{
					case '1':
						setTimeout("$('#login_password').addClass('error');$('#login_error_password').show().html('Это поле обязательно для заполнения.')",100);
						break;
					case '2':
						setTimeout("$('#login_login').addClass('error');$('#login_error_login').show().html('Это поле обязательно для заполнения.')",100);
						break;
					case '3':
						setTimeout("$('#login_login').addClass('error');$('#login_error_login').show().html('Пожалуйста, введите корректный Email.')",100);
						break;
					case '4':
						setTimeout("$('#login_login').addClass('error');$('#login_password').addClass('error');$('#login_error_all').show().html('Email или пароль введены неверно.')",100);
						break;
					case '5':
						setTimeout("$('#login_login').addClass('error');$('#login_password').addClass('error');$('#login_error_all').show().html('Ваш аккаунт не активирован или заблокирован.')",100);
					case '7':
						setTimeout("$('#login_login').addClass('error');$('#login_password').addClass('error');$('#login_error_all').show().html('Некорректный логин (email).')",100);
						break;
				}
			}
		}
		//refreshSecretkey('reg_secretkey');
		$('#login_loader').hide();
	}
/***********************************************************************************/


/***********************************************************************************/


/***********************************************************************************/


/***********************************************************************************/


/***********************************************************************************/


/***********************************************************************************/


/***********************************************************************************/


/***********************************************************************************/


/***********************************************************************************/
});
function bc_show(type)
{
	if(type==1)
	{
		$('#bc_comments_check').show();
		$('#bc_date_check').hide();
		$('.bc_comments').show();
		$('.bc_date').hide();

	}else{
		$('#bc_comments_check').hide();
		$('#bc_date_check').show();
			
		$('.bc_comments').hide();
		$('.bc_date').show();
	}

}
function setFilter(form,page)
{
	var frm=$(form);
	var orderby=$('#orderby',frm).val();
	var genre=new Array();
	var price=new Array();

	$("input[type=checkbox][checked]",frm).each(function(i){
		var name=$(this).attr('name');
		if(name=='price[]')
			price[price.length]=$(this).val();
		else
		if(name=='genre[]')
			genre[genre.length]=$(this).val();
	});

	var genre_str=genre.join(',');
	var price_str=price.join(',');
	var query=new Array();
	
	query[query.length]='page='+page;
	query[query.length]='orderBy='+orderby;

	if(trim(genre_str)!='')
	{
		query[query.length]='genre_filter='+genre_str;
	}
	if(trim(price_str)!='')
	{
		query[query.length]='price_filter='+price_str;
	}
	
	var query_str=query.join('&');
	//alert(query_str);
	document.location.href='/works?'+query_str;
}
function vote(link,vote_id)
{

	var arr=link.split('/');
	var work_id=trim(arr[arr.length-1]);
	//alert();
	$('.vote_'+work_id).each(function(i){
		$(this).html('<img src="/_img/vote-loader.gif">');
	});
	$.get(link+'?do=vote&vote=-1',{
		'do':'vote',
		'vote':vote_id
	},function(data){
		$('.vote_'+work_id).each(function(i){
			$(this).html(data);
		});
	});
}

function confirmRemoveItemFromCart(url)
{
	if(confirm('Вы действительно хотите удалить выбранный товар из корзины?'))
	{
		document.location.href=url;
	}
}

function confirmRemoveCart(url)
{
	if(confirm('Вы действительно хотите удалить все товары из корзины?'))
	{
		document.location.href=url;
	}
}

function setBigPhoto(url)
{

	setTimeout("setBigPhotoTimeout('"+url+"')",100);
}
function setBigPhotoTimeout(url)
{
	$('#big_photo').attr('src',url);
}