(function($){
$.fn.extend({
    gallery:function(opts){
	    var opts = opts || {};
	    opts.css=opts.css||"gallery";
	    opts.insert=opts.insert||".gallery_container";
	    opts.curimg=opts.curimg||1;
	    opts.thumbClick=opts.thumbClick||function(selector){$.gallery.thumbClick(selector);};
	    opts.imgClick=opts.imgClick||function(selector){$.gallery.imgClick(selector);};
	    
	    var _insert = ( $(opts.insert).is(opts.insert) )?$(opts.insert):jQuery(document.createElement('div')).insertBefore(this);
		
	    var _div = $(document.createElement('div')).addClass('gallery_wrapper').bind("click", function(){opts.imgClick($(this));});
	    var _tb = $('<table width="100%"><tr><td align="center"></td></tr></table>').appendTo(_div[0]);
	    var _img = $(document.createElement('img')).addClass('gallery_img').appendTo($("table tr td",_div)[0]);
	    var _caption = $(document.createElement('div')).addClass('gallery_caption');
	    var _list = $(document.createElement('div')).addClass('gallery_list');
	    _insert.addClass(opts.insert).append(_div).append(_caption).append(_list);
	    var _listhtml='<a href="#" class="previmg"></a><a href="#" class="nextimg"></a><div class="gallery_listdiv"></div>';
	    _list.html(_listhtml);
	    $("div",_list).append($(this));
	    $("a.previmg",_list).bind("click", function(){$.gallery.prev(); this.blur(); return false;});
	    $("a.nextimg",_list).bind("click", function(){$.gallery.next(); this.blur(); return false;});
	    
        return this.each(function(){
            $(this).addClass(opts.css);
		    $(this).children('li').each(function(i) {
		        var _container = $(this).css({opacity:0.3}).bind("click", function(){opts.thumbClick($(this));});
		        var _thumb=$(this).children('img');
		        _thumb.hover(
				    function() { _container.addClass('hover').fadeTo(500,1); },
				    function() { _container.not('.cur').removeClass('hover').fadeTo(100,0.3); }
				);
			    
			    if(i==opts.curimg-1)
		        {
		            $.gallery.thumbClick($(this));
		        };
		    });
        });
    }
});

$.extend({
    gallery:{
        next : function() {
            var selector=".gallery .cur";
            var _next=$(selector).next().html()!=null?$(selector).next():$(selector).siblings(':first-child');
		    $.gallery.thumbClick(_next);
	    },
	    prev : function() {
		    var selector=".gallery .cur";
            var _prev=$(selector).prev().html()!=null?$(selector).prev():$(selector).siblings(':last-child');
		    $.gallery.thumbClick(_prev);
	    },
	    thumbClick:function(thumb)
        {
            $(".gallery li.cur").removeClass("cur").css({opacity:0.3});
            thumb.addClass("cur").fadeTo(500,1);
            var _img=thumb.children('img');
            if(_img.length>0)
            {
                var _src=_img.attr('src');
                var _title=_img.attr('title');
                var _newimg=$(".gallery_img").attr('src',_src);
                var _w,_h;
                if($.browser.msie){
                    if($.browser.version<7)
                    {
                        _w=_newimg.width();
                        _h=_newimg.height();
                    };
                }
                else{
                    _w=_newimg.css("width");
                    _h=_newimg.css("height");
                };
                if(_title){
                    $(".gallery_caption").html(_title);
                };
		        if(_w && _h && _w>0 && _h>0)
		        {
		            $(".gallery_wrapper").width(_w).height(_h);
		            $(".gallery_img").width(_w).height(_h);
		        };
		        $(".gallery_img").css({opacity:0.3}).fadeTo(500,1);
            }
            
            var _index=$(".gallery li").index(thumb[0]);
		    var _ml=parseInt(thumb.css("marginLeft"),10);
	        var _mr=parseInt(thumb.css("marginRight"),10);
	        var _mt=parseInt(thumb.css("marginTop"),10);
	        var _mb=parseInt(thumb.css("marginBottom"),10);
	        var _bt=1;
	        var _bb=1;
	        var _liw=thumb.width()+_ml+_mr+2;
	        var _can=parseInt($(".gallery").width()/(_liw),10);
	        var _t=-(thumb.height()+_mt+_mb+_bt+_bb)*parseInt(_index/_can,10);
	        if(!isNaN(_t))
	        {
	            $(".gallery").css("top",_t);
	        };
        },
        imgClick:function(img)
        {
            var _img=img.find('img');
            if(_img.length>0)
            {
                var _src=_img.attr('src');
                window.open(_src,'');
            };
        }
    }
});
})(jQuery);