var galWaiter, galWin;

var CCarousel=new Class(
{
	wStep: false,
	hStep: false,
	curX: 0,
	curY: 0,
	widthX: 0,
	widthY: 0,
	length: 0,
	obj: false,
	init: function(obj)
	{
		this.obj=obj;
		//clean obj
		for(var i=0; i<obj.childNodes.length; i++)
			if(obj.childNodes[i].nodeType!=1) obj.removeChild(obj.childNodes[i]);
		var fst=this.obj.firstChild;
		this.length=obj.childNodes.length;
		this.wStep=fst.offsetWidth;
		this.hStep=fst.offsetHeight;
		this.widthX=Math.floor(obj.clientWidth/this.wStep);
		this.widthY=Math.floor(obj.clientHeight/this.hStep);
		// fx
		this.fx=new TFx(this.obj, false);
		this.fx.fps=15;
		this.fx.setActions(
		{
			'scrollX': { 'scrollLeft': [false, 100, [TFx.style.pow, 2], ''] },
			'scrollY': { 'scrollTop': [false, 100, [TFx.style.pow, 2], ''] }
		});
	},
	stepTo: function(x, y)
	{
		if(x>this.length-this.widthX) x=this.length-this.widthX;
		if(y>this.length-this.widthY) y=this.length-this.widthY;
		if(x<0) x=0; if(y<0) y=0;
		//this.obj.scrollTop=y*this.hStep;
		this.fireEvent('scroll', [x, this.widthX, this.length]);
		this.fx.acts['scrollX']['scrollLeft'].end=x*this.wStep;
		this.fx.acts['scrollY']['scrollTop'].end=y*this.hStep;
		if(this.widthX>1) this.fx.start(500, 'scrollX');
		if(this.widthY>1) this.fx.start(500, 'scrollY');
		this.curX=x;
		this.curY=y;
	},
	stepRel: function(x, y)
	{
		this.stepTo(this.curX+x, this.curY+y);
	},
	addController: function(elem, type)
	{
		switch(type)
		{
			case 'left': tool.addEvent(elem, 'click', tool.bind(this.stepRel, this, [-1, 0])); break;
			case 'right': tool.addEvent(elem, 'click', tool.bind(this.stepRel, this, [1, 0])); break;
			case 'up': tool.addEvent(elem, 'click', tool.bind(this.stepRel, this, [0, -1])); break;
			case 'down': tool.addEvent(elem, 'click', tool.bind(this.stepRel, this, [0, 1])); break;
		}
	}
});


var galOnLoad=function()
{
	var thumbs=$$('.galleryImg');
	for(var i=0; i<thumbs.length; i++)
		tool.addEvent(thumbs[i], 'click', galClick );
	var thumbs=$$('.layGallery img');
	for(var i=0; i<thumbs.length; i++)
		tool.addEvent(thumbs[i], 'click', galClick );
	var thumbs=$$('.layLeftGal img');
	for(var i=0; i<thumbs.length; i++)
		tool.addEvent(thumbs[i], 'click', galClick );
	galWaiter=new Elements.waiter();
	galWin=new Elements.window(100,100);
	if($$('.layLeftGal')[0])
	{
		var crsl=new CCarousel($$('.layLeftGal')[0]);
		crsl.addController($$('.arrUp')[0], 'up');
		crsl.addController($$('.arrDown')[0], 'down');
	}
	if($('galPhoto'))
	{
		var crsl=new CCarousel($('galPhoto'));
		crsl.addEvent('scroll', function(from, to, total)
			{
				$$('.photo .from')[0].innerHTML=from+1;
				$$('.photo .to')[0].innerHTML=from+to;
				$$('.photo .total')[0].innerHTML=total;
			});
		crsl.addController($('ctrlPhotoLeft'), 'left');
		crsl.addController($('ctrlPhotoRight'), 'right');
		crsl.stepTo(0,0);
	}
	if($('galVideo'))
	{
		var crsl=new CCarousel($('galVideo'));
		crsl.addEvent('scroll', function(from, to, total)
			{
				$$('.video .from')[0].innerHTML=from+1;
				$$('.video .to')[0].innerHTML=from+to;
				$$('.video .total')[0].innerHTML=total;
			});
		crsl.addController($('ctrlVideoLeft'), 'left');
		crsl.addController($('ctrlVideoRight'), 'right');
		crsl.stepTo(0,0);
	}
};

var galClick=function(e)
{
	galWaiter.showModal(false, false, Elements.swCenter);
	var ajax=new Ajax('get');
	ajax.addEvent('success', function()
	{
		var w=window.innerWidth || document.html.clientWidth;	w*=0.8;
		var h=window.innerHeight || document.html.clientHeight;	h*=0.8;
		galWin.setWidth(w); galWin.setHeight(h);
		galWin.content.innerHTML=this.response.text;
		var img=$$('.galDetail img')[0];
		var imgCont=$$('.galDetail .img')[0];
		img.onload=function()
		{
			var w=imgCont.clientWidth; var h=imgCont.clientHeight;
			
			img.controlParam=(w/h < img.width/img.height) ? 'width' : 'height';
			img.style[img.controlParam]='100%';
		}
		//$$('.galDetail img')[0].style['width']='100%';
		galWaiter.hide();
		// ýôôåêò
		var fx=new TFx(galWin.elem);
		fx.fps=10;
		fx.setActions({ 'in': { 'opacity': [0, 1, [TFx.style.pow, 2], '0']} });
		if(tool.ie) galWin.elem.style['filter']='alpha(opacity=0)';
		else galWin.elem.style['opacity']='0';
		galWin.showModal(false, false, Elements.swCenter);
		if($('galParamFlv'))
		{
			var params={ 'file': $('galParamFlv').innerHTML, 'image': $('galParamAlt').innerHTML };
			var flashVars={'allowfullscreen': 'true', 'allowscriptaccess': 'always'};
			swfobject.embedSWF('/public/flash/player.swf', 'galAlter', '100%', '100%', '9.0.0', 'expressInstall.swf', params, flashVars); 
		}
		fx.start(500, 'in');
	});
	ajax.send(e.target.name);
};

var galZoomIn=function()
{
	var img=$$('.galDetail img')[0];
	var cur=parseInt(img.style[img.controlParam]);
	if(!cur) cur=100;
	img.style[img.controlParam]=(cur<<1)+'%';
};

var galZoomOut=function()
{
	var img=$$('.galDetail img')[0];
	var cur=parseInt(img.style[img.controlParam]);
	if(!cur) cur=100;
	img.style[img.controlParam]=(cur>>1)+'%';
};

var galZoom1=function()
{
	var img=$$('.galDetail img')[0];
	var cur=parseInt(img.style[img.controlParam]);
	img.style[img.controlParam]='auto';
};

var galZoomFit=function()
{
	var img=$$('.galDetail img')[0];
	var cur=parseInt(img.style[img.controlParam]);
	img.style[img.controlParam]='100%';
};

tool.addEvent(window, 'load', galOnLoad);
