(function(h){h.fn.rssfeed=function(q,d,r){d=h.extend({limit:10,header:true,titletag:"h4",date:true,content:true,snippet:true,media:true,showerror:true,errormsg:"",key:null,ssl:false,linktarget:"_self"},d);return this.each(function(s,o){var p=h(o),e="";d.ssl&&(e="s");p.hasClass("rssFeed")||p.addClass("rssFeed");if(q==null)return false;e="http"+e+"://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q="+encodeURIComponent(q);d.limit!=null&&(e+="&num="+d.limit);d.key!=null&&(e+="&key="+d.key);
e+="&output=json_xml";h.getJSON(e,function(a){if(a.responseStatus==200){var c=a.responseData,a=d,g=c.feed;if(g){var f="",e="odd";if(a.media){var j=c.xmlString;navigator.appName=="Microsoft Internet Explorer"?(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(j)):c=(new DOMParser).parseFromString(j,"text/xml");j=c.getElementsByTagName("item")}a.header&&(f+='<div class="rssHeader"><a href="'+g.link+'" title="'+g.description+'">'+g.title+"</a></div>");f+='<div class="rssBody"><ul>';for(c=
0;c<g.entries.length;c++){var b=g.entries[c],i;b.publishedDate&&(i=new Date(b.publishedDate),i=i.toLocaleDateString()+" "+i.toLocaleTimeString());f+='<li class="rssRow '+e+'"><'+a.titletag+'><a href="'+b.link+'" title="View this feed at '+g.title+'" target="'+a.linktarget+'">'+b.title+"</a></"+a.titletag+">";a.date&&i&&(f+="<div>"+i+"</div>");a.content&&(f+="<p>"+(a.snippet&&b.contentSnippet!=""?b.contentSnippet:b.content)+"</p>");if(a.media&&j.length>0){b=j[c].getElementsByTagName("enclosure");if(b.length>
0){f+='<div class="rssMedia"><div>Media files</div><ul>';for(var k=0;k<b.length;k++){var l=b[k].getAttribute("url"),m=b[k].getAttribute("type"),n=b[k].getAttribute("length"),l='<li><a href="'+l+'" title="Download this media">'+l.split("/").pop()+"</a> ("+m+", ",m=Math.floor(Math.log(n)/Math.log(1024)),n=(n/Math.pow(1024,Math.floor(m))).toFixed(2)+" "+"bytes,kb,MB,GB,TB,PB".split(",")[m];f+=l+n+")</li>"}f+="</ul></div>"}f+="</li>"}e=e=="odd"?"even":"odd"}f+="</ul></div>";h(o).html(f)}h.isFunction(r)&&
r.call(this,p)}else d.showerror&&(g=d.errormsg!=""?d.errormsg:a.responseDetails),h(o).html('<div class="rssError"><p>'+g+"</p></div>")})})}})(jQuery);

/** end **/ 

/*
* jQuery Easing v1.1.1 - http://gsgd.co.uk/sandbox/jquery.easing.php
*
* Uses the built in easing capabilities added in jQuery 1.1
* to offer multiple easing options
*
* Copyright (c) 2007 George Smith
* Licensed under the MIT License:
*   http://www.opensource.org/licenses/mit-license.php
*/

jQuery.extend({
    easing: {
        easein: function (x, t, b, c, d) {
            return c * (t /= d) * t + b; // in
        },
        easeinout: function (x, t, b, c, d) {
            if (t < d / 2) return 2 * c * t * t / (d * d) + b;
            var ts = t - d / 2;
            return -2 * c * ts * ts / (d * d) + 2 * c * ts / d + c / 2 + b;
        },
        easeout: function (x, t, b, c, d) {
            return -c * t * t / (d * d) + 2 * c * t / d + b;
        },
        expoin: function (x, t, b, c, d) {
            var flip = 1;
            if (c < 0) {
                flip *= -1;
                c *= -1;
            }
            return flip * (Math.exp(Math.log(c) / d * t)) + b;
        },
        expoout: function (x, t, b, c, d) {
            var flip = 1;
            if (c < 0) {
                flip *= -1;
                c *= -1;
            }
            return flip * (-Math.exp(-Math.log(c) / d * (t - d)) + c + 1) + b;
        },
        expoinout: function (x, t, b, c, d) {
            var flip = 1;
            if (c < 0) {
                flip *= -1;
                c *= -1;
            }
            if (t < d / 2) return flip * (Math.exp(Math.log(c / 2) / (d / 2) * t)) + b;
            return flip * (-Math.exp(-2 * Math.log(c / 2) / d * (t - d)) + c + 1) + b;
        },
        bouncein: function (x, t, b, c, d) {
            return c - jQuery.easing['bounceout'](x, d - t, 0, c, d) + b;
        },
        bounceout: 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;
            }
        },
        bounceinout: function (x, t, b, c, d) {
            if (t < d / 2) return jQuery.easing['bouncein'](x, t * 2, 0, c, d) * .5 + b;
            return jQuery.easing['bounceout'](x, t * 2 - d, 0, c, d) * .5 + c * .5 + b;
        },
        elasin: 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;
        },
        elasout: 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;
        },
        elasinout: 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;
        },
        backin: function (x, t, b, c, d) {
            var s = 1.70158;
            return c * (t /= d) * t * ((s + 1) * t - s) + b;
        },
        backout: function (x, t, b, c, d) {
            var s = 1.70158;
            return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
        },
        backinout: function (x, t, b, c, d) {
            var 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;
        },
        linear: function (x, t, b, c, d) {
            return c * t / d + b; //linear
        }
    }
});
 /****************************************************************
*                                                              *
*  JQuery Curvy Corners by Mike Jolley                         *
*  http://blue-anvil.com                                       *
*  http://code.google.com/p/jquerycurvycorners/                *
*  ==========================================================  *
*                                                              *
*  Version 2.1.1 (Based on CC 2.1 beta)                          *
*                                                              *
*  Original by: Terry Riegel, Cameron Cooke and Tim Hutchison  *
*  Website: http://www.curvycorners.net                        *
*                                                              *
*  This library is free software; you can redistribute         *
*  it and/or modify it under the terms of the GNU              *
*  Lesser General Public License as published by the           *
*  Free Software Foundation; either version 2.1 of the         *
*  License, or (at your option) any later version.             *
*                                                              *
*  This library is distributed in the hope that it will        *
*  be useful, but WITHOUT ANY WARRANTY; without even the       *
*  implied warranty of MERCHANTABILITY or FITNESS FOR A        *
*  PARTICULAR PURPOSE. See the GNU Lesser General Public       *
*  License for more details.                                   *
*                                                              *
*  You should have received a copy of the GNU Lesser           *
*  General Public License along with this library;             *
*  Inc., 59 Temple Place, Suite 330, Boston,                   *
*  MA 02111-1307 USA                                           *
*                                                              *
****************************************************************/
(function ($) {
    function curvyCnrSpec(selText) { this.selectorText = selText; this.tlR = this.trR = this.blR = this.brR = 0; this.tlu = this.tru = this.blu = this.bru = ""; this.antiAlias = true; }; curvyCnrSpec.prototype.setcorner = function (tb, lr, radius, unit) { if (!tb) { this.tlR = this.trR = this.blR = this.brR = parseInt(radius); this.tlu = this.tru = this.blu = this.bru = unit; } else { propname = tb.charAt(0) + lr.charAt(0); this[propname + 'R'] = parseInt(radius); this[propname + 'u'] = unit; } }; curvyCnrSpec.prototype.get = function (prop) {
        if (/^(t|b)(l|r)(R|u)$/.test(prop)) return this[prop]; if (/^(t|b)(l|r)Ru$/.test(prop)) { var pname = prop.charAt(0) + prop.charAt(1); return this[pname + 'R'] + this[pname + 'u']; }
        if (/^(t|b)Ru?$/.test(prop)) {
            var tb = prop.charAt(0); tb += this[tb + 'lR'] > this[tb + 'rR'] ? 'l' : 'r'; var retval = this[tb + 'R']; if (prop.length === 3 && prop.charAt(2) === 'u')
                retval += this[tb = 'u']; return retval;
        }
        throw new Error('Don\'t recognize property ' + prop);
    }; curvyCnrSpec.prototype.radiusdiff = function (tb) { if (tb !== 't' && tb !== 'b') throw new Error("Param must be 't' or 'b'"); return Math.abs(this[tb + 'lR'] - this[tb + 'rR']); }; curvyCnrSpec.prototype.setfrom = function (obj) { this.tlu = this.tru = this.blu = this.bru = 'px'; if ('tl' in obj) this.tlR = obj.tl.radius; if ('tr' in obj) this.trR = obj.tr.radius; if ('bl' in obj) this.blR = obj.bl.radius; if ('br' in obj) this.brR = obj.br.radius; if ('antiAlias' in obj) this.antiAlias = obj.antiAlias; }; curvyCnrSpec.prototype.cloneOn = function (box) {
        var props = ['tl', 'tr', 'bl', 'br']; var converted = 0; var i, propu; for (i in props) if (!isNaN(i)) { propu = this[props[i] + 'u']; if (propu !== '' && propu !== 'px') { converted = new curvyCnrSpec; break; } }
        if (!converted)
            converted = this; else {
            var propi, propR, save = curvyBrowser.get_style(box, 'left'); for (i in props) if (!isNaN(i)) {
                propi = props[i]; propu = this[propi + 'u']; propR = this[propi + 'R']; if (propu !== 'px') { var save = box.style.left; box.style.left = propR + propu; propR = box.style.pixelLeft; box.style.left = save; }
                converted[propi + 'R'] = propR; converted[propi + 'u'] = 'px';
            }
            box.style.left = save;
        }
        return converted;
    }; curvyCnrSpec.prototype.radiusSum = function (tb) { if (tb !== 't' && tb !== 'b') throw new Error("Param must be 't' or 'b'"); return this[tb + 'lR'] + this[tb + 'rR']; }; curvyCnrSpec.prototype.radiusCount = function (tb) { var count = 0; if (this[tb + 'lR']) ++count; if (this[tb + 'rR']) ++count; return count; }; curvyCnrSpec.prototype.cornerNames = function () { var ret = []; if (this.tlR) ret.push('tl'); if (this.trR) ret.push('tr'); if (this.blR) ret.push('bl'); if (this.brR) ret.push('br'); return ret; }; if (typeof redrawList === 'undefined') redrawList = new Array; $.fn.corner = function (options) {
        var nativeCornersSupported = false; var checkWebkit, checkMozilla, checkStandard; try { checkWebkit = (document.body.style.WebkitBorderRadius !== undefined); } catch (err) { }
        try { checkMozilla = (document.body.style.MozBorderRadius !== undefined); } catch (err) { }
        try { checkStandard = (document.body.style.BorderRadius !== undefined); } catch (err) { }
        if (checkWebkit || checkMozilla || checkStandard) nativeCornersSupported = true; if (options instanceof curvyCnrSpec) { settings = options; }
        else { var options = jQuery.extend({ tl: { radius: 8 }, tr: { radius: 8 }, bl: { radius: 8 }, br: { radius: 8 }, antiAlias: true }, options); var settings = new curvyCnrSpec(this); settings.setfrom(options); }
        function curvyObject() {
            this.box = arguments[1]; this.settings = arguments[0]; var $$ = $(this.box); var boxDisp; this.masterCorners = new Array(); this.topContainer = this.bottomContainer = this.shell = boxDisp = null; var boxWidth = $$.innerWidth(); if ($$.is('table'))
                throw new Error("You cannot apply corners to " + this.box.tagName + " elements.", "Error"); if ($$.css('display') === 'inline') { $$.css('display', 'inline-block'); }
            if (!boxWidth) { this.applyCorners = function () { }; return; }
            if (arguments[0] instanceof curvyCnrSpec) { this.spec = arguments[0].cloneOn(this.box); } else { this.spec = new curvyCnrSpec(''); this.spec.setfrom(this.settings); }
            var borderWidth = $$.css("borderTopWidth") ? $$.css("borderTopWidth") : 0; var borderWidthB = $$.css("borderBottomWidth") ? $$.css("borderBottomWidth") : 0; var borderWidthL = $$.css("borderLeftWidth") ? $$.css("borderLeftWidth") : 0; var borderWidthR = $$.css("borderRightWidth") ? $$.css("borderRightWidth") : 0; var borderColour = $$.css("borderTopColor"); var borderColourB = $$.css("borderBottomColor"); var borderColourL = $$.css("borderLeftColor"); var borderColourR = $$.css("borderRightColor"); var borderStyle = $$.css("borderTopStyle"); var borderStyleB = $$.css("borderBottomStyle"); var borderStyleL = $$.css("borderLeftStyle"); var borderStyleR = $$.css("borderRightStyle"); var boxColour = $$.css("backgroundColor"); var backgroundImage = $$.css("backgroundImage"); var backgroundRepeat = $$.css("backgroundRepeat"); var backgroundPosX, backgroundPosY; backgroundPosX = $$.css("backgroundPositionX") ? $$.css("backgroundPositionX") : 0; backgroundPosY = $$.css("backgroundPositionY") ? $$.css("backgroundPositionY") : 0; var boxPosition = $$.css("position"); var topPadding = $$.css("paddingTop"); var bottomPadding = $$.css("paddingBottom"); var leftPadding = $$.css("paddingLeft"); var rightPadding = $$.css("paddingRight"); var border = $$.css("border"); var filter = jQuery.browser.version > 7 && $.browser.msie ? $$.css("filter") : null; var topMaxRadius = this.spec.get('tR'); var botMaxRadius = this.spec.get('bR'); var styleToNPx = function (val) { if (typeof val === 'number') return val; if (typeof val !== 'string') throw new Error('unexpected styleToNPx type ' + typeof val); var matches = /^[-\d.]([a-z]+)$/.exec(val); if (matches && matches[1] != 'px') throw new Error('Unexpected unit ' + matches[1]); if (isNaN(val = parseInt(val))) val = 0; return val; }; var min0Px = function (val) { return val <= 0 ? "0" : val + "px"; }; try { this.borderWidth = styleToNPx(borderWidth); this.borderWidthB = styleToNPx(borderWidthB); this.borderWidthL = styleToNPx(borderWidthL); this.borderWidthR = styleToNPx(borderWidthR); this.boxColour = curvyObject.format_colour(boxColour); this.topPadding = styleToNPx(topPadding); this.bottomPadding = styleToNPx(bottomPadding); this.leftPadding = styleToNPx(leftPadding); this.rightPadding = styleToNPx(rightPadding); this.boxWidth = boxWidth; this.boxHeight = $$.innerHeight(); this.borderColour = curvyObject.format_colour(borderColour); this.borderColourB = curvyObject.format_colour(borderColourB); this.borderColourL = curvyObject.format_colour(borderColourL); this.borderColourR = curvyObject.format_colour(borderColourR); this.borderString = this.borderWidth + "px" + " " + borderStyle + " " + this.borderColour; this.borderStringB = this.borderWidthB + "px" + " " + borderStyleB + " " + this.borderColourB; this.borderStringL = this.borderWidthL + "px" + " " + borderStyleL + " " + this.borderColourL; this.borderStringR = this.borderWidthR + "px" + " " + borderStyleR + " " + this.borderColourR; this.backgroundImage = (backgroundImage != "none" && backgroundImage != "initial") ? backgroundImage : ""; this.backgroundRepeat = backgroundRepeat; }
            catch (e) { }
            var clientHeight = this.boxHeight; var clientWidth = boxWidth; if ($.browser.opera) {
                backgroundPosX = styleToNPx(backgroundPosX); backgroundPosY = styleToNPx(backgroundPosY); if (backgroundPosX) { var t = clientWidth + this.borderWidthL + this.borderWidthR; if (backgroundPosX > t) backgroundPosX = t; backgroundPosX = (t / backgroundPosX * 100) + '%'; }
                if (backgroundPosY) { var t = clientHeight + this.borderWidth + this.borderWidthB; if (backgroundPosY > t) backgroundPosY = t; backgroundPosY = (t / backgroundPosY * 100) + '%'; } 
            }
            this.contentContainer = document.createElement("div"); if (filter) this.contentContainer.style.filter = filter; while (this.box.firstChild) this.contentContainer.appendChild(this.box.removeChild(this.box.firstChild)); if (boxPosition != "absolute") $$.css("position", "relative"); this.box.style.padding = '0'; this.box.style.border = this.box.style.backgroundImage = 'none'; this.box.style.backgroundColor = 'transparent'; this.box.style.width = (clientWidth + this.borderWidthL + this.borderWidthR) + 'px'; this.box.style.height = (clientHeight + this.borderWidth + this.borderWidthB) + 'px'; var newMainContainer = document.createElement("div"); $(newMainContainer).css({ width: clientWidth + 'px', 'padding': "0", position: "absolute", height: min0Px(clientHeight + this.borderWidth + this.borderWidthB - topMaxRadius - botMaxRadius), top: topMaxRadius + "px", left: "0", 'backgroundColor': boxColour, 'backgroundImage': this.backgroundImage, 'backgroundRepeat': this.backgroundRepeat, 'direction': 'ltr' }); if (filter) $(newMainContainer).css('filter', 'filter'); if (this.borderWidthL)
                $(newMainContainer).css('borderLeft', this.borderStringL); if (this.borderWidth && !topMaxRadius)
                $(newMainContainer).css('borderTop', this.borderString); if (this.borderWidthR)
                $(newMainContainer).css('borderRight', this.borderStringR); if (this.borderWidthB && !botMaxRadius)
                $(newMainContainer).css('borderBottom', this.borderStringB); this.shell = this.box.appendChild(newMainContainer); boxWidth = $(this.shell).css("width"); if (boxWidth === "" || boxWidth === "auto" || boxWidth.indexOf("%") !== -1) throw Error('Shell width is ' + boxWidth); this.boxWidth = (boxWidth != "" && boxWidth != "auto" && boxWidth.indexOf("%") == -1) ? parseInt(boxWidth) : $(this.shell).width(); this.applyCorners = function () {
                    this.backgroundPosX = this.backgroundPosY = 0; if (this.backgroundObject) { var bgOffset = function (style, imglen, boxlen) { if (style === 0) return 0; var retval; if (style === 'right' || style === 'bottom') return boxlen - imglen; if (style === 'center') return (boxlen - imglen) / 2; if (style.indexOf('%') > 0) return (boxlen - imglen) / (100 / parseInt(style)); return styleToNPx(style); }; this.backgroundPosX = bgOffset(backgroundPosX, this.backgroundObject.width, clientWidth); this.backgroundPosY = bgOffset(backgroundPosY, this.backgroundObject.height, clientHeight); }
                    else if (this.backgroundImage) { this.backgroundPosX = styleToNPx(backgroundPosX); this.backgroundPosY = styleToNPx(backgroundPosY); }
                    if (topMaxRadius) { newMainContainer = document.createElement("div"); $(newMainContainer).css({ width: this.boxWidth + "px", 'fontSize': "1px", overflow: "hidden", position: "absolute", 'paddingLeft': this.borderWidth + "px", 'paddingRight': this.borderWidth + "px", height: topMaxRadius + "px", top: -topMaxRadius + "px", left: -this.borderWidthL + "px" }); this.topContainer = this.shell.appendChild(newMainContainer); }
                    if (botMaxRadius) { var newMainContainer = document.createElement("div"); $(newMainContainer).css({ width: this.boxWidth + "px", 'fontSize': "1px", overflow: "hidden", position: "absolute", 'paddingLeft': this.borderWidthB + "px", 'paddingRight': this.borderWidthB + "px", height: botMaxRadius + "px", bottom: -botMaxRadius + "px", left: -this.borderWidthL + "px" }); this.bottomContainer = this.shell.appendChild(newMainContainer); }
                    var corners = this.spec.cornerNames(); for (var i in corners) if (!isNaN(i)) {
                        var cc = corners[i]; var specRadius = this.spec[cc + 'R']; var bwidth, bcolor, borderRadius, borderWidthTB; if (cc == "tr" || cc == "tl") { bwidth = this.borderWidth; bcolor = this.borderColour; borderWidthTB = this.borderWidth; } else { bwidth = this.borderWidthB; bcolor = this.borderColourB; borderWidthTB = this.borderWidthB; }
                        borderRadius = specRadius - borderWidthTB; var newCorner = document.createElement("div"); $(newCorner).css({ position: "absolute", "font-size": "1px", overflow: "hidden" }).height(this.spec.get(cc + 'Ru')).width(this.spec.get(cc + 'Ru')); var intx, inty, outsideColour; var trans = filter ? parseInt(/alpha\(opacity.(\d+)\)/.exec(filter)[1]) : 100; for (intx = 0; intx < specRadius; ++intx) {
                            var y1 = (intx + 1 >= borderRadius) ? -1 : Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow(intx + 1, 2))) - 1; if (borderRadius != specRadius) { var y2 = (intx >= borderRadius) ? -1 : Math.ceil(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow(intx, 2))); var y3 = (intx + 1 >= specRadius) ? -1 : Math.floor(Math.sqrt(Math.pow(specRadius, 2) - Math.pow((intx + 1), 2))) - 1; }
                            var y4 = (intx >= specRadius) ? -1 : Math.ceil(Math.sqrt(Math.pow(specRadius, 2) - Math.pow(intx, 2))); if (y1 > -1) this.drawPixel(intx, 0, this.boxColour, trans, (y1 + 1), newCorner, true, specRadius); if (borderRadius != specRadius) {
                                if (this.spec.antiAlias) {
                                    for (inty = y1 + 1; inty < y2; ++inty) {
                                        if (this.backgroundImage != "") { var borderFract = curvyObject.pixelFraction(intx, inty, borderRadius) * 100; this.drawPixel(intx, inty, bcolor, trans, 1, newCorner, borderFract >= 30, specRadius); }
                                        else if (this.boxColour !== 'transparent') { var pixelcolour = curvyObject.BlendColour(this.boxColour, bcolor, curvyObject.pixelFraction(intx, inty, borderRadius)); this.drawPixel(intx, inty, pixelcolour, trans, 1, newCorner, false, specRadius); }
                                        else this.drawPixel(intx, inty, bcolor, trans >> 1, 1, newCorner, false, specRadius);
                                    }
                                    if (y3 >= y2) { if (y2 == -1) y2 = 0; this.drawPixel(intx, y2, bcolor, trans, (y3 - y2 + 1), newCorner, false, 0); }
                                    outsideColour = bcolor; inty = y3;
                                }
                                else { if (y3 > y1) { this.drawPixel(intx, (y1 + 1), bcolor, trans, (y3 - y1), newCorner, false, 0); } } 
                            }
                            else { outsideColour = this.boxColour; inty = y1; }
                            if (this.spec.antiAlias && this.boxColour !== 'transparent') { while (++inty < y4) { this.drawPixel(intx, inty, outsideColour, (curvyObject.pixelFraction(intx, inty, specRadius) * trans), 1, newCorner, borderWidthTB <= 0, specRadius); } } 
                        }
                        for (var t = 0, k = newCorner.childNodes.length; t < k; ++t) {
                            var pixelBar = newCorner.childNodes[t]; var pixelBarTop = parseInt($(pixelBar).css('top')); var pixelBarLeft = parseInt($(pixelBar).css('left')); var pixelBarHeight = parseInt($(pixelBar).css('height')); if (cc == "tl" || cc == "bl") { $(pixelBar).css('left', (specRadius - pixelBarLeft - 1) + "px"); }
                            if (cc == "tr" || cc == "tl") { $(pixelBar).css('top', (specRadius - pixelBarHeight - pixelBarTop) + "px"); }
                            $(pixelBar).css('backgroundRepeat', this.backgroundRepeat); if (this.backgroundImage) switch (cc) { case "tr": $(pixelBar).css('backgroundPosition', (this.backgroundPosX - this.borderWidthL + specRadius - clientWidth - pixelBarLeft) + "px " + (this.backgroundPosY + pixelBarHeight + pixelBarTop + this.borderWidth - specRadius) + "px"); break; case "tl": $(pixelBar).css('backgroundPosition', (this.backgroundPosX - specRadius + pixelBarLeft + 1 + this.borderWidthL) + "px " + (this.backgroundPosY - specRadius + pixelBarHeight + pixelBarTop + this.borderWidth) + "px"); break; case "bl": $(pixelBar).css('backgroundPosition', (this.backgroundPosX - specRadius + pixelBarLeft + 1 + this.borderWidthL) + "px " + (this.backgroundPosY - clientHeight - this.borderWidth + (!jQuery.support.boxModel ? pixelBarTop : -pixelBarTop) + specRadius) + "px"); break; case "br": if (!jQuery.support.boxModel) { $(pixelBar).css('backgroundPosition', (this.backgroundPosX - this.borderWidthL - clientWidth + specRadius - pixelBarLeft) + "px " + (this.backgroundPosY - clientHeight - this.borderWidth + pixelBarTop + specRadius) + "px"); } else { $(pixelBar).css('backgroundPosition', (this.backgroundPosX - this.borderWidthL - clientWidth + specRadius - pixelBarLeft) + "px " + (this.backgroundPosY - clientHeight - this.borderWidth + specRadius - pixelBarTop) + "px"); } } 
                        }
                        switch (cc) { case "tl": $(newCorner).css('top', newCorner.style.left = "0"); this.topContainer.appendChild(newCorner); break; case "tr": $(newCorner).css('top', newCorner.style.right = "0"); this.topContainer.appendChild(newCorner); break; case "bl": $(newCorner).css('bottom', newCorner.style.left = "0"); this.bottomContainer.appendChild(newCorner); break; case "br": $(newCorner).css('bottom', newCorner.style.right = "0"); this.bottomContainer.appendChild(newCorner); } 
                    }
                    var radiusDiff = { t: this.spec.radiusdiff('t'), b: this.spec.radiusdiff('b') }; for (z in radiusDiff) {
                        if (typeof z === 'function') continue; if (!this.spec.get(z + 'R')) continue; if (radiusDiff[z]) { var smallerCornerType = (this.spec[z + "lR"] < this.spec[z + "rR"]) ? z + "l" : z + "r"; var newFiller = document.createElement("div"); $(newFiller).css({ 'height': radiusDiff[z] + "px", 'width': this.spec.get(smallerCornerType + 'Ru'), 'position': "absolute", 'fontSize': "1px", 'overflow': "hidden", 'backgroundColor': this.boxColour, 'backgroundImage': this.backgroundImage, 'backgroundRepeat': this.backgroundRepeat }); if (filter) $(newFiller).css('filter', 'filter'); switch (smallerCornerType) { case "tl": $(newFiller).css({ 'bottom': '', 'left': '0', 'borderLeft': this.borderStringL, 'backgroundPosition': this.backgroundPosX + "px " + (this.borderWidth + this.backgroundPosY - this.spec.tlR) + "px" }); this.topContainer.appendChild(newFiller); break; case "tr": $(newFiller).css({ 'bottom': '', 'right': '0', 'borderRight': this.borderStringR, 'backgroundPosition': (this.backgroundPosX - this.boxWidth + this.spec.trR) + "px " + (this.borderWidth + this.backgroundPosY - this.spec.trR) + "px" }); this.topContainer.appendChild(newFiller); break; case "bl": $(newFiller).css({ 'top': '', 'left': '0', 'borderLeft': this.borderStringL, 'backgroundPosition': this.backgroundPosX + "px " + (this.backgroundPosY - this.borderWidth - this.boxHeight + radiusDiff[z] + this.spec.blR) + "px" }); this.bottomContainer.appendChild(newFiller); break; case "br": $(newFiller).css({ 'top': '', 'right': '0', 'borderRight': this.borderStringR, 'backgroundPosition': (this.borderWidthL + this.backgroundPosX - this.boxWidth + this.spec.brR) + "px " + (this.backgroundPosY - this.borderWidth - this.boxHeight + radiusDiff[z] + this.spec.brR) + "px" }); this.bottomContainer.appendChild(newFiller); } }
                        var newFillerBar = document.createElement("div"); if (filter) $(newFillerBar).css('filter', 'filter'); $(newFillerBar).css({ 'position': "relative", 'fontSize': "1px", 'overflow': "hidden", 'width': this.fillerWidth(z), 'backgroundColor': this.boxColour, 'backgroundImage': this.backgroundImage, 'backgroundRepeat': this.backgroundRepeat }); switch (z) {
                            case "t": if (this.topContainer) {
                                    if (!jQuery.support.boxModel) { $(newFillerBar).css('height', 100 + topMaxRadius + "px"); } else { $(newFillerBar).css('height', 100 + topMaxRadius - this.borderWidth + "px"); }
                                    $(newFillerBar).css('marginLeft', this.spec.tlR ? (this.spec.tlR - this.borderWidthL) + "px" : "0"); $(newFillerBar).css('borderTop', this.borderString); if (this.backgroundImage) { var x_offset = this.spec.tlR ? (this.borderWidthL + this.backgroundPosX - this.spec.tlR) + "px " : this.backgroundPosX + "px "; $(newFillerBar).css('backgroundPosition', x_offset + this.backgroundPosY + "px"); $(this.shell).css('backgroundPosition', this.backgroundPosX + "px " + (this.backgroundPosY - topMaxRadius + this.borderWidthL) + "px"); }
                                    this.topContainer.appendChild(newFillerBar);
                                }
                                break; case "b": if (this.bottomContainer) {
                                    if (!jQuery.support.boxModel) { $(newFillerBar).css('height', botMaxRadius + "px"); } else { $(newFillerBar).css('height', botMaxRadius - this.borderWidthB + "px"); }
                                    $(newFillerBar).css('marginLeft', this.spec.blR ? (this.spec.blR - this.borderWidthL) + "px" : "0"); $(newFillerBar).css('borderBottom', this.borderStringB); if (this.backgroundImage) { var x_offset = this.spec.blR ? (this.backgroundPosX + this.borderWidthL - this.spec.blR) + "px " : this.backgroundPosX + "px "; $(newFillerBar).css('backgroundPosition', x_offset + (this.backgroundPosY - clientHeight - this.borderWidth + botMaxRadius) + "px"); }
                                    this.bottomContainer.appendChild(newFillerBar);
                                } 
                        } 
                    }
                    z = clientWidth; if (jQuery.support.boxModel) z -= this.leftPadding + this.rightPadding; $(this.contentContainer).css({ 'position': 'absolute', 'left': this.borderWidthL + "px", 'paddingTop': this.topPadding + "px", 'top': this.borderWidth + "px", 'paddingLeft': this.leftPadding + "px", 'paddingRight': this.rightPadding + "px", 'width': z + "px", 'textAlign': $$.css('textAlign') }).addClass('autoPadDiv'); $$.css('textAlign', 'left').addClass('hasCorners'); this.box.appendChild(this.contentContainer); if (boxDisp) $(boxDisp).css('display', boxDispSave);
                }; if (this.backgroundImage) { backgroundPosX = this.backgroundCheck(backgroundPosX); backgroundPosY = this.backgroundCheck(backgroundPosY); if (this.backgroundObject) { this.backgroundObject.holdingElement = this; this.dispatch = this.applyCorners; this.applyCorners = function () { if (this.backgroundObject.complete) this.dispatch(); else this.backgroundObject.onload = new Function('$(this.holdingElement).dispatch();'); }; } } 
        }; curvyObject.prototype.backgroundCheck = function (style) {
            if (style === 'top' || style === 'left' || parseInt(style) === 0) return 0; if (!(/^[-\d.]+px$/.test(style)) && !this.backgroundObject) { this.backgroundObject = new Image; var imgName = function (str) { var matches = /url\("?([^'"]+)"?\)/.exec(str); return (matches ? matches[1] : str); }; this.backgroundObject.src = imgName(this.backgroundImage); }
            return style;
        }; curvyObject.prototype.drawPixel = function (intx, inty, colour, transAmount, height, newCorner, image, cornerRadius) {
            var pixel = document.createElement("div"); $(pixel).css({ "height": height + "px", "width": "1px", "position": "absolute", "font-size": "1px", "overflow": "hidden", "top": inty + "px", "left": intx + "px", "background-color": colour }); var topMaxRadius = this.spec.get('tR'); if (image && this.backgroundImage != "")
            { $(pixel).css({ "background-position": "-" + (this.boxWidth - (cornerRadius - intx) + this.borderWidth) + "px -" + ((this.boxHeight + topMaxRadius + inty) - this.borderWidth) + "px", "background-image": this.backgroundImage }); }
            if (transAmount != 100)
                $(pixel).css({ opacity: (transAmount / 100) }); newCorner.appendChild(pixel);
        }; curvyObject.prototype.fillerWidth = function (tb) {
            var b_width, f_width; b_width = !jQuery.support.boxModel ? 0 : this.spec.radiusCount(tb) * this.borderWidthL; if ((f_width = this.boxWidth - this.spec.radiusSum(tb) + b_width) < 0)
                throw Error("Radius exceeds box width"); return f_width + 'px';
        }; curvyObject.getComputedColour = function (colour) {
            var d = document.createElement('DIV'); d.style.backgroundColor = colour; document.body.appendChild(d); if (window.getComputedStyle) { var rtn = document.defaultView.getComputedStyle(d, null).getPropertyValue('background-color'); d.parentNode.removeChild(d); if (rtn.substr(0, 3) === "rgb") rtn = curvyObject.rgb2Hex(rtn); return rtn; }
            else { var rng = document.body.createTextRange(); rng.moveToElementText(d); rng.execCommand('ForeColor', false, colour); var iClr = rng.queryCommandValue('ForeColor'); var rgb = "rgb(" + (iClr & 0xFF) + ", " + ((iClr & 0xFF00) >> 8) + ", " + ((iClr & 0xFF0000) >> 16) + ")"; d.parentNode.removeChild(d); rng = null; return curvyObject.rgb2Hex(rgb); } 
        }; curvyObject.BlendColour = function (Col1, Col2, Col1Fraction) {
            if (Col1 === 'transparent' || Col2 === 'transparent') throw Error('Cannot blend with transparent'); if (Col1.charAt(0) !== '#') { Col1 = curvyObject.format_colour(Col1); }
            if (Col2.charAt(0) !== '#') { Col2 = curvyObject.format_colour(Col2); }
            var red1 = parseInt(Col1.substr(1, 2), 16); var green1 = parseInt(Col1.substr(3, 2), 16); var blue1 = parseInt(Col1.substr(5, 2), 16); var red2 = parseInt(Col2.substr(1, 2), 16); var green2 = parseInt(Col2.substr(3, 2), 16); var blue2 = parseInt(Col2.substr(5, 2), 16); if (Col1Fraction > 1 || Col1Fraction < 0) Col1Fraction = 1; var endRed = Math.round((red1 * Col1Fraction) + (red2 * (1 - Col1Fraction))); if (endRed > 255) endRed = 255; if (endRed < 0) endRed = 0; var endGreen = Math.round((green1 * Col1Fraction) + (green2 * (1 - Col1Fraction))); if (endGreen > 255) endGreen = 255; if (endGreen < 0) endGreen = 0; var endBlue = Math.round((blue1 * Col1Fraction) + (blue2 * (1 - Col1Fraction))); if (endBlue > 255) endBlue = 255; if (endBlue < 0) endBlue = 0; return "#" + curvyObject.IntToHex(endRed) + curvyObject.IntToHex(endGreen) + curvyObject.IntToHex(endBlue);
        }; curvyObject.IntToHex = function (strNum)
        { var hexdig = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']; return hexdig[strNum >>> 4] + '' + hexdig[strNum & 15]; }; curvyObject.pixelFraction = function (x, y, r) {
            var fraction; var rsquared = r * r; var xvalues = new Array(2); var yvalues = new Array(2); var point = 0; var whatsides = ""; var intersect = Math.sqrt(rsquared - Math.pow(x, 2)); if (intersect >= y && intersect < (y + 1)) { whatsides = "Left"; xvalues[point] = 0; yvalues[point] = intersect - y; ++point; }
            intersect = Math.sqrt(rsquared - Math.pow(y + 1, 2)); if (intersect >= x && intersect < (x + 1)) { whatsides += "Top"; xvalues[point] = intersect - x; yvalues[point] = 1; ++point; }
            intersect = Math.sqrt(rsquared - Math.pow(x + 1, 2)); if (intersect >= y && intersect < (y + 1)) { whatsides += "Right"; xvalues[point] = 1; yvalues[point] = intersect - y; ++point; }
            intersect = Math.sqrt(rsquared - Math.pow(y, 2)); if (intersect >= x && intersect < (x + 1)) { whatsides += "Bottom"; xvalues[point] = intersect - x; yvalues[point] = 0; }
            switch (whatsides) { case "LeftRight": fraction = Math.min(yvalues[0], yvalues[1]) + ((Math.max(yvalues[0], yvalues[1]) - Math.min(yvalues[0], yvalues[1])) / 2); break; case "TopRight": fraction = 1 - (((1 - xvalues[0]) * (1 - yvalues[1])) / 2); break; case "TopBottom": fraction = Math.min(xvalues[0], xvalues[1]) + ((Math.max(xvalues[0], xvalues[1]) - Math.min(xvalues[0], xvalues[1])) / 2); break; case "LeftBottom": fraction = yvalues[0] * xvalues[1] / 2; break; default: fraction = 1; }
            return fraction;
        }; curvyObject.rgb2Hex = function (rgbColour) {
            try { var rgbArray = curvyObject.rgb2Array(rgbColour); var red = parseInt(rgbArray[0]); var green = parseInt(rgbArray[1]); var blue = parseInt(rgbArray[2]); var hexColour = "#" + curvyObject.IntToHex(red) + curvyObject.IntToHex(green) + curvyObject.IntToHex(blue); }
            catch (e) { alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex"); }
            return hexColour;
        }; curvyObject.rgb2Array = function (rgbColour)
        { var rgbValues = rgbColour.substring(4, rgbColour.indexOf(")")); return rgbValues.split(", "); }; curvyObject.format_colour = function (colour) {
            if (colour != "" && colour != "transparent") {
                if (colour.substr(0, 3) === "rgb") { colour = curvyObject.rgb2Hex(colour); }
                else if (colour.charAt(0) !== '#') { colour = getComputedColour(colour); }
                else if (colour.length === 4) { colour = "#" + colour.charAt(1) + colour.charAt(1) + colour.charAt(2) + colour.charAt(2) + colour.charAt(3) + colour.charAt(3); } 
            }
            return colour;
        }; return this.each(function () {
            if (!$(this).is('.hasCorners')) {
                if (nativeCornersSupported) {
                    if (settings.get('tlR')) { $(this).css({ 'border-top-left-radius': settings.get('tlR') + 'px', '-moz-border-radius-topleft': settings.get('tlR') + 'px', '-webkit-border-top-left-radius': settings.get('tlR') + 'px' }); }
                    if (settings.get('trR')) { $(this).css({ 'border-top-right-radius': settings.get('trR') + 'px', '-moz-border-radius-topright': settings.get('trR') + 'px', '-webkit-border-top-right-radius': settings.get('trR') + 'px' }); }
                    if (settings.get('blR')) { $(this).css({ 'border-bottom-left-radius': settings.get('blR') + 'px', '-moz-border-radius-bottomleft': settings.get('blR') + 'px', '-webkit-border-bottom-left-radius': settings.get('blR') + 'px' }); }
                    if (settings.get('brR')) { $(this).css({ 'border-bottom-right-radius': settings.get('brR') + 'px', '-moz-border-radius-bottomright': settings.get('brR') + 'px', '-webkit-border-bottom-right-radius': settings.get('brR') + 'px' }); } 
                } else {
                    if (!$(this).is('.drawn')) {
                        $(this).addClass('drawn'); thestyles = $(this).attr('style'); if (thestyles == 'undefined') { thestyles = ''; }
                        redrawList.push({ node: this, spec: settings, style: thestyles, copy: $(this).clone(true) });
                    }
                    var obj = new curvyObject(settings, this); obj.applyCorners();
                } 
            } 
        });
    }; $.fn.removeCorners = function () { return this.each(function (i, e) { thisdiv = e; $.each(redrawList, function (intIndex, list) { if (list.node == thisdiv && $('.autoPadDiv', thisdiv).size() > 0) { $(thisdiv).html($(thisdiv).children('.autoPadDiv:first').contents()); style = list.style == 'undefined' ? list.style : ''; $(thisdiv).removeClass('hasCorners').attr('style', style); return false; } }); }); }; $.fn.redrawCorners = function () { return this.each(function (i, e) { thisdiv = e; $.each(redrawList, function (intIndex, list) { if (list.node == thisdiv) { $(thisdiv).corner(list.spec); return false; } }); }); }; $.fn.dispatch = function () { return this.each(function (i, e) { obj = e; if ('dispatch' in obj) obj.dispatch(); else throw Error('No dispatch function') }); }; $(function () {
        if ($.browser.msie) {
            try { document.execCommand("BackgroundImageCache", false, true); } catch (e) { }; function units(num) { if (!parseInt(num)) return 'px'; var matches = /^[\d.]+(\w+)$/.exec(num); return matches[1]; }; var t, i, j; function procIEStyles(rule) {
                var style = rule.style; if (jQuery.browser.version > 6.0) { var allR = style['-moz-border-radius'] || 0; var tR = style['-moz-border-radius-topright'] || 0; var tL = style['-moz-border-radius-topleft'] || 0; var bR = style['-moz-border-radius-bottomright'] || 0; var bL = style['-moz-border-radius-bottomleft'] || 0; }
                else { var allR = style['moz-border-radius'] || 0; var tR = style['moz-border-radius-topright'] || 0; var tL = style['moz-border-radius-topleft'] || 0; var bR = style['moz-border-radius-bottomright'] || 0; var bL = style['moz-border-radius-bottomleft'] || 0; }
                if (allR) { var t = allR.split('/'); t = t[0].split(/\s+/); if (t[t.length - 1] === '') t.pop(); switch (t.length) { case 3: tL = t[0]; tR = bL = t[1]; bR = t[2]; allR = false; break; case 2: tL = bR = t[0]; tR = bL = t[1]; allR = false; case 1: break; case 4: tL = t[0]; tR = t[1]; bR = t[2]; bL = t[3]; allR = false; break; default: alert('Illegal corners specification: ' + allR); } }
                if (allR || tL || tR || bR || bL) {
                    var settings = new curvyCnrSpec(rule.selectorText); if (allR)
                        settings.setcorner(null, null, parseInt(allR), units(allR)); else { if (tR) settings.setcorner('t', 'r', parseInt(tR), units(tR)); if (tL) settings.setcorner('t', 'l', parseInt(tL), units(tL)); if (bL) settings.setcorner('b', 'l', parseInt(bL), units(bL)); if (bR) settings.setcorner('b', 'r', parseInt(bR), units(bR)); }
                    $(rule.selectorText).corner(settings);
                } 
            }
            for (t = 0; t < document.styleSheets.length; ++t) {
                try {
                    if (document.styleSheets[t].imports) { for (i = 0; i < document.styleSheets[t].imports.length; ++i) { for (j = 0; j < document.styleSheets[t].imports[i].rules.length; ++j) { procIEStyles(document.styleSheets[t].imports[i].rules[j]); } } }
                    for (i = 0; i < document.styleSheets[t].rules.length; ++i)
                        procIEStyles(document.styleSheets[t].rules[i]);
                }
                catch (e) { } 
            } 
        } else if ($.browser.opera) {
            try { checkStandard = (document.body.style.BorderRadius !== undefined); } catch (err) { }
            if (!checkStandard) {
                function opera_contains_border_radius(sheetnumber) { return /border-((top|bottom)-(left|right)-)?radius/.test(document.styleSheets.item(sheetnumber).ownerNode.text); }; rules = []; for (t = 0; t < document.styleSheets.length; ++t) {
                    if (opera_contains_border_radius(t)) {
                        var txt = document.styleSheets.item(sheetnumber).ownerNode.text; txt = txt.replace(/\/\*(\n|\r|.)*?\*\//g, ''); var pat = new RegExp("^\\s*([\\w.#][-\\w.#, ]+)[\\n\\s]*\\{([^}]+border-((top|bottom)-(left|right)-)?radius[^}]*)\\}", "mg"); var matches; while ((matches = pat.exec(txt)) !== null) {
                            var pat2 = new RegExp("(..)border-((top|bottom)-(left|right)-)?radius:\\s*([\\d.]+)(in|em|px|ex|pt)", "g"); var submatches, cornerspec = new curvyCnrSpec(matches[1]); while ((submatches = pat2.exec(matches[2])) !== null) {
                                if (submatches[1] !== "z-")
                                    cornerspec.setcorner(submatches[3], submatches[4], submatches[5], submatches[6]); rules.push(cornerspec);
                            } 
                        } 
                    } 
                }
                for (i in rules) if (!isNaN(i))
                    $(rules[i].selectorText).corner(rules[i]);
            } 
        } 
    });
})(jQuery);


 /*!
 * jQuery Cycle Plugin (with Transition Definitions)
 * Examples and documentation at: http://jquery.malsup.com/cycle/
 * Copyright (c) 2007-2009 M. Alsup
 * Version: 2.72 (09-SEP-2009)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires: jQuery v1.2.6 or later
 *
 * Originally based on the work of:
 *	1) Matt Oakes
 *	2) Torsten Baldes (http://medienfreunde.com/lab/innerfade/)
 *	3) Benjamin Sterling (http://www.benjaminsterling.com/experiments/jqShuffle/)
 */
;(function(jQuery) {

var ver = '2.72';

// if jQuery.support is not defined (pre jQuery 1.3) add what I need
if (jQuery.support == undefined) {
	jQuery.support = {
		opacity: !(jQuery.browser.msie)
	};
}

function debug(s) {
	if (jQuery.fn.cycle.debug)
		log(s);
}		
function log() {
	if (window.console && window.console.log)
		window.console.log('[cycle] ' + Array.prototype.join.call(arguments,' '));
	//jQuery('body').append('<div>'+Array.prototype.join.call(arguments,' ')+'</div>');
};

// the options arg can be...
//   a number  - indicates an immediate transition should occur to the given slide index
//   a string  - 'stop', 'pause', 'resume', or the name of a transition effect (ie, 'fade', 'zoom', etc)
//   an object - properties to control the slideshow
//
// the arg2 arg can be...
//   the name of an fx (only used in conjunction with a numeric value for 'options')
//   the value true (only used in conjunction with a options == 'resume') and indicates
//	 that the resume should occur immediately (not wait for next timeout)

jQuery.fn.cycle = function(options, arg2) {
	var o = { s: this.selector, c: this.context };

	// in 1.3+ we can fix mistakes with the ready state
	if (this.length === 0 && options != 'stop') {
		if (!jQuery.isReady && o.s) {
			log('DOM not ready, queuing slideshow');
			jQuery(function() {
				jQuery(o.s,o.c).cycle(options,arg2);
			});
			return this;
		}
		// is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_jQuery(document).ready()
		log('terminating; zero elements found by selector' + (jQuery.isReady ? '' : ' (DOM not ready)'));
		return this;
	}

	// iterate the matched nodeset
	return this.each(function() {
		var opts = handleArguments(this, options, arg2);
		if (opts === false)
			return;

		// stop existing slideshow for this container (if there is one)
		if (this.cycleTimeout)
			clearTimeout(this.cycleTimeout);
		this.cycleTimeout = this.cyclePause = 0;

		var jQuerycont = jQuery(this);
		var jQueryslides = opts.slideExpr ? jQuery(opts.slideExpr, this) : jQuerycont.children();
		var els = jQueryslides.get();
		if (els.length < 2) {
			log('terminating; too few slides: ' + els.length);
			return;
		}

		var opts2 = buildOptions(jQuerycont, jQueryslides, els, opts, o);
		if (opts2 === false)
			return;

		var startTime = opts2.continuous ? 10 : getTimeout(opts2.currSlide, opts2.nextSlide, opts2, !opts2.rev);

		// if it's an auto slideshow, kick it off
		if (startTime) {
			startTime += (opts2.delay || 0);
			if (startTime < 10)
				startTime = 10;
			debug('first timeout: ' + startTime);
			this.cycleTimeout = setTimeout(function(){go(els,opts2,0,!opts2.rev)}, startTime);
		}
	});
};

// process the args that were passed to the plugin fn
function handleArguments(cont, options, arg2) {
	if (cont.cycleStop == undefined)
		cont.cycleStop = 0;
	if (options === undefined || options === null)
		options = {};
	if (options.constructor == String) {
		switch(options) {
		case 'stop':
			cont.cycleStop++; // callbacks look for change
			if (cont.cycleTimeout)
				clearTimeout(cont.cycleTimeout);
			cont.cycleTimeout = 0;
			jQuery(cont).removeData('cycle.opts');
			return false;
		case 'pause':
			cont.cyclePause = 1;
			return false;
		case 'resume':
			cont.cyclePause = 0;
			if (arg2 === true) { // resume now!
				options = jQuery(cont).data('cycle.opts');
				if (!options) {
					log('options not found, can not resume');
					return false;
				}
				if (cont.cycleTimeout) {
					clearTimeout(cont.cycleTimeout);
					cont.cycleTimeout = 0;
				}
				go(options.elements, options, 1, 1);
			}
			return false;
		case 'prev':
		case 'next':
			var opts = jQuery(cont).data('cycle.opts');
			if (!opts) {
				log('options not found, "prev/next" ignored');
				return false;
			}
			jQuery.fn.cycle[options](opts);
			return false;
		default:
			options = { fx: options };
		};
		return options;
	}
	else if (options.constructor == Number) {
		// go to the requested slide
		var num = options;
		options = jQuery(cont).data('cycle.opts');
		if (!options) {
			log('options not found, can not advance slide');
			return false;
		}
		if (num < 0 || num >= options.elements.length) {
			log('invalid slide index: ' + num);
			return false;
		}
		options.nextSlide = num;
		if (cont.cycleTimeout) {
			clearTimeout(cont.cycleTimeout);
			cont.cycleTimeout = 0;
		}
		if (typeof arg2 == 'string')
			options.oneTimeFx = arg2;
		go(options.elements, options, 1, num >= options.currSlide);
		return false;
	}
	return options;
};

function removeFilter(el, opts) {
	if (!jQuery.support.opacity && opts.cleartype && el.style.filter) {
		try { el.style.removeAttribute('filter'); }
		catch(smother) {} // handle old opera versions
	}
};

// one-time initialization
function buildOptions(jQuerycont, jQueryslides, els, options, o) {
	// support metadata plugin (v1.0 and v2.0)
	var opts = jQuery.extend({}, jQuery.fn.cycle.defaults, options || {}, jQuery.metadata ? jQuerycont.metadata() : jQuery.meta ? jQuerycont.data() : {});
	if (opts.autostop)
		opts.countdown = opts.autostopCount || els.length;

	var cont = jQuerycont[0];
	jQuerycont.data('cycle.opts', opts);
	opts.jQuerycont = jQuerycont;
	opts.stopCount = cont.cycleStop;
	opts.elements = els;
	opts.before = opts.before ? [opts.before] : [];
	opts.after = opts.after ? [opts.after] : [];
	opts.after.unshift(function(){ opts.busy=0; });

	// push some after callbacks
	if (!jQuery.support.opacity && opts.cleartype)
		opts.after.push(function() { removeFilter(this, opts); });
	if (opts.continuous)
		opts.after.push(function() { go(els,opts,0,!opts.rev); });

	saveOriginalOpts(opts);

	// clearType corrections
	if (!jQuery.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
		clearTypeFix(jQueryslides);

	// container requires non-static position so that slides can be position within
	if (jQuerycont.css('position') == 'static')
		jQuerycont.css('position', 'relative');
	if (opts.width)
		jQuerycont.width(opts.width);
	if (opts.height && opts.height != 'auto')
		jQuerycont.height(opts.height);

	if (opts.startingSlide)
		opts.startingSlide = parseInt(opts.startingSlide);

	// if random, mix up the slide array
	if (opts.random) {
		opts.randomMap = [];
		for (var i = 0; i < els.length; i++)
			opts.randomMap.push(i);
		opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
		opts.randomIndex = 0;
		opts.startingSlide = opts.randomMap[0];
	}
	else if (opts.startingSlide >= els.length)
		opts.startingSlide = 0; // catch bogus input
	opts.currSlide = opts.startingSlide = opts.startingSlide || 0;
	var first = opts.startingSlide;

	// set position and zIndex on all the slides
	jQueryslides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) {
		var z = first ? i >= first ? els.length - (i-first) : first-i : els.length-i;
		jQuery(this).css('z-index', z)
	});

	// make sure first slide is visible
	jQuery(els[first]).css('opacity',1).show(); // opacity bit needed to handle restart use case
	removeFilter(els[first], opts);

	// stretch slides
	if (opts.fit && opts.width)
		jQueryslides.width(opts.width);
	if (opts.fit && opts.height && opts.height != 'auto')
		jQueryslides.height(opts.height);

	// stretch container
	var reshape = opts.containerResize && !jQuerycont.innerHeight();
	if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9
		var maxw = 0, maxh = 0;
		for(var j=0; j < els.length; j++) {
			var jQuerye = jQuery(els[j]), e = jQuerye[0], w = jQuerye.outerWidth(), h = jQuerye.outerHeight();
			if (!w) w = e.offsetWidth;
			if (!h) h = e.offsetHeight;
			maxw = w > maxw ? w : maxw;
			maxh = h > maxh ? h : maxh;
		}
		if (maxw > 0 && maxh > 0)
			jQuerycont.css({width:maxw+'px',height:maxh+'px'});
	}

	if (opts.pause)
		jQuerycont.hover(function(){this.cyclePause++;},function(){this.cyclePause--;});

	if (supportMultiTransitions(opts) === false)
		return false;

	// apparently a lot of people use image slideshows without height/width attributes on the images.
	// Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that.
	var requeue = false;
	options.requeueAttempts = options.requeueAttempts || 0;
	jQueryslides.each(function() {
		// try to get height/width of each slide
		var jQueryel = jQuery(this);
		this.cycleH = (opts.fit && opts.height) ? opts.height : jQueryel.height();
		this.cycleW = (opts.fit && opts.width) ? opts.width : jQueryel.width();

		if ( jQueryel.is('img') ) {
			// sigh..  sniffing, hacking, shrugging...  this crappy hack tries to account for what browsers do when
			// an image is being downloaded and the markup did not include sizing info (height/width attributes);
			// there seems to be some "default" sizes used in this situation
			var loadingIE	= (jQuery.browser.msie  && this.cycleW == 28 && this.cycleH == 30 && !this.complete);
			var loadingFF	= (jQuery.browser.mozilla && this.cycleW == 34 && this.cycleH == 19 && !this.complete);
			var loadingOp	= (jQuery.browser.opera && ((this.cycleW == 42 && this.cycleH == 19) || (this.cycleW == 37 && this.cycleH == 17)) && !this.complete);
			var loadingOther = (this.cycleH == 0 && this.cycleW == 0 && !this.complete);
			// don't requeue for images that are still loading but have a valid size
			if (loadingIE || loadingFF || loadingOp || loadingOther) {
				if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever
					log(options.requeueAttempts,' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH);
					setTimeout(function() {jQuery(o.s,o.c).cycle(options)}, opts.requeueTimeout);
					requeue = true;
					return false; // break each loop
				}
				else {
					log('could not determine size of image: '+this.src, this.cycleW, this.cycleH);
				}
			}
		}
		return true;
	});

	if (requeue)
		return false;

	opts.cssBefore = opts.cssBefore || {};
	opts.animIn = opts.animIn || {};
	opts.animOut = opts.animOut || {};

	jQueryslides.not(':eq('+first+')').css(opts.cssBefore);
	if (opts.cssFirst)
		jQuery(jQueryslides[first]).css(opts.cssFirst);

	if (opts.timeout) {
		opts.timeout = parseInt(opts.timeout);
		// ensure that timeout and speed settings are sane
		if (opts.speed.constructor == String)
			opts.speed = jQuery.fx.speeds[opts.speed] || parseInt(opts.speed);
		if (!opts.sync)
			opts.speed = opts.speed / 2;
		while((opts.timeout - opts.speed) < 250) // sanitize timeout
			opts.timeout += opts.speed;
	}
	if (opts.easing)
		opts.easeIn = opts.easeOut = opts.easing;
	if (!opts.speedIn)
		opts.speedIn = opts.speed;
	if (!opts.speedOut)
		opts.speedOut = opts.speed;

	opts.slideCount = els.length;
	opts.currSlide = opts.lastSlide = first;
	if (opts.random) {
		opts.nextSlide = opts.currSlide;
		if (++opts.randomIndex == els.length)
			opts.randomIndex = 0;
		opts.nextSlide = opts.randomMap[opts.randomIndex];
	}
	else
		opts.nextSlide = opts.startingSlide >= (els.length-1) ? 0 : opts.startingSlide+1;

	// run transition init fn
	if (!opts.multiFx) {
		var init = jQuery.fn.cycle.transitions[opts.fx];
		if (jQuery.isFunction(init))
			init(jQuerycont, jQueryslides, opts);
		else if (opts.fx != 'custom' && !opts.multiFx) {
			log('unknown transition: ' + opts.fx,'; slideshow terminating');
			return false;
		}
	}

	// fire artificial events
	var e0 = jQueryslides[first];
	if (opts.before.length)
		opts.before[0].apply(e0, [e0, e0, opts, true]);
	if (opts.after.length > 1)
		opts.after[1].apply(e0, [e0, e0, opts, true]);

	if (opts.next)
		jQuery(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?-1:1)});
	if (opts.prev)
		jQuery(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?1:-1)});
	if (opts.pager)
		buildPager(els,opts);

	exposeAddSlide(opts, els);

	return opts;
};

// save off original opts so we can restore after clearing state
function saveOriginalOpts(opts) {
	opts.original = { before: [], after: [] };
	opts.original.cssBefore = jQuery.extend({}, opts.cssBefore);
	opts.original.cssAfter  = jQuery.extend({}, opts.cssAfter);
	opts.original.animIn	= jQuery.extend({}, opts.animIn);
	opts.original.animOut   = jQuery.extend({}, opts.animOut);
	jQuery.each(opts.before, function() { opts.original.before.push(this); });
	jQuery.each(opts.after,  function() { opts.original.after.push(this); });
};

function supportMultiTransitions(opts) {
	var i, tx, txs = jQuery.fn.cycle.transitions;
	// look for multiple effects
	if (opts.fx.indexOf(',') > 0) {
		opts.multiFx = true;
		opts.fxs = opts.fx.replace(/\s*/g,'').split(',');
		// discard any bogus effect names
		for (i=0; i < opts.fxs.length; i++) {
			var fx = opts.fxs[i];
			tx = txs[fx];
			if (!tx || !txs.hasOwnProperty(fx) || !jQuery.isFunction(tx)) {
				log('discarding unknown transition: ',fx);
				opts.fxs.splice(i,1);
				i--;
			}
		}
		// if we have an empty list then we threw everything away!
		if (!opts.fxs.length) {
			log('No valid transitions named; slideshow terminating.');
			return false;
		}
	}
	else if (opts.fx == 'all') {  // auto-gen the list of transitions
		opts.multiFx = true;
		opts.fxs = [];
		for (p in txs) {
			tx = txs[p];
			if (txs.hasOwnProperty(p) && jQuery.isFunction(tx))
				opts.fxs.push(p);
		}
	}
	if (opts.multiFx && opts.randomizeEffects) {
		// munge the fxs array to make effect selection random
		var r1 = Math.floor(Math.random() * 20) + 30;
		for (i = 0; i < r1; i++) {
			var r2 = Math.floor(Math.random() * opts.fxs.length);
			opts.fxs.push(opts.fxs.splice(r2,1)[0]);
		}
		debug('randomized fx sequence: ',opts.fxs);
	}
	return true;
};

// provide a mechanism for adding slides after the slideshow has started
function exposeAddSlide(opts, els) {
	opts.addSlide = function(newSlide, prepend) {
		var jQuerys = jQuery(newSlide), s = jQuerys[0];
		if (!opts.autostopCount)
			opts.countdown++;
		els[prepend?'unshift':'push'](s);
		if (opts.els)
			opts.els[prepend?'unshift':'push'](s); // shuffle needs this
		opts.slideCount = els.length;

		jQuerys.css('position','absolute');
		jQuerys[prepend?'prependTo':'appendTo'](opts.jQuerycont);

		if (prepend) {
			opts.currSlide++;
			opts.nextSlide++;
		}

		if (!jQuery.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
			clearTypeFix(jQuerys);

		if (opts.fit && opts.width)
			jQuerys.width(opts.width);
		if (opts.fit && opts.height && opts.height != 'auto')
			jQueryslides.height(opts.height);
		s.cycleH = (opts.fit && opts.height) ? opts.height : jQuerys.height();
		s.cycleW = (opts.fit && opts.width) ? opts.width : jQuerys.width();

		jQuerys.css(opts.cssBefore);

		if (opts.pager)
			jQuery.fn.cycle.createPagerAnchor(els.length-1, s, jQuery(opts.pager), els, opts);

		if (jQuery.isFunction(opts.onAddSlide))
			opts.onAddSlide(jQuerys);
		else
			jQuerys.hide(); // default behavior
	};
}

// reset internal state; we do this on every pass in order to support multiple effects
jQuery.fn.cycle.resetState = function(opts, fx) {
	fx = fx || opts.fx;
	opts.before = []; opts.after = [];
	opts.cssBefore = jQuery.extend({}, opts.original.cssBefore);
	opts.cssAfter  = jQuery.extend({}, opts.original.cssAfter);
	opts.animIn	= jQuery.extend({}, opts.original.animIn);
	opts.animOut   = jQuery.extend({}, opts.original.animOut);
	opts.fxFn = null;
	jQuery.each(opts.original.before, function() { opts.before.push(this); });
	jQuery.each(opts.original.after,  function() { opts.after.push(this); });

	// re-init
	var init = jQuery.fn.cycle.transitions[fx];
	if (jQuery.isFunction(init))
		init(opts.jQuerycont, jQuery(opts.elements), opts);
};

// this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt
function go(els, opts, manual, fwd) {
	// opts.busy is true if we're in the middle of an animation
	if (manual && opts.busy && opts.manualTrump) {
		// let manual transitions requests trump active ones
		jQuery(els).stop(true,true);
		opts.busy = false;
	}
	// don't begin another timeout-based transition if there is one active
	if (opts.busy)
		return;

	var p = opts.jQuerycont[0], curr = els[opts.currSlide], next = els[opts.nextSlide];

	// stop cycling if we have an outstanding stop request
	if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual)
		return;

	// check to see if we should stop cycling based on autostop options
	if (!manual && !p.cyclePause &&
		((opts.autostop && (--opts.countdown <= 0)) ||
		(opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) {
		if (opts.end)
			opts.end(opts);
		return;
	}

	// if slideshow is paused, only transition on a manual trigger
	if (manual || !p.cyclePause) {
		var fx = opts.fx;
		// keep trying to get the slide size if we don't have it yet
		curr.cycleH = curr.cycleH || jQuery(curr).height();
		curr.cycleW = curr.cycleW || jQuery(curr).width();
		next.cycleH = next.cycleH || jQuery(next).height();
		next.cycleW = next.cycleW || jQuery(next).width();

		// support multiple transition types
		if (opts.multiFx) {
			if (opts.lastFx == undefined || ++opts.lastFx >= opts.fxs.length)
				opts.lastFx = 0;
			fx = opts.fxs[opts.lastFx];
			opts.currFx = fx;
		}

		// one-time fx overrides apply to:  jQuery('div').cycle(3,'zoom');
		if (opts.oneTimeFx) {
			fx = opts.oneTimeFx;
			opts.oneTimeFx = null;
		}

		jQuery.fn.cycle.resetState(opts, fx);

		// run the before callbacks
		if (opts.before.length)
			jQuery.each(opts.before, function(i,o) {
				if (p.cycleStop != opts.stopCount) return;
				o.apply(next, [curr, next, opts, fwd]);
			});

		// stage the after callacks
		var after = function() {
			jQuery.each(opts.after, function(i,o) {
				if (p.cycleStop != opts.stopCount) return;
				o.apply(next, [curr, next, opts, fwd]);
			});
		};

		if (opts.nextSlide != opts.currSlide) {
			// get ready to perform the transition
			opts.busy = 1;
			if (opts.fxFn) // fx function provided?
				opts.fxFn(curr, next, opts, after, fwd);
			else if (jQuery.isFunction(jQuery.fn.cycle[opts.fx])) // fx plugin ?
				jQuery.fn.cycle[opts.fx](curr, next, opts, after);
			else
				jQuery.fn.cycle.custom(curr, next, opts, after, manual && opts.fastOnEvent);
		}

		// calculate the next slide
		opts.lastSlide = opts.currSlide;
		if (opts.random) {
			opts.currSlide = opts.nextSlide;
			if (++opts.randomIndex == els.length)
				opts.randomIndex = 0;
			opts.nextSlide = opts.randomMap[opts.randomIndex];
		}
		else { // sequence
			var roll = (opts.nextSlide + 1) == els.length;
			opts.nextSlide = roll ? 0 : opts.nextSlide+1;
			opts.currSlide = roll ? els.length-1 : opts.nextSlide-1;
		}

		if (opts.pager)
			jQuery.fn.cycle.updateActivePagerLink(opts.pager, opts.currSlide);
	}

	// stage the next transtion
	var ms = 0;
	if (opts.timeout && !opts.continuous)
		ms = getTimeout(curr, next, opts, fwd);
	else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic
		ms = 10;
	if (ms > 0)
		p.cycleTimeout = setTimeout(function(){ go(els, opts, 0, !opts.rev) }, ms);
};

// invoked after transition
jQuery.fn.cycle.updateActivePagerLink = function(pager, currSlide) {
	jQuery(pager).find('a').removeClass('activeSlide').filter('a:eq('+currSlide+')').addClass('activeSlide');
};

// calculate timeout value for current transition
function getTimeout(curr, next, opts, fwd) {
	if (opts.timeoutFn) {
		// call user provided calc fn
		var t = opts.timeoutFn(curr,next,opts,fwd);
		while ((t - opts.speed) < 250) // sanitize timeout
			t += opts.speed;
		debug('calculated timeout: ' + t + '; speed: ' + opts.speed);
		if (t !== false)
			return t;
	}
	return opts.timeout;
};

// expose next/prev function, caller must pass in state
jQuery.fn.cycle.next = function(opts) { advance(opts, opts.rev?-1:1); };
jQuery.fn.cycle.prev = function(opts) { advance(opts, opts.rev?1:-1);};

// advance slide forward or back
function advance(opts, val) {
	var els = opts.elements;
	var p = opts.jQuerycont[0], timeout = p.cycleTimeout;
	if (timeout) {
		clearTimeout(timeout);
		p.cycleTimeout = 0;
	}
	if (opts.random && val < 0) {
		// move back to the previously display slide
		opts.randomIndex--;
		if (--opts.randomIndex == -2)
			opts.randomIndex = els.length-2;
		else if (opts.randomIndex == -1)
			opts.randomIndex = els.length-1;
		opts.nextSlide = opts.randomMap[opts.randomIndex];
	}
	else if (opts.random) {
		if (++opts.randomIndex == els.length)
			opts.randomIndex = 0;
		opts.nextSlide = opts.randomMap[opts.randomIndex];
	}
	else {
		opts.nextSlide = opts.currSlide + val;
		if (opts.nextSlide < 0) {
			if (opts.nowrap) return false;
			opts.nextSlide = els.length - 1;
		}
		else if (opts.nextSlide >= els.length) {
			if (opts.nowrap) return false;
			opts.nextSlide = 0;
		}
	}

	if (jQuery.isFunction(opts.prevNextClick))
		opts.prevNextClick(val > 0, opts.nextSlide, els[opts.nextSlide]);
	go(els, opts, 1, val>=0);
	return false;
};

function buildPager(els, opts) {
	var jQueryp = jQuery(opts.pager);
	jQuery.each(els, function(i,o) {
		jQuery.fn.cycle.createPagerAnchor(i,o,jQueryp,els,opts);
	});
   jQuery.fn.cycle.updateActivePagerLink(opts.pager, opts.startingSlide);
};

jQuery.fn.cycle.createPagerAnchor = function(i, el, jQueryp, els, opts) {
	var a;
	if (jQuery.isFunction(opts.pagerAnchorBuilder))
		a = opts.pagerAnchorBuilder(i,el);
	else
		a = '<a href="#">'+(i+1)+'</a>';
		
	if (!a)
		return;
	var jQuerya = jQuery(a);
	// don't reparent if anchor is in the dom
	if (jQuerya.parents('body').length === 0) {
		var arr = [];
		if (jQueryp.length > 1) {
			jQueryp.each(function() {
				var jQueryclone = jQuerya.clone(true);
				jQuery(this).append(jQueryclone);
				arr.push(jQueryclone);
			});
			jQuerya = jQuery(arr);
		}
		else {
			jQuerya.appendTo(jQueryp);
		}
	}

	jQuerya.bind(opts.pagerEvent, function(e) {
		e.preventDefault();
		opts.nextSlide = i;
		var p = opts.jQuerycont[0], timeout = p.cycleTimeout;
		if (timeout) {
			clearTimeout(timeout);
			p.cycleTimeout = 0;
		}
		if (jQuery.isFunction(opts.pagerClick))
			opts.pagerClick(opts.nextSlide, els[opts.nextSlide]);
		go(els,opts,1,opts.currSlide < i); // trigger the trans
		return false;
	});
	
	if (opts.pagerEvent != 'click')
		jQuerya.click(function(){return false;}); // supress click
	
	if (opts.pauseOnPagerHover)
		jQuerya.hover(function() { opts.jQuerycont[0].cyclePause++; }, function() { opts.jQuerycont[0].cyclePause--; } );
};

// helper fn to calculate the number of slides between the current and the next
jQuery.fn.cycle.hopsFromLast = function(opts, fwd) {
	var hops, l = opts.lastSlide, c = opts.currSlide;
	if (fwd)
		hops = c > l ? c - l : opts.slideCount - l;
	else
		hops = c < l ? l - c : l + opts.slideCount - c;
	return hops;
};

// fix clearType problems in ie6 by setting an explicit bg color
// (otherwise text slides look horrible during a fade transition)
function clearTypeFix(jQueryslides) {
	function hex(s) {
		s = parseInt(s).toString(16);
		return s.length < 2 ? '0'+s : s;
	};
	function getBg(e) {
		for ( ; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) {
			var v = jQuery.css(e,'background-color');
			if (v.indexOf('rgb') >= 0 ) {
				var rgb = v.match(/\d+/g);
				return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
			}
			if (v && v != 'transparent')
				return v;
		}
		return '#ffffff';
	};
	jQueryslides.each(function() { jQuery(this).css('background-color', getBg(this)); });
};

// reset common props before the next transition
jQuery.fn.cycle.commonReset = function(curr,next,opts,w,h,rev) {
	jQuery(opts.elements).not(curr).hide();
	opts.cssBefore.opacity = 1;
	opts.cssBefore.display = 'block';
	if (w !== false && next.cycleW > 0)
		opts.cssBefore.width = next.cycleW;
	if (h !== false && next.cycleH > 0)
		opts.cssBefore.height = next.cycleH;
	opts.cssAfter = opts.cssAfter || {};
	opts.cssAfter.display = 'none';
	jQuery(curr).css('zIndex',opts.slideCount + (rev === true ? 1 : 0));
	jQuery(next).css('zIndex',opts.slideCount + (rev === true ? 0 : 1));
};

// the actual fn for effecting a transition
jQuery.fn.cycle.custom = function(curr, next, opts, cb, speedOverride) {
	var jQueryl = jQuery(curr), jQueryn = jQuery(next);
	var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut;
	jQueryn.css(opts.cssBefore);
	if (speedOverride) {
		if (typeof speedOverride == 'number')
			speedIn = speedOut = speedOverride;
		else
			speedIn = speedOut = 1;
		easeIn = easeOut = null;
	}
	var fn = function() {jQueryn.animate(opts.animIn, speedIn, easeIn, cb)};
	jQueryl.animate(opts.animOut, speedOut, easeOut, function() {
		if (opts.cssAfter) jQueryl.css(opts.cssAfter);
		if (!opts.sync) fn();
	});
	if (opts.sync) fn();
};

// transition definitions - only fade is defined here, transition pack defines the rest
jQuery.fn.cycle.transitions = {
	fade: function(jQuerycont, jQueryslides, opts) {
		jQueryslides.not(':eq('+opts.currSlide+')').css('opacity',0);
		opts.before.push(function(curr,next,opts) {
			jQuery.fn.cycle.commonReset(curr,next,opts);
			opts.cssBefore.opacity = 0;
		});
		opts.animIn	   = { opacity: 1 };
		opts.animOut   = { opacity: 0 };
		opts.cssBefore = { top: 0, left: 0 };
	}
};

jQuery.fn.cycle.ver = function() { return ver; };

// override these globally if you like (they are all optional)
jQuery.fn.cycle.defaults = {
	fx:			  'fade', // name of transition effect (or comma separated names, ex: fade,scrollUp,shuffle)
	timeout:	   4000,  // milliseconds between slide transitions (0 to disable auto advance)
	timeoutFn:	 null,  // callback for determining per-slide timeout value:  function(currSlideElement, nextSlideElement, options, forwardFlag)
	continuous:	   0,	  // true to start next transition immediately after current one completes
	speed:		   1000,  // speed of the transition (any valid fx speed value)
	speedIn:	   null,  // speed of the 'in' transition
	speedOut:	   null,  // speed of the 'out' transition
	next:		   null,  // selector for element to use as click trigger for next slide
	prev:		   null,  // selector for element to use as click trigger for previous slide
	prevNextClick: null,  // callback fn for prev/next clicks:	function(isNext, zeroBasedSlideIndex, slideElement)
	prevNextEvent:'click',// event which drives the manual transition to the previous or next slide
	pager:		   null,  // selector for element to use as pager container
	pagerClick:	   null,  // callback fn for pager clicks:	function(zeroBasedSlideIndex, slideElement)
	pagerEvent:	  'click', // name of event which drives the pager navigation
	pagerAnchorBuilder: null, // callback fn for building anchor links:  function(index, DOMelement)
	before:		   null,  // transition callback (scope set to element to be shown):	 function(currSlideElement, nextSlideElement, options, forwardFlag)
	after:		   null,  // transition callback (scope set to element that was shown):  function(currSlideElement, nextSlideElement, options, forwardFlag)
	end:		   null,  // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options)
	easing:		   null,  // easing method for both in and out transitions
	easeIn:		   null,  // easing for "in" transition
	easeOut:	   null,  // easing for "out" transition
	shuffle:	   null,  // coords for shuffle animation, ex: { top:15, left: 200 }
	animIn:		   null,  // properties that define how the slide animates in
	animOut:	   null,  // properties that define how the slide animates out
	cssBefore:	   null,  // properties that define the initial state of the slide before transitioning in
	cssAfter:	   null,  // properties that defined the state of the slide after transitioning out
	fxFn:		   null,  // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag)
	height:		  'auto', // container height
	startingSlide: 0,	  // zero-based index of the first slide to be displayed
	sync:		   1,	  // true if in/out transitions should occur simultaneously
	random:		   0,	  // true for random, false for sequence (not applicable to shuffle fx)
	fit:		   0,	  // force slides to fit container
	containerResize: 1,	  // resize container to fit largest slide
	pause:		   0,	  // true to enable "pause on hover"
	pauseOnPagerHover: 0, // true to pause when hovering over pager link
	autostop:	   0,	  // true to end slideshow after X transitions (where X == slide count)
	autostopCount: 0,	  // number of transitions (optionally used with autostop to define X)
	delay:		   0,	  // additional delay (in ms) for first transition (hint: can be negative)
	slideExpr:	   null,  // expression for selecting slides (if something other than all children is required)
	cleartype:	   !jQuery.support.opacity,  // true if clearType corrections should be applied (for IE)
	cleartypeNoBg: false, // set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
	nowrap:		   0,	  // true to prevent slideshow from wrapping
	fastOnEvent:   0,	  // force fast transitions when triggered manually (via pager or prev/next); value == time in ms
	randomizeEffects: 1,  // valid when multiple effects are used; true to make the effect sequence random
	rev:		   0,	 // causes animations to transition in reverse
	manualTrump:   true,  // causes manual transition to stop an active transition instead of being ignored
	requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded
	requeueTimeout: 250   // ms delay for requeue
};

})(jQuery);


/*!
 * jQuery Cycle Plugin Transition Definitions
 * This script is a plugin for the jQuery Cycle Plugin
 * Examples and documentation at: http://malsup.com/jquery/cycle/
 * Copyright (c) 2007-2008 M. Alsup
 * Version:	 2.72
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 */
(function(jQuery) {

//
// These functions define one-time slide initialization for the named
// transitions. To save file size feel free to remove any of these that you
// don't need.
//
jQuery.fn.cycle.transitions.none = function(jQuerycont, jQueryslides, opts) {
	opts.fxFn = function(curr,next,opts,after){
		jQuery(next).show();
		jQuery(curr).hide();
		after();
	};
}

// scrollUp/Down/Left/Right
jQuery.fn.cycle.transitions.scrollUp = function(jQuerycont, jQueryslides, opts) {
	jQuerycont.css('overflow','hidden');
	opts.before.push(jQuery.fn.cycle.commonReset);
	var h = jQuerycont.height();
	opts.cssBefore ={ top: h, left: 0 };
	opts.cssFirst = { top: 0 };
	opts.animIn	  = { top: 0 };
	opts.animOut  = { top: -h };
};
jQuery.fn.cycle.transitions.scrollDown = function(jQuerycont, jQueryslides, opts) {
	jQuerycont.css('overflow','hidden');
	opts.before.push(jQuery.fn.cycle.commonReset);
	var h = jQuerycont.height();
	opts.cssFirst = { top: 0 };
	opts.cssBefore= { top: -h, left: 0 };
	opts.animIn	  = { top: 0 };
	opts.animOut  = { top: h };
};
jQuery.fn.cycle.transitions.scrollLeft = function(jQuerycont, jQueryslides, opts) {
	jQuerycont.css('overflow','hidden');
	opts.before.push(jQuery.fn.cycle.commonReset);
	var w = jQuerycont.width();
	opts.cssFirst = { left: 0 };
	opts.cssBefore= { left: w, top: 0 };
	opts.animIn	  = { left: 0 };
	opts.animOut  = { left: 0-w };
};
jQuery.fn.cycle.transitions.scrollRight = function(jQuerycont, jQueryslides, opts) {
	jQuerycont.css('overflow','hidden');
	opts.before.push(jQuery.fn.cycle.commonReset);
	var w = jQuerycont.width();
	opts.cssFirst = { left: 0 };
	opts.cssBefore= { left: -w, top: 0 };
	opts.animIn	  = { left: 0 };
	opts.animOut  = { left: w };
};
jQuery.fn.cycle.transitions.scrollHorz = function(jQuerycont, jQueryslides, opts) {
	jQuerycont.css('overflow','hidden').width();
	opts.before.push(function(curr, next, opts, fwd) {
		jQuery.fn.cycle.commonReset(curr,next,opts);
		opts.cssBefore.left = fwd ? (next.cycleW-1) : (1-next.cycleW);
		opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW;
	});
	opts.cssFirst = { left: 0 };
	opts.cssBefore= { top: 0 };
	opts.animIn   = { left: 0 };
	opts.animOut  = { top: 0 };
};
jQuery.fn.cycle.transitions.scrollVert = function(jQuerycont, jQueryslides, opts) {
	jQuerycont.css('overflow','hidden');
	opts.before.push(function(curr, next, opts, fwd) {
		jQuery.fn.cycle.commonReset(curr,next,opts);
		opts.cssBefore.top = fwd ? (1-next.cycleH) : (next.cycleH-1);
		opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH;
	});
	opts.cssFirst = { top: 0 };
	opts.cssBefore= { left: 0 };
	opts.animIn   = { top: 0 };
	opts.animOut  = { left: 0 };
};

// slideX/slideY
jQuery.fn.cycle.transitions.slideX = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery(opts.elements).not(curr).hide();
		jQuery.fn.cycle.commonReset(curr,next,opts,false,true);
		opts.animIn.width = next.cycleW;
	});
	opts.cssBefore = { left: 0, top: 0, width: 0 };
	opts.animIn	 = { width: 'show' };
	opts.animOut = { width: 0 };
};
jQuery.fn.cycle.transitions.slideY = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery(opts.elements).not(curr).hide();
		jQuery.fn.cycle.commonReset(curr,next,opts,true,false);
		opts.animIn.height = next.cycleH;
	});
	opts.cssBefore = { left: 0, top: 0, height: 0 };
	opts.animIn	 = { height: 'show' };
	opts.animOut = { height: 0 };
};

// shuffle
jQuery.fn.cycle.transitions.shuffle = function(jQuerycont, jQueryslides, opts) {
	var i, w = jQuerycont.css('overflow', 'visible').width();
	jQueryslides.css({left: 0, top: 0});
	opts.before.push(function(curr,next,opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,true,true,true);
	});
	// only adjust speed once!
	if (!opts.speedAdjusted) {
		opts.speed = opts.speed / 2; // shuffle has 2 transitions
		opts.speedAdjusted = true;
	}
	opts.random = 0;
	opts.shuffle = opts.shuffle || {left:-w, top:15};
	opts.els = [];
	for (i=0; i < jQueryslides.length; i++)
		opts.els.push(jQueryslides[i]);

	for (i=0; i < opts.currSlide; i++)
		opts.els.push(opts.els.shift());

	// custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
	opts.fxFn = function(curr, next, opts, cb, fwd) {
		var jQueryel = fwd ? jQuery(curr) : jQuery(next);
		jQuery(next).css(opts.cssBefore);
		var count = opts.slideCount;
		jQueryel.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() {
			var hops = jQuery.fn.cycle.hopsFromLast(opts, fwd);
			for (var k=0; k < hops; k++)
				fwd ? opts.els.push(opts.els.shift()) : opts.els.unshift(opts.els.pop());
			if (fwd) {
				for (var i=0, len=opts.els.length; i < len; i++)
					jQuery(opts.els[i]).css('z-index', len-i+count);
			}
			else {
				var z = jQuery(curr).css('z-index');
				jQueryel.css('z-index', parseInt(z)+1+count);
			}
			jQueryel.animate({left:0, top:0}, opts.speedOut, opts.easeOut, function() {
				jQuery(fwd ? this : curr).hide();
				if (cb) cb();
			});
		});
	};
	opts.cssBefore = { display: 'block', opacity: 1, top: 0, left: 0 };
};

// turnUp/Down/Left/Right
jQuery.fn.cycle.transitions.turnUp = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,true,false);
		opts.cssBefore.top = next.cycleH;
		opts.animIn.height = next.cycleH;
	});
	opts.cssFirst  = { top: 0 };
	opts.cssBefore = { left: 0, height: 0 };
	opts.animIn	   = { top: 0 };
	opts.animOut   = { height: 0 };
};
jQuery.fn.cycle.transitions.turnDown = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,true,false);
		opts.animIn.height = next.cycleH;
		opts.animOut.top   = curr.cycleH;
	});
	opts.cssFirst  = { top: 0 };
	opts.cssBefore = { left: 0, top: 0, height: 0 };
	opts.animOut   = { height: 0 };
};
jQuery.fn.cycle.transitions.turnLeft = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,false,true);
		opts.cssBefore.left = next.cycleW;
		opts.animIn.width = next.cycleW;
	});
	opts.cssBefore = { top: 0, width: 0  };
	opts.animIn	   = { left: 0 };
	opts.animOut   = { width: 0 };
};
jQuery.fn.cycle.transitions.turnRight = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,false,true);
		opts.animIn.width = next.cycleW;
		opts.animOut.left = curr.cycleW;
	});
	opts.cssBefore = { top: 0, left: 0, width: 0 };
	opts.animIn	   = { left: 0 };
	opts.animOut   = { width: 0 };
};

// zoom
jQuery.fn.cycle.transitions.zoom = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,false,false,true);
		opts.cssBefore.top = next.cycleH/2;
		opts.cssBefore.left = next.cycleW/2;
		opts.animIn	   = { top: 0, left: 0, width: next.cycleW, height: next.cycleH };
		opts.animOut   = { width: 0, height: 0, top: curr.cycleH/2, left: curr.cycleW/2 };
	});
	opts.cssFirst = { top:0, left: 0 };
	opts.cssBefore = { width: 0, height: 0 };
};

// fadeZoom
jQuery.fn.cycle.transitions.fadeZoom = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,false,false);
		opts.cssBefore.left = next.cycleW/2;
		opts.cssBefore.top = next.cycleH/2;
		opts.animIn	= { top: 0, left: 0, width: next.cycleW, height: next.cycleH };
	});
	opts.cssBefore = { width: 0, height: 0 };
	opts.animOut  = { opacity: 0 };
};

// blindX
jQuery.fn.cycle.transitions.blindX = function(jQuerycont, jQueryslides, opts) {
	var w = jQuerycont.css('overflow','hidden').width();
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts);
		opts.animIn.width = next.cycleW;
		opts.animOut.left   = curr.cycleW;
	});
	opts.cssBefore = { left: w, top: 0 };
	opts.animIn = { left: 0 };
	opts.animOut  = { left: w };
};
// blindY
jQuery.fn.cycle.transitions.blindY = function(jQuerycont, jQueryslides, opts) {
	var h = jQuerycont.css('overflow','hidden').height();
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts);
		opts.animIn.height = next.cycleH;
		opts.animOut.top   = curr.cycleH;
	});
	opts.cssBefore = { top: h, left: 0 };
	opts.animIn = { top: 0 };
	opts.animOut  = { top: h };
};
// blindZ
jQuery.fn.cycle.transitions.blindZ = function(jQuerycont, jQueryslides, opts) {
	var h = jQuerycont.css('overflow','hidden').height();
	var w = jQuerycont.width();
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts);
		opts.animIn.height = next.cycleH;
		opts.animOut.top   = curr.cycleH;
	});
	opts.cssBefore = { top: h, left: w };
	opts.animIn = { top: 0, left: 0 };
	opts.animOut  = { top: h, left: w };
};

// growX - grow horizontally from centered 0 width
jQuery.fn.cycle.transitions.growX = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,false,true);
		opts.cssBefore.left = this.cycleW/2;
		opts.animIn = { left: 0, width: this.cycleW };
		opts.animOut = { left: 0 };
	});
	opts.cssBefore = { width: 0, top: 0 };
};
// growY - grow vertically from centered 0 height
jQuery.fn.cycle.transitions.growY = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,true,false);
		opts.cssBefore.top = this.cycleH/2;
		opts.animIn = { top: 0, height: this.cycleH };
		opts.animOut = { top: 0 };
	});
	opts.cssBefore = { height: 0, left: 0 };
};

// curtainX - squeeze in both edges horizontally
jQuery.fn.cycle.transitions.curtainX = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,false,true,true);
		opts.cssBefore.left = next.cycleW/2;
		opts.animIn = { left: 0, width: this.cycleW };
		opts.animOut = { left: curr.cycleW/2, width: 0 };
	});
	opts.cssBefore = { top: 0, width: 0 };
};
// curtainY - squeeze in both edges vertically
jQuery.fn.cycle.transitions.curtainY = function(jQuerycont, jQueryslides, opts) {
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,true,false,true);
		opts.cssBefore.top = next.cycleH/2;
		opts.animIn = { top: 0, height: next.cycleH };
		opts.animOut = { top: curr.cycleH/2, height: 0 };
	});
	opts.cssBefore = { left: 0, height: 0 };
};

// cover - curr slide covered by next slide
jQuery.fn.cycle.transitions.cover = function(jQuerycont, jQueryslides, opts) {
	var d = opts.direction || 'left';
	var w = jQuerycont.css('overflow','hidden').width();
	var h = jQuerycont.height();
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts);
		if (d == 'right')
			opts.cssBefore.left = -w;
		else if (d == 'up')
			opts.cssBefore.top = h;
		else if (d == 'down')
			opts.cssBefore.top = -h;
		else
			opts.cssBefore.left = w;
	});
	opts.animIn = { left: 0, top: 0};
	opts.animOut = { opacity: 1 };
	opts.cssBefore = { top: 0, left: 0 };
};

// uncover - curr slide moves off next slide
jQuery.fn.cycle.transitions.uncover = function(jQuerycont, jQueryslides, opts) {
	var d = opts.direction || 'left';
	var w = jQuerycont.css('overflow','hidden').width();
	var h = jQuerycont.height();
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,true,true,true);
		if (d == 'right')
			opts.animOut.left = w;
		else if (d == 'up')
			opts.animOut.top = -h;
		else if (d == 'down')
			opts.animOut.top = h;
		else
			opts.animOut.left = -w;
	});
	opts.animIn = { left: 0, top: 0 };
	opts.animOut = { opacity: 1 };
	opts.cssBefore = { top: 0, left: 0 };
};

// toss - move top slide and fade away
jQuery.fn.cycle.transitions.toss = function(jQuerycont, jQueryslides, opts) {
	var w = jQuerycont.css('overflow','visible').width();
	var h = jQuerycont.height();
	opts.before.push(function(curr, next, opts) {
		jQuery.fn.cycle.commonReset(curr,next,opts,true,true,true);
		// provide default toss settings if animOut not provided
		if (!opts.animOut.left && !opts.animOut.top)
			opts.animOut = { left: w*2, top: -h/2, opacity: 0 };
		else
			opts.animOut.opacity = 0;
	});
	opts.cssBefore = { left: 0, top: 0 };
	opts.animIn = { left: 0 };
};

// wipe - clip animation
jQuery.fn.cycle.transitions.wipe = function(jQuerycont, jQueryslides, opts) {
	var w = jQuerycont.css('overflow','hidden').width();
	var h = jQuerycont.height();
	opts.cssBefore = opts.cssBefore || {};
	var clip;
	if (opts.clip) {
		if (/l2r/.test(opts.clip))
			clip = 'rect(0px 0px '+h+'px 0px)';
		else if (/r2l/.test(opts.clip))
			clip = 'rect(0px '+w+'px '+h+'px '+w+'px)';
		else if (/t2b/.test(opts.clip))
			clip = 'rect(0px '+w+'px 0px 0px)';
		else if (/b2t/.test(opts.clip))
			clip = 'rect('+h+'px '+w+'px '+h+'px 0px)';
		else if (/zoom/.test(opts.clip)) {
			var top = parseInt(h/2);
			var left = parseInt(w/2);
			clip = 'rect('+top+'px '+left+'px '+top+'px '+left+'px)';
		}
	}

	opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)';

	var d = opts.cssBefore.clip.match(/(\d+)/g);
	var t = parseInt(d[0]), r = parseInt(d[1]), b = parseInt(d[2]), l = parseInt(d[3]);

	opts.before.push(function(curr, next, opts) {
		if (curr == next) return;
		var jQuerycurr = jQuery(curr), jQuerynext = jQuery(next);
		jQuery.fn.cycle.commonReset(curr,next,opts,true,true,false);
		opts.cssAfter.display = 'block';

		var step = 1, count = parseInt((opts.speedIn / 13)) - 1;
		(function f() {
			var tt = t ? t - parseInt(step * (t/count)) : 0;
			var ll = l ? l - parseInt(step * (l/count)) : 0;
			var bb = b < h ? b + parseInt(step * ((h-b)/count || 1)) : h;
			var rr = r < w ? r + parseInt(step * ((w-r)/count || 1)) : w;
			jQuerynext.css({ clip: 'rect('+tt+'px '+rr+'px '+bb+'px '+ll+'px)' });
			(step++ <= count) ? setTimeout(f, 13) : jQuerycurr.css('display', 'none');
		})();
	});
	opts.cssBefore = { display: 'block', opacity: 1, top: 0, left: 0 };
	opts.animIn	   = { left: 0 };
	opts.animOut   = { left: 0 };
};

})(jQuery);
 


// usage: log('inside coolFunc',this,arguments);
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
window.log = function(){
  log.history = log.history || [];   // store logs to an array for reference
  log.history.push(arguments);
  if(this.console){
    console.log( Array.prototype.slice.call(arguments) );
  }
};



// catch all document.write() calls
(function(doc){
  var write = doc.write;
  doc.write = function(q){ 
    log('document.write(): ',arguments); 
    if (/docwriteregexwhitelist/.test(q)) write.apply(doc,arguments);  
  };
})(document);



