src/cm/media/js/lib/yui/yui3-3.15.0/build/imageloader/imageloader-debug.js
author ymh <ymh.work@gmail.com>
Fri, 14 Mar 2014 13:16:10 +0100
changeset 611 fa66f4bb1563
parent 602 e16a97fb364a
permissions -rw-r--r--
add some more custom config and put every thing in comment in the custom.yaml template
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('imageloader', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
 * The ImageLoader Utility is a framework to dynamically load images according to certain triggers,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
 * enabling faster load times and a more responsive UI.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
 * @module imageloader
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
	/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
	 * A group for images. A group can have one time limit and a series of triggers. Thus the images belonging to this group must share these constraints.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
	 * @class ImgLoadGroup
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
	 * @extends Base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
	 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
	 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
	Y.ImgLoadGroup = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
		// call init first, because it sets up local vars for storing attribute-related info
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
		this._init();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
		Y.ImgLoadGroup.superclass.constructor.apply(this, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
	};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
	Y.ImgLoadGroup.NAME = 'imgLoadGroup';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
	Y.ImgLoadGroup.ATTRS = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
		 * Name for the group. Only used to identify the group in logging statements.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
		 * @attribute name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
		 * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
		name: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
			value: ''
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
		 * Time limit, in seconds, after which images are fetched regardless of trigger events.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
		 * @attribute timeLimit
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
		 * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
		timeLimit: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
			value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
		 * Distance below the fold for which images are loaded. Images are not loaded until they are at most this distance away from (or above) the fold.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
		 * This check is performed at page load (domready) and after any window scroll or window resize event (until all images are loaded).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
		 * @attribute foldDistance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
		 * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
		foldDistance: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
			validator: Y.Lang.isNumber,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
			setter: function(val) { this._setFoldTriggers(); return val; },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
			lazyAdd: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
		 * Class name that will identify images belonging to the group. This class name will be removed from each element in order to fetch images.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
		 * This class should have, in its CSS style definition, "<code>background:none !important;</code>".
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
		 * @attribute className
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
		 * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
		className: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
			value: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
			setter: function(name) { this._className = name; return name; },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
			lazyAdd: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
         * Determines how to act when className is used as the way to delay load images. The "default" action is to just
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
         * remove the class name. The "enhanced" action is to remove the class name and also set the src attribute if
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
         * the element is an img.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
         * @attribute classNameAction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
         * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
        classNameAction: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            value: "default"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
	};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
	var groupProto = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
		 * Initialize all private members needed for the group.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
		 * @method _init
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
		 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
		_init: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
			/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
			 * Collection of triggers for this group.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
			 * Keeps track of each trigger's event handle, as returned from <code>Y.on</code>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
			 * @property _triggers
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
			 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
			 * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
			this._triggers = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
			/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
			 * Collection of images (<code>Y.ImgLoadImgObj</code> objects) registered with this group, keyed by DOM id.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
			 * @property _imgObjs
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
			 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
			 * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
			this._imgObjs = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
			/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
			 * Timeout object to keep a handle on the time limit.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
			 * @property _timeout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
			 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
			 * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
			this._timeout = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
			/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
			 * DOM elements having the class name that is associated with this group.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
			 * Elements are stored during the <code>_foldCheck</code> function and reused later during any subsequent <code>_foldCheck</code> calls - gives a slight performance improvement when the page fold is repeatedly checked.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
			 * @property _classImageEls
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
			 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
			 * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
			this._classImageEls = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
			/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
			 * Keep the CSS class name in a member variable for ease and speed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
			 * @property _className
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
			 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
			 * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
			this._className = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
			/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
			 * Boolean tracking whether the window scroll and window resize triggers have been set if this is a fold group.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
			 * @property _areFoldTriggersSet
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
			 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
			 * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
			this._areFoldTriggersSet = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
			/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
			 * The maximum pixel height of the document that has been made visible.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
			 * During fold checks, if the user scrolls up then there's no need to check for newly exposed images.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
			 * @property _maxKnownHLimit
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
			 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
			 * @type Int
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
			this._maxKnownHLimit = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
			// add a listener to domready that will start the time limit
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
			Y.on('domready', this._onloadTasks, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
		 * Adds a trigger to the group. Arguments are passed to <code>Y.on</code>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
		 * @method addTrigger
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
		 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
		 * @param {Object} obj  The DOM object to attach the trigger event to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
		 * @param {String} type  The event type
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
		addTrigger: function(obj, type) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
			if (! obj || ! type) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
				return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
			Y.log('adding trigger to group: ' + this.get('name'), 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
			/* Need to wrap the fetch function. Event Util can't distinguish prototyped functions of different instantiations.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
			 *   Leads to this scenario: groupA and groupZ both have window-scroll triggers. groupZ also has a 2-sec timeout (groupA has no timeout).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
			 *   groupZ's timeout fires; we remove the triggers. The detach call finds the first window-scroll event with Y.ILG.p.fetch, which is groupA's.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
			 *   groupA's trigger is removed and never fires, leaving images unfetched.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
			var wrappedFetch = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
				this.fetch();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
			};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
			this._triggers.push( Y.on(type, wrappedFetch, obj, this) );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
			return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
		 * Adds a custom event trigger to the group.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
		 * @method addCustomTrigger
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
		 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
		 * @param {String} name  The name of the event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
		 * @param {Object} obj  The object on which to attach the event. <code>obj</code> is optional - by default the event is attached to the <code>Y</code> instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
		addCustomTrigger: function(name, obj) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
			if (! name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
				return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
			Y.log('adding custom trigger to group: ' + this.get('name'), 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
			// see comment in addTrigger()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
			var wrappedFetch = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
				this.fetch();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
			};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
			if (Y.Lang.isUndefined(obj)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
				this._triggers.push( Y.on(name, wrappedFetch, this) );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
			else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
				this._triggers.push( obj.on(name, wrappedFetch, this) );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
			return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
		 * Sets the window scroll and window resize triggers for any group that is fold-conditional (i.e., has a fold distance set).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
		 * @method _setFoldTriggers
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
		 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
		_setFoldTriggers: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
			if (this._areFoldTriggersSet) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
				return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
			Y.log('setting window scroll and resize events for group: ' + this.get('name'), 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
			var wrappedFoldCheck = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
				this._foldCheck();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
			};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
			this._triggers.push( Y.on('scroll', wrappedFoldCheck, window, this) );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
			this._triggers.push( Y.on('resize', wrappedFoldCheck, window, this) );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
			this._areFoldTriggersSet = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
		 * Performs necessary setup at domready time.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
		 * Initiates time limit for group; executes the fold check for the images.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
		 * @method _onloadTasks
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
		 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
		_onloadTasks: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
			var timeLim = this.get('timeLimit');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
			if (timeLim && timeLim > 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
				Y.log('setting time limit of ' + timeLim + ' seconds for group: ' + this.get('name'), 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
				this._timeout = setTimeout(this._getFetchTimeout(), timeLim * 1000);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
			if (! Y.Lang.isUndefined(this.get('foldDistance'))) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
				this._foldCheck();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
		 * Returns the group's <code>fetch</code> method, with the proper closure, for use with <code>setTimeout</code>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
		 * @method _getFetchTimeout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
		 * @return {Function}  group's <code>fetch</code> method
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
		 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
		_getFetchTimeout: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
			var self = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
			return function() { self.fetch(); };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
		 * Registers an image with the group.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
		 * Arguments are passed through to a <code>Y.ImgLoadImgObj</code> constructor; see that class' attribute documentation for detailed information. "<code>domId</code>" is a required attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
		 * @method registerImage
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
		 * @param {Object} config A configuration object literal with attribute name/value pairs  (passed through to a <code>Y.ImgLoadImgObj</code> constructor)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
		 * @return {Object}  <code>Y.ImgLoadImgObj</code> that was registered
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
		registerImage: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
			var domId = arguments[0].domId;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
			if (! domId) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
				return null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
			Y.log('adding image with id: ' + domId + ' to group: ' + this.get('name'), 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
			this._imgObjs[domId] = new Y.ImgLoadImgObj(arguments[0]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
			return this._imgObjs[domId];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
		 * Displays the images in the group.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
		 * This method is called when a trigger fires or the time limit expires; it shouldn't be called externally, but is not private in the rare event that it needs to be called immediately.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
		 * @method fetch
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
		fetch: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
			Y.log('Fetching images in group: "' + this.get('name') + '".', 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
			// done with the triggers
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
			this._clearTriggers();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
			// fetch whatever we need to by className
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
			this._fetchByClass();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
			// fetch registered images
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
			for (var id in this._imgObjs) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
				if (this._imgObjs.hasOwnProperty(id)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
					this._imgObjs[id].fetch();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
				}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
		 * Clears the timeout and all triggers associated with the group.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
		 * @method _clearTriggers
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
		 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
		_clearTriggers: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
			clearTimeout(this._timeout);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
			// detach all listeners
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
			for (var i=0, len = this._triggers.length; i < len; i++) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
				this._triggers[i].detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
		 * Checks the position of each image in the group. If any part of the image is within the specified distance (<code>foldDistance</code>) of the client viewport, the image is fetched immediately.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
		 * @method _foldCheck
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
		 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
		_foldCheck: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
			Y.log('Checking for images above the fold in group: "' + this.get('name') + '"', 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
			var allFetched = true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
			    viewReg = Y.DOM.viewportRegion(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
			    hLimit = viewReg.bottom + this.get('foldDistance'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
					id, imgFetched, els, i, len;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
			// unless we've uncovered new frontiers, there's no need to continue
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
			if (hLimit <= this._maxKnownHLimit) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
				return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
			this._maxKnownHLimit = hLimit;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
			for (id in this._imgObjs) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
				if (this._imgObjs.hasOwnProperty(id)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
					imgFetched = this._imgObjs[id].fetch(hLimit);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
					allFetched = allFetched && imgFetched;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
				}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
			// and by class
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
			if (this._className) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
				if (this._classImageEls === null) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
					// get all the relevant elements and store them
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
					this._classImageEls = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
					els = Y.all('.' + this._className);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
					els.each( function(node) { this._classImageEls.push( { el: node, y: node.getY(), fetched: false } ); }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
				}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
				els = this._classImageEls;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
				for (i=0, len = els.length; i < len; i++) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
					if (els[i].fetched) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
						continue;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
					}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
					if (els[i].y && els[i].y <= hLimit) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
						//els[i].el.removeClass(this._className);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
						this._updateNodeClassName(els[i].el);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
                        els[i].fetched = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
						Y.log('Image with id "' + els[i].el.get('id') + '" is within distance of the fold. Fetching image. (Image registered by class name with the group - may not have an id.)', 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
					}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
					else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
						allFetched = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
					}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
				}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
			// if allFetched, remove listeners
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
			if (allFetched) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
				Y.log('All images fetched; removing listeners for group: "' + this.get('name') + '"', 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
				this._clearTriggers();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
         * Updates a given node, removing the ImageLoader class name. If the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
         * node is an img and the classNameAction is "enhanced", then node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
         * class name is removed and also the src attribute is set to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
         * image URL as well as clearing the style background image.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
         * @method _updateNodeClassName
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
         * @param node {Node} The node to act on.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
         * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
        _updateNodeClassName: function(node){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
            var url;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
            if (this.get("classNameAction") == "enhanced"){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
                if (node.get("tagName").toLowerCase() == "img"){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
                    url = node.getStyle("backgroundImage");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
                    /url\(["']?(.*?)["']?\)/.test(url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
                    url = RegExp.$1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
                    node.set("src", url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
                    node.setStyle("backgroundImage", "");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
            node.removeClass(this._className);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
		 * Finds all elements in the DOM with the class name specified in the group. Removes the class from the element in order to let the style definitions trigger the image fetching.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
		 * @method _fetchByClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
		 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
		_fetchByClass: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
			if (! this._className) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
				return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
			Y.log('Fetching all images with class "' + this._className + '" in group "' + this.get('name') + '".', 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
			Y.all('.' + this._className).each(Y.bind(this._updateNodeClassName, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
		}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
	};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
	Y.extend(Y.ImgLoadGroup, Y.Base, groupProto);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
	//------------------------------------------------
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
	/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
	 * Image objects to be registered with the groups
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
	 * @class ImgLoadImgObj
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
	 * @extends Base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
	 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
	 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
	Y.ImgLoadImgObj = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
		Y.ImgLoadImgObj.superclass.constructor.apply(this, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
		this._init();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
	};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
	Y.ImgLoadImgObj.NAME = 'imgLoadImgObj';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   433
	Y.ImgLoadImgObj.ATTRS = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   434
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   435
		 * HTML DOM id of the image element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   436
		 * @attribute domId
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   437
		 * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   438
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   439
		domId: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   440
			value: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   441
			writeOnce: true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   442
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   443
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   444
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   445
		 * Background URL for the image.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   446
		 * For an image whose URL is specified by "<code>background-image</code>" in the element's style.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   447
		 * @attribute bgUrl
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   448
		 * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   449
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   450
		bgUrl: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   451
			value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   452
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   453
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   454
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   455
		 * Source URL for the image.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   456
		 * For an image whose URL is specified by a "<code>src</code>" attribute in the DOM element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   457
		 * @attribute srcUrl
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   458
		 * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   459
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   460
		srcUrl: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   461
			value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   462
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   463
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   464
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   465
		 * Pixel width of the image. Will be set as a <code>width</code> attribute on the DOM element after the image is fetched.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   466
		 * Defaults to the natural width of the image (no <code>width</code> attribute will be set).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   467
		 * Usually only used with src images.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   468
		 * @attribute width
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   469
		 * @type Int
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   470
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   471
		width: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   472
			value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   473
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   474
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   475
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   476
		 * Pixel height of the image. Will be set as a <code>height</code> attribute on the DOM element after the image is fetched.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   477
		 * Defaults to the natural height of the image (no <code>height</code> attribute will be set).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   478
		 * Usually only used with src images.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   479
		 * @attribute height
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   480
		 * @type Int
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   481
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   482
		height: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   483
			value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   484
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   485
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   486
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   487
		 * Whether the image's <code>style.visibility</code> should be set to <code>visible</code> after the image is fetched.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   488
		 * Used when setting images as <code>visibility:hidden</code> prior to image fetching.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   489
		 * @attribute setVisible
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   490
		 * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   491
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   492
		setVisible: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   493
			value: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   494
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   495
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   496
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   497
		 * Whether the image is a PNG.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   498
		 * PNG images get special treatment in that the URL is specified through AlphaImageLoader for IE, versions 6 and earlier.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   499
		 * Only used with background images.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   500
		 * @attribute isPng
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   501
		 * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   502
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   503
		isPng: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   504
			value: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   505
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   506
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   507
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   508
		 * AlphaImageLoader <code>sizingMethod</code> property to be set for the image.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   509
		 * Only set if <code>isPng</code> value for this image is set to <code>true</code>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   510
		 * Defaults to <code>scale</code>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   511
		 * @attribute sizingMethod
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   512
		 * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   513
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   514
		sizingMethod: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   515
			value: 'scale'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   516
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   517
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   518
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   519
		 * AlphaImageLoader <code>enabled</code> property to be set for the image.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   520
		 * Only set if <code>isPng</code> value for this image is set to <code>true</code>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   521
		 * Defaults to <code>true</code>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   522
		 * @attribute enabled
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   523
		 * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   524
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   525
		enabled: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   526
			value: 'true'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   527
		}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   528
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   529
	};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   530
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   531
	var imgProto = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   532
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   533
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   534
		 * Initialize all private members needed for the group.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   535
		 * @method _init
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   536
		 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   537
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   538
		_init: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   539
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   540
			/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   541
			 * Whether this image has already been fetched.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   542
			 * In the case of fold-conditional groups, images won't be fetched twice.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   543
			 * @property _fetched
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   544
			 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   545
			 * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   546
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   547
			this._fetched = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   548
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   549
			/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   550
			 * The Node object returned from <code>Y.one</code>, to avoid repeat calls to access the DOM.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   551
			 * @property _imgEl
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   552
			 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   553
			 * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   554
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   555
			this._imgEl = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   556
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   557
			/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   558
			 * The vertical position returned from <code>getY</code>, to avoid repeat calls to access the DOM.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   559
			 * The Y position is checked only for images registered with fold-conditional groups. The position is checked first at page load (domready)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   560
			 *   and this caching enhancement assumes that the image's vertical position won't change after that first check.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   561
			 * @property _yPos
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   562
			 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   563
			 * @type Int
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   564
			 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   565
			this._yPos = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   566
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   567
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   568
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   569
		 * Displays the image; puts the URL into the DOM.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   570
		 * This method shouldn't be called externally, but is not private in the rare event that it needs to be called immediately.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   571
		 * @method fetch
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   572
		 * @param {Number} withinY  The pixel distance from the top of the page, for which if the image lies within, it will be fetched. Undefined indicates that no check should be made, and the image should always be fetched
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   573
		 * @return {Boolean}  Whether the image has been fetched (either during this execution or previously)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   574
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   575
		fetch: function(withinY) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   576
			if (this._fetched) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   577
				return true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   578
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   579
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   580
			var el = this._getImgEl(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   581
			    yPos;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   582
			if (! el) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   583
				return false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   584
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   585
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   586
			if (withinY) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   587
				// need a distance check
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   588
				yPos = this._getYPos();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   589
				if (! yPos || yPos > withinY) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   590
					return false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   591
				}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   592
				Y.log('Image with id "' + this.get('domId') + '" is within distance of the fold. Fetching image.', 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   593
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   594
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   595
			Y.log('Fetching image with id "' + this.get('domId') + '".', 'info', 'imageloader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   596
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   597
			// apply url
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   598
			if (this.get('bgUrl') !== null) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   599
				// bg url
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   600
				if (this.get('isPng') && Y.UA.ie && Y.UA.ie <= 6) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   601
					// png for which to apply AlphaImageLoader
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   602
					el.setStyle('filter', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + this.get('bgUrl') + '", sizingMethod="' + this.get('sizingMethod') + '", enabled="' + this.get('enabled') + '")');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   603
				}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   604
				else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   605
					// regular bg image
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   606
					el.setStyle('backgroundImage', "url('" + this.get('bgUrl') + "')");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   607
				}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   608
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   609
			else if (this.get('srcUrl') !== null) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   610
				// regular src image
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   611
				el.setAttribute('src', this.get('srcUrl'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   612
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   613
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   614
			// apply attributes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   615
			if (this.get('setVisible')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   616
				el.setStyle('visibility', 'visible');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   617
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   618
			if (this.get('width')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   619
				el.setAttribute('width', this.get('width'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   620
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   621
			if (this.get('height')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   622
				el.setAttribute('height', this.get('height'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   623
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   624
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   625
			this._fetched = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   626
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   627
			return true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   628
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   629
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   630
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   631
		 * Gets the object (as a <code>Y.Node</code>) of the DOM element indicated by "<code>domId</code>".
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   632
		 * @method _getImgEl
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   633
		 * @return {Object} DOM element of the image as a <code>Y.Node</code> object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   634
		 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   635
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   636
		_getImgEl: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   637
			if (this._imgEl === null) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   638
				this._imgEl = Y.one('#' + this.get('domId'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   639
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   640
			return this._imgEl;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   641
		},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   642
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   643
		/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   644
		 * Gets the Y position of the node in page coordinates.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   645
		 * Expects that the page-coordinate position of the image won't change.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   646
		 * @method _getYPos
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   647
		 * @return {Object} The Y position of the image
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   648
		 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   649
		 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   650
		_getYPos: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   651
			if (this._yPos === null) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   652
				this._yPos = this._getImgEl().getY();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   653
			}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   654
			return this._yPos;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   655
		}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   656
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   657
	};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   658
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   659
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   660
	Y.extend(Y.ImgLoadImgObj, Y.Base, imgProto);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   661
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   662
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   663
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   664
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   665
}, '@VERSION@', {"requires": ["base-base", "node-style", "node-screen"]});