jQuery.fn.jqurySlideshow = function(config){
		var targetObject=$(this);
//	alert($('.slide-image',targetObject).html())
   config = jQuery.extend({
								defaultNum	:	0,
                overName    : '.jpg',
								selectName 	: 'slide-selected',
								mainImgBoxId:	'slide-image',
								mainImgName	:	'_L',
								mainImgId		:	'slide-main-image',
								effect			:	true,
								effectSpeed	:	'300',
                caption     : false
//								captionId		:	"slide-caption"
								
		},config);
	 
	 if(jQuery.browser.safari){
		 	config.effect = false;
	 }
		var i=0;
		
		var reFileType = new RegExp();
    reFileType = /\.gif|\.jpg|\.png/;

	 $(this).each(function(){
			var tarGroup = $('ul li img',this);
			var defaultCaption = $(tarGroup.get(config.defaultNum)).attr('title');
			tarGroup.each(function(){
				var target = {
						element : this,
						object : $(this)
				}
/*	preload all images
------------------------------------------------------------ */
				var imageFile = {
						path : target.element.src.slice(0,target.element.src.search(reFileType)),
						type : target.element.src.match(reFileType),
						typeL:	$('.'+config.mainImgId,targetObject).attr('src').match(reFileType)
				}
				var preImg = new Image();
				var preImgL	= new Image();
//				preImg.src = imageFile.path + config.overName + imageFile.type;
				preImgL.src = imageFile.path + config.mainImgName + imageFile.typeL;
				
/*	format
------------------------------------------------------------ */
		
			

			target.object.attr('caption',target.object.attr('title'));
			target.object.removeAttr('title');
			target.object.bind('mouseover',chengeOnImg);
			target.object.bind('click',selectImg);
			if(i++==0){
				$(tarGroup.get(config.defaultNum)).each(function(){
					var _$target = $(this);
					var _target = this;
					var img = {
							path		:		_target.src.slice(0,_target.src.search(reFileType)),
							type		:		_target.src.match(reFileType)
					}
					cap = _$target.attr('title');
					_target.src = img.path +  img.type;
					_$target.unbind('mouseover',chengeOnImg)
					.unbind('mouseout',chengeOffImg)
					.unbind('click',selectImg);
//					_$target.attr('id',config.selectName);
					$(_target).addClass(config.selectName);
					$(_target).addClass('select');

					$('#slide-caption').text(defaultCaption);
				});
			}
		});
				
/*	function
------------------------------------------------------------ */				
				function chengeOnImg(){
					var _target = this;
					var img = {
							path		:		_target.src.slice(0,_target.src.search(reFileType)),
							type		:		_target.src.match(reFileType)
					}
					$(_target).css('cursor','pointer');
					$(_target).addClass('select');
//					_target.src = img.path  + img.type;
//					$(_target).unbind('mouseover',chengeOnImg);
					$(_target).bind('mouseout',chengeOffImg);
//					$(_target).bind('click',title.data,selectImg);
				}
				

				function chengeOffImg(){	
					var _target = this;
					var img = {
							path		:		_target.src.split(config.overName)[0],
							type		:		_target.src.match(reFileType)
					}
					$(_target).removeClass('select');
//					_target.src = img.path + img.type;
					$(_target).unbind('mouseout',chengeOffImg);
					$(_target).bind('mouseover',chengeOnImg);
				}
				
				function selectImg(){
					tarGroup.unbind('click',selectImg).unbind('mouseout',chengeOffImg);//.unbind('mouseover',chengeOnImg);
					var _target = this;
				
					// clear selected 
					$('.'+config.selectName,targetObject).each(function(){
						var __target = this;
						var img = {
							path		:		__target.src.split(config.overName)[0],
							type		:		__target.src.match(reFileType)
						}
						$(__target).removeClass(config.selectName);
						$(__target).removeClass('select');
//						__target.src = img.path + img.type;
						$(__target).bind('mouseover',chengeOnImg);
					});
					
					tarGroup.each(function(){
						$(this).removeClass(config.selectName);
					});
					$(_target).css('cursor','default');
					$(_target).unbind('click',selectImg).unbind('mouseout',chengeOffImg).unbind('mouseover',chengeOnImg);
					tarGroup.unbind('click',selectImg).unbind('mouseout',chengeOffImg);//.unbind('mouseover',chengeOnImg);
					$(_target).unbind('mouseover',chengeOnImg);
					$(_target).addClass(config.selectName);

					changeMainImg(_target,$(_target).attr('caption'));
				}
				
				
				function changeMainImg(thumnail,caption){
					var thumName = thumnail.src.split(config.overName)[0];
					
					$('.'+config.mainImgId,targetObject).each(function(){
						var _target = this;
						var imgType = this.src.match(reFileType);
						var nextImg = thumName + config.mainImgName + imgType;
					
						if(!config.effect){
							_target.src = nextImg;
//							$('#'+config.captionId).text(caption);
							tarGroup.each(function(){
												
								$(this).not('.slide-selected',targetObject).bind('mouseover',chengeOnImg);
								$(this).not('.slide-selected',targetObject).bind('click',selectImg);
							});	
						}else{
							$('.'+config.mainImgBoxId,targetObject).fadeOut(config.effectSpeed,function(){
								_target.src = nextImg;

//								$('#'+config.captionId).text(caption);

								$(this).fadeIn(config.effectSpeed,function(){
									
									tarGroup.each(function(){
												
										$(this).not('.slide-selected',targetObject).bind('mouseover',chengeOnImg);
										$(this).not('.slide-selected',targetObject).bind('click',selectImg);
										
									});	

								});
							
							});
						}
					});
				}

		});
}

// init
$(function(){	
	$('#slide-box').jqurySlideshow();
});
