Jump to content

Rotate back to the 1st image


robert_gsfame

Recommended Posts

I have problem with js, i have let say 2 images and wish to rotate those images....what i found here using this jquery is that it always stop rotating when reach the second image...can anyone help me point out the problem?? as i really wish to rotate back the 1st image after reach the last image (2nd image in this case)

 

Thx

 

;jQuery.ui || (function($) {

 

var _remove = $.fn.remove,

isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);

 

//Helper functions and ui object

$.ui = {

version: "1.7.2",

 

// $.ui.plugin is deprecated.  Use the proxy pattern instead.

plugin: {

add: function(module, option, set) {

var proto = $.ui[module].prototype;

for(var i in set) {

proto.plugins = proto.plugins || [];

proto.plugins.push([option, set]);

}

},

call: function(instance, name, args) {

var set = instance.plugins[name];

if(!set || !instance.element[0].parentNode) { return; }

 

for (var i = 0; i < set.length; i++) {

if (instance.options[set[0]]) {

set[1].apply(instance.element, args);

}

}

}

},

 

contains: function(a, b) {

return document.compareDocumentPosition

? a.compareDocumentPosition(b) & 16

: a !== b && a.contains(b);

},

 

hasScroll: function(el, a) {

 

//If overflow is hidden, the element might have extra content, but the user wants to hide it

if ($(el).css('overflow') == 'hidden') { return false; }

 

var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',

has = false;

 

if (el[scroll] > 0) { return true; }

 

// TODO: determine which cases actually cause this to happen

// if the element doesn't have the scroll set, see if it's possible to

// set the scroll

el[scroll] = 1;

has = (el[scroll] > 0);

el[scroll] = 0;

return has;

},

 

isOverAxis: function(x, reference, size) {

//Determines when x coordinate is over "b" element axis

return (x > reference) && (x < (reference + size));

},

 

isOver: function(y, x, top, left, height, width) {

//Determines when x, y coordinates is over "b" element

return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);

},

 

keyCode: {

BACKSPACE: 8,

CAPS_LOCK: 20,

COMMA: 188,

CONTROL: 17,

DELETE: 46,

DOWN: 40,

END: 35,

ENTER: 13,

ESCAPE: 27,

HOME: 36,

INSERT: 45,

LEFT: 37,

NUMPAD_ADD: 107,

NUMPAD_DECIMAL: 110,

NUMPAD_DIVIDE: 111,

NUMPAD_ENTER: 108,

NUMPAD_MULTIPLY: 106,

NUMPAD_SUBTRACT: 109,

PAGE_DOWN: 34,

PAGE_UP: 33,

PERIOD: 190,

RIGHT: 39,

SHIFT: 16,

SPACE: 32,

TAB: 9,

UP: 38

}

};

 

// WAI-ARIA normalization

if (isFF2) {

var attr = $.attr,

removeAttr = $.fn.removeAttr,

ariaNS = "http://www.w3.org/2005/07/aaa",

ariaState = /^aria-/,

ariaRole = /^wairole:/;

 

$.attr = function(elem, name, value) {

var set = value !== undefined;

 

return (name == 'role'

? (set

? attr.call(this, elem, name, "wairole:" + value)

: (attr.apply(this, arguments) || "").replace(ariaRole, ""))

: (ariaState.test(name)

? (set

? elem.setAttributeNS(ariaNS,

name.replace(ariaState, "aaa:"), value)

: attr.call(this, elem, name.replace(ariaState, "aaa:")))

: attr.apply(this, arguments)));

};

 

$.fn.removeAttr = function(name) {

return (ariaState.test(name)

? this.each(function() {

this.removeAttributeNS(ariaNS, name.replace(ariaState, ""));

}) : removeAttr.call(this, name));

};

}

 

//jQuery plugins

$.fn.extend({

remove: function() {

// Safari has a native remove event which actually removes DOM elements,

// so we have to use triggerHandler instead of trigger (#3037).

$("*", this).add(this).each(function() {

$(this).triggerHandler("remove");

});

return _remove.apply(this, arguments );

},

 

enableSelection: function() {

return this

.attr('unselectable', 'off')

.css('MozUserSelect', '')

.unbind('selectstart.ui');

},

 

disableSelection: function() {

return this

.attr('unselectable', 'on')

.css('MozUserSelect', 'none')

.bind('selectstart.ui', function() { return false; });

},

 

scrollParent: function() {

 

var scrollParent;

if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {

scrollParent = this.parents().filter(function() {

return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));

}).eq(0);

} else {

scrollParent = this.parents().filter(function() {

return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));

}).eq(0);

}

 

return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;

}

});

 

 

//Additional selectors

$.extend($.expr[':'], {

data: function(elem, i, match) {

return !!$.data(elem, match[3]);

},

 

focusable: function(element) {

var nodeName = element.nodeName.toLowerCase(),

tabIndex = $.attr(element, 'tabindex');

return (/input|select|textarea|button|object/.test(nodeName)

? !element.disabled

: 'a' == nodeName || 'area' == nodeName

? element.href || !isNaN(tabIndex)

: !isNaN(tabIndex))

// the element and all of its ancestors must be visible

// the browser may report that the area is hidden

&& !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;

},

 

tabbable: function(element) {

var tabIndex = $.attr(element, 'tabindex');

return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');

}

});

 

 

// $.widget is a factory to create jQuery plugins

// taking some boilerplate code out of the plugin code

function getter(namespace, plugin, method, args) {

function getMethods(type) {

var methods = $[namespace][plugin][type] || [];

return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods);

}

 

var methods = getMethods('getter');

if (args.length == 1 && typeof args[0] == 'string') {

methods = methods.concat(getMethods('getterSetter'));

}

return ($.inArray(method, methods) != -1);

}

 

$.widget = function(name, prototype) {

var namespace = name.split(".")[0];

name = name.split(".")[1];

 

// create plugin method

$.fn[name] = function(options) {

var isMethodCall = (typeof options == 'string'),

args = Array.prototype.slice.call(arguments, 1);

 

// prevent calls to internal methods

if (isMethodCall && options.substring(0, 1) == '_') {

return this;

}

 

// handle getter methods

if (isMethodCall && getter(namespace, name, options, args)) {

var instance = $.data(this[0], name);

return (instance ? instance[options].apply(instance, args)

: undefined);

}

 

// handle initialization and non-getter methods

return this.each(function() {

var instance = $.data(this, name);

 

// constructor

(!instance && !isMethodCall &&

$.data(this, name, new $[namespace][name](this, options))._init());

 

// method call

(instance && isMethodCall && $.isFunction(instance[options]) &&

instance[options].apply(instance, args));

});

};

 

// create widget constructor

$[namespace] = $[namespace] || {};

$[namespace][name] = function(element, options) {

var self = this;

 

this.namespace = namespace;

this.widgetName = name;

this.widgetEventPrefix = $[namespace][name].eventPrefix || name;

this.widgetBaseClass = namespace + '-' + name;

 

this.options = $.extend({},

$.widget.defaults,

$[namespace][name].defaults,

$.metadata && $.metadata.get(element)[name],

options);

 

this.element = $(element)

.bind('setData.' + name, function(event, key, value) {

if (event.target == element) {

return self._setData(key, value);

}

})

.bind('getData.' + name, function(event, key) {

if (event.target == element) {

return self._getData(key);

}

})

.bind('remove', function() {

return self.destroy();

});

};

 

// add widget prototype

$[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);

 

// TODO: merge getter and getterSetter properties from widget prototype

// and plugin prototype

$[namespace][name].getterSetter = 'option';

};

 

$.widget.prototype = {

_init: function() {},

destroy: function() {

this.element.removeData(this.widgetName)

.removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled')

.removeAttr('aria-disabled');

},

 

option: function(key, value) {

var options = key,

self = this;

 

if (typeof key == "string") {

if (value === undefined) {

return this._getData(key);

}

options = {};

options[key] = value;

}

 

$.each(options, function(key, value) {

self._setData(key, value);

});

},

_getData: function(key) {

return this.options[key];

},

_setData: function(key, value) {

this.options[key] = value;

 

if (key == 'disabled') {

this.element

[value ? 'addClass' : 'removeClass'](

this.widgetBaseClass + '-disabled' + ' ' +

this.namespace + '-state-disabled')

.attr("aria-disabled", value);

}

},

 

enable: function() {

this._setData('disabled', false);

},

disable: function() {

this._setData('disabled', true);

},

 

_trigger: function(type, event, data) {

var callback = this.options[type],

eventName = (type == this.widgetEventPrefix

? type : this.widgetEventPrefix + type);

 

event = $.Event(event);

event.type = eventName;

 

// copy original event properties over to the new event

// this would happen if we could call $.event.fix instead of $.Event

// but we don't have a way to force an event to be fixed multiple times

if (event.originalEvent) {

for (var i = $.event.props.length, prop; i;) {

prop = $.event.props[--i];

event[prop] = event.originalEvent[prop];

}

}

 

this.element.trigger(event, data);

 

return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false

|| event.isDefaultPrevented());

}

};

 

$.widget.defaults = {

disabled: false

};

 

 

/** Mouse Interaction Plugin **/

 

$.ui.mouse = {

_mouseInit: function() {

var self = this;

 

this.element

.bind('mousedown.'+this.widgetName, function(event) {

return self._mouseDown(event);

})

.bind('click.'+this.widgetName, function(event) {

if(self._preventClickEvent) {

self._preventClickEvent = false;

event.stopImmediatePropagation();

return false;

}

});

 

// Prevent text selection in IE

if ($.browser.msie) {

this._mouseUnselectable = this.element.attr('unselectable');

this.element.attr('unselectable', 'on');

}

 

this.started = false;

},

 

// TODO: make sure destroying one instance of mouse doesn't mess with

// other instances of mouse

_mouseDestroy: function() {

this.element.unbind('.'+this.widgetName);

 

// Restore text selection in IE

($.browser.msie

&& this.element.attr('unselectable', this._mouseUnselectable));

},

 

_mouseDown: function(event) {

// don't let more than one widget handle mouseStart

// TODO: figure out why we have to use originalEvent

event.originalEvent = event.originalEvent || {};

if (event.originalEvent.mouseHandled) { return; }

 

// we may have missed mouseup (out of window)

(this._mouseStarted && this._mouseUp(event));

 

this._mouseDownEvent = event;

 

var self = this,

btnIsLeft = (event.which == 1),

elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);

if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {

return true;

}

 

this.mouseDelayMet = !this.options.delay;

if (!this.mouseDelayMet) {

this._mouseDelayTimer = setTimeout(function() {

self.mouseDelayMet = true;

}, this.options.delay);

}

 

if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {

this._mouseStarted = (this._mouseStart(event) !== false);

if (!this._mouseStarted) {

event.preventDefault();

return true;

}

}

 

// these delegates are required to keep context

this._mouseMoveDelegate = function(event) {

return self._mouseMove(event);

};

this._mouseUpDelegate = function(event) {

return self._mouseUp(event);

};

$(document)

.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)

.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);

 

// preventDefault() is used to prevent the selection of text here -

// however, in Safari, this causes select boxes not to be selectable

// anymore, so this fix is needed

($.browser.safari || event.preventDefault());

 

event.originalEvent.mouseHandled = true;

return true;

},

 

_mouseMove: function(event) {

// IE mouseup check - mouseup happened when mouse was out of window

if ($.browser.msie && !event.button) {

return this._mouseUp(event);

}

 

if (this._mouseStarted) {

this._mouseDrag(event);

return event.preventDefault();

}

 

if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {

this._mouseStarted =

(this._mouseStart(this._mouseDownEvent, event) !== false);

(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));

}

 

return !this._mouseStarted;

},

 

_mouseUp: function(event) {

$(document)

.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)

.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);

 

if (this._mouseStarted) {

this._mouseStarted = false;

this._preventClickEvent = (event.target == this._mouseDownEvent.target);

this._mouseStop(event);

}

 

return false;

},

 

_mouseDistanceMet: function(event) {

return (Math.max(

Math.abs(this._mouseDownEvent.pageX - event.pageX),

Math.abs(this._mouseDownEvent.pageY - event.pageY)

) >= this.options.distance

);

},

 

_mouseDelayMet: function(event) {

return this.mouseDelayMet;

},

 

// These are placeholder methods, to be overriden by extending plugin

_mouseStart: function(event) {},

_mouseDrag: function(event) {},

_mouseStop: function(event) {},

_mouseCapture: function(event) { return true; }

};

 

$.ui.mouse.defaults = {

cancel: null,

distance: 1,

 

delay: 0

};

 

})(jQuery);

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.