Page={};
Menu={};
Search={};
Faq={};
Basket={};
Filters={};
Compare={};

Menu.Interactivate = function()
{
	if($('menu')) $('menu').getChildren().each(function(v){	
		var submenu = $(v.getElementsByTagName('ul')[0]);
		if(submenu)
		{
			v.effect = new Fx.Tween(submenu, {property: 'opacity', duration:500, wait:false});
			v.effect.set(0);
			submenu.setStyle('display', 'block');
			v.addEvent('mouseenter', function(){
				v.effect.start(1);
			}).addEvent('mouseleave', function(){
				v.effect.start(0);
			});
		}
	});
}

Page.EnableTips = function()
{
	Page.Tips = new Tips($$('*').filter(function(item, index){return item.title!='';}));
}

Page.EnableCustomSelects = function()
{
	var cs = $$('div.cs');
	for(var i=0; i<cs.length; i++)
	{
		var div=cs[i].getElementsByTagName('div')[2];
		if(div)
		{
			cs[i].slide = new Fx.Slide(div, {mode:'vertical', wait:false, duration:300, transition:Fx.Transitions.Quad.easeOut});
			cs[i].slide.hide();
		}
		var ass = div.getElementsByTagName('a');
		for(var ai=0; ai<ass.length; ai++)
		{
			$(ass[ai]).setStyle('visibility','visible');
		}
		cs[i].addEvent('mouseenter', function(){
			if(this.slide) this.slide.slideIn();
		}).addEvent('mouseleave', function(){
			if(this.slide) this.slide.slideOut();
		});
	}
}

Search.Interactivate = function()
{
	$('search-label').addEvent('click',function(){
		Search.Focus();
	});
}

Search.Focus = function()
{
	$('search-field').focus();
}

Faq.Interactivate = function()
{
	var items = $$('div.faq-item');
	for(var i=0; i<items.length; i++)
	{
		var toggler = $(items[i]).getLast();
		toggler.addEvent('click', function(e){
			new Event(e).preventDefault();
			if(this.getPrevious().getStyle('display')=='block')
			{
				this.getPrevious().setStyle('display', 'none');
				this.set('text','показать ответ');
			} else {
				this.getPrevious().setStyle('display', 'block');
				this.set('text','скрыть ответ');
			}
		});
	}
}

Filters.Apply = function(section, name, value)
{
	Filters.Data[section][name] = value;
	Filters.Request.get(Filters.Data);
	Filters.LinkRequest.get(Filters.Data);
}

Filters.Set = function(section, name, value)
{
	Filters.Data[section][name] = value;
	return Filters;
}

Filters.Interactivate = function()
{
	Filters.Request = new Request.HTML({
	    url: '/js/ajax/catalog.php', 
	    method: 'get',
	    onSuccess: function(html,a,code) {
			if(!Filters.DisabledUpdate)
			{
				$('catalog-list').set('text', '');
				$('catalog-list').adopt(html);
				$('catalog-list').setStyle('display','none');
				(function(){$('catalog-list').setStyle('display','')}).delay(100);
			} else {
				$('compare-check').set('text', '');
				$('compare-check').adopt(html);
				$('compare-check').setStyle('display','none');
				(function(){$('compare-check').setStyle('display','')}).delay(100);
			}
	    },
	    onFailure: function() {
	        $('catalog-list').set('text', 'The request failed.');
	    }
	});
	
	Filters.LinkRequest = new Request.HTML({
	    url: '/js/ajax/catalog.link.php', 
	    method: 'get',
	    onSuccess: function(a,b,html) {
	        $('catalog-link').set('value', html);
	    },
	    onFailure: function() {
	        $('catalog-link').set('value', 'The request failed.');
	    }
	});
	
	if($('filters-function'))
	{
		$$($('filters-function'), $('filters-brand'), $('filters-speed'), $('filters-format'), $('filters-colour')).each(function(f){
			f.getNext().getElements('a').each(function(v){
				v.addEvent('click', function(e){
					new Event(e).preventDefault();
					this.getParent().getParent().getParent().getParent().slide.slideOut();
					this.getParent().getParent().getParent().getPrevious().set('html',this.get('html'))
					Filters.Apply('query',this.getParent().getParent().getParent().getPrevious().get('name'), this.get('key'));
				});
			});
		});
		
		$('filters-colour').addEvent('click', function(e){
			Filters.Apply('query', this.get('name'), this.checked?'1':'0');
		});
		
		$$($('filters-price-from'), $('filters-price-to')).each(function(f){
			f.addEvent('keydown', function(e){
				e = new Event(e);
				if(!e.key.test("[0-9\$#]|backspace|left|right|end|home|delete|tab")) e.preventDefault();	
			}).addEvent('keyup', function(e){
				if(e.key.test("[0-9\$#]|backspace|left|right|end|home|delete|tab"))
				{
					$clear(this.timer);
					this.timer = function(){
						Filters.Apply('query', this.get('name'), this.get('value'));
					}.delay(1000,this);
				}
			});
		});
		
		$('view-full').addEvent('click', function(e){
			new Event(e).preventDefault();
			$('view-short').removeClass('active');
			$('view-full').addClass('active');
			Filters.Apply('query', 'list', 1);
		});
		
		$('view-short').addEvent('click', function(e){
			new Event(e).preventDefault();
			$('view-full').removeClass('active');
			$('view-short').addClass('active');
			Filters.Apply('query', 'list', 0);
		});
		
	}
}

Compare.Interactivate = function()
{
	Compare.Request = new Request.HTML({
	    url: '/js/ajax/catalog.compare.php', 
	    method: 'get',
	    onSuccess: function(html) {
	        $('compare-block').set('text', '');
	        $('compare-block').adopt(html);
			Filters.Request.get(Filters.Data);
	    },
	    onFailure: function() {
	        $('compare-block').set('text', 'The request failed.');
	    }
	});
}

Compare.Add = function(id)
{
	Compare.Items['item'+id]=id;
	Compare.Request.get(Compare.Items);
}

Compare.Remove = function(id)
{
	Compare.Items['item'+id]=undefined;
	Compare.Request.get(Compare.Items);
}

Compare.Clean = function()
{
	Compare.Items = {};
	Compare.Request.get(Compare.Items);
}

Basket.Interactivate = function()
{
	Basket.Request = new Request.HTML({
	    url: '/js/ajax/catalog.basket.php', 
	    method: 'get',
	    onSuccess: function(html) {
	        if($('basket-counter'))
			{
				$('basket-counter').set('text', '');
				$('basket-counter').adopt(html);
			}
			
			if($('basket'))
			{
				/*$('basket').getElement('table').empty().adopt(html);*/
				Basket.UpdateSumPrice();
			}
	    },
	    onFailure: function() {
	        if($('basket-counter')) $('basket-counter').set('text', 'The request failed.');
	    }
	});
	
	if($('basket'))
	{
		var table = $('basket').getElement('table').getElements('tr');
		table.each(function(tr){
        if ($(tr.getElementsByTagName('td')[1].getElement('input'))!=null)
        {
			$(tr.getElementsByTagName('td')[1]).getElement('input').addEvent('keydown', function(e){
				e = new Event(e);
				if(!e.key.test("[0-9\$#]|backspace|left|right|end|home|delete|tab")) e.preventDefault();	
			}).addEvent('keyup', function(e){
				if(e.key.test("[0-9\$#]|backspace|left|right|end|home|delete|tab"))
				{
					$clear(this.timer);
					this.timer = function(){
                        if(this.get('value')=='') this.value=0;
						Basket.Request.get({returntype:'list', action:'set', item:this.get('item_id'), num:this.get('value')});
					}.delay(1000,this);
				}
			});
		}});
	}
}

Basket.Add = function(id)
{
	Basket.Request.get({returntype:'status', action:'add', item:id});
}

Basket.Remove = function(id)
{
	Basket.Request.get({returntype:'list', action:'remove', item:id});
}
Basket.Clear = function(id)
{
    Basket.Request.get({returntype:'list', action:'clear', item:id});        
}
Basket.UpdateSumPrice = function()
{
	var table = $('basket').getElement('table').getElements('tr');
	$('sum-price').sum=0;
	table.each(function(tr){	
		$('sum-price').sum += tr.getElement('span').get('text').toFloat() * tr.getElement('input').get('value').toInt();
	});
	$('sum-price').set('text', $('sum-price').sum + ' р.');
}

Window.Init = function()
{
	Menu.Interactivate();
	Page.EnableTips();
	Page.EnableCustomSelects();
	Search.Interactivate();
	Search.Focus();
	Faq.Interactivate();
	Filters.Interactivate();
	Compare.Interactivate();
	Basket.Interactivate();
}

window.addEvent('domready', Window.Init);