var JCaption = new Class({
	initialize: function(selector)
	{
		this.selector = selector;

		var images = $$(selector);
		images.each(function(image){ this.createCaption(image); }, this);
	},

	createCaption: function(element)
	{
		var caption   = document.createTextNode(element.title);
		var container = document.createElement("div");
		var text      = document.createElement("p");
		var width     = element.getAttribute("width");
		var align     = element.getAttribute("align");

		if(!width) {
			width = element.width;
		}

		text.appendChild(caption);
		element.parentNode.insertBefore(container, element);
		container.appendChild(element);
		if ( element.title != "" ) {
			container.appendChild(text);
		}
		container.className   = this.selector.replace('.', '_');
		container.className   = container.className + " " + align;
		container.setAttribute("style","float:"+align);
		container.style.width = width + "px";

	}
});

document.caption = null
window.addEvent('load', function() {
  var caption = new JCaption('img.caption')
  document.caption = caption
});



MyScroll = function (mode,scroller, scroller_bar, menu,hwscr,hwmenu){
	this.mode=(mode)?1:0;
    this.canDrag = false;// Мы просто двигаем мышью по экрану или все-таки перетаскиваем ползунок
    this.prepared = false;
	
	this.naj=false;
	this.id;
	
	this.stepOffset=10;
	
    this.shift_xy;//начальный сдвиг ползунка
    this.delta=1;// На каждый пиксель сдвига бегунка мы будем сдвигать меню на величину delta


    this.scroller = scroller;//ползунок
    this.scrollerBar = scroller_bar;//полоса прокрутки
    this.menu = menu;//то что прокручиваем
	this.minScrollerHW=10;

    this.scrollerStartShift;// начальное положение ползунка
    this.menuStartShift;//отступ сверху / начало контента

    this.scrollerTrackHW = hwscr;//длинна полосы прокрутки 
    this.menuTrackHW;//высота контента

    this.scrollerHW;// длинна ползунка
    this.menuHW = hwmenu;//видимая длинна контента отступами

    this.step;
	this.fl=true;

    this.dontmove = false;
	
	this.a = false;
	this.d=0;
	this.scrollhide = function(flg){
		if(flg){
			this.scrollerBar.style.display="block";
			this.scroller.style.display="block";
		}else{
			this.scrollerBar.style.display="none";
			this.scroller.style.display="none";
		}
	}
    this.prepare = function(klod){
		this.scrollerTrackHW = hwscr;//длинна полосы прокрутки 
		this.menuHW = hwmenu;//видимая длинна контента отступами
        if($(this.scroller) && $(this.menu)){
            this.scroller = $(this.scroller);
			if(klod){
				if(this.mode)this.scroller.style.top=0+"px";else this.scroller.style.left=0+"px";
			}
            this.scrollerBar = $(this.scrollerBar);
            this.menu = $(this.menu);
			if(klod){
				if(this.mode)this.menu.style.marginTop=0+"px";else this.menu.style.marginLeft=0+"px";
			}
            this.scrollerStartShift = parseInt((this.mode)?this.scroller.style.top:this.scroller.style.left);
            this.menuStartShift = parseInt((this.mode)?this.menu.style.marginTop:this.menu.style.marginLeft);//вычисляем начало контента
            this.menuTrackHW =((this.mode)?this.menu.offsetHeight:this.menu.offsetWidth) + this.menuStartShift;//вычисляем общую длинну
            this.scrollerHW = Math.round( (this.menuHW * this.scrollerTrackHW) / this.menuTrackHW );//вычисляем длинну ползунка
           
			// 8 px - ширина стрелки => минимальная ширина скроллера 16px        
            this.scrollerHW = (this.scrollerHW < this.minScrollerHW) ?  this.minScrollerHW : this.scrollerHW;
            // максимальная ширина скроллера - ширина трэка
            this.scrollerHW = (this.scrollerHW > this.scrollerTrackHW) ?  this.scrollerTrackHW : this.scrollerHW;
            
            // устанавливаем длинну скроллера 
            if(this.mode)this.scroller.style.paddingBottom = this.scrollerHW - 8 + "px";else
			this.scroller.style.paddingRight = this.scrollerHW - 8 + "px";
            // теперь принимаем за скроллер точку (его верхнюю границу), все расчеты будем производить относительно нее
            // задаем  длинну трэка скроллера и меню
            this.scrollerTrackHW -= this.scrollerHW;
            this.menuTrackHW -= this.menuHW;
            
            // рассчитываем коэффициэнт
			if(this.scrollerTrackHW&&this.menuTrackHW){
				this.delta = this.menuTrackHW/ (this.scrollerTrackHW+1);
				this.scrollhide(1);
			}else {
				this.scrollhide(0);
			}
			
			

            this.prepared = true;
        }
        return false;
    }

    this.fixForBrowsers = function(event){// блокируем события внутри блока
		if(this.fl){
	        if (!event)event = window.event;// For IE.
	        if(event.stopPropagation)event.stopPropagation();
	        else event.cancelBubble = true;
	        if(event.preventDefault) event.preventDefault();
	        else event.returnValue = false;
		}
    }

    this.setStep = function(){
        //step = Math.round(scrollerWidth / 3 * 2);
        if(this.fl)this.step = Math.round(this.stepOffset * this.scrollerTrackHW / this.menuTrackHW);    
    }

    this.setPosition = function(newPosition){
		if(this.fl){
	        if(newPosition <= this.scrollerTrackHW + this.scrollerStartShift && newPosition >= this.scrollerStartShift){
	           if(this.mode) this.scroller.style.top = newPosition + "px";else
	            this.scroller.style.left = newPosition + "px";
	        }
	        else
	        {
	            if(newPosition >= this.scrollerTrackHW + this.scrollerStartShift){        
	                if(this.mode)this.scroller.style.top = this.scrollerTrackHW + this.scrollerStartShift + "px";else
	                 this.scroller.style.left = this.scrollerTrackHW + this.scrollerStartShift + "px";
	            }
	            if(newPosition < this.scrollerStartShift){
	                if(this.mode)this.scroller.style.top = this.scrollerStartShift + "px";else
	                 this.scroller.style.left = this.scrollerStartShift + "px";
	            }
	        }
			if(!this.delta)this.delta=1;
			if(this.mode)this.menu.style.marginTop = Math.round( (parseInt(this.scroller.style.top) - this.scrollerStartShift) * this.delta * (-1) ) + this.menuStartShift + "px";else
	         this.menu.style.marginLeft = Math.round( (parseInt(this.scroller.style.left) - this.scrollerStartShift) * this.delta * (-1) ) + this.menuStartShift + "px";
	        return false;
		}else return false;
    }

    this.drag = function(event){
		if(this.fl){
			this.naj=false;
	        if (!event)event = window.event;// For IE.
	        if (this.prepared){
	            this.canDrag = true;
	            this.shift_xy =(this.mode)?(event.clientY - parseInt(this.scroller.style.top)):(event.clientX - parseInt(this.scroller.style.left));
	            this.fixForBrowsers(event);
	        }    
	        return false;
		}
    }

    this.movescroller = function(event){
		if(this.fl){
	        if (!event)event = window.event;// For IE.
	        if (this.prepared && !this.dontmove){
	            this.setStep();
	            var clickXY =(this.mode)?( event.layerY ? event.layerY : event.offsetY):( event.layerX ? event.layerX : event.offsetX);
	            var currentPosition = parseInt((this.mode)?this.scroller.style.top:this.scroller.style.left);               
	            var i = (clickXY > currentPosition) ? 1 : -1;
	            var newPosition = 2*i*this.step + parseInt((this.mode)?this.scroller.style.top:this.scroller.style.left); 
	            this.setPosition(newPosition);
	            this.fixForBrowsers(event);
	        }
	        else{
	            this.dontmove = false;
	        }
	        return false;
		}else return false;
    }

    this.move = function(event){
		if(this.fl){
	        if (!event)event = window.event;// For IE.
	        if (this.prepared && this.canDrag){
	            this.setPosition(((this.mode)?event.clientY:event.clientX)-this.shift_xy);
	            this.fixForBrowsers(event);
	        }
	        return false;
		}
    }

    this.drop = function(){
	if(this.fl){
		this.naj=false;
        this.canDrag=false;
	}	
    }
    
    this.scrollerClickHandler = function(){
        if(this.fl)this.dontmove=true;    
    }    

    this.handle = function(delta, event){
        if(this.fl){
			if (!event)event = window.event;// For IE.
	        var i = (delta < 0) ? 1 : -1;
	        this.setStep()
	        var currentPosition = parseInt((this.mode)?this.scroller.style.top:this.scroller.style.left);               
	        var newPosition = i*this.step + currentPosition; 
	        this.setPosition(newPosition);        
	        this.fixForBrowsers(event);   
		}			
    }

    this.cancelWheelAction = function(event){
		//Отменяем действие колеса
		if(this.fl){
	        if (!event)event = window.event;// For IE.
	        if (event.preventDefault)event.preventDefault();
	        event.returnValue = false;
		}
    }
    this.wheel = function(event){
		if(this.fl){
	        var delta = 0;
	        if (!event)event = window.event; // For IE.
	        if (event.wheelDelta)delta = event.wheelDelta/120;// IE/Opera.;
	        else if (event.detail)delta = -event.detail/3;//Mozila
	        if (delta){
	            this.handle(delta, event);
	            this.cancelWheelAction(event);
	            this.fixForBrowsers(event);
	            return false;
	        }
		}
    }
	
}
/*	
	Параметры:
	1) 1 вертикальный скрулбар,2-горизонтальный
	2) id ползунок
	3) id полоса прокрутки
	4) id контента 
	5) длинна полосы прокрутки
	6) длинна видимой части контента
*/

function Update(step){
		if(second.naj){
			second.setPosition(parseInt((second.mode)?second.scroller.style.top:second.scroller.style.left)+step);
			second.id=window.setTimeout("Update("+step+")",10);
		}else
		window.clearTimeout(second.id);
}
function setPos(mode,reg){
		second.naj=reg;
		if(second.naj)Update((mode=="up")?-1:1);
}
var rt='';
function handleOnMouseUp(event){
	second.drop(event);
}
function handleOnMouseMove(event){
	second.move(event);
}



function handleOnClickBarSecond(event){second.movescroller(event);second.naj=false;}
function handleOnMouseDownSecond(event){second.drag(event);second.naj=false;}
function handleOnClickSecond(event){second.scrollerClickHandler(event);second.naj=false;}
function handleOnMouseWheelSecond(event){second.wheel(event);}

function init(){
	//alert('init');
    document.onmousemove = handleOnMouseMove;
    window.onmouseup = handleOnMouseUp;
	second.prepare(1);
    $('scroller_bar2').onclick = handleOnClickBarSecond; 
    $('movemenu2').onmousedown = handleOnMouseDownSecond;
    $('movemenu2').onmouseup = handleOnMouseUp;
    $('movemenu2').onclick = handleOnClickSecond;  
    /* Инициализация обработчика колеса мыши */
   if ($('withscript2').addEventListener)
        $('withscript2').addEventListener('DOMMouseScroll', handleOnMouseWheelSecond, false);
    $('withscript2').onmousewheel = handleOnMouseWheelSecond;
	document.onmouseup = handleOnMouseUp;
	second.scrollhide(0);
}
window.onload =init; //init;
//var first =new MyScroll(1,'scroller1', 'scroller_bar1', 'movemenu1',395,400);
var second =new MyScroll(1,'scroller2', 'scroller_bar2', 'movemenu2',420,420);
/*
window.addEvent('domready', function() {
 	var myVerticalSlide = new Fx.Slide('forum_add');
	myVerticalSlide.hide();
	$('new-theme-top').addEvent('click', function(e){ $('new-theme-bottom').hide(); myVerticalSlide.slideIn(); });
	$('new-theme-bottom').addEvent('click', function(e){ $('new-theme-bottom').hide(); myVerticalSlide.slideIn(); });
});*/

function getElems(Qparent){var mas=Qparent.childNodes,res=[];for(var i=0;i<mas.length;i++){if(mas[i].nodeType==3)continue;res.push(mas[i])}return res;}
function set_pos(obj, k){
	var mas = getElems(getElems(obj.parentNode.parentNode)[1]);
	for(var i=0;i<mas.length;i++) if(mas[i].style.display!='none') if ((i+k>=0)&&(i+k+1<=mas.length)){
		mas[i].style.display='none';
		mas[i+k].style.display='block';
		obj.parentNode.getElementsByTagName('SPAN')[0].innerHTML = (i+k+1)+' из '+mas.length;
		break;
	}
}

function forum_go(){
	var obj = document.getElementById('themes'), val = obj.options[obj.selectedIndex].value;
	if( (val)&&(val!='')) window.location = val;
}
