

/*
用法
.imgWrap这个是图片外部容器，使用了本插件后超大的图片宽度将会限制在容器宽度
如果要控制图片与容器的边距，如20像素： $('.imgWrap').imgAutoSize(20);
$('.imgWrap').imgAutoSize();
*/
(function ($) {
	var loadImg = function (url, fn) {
		var img = new Image();
		img.src = url;
		if (img.complete) {
			fn.call(img);
		} else {
			img.onload = function () {
				fn.call(img);
				img.onload = null;
			};
		};
	};
	$.fn.imgAutoSize = function (padding) {
		var maxWidth = this.innerWidth() - (padding || 0);
		return this.find('img').each(function (i, img) {
			loadImg(this.src, function () {
				if (this.width > maxWidth) {
					var height = maxWidth / this.width * this.height,
						width = maxWidth;

					img.width = width;
					img.height = height;
				};
			});
		});
	};
})(jQuery);
/*
tab标签插件 
skxc 12-11-2010
css:
<style type="text/css"></style>
.tabs_container{height:auto; border:1px solid #eaeaea; position:relative;}
.tabs_ul{position:absolute; height:auto; overflow:hidden; clear:both; display:block; width:100%;}
.tabs_ul li{display:inline; float:left; height:25px; line-height:25px; border:1px solid #eaeaea; padding:0px 5px; background:#eee;  margin-right:1px;}
.tabs_ul li.selected{background:#FFF; border-bottom:1px solid #FFF;}
.tabs_ul li.hover{background:#FFF; border-bottom:1px solid #FFF; text-decoration:underline;}
.tabs_div{padding:5px; display:none;}

html结构
<div class="test_tabs">
	<ul class='tabs_ul'>
		<li>link1</li>
		<li>link2</li>
		<li>link3</li>	
	</ul>
	<div class="tabs_div">content1</div>
	<div class="tabs_div">content2</div>
	<div class="tabs_div">content3</div>
</div>
use:$("#test_tabs").Tabs();
parm: mouseevent (click,hover)  默认为单击事件
*/
(function($){  
	$.fn.extend({
		Tabs:function(options) {  
			//配置参数  
			var defaults = {  
				mouseevent:'click'
			}
			var options =  $.extend(defaults, options);
			return this.each(function(){  
				var o = options;
				//do
				var _this=$(this);
				var _ul=$("ul:first",_this);
				var _li=$("li",_ul);
				var _div=$('>div',_this);
				var _scroll=0;
				var _ul_height=_ul.height()-1;//-1像素 IEbug
				var cur=0;
				
				$(window).scroll(function(){_scroll=$(window).scrollTop();})
				
				_div.hide();
				_div.eq(0).show();
				_this.css('margin-top',_ul_height+'px');
				_ul.css({'top':'-'+_ul_height+'px','left':'-1px'});
				_li.css("cursor","pointer");
				_li.eq(0).addClass('selected');
				_this.addClass('tabs_container');
				
				if(o.mouseevent=='click'){
					_li.click(function(){
						var index=$(this).index();
						if(cur!=index){
							_div.eq(cur).hide(0,function(){
								_div.eq(index).show(0,function(){
									//$(window).scrollTop(_scroll);
								});
							});
							_li.eq(index).addClass('selected');
							_li.eq(cur).removeClass('selected');
							cur=index;	
						}
					});
					//添加样式
					_li.hover(function(){
						$(this).addClass('hover');
					},function(){
						$(this).removeClass('hover');
					})
				}
				//经过切换
				if(o.mouseevent=='hover'){
					_li.hover(function(){
						var index=$(this).index();
						if(cur!=index){
							_div.eq(cur).hide("fast",function(){
								_div.eq(index).show("fast",function(){
									//$(window).scrollTop(_scroll);
								});
							});
							_li.eq(index).addClass('selected');
							_li.eq(cur).removeClass('selected');
							cur=index;	
						}
					});
				}
				//do end
			});
		}
	});
})(jQuery);

/*
滚动插件
#index_events{height:150px; overflow:hidden; padding:1px;}
#index_events li{margin-bottom:3px;}
#events_up{background:url(../images/line.gif) no-repeat center bottom; padding-bottom:1px; text-align:center; margin-bottom:5px;}
#events_down{background:url(../images/line.gif) no-repeat center top;text-align:center; padding-bottom:5px; margin-bottom:5px; padding-top:1px; margin-top:5px;}

#scroll_left_news,#scroll_left_pro{width:150px; height:120px; overflow:hidden; position:relative; margin:0 auto; border-bottom:1px solid #5C5B5B; padding:5px 0;}
#scroll_left_filter{width:150px; overflow:hidden; position:relative; margin:0 auto; border-bottom:1px solid #5C5B5B; padding:5px 0;}
#scroll_left_news ul,#scroll_left_pro ul{position:absolute; width:20000px;}
#scroll_left_news li,#scroll_left_pro li{width:52px; height:120px; margin-right:5px; margin-left:13px; display:inline; float:left; border-bottom:1px solid #666;}

$("#index_events").Scroll({line:1,speed:500,timer:2000,up:"events_up",down:"events_down"});  //垂直滚动
$("#scroll_left_news").Scroll({line:1,speed:500,timer:5000,vertical:false}); //水平滚动
*/
(function($){
$.fn.extend({
	Scroll:function(opt,callback){
		if(!opt){var opt={};}
		var _btnUp = $("#"+opt.up);
		var _btnDown = $("#"+opt.down);
		var timerID;
		var _this=$(this).find("ul:first");
		var lineH=_this.find("li:first").outerHeight(true);
		var lineW=_this.find("li:first").outerWidth(true);
		//参数
		var line=opt.line?parseInt(opt.line,10):1;
		var speed=opt.speed?parseInt(opt.speed,10):500;
		var timer=opt.timer?parseInt(opt.timer,10):3000;
		var vertical=opt.vertical==undefined?true:false;//是否垂直 默认true
		var auto=opt.auto==undefined?true:false;//是否自动播放 默认true
		//
		if(line==0) line=1; 
		if(vertical==undefined){vertical=true;}
		var upHeight=0-line*lineH;
		//滚动函数
		var scrollUp=function(){
			_btnDown.unbind("click",scrollUp);
			for(i=0;i<line;i++){
				_this.find("li:first").show().appendTo(_this);
			}
			_this.css({marginTop:0});
			_this.animate({marginTop:upHeight},speed,function(){
				_btnDown.bind("click",scrollUp);
			});
		}
		var scrollDown=function(){
			_btnUp.unbind("click",scrollDown);
			for(i=0;i<line;i++){
				_this.find("li:last").show().prependTo(_this);
			}
			_this.css({marginTop:upHeight});
			_this.animate({marginTop:0},speed,function(){
				_btnUp.bind("click",scrollDown);
			});
		}
		var scrollLeft=function(){
			_btnDown.unbind("click",scrollLeft);
			_this.animate({left:"-"+line*lineW},speed,function(){
				for(i=0;i<line;i++){
					var _li=_this.find("li:eq(0)");
					var _lic=_li.clone(true);
					_li.remove();
					_lic.appendTo(_this).fadeTo(0,0).fadeTo("fast",1);
				}
				_this.css({left:0});
				_btnDown.bind("click",scrollLeft);
			});
		}
		var scrollRight=function(){
			_btnUp.unbind("click",scrollRight);
			var len=_this.find("li").size();
			_this.animate({left:line*lineW},speed,function(){
				for(i=len;i>len-line;i--){
					var _li=_this.find("li:last");
					var _lic=_li.clone(true);
					_li.remove();
					_lic.prependTo(_this).fadeTo(0,0).fadeTo("fast",1);
				}
				_this.css({left:0});
				_btnUp.bind("click",scrollRight);
			});
		}
		var autoPlay =function(){if(timer){timerID = window.setInterval(scrollUp,timer);};};
		var autoPlay_1=function(){if(timer){timerID = window.setInterval(scrollLeft,timer);};};
		var autoStop=function(){if(timer){window.clearInterval(timerID);};};
		if(vertical){
			//垂直滚动
			if(auto){
				//自动滚动	
				_this.hover(autoStop,autoPlay).mouseout();
				_btnUp.css("cursor","pointer").click(scrollDown).hover(autoStop,autoPlay);
				_btnDown.css("cursor","pointer").click(scrollUp).hover(autoStop,autoPlay);
			}else{
				//非自动滚动
				_btnUp.css("cursor","pointer").click(scrollDown);
				_btnDown.css("cursor","pointer").click(scrollUp);
			}
		}else{
			//水平滚动
			if(auto){
				//自动滚动	
				_this.hover(autoStop,autoPlay_1).mouseout();
				_btnUp.css("cursor","pointer").click(scrollRight).hover(autoStop,autoPlay_1);
				_btnDown.css("cursor","pointer").click(scrollLeft).hover(autoStop,autoPlay_1);
			}else{
				//非自动滚动
				_btnUp.css("cursor","pointer").click(scrollRight);
				_btnDown.css("cursor","pointer").click(scrollLeft);
			}
		}
	}
})
})(jQuery);

/*
http://code.google.com/p/cookies/wiki/License
使用 空值为null
$.cookies.set("user_email",date,{hoursToLive:24});
$.cookies.get("cartCpNum")
*/
var jaaulde=window.jaaulde||{};jaaulde.utils=jaaulde.utils||{};jaaulde.utils.cookies=(function()
{var cookies=[];var defaultOptions={hoursToLive:null,path:'/',domain:null,secure:false};var resolveOptions=function(options)
{var returnValue;if(typeof options!=='object'||options===null)
{returnValue=defaultOptions;}
else
{returnValue={hoursToLive:(typeof options.hoursToLive==='number'&&options.hoursToLive!==0?options.hoursToLive:defaultOptions.hoursToLive),path:(typeof options.path==='string'&&options.path!==''?options.path:defaultOptions.path),domain:(typeof options.domain==='string'&&options.domain!==''?options.domain:defaultOptions.domain),secure:(typeof options.secure==='boolean'&&options.secure?options.secure:defaultOptions.secure)};}
return returnValue;};var expiresGMTString=function(hoursToLive)
{var dateObject=new Date();dateObject.setTime(dateObject.getTime()+(hoursToLive*60*60*1000));return dateObject.toGMTString();};var assembleOptionsString=function(options)
{options=resolveOptions(options);return((typeof options.hoursToLive==='number'?'; expires='+expiresGMTString(options.hoursToLive):'')+'; path='+options.path+
(typeof options.domain==='string'?'; domain='+options.domain:'')+
(options.secure===true?'; secure':''));};var splitCookies=function()
{cookies={};var pair,name,value,separated=document.cookie.split(';');for(var i=0;i<separated.length;i=i+1)
{pair=separated[i].split('=');name=pair[0].replace(/^\s*/,'').replace(/\s*$/,'');value=decodeURIComponent(pair[1]);cookies[name]=value;}
return cookies;};var constructor=function(){};constructor.prototype.get=function(cookieName)
{var returnValue;splitCookies();if(typeof cookieName==='string')
{returnValue=(typeof cookies[cookieName]!=='undefined')?cookies[cookieName]:null;}
else if(typeof cookieName==='object'&&cookieName!==null)
{returnValue={};for(var item in cookieName)
{if(typeof cookies[cookieName[item]]!=='undefined')
{returnValue[cookieName[item]]=cookies[cookieName[item]];}
else
{returnValue[cookieName[item]]=null;}}}
else
{returnValue=cookies;}
return returnValue;};constructor.prototype.filter=function(cookieNameRegExp)
{var returnValue={};splitCookies();if(typeof cookieNameRegExp==='string')
{cookieNameRegExp=new RegExp(cookieNameRegExp);}
for(var cookieName in cookies)
{if(cookieName.match(cookieNameRegExp))
{returnValue[cookieName]=cookies[cookieName];}}
return returnValue;};constructor.prototype.set=function(cookieName,value,options)
{if(typeof value==='undefined'||value===null)
{if(typeof options!=='object'||options===null)
{options={};}
value='';options.hoursToLive=-8760;}
var optionsString=assembleOptionsString(options);document.cookie=cookieName+'='+encodeURIComponent(value)+optionsString;};constructor.prototype.del=function(cookieName,options)
{var allCookies={};if(typeof options!=='object'||options===null)
{options={};}
if(typeof cookieName==='boolean'&&cookieName===true)
{allCookies=this.get();}
else if(typeof cookieName==='string')
{allCookies[cookieName]=true;}
for(var name in allCookies)
{if(typeof name==='string'&&name!=='')
{this.set(name,null,options);}}};constructor.prototype.test=function()
{var returnValue=false,testName='cT',testValue='data';this.set(testName,testValue);if(this.get(testName)===testValue)
{this.del(testName);returnValue=true;}
return returnValue;};constructor.prototype.setOptions=function(options)
{if(typeof options!=='object')
{options=null;}
defaultOptions=resolveOptions(options);};return new constructor();})();(function()
{if(window.jQuery)
{(function($)
{$.cookies=jaaulde.utils.cookies;var extensions={cookify:function(options)
{return this.each(function()
{var i,resolvedName=false,resolvedValue=false,name='',value='',nameAttrs=['name','id'],nodeName,inputType;for(i in nameAttrs)
{if(!isNaN(i))
{name=$(this).attr(nameAttrs[i]);if(typeof name==='string'&&name!=='')
{resolvedName=true;break;}}}
if(resolvedName)
{nodeName=this.nodeName.toLowerCase();if(nodeName!=='input'&&nodeName!=='textarea'&&nodeName!=='select'&&nodeName!=='img')
{value=$(this).html();resolvedValue=true;}
else
{inputType=$(this).attr('type');if(typeof inputType==='string'&&inputType!=='')
{inputType=inputType.toLowerCase();}
if(inputType!=='radio'&&inputType!=='checkbox')
{value=$(this).val();resolvedValue=true;}}
if(resolvedValue)
{if(typeof value!=='string'||value==='')
{value=null;}
$.cookies.set(name,value,options);}}});},cookieFill:function()
{return this.each(function()
{var i,resolvedName=false,name='',value,nameAttrs=['name','id'],iteration=0,nodeName;for(i in nameAttrs)
{if(!isNaN(i))
{name=$(this).attr(nameAttrs[i]);if(typeof name==='string'&&name!=='')
{resolvedName=true;break;}}}
if(resolvedName)
{value=$.cookies.get(name);if(value!==null)
{nodeName=this.nodeName.toLowerCase();if(nodeName==='input'||nodeName==='textarea'||nodeName==='select')
{$(this).val(value);}
else
{$(this).html(value);}}}
iteration=0;});},cookieBind:function(options)
{return this.each(function()
{$(this).cookieFill().change(function()
{$(this).cookify(options);});});}};$.each(extensions,function(i)
{$.fn[i]=this;});})(window.jQuery);}})();

/*
http://code.google.com/p/jquery-json/
var encoded = $.toJSON(thing);              //'{"plugin":"jquery-json","version":2.2}'
var name = $.evalJSON(encoded).plugin;      //"jquery-json"
var version = $.evalJSON(encoded).version;  // 2.2
*/
(function($){$.toJSON=function(o)
{if(typeof(JSON)=='object'&&JSON.stringify)
return JSON.stringify(o);var type=typeof(o);if(o===null)
return"null";if(type=="undefined")
return undefined;if(type=="number"||type=="boolean")
return o+"";if(type=="string")
return $.quoteString(o);if(type=='object')
{if(typeof o.toJSON=="function")
return $.toJSON(o.toJSON());if(o.constructor===Date)
{var month=o.getUTCMonth()+1;if(month<10)month='0'+month;var day=o.getUTCDate();if(day<10)day='0'+day;var year=o.getUTCFullYear();var hours=o.getUTCHours();if(hours<10)hours='0'+hours;var minutes=o.getUTCMinutes();if(minutes<10)minutes='0'+minutes;var seconds=o.getUTCSeconds();if(seconds<10)seconds='0'+seconds;var milli=o.getUTCMilliseconds();if(milli<100)milli='0'+milli;if(milli<10)milli='0'+milli;return'"'+year+'-'+month+'-'+day+'T'+
hours+':'+minutes+':'+seconds+'.'+milli+'Z"';}
if(o.constructor===Array)
{var ret=[];for(var i=0;i<o.length;i++)
ret.push($.toJSON(o[i])||"null");return"["+ret.join(",")+"]";}
var pairs=[];for(var k in o){var name;var type=typeof k;if(type=="number")
name='"'+k+'"';else if(type=="string")
name=$.quoteString(k);else
continue;if(typeof o[k]=="function")
continue;var val=$.toJSON(o[k]);pairs.push(name+":"+val);}
return"{"+pairs.join(", ")+"}";}};$.evalJSON=function(src)
{if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src); return eval("("+src+")");};$.secureEvalJSON=function(src)
{if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
return eval("("+src+")");else
throw new SyntaxError("Error parsing JSON, source is not valid.");};$.quoteString=function(string)
{if(string.match(_escapeable))
{return'"'+string.replace(_escapeable,function(a)
{var c=_meta[a];if(typeof c==='string')return c;c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};var _escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var _meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};})(jQuery);
