$.extend(_fw.meth,{
	tabs:{
		items:'>li',
		show:0,
		currCl:'curr',
		tabs:false,
		preFu:function(){
			var _=this
			_.itms.hide()
			if(_.show!==false)
				_.itms.eq(_.show).show(),
				_.tabs.eq(_.show).addClass(_.currCl)
			if(_.tabs)
				_.tabs
					.each(function(i){
						$(this).find('a').click(function(){
							if(i==_.currN)
								return false
							_.currN=i
							_.tabs
								.removeClass(_.currCl)
								.eq(i)
									.addClass(_.currCl)
							_.itms
								.hide()
								.eq(i)
								.fadeIn()
							return false
						})
					})
		},
		init:function(_){
			var holder=_.holder=this,
				itms=_.itms=$(_.items,holder),
				tabs=_.tabs=$(_.tabs)
			_.preFu()
		}
	},
	vSlider:{
		items:'>li',
		clone:true,
		show:4,
		duration:600,
		easing:'swing',
		cloneCl:'_clone',
		nextBu:false,
		prevBu:false,
		mwFu:function(){
			var _=this
		_.holder
			.bind('mousewheel',function(e,d){
				if(d<0){
					if(_.mousewheel)
						_.mousewheel=false,
						_.changeFu('next'),
						setTimeout(function(){
							_.mousewheel=true
						},140)
				}else{
					if(_.mousewheel)
						_.mousewheel=false,
						_.changeFu('prev'),
						setTimeout(function(){
							_.mousewheel=true
					},140)
				}
				return false
			})
		},
		preFu:function(){
			var _=this,
				itemH=_.itemH=_.itms.outerHeight()+parseInt(_.itms.css('marginBottom'))+parseInt(_.itms.css('marginTop'))
			if(_.clone)
				_.itms.clone().addClass(_.cloneCl).appendTo(_.ul),
					_.itms=$(_.items,_.ul)
			if(_.show)
				_.holder
					.height(itemH*_.show)
					.css({overflow:'hidden',zIndex:1})
			if(_.holder.css('position')=='static')
					_.holder.css({position:'relative',zIndex:1})
				_.ul.css({position:'relative'})
			var tmp=Math.round(_.itms.length/2),
				i=tmp
			while(i--)
				_.ul.find('li').eq(-1).prependTo(_.ul)
			_.ul
				.css({top:(_.sY=-Math.floor(tmp)*itemH)})
		},
		changeFu:function(side){
			var _=this
				itemH=_.itemH
			if(side=='next'||side=='prev')
				if(side=='prev')
					(_.itms=$(_.items,_.ul)).eq(-1)
						.prependTo(
							_.ul
								.stop()
								.css({
									top:parseInt(_.ul.css('top'))-itemH
								})
						)
				else
					(_.itms=$(_.items,_.ul)).eq(0)
						.appendTo(
							_.ul
								.stop()
								.css({
									top:parseInt(_.ul.css('top'))+itemH
								})
							)
			_.showFu()
		},
		showFu:function(){
			var _=this
			_.ul
				.stop()
				.animate({
					top:_.sY
				},{
					duration:_.duration,
					easing:_.easing
				})
		},
		init:function(_){
			var holder=_.holder=this,
				ul=_.ul=holder.children('ul'),
				itms=_.itms=$(_.items,_.ul)
			_.preFu()
			if(_.nextBu)
				$(_.nextBu)
					.click(function(){
						_.changeFu('next')
						return false
					})
			if(_.prevBu)
				$(_.prevBu)
					.click(function(){
						_.changeFu('prev')
						return false
					})
			if(_.mousewheel&&$.fn.mousewheel)
					_.mwFu()
		}
	},
	"_spinnerGallery":{
			spinnerURL:false,
			fader:false,
			spinner:false,
			pagination:false,
			pagArea:'>a',
			pagEv:'click',
			navLinks:'a[rel=spinnerGallery]',
			spinnerClassName:'_spinner',
			faderClassName:'_fader',
			currentCl:false,
			blocked:false,
			showEv:'_show',
			minSleep:400,
			faderOpacity:.6,
			faderColor:'#000',
			css:{position:'absolute',left:0,top:0,right:0,bottom:0,zIndex:9999},
			pagFu:function(){
				var _=this,
					pags=_.pags=$(_.pagination)
				_.currN=0
				pags.each(function(i){
					$(this).find('a').click(function(){
						if(i==_.currN)
							return false
						_.showFu($(this).attr('href'))
						return false
					})
				})
			},
			showFu:function(data){
				var opt=this
				if(opt.prev==data)
					return false
				opt.prev=data
				if(!opt.blocked)
					opt.fader
						.appendTo(opt.holder)
						.stop()
						.animate({
							opacity:opt.faderOpacity
								 },{
								duration:opt.minSleep/2,
								complete:function(){
								opt.outOfSpace
									.load(function(){
										opt.pic.attr({src:this.src})
										setTimeout(function(){
											opt.hideFu()
											},opt.minSleep)
										})
										.attr({src:data})
									}
								}),
					opt.spinner
						.appendTo(opt.holder),
					opt.blocked=true
			},
			hideFu:function(){
				var opt=this
				opt.spinner.detach()
				opt.fader.stop().animate({
										opacity:0
										 },{
										duration:opt.minSleep/2,
										complete:function(){											
											opt.fader.detach()
											opt.blocked=false
										}
								})
			},
			init:function(opt){
				var holder=opt.holder=this,
					pic=opt.pic=$('img',holder),
					outOfSpace=opt.outOfSpace=$('<img>')
				opt.fader=$('<div>')
							.css(opt.css)
							.css({
								backgroundColor:opt.faderColor,
								opacity:0
							})
				opt.spinner=$('<div>')
							.css(opt.css)
							.css({
								 background:'url('+opt.spinnerURL+') 50% 50% no-repeat'
							})
				if(!opt.spinnerURL)
					return this
				if(holder.css('position')!='absolute')
					holder.css({position:'relative'})
				holder.bind(opt.showEv,function(e,data){
					opt.showFu(data)
					return false
				})
				if(opt.pagination)
					opt.pagFu()
			}
		},
	sprites:{
		method:'gStretch',
		hover:false,
		duration:600,
		easing:'swing',
		ieOpacityFix:false,
		add:false,
		els:[],
		elsh:[],
		pasta:'<div></div>',
		bodyEv:'sp-rfrsh',
		hold:'.active',
		holdOn:function(){},
		hoverIn:function(){},
		hoverOut:function(){},
		getWH:function(fn){
			var _=this,
				img=new Image(),
				url=_.url,
				src=_.src
			if(src=='none')
				return false
			_.hw=_.holder.outerWidth()
			_.hh=_.holder.outerHeight()
			_.bgc=_.holder.css('backgroundColor')
			img=$(img).appendTo('#glob')
			$(img).attr({src:src})
			if(img[0].complete)
				_.width=img.width(),
				_.height=img.height(),
				img.remove(),
				fn()
			else
				img.load(function(){
					_.width=img.width()
					_.height=img.height()
					img.remove()
					fn()
				})
		},
		preFu:function(){
			var _=this
			_.ieOpacityFix=$.browser.msie&&$.browser.version<9
			if(_.holder.css('zIndex')=='auto')
					_.holder.css({zIndex:6000})
			if(_.holder.css('position')=='static')
				_.holder.css({position:'relative'})
			_.url=_.holder.css('backgroundImage')
			_.src=_.url.replace(/(^url\('?"?)|('?"?\)$)/g,'')
			if(_.method=='gStretch')
				_.getWH(function(){
					_.holder.css({backgroundImage:'none'})
					_.holder.css({backgroundColor:'none'})
					_.els.push(_.l=$(_.pasta)
						.css({
							width:_.width,
							bottom:0,
							position:'absolute',
							background:_.url+' 0 0 no-repeat',
							left:0,
							top:0,
							zIndex:-1
						})
						.appendTo(_.holder))
					_.els.push(_.r=$(_.pasta)
						.css({
							width:_.width,
							bottom:0,
							position:'absolute',
							background:_.url+' 0 -'+_.hh+'px  no-repeat',
							right:0,
							top:0,
							zIndex:-1
						})
						.appendTo(_.holder))
					_.els.push(_.t=$(_.pasta)
						.css({
							bottom:0,
							position:'absolute',
							background:_.url+' 0 -'+_.hh*2+'px',
							left:_.width,
							right:_.width,
							top:0,
							zIndex:-1
						})
						.appendTo(_.holder))
					if(_.hover)
						_.elsh.push(_.lh=_.l.clone()
							.css({
								background:_.url+' 0 -'+_.hh*3+'px no-repeat'
							})
							.appendTo(_.holder)
							.hide()),
						_.elsh.push(_.rh=_.r.clone()
							.css({
								background:_.url+' 0 -'+_.hh*4+'px no-repeat'
							})
							.appendTo(_.holder)
							.hide()),
						_.elsh.push(_.th=_.t.clone()
							.css({
								background:_.url+' 0 -'+_.hh*5+'px'
							})
							.appendTo(_.holder)
							.hide()),
						(function(){
							if(!_.ieOpacityFix)
								_.lh
									.add(_.rh)
									.add(_.th)
									.css({opacity:0})
						})()
				})
			if(_.method=='corners')
				_.getWH(function(){
					_.holder.css({'background':'none'})
					_.lt=$(_.pasta)
						.css({
							width:_.width/2,
							height:_.height/2,
							position:'absolute',
							backgroundImage:_.url,
							backgroundPosition:'0 0',
							left:0,
							top:0,
							zIndex:-1							
						})
						.appendTo(_.holder)
					_.rt=$(_.pasta)
						.css({
							width:_.width/2,
							height:_.height/2,
							position:'absolute',
							backgroundImage:_.url,
							backgroundPosition:'-'+(_.width/2)+'px 0',
							right:0,
							top:0,
							zIndex:-1							
						})
						.appendTo(_.holder)
					_.lb=$(_.pasta)
						.css({
							width:_.width/2,
							height:_.height/2,
							position:'absolute',
							backgroundImage:_.url,
							backgroundPosition:'0 -'+(_.height/2)+'px',
							left:0,
							bottom:0,
							zIndex:-1							
						})
						.appendTo(_.holder)
					_.rb=$(_.pasta)
						.css({
							width:_.width/2,
							height:_.height/2,
							position:'absolute',
							backgroundImage:_.url,
							backgroundPosition:'-'+(_.width/2)+'px -'+(_.height/2)+'px',
							right:0,
							bottom:0,
							zIndex:-1							
						})
						.appendTo(_.holder)
					_.c=$(_.pasta)
						.css({
							position:'absolute',
							left:_.width/2,
							right:_.width/2,
							top:_.height/2,
							bottom:_.height/2,
							backgroundColor:_.bgc,
							zIndex:-1
						})
						.appendTo(_.holder)
					if(_.add)
						if(_.add.tb)
						_.url='url('+_.add.tb+')',
						_.src=_.add.tb,
						_.getWH(function(){
							_.tt=$(_.pasta)
								.css({
									position:'absolute',
									left:_.width/2,
									right:_.width/2,
									top:0,
									height:_.height/2,
									backgroundImage:_.url,
									backgroundPosition:'0 0',
									zIndex:-1
								})
								.appendTo(_.holder)
							_.tb=$(_.pasta)
								.css({
									position:'absolute',
									left:_.width/2,
									right:_.width/2,
									bottom:0,
									height:_.height/2,
									backgroundImage:_.url,
									backgroundPosition:'0 -'+(_.height/2)+'px',
									zIndex:-1
								})
								.appendTo(_.holder)
							if(_.add.lr)
								_.url='url('+_.add.lr+')',
								_.src=_.add.lr,
								_.getWH(function(){
									_.tl=$(_.pasta)
										.css({
											position:'absolute',
											left:0,
											width:_.width/2,
											top:_.height/2,
											bottom:_.height/2,
											backgroundImage:_.url,
											backgroundPosition:'0 0',
											zIndex:-1
										})
										.appendTo(_.holder)
									_.tr=$(_.pasta)
										.css({
											position:'absolute',
											right:0,
											width:_.width/2,
											top:_.height/2,
											bottom:_.height/2,
											backgroundImage:_.url,
											backgroundPosition:'-'+_.width/2+'px 0',
											zIndex:-1
										})
										.appendTo(_.holder)
								})
						})
				})
		},
		showFu:function(){
			var _=this
			$(_.elsh).each(function(i){
				var el=$(this)
				if(_.ieOpacityFix)
					el
						.show()
				else
					el		
						.show()
						.stop()
						.animate({
							opacity:1
						},{
							duration:_.duration,
							easing:_.easing
						})
				})
		},
		hideFu:function(){
			var _=this
			if(_.holdOn())
				_.show()
			else
			$(_.elsh).each(function(){
				var el=$(this)
				if(_.ieOpacityFix)
					el
						.hide()
				else
					el		
						.stop()
						.animate({
							opacity:0
						},{
							duration:_.duration,
							easing:_.easing,
							complete:function(){
								$(this).hide()
							}
						})
				})
		},
		hoverFu:function(){
			var _=this
			_.holder
				.bind('mouseenter',function(){
					_.showFu()
					_.hoverIn()
				})
				.bind('mouseleave',function(){
					_.hideFu()
					_.hoverOut()
				})				
		},
		init:function(_){
			var holder=_.holder=this
			_.preFu()
			if(_.hover)
				_.hoverFu()
		}
	},
	uSlider:{
		items:false,
		pagination:false,
		pagArea:'>a',
		pagEv:'click',
		pagActiveCl:'active',
		navLinks:'a[rel=nav]',
		backBu:'a[rel=back]',
		changeEv:'_change',
		pagCallback:false,
		duration:600,
		minSleep:300,
		easing:'',
		wrapper:'<div class="_wrapper"></div>',
		show:false,
		nextBu:false,
		prevBu:false,
		one:function(){},
		beforeChange:function(){},
		afterChange:function(){},
		beforeAnimation:function(){},
		animationCallback:function(){},
		backBuFu:function(){
			var _=this
			$(_.backBu).live('click',function(){
				_.changeFu(_.prevP!=-1?_.prevP:0)
				_.pags.trigger('mouseover')
			})
		},
		navFu:function(){
			var _=this
			$(_.navLinks).live('click',function(){
				_.changeFu($(this))
				return false 
			})
		},
		preFu:function(){
			var _=this,
				itms=_.itms=[]
			if(_.items)
				$(_.items).each(function(){
					itms.push($(this))
				}),
				_.itmsHTML=itms[0].parent().detach().clone(),
				_.method='html'
			else
				_.method='ajax'
		},
		pagPreFu:function(){
			var _=this,
				tagName,
				pags=_.pags=$(_.pagination)
			pags
				.parent()
					.each(function(){
						$(this).find(tagName='>'+pags.attr('tagName'))
							.each(function(i){
								var th=
								$(this)
									.data({num:i})
									.find(_.pagArea)
										.bind(_.pagEv,function(){
											_.changeFu(i)
											return false
										})
								if(_.method=='ajax')
									_.itms[i]=th.attr('href')
							})
					})
		},
		pagFu:function(num){
			var _=this
			_.pags.each(function(){
				var th=$(this)
				if(th.data('num')==num)
					th.addClass(_.pagActiveCl)
				else
					th.removeClass(_.pagActiveCl)
			})
			if(_.pagCallback)
				_.pagCallback()
		},
		showFu:function(){
			var _=this
			_.path=_.next
			if(_.method=='html')
				_.holder.children().remove(),
				_.next=_.next.html?_.next:$(_.next,_.itmsHTML),
				_.holder.append(_.next=$(_.wrapper).append(_.next.children().clone()))
			_.beforeAnimation()
			_.next
				.stop()
				.css({opacity:0})
				.animate({
					opacity:1
				},{
					duration:_.duration,
					easing:_.easing,
					complete:function(){
						if(_.animationCallback)
							_.animationCallback()
					}
				})
		},
		changeFu:function(num){
			var _=this,
				tmp
			if(num==_.currN)
				return false
			_.prevP=_.currN
			if(num.attr)
				_.next=num.attr('href'),
				_.pags.removeClass(_.pagActiveCl),
				_.currN=-1
			else				
				_.next=_.itms[num],
				_.currN=num,
				_.pagFu(num)
			if(_.method=='html')
				_.afterChange(),
				_.showFu()
			if(_.one)
				_.one(),
				_.one=false
			_.beforeChange
			if(_.method=='ajax')
				_.spinner.appendTo(_.holder),
				$.ajax({
					url:_.next,
					cache:false,
					success:function(res){
								setTimeout(function(){
									res=$(res)
									_.next=res
										.appendTo(_.holder.empty())
									_.showFu()									
									_.afterChange()
									_.holder.trigger(_.changeEv)
								},_.minSleep)
							}
					})
		},
		nextFu:function(){
			var _=this,
				n=_.currN
			_.changeFu(++n<_.itms.length?n:0)
		},
		prevFu:function(){
			var _=this,
				n=_.currN
			_.changeFu(--n>=0?n:_.itms.length-1)
		},
		init:function(_){
			var holder=_.holder=this
			if(_.spinner)
				_.spinner=$(_.spinner,holder)
			else
				_.spinner=$()
				
			_.preFu()
			
			if(_.pagination)
				_.pagPreFu()
			
			if(_.nextBu)
				$(_.nextBu).click(function(){
					_.nextFu()
					return false
				})
			if(_.prevBu)
				$(_.prevBu).click(function(){
					_.prevFu()
					return false
				})
			if(_.navLinks)
				_.navFu()
			if(_.backBu)
				_.backBuFu()
			if(_.show!==false)
				_.changeFu(_.show)
		}
	},
	cScroll:{
			sWidth:false,
			sHeight:false,
			step:'52px',
			duration:300,
			val:0,
			sleep:300,
			scrollTrackCl:'_track',
			scrollShuttleCl:'_shuttle',
			refreshEv:false,
			trackCSS:{
				width:'20px',
				position:'absolute',
				right:0,
				top:0,
				zIndex:2
			},
				shuttleCSS:{
				width:'100%',
				height:'20px',
				position:'absolute'
			},
				wrapCSS:{
				overflow:'hidden',
				position:'relative',
				zIndex:1
			},
			preFu:function(){
				var _=this
				if(_.sHeight)
					_.shuttleCSS.height=_.sHeight
				if(_.sWidth)
					_.trackCSS.width=_.sWidth
				if(_.holder.css('position')=='static')
						_.holder.css({position:'relative'})
				_.step=parseInt(_.step)
				_.wrap=$('<div>')
					.css(_.wrapCSS)
					.height(_.holder.height())
					.html(_.holder.html())
					.appendTo(_.holder.empty())
				_.track=$('<div>')
					.css(_.trackCSS)
					.css({
						top:_.shuttleCSS.height,
						height:_.wrap.height()-parseInt(_.shuttleCSS.height),
						background:'none'
					})
				_.trackWrap=$('<div>')
					.addClass(_.scrollTrackCl)
					.css(_.trackCSS)
					.height('100%')
					.append(_.track)
					.appendTo(_.holder)
				_.delta=_.wrap.attr('scrollHeight')-_.wrap.height()
				if(_.track.slider)
					_.track.slider({
						min:1,max:100,value:100,
						orientation: "vertical",
						slide:function(e,ui){
							_.delta=_.wrap.attr('scrollHeight')-_.wrap.height()
							_.wrap.attr({scrollTop:(100-ui.value)*_.delta/100})
						},
						change:function(e,ui){
							_.val=(101-ui.value)*_.delta/100
						}
					})
				_.shuttle=$('a',_.track).css(_.shuttleCSS).addClass(_.scrollShuttleCl)
				_.holder.one('mousemove',function(){
					_.strechFu()
				})
			},
			scrollFu:function(n){
				var _=this
				if(_.b)
					_.b=false,
					_.val+=n,
					_.val=_.val<0?0:_.val,
					_.val=_.val<=_.delta?_.val:_.delta,
					_.wrap
						.stop()
						.animate({
							scrollTop:_.val
							},{
							duration:_.duration,
							step:function(now){
								_.track.slider({value:100-now/_.delta*100})
							},
							complete:function(){
								_.val=$(this).attr('scrollTop')
							}
						}),
					setTimeout(function(){_.b=true},_.sleep)
			},
			downFu:function(){
				var _=this
				_.scrollFu(_.step)
			},
			upFu:function(){
				var _=this
				_.scrollFu(-_.step)
			},
			strechFu:function(){
				var _=this
				_.delta=_.wrap.attr('scrollHeight')-_.wrap.height()
				_.wrap.attr({scrollTop:(100-_.track.slider('value'))*_.delta/100})
				_.val=(101-_.track.slider('value'))*_.delta/100
			},
			refreshFu:function(){
				var _=this
				_.holder.bind(_.refreshEv,function(){
					var value=(100-_.track.slider('value'))*_.delta/100
					_.wrap.attr('scrollTop',value)
				})
			},
			wheelFu:function(){
				var _=this
				_.b=true
				_.holder.bind('mousewheel',function(e,d){
					if(d<0)
						_.downFu()							
					else
						_.upFu()
					return false
				})
			},
			init:function(_){
				var holder=_.holder=this
				_.preFu()
				if($.fn.mousewheel)
					_.wheelFu()
				if(_.refreshEv)
					_.refreshFu()
			}
		}	
})
