﻿$(function() { var config = { sensitivity: 3, interval: 100, over: doOpen, timeout: 150, out: doClose }; function doOpen() { $(this).addClass("hover"); $("ul:first", this).css("visibility", "visible") } function doClose() { $(this).removeClass("hover"); $("ul:first", this).css("visibility", "hidden") } $("ul.dropdown li").hoverIntent(config) }); (function($) { $.fn.hoverIntent = function(f, g) { var cfg = { sensitivity: 7, interval: 100, timeout: 0 }; cfg = $.extend(cfg, g ? { over: f, out: g} : f); var cX, cY, pX, pY; var track = function(ev) { cX = ev.pageX; cY = ev.pageY }; var compare = function(ev, ob) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); if ((Math.abs(pX - cX) + Math.abs(pY - cY)) < cfg.sensitivity) { $(ob).unbind("mousemove", track); ob.hoverIntent_s = 1; return cfg.over.apply(ob, [ev]) } else { pX = cX; pY = cY; ob.hoverIntent_t = setTimeout(function() { compare(ev, ob) }, cfg.interval) } }; var delay = function(ev, ob) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); ob.hoverIntent_s = 0; return cfg.out.apply(ob, [ev]) }; var handleHover = function(e) { var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget; while (p && p != this) { try { p = p.parentNode } catch (e) { p = this } } if (p == this) { return false } var ev = jQuery.extend({}, e); var ob = this; if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t) } if (e.type == "mouseover") { pX = ev.pageX; pY = ev.pageY; $(ob).bind("mousemove", track); if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout(function() { compare(ev, ob) }, cfg.interval) } } else { $(ob).unbind("mousemove", track); if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout(function() { delay(ev, ob) }, cfg.timeout) } } }; return this.mouseover(handleHover).mouseout(handleHover) } })(jQuery); jQuery.fn.ytplaylist = function(options) { var options = jQuery.extend({ holderId: "ytvideo", playerHeight: "300", playerWidth: "450", addThumbs: false, thumbSize: "small", showInline: false, autoPlay: true, autoPlayNthChild: 1, showRelated: true, allowFullScreen: false }, options); return this.each(function() { var selector = $(this); var autoPlay = ""; var showRelated = "&rel=0"; var fullScreen = ""; if (options.autoPlay) { autoPlay = "&autoplay=1" } if (options.showRelated) { showRelated = "&rel=1" } if (options.allowFullScreen) { fullScreen = "&fs=1" } function play(id) { var html = ""; html += '<object height="' + options.playerHeight + '" width="' + options.playerWidth + '">'; html += '<param name="movie" value="http://www.youtube.com/v/' + id + autoPlay + showRelated + fullScreen + '"> </param>'; html += '<param name="wmode" value="transparent"> </param>'; if (options.allowFullScreen) { html += '<param name="allowfullscreen" value="true"> </param>' } html += '<embed src="http://www.youtube.com/v/' + id + autoPlay + showRelated + fullScreen + '"'; if (options.allowFullScreen) { html += ' allowfullscreen="true" ' } html += 'type="application/x-shockwave-flash" wmode="transparent"  height="' + options.playerHeight + '" width="' + options.playerWidth + '"></embed>'; html += "</object>"; return html } function youtubeid(url) { var ytid = url.match("[\\?&]v=([^&#]*)"); ytid = ytid[1]; return ytid } var firstVid = selector.children("dd:nth-child(" + options.autoPlayNthChild + ")").addClass("currentvideo").children("a").attr("href"); $("#" + options.holderId + "").html(play(youtubeid(firstVid))); $("dl.tvlist").width(function() { return $("dl.tvlist dd").length * 140 }); selector.children("dd").children("a").click(function() { if (options.showInline) { $("dd.currentvideo").removeClass("currentvideo"); $(this).parent("dd").addClass("currentvideo").html(play(youtubeid($(this).attr("href")))) } else { $("#" + options.holderId + "").html(play(youtubeid($(this).attr("href")))); $(this).parent().parent("dl").find("dd.currentvideo").removeClass("currentvideo"); $(this).parent("dd").addClass("currentvideo") } return false }); if (options.addThumbs) { selector.children().each(function(i) { var replacedText = $(this).text(); if (options.thumbSize == "small") { var thumbUrl = "http://img.youtube.com/vi/" + youtubeid($(this).children("a").attr("href")) + "/2.jpg" } else { var thumbUrl = "http://img.youtube.com/vi/" + youtubeid($(this).children("a").attr("href")) + "/0.jpg" } var newtext = replacedText.split("||||"); $(this).children("a").empty().html("<div class='img' style='background-position:50% 50%;background-image:url(" + thumbUrl + ")' title='" + newtext[0] + "'></div><div class='title'>" + newtext[0] + "</div><div class='description'>" + newtext[1] + "</div>").attr("title", newtext[0]) }) } }) }; (function(d) { var k = d.scrollTo = function(a, i, e) { d(window).scrollTo(a, i, e) }; k.defaults = { axis: "xy", duration: parseFloat(d.fn.jquery) >= 1.3 ? 0 : 1 }; k.window = function(a) { return d(window)._scrollable() }; d.fn._scrollable = function() { return this.map(function() { var a = this, i = !a.nodeName || d.inArray(a.nodeName.toLowerCase(), ["iframe", "#document", "html", "body"]) != -1; if (!i) { return a } var e = (a.contentWindow || a).document || a.ownerDocument || a; return d.browser.safari || e.compatMode == "BackCompat" ? e.body : e.documentElement }) }; d.fn.scrollTo = function(n, j, b) { if (typeof j == "object") { b = j; j = 0 } if (typeof b == "function") { b = { onAfter: b} } if (n == "max") { n = 9000000000 } b = d.extend({}, k.defaults, b); j = j || b.speed || b.duration; b.queue = b.queue && b.axis.length > 1; if (b.queue) { j /= 2 } b.offset = p(b.offset); b.over = p(b.over); return this._scrollable().each(function() { var q = this, r = d(q), f = n, s, g = {}, u = r.is("html,body"); switch (typeof f) { case "number": case "string": if (/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)) { f = p(f); break } f = d(f, this); case "object": if (f.is || f.style) { s = (f = d(f)).offset() } } d.each(b.axis.split(""), function(a, i) { var e = i == "x" ? "Left" : "Top", h = e.toLowerCase(), c = "scroll" + e, l = q[c], m = k.max(q, i); if (s) { g[c] = s[h] + (u ? 0 : l - r.offset()[h]); if (b.margin) { g[c] -= parseInt(f.css("margin" + e)) || 0; g[c] -= parseInt(f.css("border" + e + "Width")) || 0 } g[c] += b.offset[h] || 0; if (b.over[h]) { g[c] += f[i == "x" ? "width" : "height"]() * b.over[h] } } else { var o = f[h]; g[c] = o.slice && o.slice(-1) == "%" ? parseFloat(o) / 100 * m : o } if (/^\d+$/.test(g[c])) { g[c] = g[c] <= 0 ? 0 : Math.min(g[c], m) } if (!a && b.queue) { if (l != g[c]) { t(b.onAfterFirst) } delete g[c] } }); t(b.onAfter); function t(a) { r.animate(g, j, b.easing, a && function() { a.call(this, n, b) }) } }).end() }; k.max = function(a, i) { var e = i == "x" ? "Width" : "Height", h = "scroll" + e; if (!d(a).is("html,body")) { return a[h] - d(a)[e.toLowerCase()]() } var c = "client" + e, l = a.ownerDocument.documentElement, m = a.ownerDocument.body; return Math.max(l[h], m[h]) - Math.min(l[c], m[c]) }; function p(a) { return typeof a == "object" ? a : { top: a, left: a} } })(jQuery);
/*!
* jQuery Tools v1.2.6 - The missing UI library for the 
* http://flowplayer.org/tools
*/
(function(a) { a.tools = a.tools || { version: "v1.2.6" }, a.tools.tooltip = { conf: { effect: "toggle", fadeOutSpeed: "fast", predelay: 0, delay: 30, opacity: 1, tip: 0, fadeIE: !1, position: ["top", "center"], offset: [0, 0], relative: !1, cancelDefault: !0, events: { def: "mouseenter,mouseleave", input: "focus,blur", widget: "focus mouseenter,blur mouseleave", tooltip: "mouseenter,mouseleave" }, layout: "<div/>", tipClass: "tooltip" }, addEffect: function(a, c, d) { b[a] = [c, d] } }; var b = { toggle: [function(a) { var b = this.getConf(), c = this.getTip(), d = b.opacity; d < 1 && c.css({ opacity: d }), c.show(), a.call() }, function(a) { this.getTip().hide(), a.call() } ], fade: [function(b) { var c = this.getConf(); !a.browser.msie || c.fadeIE ? this.getTip().fadeTo(c.fadeInSpeed, c.opacity, b) : (this.getTip().show(), b()) }, function(b) { var c = this.getConf(); !a.browser.msie || c.fadeIE ? this.getTip().fadeOut(c.fadeOutSpeed, b) : (this.getTip().hide(), b()) } ] }; function c(b, c, d) { var e = d.relative ? b.position().top : b.offset().top, f = d.relative ? b.position().left : b.offset().left, g = d.position[0]; e -= c.outerHeight() - d.offset[0], f += b.outerWidth() + d.offset[1], /iPad/i.test(navigator.userAgent) && (e -= a(window).scrollTop()); var h = c.outerHeight() + b.outerHeight(); g == "center" && (e += h / 2), g == "bottom" && (e += h), g = d.position[1]; var i = c.outerWidth() + b.outerWidth(); g == "center" && (f -= i / 2), g == "left" && (f -= i); return { top: e, left: f} } function d(d, e) { var f = this, g = d.add(f), h, i = 0, j = 0, k = d.attr("title"), l = d.attr("data-tooltip"), m = b[e.effect], n, o = d.is(":input"), p = o && d.is(":checkbox, :radio, select, :button, :submit"), q = d.attr("type"), r = e.events[q] || e.events[o ? p ? "widget" : "input" : "def"]; if (!m) throw "Nonexistent effect \"" + e.effect + "\""; r = r.split(/,\s*/); if (r.length != 2) throw "Tooltip: bad events configuration for " + q; d.bind(r[0], function(a) { clearTimeout(i), e.predelay ? j = setTimeout(function() { f.show(a) }, e.predelay) : f.show(a) }).bind(r[1], function(a) { clearTimeout(j), e.delay ? i = setTimeout(function() { f.hide(a) }, e.delay) : f.hide(a) }), k && e.cancelDefault && (d.removeAttr("title"), d.data("title", k)), a.extend(f, { show: function(b) { if (!h) { l ? h = a(l) : e.tip ? h = a(e.tip).eq(0) : k ? h = a(e.layout).addClass(e.tipClass).appendTo(document.body).hide().append(k) : (h = d.next(), h.length || (h = d.parent().next())); if (!h.length) throw "Cannot find tooltip for " + d } if (f.isShown()) return f; h.stop(!0, !0); var o = c(d, h, e); e.tip && h.html(d.data("title")), b = a.Event(), b.type = "onBeforeShow", g.trigger(b, [o]); if (b.isDefaultPrevented()) return f; o = c(d, h, e), h.css({ position: "absolute", top: o.top, left: o.left }), n = !0, m[0].call(f, function() { b.type = "onShow", n = "full", g.trigger(b) }); var p = e.events.tooltip.split(/,\s*/); h.data("__set") || (h.unbind(p[0]).bind(p[0], function() { clearTimeout(i), clearTimeout(j) }), p[1] && !d.is("input:not(:checkbox, :radio), textarea") && h.unbind(p[1]).bind(p[1], function(a) { a.relatedTarget != d[0] && d.trigger(r[1].split(" ")[0]) }), e.tip || h.data("__set", !0)); return f }, hide: function(c) { if (!h || !f.isShown()) return f; c = a.Event(), c.type = "onBeforeHide", g.trigger(c); if (!c.isDefaultPrevented()) { n = !1, b[e.effect][1].call(f, function() { c.type = "onHide", g.trigger(c) }); return f } }, isShown: function(a) { return a ? n == "full" : n }, getConf: function() { return e }, getTip: function() { return h }, getTrigger: function() { return d } }), a.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","), function(b, c) { a.isFunction(e[c]) && a(f).bind(c, e[c]), f[c] = function(b) { b && a(f).bind(c, b); return f } }) } a.fn.tooltip = function(b) { var c = this.data("tooltip"); if (c) return c; b = a.extend(!0, {}, a.tools.tooltip.conf, b), typeof b.position == "string" && (b.position = b.position.split(/,?\s/)), this.each(function() { c = new d(a(this), b), a(this).data("tooltip", c) }); return b.api ? c : this } })(jQuery);
(function(a) { var b = a.tools.tooltip; a.extend(b.conf, { direction: "up", bounce: !1, slideOffset: 10, slideInSpeed: 200, slideOutSpeed: 200, slideFade: !a.browser.msie }); var c = { up: ["-", "top"], down: ["+", "top"], left: ["-", "left"], right: ["+", "left"] }; b.addEffect("slide", function(a) { var b = this.getConf(), d = this.getTip(), e = b.slideFade ? { opacity: b.opacity} : {}, f = c[b.direction] || c.up; e[f[1]] = f[0] + "=" + b.slideOffset, b.slideFade && d.css({ opacity: 0 }), d.show().animate(e, b.slideInSpeed, a) }, function(b) { var d = this.getConf(), e = d.slideOffset, f = d.slideFade ? { opacity: 0} : {}, g = c[d.direction] || c.up, h = "" + g[0]; d.bounce && (h = h == "+" ? "-" : "+"), f[g[1]] = h + "=" + e, this.getTip().animate(f, d.slideOutSpeed, function() { a(this).hide(), b.call() }) }) })(jQuery);
