function empty( mixed_var ) {
    var key;
    if (mixed_var === ""
        || mixed_var === 0
        || mixed_var === "0"
        || mixed_var === null
        || mixed_var === false
        || mixed_var === undefined
        || mixed_var == 'auto'
    ){
        return true;
    }
    if (typeof mixed_var == 'object') {
        for (key in mixed_var) {
            return false;
        }
        return true;
    }
    return false;
}

(function($){

$.fn.lightSlider = function(settings) {
	var selected = 0;
	var current = 0;
	var selectedGroup = 0;
	var canHover = false;
	var rot = 0;
	var itemcount = 0;
	var loaded = 0;
	var _this = this;
	var width = 0;
	var sizes = [];
	var maxwidth = 0;
	var maxheight = 0;
	var imgLoaded = 0;
	var sliderTimer;
	
	var objCount = 0;
	settings = $.extend({
		url: '',
		slideLeft: 'prev',
		slideRight: 'next',
		slidePx: 100,
		containerPx: 576,
		containerHeight: 500,
		containerWidth: 300,
		canSlide: true,
		customHeight: 75,
		groupAll: false,			//	If exists more than size of $(this) is more than one and if groupAll is true all of the elements are grouped together. Otherwise they are separated.
		data: []					//	Array of elements
	}, settings);
	
	return this.each(function(){
		canSlideTrue = function(){
			settings.canSlide = true;
		}
		
		init = function(_this){
			//	$(item).replaceWith('<div style="text-align:center"><table><tr><td style="vertical-align:middle;width:10px"><img class="sv_slide_left" src="/common/plugins/lightSlider/images/slideleft.gif" alt="<<" style="border:0;cursor:pointer"/></td><td><div style="width:'+settings.containerPx+'px;overflow:hidden;position:relative;display:block;height:'+(settings.customHeight+2)+'px"><div class="sv_slider" style="display: block;position:absolute;width:99999px; text-align: left;left:0">'+newitem.html()+'</div></td><td style="vertical-align:middle;width:10px"><img class="sv_slide_right" src="/common/plugins/lightSlider/images/slideright.gif" alt=">>" style="border:0;cursor:pointer"/></td></tr></table></div>');
			//	$(item).remove();
			//	item = $(item).find('ul');
			//	$(item).wrap('<div style="text-align:center"><table><tr></tr></table></div>').before('<td style="vertical-align:middle;width:10px"><img class="sv_slide_left" src="/common/plugins/lightSlider/images/slideleft.gif" alt="<<" style="border:0;cursor:pointer"/></td>').after('<td style="vertical-align:middle;width:10px"><img class="sv_slide_right" src="/common/plugins/lightSlider/images/slideright.gif" alt=">>" style="border:0;cursor:pointer"/></td>').wrap('<td><div style="width:'+settings.containerPx+'px;overflow:hidden;position:relative;display:block;height:'+(settings.customHeight+2)+'px"><div class="sv_slider" style="display: block;position:absolute;width:99999px; text-align: left;left:0"></div></td>');
			//	$(item).before('<div style="text-align:center"><table><tr><td style="vertical-align:middle;width:10px"><img class="sv_slide_left" src="/common/plugins/lightSlider/images/slideleft.gif" alt="<<" style="border:0;cursor:pointer"/></td><td><div style="width:'+settings.containerPx+'px;overflow:hidden;position:relative;display:block;height:'+(settings.customHeight+2)+'px"><div class="sv_slider" style="display: block;position:absolute;width:99999px; text-align: left;left:0">').after('</div></td><td style="vertical-align:middle;width:10px"><img class="sv_slide_right" src="/common/plugins/lightSlider/images/slideright.gif" alt=">>" style="border:0;cursor:pointer"/></td></tr></table></div>');
			//	$(item).wrap('<div style="text-align:center"><table><tr></tr></table></div>').before('<td style="vertical-align:middle;width:10px"><img class="sv_slide_left" src="/common/plugins/lightSlider/images/slideleft.gif" alt="<<" style="border:0;cursor:pointer"/></td>').after('<td style="vertical-align:middle;width:10px"><img class="sv_slide_right" src="/common/plugins/lightSlider/images/slideright.gif" alt=">>" style="border:0;cursor:pointer"/></td>').wrap('<td><div style="width:'+settings.containerPx+'px;overflow:hidden;position:relative;display:block;height:'+(settings.customHeight+2)+'px"><div class="sv_slider" style="display: block;position:absolute;width:99999px; text-align: left;left:0"></div></td>');
			//	Bind buttons
			if (width > settings.containerPx) {
				bindButtons(_this, objCount);
			}
			else{
			//	$(_this).parents('table', 0).find('td:first, td:last').html('');
			}
			
			//	Add lightbox if groupAll is disabled
			if (settings.groupAll == false){
				$("a.lightbox"+objCount).lightBox({txtOf:'iš', txtImage:'Nuotrauka'});
			}
			
			settings.data[objCount]['sizes'] = sizes;
			settings.data[objCount].width = width;
		}
		
		//	Inits webkit
		initWebkit = function(_this){
			$.each($(_this).find('li'), function(j, li){
				width += $(li).find('img').width();
				sizes[j] = [$(li).find('img').width(), $(li).find('img').height()];
			});
		}
		
		slide = function(direction, _this, count){
			if (direction == 'left'){
				if (settings.canSlide == false)
					return false;
				settings.canSlide = false;
				setTimeout('canSlideTrue();', 500);
				lft = parseInt($(_this).find(".sv_slider").css('left'));
				if (empty(lft)) {
					lft = 0;
				}
			//	lft = parseInt(lft) + settings.slidePx;
				if (!empty(settings.data[count]['sizes'][settings.data[count].selected - 1]))
					lft = parseInt(lft) + settings.data[count]['sizes'][settings.data[count].selected - 1][0] + 6;
				else
					lft = 1;
				if (0 >= lft){
					$(_this).find(".sv_slider").animate({left: lft + 'px'}, 500);
					settings.data[count].selected--;
				}
				else{
					clearInterval(sliderTimer);
				}
			}
			else{
				if (settings.canSlide == false)
					return false;
				settings.canSlide = false;
				setTimeout('canSlideTrue();', 500);
				lft = parseInt($(_this).find(".sv_slider").css('left'));
				if (empty(lft)) {
					lft = 0;
				}
			//	lft = parseInt(lft) - settings.slidePx;
				lft = parseInt(lft) - settings.data[count]['sizes'][settings.data[count].selected][0] - 6;
				if (settings.data[count].width > Math.abs(lft - settings.containerPx + 1.6*settings.slidePx)){
			//	if (settings.data[count].width + (settings.data[count]['sizes'].length * 6) > Math.abs(lft) + settings.containerPx){
					$(_this).find(".sv_slider").animate({left: lft + 'px'}, 500);
					settings.data[count].selected++;
				}
				else{
					clearInterval(sliderTimer);
				}
			}
		}
		
		bindButtons = function(_this, count){
			_this = $(_this).parents('table', 0);
			$(_this).find('.sv_slide_left').bind("click", {count : objCount, __this : _this}, function(e){
				slide('left', e.data.__this, e.data.count);
			})
			.hover(
				function(){
					clearInterval(sliderTimer);
					sliderTimer = setInterval (
						function(){
							slide('left', _this, count);
						}
					, 700);
				},
				function(){
					clearInterval(sliderTimer);
				}
			);
		
			$(_this).find('.sv_slide_right').bind("click", {count : objCount, __this : _this}, function(e){
				slide('right', e.data.__this, e.data.count);
			})
			.hover(
				function(){
					clearInterval(sliderTimer);
					sliderTimer = setInterval (
						function(){
							slide('right', _this, count);
						}
					, 700);
				},
				function(){
					clearInterval(sliderTimer);
				}
			);

		//	setMainImage(_this, settings.data[0], 0);
		//	$(_this).find('a.clearbox').lightBox();	
		}
		
		initOnload = function(_this){
			loaded = width = maxwidth = maxheight = selected = 0;
			sizes = [];
			$(_this).find('div.sv_slider img').load(function(){
				sizes[$(this).attr('alt')] = $(this).width();
				width = width + $(this).width();
				loaded++;
				if (maxwidth < $(this).width()) {
					maxwidth = $(this).width();
					maxheight = Math.round(settings.containerWidth / maxwidth * $(this).height());
				}
				if (loaded == itemcount) {			
					initSlider();
				}
			})
		}

		$.each($(this), function(i, item){
			_this = this;
			objCount++;
			elements = $(item).find('li');
			settings.data[objCount] = {count: elements.length, selected: 0};
			
			//	Sizes of images
			sizes = [];
			//	Total width
			width = 0;
			//	Looping through elements
			$.each(elements, function(j, li){
				$(li).find('img').wrap('<a href="'+$(li).find('img').attr('alt')+'" class="lightbox'+(settings.groupAll ? '': objCount)+'"></a>');
				$(li).css('display', 'inline');
				$(li).find('img').height(settings.customHeight+'px');
				
				//	Adding support for webkit
				if ($.browser.safari){
					$(li).find('img').bind('load', {__this: _this}, function(e){
						imgLoaded++;
						if (imgLoaded == elements.length){
							initWebkit(e.data.__this);
							init(e.data.__this);
						}
					});
				}
				else{
					width += $(li).find('img').width();
					sizes[j] = [$(li).find('img').width(), $(li).find('img').height()];
				}
			});
			
			$(item).wrap('<div style="text-align:center"><table><tr></tr></table></div>').before('<td style="vertical-align:middle;width:10px"><img class="sv_slide_left" src="/common/plugins/lightSlider/images/slideleft.png" alt="<<" style="border:0;cursor:pointer"/></td>').after('<td style="vertical-align:middle;width:10px"><img class="sv_slide_right" src="/common/plugins/lightSlider/images/slideright.png" alt=">>" style="border:0;cursor:pointer"/></td>').wrap('<td style="padding: 5px 10px; border: 1px solid #fdadd0; background: #fafafe"><div style="width:'+settings.containerPx+'px;overflow:hidden;position:relative;display:block;height:'+(settings.customHeight+2)+'px"><div class="sv_slider" style="display: block;position:absolute;width:99999px; text-align: left;left:0"></div></td>');
			
			//	If not webkit
			if (!($.browser.safari)){
				init(_this);
			}
		});
		
		//	Add lightbox if groupAll is enabled
		if (settings.groupAll == true){
			$("a.lightbox").lightBox({txtOf:'iš', txtImage:'Nuotrauka'});
		}
		
  });	
};
})(jQuery);
