/*
*	jQuery plugins by Yarick (www.yarick.net)
*/

function showCartCount(num){
	$('#cart-count').text(num);
}

(function($){
	
	function debug(msg){
		if (window.console&&window.console.log)
			console.log(msg);
		else
			$('#debug').append('<p>'+msg+'</p>');
	}
	
	$.fn.preloadImages = function(){
		for(var i = 0; i<arguments.length; i++)
			$("<img>").attr("src", arguments[i]);
	}
	
	$.fn.formValidation = function(options){
		
		var expr = {
			email		: /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2,7})$/i,
			password	: /^.{6,}$/i,
			string		: /^\S+.*$/i,
			zip			: /^\S{5,10}$/i,
			phone		: /^\d{9,15}$/i,
			'float'		: /^(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)$/i
		}
		
		//var $.extend(defaults, options);
		if (!options) options = {expr:null};
		if (options.expr) expr = $.extend(expr, options.expr);
		
		return this.each(function(){
			$form = $(this);
			
			function checkField(event){
				if (!event) event = {which:0};
				var $this = $(this);
				var rule = expr[$this.attr('alt')] || /^\.{1,}$/i;
				var r = true;
				if (this.tagName=='INPUT'&&($this.attr('type')=='radio'||$this.attr('type')=='checkbox')){
					if (!$this.val()) r = false;
				} else if ((this.tagName=='INPUT'||this.tagName=='TEXTAREA')&&
					($this.attr('type')=='text'||$this.attr('type')=='password')){
					r &= rule.test($(this).val());
				} else if (this.tagName=='SELECT'){
					if (this.options[this.selectedIndex].value<=0) r &= false;
				}
				if ($this.hasClass('confirmation')){
					var name = $this.attr('name');
					$form.find('[name="'+name.substring(0,name.length-1)+'"]').each(function(){
						r &= $(this).val()==$this.val();
					})
				}
				var name = $(this).attr('name').replace(/[\[\]]/gi,'_');
				var $l = $('#label_'+name).removeClass('error');
				if (!r) $l.addClass('error');
				return r ? true : false;
			}
			
			$form.find('.required').keyup(function(event){
				checkField.call(this,event);
			})
			$form.find('.required').blur(function(){
				var $this = $(this);
				if (checkField.call(this)){
					if ($this.hasClass('ajax')&&options.fn&&options.fn[$this.attr('name')]){
						options.fn[$this.attr('name')].call(this);
					}
				}
			})
			$form.submit(function(){
				var r = true;
				$form.find('.required').each(function(){
					r &= checkField.call(this);
				})
				$form.find('.required').each(function(){
					if ($(this).hasClass('error')) r = false;
				})
				return r ? true : false;
			})
		})
	}
	
	$.fn.zebra = function(){
		return this.each(function(){
			$this = $(this);
			var ch = '*';
			switch (this.tagName){
				case 'UL':
				case 'OL':
					ch = '> li';
				break;
				case 'TABLE':
					ch = '> tbody > tr';
				break;
				case 'THEAD':
				case 'TBODY':
				case 'TFOOT':
					ch = '> tr';
				break;
			}
			var i = 0;
			$this.find(ch).each(function(){
				$(this).removeClass('even odd').addClass(++i%2==0?'even':'odd');
			});
		});
	}

/*
*	Form validation
*/	
	$.fn.formData = new Object();
	
	$.fn.fieldRule = function(action,expr,msg,fn,preview){
		if (!action) action = '*';
		if (!expr) expr = /.*/;
		if (!preview) preview = false;
		
		function validate(){
			var r = expr.test($(this).val());
			//if ($(this).get(0).tagName=='SELECT'&&parseInt(this.options[this.selectedIndex].value)<=0) r = false;
			var id = '#valid_'+$(this).attr('name');
			var el = $(id).removeClass('error ok');
			if (fn&&el) r = r && fn.call(this,el);
			if (r){
				el.addClass('ok');
			} else {
				if (el.hasClass('extra')&&!fn) el.text(msg);
				el.addClass('error');
			}
			return r;
		}
		
		var count = 0, passed = 0;		
		this.each(function(){
			$this = $(this);
			var f = $this.parents('form:first');
			if (!$this.hasClass('required')) return false;
			var id = f.attr('name')?f.attr('name'):f.attr('id');
			$.fn.formData[id+'_'+$this.attr('name')] = {expr:expr,msg:msg,fn:fn};
			if (this.tagName!='INPUT'&&this.tagName!='TEXTAREA'&&this.tagName!='SELECT') return false;
			var id = '#valid_'+$(this).attr('name');
			var oldMsg = $(id).text();
			if (action=='*'||action=='key') $this.keyup(function(e){
				if (validate.call(this,e)) $(id).text(oldMsg);
				return true;
			});
			if (action=='*'||action=='change') $this.change(function(){
				if (validate.call(this)) $(id).text(oldMsg);
				return true;
			});
			count++;
			if (preview&&validate.call(this)){
				passed++;
				$(id).text(oldMsg);
			}
		});
		return count==passed;
	}
	
	$.fn.formCheck = function(){
		var id = $(this).attr('name')?$(this).attr('name'):$(this).attr('id');
		var count = 0, passed = 0;
		$(this).find('input.required,select.required,textarea.required').each(function(){
			count++;
			if ($.fn.formData[id+'_'+$(this).attr('name')]){
				var a = $.fn.formData[id+'_'+$(this).attr('name')];
				if ($(this).fieldRule('none',a.expr,a.msg,a.fn,true)) passed++;
			} else {
				if ($(this).val()) passed++;
			}
		});
		return count==passed;
	}
	
	$.fn.formSubmit = function(){
		return this.each(function(){
			var $this = $(this);
			$this.submit(function(){
				if ($this.hasClass('required')&&!$this.formCheck()) return false;
				$this.showLoading();
				return true;
			});
		});
	}

/*
*	AJaX forms
*/	
	$.fn.formAjax = function(){
		return this.each(function(){
			var $this = $(this);
			$this.find('form').submit(function(){
				if ($(this).hasClass('required')&&!$(this).formCheck()) return false;
				$this.showLoading();
				var el = $(this);
				var a = new Object();
				a.ajax = 1;
				el.find('input,textarea,select').each(function(){
					a[$(this).attr('name')]	= $(this).val();
				});
				$.post(el.attr('action'),a,function(data){
					var msg = '';
					$this.find('.body > blockquote').remove();
					if (el.hasClass('json')){
						var a = eval(data);
						if (a.url) setTimeout('redirect("'+a.url+'")',2000);
						if (a.msg) msg = a.msg;
					} else {
						msg = data;
					}
					if (msg) $this.find('.body').prepend('<blockquote>'+msg+'</blockquote>');
					$this.hideLoading();
				});
				return false;
			});
		});
	}
	
	$.fn.showLoading = function(){
		return this.each(function(){
			$this = $(this);
			var w = parseInt($this.css('width'))||0;
			var h = parseInt($this.css('height'))||0;
			$this.append($.fn.maika.data.loading)
				.find('div.loading')
				.css({left: '0', top: '0', height: h})
				.find('> img').css({left: parseInt((w-32)/2)+'px', top: parseInt((h-32)/2)+'px'});
			$this.find('div.loading > .mask').css({width: w+'px',height: h+'px'});
		});
	}
	
	$.fn.hideLoading = function(){
		return this.each(function(){
			$(this).find('div.loading').remove();
		});
	}
	
/*
*	Maika.ru plugins
*/

	$.fn.showError = function(msg){
		return this.each(function(){
			var offset = $(this).offset();
			$(this).prepend('<blockquote>'+msg+'</blockquote>');
			$(window).scrollTo({'top': offset.top+'px'}, 500);
			setTimeout('hideBlockquotes()',5000);
		})
	}

	$.fn.dateCalendar = function(year,mon,day,yearCurr,yearMin,yearMax){
		var date = new Date();
		if (!yearMin) yearMin = -1;
		if (!yearCurr) yearCurr = 0;
		if (yearMin<1900) yearMin = yearCurr + (yearMin<0?yearMin:-yearMin);
		if (yearMax<1900) yearMax = yearCurr + (yearMax<0?yearMax:-yearMax);
		if (yearCurr<0) yearCurr = yearMax + yearCurr; else if (yearCurr<1000) yearCurr = yearMax - yearCurr;

		if (yearMin>=yearMax) return false;
		debug('calendar started: '+yearMin+' - '+yearMax+':'+yearCurr);
		
		return this.each(function(){
			function drawDay(days){
				var old = this.selectedIndex;
				for (var i=31;i>=0;i--) this.options[i] = null;
				for (i=0;i<days;i++) this.options[i] = new Option(i+1,i+1);
			}
			
			var $d = $(this).find('select[name="'+day+'"]').each(function(){
				drawDay.call(this,31);
			});
			var $m = $(this).find('select[name="'+mon+'"]').each(function(){
				for (var i=12;i>=0;i--) this.options[i] = null;
				for (i=0;i<12;i++) this.options[i] = new Option($.fn.dateCalendar.month[i+1],i+1);
			}).change(function(){
				var m = this.options[this.selectedIndex].value;
				var d = $.fn.dateCalendar.days[m];
				if (m==2) d = $y.val()%4==0?29:28;
				debug('change month to '+m+' with '+d+'days');
				drawDay.call($d.get(0),d);
			});
			var $y = $(this).find('select[name="'+year+'"]').each(function(){
				for (var i=this.options.length;i>=0;i--) this.options[i] = null;
				var j = 0;
				for (i=yearMax;i>=yearMin;i--) this.options[j++] = new Option(i,i,yearCurr==i);
			}).change(function(){
				
			});
		});
	}
	
	$.fn.dateCalendar.month = new Array(
		'', 'Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря'
	);
	$.fn.dateCalendar.days = new Array(
		0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
	);

	var loadingTimer, loadingFrame = 1;
	
	$.fn.maika = function(){
		
	}
	
	$.fn.promoBox = function(){
		var items = new Array();
		var currentPos = 0;
		
		function loadItems(fn){
			$.post(websitePath+'ajax/promo', {ajax:1, session:websiteSess}, function(data){
				var a = eval(data);
				if (a.result>0){
					debug('Loaded promo items: '+a.items.length);
					items = a.items;
					if (fn&&typeof fn=='function') fn.call(a);
				} else {
					if (a.msg) debug(a.msg);
				}
			})
		}
		
		return this.each(function(){
			var box = $(this);
			box.showLoading();
			
			if (!items.length) loadItems(function(){
				box.hideLoading();
				var h = '<div class="nav"><a href="#prev" class="ieprev"></a><a href="#next" class="ienext"></a></div>';
				h += '<ul>';
				for (var i=0,len=items.length;i<len;i++){
					var a = items[i];
					h += '<li><img src="'+a.img+'" alt="'+a.name+'" /></li>';
					//h += '<div class="caption"><b>'+a.name+'</b><i>'+a.price+' руб.</i></div></li>'
				}
				h += '</ul><div class="clear"></div>';
				box.html(h);
				
				box.find('a.ieprev,a.ienext').click(function(){
					var anchor = $(this).attr('href');
					var a = $(this).attr('href').split('#');
					if (a[1]) anchor = '#'+a[1];
					var offset = anchor=='#prev'?-1:1;
					currentPos += offset;
					if (currentPos<0) currentPos = items.length-1;
					if (currentPos>=items.length) currentPos = 0;
					if (items[currentPos]){
						$(this).parent().find('a').removeClass('disabled');
						var picWidth = box.find('ul li:first img').width();
						var cnt = -(picWidth*currentPos);
						var ulWidth = picWidth*items.length;
						box.find('ul').css({width: ulWidth+'px'}).animate({left: cnt},750,'easeInOutExpo');
					}
					return false;
				})
			});
		});
	}
	
	$.fn.boardClouds = function(){
		return this.each(function(){
			var $box = $(this);
			$box.find('a.img').hover(function(){
				$box.find('a.img').removeClass('hover');
				$(this).addClass('hover');
			},function(){
				
			});
			$box.find('a.img:first').addClass('hover');
		});
	}
	
	$.fn.cartLoad = function(){
		return this.each(function(){
			var box = $(this).showLoading();
			$.post(websitePath+'ajax/cart',{ajax:1, sid:websiteSess},function(data){
				box.cartDraw(eval(data));
				box.hideLoading();
			});
		});
	}
	
	$.fn.cartDraw = function(data){
		return this.each(function(){
			var el = $(this).find('> .body');
			var it = data.items;
			if (!data.result){
				if (data.msg) el.html('<center>'+data.msg+'</center>');
			} else {
				if (it.length){
					var count = 0;
					var total = 0;
					var h = '<ol>';
					for (var i=0,len=it.length;i<len;i++){
						total += it[i].count*it[i].price;
						count += it[i].count;
						h += '<li value="'+it[i].id+'"><span class="name"><a href="'+websitePath+'cart#item_'+it[i].id;
						h += '">'+it[i].count+'x '+it[i].name+'</a></span>';
						h += '<span class="price">'+price(it[i].price)+' руб.</span><a href="#delete" class="delete"></a></li>';
					}
					h += '</ol><div class="clear"></div><hr />';
					h += '<table width="100%" cellpadding="0" cellspacing="0"><tr><td width="50%">Всего</td><td align="right"><b>'+price(total)+'</b> рублей</td></tr></table>';
					h += '<br /><center><input type="submit" name="submit" value="ОФОРМИТЬ ПОКУПКУ" class="button b150" /></center>';
					el.html(h);
					el.find('a[href$="#delete"]').cartDelete();
					el.find('input[name="submit"]').cartSubmit();
					showCartCount(count);
				} else {
					el.html('<center>Корзина пуста</center>');
					showCartCount('0');
				}
			}
		});
	}
	
	$.fn.cartDelete = function(){
		return this.each(function(){
			$(this).click(function(){
				var box = $(this).parents('.box:first').showLoading();
				$.post(websitePath+'ajax/cart/delete',{ajax:1, sid:websiteSess, id:$(this).parent().attr('value')},function(data){
					box.cartDraw(eval(data));
					box.hideLoading();
				});
				return false;
			});
		});
	}
	
	$.fn.cartSubmit = function(){
		return this.each(function(){
			$(this).click(function(){
				redirect(websitePath+'cart')
				return false;
			})
		});
	}
	
	$.fn.cartTable = function(){
		return this.each(function(){
			var ul = $(this);
			
			function getCount(){
				var r = 0;
				ul.find('> li').each(function(){
					r += parseInt($(this).find('input[name="count[]"]').val());
				});
				return r;
			}
			
			function getTotal(){
				var total = 0;
				ul.find('> li').each(function(){
					total += parseInt($(this).find('input[name="count[]"]').val())*$(this).find('input[name="price[]"]').val();
				});
				return total;
			}
			
			function setTotal(total){
				$('#total_row .price').html(price(total+parseFloat($('input[name="delivery_cost"]').val())));
			}
			
			$('#cart_form').submit(function(){
				$form = $(this);
				var r = true;
				var s = $form.find('input[name="agreement"]:checked').size();
				if (!s){
					$form.showError('Укажите согласие с Правилами предоставления услуг Maika.ru');
					r = false;
				}
				return r ? true : false;
			})
			
			ul.find('> li').each(function(){
				var li = $(this);
				var currPrice = li.find('input[name="price[]"]').val();
				var $u = li.find('input[name="update"]');
				var $q = li.find('input[name="count[]"]');
				
				function checkCount(){
					var q = parseInt($q.val());
					if (q<=0||q>99){
						$q.val(1);
						ul.parent().showError('Недопустимое количество товара');
					} else {
						li.find('span.price').eq(1).html(price(currPrice*q));
						$('#cart-count').text(getCount());
						setTotal(getTotal());
					}
				}
				
				$q.change(function(){
					$u.click();
				});
				$q.keypress(function(e){
					if (e.which==13){
						$u.click();
						return false;
					}
				});
				$u.each(function(){
					checkCount();
				});
				$u.click(function(){
					checkCount();
					return false;
				});
				li.find('a[href$="#delete"]').click(function(){
					$.post(websitePath+'ajax/cart/delete',{ajax:1, sid:websiteSess, id:$(this).parents('li:first').attr('value')},function(data){
						var a = eval(data);
						showCartCount(a.items.length);
						li.remove();
					});
					return false;
				});
				li.find('a.preview').click(function(){
					li.find('div.preview').html('<a href="#" title="'+$(this).attr('title')+'"><img src="'+$(this).attr('href')+'" alt="'+$(this).attr('title')+'" /></a>');
					return false;
				});
				li.find('a.preview:first').click();
			});
		});
	}
	
	$.fn.deliveryTable = function(){
		return this.each(function(){
			var box = $(this);
			var $form = box.find('> form'); 
			var $email = box.find('input[name="email"]');
						
			function getTotal(){
				var total = parseFloat(box.find('input[name="total"]').val());
				total += parseFloat(box.find('input[name="delivery"]:checked').parents('tr:first').find('input[name="price"]').val());
				return total;
			}
			
			function setTotal(total){
				$('#total_row .price').html(price(total));
			}
			
			function checkEmail(){
				var r = exprEmail.test($email.val());
				if (!r) box.showError('Проверьте правильность введенного E-mail');
				return r;
			}
			
			function showLogin(){
				var h = $('#login-box').html();
				if (!h) return false;
				box.prepend('<div class="mask"></div>');
				box.find('> .mask').css({'width': box.width()+'px','height': box.height()+'px'});
				$('#login-box').remove();
				box.prepend('<div id="login-box" class="box login-box">'+h+'</div>');
				var $login = box.find('#login-box');
				var $b = $login.find('input[type="submit"]');
				var $r = $login.find('#label_remember');
				var $l = $login.find('#label_password');
				var $p = $login.find('input[type="password"]');
				var $a = $login.find('a[href="#remember"]');
				var l = (box.width()-$login.width()) / 2;
				$login.css({'position': 'absolute', 'z-index': 3, 'left': l+'px', 'top': '30px'});
				$login.find('input[name="login"]').val($email.val());
				$login.find('input[name="password"]').focus();
				
				$a.click(function(){
					$a.hide();
					$r.hide();
					$l.hide();
					$p.hide();
					$b.removeClass('b50').addClass('b150').val('НАПОМНИТЬ ПАРОЛЬ');
				})
				
				$login.find('form').submit(function(){
					$login.showLoading();
					if ($a.css('display')=='none'){
						$.post(websitePath+'my/remember',{ajax: 1, email: $login.find('input[name="login"]').val()},function(data){
							$login.hideLoading();
							var a = eval(data);
							if (a.result){
								$login.find('> .head').html('Пароль отослан на E-mail');
								$a.show();
								$r.show();
								$l.show();
								$p.show();
								$b.removeClass('b150').addClass('b50').val('ВОЙТИ');
							} else {
								$login.find('> .head').html('Ошибка, попробуйте еще');
							}
						})
					} else {
						$.post($(this).attr('action'),{ajax: 1, login: $login.find('input[name="login"]').val(), 
						password: $login.find('input[name="password"]').val(), 
						remember: $login.find('input[name="remember"]:checked').size()}, function(data){
							$login.hideLoading();
							var a = eval(data);
							if (a.result){
								websiteUser = a.data.email;
								for (var key in a.data){
									debug(key+' : '+a.data[key]);
									$form.find('input[name="'+key+'"]').val(a.data[key]);
								}
								$form.find('select[name="country"]').val(a.data.country);
								$form.find('select[name="state"]').val(a.data.state);
								$form.find('[name="addr[city]"]').val(a.data.city);
								$form.find('[name="addr[street]"]').val(a.data.street);
								$form.find('[name="addr[house]"]').val(a.data.house);
								$form.find('[name="addr[flat]"]').val(a.data.flat);
								$form.find('[name="addr[zip]"]').val(a.data.zip);
								$login.hide('slow',function(){
									box.find('> .mask').remove();
									$login.remove();
								});
								$('.header > .nav').load(websitePath+'load/nav');
							} else {
								$login.find('> .head').html('Ошибка авторизации ...');
							}	
						});
					}
					return false;
				});
			}
			
			$form.find('input[name="delivery"]').click(function(){
				$('#delivery_row .price').html(price($(this).parents('td:first').find('input[name="price"]').val()));
				setTotal(getTotal());
			})
			
			setTotal(getTotal());
			
			if (websiteUser){
				$email.addClass('readonly').attr('readonly',true);
			}
			
			$email.blur(function(){
				if (checkEmail()) $.post(websitePath+'ajax/email',{ajax:1, email:$email.val()},function(data){
					var a = eval(data);
					debug('check for user: '+$email.val()+', result: '+a.result);
					if (a.result>0) showLogin();
				});
			});
			
			$form.submit(function(){
				var r = true;
				$form.find('.required').each(function(){
					var c = true;
					switch ($(this).get(0).tagName){
						case 'INPUT':
						case 'TEXTAREA':
							if (!$(this).val()) c = false;
						break;
						
						case 'SELECT':
							if (this.options[this.selectedIndex].value<=0) c = false;
						break;
					}
					var name = $(this).attr('name').replace(/[\[\]]/gi,'_');
					var $l = $('#label_'+name).removeClass('error');
					if (!c) $l.addClass('error');
					r &= c;
				});
				if (!r) box.showError('Заполните все обязательные поля (поля со звездочкой)');
				r &= checkEmail();
				return r ? true : false;
			});
			
			$email.focus();
		});
	}
	
	$.fn.orderTable = function(){
		return this.each(function(){
			var $ul = $(this);
			
			$ul.find('> li').each(function(){
				var $li = $(this);
				
				$li.find('a[href$="#delete"]').click(function(){
					$ul.showLoading();
					$this = $(this);
					$.post(websitePath+'ajax/order/cancel',{ajax:1, id:$li.attr('value')},function(data){
						$ul.hideLoading();
						var a = eval(data);
						if (a.result>0){
							$li.find('span.status').removeClass('st1 st2 st3 st4 st5 st6 st7')
								.addClass('st'+a.status)
								.text(a.str);
							if (a.status>1) $this.remove();
						}
					})
					return false;
				})
			})
		})
	}
	
	$.fn.maika.data = {
		loading		: '<div class="loading"><div class="mask"></div></div>'
	};

})(jQuery);

function price(price){
	var a = (''+price).split('.',2);
	if (!a[1]) a[1] = 0;
	var r = a[0]+'-';
	if ((''+a[1]).length<2) a[1] += '0';
	if ((''+a[1]).length>2) a[1] = (''+a[1]).substring(0,2);
	r += a[1];
	return r; 
}

function redirect(url){
	if (!url) return false;
	location.href = url;
}

function hideBlockquotes(){
	/*
	$('blockquote').hide('fast',function(){
		$(this).remove();
	})
	*/
}

var exprEmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2,7})$/i;

$(document).ready(function(){
	
	/*
	if ($.browser.msie&&parseInt($.browser.version)<=6){
		$('#main_wrapper').load(websitePath+'load/ie6').show();
		return false;
	}
	*/
	
	$('.zebra').zebra();
	$('#promo-box').promoBox();
	$('.title > .board').boardClouds();
	$('a[href="'+websitePath+currentMenu+'"]').each(function(){
		$(this).parent().addClass('s');
	});
	//$('form.required').validation();
	$('#login-box,#register-box,#remember-box,#password-box,#email-box,#profile-box,#contact_form').formAjax();
	
	$('#password-box').find('input[name="password"],input[name="passwordo"]').fieldRule('*',/\S{4,}/i,'Неверный формат пароля (не менее 4х символов)');
	$('#password-box').find('input[name="passwordc"]').fieldRule('*',/\S{4,}/i,'Неверный формат пароля (не менее 4х символов)',function(el){
			if ($('input[name="password"]').val()!=$(this).val()){
				el.addClass('error');
				if (el.hasClass('extra')) el.text('Подтверждение не соответствует паролю');
				return false;
			}
			return true;
		});
	$('#email-box').find('input[name="email"],input[name="emailo"]').fieldRule('*',exprEmail,'Неверный формат E-mail');
	$('#email-box').find('input[name="emailc"]').fieldRule('*',exprEmail,'Неверный формат E-mail',function(el){
			if ($('input[name="email"]').val()!=$(this).val()){
				el.addClass('error');
				if (el.hasClass('extra')) el.text('Подтверждение не соответствует E-mail');
				return false;
			}
			return true;
		});
	$('#profile-box').find('input[name="name"],input[name="second_name"],input[name="last_name"]').fieldRule('*',/\S{2,}/i,'Неверный формат поля');
	$('#profile-box').find('input[name="phone"]').fieldRule('*',/\d{6,15}/i,'Неверный формат телефона (одни цифры)');
	$('#profile-box').find('input[name="nickname"]').fieldRule('change',/\S{2,}/i,'Неверный формат поля',function(el){
		var url = $(this).parents('form:first').attr('action');
		var inp = $(this).addClass('inprocess');
		el.text('проверяеся на уникальность...');
		$.post(url,{ajax:1,check:1,nickname:$(this).val()},function(data){
			inp.removeClass('inprocess');
			if (data=='1'){
				el.addClass('error');
				el.text('пользователь с таким Никнеймом уже существует');
				return false;
			}
			el.addClass('ok');
			el.text('Никнейм свободен');
		});
		return true;
	});
	$('#profile-box').dateCalendar('cal_year','cal_month','cal_day',currentYear,-70,-13);
	
	$('#cart-box').cartLoad();
	
	$('.price').each(function(){
		$(this).text(price($(this).text()));
	});
	
	$('#cartTable').cartTable();
	$('#orderTable').orderTable();
	$('#delivery-form').deliveryTable();
	
	$('#contact_form').formValidation();
	
	//setTimeout('$("blockquote").hide("fast")',3000);
	setTimeout('hideBlockquotes()',5000);

	//$('#email-box form').formCheck();
});