	var haveit_class = 'haveit';
	var haveItTextYes = 'У меня это есть!';
	var haveItTextNot = 'Нажмите, если у Вас это есть.';
	var basketLiveDays = 3600 * 24;
	var cartOpen = false;
	
	window.addEvent('domready', function() {
		SqueezeBox.assign($('feedback_error'), {
			size:{x:480, y:260},
			ajaxOptions: {
				evalScripts: true
			}
		});

		$$('a.haveit-link').addEvent('click', function(){
			var product_id = this.get('rel');
			var element = this;
			new Request.JSON({
				url: '/index.php', 
				method: 'get',
				onComplete: function(response){
					if (response.haveit) {
						element.getParent('tr').addClass(haveit_class);	
						element.addClass('have');
						element.set('html', haveItTextYes);
					} else {
						element.getParent('tr').removeClass(haveit_class);	
						element.removeClass('have');
						element.set('html', haveItTextNot);
					}
				}
			}).get({'action': 'account', 'do': 'toggle_haveit', 'product_id': product_id });
			return false;
		});

		$$('.manage-product-subscription').each(function(item){
			var product_id = item.get('rel');
			item.set('href', '/index.php?action=account&do=product_subscribe&product_id=' + product_id);
			SqueezeBox.assign(item, {
				size:{x:480, y:340},
				hideOnChange: false,
				ajaxOptions:{
					evalScripts:true
				}
			});
		});
		
		window.roar = new Roar({
			position:  'lowerRight',
			duration: 5000
		});
		
		$$('.spoiler').each(function(item){
			item.setStyles({
				position: 'relative',
				overflow: 'hidden'
			});
			item.store('height', item.getStyle('height')).setStyle('height', 0);
			
		});
		$$('.toggler')
			.setStyle('cursor', 'pointer')
			.addEvent('click', function(e){
				e.stop();
				var spoiler = this.getNext('.spoiler');
				var height = spoiler.retrieve('height');
				if (spoiler.getStyle('height') == height) {
					height = 0;
				}
				spoiler.tween('height', height);
			});
		
		if ($defined($('newsletter'))) {
			$('newsletter').addEvent('click', function(e){
				e.stop();
				var url = this.get('href') + '/quick';
				bumpbox(this, url, 600, 220);
				
			});
		}

        if ($defined($('callback'))) {
            SqueezeBox.assign($('callback'), {
                size: {x: 360, y: 180},
                onShow: function(){
                    $$('#sbox-content form').addEvent('submit', function(){
                        var form = this;
                        new Request.JSON({
                            url: '/callback',
                            onSuccess: function(response){
                                if (response.error) {
                                    $$('#sbox-content .formErrorMess').set('html', response.error);
                                } else {
                                    form.set('html', '<br><br><h2>Ваш запрос принят</h2>');
                                    setTimeout('SqueezeBox.close();', 2000);
                                }

                            }
                        }).post(form.toQueryString());
                        return false;
                    });
                }
            });

        }
		
		if ($defined($('catalog-menu'))) {
			var toglers = $$('#catalog-menu li span');
			var selectedIndex = toglers.indexOf($('catalog-menu').getElement('span.selected'));
			new Accordion(toglers, $$('#catalog-menu li div'), {
				display: -1,
				show: selectedIndex|0,
				alwaysHide: true,
				duration: 'short'
			});
		}
		
		tip = new FloatingTips('.product-attr-tip', {
			content: 'rel',
			position: 'top',
			showOn: 'click'
		});
		
		/* ajax cart initialization */
		if ($defined($('mcart'))) {
			cartOpen = parseInt(Cookie.read("cartmax"));
			if (cartOpen == null) {
				cartOpen = 1;
				Cookie.write("cartmax", cartOpen, {
					duration: basketLiveDays,
					path: '/'
				});
			}
			resize(cartOpen, 0);
			
			$('mcartmin').addEvent('click', function(){
				cartOpen = cartOpen ? 0 : 1;
				resize(cartOpen);
				Cookie.write("cartmax", cartOpen, {
					duration: basketLiveDays,
					path: '/'
				});
			});

			var tid = null;
			
			$('mcart').addEvent('mouseover', function(e){
				window.clearTimeout(tid);
				if (e.target.id != 'mcartmin') {
					return;
				}
				if (carthovermode) {
					resize(true);
				}
				cartmouseover = true;
			});
			
			$('mcart').addEvent('mouseout', function(e){
				tid = window.setTimeout(function(){
					if (carthovermode) {
						resize(false);
					}
					cartmouseover = false;
				}, 50);
			});
			
			checkWinSize();
		}
	});
	
//ajax cart
//templates
	var tpls = [
		'<tr class="mcartitem" rel="%1" price="%p"><td><a href="#" onclick="return cartDel(this);"><img src="/images/del16.png"/></a></td><td class="clip100" title="%t"><nobr>%2</nobr></td><td class="right">%3</td></tr>',
		'<input value="%1" readonly="true"/><a href="#" onclick="return cartQty(this,1);"><img src="/images/plus_small_white.png"/></a><br/><a href="#" onclick="return cartQty(this,-1);"><img src="/images/minus_small_white.png"/></a>',
		'<td><a class="to-basket" rel="%1" href="/?action=to_basket&bid[%1]=1&to_basket=1" onclick="return cartAdd(this);"><img src="/images/buy.gif" border="0"></a></td><td><a class="to-basket" rel="%1" href="/?action=to_basket&bid[%1]=1&to_basket=1" onclick="return cartAdd(this);">Добавить<br>в корзину</a></td>'
	];
	var carthovermode = false, cartmouseover = false
	function checkWinSize(){
		var w = $(window).getSize().x;
		if (w < 980 + 290) {
			if(!cartmouseover) {
				resize(false, 0);
			}
			carthovermode = true;
		} else {
			resize(cartOpen, 0);
			carthovermode = false;
		}
		setTimeout(checkWinSize, 1000);
	}

	function resize(currentState, time){
		time = $defined(time) ? time : 300;
		var right = currentState ? 0 : -290;
		
		$('mcart').set('morph', {
			duration: time
		});
		$('mcart').morph({
			'right': right
		});
		$('mcartmin').set('html',currentState?'<img src="/images/cartmin2a.gif"/>':'');
	}
				
	function formatPrice(s){
		s = "" + s;
		var r = "";
		while(s.length > 3){
			r = " " + s.substr(s.length - 3, 3) + r;
			s = s.substr(0, s.length - 3);
		}
		r = s + r;
		return r + " р.";
	}
	function cartRecalc(){
		var sum = 0, num = 0;
		$$("#mcartinner .mcartitem").each(function(item){
			var pid = item.get("rel");
			var qty = Cookie.read("basket[" + pid + "]");
			var price = parseFloat(item.get("price"));
			sum += qty * price;
			num++;
		});
		if (num == 0) {
			sum = "Ваша корзина пуста";
		} else {
			sum = formatPrice(sum);
		} 
		$('mcartsum').set('html', sum);
		$('mcartorder').setStyle('display', (num == 0) ? 'none' : 'block');
	}
	function htmlz(s){
		while(s.indexOf("'") >= 0) {
			s = s.replace("'", "&quot;");	
		}
		while(s.indexOf('"') >= 0) {
			s = s.replace('"', "&apos;");
		}
		return s;
	}
	//add product
	var cartbusy=false;
	function cartAdd(el){
		if(cartbusy)return;
		el = $(el);
		var it = el.getParent(".catitemaction");
		var pid = it.get("rel");
		cartbusy=true;
		new Request.JSON({
			url: '/index.php',
			onSuccess: function(r){
				it.set('html', '<td align="center"><a href="/basket_view/">В корзине</a></td>');

				Cookie.write("basket[" + pid + "]", 1, {duration: basketLiveDays, path: '/'});
				var s = $("mcartinner").get("html");
				s += tpls[0].replace("%1", pid).replace("%t", htmlz(r.title)).replace("%2", r.title).replace("%p", r.price).replace("%3", tpls[1].replace("%1", 1));
				$("mcartinner").set("html", s);
				
				$('mcartplus').setStyles({top:0, opacity:1, display:'block'});
				$('mcartplus').morph({top:32, opacity:0});
				setTimeout(function(){$('mcartplus').morph({display:'none'});}, 500);
				
				cartRecalc();
				cartbusy=false;
			},
			onError:function(t,e){
				cartbusy=false;
			}
		}).get({
			'action': 'basket',
			'do': 'get_product_title',
			'id': pid
		});
							
		return false;
	}

	//change product quantity
	function cartQty(el, d){
		el = $(el);
		var pid = el.getParent(".mcartitem").get("rel");
		var qty = Cookie.read("basket[" + pid + "]");
		qty = parseInt(qty) + d;
		if(qty > 0){
			Cookie.write("basket[" + pid + "]", qty, {duration: basketLiveDays, path: '/'});
			el.getParent("td").set("html", tpls[1].replace("%1", qty));
			cartRecalc();
		}
		return false;
	}

	//delete product
	function cartDel(el){
		el = $(el);
		var pid = el.getParent(".mcartitem").get("rel");
		Cookie.dispose("basket[" + pid + "]", {path: '/'});
		el.getParent(".mcartitem").dispose();
		$$(".catitemaction").each(function(item){
			if(item.get("rel") == pid)
				item.set("html", tpls[2].replace("%1", pid));
		});
		cartRecalc();
		return false;
	}
