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