var initNewsBox = function(){}




jQuery(function($){
	initNewsBox = function(){
		
	
	if(!jQuery)return;
	// setup for .newsbox
	var boxWidth = 148;
	var displaySize = 6;
		
	$('.newsbox_item a:has(img.image-only)').each( function(){
		//
		var $img = $(this).find('img');
		var imgSrc = $img.attr('src');
		var nodes = /^(.*)\.([a-zA-Z0-9]+)$/.exec(imgSrc);
		var prefix = nodes[1];
		var suffix = nodes[2];
		
		simplePreload(prefix+'_hover.'+suffix);
		
		$(this).hover(function(){
			$img.attr('src', prefix+'_hover.'+suffix);
		},function(){
			$img.attr('src', prefix+'.'+suffix);
		});
		

	});
		
	var setupMove = function (){
		var _size = 6;
		var _offset = 0;
		var _newOffset = 0;
		var $root = $('#newsbox_items');
		var _elms = $('#newsbox_items .newsbox_item');
		var _length = _elms.length;
		var _moving = false;
		
		var _precount = 0;
		
		var _waiting = [];
		
		var init = function(){
			
			// remove all element that out of the region
			for(var i = 0 ; i <_elms.size(); i ++){
				if( i >= _size) $(_elms[i]).remove();
			}
		}
		
		var seekTo = function(offset ,animated){
			if(_moving){
				_waiting.push({offset:offset,animated:animated});
				 return;
			}
			
			var newOffset = _offset + offset;
			beforeMove(newOffset);
			
			//console.log(list);
			_newOffset = newOffset;
			_moving = true;
			
			
			var options = {left:0};
			if(offset > 0){
				options.left = -boxWidth * offset;
			}
			
			if(animated == false) {
				
				afterMove();
				return 
			}
			$('#newsbox_items').animate(options,1000,jQuery.easing.easeOutQuart,afterMove);
		}
		
		
		var beforeMove = function(newOffset){
			_precount = 0;
			
			
			// if the new position is larger than current
			// clone the element behind current 
			if(newOffset > _offset ){
				
				var begin = _offset + $('#newsbox_items .newsbox_item').size();
				var end = newOffset + _size;
				
				// copy
				for(var i = begin ; i <= end ; i ++){
					var _index = getIndex(i);
					
					$( _elms [ _index ]).clone(true).appendTo('#newsbox_items');
					
				//	console.log(['append',i,_index]);
				}
				
				
			// otherwise, clone all element that in front of current
			}else if(newOffset < _offset ){
				var begin = newOffset;
				var end = _offset -1;
				
				// copy
				for(var i = end ; i >= begin ; i --){
					var _index = getIndex(i);
					
					$( _elms [ _index ]).clone(true).prependTo('#newsbox_items');
					
					_precount ++;
					
					//console.log(['prepend',i,_index]);
				}
				
				// fix the location after change the position
				$('#newsbox_items').css('left', - _precount * boxWidth);
			}
			
			/*
			// for checking position
			$('#newsbox_items .newsbox_item').each(function(idx,row){
				$(row).attr('_index', _offset + _precount + idx);
			});
			//*/
		}
		
			
		var getIndex = function (offset){
			var _index = offset  % _length;
			if(_index < 0) _index+=_length;
			return _index;
		}
			
		// remove all extra elements
		var afterMove = function(){
			
			
			// if the slider move to right 
			// then we keep the right element only
			// otherwise, keep the left element
			var _from = 0;
			if(_newOffset > _offset) _from = _size ;
			var _due = _from+_size
			
			
			//console.log([_from, _due]);
			
			var list = $('#newsbox_items .newsbox_item');
			var total = list.length;
			for(var i = 0; i< total; i ++){
				if(_from <= i && i < _due) continue;
				$(list[i]).remove();
			}
			
			_offset = _newOffset%_length;
			if(_offset < 0)
				_offset += _length;
			
			// fix the position
			$('#newsbox_items').css('left', 0);
			
			_moving = false;
			
			if(_waiting.length > 0){
				var c = _waiting [0];
				_waiting.splice(0,1);
				
				seekTo(c.offset, c.animated);
			}
		}
		
	
		$('.newsbox .scrollable-left').click( function(){
				seekTo(-6);
		});
		
		$('.newsbox .scrollable-right').click( function(){
				seekTo(6);
		});
		init();
		
		window.slider_seekTo = seekTo
	}	
	
	
	setupMove();
	
	
	
	
	/*
	
	$('.newsbox .scrollable').scrollable({
        speed: 300,
        items: '#newsbox_items',  
				circular: true,
        clickable: false
	});
	$('.newsbox .scrollable').scrollableAddClones();
	
	var api = $('.newsbox .scrollable').data("scrollable");
	var refreshButtons = function(){
		var index = api.getIndex();
		var total = api.getItems().length;
		var hasPrev = index > 0 && total > 6;
		var hasNext = index < total - 6 && total > 6;
		
		if(hasPrev)
			$('.newsbox .scrollable-left').show();
		else
			$('.newsbox .scrollable-left').hide();
			
		if(hasNext)
			$('.newsbox .scrollable-right').show();
		else
			$('.newsbox .scrollable-right').hide();
		
	}
	
	api.onBeforeSeek(refreshButtons);
	api.onSeek(refreshButtons);
	/*
	var refreshButtons = function(){
		var index = api.getIndex();
		var total = api.getItems().length;
		var hasPrev = index > 0 && total > 6;
		var hasNext = index < total - 6 && total > 6;
		
		if(hasPrev)
			$('.newsbox .scrollable-left').show();
		else
			$('.newsbox .scrollable-left').hide();
			
		if(hasNext)
			$('.newsbox .scrollable-right').show();
		else
			$('.newsbox .scrollable-right').hide();
		
	}
	
	api.onBeforeSeek(refreshButtons);
	api.onSeek(refreshButtons);
	refreshButtons();
	
	
	$('.newsbox .scrollable-left').click( function(){
										   
		var index = api.getIndex();
		var total = api.getItems().length;
		var hasPrev = index > 0 && total > 6;
		var hasNext = index < total - 6 && total > 6;
		//if(hasPrev)
			api.move(-6);
	});
	
	$('.newsbox .scrollable-right').click( function(){
												   
		var index = api.getIndex();
		var total = api.getItems().length;
		var hasPrev = index > 0 && total > 6;
		var hasNext = index < total - 6 && total > 6;
		//if(hasNext)
			api.seekTo((index+6)%total);
	});
	//*/
	
	
	
}
});

