/*! * superslide v2.1.1 * ���ɽ����վ�󲿷���чչʾ���� * �꾡��ϣ�뿴������http://www.superslide2.com/ * * copyright 2011-2013, ����ϯ * * ������ԭ��������ͷ����ȩ * �ڱ����ȩ��ǰ���¿�ӧ���ڸ��˻���ҵ��; * v2.1.1���޸������ö��superslide��������returndefault:true ʱ����defaultindex�������� */ (function ($) { $.fn.slide = function (options) { $.fn.slide.defaults = { type: "slide", effect: "fade", autoplay: false, delaytime: 500, intertime: 2500, triggertime: 150, defaultindex: 0, titcell: ".hd li", maincell: ".bd", targetcell: null, trigger: "mouseover", scroll: 1, vis: 1, titonclassname: "on", autopage: false, prevcell: ".prev", nextcell: ".next", pagestatecell: ".pagestate", opp: false, pnloop: true, easing: "swing", startfun: null, endfun: null, switchload: null, playstatecell: ".playstate", mouseoverstop: true, defaultplay: true, returndefault: false }; return this.each(function () { var opts = $.extend({}, $.fn.slide.defaults, options); var slider = $(this); var effect = opts.effect; var prevbtn = $(opts.prevcell, slider); var nextbtn = $(opts.nextcell, slider); var pagestate = $(opts.pagestatecell, slider); var playstate = $(opts.playstatecell, slider); var navobj = $(opts.titcell, slider); //������Ԫ�ؽ�� var navobjsize = navobj.size(); var conbox = $(opts.maincell, slider); //����Ԫ�ظ������ var conboxsize = conbox.children().size(); var sload = opts.switchload; var tarobj = $(opts.targetcell, slider); /*�ַ���ת��*/ var index = parseint(opts.defaultindex); var delaytime = parseint(opts.delaytime); var intertime = parseint(opts.intertime); var triggertime = parseint(opts.triggertime); var scroll = parseint(opts.scroll); var vis = parseint(opts.vis); var autoplay = (opts.autoplay == "false" || opts.autoplay == false) ? false : true; var opp = (opts.opp == "false" || opts.opp == false) ? false : true; var autopage = (opts.autopage == "false" || opts.autopage == false) ? false : true; var pnloop = (opts.pnloop == "false" || opts.pnloop == false) ? false : true; var mouseoverstop = (opts.mouseoverstop == "false" || opts.mouseoverstop == false) ? false : true; var defaultplay = (opts.defaultplay == "false" || opts.defaultplay == false) ? false : true; var returndefault = (opts.returndefault == "false" || opts.returndefault == false) ? false : true; var slideh = 0; var slidew = 0; var selfw = 0; var selfh = 0; var easing = opts.easing; var inter = null; //autoplay-setinterval var mst = null; //trigger-settimeout var rtnst = null; //returndefault-settimeout var titon = opts.titonclassname; var onindex = navobj.index(slider.find("." + titon)); var oldindex = index = onindex == -1 ? index : onindex; var defaultindex = index; var _ind = index; var clonenum = conboxsize >= vis ? (conboxsize % scroll != 0 ? conboxsize % scroll : scroll) : 0; var _tar; var ismarq = effect == "leftmarquee" || effect == "topmarquee" ? true : false; var dostartfun = function () { if ($.isfunction(opts.startfun)) { opts.startfun(index, navobjsize, slider, $(opts.titcell, slider), conbox, tarobj, prevbtn, nextbtn) } } var doendfun = function () { if ($.isfunction(opts.endfun)) { opts.endfun(index, navobjsize, slider, $(opts.titcell, slider), conbox, tarobj, prevbtn, nextbtn) } } var reseton = function () { navobj.removeclass(titon); if (defaultplay) navobj.eq(defaultindex).addclass(titon) } //��������˵�ч�� if (opts.type == "menu") { if (defaultplay) { navobj.removeclass(titon).eq(index).addclass(titon); } navobj.hover( function () { _tar = $(this).find(opts.targetcell); var hoverind = navobj.index($(this)); mst = settimeout(function () { index = hoverind; navobj.removeclass(titon).eq(index).addclass(titon); dostartfun(); switch (effect) { case "fade": _tar.stop(true, true).animate({ opacity: "show" }, delaytime, easing, doendfun); break; case "slidedown": _tar.stop(true, true).animate({ height: "show" }, delaytime, easing, doendfun); break; } }, opts.triggertime); }, function () { cleartimeout(mst); switch (effect) { case "fade": _tar.animate({ opacity: "hide" }, delaytime, easing); break; case "slidedown": _tar.animate({ height: "hide" }, delaytime, easing); break; } } ); if (returndefault) { slider.hover(function () { cleartimeout(rtnst); }, function () { rtnst = settimeout(reseton, delaytime); }); } return; } //�����ҳ if (navobjsize == 0) navobjsize = conboxsize; //ֻ�����ұ�ť if (ismarq) navobjsize = 2; if (autopage) { if (conboxsize >= vis) { if (effect == "leftloop" || effect == "toploop") { navobjsize = conboxsize % scroll != 0 ? (conboxsize / scroll ^ 0) + 1 : conboxsize / scroll; } else { var temps = conboxsize - vis; navobjsize = 1 + parseint(temps % scroll != 0 ? (temps / scroll + 1) : (temps / scroll)); if (navobjsize <= 0) navobjsize = 1; } } else { navobjsize = 1 } navobj.html(""); var str = ""; if (opts.autopage == true || opts.autopage == "true") { for (var i = 0; i < navobjsize; i++) { str += "
  • " + (i + 1) + "
  • " } } else { for (var i = 0; i < navobjsize; i++) { str += opts.autopage.replace("$", (i + 1)) } } navobj.html(str); var navobj = navobj.children(); //���õ�����Ԫ�ض��� } if (conboxsize >= vis) { //�����ݸ������ڿ��ӹ�������ִ��ч���� conbox.children().each(function () { //ȡ���ֵ if ($(this).width() > selfw) { selfw = $(this).width(); slidew = $(this).outerwidth(true); } if ($(this).height() > selfh) { selfh = $(this).height(); slideh = $(this).outerheight(true); } }); var _chr = conbox.children(); var cloneele = function () { for (var i = 0; i < vis; i++) { _chr.eq(i).clone().addclass("clone").appendto(conbox); } for (var i = 0; i < clonenum; i++) { _chr.eq(conboxsize - i - 1).clone().addclass("clone").prependto(conbox); } } switch (effect) { case "fold": conbox.css({ "position": "relative", "width": slidew, "height": slideh }).children().css({ "position": "absolute", "width": selfw, "left": 0, "top": 0, "display": "none" }); break; case "top": conbox.wrap('
    ').css({ "top": -(index * scroll) * slideh, "position": "relative", "padding": "0", "margin": "0" }).children().css({ "height": selfh }); break; case "left": conbox.wrap('
    ').css({ "width": conboxsize * slidew, "left": -(index * scroll) * slidew, "position": "relative", "overflow": "hidden", "padding": "0", "margin": "0" }).children().css({ "float": "left", "width": selfw }); break; case "leftloop": case "leftmarquee": cloneele(); conbox.wrap('
    ').css({ "width": (conboxsize + vis + clonenum) * slidew, "position": "relative", "overflow": "hidden", "padding": "0", "margin": "0", "left": -(clonenum + index * scroll) * slidew }).children().css({ "float": "left", "width": selfw }); break; case "toploop": case "topmarquee": cloneele(); conbox.wrap('
    ').css({ "height": (conboxsize + vis + clonenum) * slideh, "position": "relative", "padding": "0", "margin": "0", "top": -(clonenum + index * scroll) * slideh }).children().css({ "height": selfh }); break; } } //���leftloop��toploop�ĺ������� var scrollnum = function (ind) { var _tempcs = ind * scroll; if (ind == navobjsize) { _tempcs = conboxsize; } else if (ind == -1 && conboxsize % scroll != 0) { _tempcs = -conboxsize % scroll; } return _tempcs; } //�л����� var doswitchload = function (objs) { var changeimg = function (t) { for (var i = t; i < (vis + t); i++) { objs.eq(i).find("img[" + sload + "]").each(function () { var _this = $(this); _this.attr("src", _this.attr(sload)).removeattr(sload); if (conbox.find(".clone")[0]) { //�������.clone var chir = conbox.children(); for (var j = 0; j < chir.size(); j++) { chir.eq(j).find("img[" + sload + "]").each(function () { if ($(this).attr(sload) == _this.attr("src")) $(this).attr("src", $(this).attr(sload)).removeattr(sload) }) } } }) } } switch (effect) { case "fade": case "fold": case "top": case "left": case "slidedown": changeimg(index * scroll); break; case "leftloop": case "toploop": changeimg(clonenum + scrollnum(_ind)); break; case "leftmarquee": case "topmarquee": var curs = effect == "leftmarquee" ? conbox.css("left").replace("px", "") : conbox.css("top").replace("px", ""); var slidet = effect == "leftmarquee" ? slidew : slideh; var mnum = clonenum; if (curs % slidet != 0) { var curp = math.abs(curs / slidet ^ 0); if (index == 1) { mnum = clonenum + curp } else { mnum = clonenum + curp - 1 } } changeimg(mnum); break; } } //doswitchload end //ч������ var doplay = function (init) { // ��ǰҳ״̬������ч�� if (defaultplay && oldindex == index && !init && !ismarq) return; //����ҳ�� if (ismarq) { if (index >= 1) { index = 1; } else if (index <= 0) { index = 0; } } else { _ind = index; if (index >= navobjsize) { index = 0; } else if (index < 0) { index = navobjsize - 1; } } dostartfun(); //�����л����� if (sload != null) { doswitchload(conbox.children()) } //����targetcell if (tarobj[0]) { _tar = tarobj.eq(index); if (sload != null) { doswitchload(tarobj) } if (effect == "slidedown") { tarobj.not(_tar).stop(true, true).slideup(delaytime); _tar.slidedown(delaytime, easing, function () { if (!conbox[0]) doendfun() }); } else { tarobj.not(_tar).stop(true, true).hide(); _tar.animate({ opacity: "show" }, delaytime, function () { if (!conbox[0]) doendfun() }); } } if (conboxsize >= vis) { //�����ݸ������ڿ��ӹ�������ִ��ч���� switch (effect) { case "fade": conbox.children().stop(true, true).eq(index).animate({ opacity: "show" }, delaytime, easing, function () { doendfun() }).siblings().hide(); break; case "fold": conbox.children().stop(true, true).eq(index).animate({ opacity: "show" }, delaytime, easing, function () { doendfun() }).siblings().animate({ opacity: "hide" }, delaytime, easing); break; case "top": conbox.stop(true, false).animate({ "top": -index * scroll * slideh }, delaytime, easing, function () { doendfun() }); break; case "left": conbox.stop(true, false).animate({ "left": -index * scroll * slidew }, delaytime, easing, function () { doendfun() }); break; case "leftloop": var __ind = _ind; conbox.stop(true, true).animate({ "left": -(scrollnum(_ind) + clonenum) * slidew }, delaytime, easing, function () { if (__ind <= -1) { conbox.css("left", -(clonenum + (navobjsize - 1) * scroll) * slidew); } else if (__ind >= navobjsize) { conbox.css("left", -clonenum * slidew); } doendfun(); }); break; //leftloop end case "toploop": var __ind = _ind; conbox.stop(true, true).animate({ "top": -(scrollnum(_ind) + clonenum) * slideh }, delaytime, easing, function () { if (__ind <= -1) { conbox.css("top", -(clonenum + (navobjsize - 1) * scroll) * slideh); } else if (__ind >= navobjsize) { conbox.css("top", -clonenum * slideh); } doendfun(); }); break; //toploop end case "leftmarquee": var templeft = conbox.css("left").replace("px", ""); if (index == 0) { conbox.animate({ "left": ++templeft }, 0, function () { if (conbox.css("left").replace("px", "") >= 0) { conbox.css("left", -conboxsize * slidew) } }); } else { conbox.animate({ "left": --templeft }, 0, function () { if (conbox.css("left").replace("px", "") <= -(conboxsize + clonenum) * slidew) { conbox.css("left", -clonenum * slidew) } }); } break; // leftmarquee end case "topmarquee": var temptop = conbox.css("top").replace("px", ""); if (index == 0) { conbox.animate({ "top": ++temptop }, 0, function () { if (conbox.css("top").replace("px", "") >= 0) { conbox.css("top", -conboxsize * slideh) } }); } else { conbox.animate({ "top": --temptop }, 0, function () { if (conbox.css("top").replace("px", "") <= -(conboxsize + clonenum) * slideh) { conbox.css("top", -clonenum * slideh) } }); } break; // topmarquee end } //switch end } navobj.removeclass(titon).eq(index).addclass(titon); oldindex = index; if (!pnloop) { //pnloop����ǰ��ť�ƿ����ѭ�� nextbtn.removeclass("nextstop"); prevbtn.removeclass("prevstop"); if (index == 0) { prevbtn.addclass("prevstop"); } if (index == navobjsize - 1) { nextbtn.addclass("nextstop"); } } pagestate.html("" + (index + 1) + "/" + navobjsize); }; // doplay end //��ʼ��ִ�� if (defaultplay) { doplay(true); } if (returndefault)//����ĭ��״̬ { slider.hover(function () { cleartimeout(rtnst) }, function () { rtnst = settimeout(function () { index = defaultindex; if (defaultplay) { doplay(); } else { if (effect == "slidedown") { _tar.slideup(delaytime, reseton); } else { _tar.animate({ opacity: "hide" }, delaytime, reseton); } } oldindex = index; }, 300); }); } ///�զ����ź��� var setinter = function (time) { inter = setinterval(function () { opp ? index-- : index++; doplay() }, !!time ? time : intertime); } var setmarinter = function (time) { inter = setinterval(doplay, !!time ? time : intertime); } // ����mouseoverstop var resetinter = function () { if (!mouseoverstop) { clearinterval(inter); setinter() } } // ǰ��ť���� var nexttrigger = function () { if (pnloop || index != navobjsize - 1) { index++; doplay(); if (!ismarq) resetinter(); } } var prevtrigger = function () { if (pnloop || index != 0) { index--; doplay(); if (!ismarq) resetinter(); } } //����playstate var playstatefun = function () { clearinterval(inter); ismarq ? setmarinter() : setinter(); playstate.removeclass("pausestate") } var pausestatefun = function () { clearinterval(inter); playstate.addclass("pausestate"); } //�զ����� if (autoplay) { if (ismarq) { opp ? index-- : index++; setmarinter(); if (mouseoverstop) conbox.hover(pausestatefun, playstatefun); } else { setinter(); if (mouseoverstop) slider.hover(pausestatefun, playstatefun); } } else { if (ismarq) { opp ? index-- : index++; } playstate.addclass("pausestate"); } playstate.click(function () { playstate.hasclass("pausestate") ? playstatefun() : pausestatefun() }); //titcell�¼� if (opts.trigger == "mouseover") { navobj.hover(function () { var hoverind = navobj.index(this); mst = settimeout(function () { index = hoverind; doplay(); resetinter(); }, opts.triggertime); }, function () { cleartimeout(mst) }); } else { navobj.click(function () { index = navobj.index(this); doplay(); resetinter(); }) } //ǰ��ť�¼� if (ismarq) { nextbtn.mousedown(nexttrigger); prevbtn.mousedown(prevtrigger); //ǰ��ť����10������ if (pnloop) { var st; var mardown = function () { st = settimeout(function () { clearinterval(inter); setmarinter(intertime / 10 ^ 0) }, 150) } var marup = function () { cleartimeout(st); clearinterval(inter); setmarinter() } nextbtn.mousedown(mardown); nextbtn.mouseup(marup); prevbtn.mousedown(mardown); prevbtn.mouseup(marup); } //ǰ��ťmouseover�¼� if (opts.trigger == "mouseover") { nextbtn.hover(nexttrigger, function () { }); prevbtn.hover(prevtrigger, function () { }); } } else { nextbtn.click(nexttrigger); prevbtn.click(prevtrigger); } }); //each end }; //slide end })(jquery); jquery.easing['jswing'] = jquery.easing['swing']; jquery.extend(jquery.easing, { def: 'easeoutquad', swing: function (x, t, b, c, d) { return jquery.easing[jquery.easing.def](x, t, b, c, d); }, easeinquad: function (x, t, b, c, d) { return c * (t /= d) * t + b; }, easeoutquad: function (x, t, b, c, d) { return -c * (t /= d) * (t - 2) + b }, easeinoutquad: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t + b; return -c / 2 * ((--t) * (t - 2) - 1) + b }, easeincubic: function (x, t, b, c, d) { return c * (t /= d) * t * t + b }, easeoutcubic: function (x, t, b, c, d) { return c * ((t = t / d - 1) * t * t + 1) + b }, easeinoutcubic: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; return c / 2 * ((t -= 2) * t * t + 2) + b }, easeinquart: function (x, t, b, c, d) { return c * (t /= d) * t * t * t + b }, easeoutquart: function (x, t, b, c, d) { return -c * ((t = t / d - 1) * t * t * t - 1) + b }, easeinoutquart: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b; return -c / 2 * ((t -= 2) * t * t * t - 2) + b }, easeinquint: function (x, t, b, c, d) { return c * (t /= d) * t * t * t * t + b }, easeoutquint: function (x, t, b, c, d) { return c * ((t = t / d - 1) * t * t * t * t + 1) + b }, easeinoutquint: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b; return c / 2 * ((t -= 2) * t * t * t * t + 2) + b }, easeinsine: function (x, t, b, c, d) { return -c * math.cos(t / d * (math.pi / 2)) + c + b }, easeoutsine: function (x, t, b, c, d) { return c * math.sin(t / d * (math.pi / 2)) + b }, easeinoutsine: function (x, t, b, c, d) { return -c / 2 * (math.cos(math.pi * t / d) - 1) + b }, easeinexpo: function (x, t, b, c, d) { return (t == 0) ? b : c * math.pow(2, 10 * (t / d - 1)) + b }, easeoutexpo: function (x, t, b, c, d) { return (t == d) ? b + c : c * (-math.pow(2, -10 * t / d) + 1) + b }, easeinoutexpo: function (x, t, b, c, d) { if (t == 0) return b; if (t == d) return b + c; if ((t /= d / 2) < 1) return c / 2 * math.pow(2, 10 * (t - 1)) + b; return c / 2 * (-math.pow(2, -10 * --t) + 2) + b }, easeincirc: function (x, t, b, c, d) { return -c * (math.sqrt(1 - (t /= d) * t) - 1) + b }, easeoutcirc: function (x, t, b, c, d) { return c * math.sqrt(1 - (t = t / d - 1) * t) + b }, easeinoutcirc: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return -c / 2 * (math.sqrt(1 - t * t) - 1) + b; return c / 2 * (math.sqrt(1 - (t -= 2) * t) + 1) + b }, easeinelastic: function (x, t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < math.abs(c)) { a = c; var s = p / 4; } else var s = p / (2 * math.pi) * math.asin(c / a); return -(a * math.pow(2, 10 * (t -= 1)) * math.sin((t * d - s) * (2 * math.pi) / p)) + b }, easeoutelastic: function (x, t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < math.abs(c)) { a = c; var s = p / 4; } else var s = p / (2 * math.pi) * math.asin(c / a); return a * math.pow(2, -10 * t) * math.sin((t * d - s) * (2 * math.pi) / p) + c + b }, easeinoutelastic: function (x, t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d / 2) == 2) return b + c; if (!p) p = d * (.3 * 1.5); if (a < math.abs(c)) { a = c; var s = p / 4; } else var s = p / (2 * math.pi) * math.asin(c / a); if (t < 1) return -.5 * (a * math.pow(2, 10 * (t -= 1)) * math.sin((t * d - s) * (2 * math.pi) / p)) + b; return a * math.pow(2, -10 * (t -= 1)) * math.sin((t * d - s) * (2 * math.pi) / p) * .5 + c + b }, easeinback: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * (t /= d) * t * ((s + 1) * t - s) + b }, easeoutback: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b }, easeinoutback: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b }, easeinbounce: function (x, t, b, c, d) { return c - jquery.easing.easeoutbounce(x, d - t, 0, c, d) + b }, easeoutbounce: function (x, t, b, c, d) { if ((t /= d) < (1 / 2.75)) { return c * (7.5625 * t * t) + b; } else if (t < (2 / 2.75)) { return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b; } else if (t < (2.5 / 2.75)) { return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b; } else { return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b; } }, easeinoutbounce: function (x, t, b, c, d) { if (t < d / 2) return jquery.easing.easeinbounce(x, t * 2, 0, c, d) * .5 + b; return jquery.easing.easeoutbounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b; } });