//中文
if (typeof YAHOO == "undefined") { var YAHOO = {}; }
YAHOO.namespace = function() {
var a = arguments, o = null, i, j, d; for (i = 0; i < a.length; i = i + 1) { d = a[i].split("."); o = YAHOO; for (j = (d[0] == "YAHOO") ? 1 : 0; j < d.length; j = j + 1) { o[d[j]] = o[d[j]] || {}; o = o[d[j]]; } }
return o;
}; YAHOO.log = function(msg, cat, src) { var l = YAHOO.widget.Logger; if (l && l.log) { return l.log(msg, cat, src); } else { return false; } }; YAHOO.init = function() {
this.namespace("util", "widget", "example"); if (typeof YAHOO_config != "undefined") {
var l = YAHOO_config.listener, ls = YAHOO.env.listeners, unique = true, i; if (l) {
for (i = 0; i < ls.length; i = i + 1) { if (ls[i] == l) { unique = false; break; } }
if (unique) { ls.push(l); } 
} 
} 
}; YAHOO.register = function(name, mainClass, data) {
var mods = YAHOO.env.modules; if (!mods[name]) { mods[name] = { versions: [], builds: [] }; }
var m = mods[name], v = data.version, b = data.build, ls = YAHOO.env.listeners; m.name = name; m.version = v; m.build = b; m.versions.push(v); m.builds.push(b); m.mainClass = mainClass; for (var i = 0; i < ls.length; i = i + 1) { ls[i](m); }
if (mainClass) { mainClass.VERSION = v; mainClass.BUILD = b; } else { YAHOO.log("mainClass is undefined for module " + name, "warn"); } 
}; YAHOO.env = YAHOO.env || { modules: [], listeners: [], getVersion: function(name) { return YAHOO.env.modules[name] || null; } }; YAHOO.lang = { isArray: function(obj) { if (obj && obj.constructor && obj.constructor.toString().indexOf('Array') > -1) { return true; } else { return YAHOO.lang.isObject(obj) && obj.constructor == Array; } }, isBoolean: function(obj) { return typeof obj == 'boolean'; }, isFunction: function(obj) { return typeof obj == 'function'; }, isNull: function(obj) { return obj === null; }, isNumber: function(obj) { return typeof obj == 'number' && isFinite(obj); }, isObject: function(obj) { return obj && (typeof obj == 'object' || YAHOO.lang.isFunction(obj)); }, isString: function(obj) { return typeof obj == 'string'; }, isUndefined: function(obj) { return typeof obj == 'undefined'; }, hasOwnProperty: function(obj, prop) {
if (Object.prototype.hasOwnProperty) { return obj.hasOwnProperty(prop); }
return !YAHOO.lang.isUndefined(obj[prop]) && obj.constructor.prototype[prop] !== obj[prop];
}, extend: function(subc, superc, overrides) {
if (!superc || !subc) { throw new Error("YAHOO.lang.extend failed, please check that " + "all dependencies are included."); }
var F = function() { }; F.prototype = superc.prototype; subc.prototype = new F(); subc.prototype.constructor = subc; subc.superclass = superc.prototype; if (superc.prototype.constructor == Object.prototype.constructor) { superc.prototype.constructor = superc; }
if (overrides) { for (var i in overrides) { subc.prototype[i] = overrides[i]; } } 
}, augment: function(r, s) {
if (!s || !r) { throw new Error("YAHOO.lang.augment failed, please check that " + "all dependencies are included."); }
var rp = r.prototype, sp = s.prototype, a = arguments, i, p; if (a[2]) { for (i = 2; i < a.length; i = i + 1) { rp[a[i]] = sp[a[i]]; } } else { for (p in sp) { if (!rp[p]) { rp[p] = sp[p]; } } } 
} 
}; YAHOO.init(); YAHOO.util.Lang = YAHOO.lang; YAHOO.augment = YAHOO.lang.augment; YAHOO.extend = YAHOO.lang.extend; YAHOO.register("yahoo", YAHOO, { version: "2.2.2", build: "204" });
(function() {
var Y = YAHOO.util, getStyle, setStyle, id_counter = 0, propertyCache = {}; var ua = navigator.userAgent.toLowerCase(), isOpera = (ua.indexOf('opera') > -1), isSafari = (ua.indexOf('safari') > -1), isGecko = (!isOpera && !isSafari && ua.indexOf('gecko') > -1), isIE = (!isOpera && ua.indexOf('msie') > -1); var patterns = { HYPHEN: /(-[a-z])/i, ROOT_TAG: /body|html/i }; var toCamel = function(property) {
if (!patterns.HYPHEN.test(property)) { return property; }
if (propertyCache[property]) { return propertyCache[property]; }
var converted = property; while (patterns.HYPHEN.exec(converted)) { converted = converted.replace(RegExp.$1, RegExp.$1.substr(1).toUpperCase()); }
propertyCache[property] = converted; return converted;
}; if (document.defaultView && document.defaultView.getComputedStyle) {
getStyle = function(el, property) {
var value = null; if (property == 'float') { property = 'cssFloat'; }
var computed = document.defaultView.getComputedStyle(el, ''); if (computed) { value = computed[toCamel(property)]; }
return el.style[property] || value;
};
} else if (document.documentElement.currentStyle && isIE) {
getStyle = function(el, property) {
switch (toCamel(property)) {
case 'opacity': var val = 100; try { val = el.filters['DXImageTransform.Microsoft.Alpha'].opacity; } catch (e) { try { val = el.filters('alpha').opacity; } catch (e) { } }
return val / 100; break; case 'float': property = 'styleFloat'; default: var value = el.currentStyle ? el.currentStyle[property] : null; return (el.style[property] || value);
} 
};
} else { getStyle = function(el, property) { return el.style[property]; }; }
if (isIE) {
setStyle = function(el, property, val) {
switch (property) {
case 'opacity': if (YAHOO.lang.isString(el.style.filter)) { el.style.filter = 'alpha(opacity=' + val * 100 + ')'; if (!el.currentStyle || !el.currentStyle.hasLayout) { el.style.zoom = 1; } }
break; case 'float': property = 'styleFloat'; default: el.style[property] = val;
} 
};
} else {
setStyle = function(el, property, val) {
if (property == 'float') { property = 'cssFloat'; }
el.style[property] = val;
};
}
YAHOO.util.Dom = { get: function(el) {
if (YAHOO.lang.isString(el)) { return document.getElementById(el); }
if (YAHOO.lang.isArray(el)) {
var c = []; for (var i = 0, len = el.length; i < len; ++i) { c[c.length] = Y.Dom.get(el[i]); }
return c;
}
if (el) { return el; }
return null;
}, getStyle: function(el, property) { property = toCamel(property); var f = function(element) { return getStyle(element, property); }; return Y.Dom.batch(el, f, Y.Dom, true); }, setStyle: function(el, property, val) { property = toCamel(property); var f = function(element) { setStyle(element, property, val); }; Y.Dom.batch(el, f, Y.Dom, true); }, getXY: function(el) {
var f = function(el) {
if ((el.parentNode === null || el.offsetParent === null || this.getStyle(el, 'display') == 'none') && el != document.body) { return false; }
var parentNode = null; var pos = []; var box; if (el.getBoundingClientRect) {
box = el.getBoundingClientRect(); var doc = document; if (!this.inDocument(el) && parent.document != document) { doc = parent.document; if (!this.isAncestor(doc.documentElement, el)) { return false; } }
var scrollTop = Math.max(doc.documentElement.scrollTop, doc.body.scrollTop); var scrollLeft = Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft); return [box.left + scrollLeft, box.top + scrollTop];
}
else {
pos = [el.offsetLeft, el.offsetTop]; parentNode = el.offsetParent; var hasAbs = this.getStyle(el, 'position') == 'absolute'; if (parentNode != el) {
while (parentNode) {
	pos[0] += parentNode.offsetLeft; pos[1] += parentNode.offsetTop; if (isSafari && !hasAbs && this.getStyle(parentNode, 'position') == 'absolute') { hasAbs = true; }
	parentNode = parentNode.offsetParent;
} 
}
if (isSafari && hasAbs) { pos[0] -= document.body.offsetLeft; pos[1] -= document.body.offsetTop; } 
}
parentNode = el.parentNode; while (parentNode.tagName && !patterns.ROOT_TAG.test(parentNode.tagName)) {
if (Y.Dom.getStyle(parentNode, 'display') != 'inline') { pos[0] -= parentNode.scrollLeft; pos[1] -= parentNode.scrollTop; }
parentNode = parentNode.parentNode;
}
return pos;
}; return Y.Dom.batch(el, f, Y.Dom, true);
}, getX: function(el) { var f = function(el) { return Y.Dom.getXY(el)[0]; }; return Y.Dom.batch(el, f, Y.Dom, true); }, getY: function(el) { var f = function(el) { return Y.Dom.getXY(el)[1]; }; return Y.Dom.batch(el, f, Y.Dom, true); }, setXY: function(el, pos, noRetry) {
var f = function(el) {
var style_pos = this.getStyle(el, 'position'); if (style_pos == 'static') { this.setStyle(el, 'position', 'relative'); style_pos = 'relative'; }
var pageXY = this.getXY(el); if (pageXY === false) { return false; }
var delta = [parseInt(this.getStyle(el, 'left'), 10), parseInt(this.getStyle(el, 'top'), 10)]; if (isNaN(delta[0])) { delta[0] = (style_pos == 'relative') ? 0 : el.offsetLeft; }
if (isNaN(delta[1])) { delta[1] = (style_pos == 'relative') ? 0 : el.offsetTop; }
if (pos[0] !== null) { el.style.left = pos[0] - pageXY[0] + delta[0] + 'px'; }
if (pos[1] !== null) { el.style.top = pos[1] - pageXY[1] + delta[1] + 'px'; }
if (!noRetry) { var newXY = this.getXY(el); if ((pos[0] !== null && newXY[0] != pos[0]) || (pos[1] !== null && newXY[1] != pos[1])) { this.setXY(el, pos, true); } } 
}; Y.Dom.batch(el, f, Y.Dom, true);
}, setX: function(el, x) { Y.Dom.setXY(el, [x, null]); }, setY: function(el, y) { Y.Dom.setXY(el, [null, y]); }, getRegion: function(el) { var f = function(el) { var region = new Y.Region.getRegion(el); return region; }; return Y.Dom.batch(el, f, Y.Dom, true); }, getClientWidth: function() { return Y.Dom.getViewportWidth(); }, getClientHeight: function() { return Y.Dom.getViewportHeight(); }, getElementsByClassName: function(className, tag, root) { var method = function(el) { return Y.Dom.hasClass(el, className); }; return Y.Dom.getElementsBy(method, tag, root); }, hasClass: function(el, className) { var re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)'); var f = function(el) { return re.test(el.className); }; return Y.Dom.batch(el, f, Y.Dom, true); }, addClass: function(el, className) {
var f = function(el) {
if (this.hasClass(el, className)) { return; }
el.className = [el.className, className].join(' ');
}; Y.Dom.batch(el, f, Y.Dom, true);
}, removeClass: function(el, className) {
var re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', 'g'); var f = function(el) {
if (!this.hasClass(el, className)) { return; }
var c = el.className; el.className = c.replace(re, ' '); if (this.hasClass(el, className)) { this.removeClass(el, className); } 
}; Y.Dom.batch(el, f, Y.Dom, true);
}, replaceClass: function(el, oldClassName, newClassName) {
if (oldClassName === newClassName) { return false; }
var re = new RegExp('(?:^|\\s+)' + oldClassName + '(?:\\s+|$)', 'g'); var f = function(el) {
if (!this.hasClass(el, oldClassName)) { this.addClass(el, newClassName); return; }
el.className = el.className.replace(re, ' ' + newClassName + ' '); if (this.hasClass(el, oldClassName)) { this.replaceClass(el, oldClassName, newClassName); } 
}; Y.Dom.batch(el, f, Y.Dom, true);
}, generateId: function(el, prefix) {
prefix = prefix || 'yui-gen'; el = el || {}; var f = function(el) {
if (el) { el = Y.Dom.get(el); } else { el = {}; }
if (!el.id) { el.id = prefix + id_counter++; }
return el.id;
}; return Y.Dom.batch(el, f, Y.Dom, true);
}, isAncestor: function(haystack, needle) {
haystack = Y.Dom.get(haystack); if (!haystack || !needle) { return false; }
var f = function(needle) {
if (haystack.contains && !isSafari) { return haystack.contains(needle); }
else if (haystack.compareDocumentPosition) { return !!(haystack.compareDocumentPosition(needle) & 16); }
else {
var parent = needle.parentNode; while (parent) {
if (parent == haystack) { return true; }
else if (!parent.tagName || parent.tagName.toUpperCase() == 'HTML') { return false; }
parent = parent.parentNode;
}
return false;
} 
}; return Y.Dom.batch(needle, f, Y.Dom, true);
}, inDocument: function(el) { var f = function(el) { return this.isAncestor(document.documentElement, el); }; return Y.Dom.batch(el, f, Y.Dom, true); }, getElementsBy: function(method, tag, root) {
tag = tag || '*'; var nodes = []; if (root) { root = Y.Dom.get(root); if (!root) { return nodes; } } else { root = document; }
var elements = root.getElementsByTagName(tag); if (!elements.length && (tag == '*' && root.all)) { elements = root.all; }
for (var i = 0, len = elements.length; i < len; ++i) { if (method(elements[i])) { nodes[nodes.length] = elements[i]; } }
return nodes;
}, batch: function(el, method, o, override) {
var id = el; el = Y.Dom.get(el); var scope = (override) ? o : window; if (!el || el.tagName || !el.length) {
if (!el) { return false; }
return method.call(scope, el, o);
}
var collection = []; for (var i = 0, len = el.length; i < len; ++i) {
if (!el[i]) { id = el[i]; }
collection[collection.length] = method.call(scope, el[i], o);
}
return collection;
}, getDocumentHeight: function() { var scrollHeight = (document.compatMode != 'CSS1Compat') ? document.body.scrollHeight : document.documentElement.scrollHeight; var h = Math.max(scrollHeight, Y.Dom.getViewportHeight()); return h; }, getDocumentWidth: function() { var scrollWidth = (document.compatMode != 'CSS1Compat') ? document.body.scrollWidth : document.documentElement.scrollWidth; var w = Math.max(scrollWidth, Y.Dom.getViewportWidth()); return w; }, getViewportHeight: function() {
var height = self.innerHeight; var mode = document.compatMode; if ((mode || isIE) && !isOpera) { height = (mode == 'CSS1Compat') ? document.documentElement.clientHeight : document.body.clientHeight; }
return height;
}, getViewportWidth: function() {
var width = self.innerWidth; var mode = document.compatMode; if (mode || isIE) { width = (mode == 'CSS1Compat') ? document.documentElement.clientWidth : document.body.clientWidth; }
return width;
} 
};
})(); YAHOO.util.Region = function(t, r, b, l) { this.top = t; this[1] = t; this.right = r; this.bottom = b; this.left = l; this[0] = l; }; YAHOO.util.Region.prototype.contains = function(region) { return (region.left >= this.left && region.right <= this.right && region.top >= this.top && region.bottom <= this.bottom); }; YAHOO.util.Region.prototype.getArea = function() { return ((this.bottom - this.top) * (this.right - this.left)); }; YAHOO.util.Region.prototype.intersect = function(region) { var t = Math.max(this.top, region.top); var r = Math.min(this.right, region.right); var b = Math.min(this.bottom, region.bottom); var l = Math.max(this.left, region.left); if (b >= t && r >= l) { return new YAHOO.util.Region(t, r, b, l); } else { return null; } }; YAHOO.util.Region.prototype.union = function(region) { var t = Math.min(this.top, region.top); var r = Math.max(this.right, region.right); var b = Math.max(this.bottom, region.bottom); var l = Math.min(this.left, region.left); return new YAHOO.util.Region(t, r, b, l); }; YAHOO.util.Region.prototype.toString = function() { return ("Region {" + "top: " + this.top + ", right: " + this.right + ", bottom: " + this.bottom + ", left: " + this.left + "}"); }; YAHOO.util.Region.getRegion = function(el) { var p = YAHOO.util.Dom.getXY(el); var t = p[1]; var r = p[0] + el.offsetWidth; var b = p[1] + el.offsetHeight; var l = p[0]; return new YAHOO.util.Region(t, r, b, l); }; YAHOO.util.Point = function(x, y) {
if (x instanceof Array) { y = x[1]; x = x[0]; }
this.x = this.right = this.left = this[0] = x; this.y = this.top = this.bottom = this[1] = y;
}; YAHOO.util.Point.prototype = new YAHOO.util.Region(); YAHOO.register("dom", YAHOO.util.Dom, { version: "2.2.2", build: "204" });
YAHOO.util.CustomEvent = function(type, oScope, silent, signature) {
this.type = type; this.scope = oScope || window; this.silent = silent; this.signature = signature || YAHOO.util.CustomEvent.LIST; this.subscribers = []; if (!this.silent) { }
var onsubscribeType = "_YUICEOnSubscribe"; if (type !== onsubscribeType) { this.subscribeEvent = new YAHOO.util.CustomEvent(onsubscribeType, this, true); } 
}; YAHOO.util.CustomEvent.LIST = 0; YAHOO.util.CustomEvent.FLAT = 1; YAHOO.util.CustomEvent.prototype = { subscribe: function(fn, obj, override) {
if (!fn) { throw new Error("Invalid callback for subscriber to '" + this.type + "'"); }
if (this.subscribeEvent) { this.subscribeEvent.fire(fn, obj, override); }
this.subscribers.push(new YAHOO.util.Subscriber(fn, obj, override));
}, unsubscribe: function(fn, obj) {
if (!fn) { return this.unsubscribeAll(); }
var found = false; for (var i = 0, len = this.subscribers.length; i < len; ++i) { var s = this.subscribers[i]; if (s && s.contains(fn, obj)) { this._delete(i); found = true; } }
return found;
}, fire: function() {
var len = this.subscribers.length; if (!len && this.silent) { return true; }
var args = [], ret = true, i; for (i = 0; i < arguments.length; ++i) { args.push(arguments[i]); }
var argslength = args.length; if (!this.silent) { }
for (i = 0; i < len; ++i) {
var s = this.subscribers[i]; if (s) {
if (!this.silent) { }
var scope = s.getScope(this.scope); if (this.signature == YAHOO.util.CustomEvent.FLAT) {
var param = null; if (args.length > 0) { param = args[0]; }
ret = s.fn.call(scope, param, s.obj);
} else { ret = s.fn.call(scope, this.type, args, s.obj); }
if (false === ret) {
if (!this.silent) { }
return false;
} 
} 
}
return true;
}, unsubscribeAll: function() {
for (var i = 0, len = this.subscribers.length; i < len; ++i) { this._delete(len - 1 - i); }
return i;
}, _delete: function(index) {
var s = this.subscribers[index]; if (s) { delete s.fn; delete s.obj; }
this.subscribers.splice(index, 1);
}, toString: function() { return "CustomEvent: " + "'" + this.type + "', " + "scope: " + this.scope; } 
}; YAHOO.util.Subscriber = function(fn, obj, override) { this.fn = fn; this.obj = obj || null; this.override = override; }; YAHOO.util.Subscriber.prototype.getScope = function(defaultScope) {
if (this.override) { if (this.override === true) { return this.obj; } else { return this.override; } }
return defaultScope;
}; YAHOO.util.Subscriber.prototype.contains = function(fn, obj) { if (obj) { return (this.fn == fn && this.obj == obj); } else { return (this.fn == fn); } }; YAHOO.util.Subscriber.prototype.toString = function() { return "Subscriber { obj: " + (this.obj || "") + ", override: " + (this.override || "no") + " }"; }; if (!YAHOO.util.Event) {
YAHOO.util.Event = function() {
var loadComplete = false; var DOMReady = false; var listeners = []; var unloadListeners = []; var legacyEvents = []; var legacyHandlers = []; var retryCount = 0; var onAvailStack = []; var legacyMap = []; var counter = 0; var lastError = null; return { POLL_RETRYS: 200, POLL_INTERVAL: 10, EL: 0, TYPE: 1, FN: 2, WFN: 3, OBJ: 3, ADJ_SCOPE: 4, isSafari: (/KHTML/gi).test(navigator.userAgent), webkit: function() {
var v = navigator.userAgent.match(/AppleWebKit\/([^ ]*)/); if (v && v[1]) { return v[1]; }
return null;
} (), isIE: (!this.webkit && !navigator.userAgent.match(/opera/gi) && navigator.userAgent.match(/msie/gi)), _interval: null, startInterval: function() { if (!this._interval) { var self = this; var callback = function() { self._tryPreloadAttach(); }; this._interval = setInterval(callback, this.POLL_INTERVAL); } }, onAvailable: function(p_id, p_fn, p_obj, p_override) { onAvailStack.push({ id: p_id, fn: p_fn, obj: p_obj, override: p_override, checkReady: false }); retryCount = this.POLL_RETRYS; this.startInterval(); }, onDOMReady: function(p_fn, p_obj, p_override) { this.DOMReadyEvent.subscribe(p_fn, p_obj, p_override); }, onContentReady: function(p_id, p_fn, p_obj, p_override) { onAvailStack.push({ id: p_id, fn: p_fn, obj: p_obj, override: p_override, checkReady: true }); retryCount = this.POLL_RETRYS; this.startInterval(); }, addListener: function(el, sType, fn, obj, override) {
if (!fn || !fn.call) { return false; }
if (this._isValidCollection(el)) {
var ok = true; for (var i = 0, len = el.length; i < len; ++i) { ok = this.on(el[i], sType, fn, obj, override) && ok; }
return ok;
} else if (typeof el == "string") { var oEl = this.getEl(el); if (oEl) { el = oEl; } else { this.onAvailable(el, function() { YAHOO.util.Event.on(el, sType, fn, obj, override); }); return true; } }
if (!el) { return false; }
if ("unload" == sType && obj !== this) { unloadListeners[unloadListeners.length] = [el, sType, fn, obj, override]; return true; }
var scope = el; if (override) { if (override === true) { scope = obj; } else { scope = override; } }
var wrappedFn = function(e) { return fn.call(scope, YAHOO.util.Event.getEvent(e), obj); }; var li = [el, sType, fn, wrappedFn, scope]; var index = listeners.length; listeners[index] = li; if (this.useLegacyEvent(el, sType)) {
var legacyIndex = this.getLegacyIndex(el, sType); if (legacyIndex == -1 || el != legacyEvents[legacyIndex][0]) { legacyIndex = legacyEvents.length; legacyMap[el.id + sType] = legacyIndex; legacyEvents[legacyIndex] = [el, sType, el["on" + sType]]; legacyHandlers[legacyIndex] = []; el["on" + sType] = function(e) { YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e), legacyIndex); }; }
legacyHandlers[legacyIndex].push(li);
} else { try { this._simpleAdd(el, sType, wrappedFn, false); } catch (ex) { this.lastError = ex; this.removeListener(el, sType, fn); return false; } }
return true;
}, fireLegacyEvent: function(e, legacyIndex) {
var ok = true, le, lh, li, scope, ret; lh = legacyHandlers[legacyIndex]; for (var i = 0, len = lh.length; i < len; ++i) { li = lh[i]; if (li && li[this.WFN]) { scope = li[this.ADJ_SCOPE]; ret = li[this.WFN].call(scope, e); ok = (ok && ret); } }
le = legacyEvents[legacyIndex]; if (le && le[2]) { le[2](e); }
return ok;
}, getLegacyIndex: function(el, sType) { var key = this.generateId(el) + sType; if (typeof legacyMap[key] == "undefined") { return -1; } else { return legacyMap[key]; } }, useLegacyEvent: function(el, sType) {
if (this.webkit && ("click" == sType || "dblclick" == sType)) { var v = parseInt(this.webkit, 10); if (!isNaN(v) && v < 418) { return true; } }
return false;
}, removeListener: function(el, sType, fn) {
var i, len; if (typeof el == "string") { el = this.getEl(el); } else if (this._isValidCollection(el)) {
var ok = true; for (i = 0, len = el.length; i < len; ++i) { ok = (this.removeListener(el[i], sType, fn) && ok); }
return ok;
}
if (!fn || !fn.call) { return this.purgeElement(el, false, sType); }
if ("unload" == sType) {
for (i = 0, len = unloadListeners.length; i < len; i++) { var li = unloadListeners[i]; if (li && li[0] == el && li[1] == sType && li[2] == fn) { unloadListeners.splice(i, 1); return true; } }
return false;
}
var cacheItem = null; var index = arguments[3]; if ("undefined" == typeof index) { index = this._getCacheIndex(el, sType, fn); }
if (index >= 0) { cacheItem = listeners[index]; }
if (!el || !cacheItem) { return false; }
if (this.useLegacyEvent(el, sType)) { var legacyIndex = this.getLegacyIndex(el, sType); var llist = legacyHandlers[legacyIndex]; if (llist) { for (i = 0, len = llist.length; i < len; ++i) { li = llist[i]; if (li && li[this.EL] == el && li[this.TYPE] == sType && li[this.FN] == fn) { llist.splice(i, 1); break; } } } } else { try { this._simpleRemove(el, sType, cacheItem[this.WFN], false); } catch (ex) { this.lastError = ex; return false; } }
delete listeners[index][this.WFN]; delete listeners[index][this.FN]; listeners.splice(index, 1); return true;
}, getTarget: function(ev, resolveTextNode) { var t = ev.target || ev.srcElement; return this.resolveTextNode(t); }, resolveTextNode: function(node) { if (node && 3 == node.nodeType) { return node.parentNode; } else { return node; } }, getPageX: function(ev) {
var x = ev.pageX; if (!x && 0 !== x) { x = ev.clientX || 0; if (this.isIE) { x += this._getScrollLeft(); } }
return x;
}, getPageY: function(ev) {
var y = ev.pageY; if (!y && 0 !== y) { y = ev.clientY || 0; if (this.isIE) { y += this._getScrollTop(); } }
return y;
}, getXY: function(ev) { return [this.getPageX(ev), this.getPageY(ev)]; }, getRelatedTarget: function(ev) {
var t = ev.relatedTarget; if (!t) { if (ev.type == "mouseout") { t = ev.toElement; } else if (ev.type == "mouseover") { t = ev.fromElement; } }
return this.resolveTextNode(t);
}, getTime: function(ev) {
if (!ev.time) { var t = new Date().getTime(); try { ev.time = t; } catch (ex) { this.lastError = ex; return t; } }
return ev.time;
}, stopEvent: function(ev) { this.stopPropagation(ev); this.preventDefault(ev); }, stopPropagation: function(ev) { if (ev.stopPropagation) { ev.stopPropagation(); } else { ev.cancelBubble = true; } }, preventDefault: function(ev) { if (ev.preventDefault) { ev.preventDefault(); } else { ev.returnValue = false; } }, getEvent: function(e) {
var ev = e || window.event; if (!ev) {
var c = this.getEvent.caller; while (c) {
ev = c.arguments[0]; if (ev && Event == ev.constructor) { break; }
c = c.caller;
} 
}
return ev;
}, getCharCode: function(ev) { return ev.charCode || ev.keyCode || 0; }, _getCacheIndex: function(el, sType, fn) {
for (var i = 0, len = listeners.length; i < len; ++i) { var li = listeners[i]; if (li && li[this.FN] == fn && li[this.EL] == el && li[this.TYPE] == sType) { return i; } }
return -1;
}, generateId: function(el) {
var id = el.id; if (!id) { id = "yuievtautoid-" + counter; ++counter; el.id = id; }
return id;
}, _isValidCollection: function(o) { return (o && o.length && typeof o != "string" && !o.tagName && !o.alert && typeof o[0] != "undefined"); }, elCache: {}, getEl: function(id) { return document.getElementById(id); }, clearCache: function() { }, DOMReadyEvent: new YAHOO.util.CustomEvent("DOMReady", this), _load: function(e) { if (!loadComplete) { loadComplete = true; var EU = YAHOO.util.Event; EU._ready(); if (this.isIE) { EU._simpleRemove(window, "load", EU._load); } } }, _ready: function(e) { if (!DOMReady) { DOMReady = true; var EU = YAHOO.util.Event; EU.DOMReadyEvent.fire(); EU._simpleRemove(document, "DOMContentLoaded", EU._ready); } }, _tryPreloadAttach: function() {
if (this.locked) { return false; }
if (this.isIE && !DOMReady) { return false; }
this.locked = true; var tryAgain = !loadComplete; if (!tryAgain) { tryAgain = (retryCount > 0); }
var notAvail = []; var executeItem = function(el, item) {
var scope = el; if (item.override) { if (item.override === true) { scope = item.obj; } else { scope = item.override; } }
item.fn.call(scope, item.obj);
}; var i, len, item, el; for (i = 0, len = onAvailStack.length; i < len; ++i) { item = onAvailStack[i]; if (item && !item.checkReady) { el = this.getEl(item.id); if (el) { executeItem(el, item); onAvailStack[i] = null; } else { notAvail.push(item); } } }
for (i = 0, len = onAvailStack.length; i < len; ++i) { item = onAvailStack[i]; if (item && item.checkReady) { el = this.getEl(item.id); if (el) { if (loadComplete || el.nextSibling) { executeItem(el, item); onAvailStack[i] = null; } } else { notAvail.push(item); } } }
retryCount = (notAvail.length === 0) ? 0 : retryCount - 1; if (tryAgain) { this.startInterval(); } else { clearInterval(this._interval); this._interval = null; }
this.locked = false; return true;
}, purgeElement: function(el, recurse, sType) {
var elListeners = this.getListeners(el, sType); if (elListeners) { for (var i = 0, len = elListeners.length; i < len; ++i) { var l = elListeners[i]; this.removeListener(el, l.type, l.fn); } }
if (recurse && el && el.childNodes) { for (i = 0, len = el.childNodes.length; i < len; ++i) { this.purgeElement(el.childNodes[i], recurse, sType); } } 
}, getListeners: function(el, sType) {
var results = [], searchLists; if (!sType) { searchLists = [listeners, unloadListeners]; } else if (sType == "unload") { searchLists = [unloadListeners]; } else { searchLists = [listeners]; }
for (var j = 0; j < searchLists.length; ++j) { var searchList = searchLists[j]; if (searchList && searchList.length > 0) { for (var i = 0, len = searchList.length; i < len; ++i) { var l = searchList[i]; if (l && l[this.EL] === el && (!sType || sType === l[this.TYPE])) { results.push({ type: l[this.TYPE], fn: l[this.FN], obj: l[this.OBJ], adjust: l[this.ADJ_SCOPE], index: i }); } } } }
return (results.length) ? results : null;
}, _unload: function(e) {
var EU = YAHOO.util.Event, i, j, l, len, index; for (i = 0, len = unloadListeners.length; i < len; ++i) {
l = unloadListeners[i]; if (l) {
var scope = window; if (l[EU.ADJ_SCOPE]) { if (l[EU.ADJ_SCOPE] === true) { scope = l[EU.OBJ]; } else { scope = l[EU.ADJ_SCOPE]; } }
l[EU.FN].call(scope, EU.getEvent(e), l[EU.OBJ]); unloadListeners[i] = null; l = null; scope = null;
} 
}
unloadListeners = null; if (listeners && listeners.length > 0) {
j = listeners.length; while (j) {
index = j - 1; l = listeners[index]; if (l) { EU.removeListener(l[EU.EL], l[EU.TYPE], l[EU.FN], index); }
j = j - 1;
}
l = null; EU.clearCache();
}
for (i = 0, len = legacyEvents.length; i < len; ++i) { legacyEvents[i][0] = null; legacyEvents[i] = null; }
legacyEvents = null; EU._simpleRemove(window, "unload", EU._unload);
}, _getScrollLeft: function() { return this._getScroll()[1]; }, _getScrollTop: function() { return this._getScroll()[0]; }, _getScroll: function() { var dd = document.documentElement, db = document.body; if (dd && (dd.scrollTop || dd.scrollLeft)) { return [dd.scrollTop, dd.scrollLeft]; } else if (db) { return [db.scrollTop, db.scrollLeft]; } else { return [0, 0]; } }, regCE: function() { }, _simpleAdd: function() { if (window.addEventListener) { return function(el, sType, fn, capture) { el.addEventListener(sType, fn, (capture)); }; } else if (window.attachEvent) { return function(el, sType, fn, capture) { el.attachEvent("on" + sType, fn); }; } else { return function() { }; } } (), _simpleRemove: function() { if (window.removeEventListener) { return function(el, sType, fn, capture) { el.removeEventListener(sType, fn, (capture)); }; } else if (window.detachEvent) { return function(el, sType, fn) { el.detachEvent("on" + sType, fn); }; } else { return function() { }; } } ()
};
} (); (function() {
var EU = YAHOO.util.Event; EU.on = EU.addListener; if (EU.isIE) { document.write('<scr' + 'ipt id="_yui_eu_dr" defer="true" src="//:"></script>'); var el = document.getElementById("_yui_eu_dr"); el.onreadystatechange = function() { if ("complete" == this.readyState) { this.parentNode.removeChild(this); YAHOO.util.Event._ready(); } }; el = null; YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach, YAHOO.util.Event, true); } else if (EU.webkit) { EU._drwatch = setInterval(function() { var rs = document.readyState; if ("loaded" == rs || "complete" == rs) { clearInterval(EU._drwatch); EU._drwatch = null; EU._ready(); } }, EU.POLL_INTERVAL); } else { EU._simpleAdd(document, "DOMContentLoaded", EU._ready); }
EU._simpleAdd(window, "load", EU._load); EU._simpleAdd(window, "unload", EU._unload); EU._tryPreloadAttach();
})();
}
YAHOO.util.EventProvider = function() { }; YAHOO.util.EventProvider.prototype = { __yui_events: null, __yui_subscribers: null, subscribe: function(p_type, p_fn, p_obj, p_override) {
this.__yui_events = this.__yui_events || {}; var ce = this.__yui_events[p_type]; if (ce) { ce.subscribe(p_fn, p_obj, p_override); } else {
this.__yui_subscribers = this.__yui_subscribers || {}; var subs = this.__yui_subscribers; if (!subs[p_type]) { subs[p_type] = []; }
subs[p_type].push({ fn: p_fn, obj: p_obj, override: p_override });
} 
}, unsubscribe: function(p_type, p_fn, p_obj) { this.__yui_events = this.__yui_events || {}; var ce = this.__yui_events[p_type]; if (ce) { return ce.unsubscribe(p_fn, p_obj); } else { return false; } }, unsubscribeAll: function(p_type) { return this.unsubscribe(p_type); }, createEvent: function(p_type, p_config) {
this.__yui_events = this.__yui_events || {}; var opts = p_config || {}; var events = this.__yui_events; if (events[p_type]) { } else {
var scope = opts.scope || this; var silent = opts.silent || null; var ce = new YAHOO.util.CustomEvent(p_type, scope, silent, YAHOO.util.CustomEvent.FLAT); events[p_type] = ce; if (opts.onSubscribeCallback) { ce.subscribeEvent.subscribe(opts.onSubscribeCallback); }
this.__yui_subscribers = this.__yui_subscribers || {}; var qs = this.__yui_subscribers[p_type]; if (qs) { for (var i = 0; i < qs.length; ++i) { ce.subscribe(qs[i].fn, qs[i].obj, qs[i].override); } } 
}
return events[p_type];
}, fireEvent: function(p_type, arg1, arg2, etc) {
this.__yui_events = this.__yui_events || {}; var ce = this.__yui_events[p_type]; if (ce) {
var args = []; for (var i = 1; i < arguments.length; ++i) { args.push(arguments[i]); }
return ce.fire.apply(ce, args);
} else { return null; } 
}, hasEvent: function(type) {
if (this.__yui_events) { if (this.__yui_events[type]) { return true; } }
return false;
} 
}; YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
if (!attachTo) { } else if (!keyData) { } else if (!handler) { }
if (!event) { event = YAHOO.util.KeyListener.KEYDOWN; }
var keyEvent = new YAHOO.util.CustomEvent("keyPressed"); this.enabledEvent = new YAHOO.util.CustomEvent("enabled"); this.disabledEvent = new YAHOO.util.CustomEvent("disabled"); if (typeof attachTo == 'string') { attachTo = document.getElementById(attachTo); }
if (typeof handler == 'function') { keyEvent.subscribe(handler); } else { keyEvent.subscribe(handler.fn, handler.scope, handler.correctScope); }
function handleKeyPress(e, obj) {
if (!keyData.shift) { keyData.shift = false; }
if (!keyData.alt) { keyData.alt = false; }
if (!keyData.ctrl) { keyData.ctrl = false; }
if (e.shiftKey == keyData.shift && e.altKey == keyData.alt && e.ctrlKey == keyData.ctrl) { var dataItem; var keyPressed; if (keyData.keys instanceof Array) { for (var i = 0; i < keyData.keys.length; i++) { dataItem = keyData.keys[i]; if (dataItem == e.charCode) { keyEvent.fire(e.charCode, e); break; } else if (dataItem == e.keyCode) { keyEvent.fire(e.keyCode, e); break; } } } else { dataItem = keyData.keys; if (dataItem == e.charCode) { keyEvent.fire(e.charCode, e); } else if (dataItem == e.keyCode) { keyEvent.fire(e.keyCode, e); } } } 
}
this.enable = function() {
if (!this.enabled) { YAHOO.util.Event.addListener(attachTo, event, handleKeyPress); this.enabledEvent.fire(keyData); }
this.enabled = true;
}; this.disable = function() {
if (this.enabled) { YAHOO.util.Event.removeListener(attachTo, event, handleKeyPress); this.disabledEvent.fire(keyData); }
this.enabled = false;
}; this.toString = function() {
return "KeyListener [" + keyData.keys + "] " + attachTo.tagName +
(attachTo.id ? "[" + attachTo.id + "]" : "");
};
}; YAHOO.util.KeyListener.KEYDOWN = "keydown"; YAHOO.util.KeyListener.KEYUP = "keyup"; YAHOO.register("event", YAHOO.util.Event, { version: "2.2.2", build: "204" });
YAHOO.util.Connect = { _msxml_progid: ['MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'], _http_headers: {}, _has_http_headers: false, _use_default_post_header: true, _default_post_header: 'application/x-www-form-urlencoded; charset=UTF-8', _use_default_xhr_header: true, _default_xhr_header: 'XMLHttpRequest', _has_default_headers: true, _default_headers: {}, _isFormSubmit: false, _isFileUpload: false, _formNode: null, _sFormData: null, _poll: {}, _timeOut: {}, _polling_interval: 50, _transaction_id: 0, _submitElementValue: null, _hasSubmitListener: (function() {
if (YAHOO.util.Event) {
YAHOO.util.Event.addListener(document, 'click', function(e) { var obj = YAHOO.util.Event.getTarget(e); if (obj.type == 'submit') { YAHOO.util.Connect._submitElementValue = encodeURIComponent(obj.name) + "=" + encodeURIComponent(obj.value); } })
return true;
}
return false;
})(), setProgId: function(id)
{ this._msxml_progid.unshift(id); }, setDefaultPostHeader: function(b)
{ this._use_default_post_header = b; }, setDefaultXhrHeader: function(b)
{ this._use_default_xhr_header = b; }, setPollingInterval: function(i)
{ if (typeof i == 'number' && isFinite(i)) { this._polling_interval = i; } }, createXhrObject: function(transactionId) {
var obj, http; try
{ http = new XMLHttpRequest(); obj = { conn: http, tId: transactionId }; }
catch (e) {
for (var i = 0; i < this._msxml_progid.length; ++i) {
try
{ http = new ActiveXObject(this._msxml_progid[i]); obj = { conn: http, tId: transactionId }; break; }
catch (e) { } 
} 
}
finally
{ return obj; } 
}, getConnectionObject: function() {
var o; var tId = this._transaction_id; try
{ o = this.createXhrObject(tId); if (o) { this._transaction_id++; } }
catch (e) { }
finally
{ return o; } 
}, asyncRequest: function(method, uri, callback, postData) {
var o = this.getConnectionObject(); if (!o) { return null; }
else {
if (this._isFormSubmit) {
if (this._isFileUpload) { this.uploadFile(o.tId, callback, uri, postData); this.releaseObject(o); return; }
if (method.toUpperCase() == 'GET') {
if (this._sFormData.length != 0) { uri += ((uri.indexOf('?') == -1) ? '?' : '&') + this._sFormData; }
else { uri += "?" + this._sFormData; } 
}
else if (method.toUpperCase() == 'POST') { postData = postData ? this._sFormData + "&" + postData : this._sFormData; } 
}
o.conn.open(method, uri, true); if (this._use_default_xhr_header) { if (!this._default_headers['X-Requested-With']) { this.initHeader('X-Requested-With', this._default_xhr_header, true); } }
if (this._isFormSubmit || (postData && this._use_default_post_header)) { this.initHeader('Content-Type', this._default_post_header); if (this._isFormSubmit) { this.resetFormState(); } }
if (this._has_default_headers || this._has_http_headers) { this.setHeader(o); }
this.handleReadyState(o, callback); o.conn.send(postData || null); return o;
} 
}, handleReadyState: function(o, callback) {
var oConn = this; if (callback && callback.timeout) { this._timeOut[o.tId] = window.setTimeout(function() { oConn.abort(o, callback, true); }, callback.timeout); }
this._poll[o.tId] = window.setInterval(function() {
if (o.conn && o.conn.readyState === 4) {
window.clearInterval(oConn._poll[o.tId]); delete oConn._poll[o.tId]; if (callback && callback.timeout) { delete oConn._timeOut[o.tId]; }
oConn.handleTransactionResponse(o, callback);
} 
}, this._polling_interval);
}, handleTransactionResponse: function(o, callback, isAbort) {
if (!callback) { this.releaseObject(o); return; }
var httpStatus, responseObject; try {
if (o.conn.status !== undefined && o.conn.status !== 0) { httpStatus = o.conn.status; }
else { httpStatus = 13030; } 
}
catch (e) { httpStatus = 13030; }
if (httpStatus >= 200 && httpStatus < 300 || httpStatus === 1223) {
responseObject = this.createResponseObject(o, callback.argument); if (callback.success) {
if (!callback.scope) { callback.success(responseObject); }
else { callback.success.apply(callback.scope, [responseObject]); } 
} 
}
else {
switch (httpStatus) {
case 12002: case 12029: case 12030: case 12031: case 12152: case 13030: responseObject = this.createExceptionObject(o.tId, callback.argument, (isAbort ? isAbort : false)); if (callback.failure) {
if (!callback.scope) { callback.failure(responseObject); }
else { callback.failure.apply(callback.scope, [responseObject]); } 
}
break; default: responseObject = this.createResponseObject(o, callback.argument); if (callback.failure) {
if (!callback.scope) { callback.failure(responseObject); }
else { callback.failure.apply(callback.scope, [responseObject]); } 
} 
} 
}
this.releaseObject(o); responseObject = null;
}, createResponseObject: function(o, callbackArg) {
var obj = {}; var headerObj = {}; try
{ var headerStr = o.conn.getAllResponseHeaders(); var header = headerStr.split('\n'); for (var i = 0; i < header.length; i++) { var delimitPos = header[i].indexOf(':'); if (delimitPos != -1) { headerObj[header[i].substring(0, delimitPos)] = header[i].substring(delimitPos + 2); } } }
catch (e) { }
obj.tId = o.tId; obj.status = (o.conn.status == 1223) ? 204 : o.conn.status; obj.statusText = (o.conn.status == 1223) ? "No Content" : o.conn.statusText; obj.getResponseHeader = headerObj; obj.getAllResponseHeaders = headerStr; obj.responseText = o.conn.responseText; obj.responseXML = o.conn.responseXML; if (typeof callbackArg !== undefined) { obj.argument = callbackArg; }
return obj;
}, createExceptionObject: function(tId, callbackArg, isAbort) {
var COMM_CODE = 0; var COMM_ERROR = 'communication failure'; var ABORT_CODE = -1; var ABORT_ERROR = 'transaction aborted'; var obj = {}; obj.tId = tId; if (isAbort) { obj.status = ABORT_CODE; obj.statusText = ABORT_ERROR; }
else { obj.status = COMM_CODE; obj.statusText = COMM_ERROR; }
if (callbackArg) { obj.argument = callbackArg; }
return obj;
}, initHeader: function(label, value, isDefault) {
var headerObj = (isDefault) ? this._default_headers : this._http_headers; if (headerObj[label] === undefined) { headerObj[label] = value; }
else { headerObj[label] = value + "," + headerObj[label]; }
if (isDefault) { this._has_default_headers = true; }
else { this._has_http_headers = true; } 
}, setHeader: function(o) {
if (this._has_default_headers) { for (var prop in this._default_headers) { if (YAHOO.lang.hasOwnProperty(this._default_headers, prop)) { o.conn.setRequestHeader(prop, this._default_headers[prop]); } } }
if (this._has_http_headers) {
for (var prop in this._http_headers) { if (YAHOO.lang.hasOwnProperty(this._http_headers, prop)) { o.conn.setRequestHeader(prop, this._http_headers[prop]); } }
delete this._http_headers; this._http_headers = {}; this._has_http_headers = false;
} 
}, resetDefaultHeaders: function() {
delete this._default_headers
this._default_headers = {}; this._has_default_headers = false;
}, setForm: function(formId, isUpload, secureUri) {
this.resetFormState(); var oForm; if (typeof formId == 'string') { oForm = (document.getElementById(formId) || document.forms[formId]); }
else if (typeof formId == 'object') { oForm = formId; }
else { return; }
if (isUpload) { this.createFrame(secureUri ? secureUri : null); this._isFormSubmit = true; this._isFileUpload = true; this._formNode = oForm; return; }
var oElement, oName, oValue, oDisabled; var hasSubmit = false; for (var i = 0; i < oForm.elements.length; i++) {
oElement = oForm.elements[i]; oDisabled = oForm.elements[i].disabled; oName = oForm.elements[i].name; oValue = oForm.elements[i].value; if (!oDisabled && oName) {
switch (oElement.type) {
case 'select-one': case 'select-multiple': for (var j = 0; j < oElement.options.length; j++) {
	if (oElement.options[j].selected) {
		if (window.ActiveXObject) { this._sFormData += encodeURIComponent(oName) + '=' + encodeURIComponent(oElement.options[j].attributes['value'].specified ? oElement.options[j].value : oElement.options[j].text) + '&'; }
		else { this._sFormData += encodeURIComponent(oName) + '=' + encodeURIComponent(oElement.options[j].hasAttribute('value') ? oElement.options[j].value : oElement.options[j].text) + '&'; } 
	} 
}
break; case 'radio': case 'checkbox': if (oElement.checked) { this._sFormData += encodeURIComponent(oName) + '=' + encodeURIComponent(oValue) + '&'; }
break; case 'file': case undefined: case 'reset': case 'button': break; case 'submit': if (hasSubmit === false) {
	if (this._hasSubmitListener) { this._sFormData += this._submitElementValue + '&'; }
	else { this._sFormData += encodeURIComponent(oName) + '=' + encodeURIComponent(oValue) + '&'; }
	hasSubmit = true;
}
break; default: this._sFormData += encodeURIComponent(oName) + '=' + encodeURIComponent(oValue) + '&'; break;
} 
} 
}
this._isFormSubmit = true; this._sFormData = this._sFormData.substr(0, this._sFormData.length - 1); return this._sFormData;
}, resetFormState: function() { this._isFormSubmit = false; this._isFileUpload = false; this._formNode = null; this._sFormData = ""; }, createFrame: function(secureUri) {
var frameId = 'yuiIO' + this._transaction_id; if (window.ActiveXObject) {
var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />'); if (typeof secureUri == 'boolean') { io.src = 'javascript:false'; }
else if (typeof secureURI == 'string') { io.src = secureUri; } 
}
else { var io = document.createElement('iframe'); io.id = frameId; io.name = frameId; }
io.style.position = 'absolute'; io.style.top = '-1000px'; io.style.left = '-1000px'; document.body.appendChild(io);
}, appendPostData: function(postData) {
var formElements = []; var postMessage = postData.split('&'); for (var i = 0; i < postMessage.length; i++) { var delimitPos = postMessage[i].indexOf('='); if (delimitPos != -1) { formElements[i] = document.createElement('input'); formElements[i].type = 'hidden'; formElements[i].name = postMessage[i].substring(0, delimitPos); formElements[i].value = postMessage[i].substring(delimitPos + 1); this._formNode.appendChild(formElements[i]); } }
return formElements;
}, uploadFile: function(id, callback, uri, postData) {
var frameId = 'yuiIO' + id; var uploadEncoding = 'multipart/form-data'; var io = document.getElementById(frameId); this._formNode.setAttribute('action', uri); this._formNode.setAttribute('method', 'POST'); this._formNode.setAttribute("target", frameId); if (this._formNode.encoding) { this._formNode.encoding = uploadEncoding; }
else { this._formNode.enctype = uploadEncoding; }
if (postData) { var oElements = this.appendPostData(postData); }
this._formNode.submit(); if (oElements && oElements.length > 0) { for (var i = 0; i < oElements.length; i++) { this._formNode.removeChild(oElements[i]); } }
this.resetFormState(); var uploadCallback = function() {
var obj = {}; obj.tId = id; obj.argument = callback.argument; try
{ obj.responseText = io.contentWindow.document.body ? io.contentWindow.document.body.innerHTML : null; obj.responseXML = io.contentWindow.document.XMLDocument ? io.contentWindow.document.XMLDocument : io.contentWindow.document; }
catch (e) { }
if (callback && callback.upload) {
if (!callback.scope) { callback.upload(obj); }
else { callback.upload.apply(callback.scope, [obj]); } 
}
if (YAHOO.util.Event) { YAHOO.util.Event.removeListener(io, "load", uploadCallback); }
else if (window.detachEvent) { io.detachEvent('onload', uploadCallback); }
else { io.removeEventListener('load', uploadCallback, false); }
setTimeout(function() { document.body.removeChild(io); }, 100);
}; if (YAHOO.util.Event) { YAHOO.util.Event.addListener(io, "load", uploadCallback); }
else if (window.attachEvent) { io.attachEvent('onload', uploadCallback); }
else { io.addEventListener('load', uploadCallback, false); } 
}, abort: function(o, callback, isTimeout) {
if (this.isCallInProgress(o)) {
o.conn.abort(); window.clearInterval(this._poll[o.tId]); delete this._poll[o.tId]; if (isTimeout) { delete this._timeOut[o.tId]; }
this.handleTransactionResponse(o, callback, true); return true;
}
else { return false; } 
}, isCallInProgress: function(o) {
if (o.conn) { return o.conn.readyState !== 4 && o.conn.readyState !== 0; }
else { return false; } 
}, releaseObject: function(o)
{ o.conn = null; o = null; } 
}; YAHOO.register("connection", YAHOO.util.Connect, { version: "2.2.2", build: "204" });
YAHOO.util.Anim = function(el, attributes, duration, method) { if (el) { this.init(el, attributes, duration, method); } }; YAHOO.util.Anim.prototype = { toString: function() { var el = this.getEl(); var id = el.id || el.tagName; return ("Anim " + id); }, patterns: { noNegatives: /width|height|opacity|padding/i, offsetAttribute: /^((width|height)|(top|left))$/, defaultUnit: /width|height|top$|bottom$|left$|right$/i, offsetUnit: /\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i }, doMethod: function(attr, start, end) { return this.method(this.currentFrame, start, end - start, this.totalFrames); }, setAttribute: function(attr, val, unit) {
if (this.patterns.noNegatives.test(attr)) { val = (val > 0) ? val : 0; }
YAHOO.util.Dom.setStyle(this.getEl(), attr, val + unit);
}, getAttribute: function(attr) {
var el = this.getEl(); var val = YAHOO.util.Dom.getStyle(el, attr); if (val !== 'auto' && !this.patterns.offsetUnit.test(val)) { return parseFloat(val); }
var a = this.patterns.offsetAttribute.exec(attr) || []; var pos = !!(a[3]); var box = !!(a[2]); if (box || (YAHOO.util.Dom.getStyle(el, 'position') == 'absolute' && pos)) { val = el['offset' + a[0].charAt(0).toUpperCase() + a[0].substr(1)]; } else { val = 0; }
return val;
}, getDefaultUnit: function(attr) {
if (this.patterns.defaultUnit.test(attr)) { return 'px'; }
return '';
}, setRuntimeAttribute: function(attr) {
var start; var end; var attributes = this.attributes; this.runtimeAttributes[attr] = {}; var isset = function(prop) { return (typeof prop !== 'undefined'); }; if (!isset(attributes[attr]['to']) && !isset(attributes[attr]['by'])) { return false; }
start = (isset(attributes[attr]['from'])) ? attributes[attr]['from'] : this.getAttribute(attr); if (isset(attributes[attr]['to'])) { end = attributes[attr]['to']; } else if (isset(attributes[attr]['by'])) { if (start.constructor == Array) { end = []; for (var i = 0, len = start.length; i < len; ++i) { end[i] = start[i] + attributes[attr]['by'][i]; } } else { end = start + attributes[attr]['by']; } }
this.runtimeAttributes[attr].start = start; this.runtimeAttributes[attr].end = end; this.runtimeAttributes[attr].unit = (isset(attributes[attr].unit)) ? attributes[attr]['unit'] : this.getDefaultUnit(attr);
}, init: function(el, attributes, duration, method) {
var isAnimated = false; var startTime = null; var actualFrames = 0; el = YAHOO.util.Dom.get(el); this.attributes = attributes || {}; this.duration = duration || 1; this.method = method || YAHOO.util.Easing.easeNone; this.useSeconds = true; this.currentFrame = 0; this.totalFrames = YAHOO.util.AnimMgr.fps; this.getEl = function() { return el; }; this.isAnimated = function() { return isAnimated; }; this.getStartTime = function() { return startTime; }; this.runtimeAttributes = {}; this.animate = function() {
if (this.isAnimated()) { return false; }
this.currentFrame = 0; this.totalFrames = (this.useSeconds) ? Math.ceil(YAHOO.util.AnimMgr.fps * this.duration) : this.duration; YAHOO.util.AnimMgr.registerElement(this);
}; this.stop = function(finish) {
if (finish) { this.currentFrame = this.totalFrames; this._onTween.fire(); }
YAHOO.util.AnimMgr.stop(this);
}; var onStart = function() {
this.onStart.fire(); this.runtimeAttributes = {}; for (var attr in this.attributes) { this.setRuntimeAttribute(attr); }
isAnimated = true; actualFrames = 0; startTime = new Date();
}; var onTween = function() {
var data = { duration: new Date() - this.getStartTime(), currentFrame: this.currentFrame }; data.toString = function() { return ('duration: ' + data.duration + ', currentFrame: ' + data.currentFrame); }; this.onTween.fire(data); var runtimeAttributes = this.runtimeAttributes; for (var attr in runtimeAttributes) { this.setAttribute(attr, this.doMethod(attr, runtimeAttributes[attr].start, runtimeAttributes[attr].end), runtimeAttributes[attr].unit); }
actualFrames += 1;
}; var onComplete = function() { var actual_duration = (new Date() - startTime) / 1000; var data = { duration: actual_duration, frames: actualFrames, fps: actualFrames / actual_duration }; data.toString = function() { return ('duration: ' + data.duration + ', frames: ' + data.frames + ', fps: ' + data.fps); }; isAnimated = false; actualFrames = 0; this.onComplete.fire(data); }; this._onStart = new YAHOO.util.CustomEvent('_start', this, true); this.onStart = new YAHOO.util.CustomEvent('start', this); this.onTween = new YAHOO.util.CustomEvent('tween', this); this._onTween = new YAHOO.util.CustomEvent('_tween', this, true); this.onComplete = new YAHOO.util.CustomEvent('complete', this); this._onComplete = new YAHOO.util.CustomEvent('_complete', this, true); this._onStart.subscribe(onStart); this._onTween.subscribe(onTween); this._onComplete.subscribe(onComplete);
} 
}; YAHOO.util.AnimMgr = new function() {
var thread = null; var queue = []; var tweenCount = 0; this.fps = 1000; this.delay = 1; this.registerElement = function(tween) { queue[queue.length] = tween; tweenCount += 1; tween._onStart.fire(); this.start(); }; this.unRegister = function(tween, index) {
tween._onComplete.fire(); index = index || getIndex(tween); if (index != -1) { queue.splice(index, 1); }
tweenCount -= 1; if (tweenCount <= 0) { this.stop(); } 
}; this.start = function() { if (thread === null) { thread = setInterval(this.run, this.delay); } }; this.stop = function(tween) {
if (!tween) {
clearInterval(thread); for (var i = 0, len = queue.length; i < len; ++i) { if (queue[0].isAnimated()) { this.unRegister(queue[0], 0); } }
queue = []; thread = null; tweenCount = 0;
}
else { this.unRegister(tween); } 
}; this.run = function() {
for (var i = 0, len = queue.length; i < len; ++i) {
var tween = queue[i]; if (!tween || !tween.isAnimated()) { continue; }
if (tween.currentFrame < tween.totalFrames || tween.totalFrames === null) {
tween.currentFrame += 1; if (tween.useSeconds) { correctFrame(tween); }
tween._onTween.fire();
}
else { YAHOO.util.AnimMgr.stop(tween, i); } 
} 
}; var getIndex = function(anim) {
for (var i = 0, len = queue.length; i < len; ++i) { if (queue[i] == anim) { return i; } }
return -1;
}; var correctFrame = function(tween) {
var frames = tween.totalFrames; var frame = tween.currentFrame; var expected = (tween.currentFrame * tween.duration * 1000 / tween.totalFrames); var elapsed = (new Date() - tween.getStartTime()); var tweak = 0; if (elapsed < tween.duration * 1000) { tweak = Math.round((elapsed / expected - 1) * tween.currentFrame); } else { tweak = frames - (frame + 1); }
if (tweak > 0 && isFinite(tweak)) {
if (tween.currentFrame + tweak >= frames) { tweak = frames - (frame + 1); }
tween.currentFrame += tweak;
} 
};
}; YAHOO.util.Bezier = new function() {
this.getPosition = function(points, t) {
var n = points.length; var tmp = []; for (var i = 0; i < n; ++i) { tmp[i] = [points[i][0], points[i][1]]; }
for (var j = 1; j < n; ++j) { for (i = 0; i < n - j; ++i) { tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0]; tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1]; } }
return [tmp[0][0], tmp[0][1]];
};
}; (function() {
YAHOO.util.ColorAnim = function(el, attributes, duration, method) { YAHOO.util.ColorAnim.superclass.constructor.call(this, el, attributes, duration, method); }; YAHOO.extend(YAHOO.util.ColorAnim, YAHOO.util.Anim); var Y = YAHOO.util; var superclass = Y.ColorAnim.superclass; var proto = Y.ColorAnim.prototype; proto.toString = function() { var el = this.getEl(); var id = el.id || el.tagName; return ("ColorAnim " + id); }; proto.patterns.color = /color$/i; proto.patterns.rgb = /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i; proto.patterns.hex = /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i; proto.patterns.hex3 = /^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i; proto.patterns.transparent = /^transparent|rgba\(0, 0, 0, 0\)$/; proto.parseColor = function(s) {
if (s.length == 3) { return s; }
var c = this.patterns.hex.exec(s); if (c && c.length == 4) { return [parseInt(c[1], 16), parseInt(c[2], 16), parseInt(c[3], 16)]; }
c = this.patterns.rgb.exec(s); if (c && c.length == 4) { return [parseInt(c[1], 10), parseInt(c[2], 10), parseInt(c[3], 10)]; }
c = this.patterns.hex3.exec(s); if (c && c.length == 4) { return [parseInt(c[1] + c[1], 16), parseInt(c[2] + c[2], 16), parseInt(c[3] + c[3], 16)]; }
return null;
}; proto.getAttribute = function(attr) {
var el = this.getEl(); if (this.patterns.color.test(attr)) { var val = YAHOO.util.Dom.getStyle(el, attr); if (this.patterns.transparent.test(val)) { var parent = el.parentNode; val = Y.Dom.getStyle(parent, attr); while (parent && this.patterns.transparent.test(val)) { parent = parent.parentNode; val = Y.Dom.getStyle(parent, attr); if (parent.tagName.toUpperCase() == 'HTML') { val = '#fff'; } } } } else { val = superclass.getAttribute.call(this, attr); }
return val;
}; proto.doMethod = function(attr, start, end) {
var val; if (this.patterns.color.test(attr)) {
val = []; for (var i = 0, len = start.length; i < len; ++i) { val[i] = superclass.doMethod.call(this, attr, start[i], end[i]); }
val = 'rgb(' + Math.floor(val[0]) + ',' + Math.floor(val[1]) + ',' + Math.floor(val[2]) + ')';
}
else { val = superclass.doMethod.call(this, attr, start, end); }
return val;
}; proto.setRuntimeAttribute = function(attr) {
superclass.setRuntimeAttribute.call(this, attr); if (this.patterns.color.test(attr)) {
var attributes = this.attributes; var start = this.parseColor(this.runtimeAttributes[attr].start); var end = this.parseColor(this.runtimeAttributes[attr].end); if (typeof attributes[attr]['to'] === 'undefined' && typeof attributes[attr]['by'] !== 'undefined') { end = this.parseColor(attributes[attr].by); for (var i = 0, len = start.length; i < len; ++i) { end[i] = start[i] + end[i]; } }
this.runtimeAttributes[attr].start = start; this.runtimeAttributes[attr].end = end;
} 
};
})(); YAHOO.util.Easing = { easeNone: function(t, b, c, d) { return c * t / d + b; }, easeIn: function(t, b, c, d) { return c * (t /= d) * t + b; }, easeOut: function(t, b, c, d) { return -c * (t /= d) * (t - 2) + b; }, easeBoth: function(t, b, c, d) {
if ((t /= d / 2) < 1) { return c / 2 * t * t + b; }
return -c / 2 * ((--t) * (t - 2) - 1) + b;
}, easeInStrong: function(t, b, c, d) { return c * (t /= d) * t * t * t + b; }, easeOutStrong: function(t, b, c, d) { return -c * ((t = t / d - 1) * t * t * t - 1) + b; }, easeBothStrong: function(t, b, c, d) {
if ((t /= d / 2) < 1) { return c / 2 * t * t * t * t + b; }
return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
}, elasticIn: function(t, b, c, d, a, p) {
if (t == 0) { return b; }
if ((t /= d) == 1) { return b + c; }
if (!p) { p = d * .3; }
if (!a || a < Math.abs(c)) { a = c; var s = p / 4; }
else { var s = p / (2 * Math.PI) * Math.asin(c / a); }
return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
}, elasticOut: function(t, b, c, d, a, p) {
if (t == 0) { return b; }
if ((t /= d) == 1) { return b + c; }
if (!p) { p = d * .3; }
if (!a || a < Math.abs(c)) { a = c; var s = p / 4; }
else { var s = p / (2 * Math.PI) * Math.asin(c / a); }
return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
}, elasticBoth: function(t, b, c, d, a, p) {
if (t == 0) { return b; }
if ((t /= d / 2) == 2) { return b + c; }
if (!p) { p = d * (.3 * 1.5); }
if (!a || a < Math.abs(c)) { a = c; var s = p / 4; }
else { var s = p / (2 * Math.PI) * Math.asin(c / a); }
if (t < 1) { return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; }
return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
}, backIn: function(t, b, c, d, s) {
if (typeof s == 'undefined') { s = 1.70158; }
return c * (t /= d) * t * ((s + 1) * t - s) + b;
}, backOut: function(t, b, c, d, s) {
if (typeof s == 'undefined') { s = 1.70158; }
return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
}, backBoth: function(t, b, c, d, s) {
if (typeof s == 'undefined') { s = 1.70158; }
if ((t /= d / 2) < 1) { return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; }
return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
}, bounceIn: function(t, b, c, d) { return c - YAHOO.util.Easing.bounceOut(d - t, 0, c, d) + b; }, bounceOut: function(t, b, c, d) {
if ((t /= d) < (1 / 2.75)) { return c * (7.5625 * t * t) + b; } else if (t < (2 / 2.75)) { return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b; } else if (t < (2.5 / 2.75)) { return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b; }
return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
}, bounceBoth: function(t, b, c, d) {
if (t < d / 2) { return YAHOO.util.Easing.bounceIn(t * 2, 0, c, d) * .5 + b; }
return YAHOO.util.Easing.bounceOut(t * 2 - d, 0, c, d) * .5 + c * .5 + b;
} 
}; (function() {
YAHOO.util.Motion = function(el, attributes, duration, method) { if (el) { YAHOO.util.Motion.superclass.constructor.call(this, el, attributes, duration, method); } }; YAHOO.extend(YAHOO.util.Motion, YAHOO.util.ColorAnim); var Y = YAHOO.util; var superclass = Y.Motion.superclass; var proto = Y.Motion.prototype; proto.toString = function() { var el = this.getEl(); var id = el.id || el.tagName; return ("Motion " + id); }; proto.patterns.points = /^points$/i; proto.setAttribute = function(attr, val, unit) { if (this.patterns.points.test(attr)) { unit = unit || 'px'; superclass.setAttribute.call(this, 'left', val[0], unit); superclass.setAttribute.call(this, 'top', val[1], unit); } else { superclass.setAttribute.call(this, attr, val, unit); } }; proto.getAttribute = function(attr) {
if (this.patterns.points.test(attr)) { var val = [superclass.getAttribute.call(this, 'left'), superclass.getAttribute.call(this, 'top')]; } else { val = superclass.getAttribute.call(this, attr); }
return val;
}; proto.doMethod = function(attr, start, end) {
var val = null; if (this.patterns.points.test(attr)) { var t = this.method(this.currentFrame, 0, 100, this.totalFrames) / 100; val = Y.Bezier.getPosition(this.runtimeAttributes[attr], t); } else { val = superclass.doMethod.call(this, attr, start, end); }
return val;
}; proto.setRuntimeAttribute = function(attr) {
if (this.patterns.points.test(attr)) {
var el = this.getEl(); var attributes = this.attributes; var start; var control = attributes['points']['control'] || []; var end; var i, len; if (control.length > 0 && !(control[0] instanceof Array)) { control = [control]; } else {
var tmp = []; for (i = 0, len = control.length; i < len; ++i) { tmp[i] = control[i]; }
control = tmp;
}
if (Y.Dom.getStyle(el, 'position') == 'static') { Y.Dom.setStyle(el, 'position', 'relative'); }
if (isset(attributes['points']['from'])) { Y.Dom.setXY(el, attributes['points']['from']); }
else { Y.Dom.setXY(el, Y.Dom.getXY(el)); }
start = this.getAttribute('points'); if (isset(attributes['points']['to'])) { end = translateValues.call(this, attributes['points']['to'], start); var pageXY = Y.Dom.getXY(this.getEl()); for (i = 0, len = control.length; i < len; ++i) { control[i] = translateValues.call(this, control[i], start); } } else if (isset(attributes['points']['by'])) { end = [start[0] + attributes['points']['by'][0], start[1] + attributes['points']['by'][1]]; for (i = 0, len = control.length; i < len; ++i) { control[i] = [start[0] + control[i][0], start[1] + control[i][1]]; } }
this.runtimeAttributes[attr] = [start]; if (control.length > 0) { this.runtimeAttributes[attr] = this.runtimeAttributes[attr].concat(control); }
this.runtimeAttributes[attr][this.runtimeAttributes[attr].length] = end;
}
else { superclass.setRuntimeAttribute.call(this, attr); } 
}; var translateValues = function(val, start) { var pageXY = Y.Dom.getXY(this.getEl()); val = [val[0] - pageXY[0] + start[0], val[1] - pageXY[1] + start[1]]; return val; }; var isset = function(prop) { return (typeof prop !== 'undefined'); };
})(); (function() {
YAHOO.util.Scroll = function(el, attributes, duration, method) { if (el) { YAHOO.util.Scroll.superclass.constructor.call(this, el, attributes, duration, method); } }; YAHOO.extend(YAHOO.util.Scroll, YAHOO.util.ColorAnim); var Y = YAHOO.util; var superclass = Y.Scroll.superclass; var proto = Y.Scroll.prototype; proto.toString = function() { var el = this.getEl(); var id = el.id || el.tagName; return ("Scroll " + id); }; proto.doMethod = function(attr, start, end) {
var val = null; if (attr == 'scroll') { val = [this.method(this.currentFrame, start[0], end[0] - start[0], this.totalFrames), this.method(this.currentFrame, start[1], end[1] - start[1], this.totalFrames)]; } else { val = superclass.doMethod.call(this, attr, start, end); }
return val;
}; proto.getAttribute = function(attr) {
var val = null; var el = this.getEl(); if (attr == 'scroll') { val = [el.scrollLeft, el.scrollTop]; } else { val = superclass.getAttribute.call(this, attr); }
return val;
}; proto.setAttribute = function(attr, val, unit) { var el = this.getEl(); if (attr == 'scroll') { el.scrollLeft = val[0]; el.scrollTop = val[1]; } else { superclass.setAttribute.call(this, attr, val, unit); } };
})(); YAHOO.register("animation", YAHOO.util.Anim, { version: "2.2.2", build: "204" });
if (!YAHOO.util.DragDropMgr) {
YAHOO.util.DragDropMgr = function() {
var Event = YAHOO.util.Event; return { ids: {}, handleIds: {}, dragCurrent: null, dragOvers: {}, deltaX: 0, deltaY: 0, preventDefault: true, stopPropagation: true, initalized: false, locked: false, interactionInfo: null, init: function() { this.initialized = true; }, POINT: 0, INTERSECT: 1, STRICT_INTERSECT: 2, mode: 0, _execOnAll: function(sMethod, args) {
for (var i in this.ids) {
for (var j in this.ids[i]) {
var oDD = this.ids[i][j]; if (!this.isTypeOfDD(oDD)) { continue; }
oDD[sMethod].apply(oDD, args);
} 
} 
}, _onLoad: function() { this.init(); Event.on(document, "mouseup", this.handleMouseUp, this, true); Event.on(document, "mousemove", this.handleMouseMove, this, true); Event.on(window, "unload", this._onUnload, this, true); Event.on(window, "resize", this._onResize, this, true); }, _onResize: function(e) { this._execOnAll("resetConstraints", []); }, lock: function() { this.locked = true; }, unlock: function() { this.locked = false; }, isLocked: function() { return this.locked; }, locationCache: {}, useCache: true, clickPixelThresh: 3, clickTimeThresh: 1000, dragThreshMet: false, clickTimeout: null, startX: 0, startY: 0, regDragDrop: function(oDD, sGroup) {
if (!this.initialized) { this.init(); }
if (!this.ids[sGroup]) { this.ids[sGroup] = {}; }
this.ids[sGroup][oDD.id] = oDD;
}, removeDDFromGroup: function(oDD, sGroup) {
if (!this.ids[sGroup]) { this.ids[sGroup] = {}; }
var obj = this.ids[sGroup]; if (obj && obj[oDD.id]) { delete obj[oDD.id]; } 
}, _remove: function(oDD) {
for (var g in oDD.groups) { if (g && this.ids[g][oDD.id]) { delete this.ids[g][oDD.id]; } }
delete this.handleIds[oDD.id];
}, regHandle: function(sDDId, sHandleId) {
if (!this.handleIds[sDDId]) { this.handleIds[sDDId] = {}; }
this.handleIds[sDDId][sHandleId] = sHandleId;
}, isDragDrop: function(id) { return (this.getDDById(id)) ? true : false; }, getRelated: function(p_oDD, bTargetsOnly) {
var oDDs = []; for (var i in p_oDD.groups) {
for (j in this.ids[i]) {
var dd = this.ids[i][j]; if (!this.isTypeOfDD(dd)) { continue; }
if (!bTargetsOnly || dd.isTarget) { oDDs[oDDs.length] = dd; } 
} 
}
return oDDs;
}, isLegalTarget: function(oDD, oTargetDD) {
var targets = this.getRelated(oDD, true); for (var i = 0, len = targets.length; i < len; ++i) { if (targets[i].id == oTargetDD.id) { return true; } }
return false;
}, isTypeOfDD: function(oDD) { return (oDD && oDD.__ygDragDrop); }, isHandle: function(sDDId, sHandleId) { return (this.handleIds[sDDId] && this.handleIds[sDDId][sHandleId]); }, getDDById: function(id) {
for (var i in this.ids) { if (this.ids[i][id]) { return this.ids[i][id]; } }
return null;
}, handleMouseDown: function(e, oDD) { this.currentTarget = YAHOO.util.Event.getTarget(e); this.dragCurrent = oDD; var el = oDD.getEl(); this.startX = YAHOO.util.Event.getPageX(e); this.startY = YAHOO.util.Event.getPageY(e); this.deltaX = this.startX - el.offsetLeft; this.deltaY = this.startY - el.offsetTop; this.dragThreshMet = false; this.clickTimeout = setTimeout(function() { var DDM = YAHOO.util.DDM; DDM.startDrag(DDM.startX, DDM.startY); }, this.clickTimeThresh); }, startDrag: function(x, y) {
clearTimeout(this.clickTimeout); if (this.dragCurrent) { this.dragCurrent.b4StartDrag(x, y); this.dragCurrent.startDrag(x, y); }
this.dragThreshMet = true;
}, handleMouseUp: function(e) {
if (!this.dragCurrent) { return; }
clearTimeout(this.clickTimeout); if (this.dragThreshMet) { this.fireEvents(e, true); } else { }
this.stopDrag(e); this.stopEvent(e);
}, stopEvent: function(e) {
if (this.stopPropagation) { YAHOO.util.Event.stopPropagation(e); }
if (this.preventDefault) { YAHOO.util.Event.preventDefault(e); } 
}, stopDrag: function(e) {
if (this.dragCurrent) {
if (this.dragThreshMet) { this.dragCurrent.b4EndDrag(e); this.dragCurrent.endDrag(e); }
this.dragCurrent.onMouseUp(e);
}
this.dragCurrent = null; this.dragOvers = {};
}, handleMouseMove: function(e) {
if (!this.dragCurrent) { return true; }
if (YAHOO.util.Event.isIE && !e.button) { this.stopEvent(e); return this.handleMouseUp(e); }
if (!this.dragThreshMet) { var diffX = Math.abs(this.startX - YAHOO.util.Event.getPageX(e)); var diffY = Math.abs(this.startY - YAHOO.util.Event.getPageY(e)); if (diffX > this.clickPixelThresh || diffY > this.clickPixelThresh) { this.startDrag(this.startX, this.startY); } }
if (this.dragThreshMet) { this.dragCurrent.b4Drag(e); this.dragCurrent.onDrag(e); this.fireEvents(e, false); }
this.stopEvent(e); return true;
}, fireEvents: function(e, isDrop) {
var dc = this.dragCurrent; if (!dc || dc.isLocked()) { return; }
var x = YAHOO.util.Event.getPageX(e); var y = YAHOO.util.Event.getPageY(e); var pt = new YAHOO.util.Point(x, y); var pos = dc.getTargetCoord(pt.x, pt.y); var el = dc.getDragEl(); curRegion = new YAHOO.util.Region(pos.y, pos.x + el.offsetWidth, pos.y + el.offsetHeight, pos.x); var oldOvers = []; var outEvts = []; var overEvts = []; var dropEvts = []; var enterEvts = []; for (var i in this.dragOvers) {
var ddo = this.dragOvers[i]; if (!this.isTypeOfDD(ddo)) { continue; }
if (!this.isOverTarget(pt, ddo, this.mode, curRegion)) { outEvts.push(ddo); }
oldOvers[i] = true; delete this.dragOvers[i];
}
for (var sGroup in dc.groups) {
if ("string" != typeof sGroup) { continue; }
for (i in this.ids[sGroup]) {
var oDD = this.ids[sGroup][i]; if (!this.isTypeOfDD(oDD)) { continue; }
if (oDD.isTarget && !oDD.isLocked() && oDD != dc) {
	if (this.isOverTarget(pt, oDD, this.mode, curRegion)) {
		if (isDrop) { dropEvts.push(oDD); } else {
			if (!oldOvers[oDD.id]) { enterEvts.push(oDD); } else { overEvts.push(oDD); }
			this.dragOvers[oDD.id] = oDD;
		} 
	} 
} 
} 
}
this.interactionInfo = { out: outEvts, enter: enterEvts, over: overEvts, drop: dropEvts, point: pt, draggedRegion: curRegion, sourceRegion: this.locationCache[dc.id], validDrop: isDrop }; if (isDrop && !dropEvts.length) { this.interactionInfo.validDrop = false; dc.onInvalidDrop(e); }
if (this.mode) {
if (outEvts.length) { dc.b4DragOut(e, outEvts); dc.onDragOut(e, outEvts); }
if (enterEvts.length) { dc.onDragEnter(e, enterEvts); }
if (overEvts.length) { dc.b4DragOver(e, overEvts); dc.onDragOver(e, overEvts); }
if (dropEvts.length) { dc.b4DragDrop(e, dropEvts); dc.onDragDrop(e, dropEvts); } 
} else {
var len = 0; for (i = 0, len = outEvts.length; i < len; ++i) { dc.b4DragOut(e, outEvts[i].id); dc.onDragOut(e, outEvts[i].id); }
for (i = 0, len = enterEvts.length; i < len; ++i) { dc.onDragEnter(e, enterEvts[i].id); }
for (i = 0, len = overEvts.length; i < len; ++i) { dc.b4DragOver(e, overEvts[i].id); dc.onDragOver(e, overEvts[i].id); }
for (i = 0, len = dropEvts.length; i < len; ++i) { dc.b4DragDrop(e, dropEvts[i].id); dc.onDragDrop(e, dropEvts[i].id); } 
} 
}, getBestMatch: function(dds) {
var winner = null; var len = dds.length; if (len == 1) { winner = dds[0]; } else { for (var i = 0; i < len; ++i) { var dd = dds[i]; if (this.mode == this.INTERSECT && dd.cursorIsOver) { winner = dd; break; } else { if (!winner || !winner.overlap || (dd.overlap && winner.overlap.getArea() < dd.overlap.getArea())) { winner = dd; } } } }
return winner;
}, refreshCache: function(groups) {
var g = groups || this.ids; for (var sGroup in g) {
if ("string" != typeof sGroup) { continue; }
for (var i in this.ids[sGroup]) { var oDD = this.ids[sGroup][i]; if (this.isTypeOfDD(oDD)) { var loc = this.getLocation(oDD); if (loc) { this.locationCache[oDD.id] = loc; } else { delete this.locationCache[oDD.id]; } } } 
} 
}, verifyEl: function(el) {
try { if (el) { var parent = el.offsetParent; if (parent) { return true; } } } catch (e) { }
return false;
}, getLocation: function(oDD) {
if (!this.isTypeOfDD(oDD)) { return null; }
var el = oDD.getEl(), pos, x1, x2, y1, y2, t, r, b, l; try { pos = YAHOO.util.Dom.getXY(el); } catch (e) { }
if (!pos) { return null; }
x1 = pos[0]; x2 = x1 + el.offsetWidth; y1 = pos[1]; y2 = y1 + el.offsetHeight; t = y1 - oDD.padding[0]; r = x2 + oDD.padding[1]; b = y2 + oDD.padding[2]; l = x1 - oDD.padding[3]; return new YAHOO.util.Region(t, r, b, l);
}, isOverTarget: function(pt, oTarget, intersect, curRegion) {
var loc = this.locationCache[oTarget.id]; if (!loc || !this.useCache) { loc = this.getLocation(oTarget); this.locationCache[oTarget.id] = loc; }
if (!loc) { return false; }
oTarget.cursorIsOver = loc.contains(pt); var dc = this.dragCurrent; if (!dc || (!intersect && !dc.constrainX && !dc.constrainY)) { return oTarget.cursorIsOver; }
oTarget.overlap = null; if (!curRegion) { var pos = dc.getTargetCoord(pt.x, pt.y); var el = dc.getDragEl(); curRegion = new YAHOO.util.Region(pos.y, pos.x + el.offsetWidth, pos.y + el.offsetHeight, pos.x); }
var overlap = curRegion.intersect(loc); if (overlap) { oTarget.overlap = overlap; return (intersect) ? true : oTarget.cursorIsOver; } else { return false; } 
}, _onUnload: function(e, me) { this.unregAll(); }, unregAll: function() {
if (this.dragCurrent) { this.stopDrag(); this.dragCurrent = null; }
this._execOnAll("unreg", []); for (i in this.elementCache) { delete this.elementCache[i]; }
this.elementCache = {}; this.ids = {};
}, elementCache: {}, getElWrapper: function(id) {
var oWrapper = this.elementCache[id]; if (!oWrapper || !oWrapper.el) { oWrapper = this.elementCache[id] = new this.ElementWrapper(YAHOO.util.Dom.get(id)); }
return oWrapper;
}, getElement: function(id) { return YAHOO.util.Dom.get(id); }, getCss: function(id) { var el = YAHOO.util.Dom.get(id); return (el) ? el.style : null; }, ElementWrapper: function(el) { this.el = el || null; this.id = this.el && el.id; this.css = this.el && el.style; }, getPosX: function(el) { return YAHOO.util.Dom.getX(el); }, getPosY: function(el) { return YAHOO.util.Dom.getY(el); }, swapNode: function(n1, n2) { if (n1.swapNode) { n1.swapNode(n2); } else { var p = n2.parentNode; var s = n2.nextSibling; if (s == n1) { p.insertBefore(n1, n2); } else if (n2 == n1.nextSibling) { p.insertBefore(n2, n1); } else { n1.parentNode.replaceChild(n2, n1); p.insertBefore(n1, s); } } }, getScroll: function() {
var t, l, dde = document.documentElement, db = document.body; if (dde && (dde.scrollTop || dde.scrollLeft)) { t = dde.scrollTop; l = dde.scrollLeft; } else if (db) { t = db.scrollTop; l = db.scrollLeft; } else { }
return { top: t, left: l };
}, getStyle: function(el, styleProp) { return YAHOO.util.Dom.getStyle(el, styleProp); }, getScrollTop: function() { return this.getScroll().top; }, getScrollLeft: function() { return this.getScroll().left; }, moveToEl: function(moveEl, targetEl) { var aCoord = YAHOO.util.Dom.getXY(targetEl); YAHOO.util.Dom.setXY(moveEl, aCoord); }, getClientHeight: function() { return YAHOO.util.Dom.getViewportHeight(); }, getClientWidth: function() { return YAHOO.util.Dom.getViewportWidth(); }, numericSort: function(a, b) { return (a - b); }, _timeoutCount: 0, _addListeners: function() { var DDM = YAHOO.util.DDM; if (YAHOO.util.Event && document) { DDM._onLoad(); } else { if (DDM._timeoutCount > 2000) { } else { setTimeout(DDM._addListeners, 10); if (document && document.body) { DDM._timeoutCount += 1; } } } }, handleWasClicked: function(node, id) {
if (this.isHandle(id, node.id)) { return true; } else { var p = node.parentNode; while (p) { if (this.isHandle(id, p.id)) { return true; } else { p = p.parentNode; } } }
return false;
} 
};
} (); YAHOO.util.DDM = YAHOO.util.DragDropMgr; YAHOO.util.DDM._addListeners();
}
(function() {
var Event = YAHOO.util.Event; var Dom = YAHOO.util.Dom; YAHOO.util.DragDrop = function(id, sGroup, config) { if (id) { this.init(id, sGroup, config); } }; YAHOO.util.DragDrop.prototype = { id: null, config: null, dragElId: null, handleElId: null, invalidHandleTypes: null, invalidHandleIds: null, invalidHandleClasses: null, startPageX: 0, startPageY: 0, groups: null, locked: false, lock: function() { this.locked = true; }, unlock: function() { this.locked = false; }, isTarget: true, padding: null, _domRef: null, __ygDragDrop: true, constrainX: false, constrainY: false, minX: 0, maxX: 0, minY: 0, maxY: 0, deltaX: 0, deltaY: 0, maintainOffset: false, xTicks: null, yTicks: null, primaryButtonOnly: true, available: false, hasOuterHandles: false, b4StartDrag: function(x, y) { }, startDrag: function(x, y) { }, b4Drag: function(e) { }, onDrag: function(e) { }, onDragEnter: function(e, id) { }, b4DragOver: function(e) { }, onDragOver: function(e, id) { }, b4DragOut: function(e) { }, onDragOut: function(e, id) { }, b4DragDrop: function(e) { }, onDragDrop: function(e, id) { }, onInvalidDrop: function(e) { }, b4EndDrag: function(e) { }, endDrag: function(e) { }, b4MouseDown: function(e) { }, onMouseDown: function(e) { }, onMouseUp: function(e) { }, onAvailable: function() { }, getEl: function() {
if (!this._domRef) { this._domRef = Dom.get(this.id); }
return this._domRef;
}, getDragEl: function() { return Dom.get(this.dragElId); }, init: function(id, sGroup, config) { this.initTarget(id, sGroup, config); Event.on(this.id, "mousedown", this.handleMouseDown, this, true); }, initTarget: function(id, sGroup, config) {
this.config = config || {}; this.DDM = YAHOO.util.DDM; this.groups = {}; if (typeof id !== "string") { id = Dom.generateId(id); }
this.id = id; this.addToGroup((sGroup) ? sGroup : "default"); this.handleElId = id; Event.onAvailable(id, this.handleOnAvailable, this, true); this.setDragElId(id); this.invalidHandleTypes = { A: "A" }; this.invalidHandleIds = {}; this.invalidHandleClasses = []; this.applyConfig();
}, applyConfig: function() { this.padding = this.config.padding || [0, 0, 0, 0]; this.isTarget = (this.config.isTarget !== false); this.maintainOffset = (this.config.maintainOffset); this.primaryButtonOnly = (this.config.primaryButtonOnly !== false); }, handleOnAvailable: function() { this.available = true; this.resetConstraints(); this.onAvailable(); }, setPadding: function(iTop, iRight, iBot, iLeft) { if (!iRight && 0 !== iRight) { this.padding = [iTop, iTop, iTop, iTop]; } else if (!iBot && 0 !== iBot) { this.padding = [iTop, iRight, iTop, iRight]; } else { this.padding = [iTop, iRight, iBot, iLeft]; } }, setInitPosition: function(diffX, diffY) {
var el = this.getEl(); if (!this.DDM.verifyEl(el)) { return; }
var dx = diffX || 0; var dy = diffY || 0; var p = Dom.getXY(el); this.initPageX = p[0] - dx; this.initPageY = p[1] - dy; this.lastPageX = p[0]; this.lastPageY = p[1]; this.setStartPosition(p);
}, setStartPosition: function(pos) { var p = pos || Dom.getXY(this.getEl()); this.deltaSetXY = null; this.startPageX = p[0]; this.startPageY = p[1]; }, addToGroup: function(sGroup) { this.groups[sGroup] = true; this.DDM.regDragDrop(this, sGroup); }, removeFromGroup: function(sGroup) {
if (this.groups[sGroup]) { delete this.groups[sGroup]; }
this.DDM.removeDDFromGroup(this, sGroup);
}, setDragElId: function(id) { this.dragElId = id; }, setHandleElId: function(id) {
if (typeof id !== "string") { id = Dom.generateId(id); }
this.handleElId = id; this.DDM.regHandle(this.id, id);
}, setOuterHandleElId: function(id) {
if (typeof id !== "string") { id = Dom.generateId(id); }
Event.on(id, "mousedown", this.handleMouseDown, this, true); this.setHandleElId(id); this.hasOuterHandles = true;
}, unreg: function() { Event.removeListener(this.id, "mousedown", this.handleMouseDown); this._domRef = null; this.DDM._remove(this); }, isLocked: function() { return (this.DDM.isLocked() || this.locked); }, handleMouseDown: function(e, oDD) {
var button = e.which || e.button; if (this.primaryButtonOnly && button > 1) { return; }
if (this.isLocked()) { return; }
this.b4MouseDown(e); this.onMouseDown(e); this.DDM.refreshCache(this.groups); var pt = new YAHOO.util.Point(Event.getPageX(e), Event.getPageY(e)); if (!this.hasOuterHandles && !this.DDM.isOverTarget(pt, this)) { } else { if (this.clickValidator(e)) { this.setStartPosition(); this.DDM.handleMouseDown(e, this); this.DDM.stopEvent(e); } else { } } 
}, clickValidator: function(e) { var target = Event.getTarget(e); return (this.isValidHandleChild(target) && (this.id == this.handleElId || this.DDM.handleWasClicked(target, this.id))); }, getTargetCoord: function(iPageX, iPageY) {
var x = iPageX - this.deltaX; var y = iPageY - this.deltaY; if (this.constrainX) {
if (x < this.minX) { x = this.minX; }
if (x > this.maxX) { x = this.maxX; } 
}
if (this.constrainY) {
if (y < this.minY) { y = this.minY; }
if (y > this.maxY) { y = this.maxY; } 
}
x = this.getTick(x, this.xTicks); y = this.getTick(y, this.yTicks); return { x: x, y: y };
}, addInvalidHandleType: function(tagName) { var type = tagName.toUpperCase(); this.invalidHandleTypes[type] = type; }, addInvalidHandleId: function(id) {
if (typeof id !== "string") { id = Dom.generateId(id); }
this.invalidHandleIds[id] = id;
}, addInvalidHandleClass: function(cssClass) { this.invalidHandleClasses.push(cssClass); }, removeInvalidHandleType: function(tagName) { var type = tagName.toUpperCase(); delete this.invalidHandleTypes[type]; }, removeInvalidHandleId: function(id) {
if (typeof id !== "string") { id = Dom.generateId(id); }
delete this.invalidHandleIds[id];
}, removeInvalidHandleClass: function(cssClass) { for (var i = 0, len = this.invalidHandleClasses.length; i < len; ++i) { if (this.invalidHandleClasses[i] == cssClass) { delete this.invalidHandleClasses[i]; } } }, isValidHandleChild: function(node) {
var valid = true; var nodeName; try { nodeName = node.nodeName.toUpperCase(); } catch (e) { nodeName = node.nodeName; }
valid = valid && !this.invalidHandleTypes[nodeName]; valid = valid && !this.invalidHandleIds[node.id]; for (var i = 0, len = this.invalidHandleClasses.length; valid && i < len; ++i) { valid = !Dom.hasClass(node, this.invalidHandleClasses[i]); }
return valid;
}, setXTicks: function(iStartX, iTickSize) {
this.xTicks = []; this.xTickSize = iTickSize; var tickMap = {}; for (var i = this.initPageX; i >= this.minX; i = i - iTickSize) { if (!tickMap[i]) { this.xTicks[this.xTicks.length] = i; tickMap[i] = true; } }
for (i = this.initPageX; i <= this.maxX; i = i + iTickSize) { if (!tickMap[i]) { this.xTicks[this.xTicks.length] = i; tickMap[i] = true; } }
this.xTicks.sort(this.DDM.numericSort);
}, setYTicks: function(iStartY, iTickSize) {
this.yTicks = []; this.yTickSize = iTickSize; var tickMap = {}; for (var i = this.initPageY; i >= this.minY; i = i - iTickSize) { if (!tickMap[i]) { this.yTicks[this.yTicks.length] = i; tickMap[i] = true; } }
for (i = this.initPageY; i <= this.maxY; i = i + iTickSize) { if (!tickMap[i]) { this.yTicks[this.yTicks.length] = i; tickMap[i] = true; } }
this.yTicks.sort(this.DDM.numericSort);
}, setXConstraint: function(iLeft, iRight, iTickSize) {
this.leftConstraint = parseInt(iLeft, 10); this.rightConstraint = parseInt(iRight, 10); this.minX = this.initPageX - this.leftConstraint; this.maxX = this.initPageX + this.rightConstraint; if (iTickSize) { this.setXTicks(this.initPageX, iTickSize); }
this.constrainX = true;
}, clearConstraints: function() { this.constrainX = false; this.constrainY = false; this.clearTicks(); }, clearTicks: function() { this.xTicks = null; this.yTicks = null; this.xTickSize = 0; this.yTickSize = 0; }, setYConstraint: function(iUp, iDown, iTickSize) {
this.topConstraint = parseInt(iUp, 10); this.bottomConstraint = parseInt(iDown, 10); this.minY = this.initPageY - this.topConstraint; this.maxY = this.initPageY + this.bottomConstraint; if (iTickSize) { this.setYTicks(this.initPageY, iTickSize); }
this.constrainY = true;
}, resetConstraints: function() {
if (this.initPageX || this.initPageX === 0) { var dx = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0; var dy = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0; this.setInitPosition(dx, dy); } else { this.setInitPosition(); }
if (this.constrainX) { this.setXConstraint(this.leftConstraint, this.rightConstraint, this.xTickSize); }
if (this.constrainY) { this.setYConstraint(this.topConstraint, this.bottomConstraint, this.yTickSize); } 
}, getTick: function(val, tickArray) {
if (!tickArray) { return val; } else if (tickArray[0] >= val) { return tickArray[0]; } else {
for (var i = 0, len = tickArray.length; i < len; ++i) { var next = i + 1; if (tickArray[next] && tickArray[next] >= val) { var diff1 = val - tickArray[i]; var diff2 = tickArray[next] - val; return (diff2 > diff1) ? tickArray[i] : tickArray[next]; } }
return tickArray[tickArray.length - 1];
} 
}, toString: function() { return ("DragDrop " + this.id); } 
};
})(); YAHOO.util.DD = function(id, sGroup, config) { if (id) { this.init(id, sGroup, config); } }; YAHOO.extend(YAHOO.util.DD, YAHOO.util.DragDrop, { scroll: true, autoOffset: function(iPageX, iPageY) { var x = iPageX - this.startPageX; var y = iPageY - this.startPageY; this.setDelta(x, y); }, setDelta: function(iDeltaX, iDeltaY) { this.deltaX = iDeltaX; this.deltaY = iDeltaY; }, setDragElPos: function(iPageX, iPageY) { var el = this.getDragEl(); this.alignElWithMouse(el, iPageX, iPageY); }, alignElWithMouse: function(el, iPageX, iPageY) {
var oCoord = this.getTargetCoord(iPageX, iPageY); if (!this.deltaSetXY) { var aCoord = [oCoord.x, oCoord.y]; YAHOO.util.Dom.setXY(el, aCoord); var newLeft = parseInt(YAHOO.util.Dom.getStyle(el, "left"), 10); var newTop = parseInt(YAHOO.util.Dom.getStyle(el, "top"), 10); this.deltaSetXY = [newLeft - oCoord.x, newTop - oCoord.y]; } else { YAHOO.util.Dom.setStyle(el, "left", (oCoord.x + this.deltaSetXY[0]) + "px"); YAHOO.util.Dom.setStyle(el, "top", (oCoord.y + this.deltaSetXY[1]) + "px"); }
this.cachePosition(oCoord.x, oCoord.y); this.autoScroll(oCoord.x, oCoord.y, el.offsetHeight, el.offsetWidth);
}, cachePosition: function(iPageX, iPageY) { if (iPageX) { this.lastPageX = iPageX; this.lastPageY = iPageY; } else { var aCoord = YAHOO.util.Dom.getXY(this.getEl()); this.lastPageX = aCoord[0]; this.lastPageY = aCoord[1]; } }, autoScroll: function(x, y, h, w) {
if (this.scroll) {
var clientH = this.DDM.getClientHeight(); var clientW = this.DDM.getClientWidth(); var st = this.DDM.getScrollTop(); var sl = this.DDM.getScrollLeft(); var bot = h + y; var right = w + x; var toBot = (clientH + st - y - this.deltaY); var toRight = (clientW + sl - x - this.deltaX); var thresh = 40; var scrAmt = (document.all) ? 80 : 30; if (bot > clientH && toBot < thresh) { window.scrollTo(sl, st + scrAmt); }
if (y < st && st > 0 && y - st < thresh) { window.scrollTo(sl, st - scrAmt); }
if (right > clientW && toRight < thresh) { window.scrollTo(sl + scrAmt, st); }
if (x < sl && sl > 0 && x - sl < thresh) { window.scrollTo(sl - scrAmt, st); } 
} 
}, applyConfig: function() { YAHOO.util.DD.superclass.applyConfig.call(this); this.scroll = (this.config.scroll !== false); }, b4MouseDown: function(e) { this.setStartPosition(); this.autoOffset(YAHOO.util.Event.getPageX(e), YAHOO.util.Event.getPageY(e)); }, b4Drag: function(e) { this.setDragElPos(YAHOO.util.Event.getPageX(e), YAHOO.util.Event.getPageY(e)); }, toString: function() { return ("DD " + this.id); } 
}); YAHOO.util.DDProxy = function(id, sGroup, config) { if (id) { this.init(id, sGroup, config); this.initFrame(); } }; YAHOO.util.DDProxy.dragElId = "ygddfdiv"; YAHOO.extend(YAHOO.util.DDProxy, YAHOO.util.DD, { resizeFrame: true, centerFrame: false, createFrame: function() {
var self = this; var body = document.body; if (!body || !body.firstChild) { setTimeout(function() { self.createFrame(); }, 50); return; }
var div = this.getDragEl(); if (!div) { div = document.createElement("div"); div.id = this.dragElId; var s = div.style; s.position = "absolute"; s.visibility = "hidden"; s.cursor = "move"; s.border = "2px solid #aaa"; s.zIndex = 999; body.insertBefore(div, body.firstChild); } 
}, initFrame: function() { this.createFrame(); }, applyConfig: function() { YAHOO.util.DDProxy.superclass.applyConfig.call(this); this.resizeFrame = (this.config.resizeFrame !== false); this.centerFrame = (this.config.centerFrame); this.setDragElId(this.config.dragElId || YAHOO.util.DDProxy.dragElId); }, showFrame: function(iPageX, iPageY) {
var el = this.getEl(); var dragEl = this.getDragEl(); var s = dragEl.style; this._resizeProxy(); if (this.centerFrame) { this.setDelta(Math.round(parseInt(s.width, 10) / 2), Math.round(parseInt(s.height, 10) / 2)); }
this.setDragElPos(iPageX, iPageY); YAHOO.util.Dom.setStyle(dragEl, "visibility", "visible");
}, _resizeProxy: function() {
if (this.resizeFrame) {
var DOM = YAHOO.util.Dom; var el = this.getEl(); var dragEl = this.getDragEl(); var bt = parseInt(DOM.getStyle(dragEl, "borderTopWidth"), 10); var br = parseInt(DOM.getStyle(dragEl, "borderRightWidth"), 10); var bb = parseInt(DOM.getStyle(dragEl, "borderBottomWidth"), 10); var bl = parseInt(DOM.getStyle(dragEl, "borderLeftWidth"), 10); if (isNaN(bt)) { bt = 0; }
if (isNaN(br)) { br = 0; }
if (isNaN(bb)) { bb = 0; }
if (isNaN(bl)) { bl = 0; }
var newWidth = Math.max(0, el.offsetWidth - br - bl); var newHeight = Math.max(0, el.offsetHeight - bt - bb); DOM.setStyle(dragEl, "width", newWidth + "px"); DOM.setStyle(dragEl, "height", newHeight + "px");
} 
}, b4MouseDown: function(e) { this.setStartPosition(); var x = YAHOO.util.Event.getPageX(e); var y = YAHOO.util.Event.getPageY(e); this.autoOffset(x, y); this.setDragElPos(x, y); }, b4StartDrag: function(x, y) { this.showFrame(x, y); }, b4EndDrag: function(e) { YAHOO.util.Dom.setStyle(this.getDragEl(), "visibility", "hidden"); }, endDrag: function(e) { var DOM = YAHOO.util.Dom; var lel = this.getEl(); var del = this.getDragEl(); DOM.setStyle(del, "visibility", ""); DOM.setStyle(lel, "visibility", "hidden"); YAHOO.util.DDM.moveToEl(lel, del); DOM.setStyle(del, "visibility", "hidden"); DOM.setStyle(lel, "visibility", ""); }, toString: function() { return ("DDProxy " + this.id); } 
}); YAHOO.util.DDTarget = function(id, sGroup, config) { if (id) { this.initTarget(id, sGroup, config); } }; YAHOO.extend(YAHOO.util.DDTarget, YAHOO.util.DragDrop, { toString: function() { return ("DDTarget " + this.id); } }); YAHOO.register("dragdrop", YAHOO.util.DragDropMgr, { version: "2.2.2", build: "204" });
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) {
var configs = this._configs || {}; var config = configs[key]; if (!config) { return undefined; }
return config.value;
}, set: function(key, value, silent) {
var configs = this._configs || {}; var config = configs[key]; if (!config) { return false; }
return config.setValue(value, silent);
}, getAttributeKeys: function() {
var configs = this._configs; var keys = []; var config; for (var key in configs) { config = configs[key]; if (Lang.hasOwnProperty(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) {
var configs = this._configs || {}; if (configs[key]) { this.set(key, configs[key]._initialConfig.value, silent); return true; }
return false;
}, refresh: function(key, silent) { var configs = this._configs; key = ((Lang.isString(key)) ? [key] : key) || this.getAttributeKeys(); for (var i = 0, len = key.length; i < len; ++i) { if (configs[key[i]] && !Lang.isUndefined(configs[key[i]].value) && !Lang.isNull(configs[key[i]].value)) { configs[key[i]].refresh(silent); } } }, register: function(key, map) { this.setAttributeConfig(key, map); }, getAttributeConfig: function(key) {
var configs = this._configs || {}; var config = configs[key] || {}; var map = {}; for (key in config) { if (Lang.hasOwnProperty(config, key)) { map[key] = config[key]; } }
return map;
}, setAttributeConfig: function(key, map, init) { var configs = this._configs || {}; map = map || {}; if (!configs[key]) { map.name = key; configs[key] = new YAHOO.util.Attribute(map, this); } else { configs[key].configure(map, init); } }, configureAttribute: function(key, map, init) { this.setAttributeConfig(key, map, init); }, resetAttributeConfig: function(key) { var configs = this._configs || {}; configs[key].resetConfig(); }, 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); } 
}; 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);
}
this.subscribe.apply(this, arguments);
}, on: 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);
}, 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); } }, 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 || {}; 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.2.2", build: "204" });

