$(document).ready(function(){
		slideshow($('.slideshow'));
		$('.control').galleryScroll();
});

/*--- function slideshow ---*/
function slideshow(gal_holders){
	gal_holders.each(function(){
		var _timer;
		var _duration = 8000;
		var gal_hold = $(this);
		var list_hold = gal_hold.find('.box > ul');
		var btn_next = gal_hold.find('.down a');
		var btn_prev = gal_hold.find('.up a');
		var _loader = $('<div class="load-icon"></div>');
		list_hold.parent().append(_loader);
		var _step = list_hold.parent().width();
		var _a = 0;
		var _list = list_hold.children();
		_list.each(function(){
			this._url = $(this).html();
		});
		var btn_list = $('<ul></ul>');
		for(var i = 1; i < _list.length + 1; i++){ btn_list.append('<li><a href="#">object' + i + '</a></li>');}
		btn_list = gal_hold.find('.indicator a');
		btn_list.eq(_a).parent().addClass('active');

		var btn_list2 = $('<ul></ul>');
		for(var i = 1; i < _list.length + 1; i++){ btn_list2.append('<li><a href="#">object' + i + '</a></li>');}
		btn_list2 = gal_hold.find('.indicator2 a');
		btn_list2.eq(_a).parent().addClass('active');

		var prevEl = $('<li></li>');
		var thisEl = $('<li></li>');
		var nextEl = $('<li></li>');
		list_hold.css('margin-left', -_step).empty().append(prevEl, thisEl, nextEl);
		_loader.fadeIn(100);
		$.ajax({
			url: _list[_a]._url,
			cache: false,
			dataType: 'html',
			success: function(_html) {
				_loader.fadeOut(100, function(){
					var _el = $(_html);
					_list[_a]._html = _el;
					thisEl.html(_list[_a]._html);
				});
			}
		});
		function changeP(_ind){
			if(!list_hold.is(':animated') && _ind != _a){
				if(_timer) clearTimeout(_timer);
				if(_ind == -1) _ind = _list.length - 1;
				else if(_ind == _list.length) _ind = 0;
				btn_list.eq(_a).parent().removeClass('active');
				btn_list.eq(_ind).parent().addClass('active');
				btn_list2.eq(_a).parent().removeClass('active');
				btn_list2.eq(_ind).parent().addClass('active');
				if(_list[_ind]._html){
					prevEl.html(_list[_ind]._html);
					list_hold.animate({marginLeft: -50}, 500, function(){
						thisEl.html(prevEl.html());
						list_hold.css('margin-left', -_step);
						_a = _ind;
						_timer = setTimeout(function(){ changeN(_a +1);}, _duration);
					});
				}
				else{
					_loader.fadeIn(100, function(){
						$.ajax({
							url: _list[_ind]._url,
							cache: false,
							dataType: 'html',
							success: function(_html) {
								var _el = $(_html);
								_loader.fadeOut(100, function(){
									_list[_ind]._html = _el;
									prevEl.html(_el);
									list_hold.animate({marginLeft: -50}, 500, function(){
										thisEl.html(prevEl.html());
										list_hold.css('margin-left', -_step);
										_a = _ind;
										_timer = setTimeout(function(){ changeN(_a +1);}, _duration);
									});
								});
							}
						});
					});
				}
			}
		}
		function changeN(_ind){
			if(!list_hold.is(':animated') && _ind != _a){
				if(_timer) clearTimeout(_timer);
				if(_ind == -1) _ind = _list.length - 1;
				else if(_ind == _list.length) _ind = 0;
				btn_list.eq(_a).parent().removeClass('active');
				btn_list.eq(_ind).parent().addClass('active');
				btn_list2.eq(_a).parent().removeClass('active');
				btn_list2.eq(_ind).parent().addClass('active');
				if(_list[_ind]._html){
					nextEl.html(_list[_ind]._html);
					list_hold.animate({marginLeft: -2*_step}, 500, function(){
						thisEl.html(nextEl.html());
						list_hold.css('margin-left', -_step);
						_a = _ind;
						_timer = setTimeout(function(){ changeN(_a +1);}, _duration);
					});
				}
				else{
					_loader.fadeIn(100, function(){
						$.ajax({
							url: _list[_ind]._url,
							cache: false,
							dataType: 'html',
							success: function(_html) {
								var _el = $(_html);
								_loader.fadeOut(100, function(){
									_list[_ind]._html = _el;
									nextEl.html(_el);
									list_hold.animate({marginLeft: -2*_step}, 500, function(){
										thisEl.html(nextEl.html());
										list_hold.css('margin-left', -_step);
										_a = _ind;
										_timer = setTimeout(function(){ changeN(_a +1);}, _duration);
									});
								});
							}
						});
					});
				}
			}
		}
		if(_list.length > 1){
			btn_next.click(function(){
				changeN(_a + 1);
				return false;
			});
			btn_prev.click(function(){
				changeP(_a - 1);
				return false;
			});
			btn_list.click(function(){
				var _ind = btn_list.index(this);
				if(_ind > _a) changeN(_ind);
				if(_ind < _a) changeP(_ind);
				return false;
			});
			btn_list2.click(function(){
				var _ind = btn_list2.index(this);
				if(_ind > _a) changeN(_ind);
				if(_ind < _a) changeP(_ind);
				return false;
			});
			_timer = setTimeout(function(){ changeN(_a +1);}, _duration);
			list_hold.hover(function(){
				if(_timer) clearTimeout(_timer);
			}, function(){
				if(_timer) clearTimeout(_timer);
				_timer = setTimeout(function(){ changeN(_a +1);}, _duration);
			});
		}
		else{
			btn_next.click(function(){ return false;});
			btn_prev.click(function(){ return false;});
			btn_list.click(function(){ return false;});
			btn_list2.click(function(){ return false;});
		}
	});
}

