YAHOO.util.Attribute = function(hash, owner) {if (owner) { this.owner = owner;this.configure(hash, true);}};YAHOO.util.Attribute.prototype = {name: undefined,value: null,owner: null,readOnly: false,writeOnce: false,_initialConfig: null,_written: false,method: null,validator: null,getValue: function() {return this.value;},setValue: function(value, silent) {var beforeRetVal;var owner = this.owner;var name = this.name;var event = {type: name, prevValue: this.getValue(),newValue: value};if (this.readOnly || ( this.writeOnce && this._written) ) {return false;}if (this.validator && !this.validator.call(owner, value) ) {return false;}if (!silent) {beforeRetVal = owner.fireBeforeChangeEvent(event);if (beforeRetVal === false) {return false;}}if (this.method) {this.method.call(owner, value);}this.value = value;this._written = true;event.type = name;if (!silent) {this.owner.fireChangeEvent(event);}return true;},configure: function(map, init) {map = map || {};this._written = false;this._initialConfig = this._initialConfig || {};for (var key in map) {if ( key && YAHOO.lang.hasOwnProperty(map, key) ) {this[key] = map[key];if (init) {this._initialConfig[key] = map[key];}}}},resetValue: function() {return this.setValue(this._initialConfig.value);},resetConfig: function() {this.configure(this._initialConfig);},refresh: function(silent) {this.setValue(this.value, silent);}};(function() {var Lang = YAHOO.util.Lang;YAHOO.util.AttributeProvider = function() {};YAHOO.util.AttributeProvider.prototype = {_configs: null,get: function(key){this._configs = this._configs || {};var config = this._configs[key];if (!config) {return undefined;}return config.value;},set: function(key, value, silent){this._configs = this._configs || {};var config = this._configs[key];if (!config) {return false;}return config.setValue(value, silent);},getAttributeKeys: function(){this._configs = this._configs;var keys = [];var config;for (var key in this._configs) {config = this._configs[key];if ( Lang.hasOwnProperty(this._configs, key) && !Lang.isUndefined(config) ) {keys[keys.length] = key;}}return keys;},setAttributes: function(map, silent){for (var key in map) {if ( Lang.hasOwnProperty(map, key) ) {this.set(key, map[key], silent);}}},resetValue: function(key, silent){this._configs = this._configs || {};if (this._configs[key]) {this.set(key, this._configs[key]._initialConfig.value, silent);return true;}return false;},refresh: function(key, silent){this._configs = this._configs;key = ( ( Lang.isString(key) ) ? [key] : key ) || this.getAttributeKeys();for (var i = 0, len = key.length; i < len; ++i) { if (this._configs[key[i]] && ! Lang.isUndefined(this._configs[key[i]].value) &&! Lang.isNull(this._configs[key[i]].value) ) {this._configs[key[i]].refresh(silent);}}},register: function(key, map) {this.setAttributeConfig(key, map);},getAttributeConfig: function(key) {this._configs = this._configs || {};var config = this._configs[key] || {};var map = {};for (key in config) {if ( Lang.hasOwnProperty(config, key) ) {map[key] = config[key];}}return map;},setAttributeConfig: function(key, map, init) {this._configs = this._configs || {};map = map || {};if (!this._configs[key]) {map.name = key;this._configs[key] = this.createAttribute(map);} else {this._configs[key].configure(map, init);}},configureAttribute: function(key, map, init) {this.setAttributeConfig(key, map, init);},resetAttributeConfig: function(key){this._configs = this._configs || {};this._configs[key].resetConfig();},subscribe: function(type, callback) {this._events = this._events || {};if ( !(type in this._events) ) {this._events[type] = this.createEvent(type);}YAHOO.util.EventProvider.prototype.subscribe.apply(this, arguments);},on: function() {this.subscribe.apply(this, arguments);},addListener: function() {this.subscribe.apply(this, arguments);},fireBeforeChangeEvent: function(e) {var type = 'before';type += e.type.charAt(0).toUpperCase() + e.type.substr(1) + 'Change';e.type = type;return this.fireEvent(e.type, e);},fireChangeEvent: function(e) {e.type += 'Change';return this.fireEvent(e.type, e);},createAttribute: function(map) {return new YAHOO.util.Attribute(map, this);}};YAHOO.augment(YAHOO.util.AttributeProvider, YAHOO.util.EventProvider);})();(function() {var Dom = YAHOO.util.Dom,AttributeProvider = YAHOO.util.AttributeProvider;YAHOO.util.Element = function(el, map) {if (arguments.length) {this.init(el, map);}};YAHOO.util.Element.prototype = {DOM_EVENTS: null,appendChild: function(child) {child = child.get ? child.get('element') : child;this.get('element').appendChild(child);},getElementsByTagName: function(tag) {return this.get('element').getElementsByTagName(tag);},hasChildNodes: function() {return this.get('element').hasChildNodes();},insertBefore: function(element, before) {element = element.get ? element.get('element') : element;before = (before && before.get) ? before.get('element') : before;this.get('element').insertBefore(element, before);},removeChild: function(child) {child = child.get ? child.get('element') : child;this.get('element').removeChild(child);return true;},replaceChild: function(newNode, oldNode) {newNode = newNode.get ? newNode.get('element') : newNode;oldNode = oldNode.get ? oldNode.get('element') : oldNode;return this.get('element').replaceChild(newNode, oldNode);},initAttributes: function(map) {},addListener: function(type, fn, obj, scope) {var el = this.get('element');scope = scope || this;el = this.get('id') || el;var self = this; if (!this._events[type]) {if ( this.DOM_EVENTS[type] ) {YAHOO.util.Event.addListener(el, type, function(e) {if (e.srcElement && !e.target) {e.target = e.srcElement;}self.fireEvent(type, e);}, obj, scope);}this.createEvent(type, this);}YAHOO.util.EventProvider.prototype.subscribe.apply(this, arguments);},on: function() { this.addListener.apply(this, arguments); },subscribe: function() { this.addListener.apply(this, arguments); },removeListener: function(type, fn) {this.unsubscribe.apply(this, arguments);},addClass: function(className) {Dom.addClass(this.get('element'), className);},getElementsByClassName: function(className, tag) {return Dom.getElementsByClassName(className, tag,this.get('element') );},hasClass: function(className) {return Dom.hasClass(this.get('element'), className); },removeClass: function(className) {return Dom.removeClass(this.get('element'), className);},replaceClass: function(oldClassName, newClassName) {return Dom.replaceClass(this.get('element'), oldClassName, newClassName);},setStyle: function(property, value) {var el = this.get('element');if (!el) {return this._queue[this._queue.length] = ['setStyle', arguments];}return Dom.setStyle(el,property, value);},getStyle: function(property) {return Dom.getStyle(this.get('element'),property);},fireQueue: function() {var queue = this._queue;for (var i = 0, len = queue.length; i < len; ++i) {this[queue[i][0]].apply(this, queue[i][1]);}},appendTo: function(parent, before) {parent = (parent.get) ?parent.get('element') : Dom.get(parent);this.fireEvent('beforeAppendTo', {type: 'beforeAppendTo',target: parent});before = (before && before.get) ? before.get('element') : Dom.get(before);var element = this.get('element');if (!element) {return false;}if (!parent) {return false;}if (element.parent != parent) {if (before) {parent.insertBefore(element, before);} else {parent.appendChild(element);}}this.fireEvent('appendTo', {type: 'appendTo',target: parent});},get: function(key) {var configs = this._configs || {};var el = configs.element;if (el && !configs[key] && !YAHOO.lang.isUndefined(el.value[key]) ) {return el.value[key];}return AttributeProvider.prototype.get.call(this, key);},setAttributes: function(map, silent){var el = this.get('element');for (var key in map) {if ( !this._configs[key] && !YAHOO.lang.isUndefined(el[key]) ) {this.setAttributeConfig(key);}}for (var i = 0, len = this._configOrder.length; i < len; ++i) {if (map[this._configOrder[i]]) {this.set(this._configOrder[i], map[this._configOrder[i]], silent);}}},set: function(key, value, silent) {var el = this.get('element');if (!el) {this._queue[this._queue.length] = ['set', arguments];if (this._configs[key]) {this._configs[key].value = value;}return;}if ( !this._configs[key] && !YAHOO.lang.isUndefined(el[key]) ) {_registerHTMLAttr.call(this, key);}return AttributeProvider.prototype.set.apply(this, arguments);},setAttributeConfig: function(key, map, init) {var el = this.get('element');if (el && !this._configs[key] && !YAHOO.lang.isUndefined(el[key]) ) {_registerHTMLAttr.call(this, key, map);} else {AttributeProvider.prototype.setAttributeConfig.apply(this, arguments);}this._configOrder.push(key);},getAttributeKeys: function() {var el = this.get('element');var keys = AttributeProvider.prototype.getAttributeKeys.call(this);for (var key in el) {if (!this._configs[key]) {keys[key] = keys[key] || el[key];}}return keys;},createEvent: function(type, scope) {this._events[type] = true;AttributeProvider.prototype.createEvent.apply(this, arguments);},init: function(el, attr) {_initElement.apply(this, arguments); }};var _initElement = function(el, attr) {this._queue = this._queue || [];this._events = this._events || {};this._configs = this._configs || {};this._configOrder = []; attr = attr || {};attr.element = attr.element || el || null;this.DOM_EVENTS = {'click': true,'dblclick': true,'keydown': true,'keypress': true,'keyup': true,'mousedown': true,'mousemove': true,'mouseout': true, 'mouseover': true, 'mouseup': true,'focus': true,'blur': true,'submit': true};var isReady = false;if (YAHOO.lang.isString(el) ) {_registerHTMLAttr.call(this, 'id', { value: attr.element });}if (Dom.get(el)) {isReady = true;_initHTMLElement.call(this, attr);_initContent.call(this, attr);} YAHOO.util.Event.onAvailable(attr.element, function() {if (!isReady) {_initHTMLElement.call(this, attr);}this.fireEvent('available', { type: 'available', target: attr.element });}, this, true);YAHOO.util.Event.onContentReady(attr.element, function() {if (!isReady) {_initContent.call(this, attr);}this.fireEvent('contentReady', { type: 'contentReady', target: attr.element });}, this, true);};var _initHTMLElement = function(attr) {this.setAttributeConfig('element', {value: Dom.get(attr.element),readOnly: true });};var _initContent = function(attr) {this.initAttributes(attr);this.setAttributes(attr, true);this.fireQueue();};var _registerHTMLAttr = function(key, map) {var el = this.get('element');map = map || {};map.name = key;map.method = map.method || function(value) {el[key] = value;};map.value = map.value || el[key];this._configs[key] = new YAHOO.util.Attribute(map, this);};YAHOO.augment(YAHOO.util.Element, AttributeProvider);})();YAHOO.register("element", YAHOO.util.Element, {version: "2.3.1", build: "541"});
