var scroll = 0;
var MessageBox = function(obj,title,message)
{
    var startx,starty,endx,endy,startw,starth,endw,endh;
    obj = obj ? $(obj) : false;
    title = title || '';
    message = message || '';
    var wnd = new Element('div',{'id':'msgwindow','style':{'position':'absolute','visibility':'hidden','z-index' : '1000'}});
    var button = new Element('button',{'html':'OK',on:{'click':function(){
	$('msgwindow').remove();
    }}});
    wnd.append(new Element('div',{'class':'title','html':title}),new Element('div',{'class':'body','html':message}),new Element('div',{'class':'buttons','style':{'text-align':'center'}}).append(button)); 
    $(document.getElementsByTagName('body')[0]).append(wnd);
    var wnddim = wnd.dimensions();
    endw = wnddim.width;
    endh = wnddim.height;
    var wndsize = $(window).size();
    var scrolls = $(window).scrolls();
    endx = wndsize.x / 2 - endw / 2 + scrolls.x;
    endy = wndsize.y / 2 - endh / 2 + scrolls.y;
    if(obj)
    {
	var pos = obj.position();
	var dim = obj.dimensions();
	startx = pos.x + dim.width / 2;
	starty = pos.y + dim.height / 2;
    }
    else
    {
	startx = wndsize.x / 2;
	starty = wndsize.y / 2;
    }
    wnd.setStyle({'width':'0px','height':'0px','left':startx+'px','top':starty+'px','visibility':'visible'});
    wnd.morph({'top':endy+'px','left':endx+'px','width':endw+'px','height':endh+'px'});
}

$(document).onReady(function(){
    var _body = this;
    var gallery = $('gallery');
    if(gallery)
    {
	var arrows = gallery.find('.arrow');
	arrows.each(function(element,i){
	    element.on('mousedown',function(){
		if($(this._).hasClass('leftarrow')) step = 100;
	        else step = -100;
		if(scroll + step > 100) scroll = 0;
		else if(scroll + step == 100) return;
		else
		{
		    var width = $('galslider').get('offsetWidth');
		    if(width + scroll + step < 400) return;
		}
		$(this._).addClass('hover');
		scroll += step;
		$('galslider').morph({'left':scroll + 'px'},{'duration':'long'});    
		if(scroll >= 0) $('gallery').first('.leftarrow').addClass('disabled');
		else $('gallery').first('.leftarrow').removeClass('disabled');
		var width = $('galslider').get('offsetWidth');
		if(width + scroll < 500) $('gallery').first('.rightarrow').addClass('disabled');
		else $('gallery').first('.rightarrow').removeClass('disabled');
	    });
	    element.on('mouseup',function(){
		$(this._).removeClass('hover');
	    });
	});
    }
    var list = this.find('.compare');
    if(list)
    {
	list.each(function(obj){
	    obj.on('click',function(){
		
		var id = obj.get('id');
		id = id.substring(4);
		var flyfrom = $('compare_block');
		var current = $('tmenu').first('li.selected').first('span').text();
		var stored = Cookie.get('current_folder');
		if(stored != null && stored != '' && stored != current)
		{
		    MessageBox(flyfrom,'Сравнение','Только оборудование из категории «' + stored + '» может быть добавлено в сравнение');
		    return;
		}
		var cookie = Cookie.get('compare');
		if(cookie)
		{
		    var arr = cookie.split(',');
		    if(arr.length >= 4)
		    {
			MessageBox(obj,'Сравнение','В сравнение можно добавить не более 4 едениц оборудования');
			return;
		    }
		    for(var i = 0;i < arr.length;i ++) if(arr[i] == id)
		    { 
			MessageBox(obj,'Сравнение','Это оборудование уже добавлено в сравнение');
		        return;
		    }
		}
		cookie = ((cookie == null || cookie == '')? '' : cookie + ',') + id;
		Cookie.set('compare',cookie,{'path':'/'});
		Cookie.set('current_folder',current,{'path':'/'});
		MessageBox(flyfrom,'Сравнение','Оборудование добавлено в сравнение');
		Xhr.load('/service/compare.html',{
		    onSuccess : function(request){
			if(request != '')
			{
			    var html = request.responseText;
			    $('compare_block').html(html);
			}
		    }
		});
	    });
	});
    }
    var buttons = this.find('.btn_small');
    var buttons2 = this.find('.btn_big');
    buttons = buttons.merge(buttons2);
    if(buttons)
    {
	buttons.each(function(button){
	    button.on('mouseover',function(){
		button.addClass('hover');
	    });
	    button.on('mouseout',function(){
		button.removeClass('hover');
	    });
	});
    }
    var tables = this.find('table.colorize');
    if(tables)
    {
	tables.each(function(table){
	    var rows = table.find('tr');
	    if(rows)
	    {
		rows.each(function(row,i){
		    if(i % 2) row.addClass('odd');
		});
	    }
	});
    }
    var sliders = this.find('.slider_link');
    if(sliders)
    {
	sliders.each(function(slider){
	    var block = slider.nextSiblings('.slider_block');
	    if(block.length == 0) block = slider.parent().nextSiblings('.slider_block');
	    if(block.length > 0)
	    {
		block = block.first();
		slider.on('click',function(){
		    if(block.hasClass('hidden'))
		    {
			sliders.each(function(o){
			    if(o.hasClass('active')) o.removeClass('active');
			});
			_body.find('.slider_block').each(function(o){
			    if(!o.hasClass('hidden'))
			    { 
				o.morph({'height' : '0px'}).removeClass('shown').addClass('hidden');
			    }
			});
			slider.addClass('active');
			block.setStyle({'height' : '0px'}).removeClass('hidden').addClass('shown');
			var height = block.get('scrollHeight');
			block.morph({'height' : height + 'px'});
		    }
		    else
		    {
			slider.removeClass('active');
			block.morph({'height' : '0px'}).removeClass('shown').addClass('hidden');
		    }
		});
	    }
	    slider.on('mouseover',function(){
		slider.addClass('hover');
	    });
	    slider.on('mouseout',function(){
		slider.removeClass('hover');
	    });
	});
    }
    var power_tbl = $('power_tbl');
    if(power_tbl)
    {
	var allcnt = 0;
	var updateCnt = function(){
	    var els = _body.find('.power_cnt');
	    if(els)
	    els.each(function(el){
		if(el.match('input')) el.set('value',allcnt);
		else el.text(allcnt);
	    });
	};
	var tbl_tr = power_tbl.find('tr');
	tbl_tr.each(function(tr,i){
	    if(i % 2) tr.addClass('odd');
	    var checkbox = tr.first('.chk');
	    var minus = tr.first('.minus');
	    var field = tr.first('.cnt');
	    var plus = tr.first('.plus');
	    var pwr = tr.first('.pwr');
	    if(!checkbox || !minus || !field || !plus || !pwr) return;
	    var power = parseInt(pwr.get('value'));
	    minus.set('disabled','disabled');
	    field.set('disabled','disabled');
	    plus.set('disabled','disabled');
	    checkbox.on('click',function(){
		if(checkbox.get('checked'))
		{
		    minus.erase('disabled');
		    field.erase('disabled');
		    plus.erase('disabled');
		    field.set('value','1');
		    allcnt += power;
		    updateCnt();
		}
		else
		{
		    minus.set('disabled','disabled');
		    field.set('disabled','disabled');
		    var cnt = parseInt(field.get('value'));
		    if(cnt > 0) allcnt -= (cnt * power);
		    updateCnt();
		    field.set('value','0');
		    plus.set('disabled','disabled');
		}
	    });
	    minus.on('click',function(){
		var value = parseInt(field.get('value'));
		if(value == 0) return;
		value --;
		allcnt -= power;
		updateCnt();
		field.set('value',value);
	    });
	    plus.on('click',function(){
		var value = parseInt(field.get('value'));
		if(value > 100) return;
		value ++;
		allcnt += power;
		updateCnt();
		field.set('value',value);
	    });
	});
    }
    var search_block = $('search_block');
    if(search_block)
    {
	var pages = search_block.find('.pagination');
	if(pages)
	{
	    pages.each(function(page_link){
		page_link.on('click',function(){
		    var id = page_link.get('id').substring(8);
		    var page = $('page' + id);
		    var last_page = search_block.find('.current');
		    if(last_page)
		    {
			last_page = last_page.first();
			last_page.removeClass('current');
			last_page.addClass('hidden');
		    }
		    page.removeClass('hidden');
		    search_block.find('.pagination').filter('hasClass','sel').first().removeClass('sel');
		    page.addClass('current');
		    page_link.addClass('sel');
		});
	    });
	}
    }
    var pseudolinks = this.find('.a');
    if(pseudolinks)
    {
	pseudolinks.each(function(link){
	    link.on('mouseover',function(){
		link.addClass('hover');
	    });
	    link.on('mouseout',function(){
		link.removeClass('hover');
	    });
	});
    }
});
