	jQuery.fn.galleryScroll = function(_options){
		// defaults options	
		var _options = jQuery.extend({
			btPrev: 'a.btn-left',
			btNext: 'a.btn-right',
			holderList: 'div',
			scrollElParent: 'ul',
			scrollEl: 'li',
			duration: 1500,
			curFase: 0,
			step: 1,
			activeClass: 'active',
			activePosition: 2,
			articleClass: '.switch-holder',
			articleList: '.switch-content',
			articleHeight: 500,
			articleCurHeight: 0,
			articleDuration: 1500
		}, _options);
	
		return this.each(function(){
			var _this = jQuery(this);
			var _other = jQuery(_options.articleClass);
			
			var _holderBlock = jQuery(_options.holderList,_this);
			var _gWidth = _holderBlock.width();
			var _animatedBlock = jQuery(_options.scrollElParent,_holderBlock);
			var _liWidth = jQuery(_options.scrollEl,_animatedBlock).outerWidth(true);
			var _liSum = jQuery(_options.scrollEl,_animatedBlock).length * _liWidth;
			var _liNum = jQuery(_options.scrollEl,_animatedBlock).length - _options.step;
			var _articlePosition = (_options.activePosition-1)*_options.articleHeight;
			var _index = _options.activePosition-1;
			
			jQuery(_options.articleList, _other).css({top: -_articlePosition});
			_options.articleCurHeight = -_articlePosition;
			
			addActive(jQuery(_options.scrollEl, _this)[_index]);
			addActive(_options.btPrev, _this)
			if (_options.step > 0) {addActive(_options.btPrev, _this);}
			if (_index <= _liNum) {addActive(_options.btNext, _this);}
			
			
			// add active li in switcher
			function addActive(el) {
				jQuery(el).addClass(_options.activeClass);
			}
			
			// deleta active before add
			function deleteActive(el) {
				jQuery(el).removeClass(_options.activeClass);
			}
			
			// rotate left
			jQuery(_options.btPrev,_this).click(function(){
				if (_index != 0) {
					_options.curFase += _liWidth;
					_options.articleCurHeight += _options.articleHeight;
					jQuery(_options.scrollElParent, _this).animate({left: _options.curFase}, _options.duration);
					jQuery(_options.articleList, _other).animate({top: _options.articleCurHeight}, _options.articleDuration);
					var li = jQuery(_options.scrollEl, _this);
					_index--;
					deleteActive(_options.scrollEl, _this);
					addActive(li[_index]);
				}
				return false;
			})
			
			// rotate right
			jQuery(_options.btNext,_this).click(function(){
				if (_index < _liNum) {
					_options.curFase -= _liWidth;
					_options.articleCurHeight -= _options.articleHeight;
					jQuery(_options.scrollElParent, _this).animate({left: _options.curFase}, _options.duration);
					jQuery(_options.articleList, _other).animate({top: _options.articleCurHeight}, _options.articleDuration);
					var li = jQuery(_options.scrollEl, _this);
					_index++;
					deleteActive(_options.scrollEl, _this);
					addActive(li[_index]);
				}
				return false;
			})
			
			// auto slide
			function autoSlide(autoSlideDuration){
			//if (_options.circleSlide) {
				jQuery(_options.btNext,_this).trigger('click');
			//}
		};
			
		})
	
		
	}


$(document).ready(function(){

	//object slider
	var sliderWidthArray = new Array(0,899,349,299,224,179,149,99,49);
	
	currentLi = $('.switch-info > li');
	currentGate = $('.gates-holder > li');
	
	var slider = {
		sliderLi: currentLi.length,
		w: sliderWidthArray[currentLi.length],
		left: sliderWidthArray[currentLi.length]/2 - 15
	};
	
	$('.switch-info > li').css('width', slider.w);
	$('.switch-info > li > a').click(function(){
		var delLi = $(this).parent().parent();
		$(delLi).find('.active').removeClass('active');
		$(this).parent().addClass('active');
		var rest = findActive();
		var y = slider.w*(rest) + (slider.left);
		$('.gates-holder > li').find('.arrow').css('left', y);
		rotateGates(rest);
		return false;
	});
	
	function rotateGates(rest) {
		var x = -916*rest;
		$('.gates-holder').animate({left: x}, 200);
		$('.gates-holder').find('.active').removeClass('active');
		$(currentGate[rest]).addClass('active');
	}

	function findActive() {
		var i;
		for(i = 0; i < currentLi.length; i++) {
			if ($(currentLi[i]).hasClass('active')) {
				return i
			};
		}
	}
	
	
//preload images
if (document.images) {
	preload_image_object = new Image();
	// set image url
	image_url = new Array();
	big_image_url = new Array();
	for(var i=0; i<13; i++) {
		image_url[i] = "images/img-g-"+(i+1)+".jpg";
		big_image_url[i] = "images/img-"+(i+1)+".jpg";
		preload_image_object.src = image_url[i];
	}
}


	//variables
	var isIE=(navigator.appName.indexOf("Microsoft")!=-1)?true:false;
	var R1 = 100;
	var mHeight, newPos, position, mNewWidth, mNewHeight, getPercent;
	var a = new Array(); //array position
	var all = [];
	var e = $('#items > div'); //array list
	var t = $(e);
	//associative array
	for (var i=0; i< t.length; i++) {
		$(t[i]).attr('id', 'id-'+i);
		all["id-"+i] = i;
	}

	d = t.children().children(); //array image

	//generator image
	for (var i=0; i < d.length; i++) {
		var mRand = Math.floor(Math.random()*image_url.length);
		var mSrc = image_url.splice(mRand, 1);
		d[i].src = mSrc; 
		var big_mSrc = big_image_url.splice(mRand, 1);
		$(t[i]).children().attr('href', big_mSrc);
	}

	var constNewHeight = $(d).height();
	var constNewWidth = $(d).width();
	var K = parseInt(e.length);
	a = getSort(K);
	for (var n = 0; n < K; n++) {
		position = a[n];
		newPos = parseInt(Math.abs(position));
		searchPosition(t[n], d[n], R1, newPos)
	}
	
	//compare, sort array position
	function compare(a, b) {
		return a - b;
	}
	
	//calculate position, and sort it
	function getSort(K) {
		for (var n=0; n<K; n++) {
			a1 = 2*n*Math.PI/K;
			a[n] = Math.sin(a1)*R1;
		}
		return a.sort(compare);
	}
	
	//rotate method
	function rotatorAnim(t, d, position, w, h, mTop, zindex) {
		var x = (position-w/2);
		if (isIE) $(t).css('zIndex', zindex);
		else $({z: ~~$(t).css('zIndex')}).animate({z: zindex}, {step: function() {$(t).css('zIndex', ~~this.z);}, duration: 200});
		$(t).stop().animate({left: x, top: (mTop)}, 300);
		$(d).stop().animate({height: h, width: w}, 300);
	}

	//get css and html position 
	function searchPosition(t, d, R1, newPos) {
			getPercent = (100-((100-(100 - newPos))/3))/100;
			$(t).css('height', constNewHeight);
			$(t).css('width', constNewWidth);
			mNewHeight = $(t).height()*getPercent;
			mNewWidth = $(t).width()*getPercent;
			mNewTop = (constNewHeight - mNewHeight)/2;
			zindex = parseInt(R1 - newPos);
			rotatorAnim($(t), $(d), position, mNewWidth, mNewHeight, mNewTop, zindex);
			$(t).css('height', mNewHeight);
			$(t).css('width', mNewWidth);
	}
	
	// rotate left
	$('.btn-left').click(function (){
		rotateLeft();
	});
	
	function rotateLeft() {
		for (var n = K; n >= 0; n--) {
			if (n == 0) position = a[K-1];
			else position = a[n-1];
			newPos = parseInt(Math.abs(position));
			searchPosition(t[n], d[n], R1, newPos)
		}
		var el = a.pop();
		a.unshift(el);
	};
	
	// rotate right
	$('.btn-right').click(function(){
		rotateRight()
	});
	
	function rotateRight() {
		for (var n = 0; n < K; n++) {
			if (n == (K-1)) position = a[0];
			else position = a[n+1];
			newPos = parseInt(Math.abs(position));
			searchPosition(t[n], d[n], R1, newPos)
		}
		var el = a.shift();
		a.push(el);
	};
	
	//rotate for click image
	$('#items > div > a > img').click(function (){
		f = $(this).parent().parent();
		var element = all[$(f).attr('id')];
		//var calc = a[element];
		//alert(element)
		if (a[element] < 0) {
			while (a[element] < 0) {
				rotateRight();
			}
		} else if (a[element] > 0) {
			while (a[element] > 0) {
				rotateLeft();
			}
		}
	});
	
	//hover 
	$('#items > div > a > img').hover(
		function(){
			$(this).css('border', 'solid 3px gray');
			var pos = $(this).parent().parent().position().left;
			var posTop = $(this).parent().parent().position().top;
			$(this).parent().parent().css('left', (pos-2));
			$(this).parent().parent().css('top', (posTop-2));
		},
		function(){
			$(this).css('border', 'solid 1px gray');
			var pos = $(this).parent().parent().position().left;
			var posTop = $(this).parent().parent().position().top;
			$(this).parent().parent().css('left', (pos+2));
			$(this).parent().parent().css('top', (posTop+2));
		}
	)
	//end 3d gallery
	
	//fade out
	if (!isIE) {
		$('.nav-holder').hover(
			function() {
				$('#nav > li > .active > span').stop().animate({opacity: 0}, 2000);
				$('#nav > li > .active > strong').stop().animate({opacity: 0}, 2000);
				$('#nav > li > .active').animate({color: '#000'}, 2000);
			},
			function() {
				$('#nav > li > .active > span').stop().animate({opacity: 1}, 2000);
				$('#nav > li > .active > strong').stop().animate({opacity: 1}, 2000);
				$('#nav > li > .active').animate({color: '#fff'}, 1000);
			}
		);
		$('#nav > li > a').hover(
			function() {
				$(this).find('span').stop().animate({opacity: 1}, 500);
				$(this).find('strong').stop().animate({opacity: 1}, 500);
				$(this).animate({color: '#fff'}, 500);
			},
			function() {
				$(this).find('span').stop().animate({opacity: 0}, 500);
				$(this).find('strong').stop().animate({opacity: 0}, 500);
				$(this).animate({color: '#000'}, 500);
			}
		);
	}
	
	//popup
	$(function() {$('#items a').lightBox();});
});
