Jquery Shadowbox |
(function(window, undefined) {
var S = {
version: "3.0.3"
};
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("windows") > -1 || ua.indexOf("win32") > -1) {
S.isWindows = true
} else {
if (ua.indexOf("macintosh") > -1 || ua.indexOf("mac os x") > -1) {
S.isMac = true
} else {
if (ua.indexOf("linux") > -1) {
S.isLinux = true
}
}
}
S.isIE = ua.indexOf("msie") > -1;
S.isIE6 = ua.indexOf("msie 6") > -1;
S.isIE7 = ua.indexOf("msie 7") > -1;
S.isGecko = ua.indexOf("gecko") > -1 && ua.indexOf("safari") == -1;
S.isWebKit = ua.indexOf("applewebkit/") > -1;
var inlineId = /#(.+)$/,
galleryName = /^(light|shadow)box\[(.*?)\]/i,
inlineParam = /\s*([a-z_]*?)\s*=\s*(.+)\s*/,
fileExtension = /[0-9a-z]+$/i,
scriptPath = /(.+\/)shadowbox\.js/i;
var open = false,
initialized = false,
lastOptions = {},
slideDelay = 0,
slideStart, slideTimer;
S.current = -1;
S.dimensions = null;
S.ease = function(state) {
return 1 + Math.pow(state - 1, 3)
};
S.errorInfo = {
fla: {
name: "Flash",
url: "http://www.adobe.com/products/flashplayer/"
},
qt: {
name: "QuickTime",
url: "http://www.apple.com/quicktime/download/"
},
wmp: {
name: "Windows Media Player",
url: "http://www.microsoft.com/windows/windowsmedia/"
},
f4m: {
name: "Flip4Mac",
url: "http://www.flip4mac.com/wmv_download.htm"
}
};
S.gallery = [];
S.onReady = noop;
S.path = null;
S.player = null;
S.playerId = "sb-player";
S.options = {
animate: true,
animateFade: true,
autoplayMovies: true,
continuous: false,
enableKeys: true,
flashParams: {
bgcolor: "#000000",
allowfullscreen: true
},
flashVars: {},
flashVersion: "9.0.115",
handleOversize: "resize",
handleUnsupported: "link",
onChange: noop,
onClose: noop,
onFinish: noop,
onOpen: noop,
showMovieControls: true,
skipSetup: false,
slideshowDelay: 0,
viewportPadding: 20
};
S.getCurrent = function() {
return S.current > -1 ? S.gallery[S.current] : null
};
S.hasNext = function() {
return S.gallery.length > 1 && (S.current != S.gallery.length - 1 || S.options.continuous)
};
S.isOpen = function() {
return open
};
S.isPaused = function() {
return slideTimer == "pause"
};
S.applyOptions = function(options) {
lastOptions = apply({}, S.options);
apply(S.options, options)
};
S.revertOptions = function() {
apply(S.options, lastOptions)
};
S.init = function(options, callback) {
if (initialized) {
return
}
initialized = true;
if (S.skin.options) {
apply(S.options, S.skin.options)
}
if (options) {
apply(S.options, options)
}
if (!S.path) {
var path, scripts = document.getElementsByTagName("script");
for (var i = 0, len = scripts.length; i < len; ++i) {
path = scriptPath.exec(scripts[i].src);
if (path) {
S.path = path[1];
break
}
}
}
if (callback) {
S.onReady = callback
}
bindLoad()
};
S.open = function(obj) {
if (open) {
return
}
var gc = S.makeGallery(obj);
S.gallery = gc[0];
S.current = gc[1];
obj = S.getCurrent();
if (obj == null) {
return
}
S.applyOptions(obj.options || {});
filterGallery();
if (S.gallery.length) {
obj = S.getCurrent();
if (S.options.onOpen(obj) === false) {
return
}
open = true;
S.skin.onOpen(obj, load)
}
};
S.close = function() {
if (!open) {
return
}
open = false;
if (S.player) {
S.player.remove();
S.player = null
}
if (typeof slideTimer == "number") {
clearTimeout(slideTimer);
slideTimer = null
}
slideDelay = 0;
listenKeys(false);
S.options.onClose(S.getCurrent());
S.skin.onClose();
S.revertOptions()
};
S.play = function() {
if (!S.hasNext()) {
return
}
if (!slideDelay) {
slideDelay = S.options.slideshowDelay * 1000
}
if (slideDelay) {
slideStart = now();
slideTimer = setTimeout(function() {
slideDelay = slideStart = 0;
S.next()
}, slideDelay);
if (S.skin.onPlay) {
S.skin.onPlay()
}
}
};
S.pause = function() {
if (typeof slideTimer != "number") {
return
}
slideDelay = Math.max(0, slideDelay - (now() - slideStart));
if (slideDelay) {
clearTimeout(slideTimer);
slideTimer = "pause";
if (S.skin.onPause) {
S.skin.onPause()
}
}
};
S.change = function(index) {
if (!(index in S.gallery)) {
if (S.options.continuous) {
index = (index < 0 ? S.gallery.length + index : 0);
if (!(index in S.gallery)) {
return
}
} else {
return
}
}
S.current = index;
if (typeof slideTimer == "number") {
clearTimeout(slideTimer);
slideTimer = null;
slideDelay = slideStart = 0
}
S.options.onChange(S.getCurrent());
load(true)
};
S.next = function() {
S.change(S.current + 1)
};
S.previous = function() {
S.change(S.current - 1)
};
S.setDimensions = function(height, width, maxHeight, maxWidth, topBottom, leftRight, padding, preserveAspect) {
var originalHeight = height,
originalWidth = width;
var extraHeight = 2 * padding + topBottom;
if (height + extraHeight > maxHeight) {
height = maxHeight - extraHeight
}
var extraWidth = 2 * padding + leftRight;
if (width + extraWidth > maxWidth) {
width = maxWidth - extraWidth
}
var changeHeight = (originalHeight - height) / originalHeight,
changeWidth = (originalWidth - width) / originalWidth,
oversized = (changeHeight > 0 || changeWidth > 0);
if (preserveAspect && oversized) {
if (changeHeight > changeWidth) {
width = Math.round((originalWidth / originalHeight) * height)
} else {
if (changeWidth > changeHeight) {
height = Math.round((originalHeight / originalWidth) * width)
}
}
}
S.dimensions = {
height: height + topBottom,
width: width + leftRight,
innerHeight: height,
innerWidth: width,
top: Math.floor((maxHeight - (height + extraHeight)) / 2 + padding),
left: Math.floor((maxWidth - (width + extraWidth)) / 2 + padding),
oversized: oversized
};
return S.dimensions
};
S.makeGallery = function(obj) {
var gallery = [],
current = -1;
if (typeof obj == "string") {
obj = [obj]
}
if (typeof obj.length == "number") {
each(obj, function(i, o) {
if (o.content) {
gallery[i] = o
} else {
gallery[i] = {
content: o
}
}
});
current = 0
} else {
if (obj.tagName) {
var cacheObj = S.getCache(obj);
obj = cacheObj ? cacheObj : S.makeObject(obj)
}
if (obj.gallery) {
gallery = [];
var o;
for (var key in S.cache) {
o = S.cache[key];
if (o.gallery && o.gallery == obj.gallery) {
if (current == -1 && o.content == obj.content) {
current = gallery.length
}
gallery.push(o)
}
}
if (current == -1) {
gallery.unshift(obj);
current = 0
}
} else {
gallery = [obj];
current = 0
}
}
each(gallery, function(i, o) {
gallery[i] = apply({}, o)
});
return [gallery, current]
};
S.makeObject = function(link, options) {
var obj = {
content: link.href,
title: link.getAttribute("title") || "",
link: link
};
if (options) {
options = apply({}, options);
each(["player", "title", "height", "width", "gallery"], function(i, o) {
if (typeof options[o] != "undefined") {
obj[o] = options[o];
delete options[o]
}
});
obj.options = options
} else {
obj.options = {}
}
if (!obj.player) {
obj.player = S.getPlayer(obj.content)
}
var rel = link.getAttribute("rel");
if (rel) {
var match = rel.match(galleryName);
if (match) {
obj.gallery = escape(match[2])
}
each(rel.split(";"), function(i, p) {
match = p.match(inlineParam);
if (match) {
obj[match[1]] = match[2]
}
})
}
return obj
};
S.getPlayer = function(content) {
if (content.indexOf("#") > -1 && content.indexOf(document.location.href) == 0) {
return "inline"
}
var q = content.indexOf("?");
if (q > -1) {
content = content.substring(0, q)
}
var ext, m = content.match(fileExtension);
if (m) {
ext = m[0].toLowerCase()
}
if (ext) {
if (S.img && S.img.ext.indexOf(ext) > -1) {
return "img"
}
if (S.swf && S.swf.ext.indexOf(ext) > -1) {
return "swf"
}
if (S.flv && S.flv.ext.indexOf(ext) > -1) {
return "flv"
}
if (S.qt && S.qt.ext.indexOf(ext) > -1) {
if (S.wmp && S.wmp.ext.indexOf(ext) > -1) {
return "qtwmp"
} else {
return "qt"
}
}
if (S.wmp && S.wmp.ext.indexOf(ext) > -1) {
return "wmp"
}
}
return "iframe"
};
function filterGallery() {
var err = S.errorInfo,
plugins = S.plugins,
obj, remove, needed, m, format, replace, inlineEl, flashVersion;
for (var i = 0; i < S.gallery.length; ++i) {
obj = S.gallery[i];
remove = false;
needed = null;
switch (obj.player) {
case "flv":
case "swf":
if (!plugins.fla) {
needed = "fla"
}
break;
case "qt":
if (!plugins.qt) {
needed = "qt"
}
break;
case "wmp":
if (S.isMac) {
if (plugins.qt && plugins.f4m) {
obj.player = "qt"
} else {
needed = "qtf4m"
}
} else {
if (!plugins.wmp) {
needed = "wmp"
}
}
break;
case "qtwmp":
if (plugins.qt) {
obj.player = "qt"
} else {
if (plugins.wmp) {
obj.player = "wmp"
} else {
needed = "qtwmp"
}
}
break
}
if (needed) {
if (S.options.handleUnsupported == "link") {
switch (needed) {
case "qtf4m":
format = "shared";
replace = [err.qt.url, err.qt.name, err.f4m.url, err.f4m.name];
break;
case "qtwmp":
format = "either";
replace = [err.qt.url, err.qt.name, err.wmp.url, err.wmp.name];
break;
default:
format = "single";
replace = [err[needed].url, err[needed].name]
}
obj.player = "html";
obj.content = '<div class="sb-message">' + sprintf(S.lang.errors[format], replace) + "</div>"
} else {
remove = true
}
} else {
if (obj.player == "inline") {
m = inlineId.exec(obj.content);
if (m) {
inlineEl = get(m[1]);
if (inlineEl) {
obj.content = inlineEl.innerHTML
} else {
remove = true
}
} else {
remove = true
}
} else {
if (obj.player == "swf" || obj.player == "flv") {
flashVersion = (obj.options && obj.options.flashVersion) || S.options.flashVersion;
if (S.flash && !S.flash.hasFlashPlayerVersion(flashVersion)) {
obj.width = 310;
obj.height = 177
}
}
}
}
if (remove) {
S.gallery.splice(i, 1);
if (i < S.current) {
--S.current
} else {
if (i == S.current) {
S.current = i > 0 ? i - 1 : i
}
}--i
}
}
}
function listenKeys(on) {
if (!S.options.enableKeys) {
return
}(on ? addEvent : removeEvent)(document, "keydown", handleKey)
}
function handleKey(e) {
if (e.metaKey || e.shiftKey || e.altKey || e.ctrlKey) {
return
}
var code = keyCode(e),
handler;
switch (code) {
case 81:
case 88:
case 27:
handler = S.close;
break;
case 37:
handler = S.previous;
break;
case 39:
handler = S.next;
break;
case 32:
handler = typeof slideTimer == "number" ? S.pause : S.play;
break
}
if (handler) {
preventDefault(e);
handler()
}
}
function load(changing) {
listenKeys(false);
var obj = S.getCurrent();
var player = (obj.player == "inline" ? "html" : obj.player);
if (typeof S[player] != "function") {
throw "unknown player " + player
}
if (changing) {
S.player.remove();
S.revertOptions();
S.applyOptions(obj.options || {})
}
S.player = new S[player](obj, S.playerId);
if (S.gallery.length > 1) {
var next = S.gallery[S.current + 1] || S.gallery[0];
if (next.player == "img") {
var a = new Image();
a.src = next.content
}
var prev = S.gallery[S.current - 1] || S.gallery[S.gallery.length - 1];
if (prev.player == "img") {
var b = new Image();
b.src = prev.content
}
}
S.skin.onLoad(changing, waitReady)
}
function waitReady() {
if (!open) {
return
}
if (typeof S.player.ready != "undefined") {
var timer = setInterval(function() {
if (open) {
if (S.player.ready) {
clearInterval(timer);
timer = null;
S.skin.onReady(show)
}
} else {
clearInterval(timer);
timer = null
}
}, 10)
} else {
S.skin.onReady(show)
}
}
function show() {
if (!open) {
return
}
S.player.append(S.skin.body, S.dimensions);
S.skin.onShow(finish)
}
function finish() {
if (!open) {
return
}
if (S.player.onLoad) {
S.player.onLoad()
}
S.options.onFinish(S.getCurrent());
if (!S.isPaused()) {
S.play()
}
listenKeys(true)
}
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(obj, from) {
var len = this.length >>> 0;
from = from || 0;
if (from < 0) {
from += len
}
for (; from < len; ++from) {
if (from in this && this[from] === obj) {
return from
}
}
return -1
}
}
function now() {
return (new Date).getTime()
}
function apply(original, extension) {
for (var property in extension) {
original[property] = extension[property]
}
return original
}
function each(obj, callback) {
var i = 0,
len = obj.length;
for (var value = obj[0]; i < len && callback.call(value, i, value) !== false; value = obj[++i]) {}
}
function sprintf(str, replace) {
return str.replace(/\{(\w+?)\}/g, function(match, i) {
return replace[i]
})
}
function noop() {}
function get(id) {
return document.getElementById(id)
}
function remove(el) {
el.parentNode.removeChild(el)
}
var supportsOpacity = true,
supportsFixed = true;
function checkSupport() {
var body = document.body,
div = document.createElement("div");
supportsOpacity = typeof div.style.opacity === "string";
div.style.position = "fixed";
div.style.margin = 0;
div.style.top = "20px";
body.appendChild(div, body.firstChild);
supportsFixed = div.offsetTop == 20;
body.removeChild(div)
}
S.getStyle = (function() {
var opacity = /opacity=([^)]*)/,
getComputedStyle = document.defaultView && document.defaultView.getComputedStyle;
return function(el, style) {
var ret;
if (!supportsOpacity && style == "opacity" && el.currentStyle) {
ret = opacity.test(el.currentStyle.filter || "") ? (parseFloat(RegExp.$1) / 100) + "" : "";
return ret === "" ? "1" : ret
}
if (getComputedStyle) {
var computedStyle = getComputedStyle(el, null);
if (computedStyle) {
ret = computedStyle[style]
}
if (style == "opacity" && ret == "") {
ret = "1"
}
} else {
ret = el.currentStyle[style]
}
return ret
}
})();
S.appendHTML = function(el, html) {
if (el.insertAdjacentHTML) {
el.insertAdjacentHTML("BeforeEnd", html)
} else {
if (el.lastChild) {
var range = el.ownerDocument.createRange();
range.setStartAfter(el.lastChild);
var frag = range.createContextualFragment(html);
el.appendChild(frag)
} else {
el.innerHTML = html
}
}
};
S.getWindowSize = function(dimension) {
if (document.compatMode === "CSS1Compat") {
return document.documentElement["client" + dimension]
}
return document.body["client" + dimension]
};
S.setOpacity = function(el, opacity) {
var style = el.style;
if (supportsOpacity) {
style.opacity = (opacity == 1 ? "" : opacity)
} else {
style.zoom = 1;
if (opacity == 1) {
if (typeof style.filter == "string" && (/alpha/i).test(style.filter)) {
style.filter = style.filter.replace(/\s*[\w\.]*alpha\([^\)]*\);?/gi, "")
}
} else {
style.filter = (style.filter || "").replace(/\s*[\w\.]*alpha\([^\)]*\)/gi, "") + " alpha(opacity=" + (opacity * 100) + ")"
}
}
};
S.clearOpacity = function(el) {
S.setOpacity(el, 1)
};
function getTarget(e) {
return e.target
}
function getPageXY(e) {
return [e.pageX, e.pageY]
}
function preventDefault(e) {
e.preventDefault()
}
function keyCode(e) {
return e.keyCode
}
function addEvent(el, type, handler) {
jQuery(el).bind(type, handler)
}
function removeEvent(el, type, handler) {
jQuery(el).unbind(type, handler)
}
jQuery.fn.shadowbox = function(options) {
return this.each(function() {
var el = jQuery(this);
var opts = jQuery.extend({}, options || {}, jQuery.metadata ? el.metadata() : jQuery.meta ? el.data() : {});
var cls = this.className || "";
opts.width = parseInt((cls.match(/w:(\d+)/) || [])[1]) || opts.width;
opts.height = parseInt((cls.match(/h:(\d+)/) || [])[1]) || opts.height;
Shadowbox.setup(el, opts)
})
};
var loaded = false,
DOMContentLoaded;
if (document.addEventListener) {
DOMContentLoaded = function() {
document.removeEventListener("DOMContentLoaded", DOMContentLoaded, false);
S.load()
}
} else {
if (document.attachEvent) {
DOMContentLoaded = function() {
if (document.readyState === "complete") {
document.detachEvent("onreadystatechange", DOMContentLoaded);
S.load()
}
}
}
}
function doScrollCheck() {
if (loaded) {
return
}
try {
document.documentElement.doScroll("left")
} catch (e) {
setTimeout(doScrollCheck, 1);
return
}
S.load()
}
function bindLoad() {
if (document.readyState === "complete") {
return S.load()
}
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", DOMContentLoaded, false);
window.addEventListener("load", S.load, false)
} else {
if (document.attachEvent) {
document.attachEvent("onreadystatechange", DOMContentLoaded);
window.attachEvent("onload", S.load);
var topLevel = false;
try {
topLevel = window.frameElement === null
} catch (e) {}
if (document.documentElement.doScroll && topLevel) {
doScrollCheck()
}
}
}
}
S.load = function() {
if (loaded) {
return
}
if (!document.body) {
return setTimeout(S.load, 13)
}
loaded = true;
checkSupport();
S.onReady();
if (!S.options.skipSetup) {
S.setup()
}
S.skin.init()
};
S.plugins = {};
if (navigator.plugins && navigator.plugins.length) {
var names = [];
each(navigator.plugins, function(i, p) {
names.push(p.name)
});
names = names.join(",");
var f4m = names.indexOf("Flip4Mac") > -1;
S.plugins = {
fla: names.indexOf("Shockwave Flash") > -1,
qt: names.indexOf("QuickTime") > -1,
wmp: !f4m && names.indexOf("Windows Media") > -1,
f4m: f4m
}
} else {
var detectPlugin = function(name) {
var axo;
try {
axo = new ActiveXObject(name)
} catch (e) {}
return !!axo
};
S.plugins = {
fla: detectPlugin("ShockwaveFlash.ShockwaveFlash"),
qt: detectPlugin("QuickTime.QuickTime"),
wmp: detectPlugin("wmplayer.ocx"),
f4m: false
}
}
var relAttr = /^(light|shadow)box/i,
expando = "shadowboxCacheKey",
cacheKey = 1;
S.cache = {};
S.select = function(selector) {
var links = [];
if (!selector) {
var rel;
each(document.getElementsByTagName("a"), function(i, el) {
rel = el.getAttribute("rel");
if (rel && relAttr.test(rel)) {
links.push(el)
}
})
} else {
var length = selector.length;
if (length) {
if (typeof selector == "string") {
if (S.find) {
links = S.find(selector)
}
} else {
if (length == 2 && typeof selector[0] == "string" && selector[1].nodeType) {
if (S.find) {
links = S.find(selector[0], selector[1])
}
} else {
for (var i = 0; i < length; ++i) {
links[i] = selector[i]
}
}
}
} else {
links.push(selector)
}
}
return links
};
S.setup = function(selector, options) {
each(S.select(selector), function(i, link) {
S.addCache(link, options)
})
};
S.teardown = function(selector) {
each(S.select(selector), function(i, link) {
S.removeCache(link)
})
};
S.addCache = function(link, options) {
var key = link[expando];
if (key == undefined) {
key = cacheKey++;
link[expando] = key;
addEvent(link, "click", handleClick)
}
S.cache[key] = S.makeObject(link, options)
};
S.removeCache = function(link) {
removeEvent(link, "click", handleClick);
delete S.cache[link[expando]];
link[expando] = null
};
S.getCache = function(link) {
var key = link[expando];
return (key in S.cache && S.cache[key])
};
S.clearCache = function() {
for (var key in S.cache) {
S.removeCache(S.cache[key].link)
}
S.cache = {}
};
function handleClick(e) {
S.open(this);
if (S.gallery.length) {
preventDefault(e)
}
}
S.find = (function() {
var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
done = 0,
toString = Object.prototype.toString,
hasDuplicate = false,
baseHasDuplicate = true;
[0, 0].sort(function() {
baseHasDuplicate = false;
return 0
});
var Sizzle = function(selector, context, results, seed) {
results = results || [];
var origContext = context = context || document;
if (context.nodeType !== 1 && context.nodeType !== 9) {
return []
}
if (!selector || typeof selector !== "string") {
return results
}
var parts = [],
m, set, checkSet, extra, prune = true,
contextXML = isXML(context),
soFar = selector;
while ((chunker.exec(""), m = chunker.exec(soFar)) !== null) {
soFar = m[3];
parts.push(m[1]);
if (m[2]) {
extra = m[3];
break
}
}
if (parts.length > 1 && origPOS.exec(selector)) {
if (parts.length === 2 && Expr.relative[parts[0]]) {
set = posProcess(parts[0] + parts[1], context)
} else {
set = Expr.relative[parts[0]] ? [context] : Sizzle(parts.shift(), context);
while (parts.length) {
selector = parts.shift();
if (Expr.relative[selector]) {
selector += parts.shift()
}
set = posProcess(selector, set)
}
}
} else {
if (!seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1])) {
var ret = Sizzle.find(parts.shift(), context, contextXML);
context = ret.expr ? Sizzle.filter(ret.expr, ret.set)[0] : ret.set[0]
}
if (context) {
var ret = seed ? {
expr: parts.pop(),
set: makeArray(seed)
} : Sizzle.find(parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML);
set = ret.expr ? Sizzle.filter(ret.expr, ret.set) : ret.set;
if (parts.length > 0) {
checkSet = makeArray(set)
} else {
prune = false
}
while (parts.length) {
var cur = parts.pop(),
pop = cur;
if (!Expr.relative[cur]) {
cur = ""
} else {
pop = parts.pop()
}
if (pop == null) {
pop = context
}
Expr.relative[cur](checkSet, pop, contextXML)
}
} else {
checkSet = parts = []
}
}
if (!checkSet) {
checkSet = set
}
if (!checkSet) {
throw "Syntax error, unrecognized expression: " + (cur || selector)
}
if (toString.call(checkSet) === "[object Array]") {
if (!prune) {
results.push.apply(results, checkSet)
} else {
if (context && context.nodeType === 1) {
for (var i = 0; checkSet[i] != null; i++) {
if (checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i]))) {
results.push(set[i])
}
}
} else {
for (var i = 0; checkSet[i] != null; i++) {
if (checkSet[i] && checkSet[i].nodeType === 1) {
results.push(set[i])
}
}
}
}
} else {
makeArray(checkSet, results)
}
if (extra) {
Sizzle(extra, origContext, results, seed);
Sizzle.uniqueSort(results)
}
return results
};
Sizzle.uniqueSort = function(results) {
if (sortOrder) {
hasDuplicate = baseHasDuplicate;
results.sort(sortOrder);
if (hasDuplicate) {
for (var i = 1; i < results.length; i++) {
if (results[i] === results[i - 1]) {
results.splice(i--, 1)
}
}
}
}
return results
};
Sizzle.matches = function(expr, set) {
return Sizzle(expr, null, null, set)
};
Sizzle.find = function(expr, context, isXML) {
var set, match;
if (!expr) {
return []
}
for (var i = 0, l = Expr.order.length; i < l; i++) {
var type = Expr.order[i],
match;
if ((match = Expr.leftMatch[type].exec(expr))) {
var left = match[1];
match.splice(1, 1);
if (left.substr(left.length - 1) !== "\\") {
match[1] = (match[1] || "").replace(/\\/g, "");
set = Expr.find[type](match, context, isXML);
if (set != null) {
expr = expr.replace(Expr.match[type], "");
break
}
}
}
}
if (!set) {
set = context.getElementsByTagName("*")
}
return {
set: set,
expr: expr
}
};
Sizzle.filter = function(expr, set, inplace, not) {
var old = expr,
result = [],
curLoop = set,
match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]);
while (expr && set.length) {
for (var type in Expr.filter) {
if ((match = Expr.match[type].exec(expr)) != null) {
var filter = Expr.filter[type],
found, item;
anyFound = false;
if (curLoop === result) {
result = []
}
if (Expr.preFilter[type]) {
match = Expr.preFilter[type](match, curLoop, inplace, result, not, isXMLFilter);
if (!match) {
anyFound = found = true
} else {
if (match === true) {
continue
}
}
}
if (match) {
for (var i = 0;
(item = curLoop[i]) != null; i++) {
if (item) {
found = filter(item, match, i, curLoop);
var pass = not ^ !! found;
if (inplace && found != null) {
if (pass) {
anyFound = true
} else {
curLoop[i] = false
}
} else {
if (pass) {
result.push(item);
anyFound = true
}
}
}
}
}
if (found !== undefined) {
if (!inplace) {
curLoop = result
}
expr = expr.replace(Expr.match[type], "");
if (!anyFound) {
return []
}
break
}
}
}
if (expr === old) {
if (anyFound == null) {
throw "Syntax error, unrecognized expression: " + expr
} else {
break
}
}
old = expr
}
return curLoop
};
var Expr = Sizzle.selectors = {
order: ["ID", "NAME", "TAG"],
match: {
ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
},
leftMatch: {},
attrMap: {
"class": "className",
"for": "htmlFor"
},
attrHandle: {
href: function(elem) {
return elem.getAttribute("href")
}
},
relative: {
"+": function(checkSet, part) {
var isPartStr = typeof part === "string",
isTag = isPartStr && !/\W/.test(part),
isPartStrNotTag = isPartStr && !isTag;
if (isTag) {
part = part.toLowerCase()
}
for (var i = 0, l = checkSet.length, elem; i < l; i++) {
if ((elem = checkSet[i])) {
while ((elem = elem.previousSibling) && elem.nodeType !== 1) {}
checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? elem || false : elem === part
}
}
if (isPartStrNotTag) {
Sizzle.filter(part, checkSet, true)
}
},
">": function(checkSet, part) {
var isPartStr = typeof part === "string";
if (isPartStr && !/\W/.test(part)) {
part = part.toLowerCase();
for (var i = 0, l = checkSet.length; i < l; i++) {
var elem = checkSet[i];
if (elem) {
var parent = elem.parentNode;
checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false
}
}
} else {
for (var i = 0, l = checkSet.length; i < l; i++) {
var elem = checkSet[i];
if (elem) {
checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part
}
}
if (isPartStr) {
Sizzle.filter(part, checkSet, true)
}
}
},
"": function(checkSet, part, isXML) {
var doneName = done++,
checkFn = dirCheck;
if (typeof part === "string" && !/\W/.test(part)) {
var nodeCheck = part = part.toLowerCase();
checkFn = dirNodeCheck
}
checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML)
},
"~": function(checkSet, part, isXML) {
var doneName = done++,
checkFn = dirCheck;
if (typeof part === "string" && !/\W/.test(part)) {
var nodeCheck = part = part.toLowerCase();
checkFn = dirNodeCheck
}
checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML)
}
},
find: {
ID: function(match, context, isXML) {
if (typeof context.getElementById !== "undefined" && !isXML) {
var m = context.getElementById(match[1]);
return m ? [m] : []
}
},
NAME: function(match, context) {
if (typeof context.getElementsByName !== "undefined") {
var ret = [],
results = context.getElementsByName(match[1]);
for (var i = 0, l = results.length; i < l; i++) {
if (results[i].getAttribute("name") === match[1]) {
ret.push(results[i])
}
}
return ret.length === 0 ? null : ret
}
},
TAG: function(match, context) {
return context.getElementsByTagName(match[1])
}
},
preFilter: {
CLASS: function(match, curLoop, inplace, result, not, isXML) {
match = " " + match[1].replace(/\\/g, "") + " ";
if (isXML) {
return match
}
for (var i = 0, elem;
(elem = curLoop[i]) != null; i++) {
if (elem) {
if (not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0)) {
if (!inplace) {
result.push(elem)
}
} else {
if (inplace) {
curLoop[i] = false
}
}
}
}
return false
},
ID: function(match) {
return match[1].replace(/\\/g, "")
},
TAG: function(match, curLoop) {
return match[1].toLowerCase()
},
CHILD: function(match) {
if (match[1] === "nth") {
var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || !/\D/.test(match[2]) && "0n+" + match[2] || match[2]);
match[2] = (test[1] + (test[2] || 1)) - 0;
match[3] = test[3] - 0
}
match[0] = done++;
return match
},
ATTR: function(match, curLoop, inplace, result, not, isXML) {
var name = match[1].replace(/\\/g, "");
if (!isXML && Expr.attrMap[name]) {
match[1] = Expr.attrMap[name]
}
if (match[2] === "~=") {
match[4] = " " + match[4] + " "
}
return match
},
PSEUDO: function(match, curLoop, inplace, result, not) {
if (match[1] === "not") {
if ((chunker.exec(match[3]) || "").length > 1 || /^\w/.test(match[3])) {
match[3] = Sizzle(match[3], null, null, curLoop)
} else {
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
if (!inplace) {
result.push.apply(result, ret)
}
return false
}
} else {
if (Expr.match.POS.test(match[0]) || Expr.match.CHILD.test(match[0])) {
return true
}
}
return match
},
POS: function(match) {
match.unshift(true);
return match
}
},
filters: {
enabled: function(elem) {
return elem.disabled === false && elem.type !== "hidden"
},
disabled: function(elem) {
return elem.disabled === true
},
checked: function(elem) {
return elem.checked === true
},
selected: function(elem) {
elem.parentNode.selectedIndex;
return elem.selected === true
},
parent: function(elem) {
return !!elem.firstChild
},
empty: function(elem) {
return !elem.firstChild
},
has: function(elem, i, match) {
return !!Sizzle(match[3], elem).length
},
header: function(elem) {
return /h\d/i.test(elem.nodeName)
},
text: function(elem) {
return "text" === elem.type
},
radio: function(elem) {
return "radio" === elem.type
},
checkbox: function(elem) {
return "checkbox" === elem.type
},
file: function(elem) {
return "file" === elem.type
},
password: function(elem) {
return "password" === elem.type
},
submit: function(elem) {
return "submit" === elem.type
},
image: function(elem) {
return "image" === elem.type
},
reset: function(elem) {
return "reset" === elem.type
},
button: function(elem) {
return "button" === elem.type || elem.nodeName.toLowerCase() === "button"
},
input: function(elem) {
return /input|select|textarea|button/i.test(elem.nodeName)
}
},
setFilters: {
first: function(elem, i) {
return i === 0
},
last: function(elem, i, match, array) {
return i === array.length - 1
},
even: function(elem, i) {
return i % 2 === 0
},
odd: function(elem, i) {
return i % 2 === 1
},
lt: function(elem, i, match) {
return i < match[3] - 0
},
gt: function(elem, i, match) {
return i > match[3] - 0
},
nth: function(elem, i, match) {
return match[3] - 0 === i
},
eq: function(elem, i, match) {
return match[3] - 0 === i
}
},
filter: {
PSEUDO: function(elem, match, i, array) {
var name = match[1],
filter = Expr.filters[name];
if (filter) {
return filter(elem, i, match, array)
} else {
if (name === "contains") {
return (elem.textContent || elem.innerText || getText([elem]) || "").indexOf(match[3]) >= 0
} else {
if (name === "not") {
var not = match[3];
for (var i = 0, l = not.length; i < l; i++) {
if (not[i] === elem) {
return false
}
}
return true
} else {
throw "Syntax error, unrecognized expression: " + name
}
}
}
},
CHILD: function(elem, match) {
var type = match[1],
node = elem;
switch (type) {
case "only":
case "first":
while ((node = node.previousSibling)) {
if (node.nodeType === 1) {
return false
}
}
if (type === "first") {
return true
}
node = elem;
case "last":
while ((node = node.nextSibling)) {
if (node.nodeType === 1) {
return false
}
}
return true;
case "nth":
var first = match[2],
last = match[3];
if (first === 1 && last === 0) {
return true
}
var doneName = match[0],
parent = elem.parentNode;
if (parent && (parent.sizcache !== doneName || !elem.nodeIndex)) {
var count = 0;
for (node = parent.firstChild; node; node = node.nextSibling) {
if (node.nodeType === 1) {
node.nodeIndex = ++count
}
}
parent.sizcache = doneName
}
var diff = elem.nodeIndex - last;
if (first === 0) {
return diff === 0
} else {
return (diff % first === 0 && diff / first >= 0)
}
}
},
ID: function(elem, match) {
return elem.nodeType === 1 && elem.getAttribute("id") === match
},
TAG: function(elem, match) {
return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match
},
CLASS: function(elem, match) {
return (" " + (elem.className || elem.getAttribute("class")) + " ").indexOf(match) > -1
},
ATTR: function(elem, match) {
var name = match[1],
result = Expr.attrHandle[name] ? Expr.attrHandle[name](elem) : elem[name] != null ? elem[name] : elem.getAttribute(name),
value = result + "",
type = match[2],
check = match[4];
return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value !== check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false
},
POS: function(elem, match, i, array) {
var name = match[2],
filter = Expr.setFilters[name];
if (filter) {
return filter(elem, i, match, array)
}
}
}
};
var origPOS = Expr.match.POS;
for (var type in Expr.match) {
Expr.match[type] = new RegExp(Expr.match[type].source + /(?![^\[]*\])(?![^\(]*\))/.source);
Expr.leftMatch[type] = new RegExp(/(^(?:.|\r|\n)*?)/.source + Expr.match[type].source)
}
var makeArray = function(array, results) {
array = Array.prototype.slice.call(array, 0);
if (results) {
results.push.apply(results, array);
return results
}
return array
};
try {
Array.prototype.slice.call(document.documentElement.childNodes, 0)
} catch (e) {
makeArray = function(array, results) {
var ret = results || [];
if (toString.call(array) === "[object Array]") {
Array.prototype.push.apply(ret, array)
} else {
if (typeof array.length === "number") {
for (var i = 0, l = array.length; i < l; i++) {
ret.push(array[i])
}
} else {
for (var i = 0; array[i]; i++) {
ret.push(array[i])
}
}
}
return ret
}
}
var sortOrder;
if (document.documentElement.compareDocumentPosition) {
sortOrder = function(a, b) {
if (!a.compareDocumentPosition || !b.compareDocumentPosition) {
if (a == b) {
hasDuplicate = true
}
return a.compareDocumentPosition ? -1 : 1
}
var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
if (ret === 0) {
hasDuplicate = true
}
return ret
}
} else {
if ("sourceIndex" in document.documentElement) {
sortOrder = function(a, b) {
if (!a.sourceIndex || !b.sourceIndex) {
if (a == b) {
hasDuplicate = true
}
return a.sourceIndex ? -1 : 1
}
var ret = a.sourceIndex - b.sourceIndex;
if (ret === 0) {
hasDuplicate = true
}
return ret
}
} else {
if (document.createRange) {
sortOrder = function(a, b) {
if (!a.ownerDocument || !b.ownerDocument) {
if (a == b) {
hasDuplicate = true
}
return a.ownerDocument ? -1 : 1
}
var aRange = a.ownerDocument.createRange(),
bRange = b.ownerDocument.createRange();
aRange.setStart(a, 0);
aRange.setEnd(a, 0);
bRange.setStart(b, 0);
bRange.setEnd(b, 0);
var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
if (ret === 0) {
hasDuplicate = true
}
return ret
}
}
}
}
function getText(elems) {
var ret = "",
elem;
for (var i = 0; elems[i]; i++) {
elem = elems[i];
if (elem.nodeType === 3 || elem.nodeType === 4) {
ret += elem.nodeValue
} else {
if (elem.nodeType !== 8) {
ret += getText(elem.childNodes)
}
}
}
return ret
}(function() {
var form = document.createElement("div"),
id = "script" + (new Date).getTime();
form.innerHTML = "<a name='" + id + "'/>";
var root = document.documentElement;
root.insertBefore(form, root.firstChild);
if (document.getElementById(id)) {
Expr.find.ID = function(match, context, isXML) {
if (typeof context.getElementById !== "undefined" && !isXML) {
var m = context.getElementById(match[1]);
return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []
}
};
Expr.filter.ID = function(elem, match) {
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
return elem.nodeType === 1 && node && node.nodeValue === match
}
}
root.removeChild(form);
root = form = null
})();
(function() {
var div = document.createElement("div");
div.appendChild(document.createComment(""));
if (div.getElementsByTagName("*").length > 0) {
Expr.find.TAG = function(match, context) {
var results = context.getElementsByTagName(match[1]);
if (match[1] === "*") {
var tmp = [];
for (var i = 0; results[i]; i++) {
if (results[i].nodeType === 1) {
tmp.push(results[i])
}
}
results = tmp
}
return results
}
}
div.innerHTML = "<a href='#'></a>";
if (div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#") {
Expr.attrHandle.href = function(elem) {
return elem.getAttribute("href", 2)
}
}
div = null
})();
if (document.querySelectorAll) {
(function() {
var oldSizzle = Sizzle,
div = document.createElement("div");
div.innerHTML = "<p class='TEST'></p>";
if (div.querySelectorAll && div.querySelectorAll(".TEST").length === 0) {
return
}
Sizzle = function(query, context, extra, seed) {
context = context || document;
if (!seed && context.nodeType === 9 && !isXML(context)) {
try {
return makeArray(context.querySelectorAll(query), extra)
} catch (e) {}
}
return oldSizzle(query, context, extra, seed)
};
for (var prop in oldSizzle) {
Sizzle[prop] = oldSizzle[prop]
}
div = null
})()
}(function() {
var div = document.createElement("div");
div.innerHTML = "<div class='test e'></div><div class='test'></div>";
if (!div.getElementsByClassName || div.getElementsByClassName("e").length === 0) {
return
}
div.lastChild.className = "e";
if (div.getElementsByClassName("e").length === 1) {
return
}
Expr.order.splice(1, 0, "CLASS");
Expr.find.CLASS = function(match, context, isXML) {
if (typeof context.getElementsByClassName !== "undefined" && !isXML) {
return context.getElementsByClassName(match[1])
}
};
div = null
})();
function dirNodeCheck(dir, cur, doneName, checkSet, nodeCheck, isXML) {
for (var i = 0, l = checkSet.length; i < l; i++) {
var elem = checkSet[i];
if (elem) {
elem = elem[dir];
var match = false;
while (elem) {
if (elem.sizcache === doneName) {
match = checkSet[elem.sizset];
break
}
if (elem.nodeType === 1 && !isXML) {
elem.sizcache = doneName;
elem.sizset = i
}
if (elem.nodeName.toLowerCase() === cur) {
match = elem;
break
}
elem = elem[dir]
}
checkSet[i] = match
}
}
}
function dirCheck(dir, cur, doneName, checkSet, nodeCheck, isXML) {
for (var i = 0, l = checkSet.length; i < l; i++) {
var elem = checkSet[i];
if (elem) {
elem = elem[dir];
var match = false;
while (elem) {
if (elem.sizcache === doneName) {
match = checkSet[elem.sizset];
break
}
if (elem.nodeType === 1) {
if (!isXML) {
elem.sizcache = doneName;
elem.sizset = i
}
if (typeof cur !== "string") {
if (elem === cur) {
match = true;
break
}
} else {
if (Sizzle.filter(cur, [elem]).length > 0) {
match = elem;
break
}
}
}
elem = elem[dir]
}
checkSet[i] = match
}
}
}
var contains = document.compareDocumentPosition ?
function(a, b) {
return a.compareDocumentPosition(b) & 16
} : function(a, b) {
return a !== b && (a.contains ? a.contains(b) : true)
};
var isXML = function(elem) {
var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
return documentElement ? documentElement.nodeName !== "HTML" : false
};
var posProcess = function(selector, context) {
var tmpSet = [],
later = "",
match, root = context.nodeType ? [context] : context;
while ((match = Expr.match.PSEUDO.exec(selector))) {
later += match[0];
selector = selector.replace(Expr.match.PSEUDO, "")
}
selector = Expr.relative[selector] ? selector + "*" : selector;
for (var i = 0, l = root.length; i < l; i++) {
Sizzle(selector, root[i], tmpSet)
}
return Sizzle.filter(later, tmpSet)
};
return Sizzle
})();
S.flash = (function() {
var swfobject = function() {
var UNDEF = "undefined",
OBJECT = "object",
SHOCKWAVE_FLASH = "Shockwave Flash",
SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
FLASH_MIME_TYPE = "application/x-shockwave-flash",
EXPRESS_INSTALL_ID = "SWFObjectExprInst",
win = window,
doc = document,
nav = navigator,
domLoadFnArr = [],
regObjArr = [],
objIdArr = [],
listenersArr = [],
script, timer = null,
storedAltContent = null,
storedAltContentId = null,
isDomLoaded = false,
isExpressInstallActive = false;
var ua = function() {
var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF,
playerVersion = [0, 0, 0],
d = null;
if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
d = nav.plugins[SHOCKWAVE_FLASH].description;
if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) {
d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
playerVersion[2] = /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, "$1"), 10) : 0
}
} else {
if (typeof win.ActiveXObject != UNDEF) {
var a = null,
fp6Crash = false;
try {
a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".7")
} catch (e) {
try {
a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".6");
playerVersion = [6, 0, 21];
a.AllowScriptAccess = "always"
} catch (e) {
if (playerVersion[0] == 6) {
fp6Crash = true
}
}
if (!fp6Crash) {
try {
a = new ActiveXObject(SHOCKWAVE_FLASH_AX)
} catch (e) {}
}
}
if (!fp6Crash && a) {
try {
d = a.GetVariable("$version");
if (d) {
d = d.split(" ")[1].split(",");
playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]
}
} catch (e) {}
}
}
}
var u = nav.userAgent.toLowerCase(),
p = nav.platform.toLowerCase(),
webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false,
ie = false,
windows = p ? /win/.test(p) : /win/.test(u),
mac = p ? /mac/.test(p) : /mac/.test(u);
return {
w3cdom: w3cdom,
pv: playerVersion,
webkit: webkit,
ie: ie,
win: windows,
mac: mac
}
}();
var onDomLoad = function() {
if (!ua.w3cdom) {
return
}
addDomLoadEvent(main);
if (ua.ie && ua.win) {
try {
doc.write("<script id=__ie_ondomload defer=true src=//:><\/script>");
script = getElementById("__ie_ondomload");
if (script) {
addListener(script, "onreadystatechange", checkReadyState)
}
} catch (e) {}
}
if (ua.webkit && typeof doc.readyState != UNDEF) {
timer = setInterval(function() {
if (/loaded|complete/.test(doc.readyState)) {
callDomLoadFunctions()
}
}, 10)
}
if (typeof doc.addEventListener != UNDEF) {
doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, null)
}
addLoadEvent(callDomLoadFunctions)
}();
function checkReadyState() {
if (script.readyState == "complete") {
script.parentNode.removeChild(script);
callDomLoadFunctions()
}
}
function callDomLoadFunctions() {
if (isDomLoaded) {
return
}
if (ua.ie && ua.win) {
var s = createElement("span");
try {
var t = doc.getElementsByTagName("body")[0].appendChild(s);
t.parentNode.removeChild(t)
} catch (e) {
return
}
}
isDomLoaded = true;
if (timer) {
clearInterval(timer);
timer = null
}
var dl = domLoadFnArr.length;
for (var i = 0; i < dl; i++) {
domLoadFnArr[i]()
}
}
function addDomLoadEvent(fn) {
if (isDomLoaded) {
fn()
} else {
domLoadFnArr[domLoadFnArr.length] = fn
}
}
function addLoadEvent(fn) {
if (typeof win.addEventListener != UNDEF) {
win.addEventListener("load", fn, false)
} else {
if (typeof doc.addEventListener != UNDEF) {
doc.addEventListener("load", fn, false)
} else {
if (typeof win.attachEvent != UNDEF) {
addListener(win, "onload", fn)
} else {
if (typeof win.onload == "function") {
var fnOld = win.onload;
win.onload = function() {
fnOld();
fn()
}
} else {
win.onload = fn
}
}
}
}
}
function main() {
var rl = regObjArr.length;
for (var i = 0; i < rl; i++) {
var id = regObjArr[i].id;
if (ua.pv[0] > 0) {
var obj = getElementById(id);
if (obj) {
regObjArr[i].width = obj.getAttribute("width") ? obj.getAttribute("width") : "0";
regObjArr[i].height = obj.getAttribute("height") ? obj.getAttribute("height") : "0";
if (hasPlayerVersion(regObjArr[i].swfVersion)) {
if (ua.webkit && ua.webkit < 312) {
fixParams(obj)
}
setVisibility(id, true)
} else {
if (regObjArr[i].expressInstall && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) {
showExpressInstall(regObjArr[i])
} else {
displayAltContent(obj)
}
}
}
} else {
setVisibility(id, true)
}
}
}
function fixParams(obj) {
var nestedObj = obj.getElementsByTagName(OBJECT)[0];
if (nestedObj) {
var e = createElement("embed"),
a = nestedObj.attributes;
if (a) {
var al = a.length;
for (var i = 0; i < al; i++) {
if (a[i].nodeName == "DATA") {
e.setAttribute("src", a[i].nodeValue)
} else {
e.setAttribute(a[i].nodeName, a[i].nodeValue)
}
}
}
var c = nestedObj.childNodes;
if (c) {
var cl = c.length;
for (var j = 0; j < cl; j++) {
if (c[j].nodeType == 1 && c[j].nodeName == "PARAM") {
e.setAttribute(c[j].getAttribute("name"), c[j].getAttribute("value"))
}
}
}
obj.parentNode.replaceChild(e, obj)
}
}
function showExpressInstall(regObj) {
isExpressInstallActive = true;
var obj = getElementById(regObj.id);
if (obj) {
if (regObj.altContentId) {
var ac = getElementById(regObj.altContentId);
if (ac) {
storedAltContent = ac;
storedAltContentId = regObj.altContentId
}
} else {
storedAltContent = abstractAltContent(obj)
}
if (!(/%$/.test(regObj.width)) && parseInt(regObj.width, 10) < 310) {
regObj.width = "310"
}
if (!(/%$/.test(regObj.height)) && parseInt(regObj.height, 10) < 137) {
regObj.height = "137"
}
doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
dt = doc.title,
fv = "MMredirectURL=" + win.location + "&MMplayerType=" + pt + "&MMdoctitle=" + dt,
replaceId = regObj.id;
if (ua.ie && ua.win && obj.readyState != 4) {
var newObj = createElement("div");
replaceId += "SWFObjectNew";
newObj.setAttribute("id", replaceId);
obj.parentNode.insertBefore(newObj, obj);
obj.style.display = "none";
var fn = function() {
obj.parentNode.removeChild(obj)
};
addListener(win, "onload", fn)
}
createSWF({
data: regObj.expressInstall,
id: EXPRESS_INSTALL_ID,
width: regObj.width,
height: regObj.height
}, {
flashvars: fv
}, replaceId)
}
}
function displayAltContent(obj) {
if (ua.ie && ua.win && obj.readyState != 4) {
var el = createElement("div");
obj.parentNode.insertBefore(el, obj);
el.parentNode.replaceChild(abstractAltContent(obj), el);
obj.style.display = "none";
var fn = function() {
obj.parentNode.removeChild(obj)
};
addListener(win, "onload", fn)
} else {
obj.parentNode.replaceChild(abstractAltContent(obj), obj)
}
}
function abstractAltContent(obj) {
var ac = createElement("div");
if (ua.win && ua.ie) {
ac.innerHTML = obj.innerHTML
} else {
var nestedObj = obj.getElementsByTagName(OBJECT)[0];
if (nestedObj) {
var c = nestedObj.childNodes;
if (c) {
var cl = c.length;
for (var i = 0; i < cl; i++) {
if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) {
ac.appendChild(c[i].cloneNode(true))
}
}
}
}
}
return ac
}
function createSWF(attObj, parObj, id) {
var r, el = getElementById(id);
if (el) {
if (typeof attObj.id == UNDEF) {
attObj.id = id
}
if (ua.ie && ua.win) {
var att = "";
for (var i in attObj) {
if (attObj[i] != Object.prototype[i]) {
if (i.toLowerCase() == "data") {
parObj.movie = attObj[i]
} else {
if (i.toLowerCase() == "styleclass") {
att += ' class="' + attObj[i] + '"'
} else {
if (i.toLowerCase() != "classid") {
att += " " + i + '="' + attObj[i] + '"'
}
}
}
}
}
var par = "";
for (var j in parObj) {
if (parObj[j] != Object.prototype[j]) {
par += '<param name="' + j + '" value="' + parObj[j] + '" />'
}
}
el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + ">" + par + "</object>";
objIdArr[objIdArr.length] = attObj.id;
r = getElementById(attObj.id)
} else {
if (ua.webkit && ua.webkit < 312) {
var e = createElement("embed");
e.setAttribute("type", FLASH_MIME_TYPE);
for (var k in attObj) {
if (attObj[k] != Object.prototype[k]) {
if (k.toLowerCase() == "data") {
e.setAttribute("src", attObj[k])
} else {
if (k.toLowerCase() == "styleclass") {
e.setAttribute("class", attObj[k])
} else {
if (k.toLowerCase() != "classid") {
e.setAttribute(k, attObj[k])
}
}
}
}
}
for (var l in parObj) {
if (parObj[l] != Object.prototype[l]) {
if (l.toLowerCase() != "movie") {
e.setAttribute(l, parObj[l])
}
}
}
el.parentNode.replaceChild(e, el);
r = e
} else {
var o = createElement(OBJECT);
o.setAttribute("type", FLASH_MIME_TYPE);
for (var m in attObj) {
if (attObj[m] != Object.prototype[m]) {
if (m.toLowerCase() == "styleclass") {
o.setAttribute("class", attObj[m])
} else {
if (m.toLowerCase() != "classid") {
o.setAttribute(m, attObj[m])
}
}
}
}
for (var n in parObj) {
if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") {
createObjParam(o, n, parObj[n])
}
}
el.parentNode.replaceChild(o, el);
r = o
}
}
}
return r
}
function createObjParam(el, pName, pValue) {
var p = createElement("param");
p.setAttribute("name", pName);
p.setAttribute("value", pValue);
el.appendChild(p)
}
function removeSWF(id) {
var obj = getElementById(id);
if (obj && (obj.nodeName == "OBJECT" || obj.nodeName == "EMBED")) {
if (ua.ie && ua.win) {
if (obj.readyState == 4) {
removeObjectInIE(id)
} else {
win.attachEvent("onload", function() {
removeObjectInIE(id)
})
}
} else {
obj.parentNode.removeChild(obj)
}
}
}
function removeObjectInIE(id) {
var obj = getElementById(id);
if (obj) {
for (var i in obj) {
if (typeof obj[i] == "function") {
obj[i] = null
}
}
obj.parentNode.removeChild(obj)
}
}
function getElementById(id) {
var el = null;
try {
el = doc.getElementById(id)
} catch (e) {}
return el
}
function createElement(el) {
return doc.createElement(el)
}
function addListener(target, eventType, fn) {
target.attachEvent(eventType, fn);
listenersArr[listenersArr.length] = [target, eventType, fn]
}
function hasPlayerVersion(rv) {
var pv = ua.pv,
v = rv.split(".");
v[0] = parseInt(v[0], 10);
v[1] = parseInt(v[1], 10) || 0;
v[2] = parseInt(v[2], 10) || 0;
return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false
}
function createCSS(sel, decl) {
if (ua.ie && ua.mac) {
return
}
var h = doc.getElementsByTagName("head")[0],
s = createElement("style");
s.setAttribute("type", "text/css");
s.setAttribute("media", "screen");
if (!(ua.ie && ua.win) && typeof doc.createTextNode != UNDEF) {
s.appendChild(doc.createTextNode(sel + " {" + decl + "}"))
}
h.appendChild(s);
if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
var ls = doc.styleSheets[doc.styleSheets.length - 1];
if (typeof ls.addRule == OBJECT) {
ls.addRule(sel, decl)
}
}
}
function setVisibility(id, isVisible) {
var v = isVisible ? "visible" : "hidden";
if (isDomLoaded && getElementById(id)) {
getElementById(id).style.visibility = v
} else {
createCSS("#" + id, "visibility:" + v)
}
}
function urlEncodeIfNecessary(s) {
var regex = /[\\\"<>\.;]/;
var hasBadChars = regex.exec(s) != null;
return hasBadChars ? encodeURIComponent(s) : s
}
var cleanup = function() {
if (ua.ie && ua.win) {
window.attachEvent("onunload", function() {
var ll = listenersArr.length;
for (var i = 0; i < ll; i++) {
listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2])
}
var il = objIdArr.length;
for (var j = 0; j < il; j++) {
removeSWF(objIdArr[j])
}
for (var k in ua) {
ua[k] = null
}
ua = null;
for (var l in swfobject) {
swfobject[l] = null
}
swfobject = null
})
}
}();
return {
registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr) {
if (!ua.w3cdom || !objectIdStr || !swfVersionStr) {
return
}
var regObj = {};
regObj.id = objectIdStr;
regObj.swfVersion = swfVersionStr;
regObj.expressInstall = xiSwfUrlStr ? xiSwfUrlStr : false;
regObjArr[regObjArr.length] = regObj;
setVisibility(objectIdStr, false)
},
getObjectById: function(objectIdStr) {
var r = null;
if (ua.w3cdom) {
var o = getElementById(objectIdStr);
if (o) {
var n = o.getElementsByTagName(OBJECT)[0];
if (!n || (n && typeof o.SetVariable != UNDEF)) {
r = o
} else {
if (typeof n.SetVariable != UNDEF) {
r = n
}
}
}
}
return r
},
embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj) {
if (!ua.w3cdom || !swfUrlStr || !replaceElemIdStr || !widthStr || !heightStr || !swfVersionStr) {
return
}
widthStr += "";
heightStr += "";
if (hasPlayerVersion(swfVersionStr)) {
setVisibility(replaceElemIdStr, false);
var att = {};
if (attObj && typeof attObj === OBJECT) {
for (var i in attObj) {
if (attObj[i] != Object.prototype[i]) {
att[i] = attObj[i]
}
}
}
att.data = swfUrlStr;
att.width = widthStr;
att.height = heightStr;
var par = {};
if (parObj && typeof parObj === OBJECT) {
for (var j in parObj) {
if (parObj[j] != Object.prototype[j]) {
par[j] = parObj[j]
}
}
}
if (flashvarsObj && typeof flashvarsObj === OBJECT) {
for (var k in flashvarsObj) {
if (flashvarsObj[k] != Object.prototype[k]) {
if (typeof par.flashvars != UNDEF) {
par.flashvars += "&" + k + "=" + flashvarsObj[k]
} else {
par.flashvars = k + "=" + flashvarsObj[k]
}
}
}
}
addDomLoadEvent(function() {
createSWF(att, par, replaceElemIdStr);
if (att.id == replaceElemIdStr) {
setVisibility(replaceElemIdStr, true)
}
})
} else {
if (xiSwfUrlStr && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) {
isExpressInstallActive = true;
setVisibility(replaceElemIdStr, false);
addDomLoadEvent(function() {
var regObj = {};
regObj.id = regObj.altContentId = replaceElemIdStr;
regObj.width = widthStr;
regObj.height = heightStr;
regObj.expressInstall = xiSwfUrlStr;
showExpressInstall(regObj)
})
}
}
},
getFlashPlayerVersion: function() {
return {
major: ua.pv[0],
minor: ua.pv[1],
release: ua.pv[2]
}
},
hasFlashPlayerVersion: hasPlayerVersion,
createSWF: function(attObj, parObj, replaceElemIdStr) {
if (ua.w3cdom) {
return createSWF(attObj, parObj, replaceElemIdStr)
} else {
return undefined
}
},
removeSWF: function(objElemIdStr) {
if (ua.w3cdom) {
removeSWF(objElemIdStr)
}
},
createCSS: function(sel, decl) {
if (ua.w3cdom) {
createCSS(sel, decl)
}
},
addDomLoadEvent: addDomLoadEvent,
addLoadEvent: addLoadEvent,
getQueryParamValue: function(param) {
var q = doc.location.search || doc.location.hash;
if (param == null) {
return urlEncodeIfNecessary(q)
}
if (q) {
var pairs = q.substring(1).split("&");
for (var i = 0; i < pairs.length; i++) {
if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)))
}
}
}
return ""
},
expressInstallCallback: function() {
if (isExpressInstallActive && storedAltContent) {
var obj = getElementById(EXPRESS_INSTALL_ID);
if (obj) {
obj.parentNode.replaceChild(storedAltContent, obj);
if (storedAltContentId) {
setVisibility(storedAltContentId, true);
if (ua.ie && ua.win) {
storedAltContent.style.display = "block"
}
}
storedAltContent = null;
storedAltContentId = null;
isExpressInstallActive = false
}
}
}
}
}();
return swfobject
})();
S.lang = {
code: "en",
of: "of",
loading: "loading",
cancel: "Cancel",
next: "Next",
previous: "Previous",
play: "Play",
pause: "Pause",
close: "Close",
errors: {
single: 'You must install the <a href="{0}">{1}</a> browser plugin to view this content.',
shared: 'You must install both the <a href="{0}">{1}</a> and <a href="{2}">{3}</a> browser plugins to view this content.',
either: 'You must install either the <a href="{0}">{1}</a> or the <a href="{2}">{3}</a> browser plugin to view this content.'
}
};
var pre, proxyId = "sb-drag-proxy",
dragData, dragProxy, dragTarget;
function resetDrag() {
dragData = {
x: 0,
y: 0,
startX: null,
startY: null
}
}
function updateProxy() {
var dims = S.dimensions;
apply(dragProxy.style, {
height: dims.innerHeight + "px",
width: dims.innerWidth + "px"
})
}
function enableDrag() {
resetDrag();
var style = ["position:absolute", "cursor:" + (S.isGecko ? "-moz-grab" : "move"), "background-color:" + (S.isIE ? "#fff;filter:alpha(opacity=0)" : "transparent")].join(";");
S.appendHTML(S.skin.body, '<div id="' + proxyId + '" style="' + style + '"></div>');
dragProxy = get(proxyId);
updateProxy();
addEvent(dragProxy, "mousedown", startDrag)
}
function disableDrag() {
if (dragProxy) {
removeEvent(dragProxy, "mousedown", startDrag);
remove(dragProxy);
dragProxy = null
}
dragTarget = null
}
function startDrag(e) {
preventDefault(e);
var xy = getPageXY(e);
dragData.startX = xy[0];
dragData.startY = xy[1];
dragTarget = get(S.player.id);
addEvent(document, "mousemove", positionDrag);
addEvent(document, "mouseup", endDrag);
if (S.isGecko) {
dragProxy.style.cursor = "-moz-grabbing"
}
}
function positionDrag(e) {
var player = S.player,
dims = S.dimensions,
xy = getPageXY(e);
var moveX = xy[0] - dragData.startX;
dragData.startX += moveX;
dragData.x = Math.max(Math.min(0, dragData.x + moveX), dims.innerWidth - player.width);
var moveY = xy[1] - dragData.startY;
dragData.startY += moveY;
dragData.y = Math.max(Math.min(0, dragData.y + moveY), dims.innerHeight - player.height);
apply(dragTarget.style, {
left: dragData.x + "px",
top: dragData.y + "px"
})
}
function endDrag() {
removeEvent(document, "mousemove", positionDrag);
removeEvent(document, "mouseup", endDrag);
if (S.isGecko) {
dragProxy.style.cursor = "-moz-grab"
}
}
S.img = function(obj, id) {
this.obj = obj;
this.id = id;
this.ready = false;
var self = this;
pre = new Image();
pre.onload = function() {
self.height = obj.height ? parseInt(obj.height, 10) : pre.height;
self.width = obj.width ? parseInt(obj.width, 10) : pre.width;
self.ready = true;
pre.onload = null;
pre = null
};
pre.src = obj.content
};
S.img.ext = ["bmp", "gif", "jpg", "jpeg", "png"];
S.img.prototype = {
append: function(body, dims) {
var img = document.createElement("img");
img.id = this.id;
img.src = this.obj.content;
img.style.position = "absolute";
var height, width;
if (dims.oversized && S.options.handleOversize == "resize") {
height = dims.innerHeight;
width = dims.innerWidth
} else {
height = this.height;
width = this.width
}
img.setAttribute("height", height);
img.setAttribute("width", width);
body.appendChild(img)
},
remove: function() {
var el = get(this.id);
if (el) {
remove(el)
}
disableDrag();
if (pre) {
pre.onload = null;
pre = null
}
},
onLoad: function() {
var dims = S.dimensions;
if (dims.oversized && S.options.handleOversize == "drag") {
enableDrag()
}
},
onWindowResize: function() {
var dims = S.dimensions;
switch (S.options.handleOversize) {
case "resize":
var el = get(this.id);
el.height = dims.innerHeight;
el.width = dims.innerWidth;
break;
case "drag":
if (dragTarget) {
var top = parseInt(S.getStyle(dragTarget, "top")),
left = parseInt(S.getStyle(dragTarget, "left"));
if (top + this.height < dims.innerHeight) {
dragTarget.style.top = dims.innerHeight - this.height + "px"
}
if (left + this.width < dims.innerWidth) {
dragTarget.style.left = dims.innerWidth - this.width + "px"
}
updateProxy()
}
break
}
}
};
S.iframe = function(obj, id) {
this.obj = obj;
this.id = id;
var overlay = get("sb-overlay");
this.height = obj.height ? parseInt(obj.height, 10) : overlay.offsetHeight;
this.width = obj.width ? parseInt(obj.width, 10) : overlay.offsetWidth
};
S.iframe.prototype = {
append: function(body, dims) {
var html = '<iframe id="' + this.id + '" name="' + this.id + '" height="100%" width="100%" frameborder="0" marginwidth="0" marginheight="0" style="visibility:hidden" onload="this.style.visibility=\'visible\'" scrolling="auto"';
if (S.isIE) {
html += ' allowtransparency="true"';
if (S.isIE6) {
html += " src=\"javascript:false;document.write('');\""
}
}
html += "></iframe>";
body.innerHTML = html
},
remove: function() {
var el = get(this.id);
if (el) {
remove(el);
if (S.isGecko) {
delete window.frames[this.id]
}
}
},
onLoad: function() {
var win = S.isIE ? get(this.id).contentWindow : window.frames[this.id];
win.location.href = this.obj.content
}
};
S.html = function(obj, id) {
this.obj = obj;
this.id = id;
this.height = obj.height ? parseInt(obj.height, 10) : 300;
this.width = obj.width ? parseInt(obj.width, 10) : 500
};
S.html.prototype = {
append: function(body, dims) {
var div = document.createElement("div");
div.id = this.id;
div.className = "html";
div.innerHTML = this.obj.content;
body.appendChild(div)
},
remove: function() {
var el = get(this.id);
if (el) {
remove(el)
}
}
};
S.swf = function(obj, id) {
this.obj = obj;
this.id = id;
this.height = obj.height ? parseInt(obj.height, 10) : 300;
this.width = obj.width ? parseInt(obj.width, 10) : 300
};
S.swf.ext = ["swf"];
S.swf.prototype = {
append: function(body, dims) {
var tmp = document.createElement("div");
tmp.id = this.id;
body.appendChild(tmp);
var height = dims.innerHeight,
width = dims.innerWidth,
swf = this.obj.content,
version = S.options.flashVersion,
express = S.path + "expressInstall.swf",
flashvars = S.options.flashVars,
params = S.options.flashParams;
S.flash.embedSWF(swf, this.id, width, height, version, express, flashvars, params)
},
remove: function() {
S.flash.expressInstallCallback();
S.flash.removeSWF(this.id)
},
onWindowResize: function() {
var dims = S.dimensions,
el = get(this.id);
el.height = dims.innerHeight;
el.width = dims.innerWidth
}
};
var jwControllerHeight = 20;
S.flv = function(obj, id) {
this.obj = obj;
this.id = id;
this.height = obj.height ? parseInt(obj.height, 10) : 300;
if (S.options.showMovieControls) {
this.height += jwControllerHeight
}
this.width = obj.width ? parseInt(obj.width, 10) : 300
};
S.flv.ext = ["flv", "m4v"];
S.flv.prototype = {
append: function(body, dims) {
var tmp = document.createElement("div");
tmp.id = this.id;
body.appendChild(tmp);
var height = dims.innerHeight,
width = dims.innerWidth,
swf = S.path + "player.swf",
version = S.options.flashVersion,
express = S.path + "expressInstall.swf",
flashvars = apply({
file: this.obj.content,
height: height,
width: width,
autostart: (S.options.autoplayMovies ? "true" : "false"),
controlbar: (S.options.showMovieControls ? "bottom" : "none"),
backcolor: "0x000000",
frontcolor: "0xCCCCCC",
lightcolor: "0x557722"
}, S.options.flashVars),
params = S.options.flashParams;
S.flash.embedSWF(swf, this.id, width, height, version, express, flashvars, params)
},
remove: function() {
S.flash.expressInstallCallback();
S.flash.removeSWF(this.id)
},
onWindowResize: function() {
var dims = S.dimensions,
el = get(this.id);
el.height = dims.innerHeight;
el.width = dims.innerWidth
}
};
var qtControllerHeight = 16;
S.qt = function(obj, id) {
this.obj = obj;
this.id = id;
this.height = obj.height ? parseInt(obj.height, 10) : 300;
if (S.options.showMovieControls) {
this.height += qtControllerHeight
}
this.width = obj.width ? parseInt(obj.width, 10) : 300
};
S.qt.ext = ["dv", "mov", "moov", "movie", "mp4", "avi", "mpg", "mpeg"];
S.qt.prototype = {
append: function(body, dims) {
var opt = S.options,
autoplay = String(opt.autoplayMovies),
controls = String(opt.showMovieControls);
var html = "<object",
movie = {
id: this.id,
name: this.id,
height: this.height,
width: this.width,
kioskmode: "true"
};
if (S.isIE) {
movie.classid = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
movie.codebase = "http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"
} else {
movie.type = "video/quicktime";
movie.data = this.obj.content
}
for (var m in movie) {
html += " " + m + '="' + movie[m] + '"'
}
html += ">";
var params = {
src: this.obj.content,
scale: "aspect",
controller: controls,
autoplay: autoplay
};
for (var p in params) {
html += '<param name="' + p + '" value="' + params[p] + '">'
}
html += "</object>";
body.innerHTML = html
},
remove: function() {
try {
document[this.id].Stop()
} catch (e) {}
var el = get(this.id);
if (el) {
remove(el)
}
}
};
var wmpControllerHeight = (S.isIE ? 70 : 45);
S.wmp = function(obj, id) {
this.obj = obj;
this.id = id;
this.height = obj.height ? parseInt(obj.height, 10) : 300;
if (S.options.showMovieControls) {
this.height += wmpControllerHeight
}
this.width = obj.width ? parseInt(obj.width, 10) : 300
};
S.wmp.ext = ["asf", "avi", "mpg", "mpeg", "wm", "wmv"];
S.wmp.prototype = {
append: function(body, dims) {
var opt = S.options,
autoplay = opt.autoplayMovies ? 1 : 0;
var movie = '<object id="' + this.id + '" name="' + this.id + '" height="' + this.height + '" width="' + this.width + '"',
params = {
autostart: opt.autoplayMovies ? 1 : 0
};
if (S.isIE) {
movie += ' classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"';
params.url = this.obj.content;
params.uimode = opt.showMovieControls ? "full" : "none"
} else {
movie += ' type="video/x-ms-wmv"';
movie += ' data="' + this.obj.content + '"';
params.showcontrols = opt.showMovieControls ? 1 : 0
}
movie += ">";
for (var p in params) {
movie += '<param name="' + p + '" value="' + params[p] + '">'
}
movie += "</object>";
body.innerHTML = movie
},
remove: function() {
if (S.isIE) {
try {
window[this.id].controls.stop();
window[this.id].URL = "movie" + now() + ".wmv";
window[this.id] = function() {}
} catch (e) {}
}
var el = get(this.id);
if (el) {
setTimeout(function() {
remove(el)
}, 10)
}
}
};
var overlayOn = false,
visibilityCache = [],
pngIds = ["sb-nav-close", "sb-nav-next", "sb-nav-play", "sb-nav-pause", "sb-nav-previous"],
container, overlay, wrapper, doWindowResize = true;
function animate(el, property, to, duration, callback) {
var isOpacity = (property == "opacity"),
anim = isOpacity ? S.setOpacity : function(el, value) {
el.style[property] = "" + value + "px"
};
if (duration == 0 || (!isOpacity && !S.options.animate) || (isOpacity && !S.options.animateFade)) {
anim(el, to);
if (callback) {
callback()
}
return
}
var from = parseFloat(S.getStyle(el, property)) || 0;
var delta = to - from;
if (delta == 0) {
if (callback) {
callback()
}
return
}
duration *= 1000;
var begin = now(),
ease = S.ease,
end = begin + duration,
time;
var interval = setInterval(function() {
time = now();
if (time >= end) {
clearInterval(interval);
interval = null;
anim(el, to);
if (callback) {
callback()
}
} else {
anim(el, from + ease((time - begin) / duration) * delta)
}
}, 10)
}
function setSize() {
container.style.height = S.getWindowSize("Height") + "px";
container.style.width = S.getWindowSize("Width") + "px"
}
function setPosition() {
container.style.top = document.documentElement.scrollTop + "px";
container.style.left = document.documentElement.scrollLeft + "px"
}
function toggleTroubleElements(on) {
if (on) {
each(visibilityCache, function(i, el) {
el[0].style.visibility = el[1] || ""
})
} else {
visibilityCache = [];
each(S.options.troubleElements, function(i, tag) {
each(document.getElementsByTagName(tag), function(j, el) {
visibilityCache.push([el, el.style.visibility]);
el.style.visibility = "hidden"
})
})
}
}
function toggleNav(id, on) {
var el = get("sb-nav-" + id);
if (el) {
el.style.display = on ? "" : "none"
}
}
function toggleLoading(on, callback) {
var loading = get("sb-loading"),
playerName = S.getCurrent().player,
anim = (playerName == "img" || playerName == "html");
if (on) {
S.setOpacity(loading, 0);
loading.style.display = "block";
var wrapped = function() {
S.clearOpacity(loading);
if (callback) {
callback()
}
};
if (anim) {
animate(loading, "opacity", 1, S.options.fadeDuration, wrapped)
} else {
wrapped()
}
} else {
var wrapped = function() {
loading.style.display = "none";
S.clearOpacity(loading);
if (callback) {
callback()
}
};
if (anim) {
animate(loading, "opacity", 0, S.options.fadeDuration, wrapped)
} else {
wrapped()
}
}
}
function buildBars(callback) {
var obj = S.getCurrent();
get("sb-title-inner").innerHTML = obj.title || "";
var close, next, play, pause, previous;
if (S.options.displayNav) {
close = true;
var len = S.gallery.length;
if (len > 1) {
if (S.options.continuous) {
next = previous = true
} else {
next = (len - 1) > S.current;
previous = S.current > 0
}
}
if (S.options.slideshowDelay > 0 && S.hasNext()) {
pause = !S.isPaused();
play = !pause
}
} else {
close = next = play = pause = previous = false
}
toggleNav("close", close);
toggleNav("next", next);
toggleNav("play", play);
toggleNav("pause", pause);
toggleNav("previous", previous);
var counter = "";
if (S.options.displayCounter && S.gallery.length > 1) {
var len = S.gallery.length;
if (S.options.counterType == "skip") {
var i = 0,
end = len,
limit = parseInt(S.options.counterLimit) || 0;
if (limit < len && limit > 2) {
var h = Math.floor(limit / 2);
i = S.current - h;
if (i < 0) {
i += len
}
end = S.current + (limit - h);
if (end > len) {
end -= len
}
}
while (i != end) {
if (i == len) {
i = 0
}
counter += '<a onclick="Shadowbox.change(' + i + ');"';
if (i == S.current) {
counter += ' class="sb-counter-current"'
}
counter += ">" + (++i) + "</a>"
}
} else {
counter = [S.current + 1, S.lang.of, len].join(" ")
}
}
get("sb-counter").innerHTML = counter;
callback()
}
function showBars(callback) {
var titleInner = get("sb-title-inner"),
infoInner = get("sb-info-inner"),
duration = 0.35;
titleInner.style.visibility = infoInner.style.visibility = "";
if (titleInner.innerHTML != "") {
animate(titleInner, "marginTop", 0, duration)
}
animate(infoInner, "marginTop", 0, duration, callback)
}
function hideBars(anim, callback) {
var title = get("sb-title"),
info = get("sb-info"),
titleHeight = title.offsetHeight,
infoHeight = info.offsetHeight,
titleInner = get("sb-title-inner"),
infoInner = get("sb-info-inner"),
duration = (anim ? 0.35 : 0);
animate(titleInner, "marginTop", titleHeight, duration);
animate(infoInner, "marginTop", infoHeight * -1, duration, function() {
titleInner.style.visibility = infoInner.style.visibility = "hidden";
callback()
})
}
function adjustHeight(height, top, anim, callback) {
var wrapperInner = get("sb-wrapper-inner"),
duration = (anim ? S.options.resizeDuration : 0);
animate(wrapper, "top", top, duration);
animate(wrapperInner, "height", height, duration, callback)
}
function adjustWidth(width, left, anim, callback) {
var duration = (anim ? S.options.resizeDuration : 0);
animate(wrapper, "left", left, duration);
animate(wrapper, "width", width, duration, callback)
}
function setDimensions(height, width) {
var bodyInner = get("sb-body-inner"),
height = parseInt(height),
width = parseInt(width),
topBottom = wrapper.offsetHeight - bodyInner.offsetHeight,
leftRight = wrapper.offsetWidth - bodyInner.offsetWidth,
maxHeight = overlay.offsetHeight,
maxWidth = overlay.offsetWidth,
padding = parseInt(S.options.viewportPadding) || 20,
preserveAspect = (S.player && S.options.handleOversize != "drag");
return S.setDimensions(height, width, maxHeight, maxWidth, topBottom, leftRight, padding, preserveAspect)
}
var K = {};
K.markup = '<div id="sb-container"><div id="sb-overlay"></div><div id="sb-wrapper"><div id="sb-title"><div id="sb-title-inner"></div></div><div id="sb-wrapper-inner"><div id="sb-body"><div id="sb-body-inner"></div><div id="sb-loading"><div id="sb-loading-inner"><span>{loading}</span></div></div></div></div><div id="sb-info"><div id="sb-info-inner"><div id="sb-counter"></div><div id="sb-nav"><a id="sb-nav-close" title="{close}" onclick="Shadowbox.close()"></a><a id="sb-nav-next" title="{next}" onclick="Shadowbox.next()"></a><a id="sb-nav-play" title="{play}" onclick="Shadowbox.play()"></a><a id="sb-nav-pause" title="{pause}" onclick="Shadowbox.pause()"></a><a id="sb-nav-previous" title="{previous}" onclick="Shadowbox.previous()"></a></div></div></div></div></div>';
K.options = {
animSequence: "sync",
counterLimit: 10,
counterType: "default",
displayCounter: true,
displayNav: true,
fadeDuration: 0.35,
initialHeight: 160,
initialWidth: 320,
modal: false,
overlayColor: "#000",
overlayOpacity: 0.5,
resizeDuration: 0.35,
showOverlay: true,
troubleElements: ["select", "object", "embed", "canvas"]
};
K.init = function() {
S.appendHTML(document.body, sprintf(K.markup, S.lang));
K.body = get("sb-body-inner");
container = get("sb-container");
overlay = get("sb-overlay");
wrapper = get("sb-wrapper");
if (!supportsFixed) {
container.style.position = "absolute"
}
if (!supportsOpacity) {
var el, m, re = /url\("(.*\.png)"\)/;
each(pngIds, function(i, id) {
el = get(id);
if (el) {
m = S.getStyle(el, "backgroundImage").match(re);
if (m) {
el.style.backgroundImage = "none";
el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src=" + m[1] + ",sizingMethod=scale);"
}
}
})
}
var timer;
addEvent(window, "resize", function() {
if (timer) {
clearTimeout(timer);
timer = null
}
if (open) {
timer = setTimeout(K.onWindowResize, 10)
}
})
};
K.onOpen = function(obj, callback) {
doWindowResize = false;
container.style.display = "block";
setSize();
var dims = setDimensions(S.options.initialHeight, S.options.initialWidth);
adjustHeight(dims.innerHeight, dims.top);
adjustWidth(dims.width, dims.left);
if (S.options.showOverlay) {
overlay.style.backgroundColor = S.options.overlayColor;
S.setOpacity(overlay, 0);
if (!S.options.modal) {
addEvent(overlay, "click", S.close)
}
overlayOn = true
}
if (!supportsFixed) {
setPosition();
addEvent(window, "scroll", setPosition)
}
toggleTroubleElements();
container.style.visibility = "visible";
if (overlayOn) {
animate(overlay, "opacity", S.options.overlayOpacity, S.options.fadeDuration, callback)
} else {
callback()
}
};
K.onLoad = function(changing, callback) {
toggleLoading(true);
while (K.body.firstChild) {
remove(K.body.firstChild)
}
hideBars(changing, function() {
if (!open) {
return
}
if (!changing) {
wrapper.style.visibility = "visible"
}
buildBars(callback)
})
};
K.onReady = function(callback) {
if (!open) {
return
}
var player = S.player,
dims = setDimensions(player.height, player.width);
var wrapped = function() {
showBars(callback)
};
switch (S.options.animSequence) {
case "hw":
adjustHeight(dims.innerHeight, dims.top, true, function() {
adjustWidth(dims.width, dims.left, true, wrapped)
});
break;
case "wh":
adjustWidth(dims.width, dims.left, true, function() {
adjustHeight(dims.innerHeight, dims.top, true, wrapped)
});
break;
default:
adjustWidth(dims.width, dims.left, true);
adjustHeight(dims.innerHeight, dims.top, true, wrapped)
}
};
K.onShow = function(callback) {
toggleLoading(false, callback);
doWindowResize = true
};
K.onClose = function() {
if (!supportsFixed) {
removeEvent(window, "scroll", setPosition)
}
removeEvent(overlay, "click", S.close);
wrapper.style.visibility = "hidden";
var callback = function() {
container.style.visibility = "hidden";
container.style.display = "none";
toggleTroubleElements(true)
};
if (overlayOn) {
animate(overlay, "opacity", 0, S.options.fadeDuration, callback)
} else {
callback()
}
};
K.onPlay = function() {
toggleNav("play", false);
toggleNav("pause", true)
};
K.onPause = function() {
toggleNav("pause", false);
toggleNav("play", true)
};
K.onWindowResize = function() {
if (!doWindowResize) {
return
}
setSize();
var player = S.player,
dims = setDimensions(player.height, player.width);
adjustWidth(dims.width, dims.left);
adjustHeight(dims.innerHeight, dims.top);
if (player.onWindowResize) {
player.onWindowResize()
}
};
S.skin = K;
window.Shadowbox = S
})(window);
| ready |
Mootools Shadowbox |
(function(window, undefined) {
var S = {
version: "3.0.3"
};
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("windows") > -1 || ua.indexOf("win32") > -1) {
S.isWindows = true
} else {
if (ua.indexOf("macintosh") > -1 || ua.indexOf("mac os x") > -1) {
S.isMac = true
} else {
if (ua.indexOf("linux") > -1) {
S.isLinux = true
}
}
}
S.isIE = ua.indexOf("msie") > -1;
S.isIE6 = ua.indexOf("msie 6") > -1;
S.isIE7 = ua.indexOf("msie 7") > -1;
S.isGecko = ua.indexOf("gecko") > -1 && ua.indexOf("safari") == -1;
S.isWebKit = ua.indexOf("applewebkit/") > -1;
var inlineId = /#(.+)$/,
galleryName = /^(light|shadow)box\[(.*?)\]/i,
inlineParam = /\s*([a-z_]*?)\s*=\s*(.+)\s*/,
fileExtension = /[0-9a-z]+$/i,
scriptPath = /(.+\/)shadowbox\.js/i;
var open = false,
initialized = false,
lastOptions = {},
slideDelay = 0,
slideStart, slideTimer;
S.current = -1;
S.dimensions = null;
S.ease = function(state) {
return 1 + Math.pow(state - 1, 3)
};
S.errorInfo = {
fla: {
name: "Flash",
url: "http://www.adobe.com/products/flashplayer/"
},
qt: {
name: "QuickTime",
url: "http://www.apple.com/quicktime/download/"
},
wmp: {
name: "Windows Media Player",
url: "http://www.microsoft.com/windows/windowsmedia/"
},
f4m: {
name: "Flip4Mac",
url: "http://www.flip4mac.com/wmv_download.htm"
}
};
S.gallery = [];
S.onReady = noop;
S.path = null;
S.player = null;
S.playerId = "sb-player";
S.options = {
animate: true,
animateFade: true,
autoplayMovies: true,
continuous: false,
enableKeys: true,
flashParams: {
bgcolor: "#000000",
allowfullscreen: true
},
flashVars: {},
flashVersion: "9.0.115",
handleOversize: "resize",
handleUnsupported: "link",
onChange: noop,
onClose: noop,
onFinish: noop,
onOpen: noop,
showMovieControls: true,
skipSetup: false,
slideshowDelay: 0,
viewportPadding: 20
};
S.getCurrent = function() {
return S.current > -1 ? S.gallery[S.current] : null
};
S.hasNext = function() {
return S.gallery.length > 1 && (S.current != S.gallery.length - 1 || S.options.continuous)
};
S.isOpen = function() {
return open
};
S.isPaused = function() {
return slideTimer == "pause"
};
S.applyOptions = function(options) {
lastOptions = apply({}, S.options);
apply(S.options, options)
};
S.revertOptions = function() {
apply(S.options, lastOptions)
};
S.init = function(options, callback) {
if (initialized) {
return
}
initialized = true;
if (S.skin.options) {
apply(S.options, S.skin.options)
}
if (options) {
apply(S.options, options)
}
if (!S.path) {
var path, scripts = document.getElementsByTagName("script");
for (var i = 0, len = scripts.length; i < len; ++i) {
path = scriptPath.exec(scripts[i].src);
if (path) {
S.path = path[1];
break
}
}
}
if (callback) {
S.onReady = callback
}
bindLoad()
};
S.open = function(obj) {
if (open) {
return
}
var gc = S.makeGallery(obj);
S.gallery = gc[0];
S.current = gc[1];
obj = S.getCurrent();
if (obj == null) {
return
}
S.applyOptions(obj.options || {});
filterGallery();
if (S.gallery.length) {
obj = S.getCurrent();
if (S.options.onOpen(obj) === false) {
return
}
open = true;
S.skin.onOpen(obj, load)
}
};
S.close = function() {
if (!open) {
return
}
open = false;
if (S.player) {
S.player.remove();
S.player = null
}
if (typeof slideTimer == "number") {
clearTimeout(slideTimer);
slideTimer = null
}
slideDelay = 0;
listenKeys(false);
S.options.onClose(S.getCurrent());
S.skin.onClose();
S.revertOptions()
};
S.play = function() {
if (!S.hasNext()) {
return
}
if (!slideDelay) {
slideDelay = S.options.slideshowDelay * 1000
}
if (slideDelay) {
slideStart = now();
slideTimer = setTimeout(function() {
slideDelay = slideStart = 0;
S.next()
}, slideDelay);
if (S.skin.onPlay) {
S.skin.onPlay()
}
}
};
S.pause = function() {
if (typeof slideTimer != "number") {
return
}
slideDelay = Math.max(0, slideDelay - (now() - slideStart));
if (slideDelay) {
clearTimeout(slideTimer);
slideTimer = "pause";
if (S.skin.onPause) {
S.skin.onPause()
}
}
};
S.change = function(index) {
if (!(index in S.gallery)) {
if (S.options.continuous) {
index = (index < 0 ? S.gallery.length + index : 0);
if (!(index in S.gallery)) {
return
}
} else {
return
}
}
S.current = index;
if (typeof slideTimer == "number") {
clearTimeout(slideTimer);
slideTimer = null;
slideDelay = slideStart = 0
}
S.options.onChange(S.getCurrent());
load(true)
};
S.next = function() {
S.change(S.current + 1)
};
S.previous = function() {
S.change(S.current - 1)
};
S.setDimensions = function(height, width, maxHeight, maxWidth, topBottom, leftRight, padding, preserveAspect) {
var originalHeight = height,
originalWidth = width;
var extraHeight = 2 * padding + topBottom;
if (height + extraHeight > maxHeight) {
height = maxHeight - extraHeight
}
var extraWidth = 2 * padding + leftRight;
if (width + extraWidth > maxWidth) {
width = maxWidth - extraWidth
}
var changeHeight = (originalHeight - height) / originalHeight,
changeWidth = (originalWidth - width) / originalWidth,
oversized = (changeHeight > 0 || changeWidth > 0);
if (preserveAspect && oversized) {
if (changeHeight > changeWidth) {
width = Math.round((originalWidth / originalHeight) * height)
} else {
if (changeWidth > changeHeight) {
height = Math.round((originalHeight / originalWidth) * width)
}
}
}
S.dimensions = {
height: height + topBottom,
width: width + leftRight,
innerHeight: height,
innerWidth: width,
top: Math.floor((maxHeight - (height + extraHeight)) / 2 + padding),
left: Math.floor((maxWidth - (width + extraWidth)) / 2 + padding),
oversized: oversized
};
return S.dimensions
};
S.makeGallery = function(obj) {
var gallery = [],
current = -1;
if (typeof obj == "string") {
obj = [obj]
}
if (typeof obj.length == "number") {
each(obj, function(i, o) {
if (o.content) {
gallery[i] = o
} else {
gallery[i] = {
content: o
}
}
});
current = 0
} else {
if (obj.tagName) {
var cacheObj = S.getCache(obj);
obj = cacheObj ? cacheObj : S.makeObject(obj)
}
if (obj.gallery) {
gallery = [];
var o;
for (var key in S.cache) {
o = S.cache[key];
if (o.gallery && o.gallery == obj.gallery) {
if (current == -1 && o.content == obj.content) {
current = gallery.length
}
gallery.push(o)
}
}
if (current == -1) {
gallery.unshift(obj);
current = 0
}
} else {
gallery = [obj];
current = 0
}
}
each(gallery, function(i, o) {
gallery[i] = apply({}, o)
});
return [gallery, current]
};
S.makeObject = function(link, options) {
var obj = {
content: link.href,
title: link.getAttribute("title") || "",
link: link
};
if (options) {
options = apply({}, options);
each(["player", "title", "height", "width", "gallery"], function(i, o) {
if (typeof options[o] != "undefined") {
obj[o] = options[o];
delete options[o]
}
});
obj.options = options
} else {
obj.options = {}
}
if (!obj.player) {
obj.player = S.getPlayer(obj.content)
}
var rel = link.getAttribute("rel");
if (rel) {
var match = rel.match(galleryName);
if (match) {
obj.gallery = escape(match[2])
}
each(rel.split(";"), function(i, p) {
match = p.match(inlineParam);
if (match) {
obj[match[1]] = match[2]
}
})
}
return obj
};
S.getPlayer = function(content) {
if (content.indexOf("#") > -1 && content.indexOf(document.location.href) == 0) {
return "inline"
}
var q = content.indexOf("?");
if (q > -1) {
content = content.substring(0, q)
}
var ext, m = content.match(fileExtension);
if (m) {
ext = m[0].toLowerCase()
}
if (ext) {
if (S.img && S.img.ext.indexOf(ext) > -1) {
return "img"
}
if (S.swf && S.swf.ext.indexOf(ext) > -1) {
return "swf"
}
if (S.flv && S.flv.ext.indexOf(ext) > -1) {
return "flv"
}
if (S.qt && S.qt.ext.indexOf(ext) > -1) {
if (S.wmp && S.wmp.ext.indexOf(ext) > -1) {
return "qtwmp"
} else {
return "qt"
}
}
if (S.wmp && S.wmp.ext.indexOf(ext) > -1) {
return "wmp"
}
}
return "iframe"
};
function filterGallery() {
var err = S.errorInfo,
plugins = S.plugins,
obj, remove, needed, m, format, replace, inlineEl, flashVersion;
for (var i = 0; i < S.gallery.length; ++i) {
obj = S.gallery[i];
remove = false;
needed = null;
switch (obj.player) {
case "flv":
case "swf":
if (!plugins.fla) {
needed = "fla"
}
break;
case "qt":
if (!plugins.qt) {
needed = "qt"
}
break;
case "wmp":
if (S.isMac) {
if (plugins.qt && plugins.f4m) {
obj.player = "qt"
} else {
needed = "qtf4m"
}
} else {
if (!plugins.wmp) {
needed = "wmp"
}
}
break;
case "qtwmp":
if (plugins.qt) {
obj.player = "qt"
} else {
if (plugins.wmp) {
obj.player = "wmp"
} else {
needed = "qtwmp"
}
}
break
}
if (needed) {
if (S.options.handleUnsupported == "link") {
switch (needed) {
case "qtf4m":
format = "shared";
replace = [err.qt.url, err.qt.name, err.f4m.url, err.f4m.name];
break;
case "qtwmp":
format = "either";
replace = [err.qt.url, err.qt.name, err.wmp.url, err.wmp.name];
break;
default:
format = "single";
replace = [err[needed].url, err[needed].name]
}
obj.player = "html";
obj.content = '<div class="sb-message">' + sprintf(S.lang.errors[format], replace) + "</div>"
} else {
remove = true
}
} else {
if (obj.player == "inline") {
m = inlineId.exec(obj.content);
if (m) {
inlineEl = get(m[1]);
if (inlineEl) {
obj.content = inlineEl.innerHTML
} else {
remove = true
}
} else {
remove = true
}
} else {
if (obj.player == "swf" || obj.player == "flv") {
flashVersion = (obj.options && obj.options.flashVersion) || S.options.flashVersion;
if (S.flash && !S.flash.hasFlashPlayerVersion(flashVersion)) {
obj.width = 310;
obj.height = 177
}
}
}
}
if (remove) {
S.gallery.splice(i, 1);
if (i < S.current) {
--S.current
} else {
if (i == S.current) {
S.current = i > 0 ? i - 1 : i
}
}--i
}
}
}
function listenKeys(on) {
if (!S.options.enableKeys) {
return
}(on ? addEvent : removeEvent)(document, "keydown", handleKey)
}
function handleKey(e) {
if (e.metaKey || e.shiftKey || e.altKey || e.ctrlKey) {
return
}
var code = keyCode(e),
handler;
switch (code) {
case 81:
case 88:
case 27:
handler = S.close;
break;
case 37:
handler = S.previous;
break;
case 39:
handler = S.next;
break;
case 32:
handler = typeof slideTimer == "number" ? S.pause : S.play;
break
}
if (handler) {
preventDefault(e);
handler()
}
}
function load(changing) {
listenKeys(false);
var obj = S.getCurrent();
var player = (obj.player == "inline" ? "html" : obj.player);
if (typeof S[player] != "function") {
throw "unknown player " + player
}
if (changing) {
S.player.remove();
S.revertOptions();
S.applyOptions(obj.options || {})
}
S.player = new S[player](obj, S.playerId);
if (S.gallery.length > 1) {
var next = S.gallery[S.current + 1] || S.gallery[0];
if (next.player == "img") {
var a = new Image();
a.src = next.content
}
var prev = S.gallery[S.current - 1] || S.gallery[S.gallery.length - 1];
if (prev.player == "img") {
var b = new Image();
b.src = prev.content
}
}
S.skin.onLoad(changing, waitReady)
}
function waitReady() {
if (!open) {
return
}
if (typeof S.player.ready != "undefined") {
var timer = setInterval(function() {
if (open) {
if (S.player.ready) {
clearInterval(timer);
timer = null;
S.skin.onReady(show)
}
} else {
clearInterval(timer);
timer = null
}
}, 10)
} else {
S.skin.onReady(show)
}
}
function show() {
if (!open) {
return
}
S.player.append(S.skin.body, S.dimensions);
S.skin.onShow(finish)
}
function finish() {
if (!open) {
return
}
if (S.player.onLoad) {
S.player.onLoad()
}
S.options.onFinish(S.getCurrent());
if (!S.isPaused()) {
S.play()
}
listenKeys(true)
}
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(obj, from) {
var len = this.length >>> 0;
from = from || 0;
if (from < 0) {
from += len
}
for (; from < len; ++from) {
if (from in this && this[from] === obj) {
return from
}
}
return -1
}
}
function now() {
return (new Date).getTime()
}
function apply(original, extension) {
for (var property in extension) {
original[property] = extension[property]
}
return original
}
function each(obj, callback) {
var i = 0,
len = obj.length;
for (var value = obj[0]; i < len && callback.call(value, i, value) !== false; value = obj[++i]) {}
}
function sprintf(str, replace) {
return str.replace(/\{(\w+?)\}/g, function(match, i) {
return replace[i]
})
}
function noop() {}
function get(id) {
return document.getElementById(id)
}
function remove(el) {
el.parentNode.removeChild(el)
}
var supportsOpacity = true,
supportsFixed = true;
function checkSupport() {
var body = document.body,
div = document.createElement("div");
supportsOpacity = typeof div.style.opacity === "string";
div.style.position = "fixed";
div.style.margin = 0;
div.style.top = "20px";
body.appendChild(div, body.firstChild);
supportsFixed = div.offsetTop == 20;
body.removeChild(div)
}
S.getStyle = (function() {
var opacity = /opacity=([^)]*)/,
getComputedStyle = document.defaultView && document.defaultView.getComputedStyle;
return function(el, style) {
var ret;
if (!supportsOpacity && style == "opacity" && el.currentStyle) {
ret = opacity.test(el.currentStyle.filter || "") ? (parseFloat(RegExp.$1) / 100) + "" : "";
return ret === "" ? "1" : ret
}
if (getComputedStyle) {
var computedStyle = getComputedStyle(el, null);
if (computedStyle) {
ret = computedStyle[style]
}
if (style == "opacity" && ret == "") {
ret = "1"
}
} else {
ret = el.currentStyle[style]
}
return ret
}
})();
S.appendHTML = function(el, html) {
if (el.insertAdjacentHTML) {
el.insertAdjacentHTML("BeforeEnd", html)
} else {
if (el.lastChild) {
var range = el.ownerDocument.createRange();
range.setStartAfter(el.lastChild);
var frag = range.createContextualFragment(html);
el.appendChild(frag)
} else {
el.innerHTML = html
}
}
};
S.getWindowSize = function(dimension) {
if (document.compatMode === "CSS1Compat") {
return document.documentElement["client" + dimension]
}
return document.body["client" + dimension]
};
S.setOpacity = function(el, opacity) {
var style = el.style;
if (supportsOpacity) {
style.opacity = (opacity == 1 ? "" : opacity)
} else {
style.zoom = 1;
if (opacity == 1) {
if (typeof style.filter == "string" && (/alpha/i).test(style.filter)) {
style.filter = style.filter.replace(/\s*[\w\.]*alpha\([^\)]*\);?/gi, "")
}
} else {
style.filter = (style.filter || "").replace(/\s*[\w\.]*alpha\([^\)]*\)/gi, "") + " alpha(opacity=" + (opacity * 100) + ")"
}
}
};
S.clearOpacity = function(el) {
S.setOpacity(el, 1)
};
function getTarget(e) {
return e.target
}
function getPageXY(e) {
return [e.page.x, e.page.y]
}
function preventDefault(e) {
e.preventDefault()
}
function keyCode(e) {
return e.code
}
function addEvent(el, type, handler) {
$(el).addEvent(type, handler)
}
function removeEvent(el, type, handler) {
$(el).removeEvent(type, handler)
}
var loaded = false,
DOMContentLoaded;
if (document.addEventListener) {
DOMContentLoaded = function() {
document.removeEventListener("DOMContentLoaded", DOMContentLoaded, false);
S.load()
}
} else {
if (document.attachEvent) {
DOMContentLoaded = function() {
if (document.readyState === "complete") {
document.detachEvent("onreadystatechange", DOMContentLoaded);
S.load()
}
}
}
}
function doScrollCheck() {
if (loaded) {
return
}
try {
document.documentElement.doScroll("left")
} catch (e) {
setTimeout(doScrollCheck, 1);
return
}
S.load()
}
function bindLoad() {
if (document.readyState === "complete") {
return S.load()
}
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", DOMContentLoaded, false);
window.addEventListener("load", S.load, false)
} else {
if (document.attachEvent) {
document.attachEvent("onreadystatechange", DOMContentLoaded);
window.attachEvent("onload", S.load);
var topLevel = false;
try {
topLevel = window.frameElement === null
} catch (e) {}
if (document.documentElement.doScroll && topLevel) {
doScrollCheck()
}
}
}
}
S.load = function() {
if (loaded) {
return
}
if (!document.body) {
return setTimeout(S.load, 13)
}
loaded = true;
checkSupport();
S.onReady();
if (!S.options.skipSetup) {
S.setup()
}
S.skin.init()
};
S.plugins = {};
if (navigator.plugins && navigator.plugins.length) {
var names = [];
each(navigator.plugins, function(i, p) {
names.push(p.name)
});
names = names.join(",");
var f4m = names.indexOf("Flip4Mac") > -1;
S.plugins = {
fla: names.indexOf("Shockwave Flash") > -1,
qt: names.indexOf("QuickTime") > -1,
wmp: !f4m && names.indexOf("Windows Media") > -1,
f4m: f4m
}
} else {
var detectPlugin = function(name) {
var axo;
try {
axo = new ActiveXObject(name)
} catch (e) {}
return !!axo
};
S.plugins = {
fla: detectPlugin("ShockwaveFlash.ShockwaveFlash"),
qt: detectPlugin("QuickTime.QuickTime"),
wmp: detectPlugin("wmplayer.ocx"),
f4m: false
}
}
var relAttr = /^(light|shadow)box/i,
expando = "shadowboxCacheKey",
cacheKey = 1;
S.cache = {};
S.select = function(selector) {
var links = [];
if (!selector) {
var rel;
each(document.getElementsByTagName("a"), function(i, el) {
rel = el.getAttribute("rel");
if (rel && relAttr.test(rel)) {
links.push(el)
}
})
} else {
var length = selector.length;
if (length) {
if (typeof selector == "string") {
if (S.find) {
links = S.find(selector)
}
} else {
if (length == 2 && typeof selector[0] == "string" && selector[1].nodeType) {
if (S.find) {
links = S.find(selector[0], selector[1])
}
} else {
for (var i = 0; i < length; ++i) {
links[i] = selector[i]
}
}
}
} else {
links.push(selector)
}
}
return links
};
S.setup = function(selector, options) {
each(S.select(selector), function(i, link) {
S.addCache(link, options)
})
};
S.teardown = function(selector) {
each(S.select(selector), function(i, link) {
S.removeCache(link)
})
};
S.addCache = function(link, options) {
var key = link[expando];
if (key == undefined) {
key = cacheKey++;
link[expando] = key;
addEvent(link, "click", handleClick)
}
S.cache[key] = S.makeObject(link, options)
};
S.removeCache = function(link) {
removeEvent(link, "click", handleClick);
delete S.cache[link[expando]];
link[expando] = null
};
S.getCache = function(link) {
var key = link[expando];
return (key in S.cache && S.cache[key])
};
S.clearCache = function() {
for (var key in S.cache) {
S.removeCache(S.cache[key].link)
}
S.cache = {}
};
function handleClick(e) {
S.open(this);
if (S.gallery.length) {
preventDefault(e)
}
}
S.find = (function() {
var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
done = 0,
toString = Object.prototype.toString,
hasDuplicate = false,
baseHasDuplicate = true;
[0, 0].sort(function() {
baseHasDuplicate = false;
return 0
});
var Sizzle = function(selector, context, results, seed) {
results = results || [];
var origContext = context = context || document;
if (context.nodeType !== 1 && context.nodeType !== 9) {
return []
}
if (!selector || typeof selector !== "string") {
return results
}
var parts = [],
m, set, checkSet, extra, prune = true,
contextXML = isXML(context),
soFar = selector;
while ((chunker.exec(""), m = chunker.exec(soFar)) !== null) {
soFar = m[3];
parts.push(m[1]);
if (m[2]) {
extra = m[3];
break
}
}
if (parts.length > 1 && origPOS.exec(selector)) {
if (parts.length === 2 && Expr.relative[parts[0]]) {
set = posProcess(parts[0] + parts[1], context)
} else {
set = Expr.relative[parts[0]] ? [context] : Sizzle(parts.shift(), context);
while (parts.length) {
selector = parts.shift();
if (Expr.relative[selector]) {
selector += parts.shift()
}
set = posProcess(selector, set)
}
}
} else {
if (!seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1])) {
var ret = Sizzle.find(parts.shift(), context, contextXML);
context = ret.expr ? Sizzle.filter(ret.expr, ret.set)[0] : ret.set[0]
}
if (context) {
var ret = seed ? {
expr: parts.pop(),
set: makeArray(seed)
} : Sizzle.find(parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML);
set = ret.expr ? Sizzle.filter(ret.expr, ret.set) : ret.set;
if (parts.length > 0) {
checkSet = makeArray(set)
} else {
prune = false
}
while (parts.length) {
var cur = parts.pop(),
pop = cur;
if (!Expr.relative[cur]) {
cur = ""
} else {
pop = parts.pop()
}
if (pop == null) {
pop = context
}
Expr.relative[cur](checkSet, pop, contextXML)
}
} else {
checkSet = parts = []
}
}
if (!checkSet) {
checkSet = set
}
if (!checkSet) {
throw "Syntax error, unrecognized expression: " + (cur || selector)
}
if (toString.call(checkSet) === "[object Array]") {
if (!prune) {
results.push.apply(results, checkSet)
} else {
if (context && context.nodeType === 1) {
for (var i = 0; checkSet[i] != null; i++) {
if (checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i]))) {
results.push(set[i])
}
}
} else {
for (var i = 0; checkSet[i] != null; i++) {
if (checkSet[i] && checkSet[i].nodeType === 1) {
results.push(set[i])
}
}
}
}
} else {
makeArray(checkSet, results)
}
if (extra) {
Sizzle(extra, origContext, results, seed);
Sizzle.uniqueSort(results)
}
return results
};
Sizzle.uniqueSort = function(results) {
if (sortOrder) {
hasDuplicate = baseHasDuplicate;
results.sort(sortOrder);
if (hasDuplicate) {
for (var i = 1; i < results.length; i++) {
if (results[i] === results[i - 1]) {
results.splice(i--, 1)
}
}
}
}
return results
};
Sizzle.matches = function(expr, set) {
return Sizzle(expr, null, null, set)
};
Sizzle.find = function(expr, context, isXML) {
var set, match;
if (!expr) {
return []
}
for (var i = 0, l = Expr.order.length; i < l; i++) {
var type = Expr.order[i],
match;
if ((match = Expr.leftMatch[type].exec(expr))) {
var left = match[1];
match.splice(1, 1);
if (left.substr(left.length - 1) !== "\\") {
match[1] = (match[1] || "").replace(/\\/g, "");
set = Expr.find[type](match, context, isXML);
if (set != null) {
expr = expr.replace(Expr.match[type], "");
break
}
}
}
}
if (!set) {
set = context.getElementsByTagName("*")
}
return {
set: set,
expr: expr
}
};
Sizzle.filter = function(expr, set, inplace, not) {
var old = expr,
result = [],
curLoop = set,
match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]);
while (expr && set.length) {
for (var type in Expr.filter) {
if ((match = Expr.match[type].exec(expr)) != null) {
var filter = Expr.filter[type],
found, item;
anyFound = false;
if (curLoop === result) {
result = []
}
if (Expr.preFilter[type]) {
match = Expr.preFilter[type](match, curLoop, inplace, result, not, isXMLFilter);
if (!match) {
anyFound = found = true
} else {
if (match === true) {
continue
}
}
}
if (match) {
for (var i = 0;
(item = curLoop[i]) != null; i++) {
if (item) {
found = filter(item, match, i, curLoop);
var pass = not ^ !! found;
if (inplace && found != null) {
if (pass) {
anyFound = true
} else {
curLoop[i] = false
}
} else {
if (pass) {
result.push(item);
anyFound = true
}
}
}
}
}
if (found !== undefined) {
if (!inplace) {
curLoop = result
}
expr = expr.replace(Expr.match[type], "");
if (!anyFound) {
return []
}
break
}
}
}
if (expr === old) {
if (anyFound == null) {
throw "Syntax error, unrecognized expression: " + expr
} else {
break
}
}
old = expr
}
return curLoop
};
var Expr = Sizzle.selectors = {
order: ["ID", "NAME", "TAG"],
match: {
ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
},
leftMatch: {},
attrMap: {
"class": "className",
"for": "htmlFor"
},
attrHandle: {
href: function(elem) {
return elem.getAttribute("href")
}
},
relative: {
"+": function(checkSet, part) {
var isPartStr = typeof part === "string",
isTag = isPartStr && !/\W/.test(part),
isPartStrNotTag = isPartStr && !isTag;
if (isTag) {
part = part.toLowerCase()
}
for (var i = 0, l = checkSet.length, elem; i < l; i++) {
if ((elem = checkSet[i])) {
while ((elem = elem.previousSibling) && elem.nodeType !== 1) {}
checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? elem || false : elem === part
}
}
if (isPartStrNotTag) {
Sizzle.filter(part, checkSet, true)
}
},
">": function(checkSet, part) {
var isPartStr = typeof part === "string";
if (isPartStr && !/\W/.test(part)) {
part = part.toLowerCase();
for (var i = 0, l = checkSet.length; i < l; i++) {
var elem = checkSet[i];
if (elem) {
var parent = elem.parentNode;
checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false
}
}
} else {
for (var i = 0, l = checkSet.length; i < l; i++) {
var elem = checkSet[i];
if (elem) {
checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part
}
}
if (isPartStr) {
Sizzle.filter(part, checkSet, true)
}
}
},
"": function(checkSet, part, isXML) {
var doneName = done++,
checkFn = dirCheck;
if (typeof part === "string" && !/\W/.test(part)) {
var nodeCheck = part = part.toLowerCase();
checkFn = dirNodeCheck
}
checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML)
},
"~": function(checkSet, part, isXML) {
var doneName = done++,
checkFn = dirCheck;
if (typeof part === "string" && !/\W/.test(part)) {
var nodeCheck = part = part.toLowerCase();
checkFn = dirNodeCheck
}
checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML)
}
},
find: {
ID: function(match, context, isXML) {
if (typeof context.getElementById !== "undefined" && !isXML) {
var m = context.getElementById(match[1]);
return m ? [m] : []
}
},
NAME: function(match, context) {
if (typeof context.getElementsByName !== "undefined") {
var ret = [],
results = context.getElementsByName(match[1]);
for (var i = 0, l = results.length; i < l; i++) {
if (results[i].getAttribute("name") === match[1]) {
ret.push(results[i])
}
}
return ret.length === 0 ? null : ret
}
},
TAG: function(match, context) {
return context.getElementsByTagName(match[1])
}
},
preFilter: {
CLASS: function(match, curLoop, inplace, result, not, isXML) {
match = " " + match[1].replace(/\\/g, "") + " ";
if (isXML) {
return match
}
for (var i = 0, elem;
(elem = curLoop[i]) != null; i++) {
if (elem) {
if (not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0)) {
if (!inplace) {
result.push(elem)
}
} else {
if (inplace) {
curLoop[i] = false
}
}
}
}
return false
},
ID: function(match) {
return match[1].replace(/\\/g, "")
},
TAG: function(match, curLoop) {
return match[1].toLowerCase()
},
CHILD: function(match) {
if (match[1] === "nth") {
var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || !/\D/.test(match[2]) && "0n+" + match[2] || match[2]);
match[2] = (test[1] + (test[2] || 1)) - 0;
match[3] = test[3] - 0
}
match[0] = done++;
return match
},
ATTR: function(match, curLoop, inplace, result, not, isXML) {
var name = match[1].replace(/\\/g, "");
if (!isXML && Expr.attrMap[name]) {
match[1] = Expr.attrMap[name]
}
if (match[2] === "~=") {
match[4] = " " + match[4] + " "
}
return match
},
PSEUDO: function(match, curLoop, inplace, result, not) {
if (match[1] === "not") {
if ((chunker.exec(match[3]) || "").length > 1 || /^\w/.test(match[3])) {
match[3] = Sizzle(match[3], null, null, curLoop)
} else {
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
if (!inplace) {
result.push.apply(result, ret)
}
return false
}
} else {
if (Expr.match.POS.test(match[0]) || Expr.match.CHILD.test(match[0])) {
return true
}
}
return match
},
POS: function(match) {
match.unshift(true);
return match
}
},
filters: {
enabled: function(elem) {
return elem.disabled === false && elem.type !== "hidden"
},
disabled: function(elem) {
return elem.disabled === true
},
checked: function(elem) {
return elem.checked === true
},
selected: function(elem) {
elem.parentNode.selectedIndex;
return elem.selected === true
},
parent: function(elem) {
return !!elem.firstChild
},
empty: function(elem) {
return !elem.firstChild
},
has: function(elem, i, match) {
return !!Sizzle(match[3], elem).length
},
header: function(elem) {
return /h\d/i.test(elem.nodeName)
},
text: function(elem) {
return "text" === elem.type
},
radio: function(elem) {
return "radio" === elem.type
},
checkbox: function(elem) {
return "checkbox" === elem.type
},
file: function(elem) {
return "file" === elem.type
},
password: function(elem) {
return "password" === elem.type
},
submit: function(elem) {
return "submit" === elem.type
},
image: function(elem) {
return "image" === elem.type
},
reset: function(elem) {
return "reset" === elem.type
},
button: function(elem) {
return "button" === elem.type || elem.nodeName.toLowerCase() === "button"
},
input: function(elem) {
return /input|select|textarea|button/i.test(elem.nodeName)
}
},
setFilters: {
first: function(elem, i) {
return i === 0
},
last: function(elem, i, match, array) {
return i === array.length - 1
},
even: function(elem, i) {
return i % 2 === 0
},
odd: function(elem, i) {
return i % 2 === 1
},
lt: function(elem, i, match) {
return i < match[3] - 0
},
gt: function(elem, i, match) {
return i > match[3] - 0
},
nth: function(elem, i, match) {
return match[3] - 0 === i
},
eq: function(elem, i, match) {
return match[3] - 0 === i
}
},
filter: {
PSEUDO: function(elem, match, i, array) {
var name = match[1],
filter = Expr.filters[name];
if (filter) {
return filter(elem, i, match, array)
} else {
if (name === "contains") {
return (elem.textContent || elem.innerText || getText([elem]) || "").indexOf(match[3]) >= 0
} else {
if (name === "not") {
var not = match[3];
for (var i = 0, l = not.length; i < l; i++) {
if (not[i] === elem) {
return false
}
}
return true
} else {
throw "Syntax error, unrecognized expression: " + name
}
}
}
},
CHILD: function(elem, match) {
var type = match[1],
node = elem;
switch (type) {
case "only":
case "first":
while ((node = node.previousSibling)) {
if (node.nodeType === 1) {
return false
}
}
if (type === "first") {
return true
}
node = elem;
case "last":
while ((node = node.nextSibling)) {
if (node.nodeType === 1) {
return false
}
}
return true;
case "nth":
var first = match[2],
last = match[3];
if (first === 1 && last === 0) {
return true
}
var doneName = match[0],
parent = elem.parentNode;
if (parent && (parent.sizcache !== doneName || !elem.nodeIndex)) {
var count = 0;
for (node = parent.firstChild; node; node = node.nextSibling) {
if (node.nodeType === 1) {
node.nodeIndex = ++count
}
}
parent.sizcache = doneName
}
var diff = elem.nodeIndex - last;
if (first === 0) {
return diff === 0
} else {
return (diff % first === 0 && diff / first >= 0)
}
}
},
ID: function(elem, match) {
return elem.nodeType === 1 && elem.getAttribute("id") === match
},
TAG: function(elem, match) {
return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match
},
CLASS: function(elem, match) {
return (" " + (elem.className || elem.getAttribute("class")) + " ").indexOf(match) > -1
},
ATTR: function(elem, match) {
var name = match[1],
result = Expr.attrHandle[name] ? Expr.attrHandle[name](elem) : elem[name] != null ? elem[name] : elem.getAttribute(name),
value = result + "",
type = match[2],
check = match[4];
return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value !== check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false
},
POS: function(elem, match, i, array) {
var name = match[2],
filter = Expr.setFilters[name];
if (filter) {
return filter(elem, i, match, array)
}
}
}
};
var origPOS = Expr.match.POS;
for (var type in Expr.match) {
Expr.match[type] = new RegExp(Expr.match[type].source + /(?![^\[]*\])(?![^\(]*\))/.source);
Expr.leftMatch[type] = new RegExp(/(^(?:.|\r|\n)*?)/.source + Expr.match[type].source)
}
var makeArray = function(array, results) {
array = Array.prototype.slice.call(array, 0);
if (results) {
results.push.apply(results, array);
return results
}
return array
};
try {
Array.prototype.slice.call(document.documentElement.childNodes, 0)
} catch (e) {
makeArray = function(array, results) {
var ret = results || [];
if (toString.call(array) === "[object Array]") {
Array.prototype.push.apply(ret, array)
} else {
if (typeof array.length === "number") {
for (var i = 0, l = array.length; i < l; i++) {
ret.push(array[i])
}
} else {
for (var i = 0; array[i]; i++) {
ret.push(array[i])
}
}
}
return ret
}
}
var sortOrder;
if (document.documentElement.compareDocumentPosition) {
sortOrder = function(a, b) {
if (!a.compareDocumentPosition || !b.compareDocumentPosition) {
if (a == b) {
hasDuplicate = true
}
return a.compareDocumentPosition ? -1 : 1
}
var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
if (ret === 0) {
hasDuplicate = true
}
return ret
}
} else {
if ("sourceIndex" in document.documentElement) {
sortOrder = function(a, b) {
if (!a.sourceIndex || !b.sourceIndex) {
if (a == b) {
hasDuplicate = true
}
return a.sourceIndex ? -1 : 1
}
var ret = a.sourceIndex - b.sourceIndex;
if (ret === 0) {
hasDuplicate = true
}
return ret
}
} else {
if (document.createRange) {
sortOrder = function(a, b) {
if (!a.ownerDocument || !b.ownerDocument) {
if (a == b) {
hasDuplicate = true
}
return a.ownerDocument ? -1 : 1
}
var aRange = a.ownerDocument.createRange(),
bRange = b.ownerDocument.createRange();
aRange.setStart(a, 0);
aRange.setEnd(a, 0);
bRange.setStart(b, 0);
bRange.setEnd(b, 0);
var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
if (ret === 0) {
hasDuplicate = true
}
return ret
}
}
}
}
function getText(elems) {
var ret = "",
elem;
for (var i = 0; elems[i]; i++) {
elem = elems[i];
if (elem.nodeType === 3 || elem.nodeType === 4) {
ret += elem.nodeValue
} else {
if (elem.nodeType !== 8) {
ret += getText(elem.childNodes)
}
}
}
return ret
}(function() {
var form = document.createElement("div"),
id = "script" + (new Date).getTime();
form.innerHTML = "<a name='" + id + "'/>";
var root = document.documentElement;
root.insertBefore(form, root.firstChild);
if (document.getElementById(id)) {
Expr.find.ID = function(match, context, isXML) {
if (typeof context.getElementById !== "undefined" && !isXML) {
var m = context.getElementById(match[1]);
return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []
}
};
Expr.filter.ID = function(elem, match) {
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
return elem.nodeType === 1 && node && node.nodeValue === match
}
}
root.removeChild(form);
root = form = null
})();
(function() {
var div = document.createElement("div");
div.appendChild(document.createComment(""));
if (div.getElementsByTagName("*").length > 0) {
Expr.find.TAG = function(match, context) {
var results = context.getElementsByTagName(match[1]);
if (match[1] === "*") {
var tmp = [];
for (var i = 0; results[i]; i++) {
if (results[i].nodeType === 1) {
tmp.push(results[i])
}
}
results = tmp
}
return results
}
}
div.innerHTML = "<a href='#'></a>";
if (div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#") {
Expr.attrHandle.href = function(elem) {
return elem.getAttribute("href", 2)
}
}
div = null
})();
if (document.querySelectorAll) {
(function() {
var oldSizzle = Sizzle,
div = document.createElement("div");
div.innerHTML = "<p class='TEST'></p>";
if (div.querySelectorAll && div.querySelectorAll(".TEST").length === 0) {
return
}
Sizzle = function(query, context, extra, seed) {
context = context || document;
if (!seed && context.nodeType === 9 && !isXML(context)) {
try {
return makeArray(context.querySelectorAll(query), extra)
} catch (e) {}
}
return oldSizzle(query, context, extra, seed)
};
for (var prop in oldSizzle) {
Sizzle[prop] = oldSizzle[prop]
}
div = null
})()
}(function() {
var div = document.createElement("div");
div.innerHTML = "<div class='test e'></div><div class='test'></div>";
if (!div.getElementsByClassName || div.getElementsByClassName("e").length === 0) {
return
}
div.lastChild.className = "e";
if (div.getElementsByClassName("e").length === 1) {
return
}
Expr.order.splice(1, 0, "CLASS");
Expr.find.CLASS = function(match, context, isXML) {
if (typeof context.getElementsByClassName !== "undefined" && !isXML) {
return context.getElementsByClassName(match[1])
}
};
div = null
})();
function dirNodeCheck(dir, cur, doneName, checkSet, nodeCheck, isXML) {
for (var i = 0, l = checkSet.length; i < l; i++) {
var elem = checkSet[i];
if (elem) {
elem = elem[dir];
var match = false;
while (elem) {
if (elem.sizcache === doneName) {
match = checkSet[elem.sizset];
break
}
if (elem.nodeType === 1 && !isXML) {
elem.sizcache = doneName;
elem.sizset = i
}
if (elem.nodeName.toLowerCase() === cur) {
match = elem;
break
}
elem = elem[dir]
}
checkSet[i] = match
}
}
}
function dirCheck(dir, cur, doneName, checkSet, nodeCheck, isXML) {
for (var i = 0, l = checkSet.length; i < l; i++) {
var elem = checkSet[i];
if (elem) {
elem = elem[dir];
var match = false;
while (elem) {
if (elem.sizcache === doneName) {
match = checkSet[elem.sizset];
break
}
if (elem.nodeType === 1) {
if (!isXML) {
elem.sizcache = doneName;
elem.sizset = i
}
if (typeof cur !== "string") {
if (elem === cur) {
match = true;
break
}
} else {
if (Sizzle.filter(cur, [elem]).length > 0) {
match = elem;
break
}
}
}
elem = elem[dir]
}
checkSet[i] = match
}
}
}
var contains = document.compareDocumentPosition ?
function(a, b) {
return a.compareDocumentPosition(b) & 16
} : function(a, b) {
return a !== b && (a.contains ? a.contains(b) : true)
};
var isXML = function(elem) {
var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
return documentElement ? documentElement.nodeName !== "HTML" : false
};
var posProcess = function(selector, context) {
var tmpSet = [],
later = "",
match, root = context.nodeType ? [context] : context;
while ((match = Expr.match.PSEUDO.exec(selector))) {
later += match[0];
selector = selector.replace(Expr.match.PSEUDO, "")
}
selector = Expr.relative[selector] ? selector + "*" : selector;
for (var i = 0, l = root.length; i < l; i++) {
Sizzle(selector, root[i], tmpSet)
}
return Sizzle.filter(later, tmpSet)
};
return Sizzle
})();
S.flash = (function() {
var swfobject = function() {
var UNDEF = "undefined",
OBJECT = "object",
SHOCKWAVE_FLASH = "Shockwave Flash",
SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
FLASH_MIME_TYPE = "application/x-shockwave-flash",
EXPRESS_INSTALL_ID = "SWFObjectExprInst",
win = window,
doc = document,
nav = navigator,
domLoadFnArr = [],
regObjArr = [],
objIdArr = [],
listenersArr = [],
script, timer = null,
storedAltContent = null,
storedAltContentId = null,
isDomLoaded = false,
isExpressInstallActive = false;
var ua = function() {
var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF,
playerVersion = [0, 0, 0],
d = null;
if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
d = nav.plugins[SHOCKWAVE_FLASH].description;
if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) {
d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
playerVersion[2] = /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, "$1"), 10) : 0
}
} else {
if (typeof win.ActiveXObject != UNDEF) {
var a = null,
fp6Crash = false;
try {
a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".7")
} catch (e) {
try {
a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".6");
playerVersion = [6, 0, 21];
a.AllowScriptAccess = "always"
} catch (e) {
if (playerVersion[0] == 6) {
fp6Crash = true
}
}
if (!fp6Crash) {
try {
a = new ActiveXObject(SHOCKWAVE_FLASH_AX)
} catch (e) {}
}
}
if (!fp6Crash && a) {
try {
d = a.GetVariable("$version");
if (d) {
d = d.split(" ")[1].split(",");
playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]
}
} catch (e) {}
}
}
}
var u = nav.userAgent.toLowerCase(),
p = nav.platform.toLowerCase(),
webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false,
ie = false,
windows = p ? /win/.test(p) : /win/.test(u),
mac = p ? /mac/.test(p) : /mac/.test(u);
return {
w3cdom: w3cdom,
pv: playerVersion,
webkit: webkit,
ie: ie,
win: windows,
mac: mac
}
}();
var onDomLoad = function() {
if (!ua.w3cdom) {
return
}
addDomLoadEvent(main);
if (ua.ie && ua.win) {
try {
doc.write("<script id=__ie_ondomload defer=true src=//:><\/script>");
script = getElementById("__ie_ondomload");
if (script) {
addListener(script, "onreadystatechange", checkReadyState)
}
} catch (e) {}
}
if (ua.webkit && typeof doc.readyState != UNDEF) {
timer = setInterval(function() {
if (/loaded|complete/.test(doc.readyState)) {
callDomLoadFunctions()
}
}, 10)
}
if (typeof doc.addEventListener != UNDEF) {
doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, null)
}
addLoadEvent(callDomLoadFunctions)
}();
function checkReadyState() {
if (script.readyState == "complete") {
script.parentNode.removeChild(script);
callDomLoadFunctions()
}
}
function callDomLoadFunctions() {
if (isDomLoaded) {
return
}
if (ua.ie && ua.win) {
var s = createElement("span");
try {
var t = doc.getElementsByTagName("body")[0].appendChild(s);
t.parentNode.removeChild(t)
} catch (e) {
return
}
}
isDomLoaded = true;
if (timer) {
clearInterval(timer);
timer = null
}
var dl = domLoadFnArr.length;
for (var i = 0; i < dl; i++) {
domLoadFnArr[i]()
}
}
function addDomLoadEvent(fn) {
if (isDomLoaded) {
fn()
} else {
domLoadFnArr[domLoadFnArr.length] = fn
}
}
function addLoadEvent(fn) {
if (typeof win.addEventListener != UNDEF) {
win.addEventListener("load", fn, false)
} else {
if (typeof doc.addEventListener != UNDEF) {
doc.addEventListener("load", fn, false)
} else {
if (typeof win.attachEvent != UNDEF) {
addListener(win, "onload", fn)
} else {
if (typeof win.onload == "function") {
var fnOld = win.onload;
win.onload = function() {
fnOld();
fn()
}
} else {
win.onload = fn
}
}
}
}
}
function main() {
var rl = regObjArr.length;
for (var i = 0; i < rl; i++) {
var id = regObjArr[i].id;
if (ua.pv[0] > 0) {
var obj = getElementById(id);
if (obj) {
regObjArr[i].width = obj.getAttribute("width") ? obj.getAttribute("width") : "0";
regObjArr[i].height = obj.getAttribute("height") ? obj.getAttribute("height") : "0";
if (hasPlayerVersion(regObjArr[i].swfVersion)) {
if (ua.webkit && ua.webkit < 312) {
fixParams(obj)
}
setVisibility(id, true)
} else {
if (regObjArr[i].expressInstall && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) {
showExpressInstall(regObjArr[i])
} else {
displayAltContent(obj)
}
}
}
} else {
setVisibility(id, true)
}
}
}
function fixParams(obj) {
var nestedObj = obj.getElementsByTagName(OBJECT)[0];
if (nestedObj) {
var e = createElement("embed"),
a = nestedObj.attributes;
if (a) {
var al = a.length;
for (var i = 0; i < al; i++) {
if (a[i].nodeName == "DATA") {
e.setAttribute("src", a[i].nodeValue)
} else {
e.setAttribute(a[i].nodeName, a[i].nodeValue)
}
}
}
var c = nestedObj.childNodes;
if (c) {
var cl = c.length;
for (var j = 0; j < cl; j++) {
if (c[j].nodeType == 1 && c[j].nodeName == "PARAM") {
e.setAttribute(c[j].getAttribute("name"), c[j].getAttribute("value"))
}
}
}
obj.parentNode.replaceChild(e, obj)
}
}
function showExpressInstall(regObj) {
isExpressInstallActive = true;
var obj = getElementById(regObj.id);
if (obj) {
if (regObj.altContentId) {
var ac = getElementById(regObj.altContentId);
if (ac) {
storedAltContent = ac;
storedAltContentId = regObj.altContentId
}
} else {
storedAltContent = abstractAltContent(obj)
}
if (!(/%$/.test(regObj.width)) && parseInt(regObj.width, 10) < 310) {
regObj.width = "310"
}
if (!(/%$/.test(regObj.height)) && parseInt(regObj.height, 10) < 137) {
regObj.height = "137"
}
doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
dt = doc.title,
fv = "MMredirectURL=" + win.location + "&MMplayerType=" + pt + "&MMdoctitle=" + dt,
replaceId = regObj.id;
if (ua.ie && ua.win && obj.readyState != 4) {
var newObj = createElement("div");
replaceId += "SWFObjectNew";
newObj.setAttribute("id", replaceId);
obj.parentNode.insertBefore(newObj, obj);
obj.style.display = "none";
var fn = function() {
obj.parentNode.removeChild(obj)
};
addListener(win, "onload", fn)
}
createSWF({
data: regObj.expressInstall,
id: EXPRESS_INSTALL_ID,
width: regObj.width,
height: regObj.height
}, {
flashvars: fv
}, replaceId)
}
}
function displayAltContent(obj) {
if (ua.ie && ua.win && obj.readyState != 4) {
var el = createElement("div");
obj.parentNode.insertBefore(el, obj);
el.parentNode.replaceChild(abstractAltContent(obj), el);
obj.style.display = "none";
var fn = function() {
obj.parentNode.removeChild(obj)
};
addListener(win, "onload", fn)
} else {
obj.parentNode.replaceChild(abstractAltContent(obj), obj)
}
}
function abstractAltContent(obj) {
var ac = createElement("div");
if (ua.win && ua.ie) {
ac.innerHTML = obj.innerHTML
} else {
var nestedObj = obj.getElementsByTagName(OBJECT)[0];
if (nestedObj) {
var c = nestedObj.childNodes;
if (c) {
var cl = c.length;
for (var i = 0; i < cl; i++) {
if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) {
ac.appendChild(c[i].cloneNode(true))
}
}
}
}
}
return ac
}
function createSWF(attObj, parObj, id) {
var r, el = getElementById(id);
if (el) {
if (typeof attObj.id == UNDEF) {
attObj.id = id
}
if (ua.ie && ua.win) {
var att = "";
for (var i in attObj) {
if (attObj[i] != Object.prototype[i]) {
if (i.toLowerCase() == "data") {
parObj.movie = attObj[i]
} else {
if (i.toLowerCase() == "styleclass") {
att += ' class="' + attObj[i] + '"'
} else {
if (i.toLowerCase() != "classid") {
att += " " + i + '="' + attObj[i] + '"'
}
}
}
}
}
var par = "";
for (var j in parObj) {
if (parObj[j] != Object.prototype[j]) {
par += '<param name="' + j + '" value="' + parObj[j] + '" />'
}
}
el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + ">" + par + "</object>";
objIdArr[objIdArr.length] = attObj.id;
r = getElementById(attObj.id)
} else {
if (ua.webkit && ua.webkit < 312) {
var e = createElement("embed");
e.setAttribute("type", FLASH_MIME_TYPE);
for (var k in attObj) {
if (attObj[k] != Object.prototype[k]) {
if (k.toLowerCase() == "data") {
e.setAttribute("src", attObj[k])
} else {
if (k.toLowerCase() == "styleclass") {
e.setAttribute("class", attObj[k])
} else {
if (k.toLowerCase() != "classid") {
e.setAttribute(k, attObj[k])
}
}
}
}
}
for (var l in parObj) {
if (parObj[l] != Object.prototype[l]) {
if (l.toLowerCase() != "movie") {
e.setAttribute(l, parObj[l])
}
}
}
el.parentNode.replaceChild(e, el);
r = e
} else {
var o = createElement(OBJECT);
o.setAttribute("type", FLASH_MIME_TYPE);
for (var m in attObj) {
if (attObj[m] != Object.prototype[m]) {
if (m.toLowerCase() == "styleclass") {
o.setAttribute("class", attObj[m])
} else {
if (m.toLowerCase() != "classid") {
o.setAttribute(m, attObj[m])
}
}
}
}
for (var n in parObj) {
if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") {
createObjParam(o, n, parObj[n])
}
}
el.parentNode.replaceChild(o, el);
r = o
}
}
}
return r
}
function createObjParam(el, pName, pValue) {
var p = createElement("param");
p.setAttribute("name", pName);
p.setAttribute("value", pValue);
el.appendChild(p)
}
function removeSWF(id) {
var obj = getElementById(id);
if (obj && (obj.nodeName == "OBJECT" || obj.nodeName == "EMBED")) {
if (ua.ie && ua.win) {
if (obj.readyState == 4) {
removeObjectInIE(id)
} else {
win.attachEvent("onload", function() {
removeObjectInIE(id)
})
}
} else {
obj.parentNode.removeChild(obj)
}
}
}
function removeObjectInIE(id) {
var obj = getElementById(id);
if (obj) {
for (var i in obj) {
if (typeof obj[i] == "function") {
obj[i] = null
}
}
obj.parentNode.removeChild(obj)
}
}
function getElementById(id) {
var el = null;
try {
el = doc.getElementById(id)
} catch (e) {}
return el
}
function createElement(el) {
return doc.createElement(el)
}
function addListener(target, eventType, fn) {
target.attachEvent(eventType, fn);
listenersArr[listenersArr.length] = [target, eventType, fn]
}
function hasPlayerVersion(rv) {
var pv = ua.pv,
v = rv.split(".");
v[0] = parseInt(v[0], 10);
v[1] = parseInt(v[1], 10) || 0;
v[2] = parseInt(v[2], 10) || 0;
return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false
}
function createCSS(sel, decl) {
if (ua.ie && ua.mac) {
return
}
var h = doc.getElementsByTagName("head")[0],
s = createElement("style");
s.setAttribute("type", "text/css");
s.setAttribute("media", "screen");
if (!(ua.ie && ua.win) && typeof doc.createTextNode != UNDEF) {
s.appendChild(doc.createTextNode(sel + " {" + decl + "}"))
}
h.appendChild(s);
if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
var ls = doc.styleSheets[doc.styleSheets.length - 1];
if (typeof ls.addRule == OBJECT) {
ls.addRule(sel, decl)
}
}
}
function setVisibility(id, isVisible) {
var v = isVisible ? "visible" : "hidden";
if (isDomLoaded && getElementById(id)) {
getElementById(id).style.visibility = v
} else {
createCSS("#" + id, "visibility:" + v)
}
}
function urlEncodeIfNecessary(s) {
var regex = /[\\\"<>\.;]/;
var hasBadChars = regex.exec(s) != null;
return hasBadChars ? encodeURIComponent(s) : s
}
var cleanup = function() {
if (ua.ie && ua.win) {
window.attachEvent("onunload", function() {
var ll = listenersArr.length;
for (var i = 0; i < ll; i++) {
listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2])
}
var il = objIdArr.length;
for (var j = 0; j < il; j++) {
removeSWF(objIdArr[j])
}
for (var k in ua) {
ua[k] = null
}
ua = null;
for (var l in swfobject) {
swfobject[l] = null
}
swfobject = null
})
}
}();
return {
registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr) {
if (!ua.w3cdom || !objectIdStr || !swfVersionStr) {
return
}
var regObj = {};
regObj.id = objectIdStr;
regObj.swfVersion = swfVersionStr;
regObj.expressInstall = xiSwfUrlStr ? xiSwfUrlStr : false;
regObjArr[regObjArr.length] = regObj;
setVisibility(objectIdStr, false)
},
getObjectById: function(objectIdStr) {
var r = null;
if (ua.w3cdom) {
var o = getElementById(objectIdStr);
if (o) {
var n = o.getElementsByTagName(OBJECT)[0];
if (!n || (n && typeof o.SetVariable != UNDEF)) {
r = o
} else {
if (typeof n.SetVariable != UNDEF) {
r = n
}
}
}
}
return r
},
embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj) {
if (!ua.w3cdom || !swfUrlStr || !replaceElemIdStr || !widthStr || !heightStr || !swfVersionStr) {
return
}
widthStr += "";
heightStr += "";
if (hasPlayerVersion(swfVersionStr)) {
setVisibility(replaceElemIdStr, false);
var att = {};
if (attObj && typeof attObj === OBJECT) {
for (var i in attObj) {
if (attObj[i] != Object.prototype[i]) {
att[i] = attObj[i]
}
}
}
att.data = swfUrlStr;
att.width = widthStr;
att.height = heightStr;
var par = {};
if (parObj && typeof parObj === OBJECT) {
for (var j in parObj) {
if (parObj[j] != Object.prototype[j]) {
par[j] = parObj[j]
}
}
}
if (flashvarsObj && typeof flashvarsObj === OBJECT) {
for (var k in flashvarsObj) {
if (flashvarsObj[k] != Object.prototype[k]) {
if (typeof par.flashvars != UNDEF) {
par.flashvars += "&" + k + "=" + flashvarsObj[k]
} else {
par.flashvars = k + "=" + flashvarsObj[k]
}
}
}
}
addDomLoadEvent(function() {
createSWF(att, par, replaceElemIdStr);
if (att.id == replaceElemIdStr) {
setVisibility(replaceElemIdStr, true)
}
})
} else {
if (xiSwfUrlStr && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) {
isExpressInstallActive = true;
setVisibility(replaceElemIdStr, false);
addDomLoadEvent(function() {
var regObj = {};
regObj.id = regObj.altContentId = replaceElemIdStr;
regObj.width = widthStr;
regObj.height = heightStr;
regObj.expressInstall = xiSwfUrlStr;
showExpressInstall(regObj)
})
}
}
},
getFlashPlayerVersion: function() {
return {
major: ua.pv[0],
minor: ua.pv[1],
release: ua.pv[2]
}
},
hasFlashPlayerVersion: hasPlayerVersion,
createSWF: function(attObj, parObj, replaceElemIdStr) {
if (ua.w3cdom) {
return createSWF(attObj, parObj, replaceElemIdStr)
} else {
return undefined
}
},
removeSWF: function(objElemIdStr) {
if (ua.w3cdom) {
removeSWF(objElemIdStr)
}
},
createCSS: function(sel, decl) {
if (ua.w3cdom) {
createCSS(sel, decl)
}
},
addDomLoadEvent: addDomLoadEvent,
addLoadEvent: addLoadEvent,
getQueryParamValue: function(param) {
var q = doc.location.search || doc.location.hash;
if (param == null) {
return urlEncodeIfNecessary(q)
}
if (q) {
var pairs = q.substring(1).split("&");
for (var i = 0; i < pairs.length; i++) {
if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)))
}
}
}
return ""
},
expressInstallCallback: function() {
if (isExpressInstallActive && storedAltContent) {
var obj = getElementById(EXPRESS_INSTALL_ID);
if (obj) {
obj.parentNode.replaceChild(storedAltContent, obj);
if (storedAltContentId) {
setVisibility(storedAltContentId, true);
if (ua.ie && ua.win) {
storedAltContent.style.display = "block"
}
}
storedAltContent = null;
storedAltContentId = null;
isExpressInstallActive = false
}
}
}
}
}();
return swfobject
})();
S.lang = {
code: "en",
of: "of",
loading: "loading",
cancel: "Cancel",
next: "Next",
previous: "Previous",
play: "Play",
pause: "Pause",
close: "Close",
errors: {
single: 'You must install the <a href="{0}">{1}</a> browser plugin to view this content.',
shared: 'You must install both the <a href="{0}">{1}</a> and <a href="{2}">{3}</a> browser plugins to view this content.',
either: 'You must install either the <a href="{0}">{1}</a> or the <a href="{2}">{3}</a> browser plugin to view this content.'
}
};
var pre, proxyId = "sb-drag-proxy",
dragData, dragProxy, dragTarget;
function resetDrag() {
dragData = {
x: 0,
y: 0,
startX: null,
startY: null
}
}
function updateProxy() {
var dims = S.dimensions;
apply(dragProxy.style, {
height: dims.innerHeight + "px",
width: dims.innerWidth + "px"
})
}
function enableDrag() {
resetDrag();
var style = ["position:absolute", "cursor:" + (S.isGecko ? "-moz-grab" : "move"), "background-color:" + (S.isIE ? "#fff;filter:alpha(opacity=0)" : "transparent")].join(";");
S.appendHTML(S.skin.body, '<div id="' + proxyId + '" style="' + style + '"></div>');
dragProxy = get(proxyId);
updateProxy();
addEvent(dragProxy, "mousedown", startDrag)
}
function disableDrag() {
if (dragProxy) {
removeEvent(dragProxy, "mousedown", startDrag);
remove(dragProxy);
dragProxy = null
}
dragTarget = null
}
function startDrag(e) {
preventDefault(e);
var xy = getPageXY(e);
dragData.startX = xy[0];
dragData.startY = xy[1];
dragTarget = get(S.player.id);
addEvent(document, "mousemove", positionDrag);
addEvent(document, "mouseup", endDrag);
if (S.isGecko) {
dragProxy.style.cursor = "-moz-grabbing"
}
}
function positionDrag(e) {
var player = S.player,
dims = S.dimensions,
xy = getPageXY(e);
var moveX = xy[0] - dragData.startX;
dragData.startX += moveX;
dragData.x = Math.max(Math.min(0, dragData.x + moveX), dims.innerWidth - player.width);
var moveY = xy[1] - dragData.startY;
dragData.startY += moveY;
dragData.y = Math.max(Math.min(0, dragData.y + moveY), dims.innerHeight - player.height);
apply(dragTarget.style, {
left: dragData.x + "px",
top: dragData.y + "px"
})
}
function endDrag() {
removeEvent(document, "mousemove", positionDrag);
removeEvent(document, "mouseup", endDrag);
if (S.isGecko) {
dragProxy.style.cursor = "-moz-grab"
}
}
S.img = function(obj, id) {
this.obj = obj;
this.id = id;
this.ready = false;
var self = this;
pre = new Image();
pre.onload = function() {
self.height = obj.height ? parseInt(obj.height, 10) : pre.height;
self.width = obj.width ? parseInt(obj.width, 10) : pre.width;
self.ready = true;
pre.onload = null;
pre = null
};
pre.src = obj.content
};
S.img.ext = ["bmp", "gif", "jpg", "jpeg", "png"];
S.img.prototype = {
append: function(body, dims) {
var img = document.createElement("img");
img.id = this.id;
img.src = this.obj.content;
img.style.position = "absolute";
var height, width;
if (dims.oversized && S.options.handleOversize == "resize") {
height = dims.innerHeight;
width = dims.innerWidth
} else {
height = this.height;
width = this.width
}
img.setAttribute("height", height);
img.setAttribute("width", width);
body.appendChild(img)
},
remove: function() {
var el = get(this.id);
if (el) {
remove(el)
}
disableDrag();
if (pre) {
pre.onload = null;
pre = null
}
},
onLoad: function() {
var dims = S.dimensions;
if (dims.oversized && S.options.handleOversize == "drag") {
enableDrag()
}
},
onWindowResize: function() {
var dims = S.dimensions;
switch (S.options.handleOversize) {
case "resize":
var el = get(this.id);
el.height = dims.innerHeight;
el.width = dims.innerWidth;
break;
case "drag":
if (dragTarget) {
var top = parseInt(S.getStyle(dragTarget, "top")),
left = parseInt(S.getStyle(dragTarget, "left"));
if (top + this.height < dims.innerHeight) {
dragTarget.style.top = dims.innerHeight - this.height + "px"
}
if (left + this.width < dims.innerWidth) {
dragTarget.style.left = dims.innerWidth - this.width + "px"
}
updateProxy()
}
break
}
}
};
S.iframe = function(obj, id) {
this.obj = obj;
this.id = id;
var overlay = get("sb-overlay");
this.height = obj.height ? parseInt(obj.height, 10) : overlay.offsetHeight;
this.width = obj.width ? parseInt(obj.width, 10) : overlay.offsetWidth
};
S.iframe.prototype = {
append: function(body, dims) {
var html = '<iframe id="' + this.id + '" name="' + this.id + '" height="100%" width="100%" frameborder="0" marginwidth="0" marginheight="0" style="visibility:hidden" onload="this.style.visibility=\'visible\'" scrolling="auto"';
if (S.isIE) {
html += ' allowtransparency="true"';
if (S.isIE6) {
html += " src=\"javascript:false;document.write('');\""
}
}
html += "></iframe>";
body.innerHTML = html
},
remove: function() {
var el = get(this.id);
if (el) {
remove(el);
if (S.isGecko) {
delete window.frames[this.id]
}
}
},
onLoad: function() {
var win = S.isIE ? get(this.id).contentWindow : window.frames[this.id];
win.location.href = this.obj.content
}
};
S.html = function(obj, id) {
this.obj = obj;
this.id = id;
this.height = obj.height ? parseInt(obj.height, 10) : 300;
this.width = obj.width ? parseInt(obj.width, 10) : 500
};
S.html.prototype = {
append: function(body, dims) {
var div = document.createElement("div");
div.id = this.id;
div.className = "html";
div.innerHTML = this.obj.content;
body.appendChild(div)
},
remove: function() {
var el = get(this.id);
if (el) {
remove(el)
}
}
};
S.swf = function(obj, id) {
this.obj = obj;
this.id = id;
this.height = obj.height ? parseInt(obj.height, 10) : 300;
this.width = obj.width ? parseInt(obj.width, 10) : 300
};
S.swf.ext = ["swf"];
S.swf.prototype = {
append: function(body, dims) {
var tmp = document.createElement("div");
tmp.id = this.id;
body.appendChild(tmp);
var height = dims.innerHeight,
width = dims.innerWidth,
swf = this.obj.content,
version = S.options.flashVersion,
express = S.path + "expressInstall.swf",
flashvars = S.options.flashVars,
params = S.options.flashParams;
S.flash.embedSWF(swf, this.id, width, height, version, express, flashvars, params)
},
remove: function() {
S.flash.expressInstallCallback();
S.flash.removeSWF(this.id)
},
onWindowResize: function() {
var dims = S.dimensions,
el = get(this.id);
el.height = dims.innerHeight;
el.width = dims.innerWidth
}
};
var jwControllerHeight = 20;
S.flv = function(obj, id) {
this.obj = obj;
this.id = id;
this.height = obj.height ? parseInt(obj.height, 10) : 300;
if (S.options.showMovieControls) {
this.height += jwControllerHeight
}
this.width = obj.width ? parseInt(obj.width, 10) : 300
};
S.flv.ext = ["flv", "m4v"];
S.flv.prototype = {
append: function(body, dims) {
var tmp = document.createElement("div");
tmp.id = this.id;
body.appendChild(tmp);
var height = dims.innerHeight,
width = dims.innerWidth,
swf = S.path + "player.swf",
version = S.options.flashVersion,
express = S.path + "expressInstall.swf",
flashvars = apply({
file: this.obj.content,
height: height,
width: width,
autostart: (S.options.autoplayMovies ? "true" : "false"),
controlbar: (S.options.showMovieControls ? "bottom" : "none"),
backcolor: "0x000000",
frontcolor: "0xCCCCCC",
lightcolor: "0x557722"
}, S.options.flashVars),
params = S.options.flashParams;
S.flash.embedSWF(swf, this.id, width, height, version, express, flashvars, params)
},
remove: function() {
S.flash.expressInstallCallback();
S.flash.removeSWF(this.id)
},
onWindowResize: function() {
var dims = S.dimensions,
el = get(this.id);
el.height = dims.innerHeight;
el.width = dims.innerWidth
}
};
var qtControllerHeight = 16;
S.qt = function(obj, id) {
this.obj = obj;
this.id = id;
this.height = obj.height ? parseInt(obj.height, 10) : 300;
if (S.options.showMovieControls) {
this.height += qtControllerHeight
}
this.width = obj.width ? parseInt(obj.width, 10) : 300
};
S.qt.ext = ["dv", "mov", "moov", "movie", "mp4", "avi", "mpg", "mpeg"];
S.qt.prototype = {
append: function(body, dims) {
var opt = S.options,
autoplay = String(opt.autoplayMovies),
controls = String(opt.showMovieControls);
var html = "<object",
movie = {
id: this.id,
name: this.id,
height: this.height,
width: this.width,
kioskmode: "true"
};
if (S.isIE) {
movie.classid = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
movie.codebase = "http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"
} else {
movie.type = "video/quicktime";
movie.data = this.obj.content
}
for (var m in movie) {
html += " " + m + '="' + movie[m] + '"'
}
html += ">";
var params = {
src: this.obj.content,
scale: "aspect",
controller: controls,
autoplay: autoplay
};
for (var p in params) {
html += '<param name="' + p + '" value="' + params[p] + '">'
}
html += "</object>";
body.innerHTML = html
},
remove: function() {
try {
document[this.id].Stop()
} catch (e) {}
var el = get(this.id);
if (el) {
remove(el)
}
}
};
var wmpControllerHeight = (S.isIE ? 70 : 45);
S.wmp = function(obj, id) {
this.obj = obj;
this.id = id;
this.height = obj.height ? parseInt(obj.height, 10) : 300;
if (S.options.showMovieControls) {
this.height += wmpControllerHeight
}
this.width = obj.width ? parseInt(obj.width, 10) : 300
};
S.wmp.ext = ["asf", "avi", "mpg", "mpeg", "wm", "wmv"];
S.wmp.prototype = {
append: function(body, dims) {
var opt = S.options,
autoplay = opt.autoplayMovies ? 1 : 0;
var movie = '<object id="' + this.id + '" name="' + this.id + '" height="' + this.height + '" width="' + this.width + '"',
params = {
autostart: opt.autoplayMovies ? 1 : 0
};
if (S.isIE) {
movie += ' classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"';
params.url = this.obj.content;
params.uimode = opt.showMovieControls ? "full" : "none"
} else {
movie += ' type="video/x-ms-wmv"';
movie += ' data="' + this.obj.content + '"';
params.showcontrols = opt.showMovieControls ? 1 : 0
}
movie += ">";
for (var p in params) {
movie += '<param name="' + p + '" value="' + params[p] + '">'
}
movie += "</object>";
body.innerHTML = movie
},
remove: function() {
if (S.isIE) {
try {
window[this.id].controls.stop();
window[this.id].URL = "movie" + now() + ".wmv";
window[this.id] = function() {}
} catch (e) {}
}
var el = get(this.id);
if (el) {
setTimeout(function() {
remove(el)
}, 10)
}
}
};
var overlayOn = false,
visibilityCache = [],
pngIds = ["sb-nav-close", "sb-nav-next", "sb-nav-play", "sb-nav-pause", "sb-nav-previous"],
container, overlay, wrapper, doWindowResize = true;
function animate(el, property, to, duration, callback) {
var isOpacity = (property == "opacity"),
anim = isOpacity ? S.setOpacity : function(el, value) {
el.style[property] = "" + value + "px"
};
if (duration == 0 || (!isOpacity && !S.options.animate) || (isOpacity && !S.options.animateFade)) {
anim(el, to);
if (callback) {
callback()
}
return
}
var from = parseFloat(S.getStyle(el, property)) || 0;
var delta = to - from;
if (delta == 0) {
if (callback) {
callback()
}
return
}
duration *= 1000;
var begin = now(),
ease = S.ease,
end = begin + duration,
time;
var interval = setInterval(function() {
time = now();
if (time >= end) {
clearInterval(interval);
interval = null;
anim(el, to);
if (callback) {
callback()
}
} else {
anim(el, from + ease((time - begin) / duration) * delta)
}
}, 10)
}
function setSize() {
container.style.height = S.getWindowSize("Height") + "px";
container.style.width = S.getWindowSize("Width") + "px"
}
function setPosition() {
container.style.top = document.documentElement.scrollTop + "px";
container.style.left = document.documentElement.scrollLeft + "px"
}
function toggleTroubleElements(on) {
if (on) {
each(visibilityCache, function(i, el) {
el[0].style.visibility = el[1] || ""
})
} else {
visibilityCache = [];
each(S.options.troubleElements, function(i, tag) {
each(document.getElementsByTagName(tag), function(j, el) {
visibilityCache.push([el, el.style.visibility]);
el.style.visibility = "hidden"
})
})
}
}
function toggleNav(id, on) {
var el = get("sb-nav-" + id);
if (el) {
el.style.display = on ? "" : "none"
}
}
function toggleLoading(on, callback) {
var loading = get("sb-loading"),
playerName = S.getCurrent().player,
anim = (playerName == "img" || playerName == "html");
if (on) {
S.setOpacity(loading, 0);
loading.style.display = "block";
var wrapped = function() {
S.clearOpacity(loading);
if (callback) {
callback()
}
};
if (anim) {
animate(loading, "opacity", 1, S.options.fadeDuration, wrapped)
} else {
wrapped()
}
} else {
var wrapped = function() {
loading.style.display = "none";
S.clearOpacity(loading);
if (callback) {
callback()
}
};
if (anim) {
animate(loading, "opacity", 0, S.options.fadeDuration, wrapped)
} else {
wrapped()
}
}
}
function buildBars(callback) {
var obj = S.getCurrent();
get("sb-title-inner").innerHTML = obj.title || "";
var close, next, play, pause, previous;
if (S.options.displayNav) {
close = true;
var len = S.gallery.length;
if (len > 1) {
if (S.options.continuous) {
next = previous = true
} else {
next = (len - 1) > S.current;
previous = S.current > 0
}
}
if (S.options.slideshowDelay > 0 && S.hasNext()) {
pause = !S.isPaused();
play = !pause
}
} else {
close = next = play = pause = previous = false
}
toggleNav("close", close);
toggleNav("next", next);
toggleNav("play", play);
toggleNav("pause", pause);
toggleNav("previous", previous);
var counter = "";
if (S.options.displayCounter && S.gallery.length > 1) {
var len = S.gallery.length;
if (S.options.counterType == "skip") {
var i = 0,
end = len,
limit = parseInt(S.options.counterLimit) || 0;
if (limit < len && limit > 2) {
var h = Math.floor(limit / 2);
i = S.current - h;
if (i < 0) {
i += len
}
end = S.current + (limit - h);
if (end > len) {
end -= len
}
}
while (i != end) {
if (i == len) {
i = 0
}
counter += '<a onclick="Shadowbox.change(' + i + ');"';
if (i == S.current) {
counter += ' class="sb-counter-current"'
}
counter += ">" + (++i) + "</a>"
}
} else {
counter = [S.current + 1, S.lang.of, len].join(" ")
}
}
get("sb-counter").innerHTML = counter;
callback()
}
function showBars(callback) {
var titleInner = get("sb-title-inner"),
infoInner = get("sb-info-inner"),
duration = 0.35;
titleInner.style.visibility = infoInner.style.visibility = "";
if (titleInner.innerHTML != "") {
animate(titleInner, "marginTop", 0, duration)
}
animate(infoInner, "marginTop", 0, duration, callback)
}
function hideBars(anim, callback) {
var title = get("sb-title"),
info = get("sb-info"),
titleHeight = title.offsetHeight,
infoHeight = info.offsetHeight,
titleInner = get("sb-title-inner"),
infoInner = get("sb-info-inner"),
duration = (anim ? 0.35 : 0);
animate(titleInner, "marginTop", titleHeight, duration);
animate(infoInner, "marginTop", infoHeight * -1, duration, function() {
titleInner.style.visibility = infoInner.style.visibility = "hidden";
callback()
})
}
function adjustHeight(height, top, anim, callback) {
var wrapperInner = get("sb-wrapper-inner"),
duration = (anim ? S.options.resizeDuration : 0);
animate(wrapper, "top", top, duration);
animate(wrapperInner, "height", height, duration, callback)
}
function adjustWidth(width, left, anim, callback) {
var duration = (anim ? S.options.resizeDuration : 0);
animate(wrapper, "left", left, duration);
animate(wrapper, "width", width, duration, callback)
}
function setDimensions(height, width) {
var bodyInner = get("sb-body-inner"),
height = parseInt(height),
width = parseInt(width),
topBottom = wrapper.offsetHeight - bodyInner.offsetHeight,
leftRight = wrapper.offsetWidth - bodyInner.offsetWidth,
maxHeight = overlay.offsetHeight,
maxWidth = overlay.offsetWidth,
padding = parseInt(S.options.viewportPadding) || 20,
preserveAspect = (S.player && S.options.handleOversize != "drag");
return S.setDimensions(height, width, maxHeight, maxWidth, topBottom, leftRight, padding, preserveAspect)
}
var K = {};
K.markup = '<div id="sb-container"><div id="sb-overlay"></div><div id="sb-wrapper"><div id="sb-title"><div id="sb-title-inner"></div></div><div id="sb-wrapper-inner"><div id="sb-body"><div id="sb-body-inner"></div><div id="sb-loading"><div id="sb-loading-inner"><span>{loading}</span></div></div></div></div><div id="sb-info"><div id="sb-info-inner"><div id="sb-counter"></div><div id="sb-nav"><a id="sb-nav-close" title="{close}" onclick="Shadowbox.close()"></a><a id="sb-nav-next" title="{next}" onclick="Shadowbox.next()"></a><a id="sb-nav-play" title="{play}" onclick="Shadowbox.play()"></a><a id="sb-nav-pause" title="{pause}" onclick="Shadowbox.pause()"></a><a id="sb-nav-previous" title="{previous}" onclick="Shadowbox.previous()"></a></div></div></div></div></div>';
K.options = {
animSequence: "sync",
counterLimit: 10,
counterType: "default",
displayCounter: true,
displayNav: true,
fadeDuration: 0.35,
initialHeight: 160,
initialWidth: 320,
modal: false,
overlayColor: "#000",
overlayOpacity: 0.5,
resizeDuration: 0.35,
showOverlay: true,
troubleElements: ["select", "object", "embed", "canvas"]
};
K.init = function() {
S.appendHTML(document.body, sprintf(K.markup, S.lang));
K.body = get("sb-body-inner");
container = get("sb-container");
overlay = get("sb-overlay");
wrapper = get("sb-wrapper");
if (!supportsFixed) {
container.style.position = "absolute"
}
if (!supportsOpacity) {
var el, m, re = /url\("(.*\.png)"\)/;
each(pngIds, function(i, id) {
el = get(id);
if (el) {
m = S.getStyle(el, "backgroundImage").match(re);
if (m) {
el.style.backgroundImage = "none";
el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src=" + m[1] + ",sizingMethod=scale);"
}
}
})
}
var timer;
addEvent(window, "resize", function() {
if (timer) {
clearTimeout(timer);
timer = null
}
if (open) {
timer = setTimeout(K.onWindowResize, 10)
}
})
};
K.onOpen = function(obj, callback) {
doWindowResize = false;
container.style.display = "block";
setSize();
var dims = setDimensions(S.options.initialHeight, S.options.initialWidth);
adjustHeight(dims.innerHeight, dims.top);
adjustWidth(dims.width, dims.left);
if (S.options.showOverlay) {
overlay.style.backgroundColor = S.options.overlayColor;
S.setOpacity(overlay, 0);
if (!S.options.modal) {
addEvent(overlay, "click", S.close)
}
overlayOn = true
}
if (!supportsFixed) {
setPosition();
addEvent(window, "scroll", setPosition)
}
toggleTroubleElements();
container.style.visibility = "visible";
if (overlayOn) {
animate(overlay, "opacity", S.options.overlayOpacity, S.options.fadeDuration, callback)
} else {
callback()
}
};
K.onLoad = function(changing, callback) {
toggleLoading(true);
while (K.body.firstChild) {
remove(K.body.firstChild)
}
hideBars(changing, function() {
if (!open) {
return
}
if (!changing) {
wrapper.style.visibility = "visible"
}
buildBars(callback)
})
};
K.onReady = function(callback) {
if (!open) {
return
}
var player = S.player,
dims = setDimensions(player.height, player.width);
var wrapped = function() {
showBars(callback)
};
switch (S.options.animSequence) {
case "hw":
adjustHeight(dims.innerHeight, dims.top, true, function() {
adjustWidth(dims.width, dims.left, true, wrapped)
});
break;
case "wh":
adjustWidth(dims.width, dims.left, true, function() {
adjustHeight(dims.innerHeight, dims.top, true, wrapped)
});
break;
default:
adjustWidth(dims.width, dims.left, true);
adjustHeight(dims.innerHeight, dims.top, true, wrapped)
}
};
K.onShow = function(callback) {
toggleLoading(false, callback);
doWindowResize = true
};
K.onClose = function() {
if (!supportsFixed) {
removeEvent(window, "scroll", setPosition)
}
removeEvent(overlay, "click", S.close);
wrapper.style.visibility = "hidden";
var callback = function() {
container.style.visibility = "hidden";
container.style.display = "none";
toggleTroubleElements(true)
};
if (overlayOn) {
animate(overlay, "opacity", 0, S.options.fadeDuration, callback)
} else {
callback()
}
};
K.onPlay = function() {
toggleNav("play", false);
toggleNav("pause", true)
};
K.onPause = function() {
toggleNav("pause", false);
toggleNav("play", true)
};
K.onWindowResize = function() {
if (!doWindowResize) {
return
}
setSize();
var player = S.player,
dims = setDimensions(player.height, player.width);
adjustWidth(dims.width, dims.left);
adjustHeight(dims.innerHeight, dims.top);
if (player.onWindowResize) {
player.onWindowResize()
}
};
S.skin = K;
window.Shadowbox = S
})(window);
| ready |