
(function(){jQuery.fn.scrollWidget = function(settings){
		
	settings = jQuery.extend({
							 
		width:  		516,
		values: 		[],
		ctrlClass:  	'sw_controls',
		ctrlPos:		'bottom',
		nextIcon:   	'&raquo;',
		prevIcon:		'&laquo;',
		currIconClass:  'sw_selected',  
		otherIconClass:	'sw_unselected',
		elementClass:	''
		
	}, settings);
	
	return this.each(function(i){
		
		var thisWidget = this;
		
		$(thisWidget).css({position:'relative', width:settings.width, overflow:'hidden'}).prepend('<div class="scrollwidget_element_wrapper"></div>');
		$(thisWidget).children('.'+settings.elementClass).not('.scrollwidget_element_wrapper').wrap('<div class="scrollwidget_element">');
		
		var thisWrap = $(thisWidget).find('.scrollwidget_element_wrapper');
		$(thisWidget).find('.scrollwidget_element').appendTo($(thisWrap));
		$(thisWrap).css({position:'relative', left:'0px'}).width(0);
		
		var groups = 0;
		$(thisWrap).find('.scrollwidget_element').css({float:'left'}).each(function(){
			$(this).children().each(function(){
				if($(this).is('img')){
					var glob = this;
					var tempImg = new Image();
					tempImg.onload = function(){
						$(thisWrap).width(  $(glob).parent().width() + $(thisWrap).width()  );
						groups = Math.round($(thisWrap).width()/settings.width);	
					};
					tempImg.src = $(this).attr('src');
				}else{
					$(thisWrap).width( $(thisWrap).width() + $(this).width() + 20 );
					groups = Math.round($(thisWrap).width()/settings.width);
				}
			});
		});
		
		if(settings.ctrlPos == 'bottom'){
			$(thisWidget).append('<div class="'+settings.ctrlClass+'"></div>');	
		}
		else{
			$(thisWidget).prepend('<div class="'+settings.ctrlClass+'"></div>');	
		}
		
		var theseCtrls = $(thisWidget).find('.'+settings.ctrlClass);
		$(theseCtrls).css({clear:'both'});
		
		if(settings.values == ''){
			var clickIndex = 1;
			$(theseCtrls).append('<span class="scrollwidget_leftIcon">'+settings.prevIcon+'</span>');
			$(theseCtrls).append('<span class="scrollwidget_rightIcon">'+settings.nextIcon+'</span>');
			
			$(theseCtrls).find('span').css('cursor','pointer');

			$(theseCtrls).find('span.scrollwidget_rightIcon').click(function(){
				
				var currPos = $(thisWrap).css('left').replace('px','');
				var delta = (currPos) - (settings.width);
				if(clickIndex < groups){
					$(thisWrap).animate({left: delta});
				}
				clickIndex++;
				
				if(clickIndex > groups){clickIndex = groups};
				$('#trace').html(groups+'<br>'+clickIndex);
			});
			
			$(theseCtrls).find('span.scrollwidget_leftIcon').click(function(){
											
				var currPos = $(thisWrap).css('left').replace('px','');
				var delta = parseInt(currPos) + (settings.width);
				if(clickIndex > 1){
					$(thisWrap).animate({left: delta});
				}
				clickIndex--;
				if(clickIndex < 1){clickIndex = 1};
				$('#trace').html(groups+'<br>'+clickIndex);
			});
			
		}else{
			$(theseCtrls).append('<div class="scrollwidget_ctrl_btns"></div>')
			for(var i=0; i<settings.values.length; i++){
				if($(theseCtrls).css('text-align') == 'right'){$(theseCtrls).find('.sw_ctrls_btns').css('float','right')};
				if($(theseCtrls).css('text-align') == 'left'){$(theseCtrls).find('.sw_ctrls_btns').css('float','left')};
				if(i==0){
					$(thisWrap).css({left: '-'+settings.values[i]})
					$(theseCtrls).find('.scrollwidget_ctrl_btns').append('<div class="'+settings.currIconClass+' scrollwidget_btn" style="float:left"></div>');
				}else{
					$(theseCtrls).find('.scrollwidget_ctrl_btns').append('<div class="'+settings.otherIconClass+' scrollwidget_btn" style="float:left"></div>');
				}
				
			}$(theseCtrls).append('<br clear="all">');
			$(theseCtrls).find('.scrollwidget_btn').css('cursor','pointer').each(function(i){
				$(this).click(function(){
					$(theseCtrls).find('.scrollwidget_btn').removeClass(settings.currIconClass).addClass(settings.otherIconClass);
					$(this).removeClass(settings.otherIconClass).addClass(settings.currIconClass);
					$(thisWrap).animate({left: '-'+settings.values[i]});					   
				});
			});	
		}

							  
	});

}})(jQuery);



