annotate rhodecode/public/js/yui/imageloader/imageloader.js @ 1073:289ff43cc190 beta

update YUI dev libs to latest version
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 20 Feb 2011 20:58:07 +0100
parents 1e757ac98988
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1 /*
1073
289ff43cc190 update YUI dev libs to latest version
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
2 Copyright (c) 2010, Yahoo! Inc. All rights reserved.
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3 Code licensed under the BSD License:
1073
289ff43cc190 update YUI dev libs to latest version
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
4 http://developer.yahoo.com/yui/license.html
289ff43cc190 update YUI dev libs to latest version
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
5 version: 2.8.2r1
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8 * The ImageLoader Utility is a framework to dynamically load images according to certain triggers,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9 * enabling faster load times and a more responsive UI.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
10 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
11 * @module imageloader
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
12 * @namespace YAHOO.util
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
13 * @requires yahoo, dom, event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
14 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
15
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
16 if (typeof(YAHOO.util.ImageLoader) == 'undefined') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
17 YAHOO.util.ImageLoader = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
18 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
19
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
20 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
21 * 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.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
22 * @class YAHOO.util.ImageLoader.group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
23 * @requires YAHOO.util.Dom
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
24 * @requires YAHOO.util.Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
25 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
26 * @param {String|HTMLElement} trigEl The HTML element id or reference to assign the trigger event to. Can be null for no trigger
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
27 * @param {String} trigAct The type of event to assign to trigEl. Can be null for no trigger
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
28 * @param {Number} timeout Timeout (time limit) length, in seconds. Can be undefined, or <= 0, for no time limit
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
29 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
30 YAHOO.util.ImageLoader.group = function(trigEl, trigAct, timeout) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
31 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
32 * Name for the group. Only used to identify the group in logging statements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
33 * @property name
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
34 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
35 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
36 this.name = 'unnamed';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
37
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
38 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
39 * Collection of images registered with this group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
40 * @property _imgObjs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
41 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
42 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
43 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
44 this._imgObjs = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
45
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
46 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
47 * Timeout (time limit) length, in seconds
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
48 * @property timeoutLen
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
49 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
50 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
51 this.timeoutLen = timeout;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
52
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
53 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
54 * Timeout object to keep a handle on the time limit
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
55 * @property _timeout
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
56 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
57 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
58 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
59 this._timeout = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
60
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
61 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
62 * Collection of triggers for this group.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
63 * Keeps track of each trigger's element, event, and event-listener-callback "fetch" function
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
64 * @property _triggers
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
65 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
66 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
67 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
68 this._triggers = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
69
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
70 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
71 * Collection of custom-event triggers for this group.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
72 * Keeps track of each trigger's event object and event-listener-callback "fetch" function
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
73 * @property _customTriggers
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
74 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
75 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
76 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
77 this._customTriggers = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
78
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
79 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
80 * Flag to check if images are above the fold. If foldConditional is true, the group will check each of its image locations at page load. If any part of the image is within the client viewport, the image is displayed immediately
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
81 * @property foldConditional
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
82 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
83 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
84 this.foldConditional = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
85
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
86 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
87 * Class name that will identify images belonging to the group. This class name will be removed from each element in order to fetch images.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
88 * This class should have, in its CSS style definition, "background:none !important;"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
89 * @property className
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
90 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
91 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
92 this.className = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
93
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
94 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
95 * HTML elements having the class name that is associated with this group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
96 * Elements are stored during the _foldCheck function and reused later during the fetch function. Gives a slight performance improvement when className and foldConditional are both used
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
97 * @property _classImageEls
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
98 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
99 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
100 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
101 this._classImageEls = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
102
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
103 // add a listener to set the time limit in the onload
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
104 YAHOO.util.Event.addListener(window, 'load', this._onloadTasks, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
105 // add the trigger
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
106 this.addTrigger(trigEl, trigAct);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
107
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
108 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
109
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
110 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
111 * Adds a trigger to the group. Call this with the same style as YAHOO.util.Event.addListener
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
112 * @method addTrigger
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
113 * @param {String|HTMLElement} trigEl The HTML element id or reference to assign the trigger event to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
114 * @param {String} trigAct The type of event to assign to trigEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
115 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
116 YAHOO.util.ImageLoader.group.prototype.addTrigger = function(trigEl, trigAct) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
117 if (! trigEl || ! trigAct) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
118 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
119 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
120 /* Need to wrap the fetch function. Event Util can't distinguish prototyped functions of different instantiations
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
121 * Leads to this scenario: groupA and groupZ both have window-scroll triggers. groupZ also has a 2-sec timeout (groupA has no timeout).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
122 * groupZ's timeout fires; we remove the triggers. The removeListener call finds the first window-scroll event with Y.u.IL.p.fetch, which is groupA's.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
123 * groupA's trigger is removed and never fires, leaving images unfetched
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
124 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
125 var wrappedFetch = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
126 this.fetch();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
127 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
128 this._triggers.push([trigEl, trigAct, wrappedFetch]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
129 YAHOO.util.Event.addListener(trigEl, trigAct, wrappedFetch, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
130 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
131
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
132 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
133 * Adds a custom event trigger to the group.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
134 * @method addCustomTrigger
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
135 * @param {Object} event A YAHOO.util.CustomEvent object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
136 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
137 YAHOO.util.ImageLoader.group.prototype.addCustomTrigger = function(event) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
138 // make sure we're dealing with a CustomEvent object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
139 if (! event || ! event instanceof YAHOO.util.CustomEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
140 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
141 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
142
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
143 // see comment in addTrigger()
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
144 var wrappedFetch = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
145 this.fetch();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
146 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
147 this._customTriggers.push([event, wrappedFetch]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
148 event.subscribe(wrappedFetch, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
149 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
150
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
151 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
152 * Setup to do in the window's onload
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
153 * Initiates time limit for group; executes the fold check for the images
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
154 * @method _onloadTasks
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
155 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
156 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
157 YAHOO.util.ImageLoader.group.prototype._onloadTasks = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
158 if (this.timeoutLen && typeof(this.timeoutLen) == 'number' && this.timeoutLen > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
159 this._timeout = setTimeout(this._getFetchTimeout(), this.timeoutLen * 1000);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
160 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
161
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
162 if (this.foldConditional) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
163 this._foldCheck();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
164 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
165 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
166
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
167 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
168 * Returns the group's fetch method, with the proper closure, for use with setTimeout
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
169 * @method _getFetchTimeout
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
170 * @return {Function} group's fetch method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
171 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
172 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
173 YAHOO.util.ImageLoader.group.prototype._getFetchTimeout = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
174 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
175 return function() { self.fetch(); };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
176 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
177
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
178 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
179 * Registers a background image with the group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
180 * @method registerBgImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
181 * @param {String} domId HTML DOM id of the image element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
182 * @param {String} url URL for the image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
183 * @return {Object} bgImgObj that was registered, for modifying any attributes in the object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
184 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
185 YAHOO.util.ImageLoader.group.prototype.registerBgImage = function(domId, url) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
186 this._imgObjs[domId] = new YAHOO.util.ImageLoader.bgImgObj(domId, url);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
187 return this._imgObjs[domId];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
188 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
189 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
190 * Registers a src image with the group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
191 * @method registerSrcImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
192 * @param {String} domId HTML DOM id of the image element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
193 * @param {String} url URL for the image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
194 * @param {Int} width pixel width of the image - defaults to image's natural size
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
195 * @param {Int} height pixel height of the image - defaults to image's natural size
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
196 * @return {Object} srcImgObj that was registered, for modifying any attributes in the object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
197 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
198 YAHOO.util.ImageLoader.group.prototype.registerSrcImage = function(domId, url, width, height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
199 this._imgObjs[domId] = new YAHOO.util.ImageLoader.srcImgObj(domId, url, width, height);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
200 return this._imgObjs[domId];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
201 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
202 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
203 * Registers an alpha-channel-type png background image with the group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
204 * @method registerPngBgImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
205 * @param {String} domId HTML DOM id of the image element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
206 * @param {String} url URL for the image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
207 * @param {Object} ailProps The AlphaImageLoader properties to be set for the image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
208 * Valid properties are 'sizingMethod' and 'enabled'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
209 * @return {Object} pngBgImgObj that was registered, for modifying any attributes in the object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
210 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
211 YAHOO.util.ImageLoader.group.prototype.registerPngBgImage = function(domId, url, ailProps) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
212 this._imgObjs[domId] = new YAHOO.util.ImageLoader.pngBgImgObj(domId, url, ailProps);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
213 return this._imgObjs[domId];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
214 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
215
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
216 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
217 * Displays the images in the group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
218 * @method fetch
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
219 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
220 YAHOO.util.ImageLoader.group.prototype.fetch = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
221
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
222 clearTimeout(this._timeout);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
223 // remove all listeners
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
224 for (var i=0, len = this._triggers.length; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
225 YAHOO.util.Event.removeListener(this._triggers[i][0], this._triggers[i][1], this._triggers[i][2]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
226 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
227 // remove custom event subscriptions
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
228 for (var i=0, len = this._customTriggers.length; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
229 this._customTriggers[i][0].unsubscribe(this._customTriggers[i][1], this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
230 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
231
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
232 // fetch whatever we need to by className
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
233 this._fetchByClass();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
234
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
235 // fetch registered images
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
236 for (var id in this._imgObjs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
237 if (YAHOO.lang.hasOwnProperty(this._imgObjs, id)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
238 this._imgObjs[id].fetch();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
239 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
240 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
241 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
242
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
243 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
244 * Checks the position of each image in the group. If any part of the image is within the client viewport, shows the image immediately.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
245 * @method _foldCheck
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
246 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
247 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
248 YAHOO.util.ImageLoader.group.prototype._foldCheck = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
249 var scrollTop = (document.compatMode != 'CSS1Compat') ? document.body.scrollTop : document.documentElement.scrollTop;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
250 var viewHeight = YAHOO.util.Dom.getViewportHeight();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
251 var hLimit = scrollTop + viewHeight;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
252 var scrollLeft = (document.compatMode != 'CSS1Compat') ? document.body.scrollLeft : document.documentElement.scrollLeft;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
253 var viewWidth = YAHOO.util.Dom.getViewportWidth();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
254 var wLimit = scrollLeft + viewWidth;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
255 for (var id in this._imgObjs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
256 if (YAHOO.lang.hasOwnProperty(this._imgObjs, id)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
257 var elPos = YAHOO.util.Dom.getXY(this._imgObjs[id].domId);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
258 if (elPos[1] < hLimit && elPos[0] < wLimit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
259 this._imgObjs[id].fetch();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
260 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
261 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
262 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
263 // and by class
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
264 if (this.className) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
265 this._classImageEls = YAHOO.util.Dom.getElementsByClassName(this.className);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
266 for (var i=0, len = this._classImageEls.length; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
267 var elPos = YAHOO.util.Dom.getXY(this._classImageEls[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
268 if (elPos[1] < hLimit && elPos[0] < wLimit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
269 YAHOO.util.Dom.removeClass(this._classImageEls[i], this.className);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
270 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
271 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
272 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
273 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
274
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
275 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
276 * 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
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
277 * @method _fetchByClass
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
278 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
279 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
280 YAHOO.util.ImageLoader.group.prototype._fetchByClass = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
281 if (! this.className) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
282 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
283 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
284
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
285 // this._classImageEls may have been set during _foldCheck
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
286 if (this._classImageEls === null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
287 this._classImageEls = YAHOO.util.Dom.getElementsByClassName(this.className);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
288 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
289 YAHOO.util.Dom.removeClass(this._classImageEls, this.className);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
290 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
291
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
292
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
293 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
294 * Base class for image objects to be registered with the groups
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
295 * @class YAHOO.util.ImageLoader.imgObj
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
296 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
297 * @param {String} domId HTML DOM id of the image element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
298 * @param {String} url URL for the image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
299 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
300 YAHOO.util.ImageLoader.imgObj = function(domId, url) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
301 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
302 * HTML DOM id of the image element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
303 * @property domId
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
304 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
305 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
306 this.domId = domId;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
307
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
308 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
309 * URL for the image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
310 * @property url
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
311 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
312 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
313 this.url = url;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
314
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
315 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
316 * Pixel width of the image. Will be set as a "width" attribute after the image is fetched.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
317 * Detaults to the natural width of the image.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
318 * Only appropriate with src images
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
319 * @property width
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
320 * @type Int
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
321 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
322 this.width = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
323
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
324 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
325 * Pixel height of the image. Will be set as a "height" attribute after the image is fetched.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
326 * Detaults to the natural height of the image.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
327 * Only appropriate with src images
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
328 * @property height
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
329 * @type Int
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
330 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
331 this.height = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
332
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
333 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
334 * Whether the style.visibility should be set to "visible" after the image is fetched.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
335 * Used when setting src images as visibility:hidden prior to image fetching
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
336 * @property setVisible
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
337 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
338 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
339 this.setVisible = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
340
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
341 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
342 * Whether the image has already been fetched. In the case of a foldCondional group, keeps track for when the trigger is fired so images aren't fetched twice
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
343 * @property _fetched
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
344 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
345 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
346 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
347 this._fetched = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
348 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
349
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
350 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
351 * Displays the image; puts the URL into the DOM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
352 * @method fetch
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
353 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
354 YAHOO.util.ImageLoader.imgObj.prototype.fetch = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
355 if (this._fetched) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
356 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
357 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
358 var el = document.getElementById(this.domId);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
359 if (! el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
360 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
361 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
362 this._applyUrl(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
363
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
364 if (this.setVisible) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
365 el.style.visibility = 'visible';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
366 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
367 if (this.width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
368 el.width = this.width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
369 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
370 if (this.height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
371 el.height = this.height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
372 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
373 this._fetched = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
374 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
375
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
376 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
377 * Inserts the image URL into the DOM so that the image is displayed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
378 * Must be overridden by child class
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
379 * @method _applyUrl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
380 * @param {Object} el HTML DOM element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
381 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
382 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
383 YAHOO.util.ImageLoader.imgObj.prototype._applyUrl = function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
384 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
385
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
386 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
387 * Background image object. A background image is one whose URL is specified by "background-image" in the element's style
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
388 * @class YAHOO.util.ImageLoader.bgImgObj
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
389 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
390 * @extends YAHOO.util.ImageLoader.imgObj
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
391 * @param {String} domId HTML DOM id of the image element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
392 * @param {String} url URL for the image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
393 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
394 YAHOO.util.ImageLoader.bgImgObj = function(domId, url) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
395 YAHOO.util.ImageLoader.bgImgObj.superclass.constructor.call(this, domId, url);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
396 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
397
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
398 YAHOO.lang.extend(YAHOO.util.ImageLoader.bgImgObj, YAHOO.util.ImageLoader.imgObj);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
399
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
400 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
401 * Inserts the image URL into the DOM so that the image is displayed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
402 * Sets style.backgroundImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
403 * @method _applyUrl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
404 * @param {Object} el HTML DOM element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
405 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
406 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
407 YAHOO.util.ImageLoader.bgImgObj.prototype._applyUrl = function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
408 el.style.backgroundImage = "url('" + this.url + "')";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
409 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
410
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
411 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
412 * Source image object. A source image is one whose URL is specified by a src attribute in the DOM element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
413 * @class YAHOO.util.ImageLoader.srcImgObj
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
414 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
415 * @extends YAHOO.util.ImageLoader.imgObj
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
416 * @param {String} domId HTML DOM id of the image element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
417 * @param {String} url URL for the image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
418 * @param {Int} width pixel width of the image - defaults to image's natural size
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
419 * @param {Int} height pixel height of the image - defaults to image's natural size
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
420 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
421 YAHOO.util.ImageLoader.srcImgObj = function(domId, url, width, height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
422 YAHOO.util.ImageLoader.srcImgObj.superclass.constructor.call(this, domId, url);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
423 this.width = width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
424 this.height = height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
425 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
426
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
427 YAHOO.lang.extend(YAHOO.util.ImageLoader.srcImgObj, YAHOO.util.ImageLoader.imgObj);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
428
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
429 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
430 * Inserts the image URL into the DOM so that the image is displayed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
431 * Sets src
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
432 * @method _applyUrl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
433 * @param {Object} el HTML DOM element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
434 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
435 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
436 YAHOO.util.ImageLoader.srcImgObj.prototype._applyUrl = function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
437 el.src = this.url;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
438 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
439
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
440 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
441 * PNG background image object. A PNG background image is one whose URL is specified through AlphaImageLoader or by "background-image" in the element's style
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
442 * @class YAHOO.util.ImageLoader.pngBgImgObj
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
443 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
444 * @extends YAHOO.util.ImageLoader.imgObj
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
445 * @param {String} domId HTML DOM id of the image element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
446 * @param {String} url URL for the image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
447 * @param {Object} ailProps The AlphaImageLoader properties to be set for the image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
448 * Valid properties are 'sizingMethod' and 'enabled'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
449 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
450 YAHOO.util.ImageLoader.pngBgImgObj = function(domId, url, ailProps) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
451 YAHOO.util.ImageLoader.pngBgImgObj.superclass.constructor.call(this, domId, url);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
452
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
453 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
454 * AlphaImageLoader properties to be set for the image.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
455 * Valid properties are "sizingMethod" and "enabled".
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
456 * @property props
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
457 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
458 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
459 this.props = ailProps || {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
460 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
461
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
462 YAHOO.lang.extend(YAHOO.util.ImageLoader.pngBgImgObj, YAHOO.util.ImageLoader.imgObj);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
463
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
464 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
465 * Inserts the image URL into the DOM so that the image is displayed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
466 * If the browser is determined to be IE6 (or older), sets the AlphaImageLoader src; otherwise sets style.backgroundImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
467 * @method _applyUrl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
468 * @param {Object} el HTML DOM element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
469 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
470 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
471 YAHOO.util.ImageLoader.pngBgImgObj.prototype._applyUrl = function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
472 if (YAHOO.env.ua.ie && YAHOO.env.ua.ie <= 6) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
473 var sizingMethod = (YAHOO.lang.isUndefined(this.props.sizingMethod)) ? 'scale' : this.props.sizingMethod;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
474 var enabled = (YAHOO.lang.isUndefined(this.props.enabled)) ? 'true' : this.props.enabled;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
475 el.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + this.url + '", sizingMethod="' + sizingMethod + '", enabled="' + enabled + '")';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
476 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
477 else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
478 el.style.backgroundImage = "url('" + this.url + "')";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
479 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
480 };
1073
289ff43cc190 update YUI dev libs to latest version
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
481 YAHOO.register("imageloader", YAHOO.util.ImageLoader, {version: "2.8.2r1", build: "7"});