Created
February 2, 2017 15:34
-
-
Save lsaffie/f74236630789b5524df23b2dd0939fee to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var widget_embed_libraries_191_version = "1.0"; | |
(function(window, document, $, undefined) { | |
var W = $(window), | |
D = $(document), | |
F = $.fancybox = function() { | |
F.open.apply(this, arguments) | |
}, | |
IE = navigator.userAgent.match(/msie/), | |
didUpdate = null, | |
isTouch = document.createTouch !== undefined, | |
isQuery = function(obj) { | |
return obj && obj.hasOwnProperty && obj instanceof $ | |
}, | |
isString = function(str) { | |
return str && $.type(str) === "string" | |
}, | |
isPercentage = function(str) { | |
return isString(str) && str.indexOf("%") > 0 | |
}, | |
isScrollable = function(el) { | |
return el && !(el.style.overflow && el.style.overflow === "hidden") && | |
(el.clientWidth && el.scrollWidth > el.clientWidth || el.clientHeight && el.scrollHeight > el.clientHeight) | |
}, | |
getScalar = function(orig, dim) { | |
var value = parseInt(orig, 10) || 0; | |
if (dim && isPercentage(orig)) value = F.getViewport()[dim] / 100 * value; | |
return Math.ceil(value) | |
}, | |
getValue = function(value, dim) { | |
return getScalar(value, dim) + "px" | |
}; | |
$.extend(F, { | |
version: "2.1.4", | |
defaults: { | |
padding: 15, | |
margin: 20, | |
width: 800, | |
height: 600, | |
minWidth: 100, | |
minHeight: 100, | |
maxWidth: 9999, | |
maxHeight: 9999, | |
autoSize: true, | |
autoHeight: false, | |
autoWidth: false, | |
autoResize: true, | |
autoCenter: !isTouch, | |
fitToView: true, | |
aspectRatio: false, | |
topRatio: 0.5, | |
leftRatio: 0.5, | |
scrolling: "auto", | |
wrapCSS: "", | |
arrows: true, | |
closeBtn: true, | |
closeClick: false, | |
nextClick: false, | |
mouseWheel: true, | |
autoPlay: false, | |
playSpeed: 3E3, | |
preload: 3, | |
modal: false, | |
loop: true, | |
ajax: { | |
dataType: "html", | |
headers: { | |
"X-fancyBox": true | |
} | |
}, | |
iframe: { | |
scrolling: "auto", | |
preload: true | |
}, | |
swf: { | |
wmode: "transparent", | |
allowfullscreen: "true", | |
allowscriptaccess: "always" | |
}, | |
keys: { | |
next: { | |
13: "left", | |
34: "up", | |
39: "left", | |
40: "up" | |
}, | |
prev: { | |
8: "right", | |
33: "down", | |
37: "right", | |
38: "down" | |
}, | |
close: [27], | |
play: [32], | |
toggle: [70] | |
}, | |
direction: { | |
next: "left", | |
prev: "right" | |
}, | |
scrollOutside: true, | |
index: 0, | |
type: null, | |
href: null, | |
content: null, | |
title: null, | |
tpl: { | |
wrap: '<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>', | |
image: '<img class="fancybox-image" src="{href}" alt="" />', | |
iframe: '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen' + | |
(IE ? ' allowtransparency="true"' : "") + "></iframe>", | |
error: '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>', | |
closeBtn: '<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>', | |
next: '<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>', | |
prev: '<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>' | |
}, | |
openEffect: "fade", | |
openSpeed: 250, | |
openEasing: "swing", | |
openOpacity: true, | |
openMethod: "zoomIn", | |
closeEffect: "fade", | |
closeSpeed: 250, | |
closeEasing: "swing", | |
closeOpacity: true, | |
closeMethod: "zoomOut", | |
nextEffect: "elastic", | |
nextSpeed: 250, | |
nextEasing: "swing", | |
nextMethod: "changeIn", | |
prevEffect: "elastic", | |
prevSpeed: 250, | |
prevEasing: "swing", | |
prevMethod: "changeOut", | |
helpers: { | |
overlay: true, | |
title: true | |
}, | |
onCancel: $.noop, | |
beforeLoad: $.noop, | |
afterLoad: $.noop, | |
beforeShow: $.noop, | |
afterShow: $.noop, | |
beforeChange: $.noop, | |
beforeClose: $.noop, | |
afterClose: $.noop | |
}, | |
group: {}, | |
opts: {}, | |
previous: null, | |
coming: null, | |
current: null, | |
isActive: false, | |
isOpen: false, | |
isOpened: false, | |
wrap: null, | |
skin: null, | |
outer: null, | |
inner: null, | |
player: { | |
timer: null, | |
isActive: false | |
}, | |
ajaxLoad: null, | |
imgPreload: null, | |
transitions: {}, | |
helpers: {}, | |
open: function(group, opts) { | |
if (!group) return; | |
if (!$.isPlainObject(opts)) opts = {}; | |
if (false === F.close(true)) return; | |
if (!$.isArray(group)) group = isQuery(group) ? $(group).get() : [group]; | |
$.each(group, function(i, element) { | |
var obj = {}, | |
href, title, content, type, rez, hrefParts, selector; | |
if ($.type(element) === "object") { | |
if (element.nodeType) element = $(element); | |
if (isQuery(element)) { | |
obj = { | |
href: element.data("fancybox-href") || element.attr("href"), | |
title: element.data("fancybox-title") || element.attr("title"), | |
isDom: true, | |
element: element | |
}; | |
if ($.metadata) $.extend(true, obj, element.metadata()) | |
} else obj = element | |
} | |
href = opts.href || obj.href || (isString(element) ? element : null); | |
title = opts.title !== undefined ? opts.title : obj.title || ""; | |
content = opts.content || obj.content; | |
type = content ? "html" : opts.type || obj.type; | |
if (!type && obj.isDom) { | |
type = element.data("fancybox-type"); | |
if (!type) { | |
rez = element.prop("class").match(/fancybox\.(\w+)/); | |
type = rez ? rez[1] : null | |
} | |
} | |
if (isString(href)) { | |
if (!type) | |
if (F.isImage(href)) type = "image"; | |
else if (F.isSWF(href)) type = "swf"; | |
else if (href.charAt(0) === "#") type = "inline"; | |
else if (isString(element)) { | |
type = "html"; | |
content = element | |
} | |
if (type === "ajax") { | |
hrefParts = href.split(/\s+/, 2); | |
href = hrefParts.shift(); | |
selector = hrefParts.shift() | |
} | |
} | |
if (!content) | |
if (type === "inline") | |
if (href) content = $(isString(href) ? href.replace(/.*(?=#[^\s]+$)/, "") : href); | |
else { | |
if (obj.isDom) content = element | |
} | |
else if (type === "html") content = href; | |
else if (!type && !href && | |
obj.isDom) { | |
type = "inline"; | |
content = element | |
} | |
$.extend(obj, { | |
href: href, | |
type: type, | |
content: content, | |
title: title, | |
selector: selector | |
}); | |
group[i] = obj | |
}); | |
F.opts = $.extend(true, {}, F.defaults, opts); | |
if (opts.keys !== undefined) F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false; | |
F.group = group; | |
return F._start(F.opts.index) | |
}, | |
cancel: function() { | |
var coming = F.coming; | |
if (!coming || false === F.trigger("onCancel")) return; | |
F.hideLoading(); | |
if (F.ajaxLoad) F.ajaxLoad.abort(); | |
F.ajaxLoad = null; | |
if (F.imgPreload) F.imgPreload.onload = | |
F.imgPreload.onerror = null; | |
if (coming.wrap) coming.wrap.stop(true, true).trigger("onReset").remove(); | |
F.coming = null; | |
if (!F.current) F._afterZoomOut(coming) | |
}, | |
close: function(event) { | |
F.cancel(); | |
if (false === F.trigger("beforeClose")) return; | |
F.unbindEvents(); | |
if (!F.isActive) return; | |
if (!F.isOpen || event === true) { | |
$(".fancybox-wrap").stop(true).trigger("onReset").remove(); | |
F._afterZoomOut() | |
} else { | |
F.isOpen = F.isOpened = false; | |
F.isClosing = true; | |
$(".fancybox-item, .fancybox-nav").remove(); | |
F.wrap.stop(true, true).removeClass("fancybox-opened"); | |
F.transitions[F.current.closeMethod]() | |
} | |
}, | |
play: function(action) { | |
var clear = function() { | |
clearTimeout(F.player.timer) | |
}, | |
set = function() { | |
clear(); | |
if (F.current && F.player.isActive) F.player.timer = setTimeout(F.next, F.current.playSpeed) | |
}, | |
stop = function() { | |
clear(); | |
$("body").unbind(".player"); | |
F.player.isActive = false; | |
F.trigger("onPlayEnd") | |
}, | |
start = function() { | |
if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) { | |
F.player.isActive = true; | |
$("body").bind({ | |
"afterShow.player onUpdate.player": set, | |
"onCancel.player beforeClose.player": stop, | |
"beforeLoad.player": clear | |
}); | |
set(); | |
F.trigger("onPlayStart") | |
} | |
}; | |
if (action === true || !F.player.isActive && action !== false) start(); | |
else stop() | |
}, | |
next: function(direction) { | |
var current = F.current; | |
if (current) { | |
if (!isString(direction)) direction = current.direction.next; | |
F.jumpto(current.index + 1, direction, "next") | |
} | |
}, | |
prev: function(direction) { | |
var current = F.current; | |
if (current) { | |
if (!isString(direction)) direction = current.direction.prev; | |
F.jumpto(current.index - 1, direction, "prev") | |
} | |
}, | |
jumpto: function(index, direction, router) { | |
var current = | |
F.current; | |
if (!current) return; | |
index = getScalar(index); | |
F.direction = direction || current.direction[index >= current.index ? "next" : "prev"]; | |
F.router = router || "jumpto"; | |
if (current.loop) { | |
if (index < 0) index = current.group.length + index % current.group.length; | |
index = index % current.group.length | |
} | |
if (current.group[index] !== undefined) { | |
F.cancel(); | |
F._start(index) | |
} | |
}, | |
reposition: function(e, onlyAbsolute) { | |
var current = F.current, | |
wrap = current ? current.wrap : null, | |
pos; | |
if (wrap) { | |
pos = F._getPosition(onlyAbsolute); | |
if (e && e.type === "scroll") { | |
delete pos.position; | |
wrap.stop(true, true).animate(pos, 200) | |
} else { | |
wrap.css(pos); | |
current.pos = $.extend({}, current.dim, pos) | |
} | |
} | |
}, | |
update: function(e) { | |
var type = e && e.type, | |
anyway = !type || type === "orientationchange"; | |
if (anyway) { | |
clearTimeout(didUpdate); | |
didUpdate = null | |
} | |
if (!F.isOpen || didUpdate) return; | |
didUpdate = setTimeout(function() { | |
var current = F.current; | |
if (!current || F.isClosing) return; | |
F.wrap.removeClass("fancybox-tmp"); | |
if (anyway || type === "load" || type === "resize" && current.autoResize) F._setDimension(); | |
if (!(type === "scroll" && current.canShrink)) F.reposition(e); | |
F.trigger("onUpdate"); | |
didUpdate = null | |
}, anyway && !isTouch ? 0 : 300) | |
}, | |
toggle: function(action) { | |
if (F.isOpen) { | |
F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView; | |
if (isTouch) { | |
F.wrap.removeAttr("style").addClass("fancybox-tmp"); | |
F.trigger("onUpdate") | |
} | |
F.update() | |
} | |
}, | |
hideLoading: function() { | |
D.unbind(".loading"); | |
$("#fancybox-loading").remove() | |
}, | |
showLoading: function() { | |
var el, viewport; | |
F.hideLoading(); | |
el = $('<div id="fancybox-loading"><div></div></div>').click(F.cancel).appendTo("body"); | |
D.bind("keydown.loading", | |
function(e) { | |
if ((e.which || e.keyCode) === 27) { | |
e.preventDefault(); | |
F.cancel() | |
} | |
}); | |
if (!F.defaults.fixed) { | |
viewport = F.getViewport(); | |
el.css({ | |
position: "absolute", | |
top: viewport.h * 0.5 + viewport.y, | |
left: viewport.w * 0.5 + viewport.x | |
}) | |
} | |
}, | |
getViewport: function() { | |
var locked = F.current && F.current.locked || false, | |
rez = { | |
x: W.scrollLeft(), | |
y: W.scrollTop() | |
}; | |
if (locked) { | |
rez.w = locked[0].clientWidth; | |
rez.h = locked[0].clientHeight | |
} else { | |
rez.w = isTouch && window.innerWidth ? window.innerWidth : W.width(); | |
rez.h = isTouch && window.innerHeight ? window.innerHeight : | |
W.height() | |
} | |
return rez | |
}, | |
unbindEvents: function() { | |
if (F.wrap && isQuery(F.wrap)) F.wrap.unbind(".fb"); | |
D.unbind(".fb"); | |
W.unbind(".fb") | |
}, | |
bindEvents: function() { | |
var current = F.current, | |
keys; | |
if (!current) return; | |
W.bind("orientationchange.fb" + (isTouch ? "" : " resize.fb") + (current.autoCenter && !current.locked ? " scroll.fb" : ""), F.update); | |
keys = current.keys; | |
if (keys) D.bind("keydown.fb", function(e) { | |
var code = e.which || e.keyCode, | |
target = e.target || e.srcElement; | |
if (code === 27 && F.coming) return false; | |
if (!e.ctrlKey && !e.altKey && !e.shiftKey && | |
!e.metaKey && !(target && (target.type || $(target).is("[contenteditable]")))) $.each(keys, function(i, val) { | |
if (current.group.length > 1 && val[code] !== undefined) { | |
F[i](val[code]); | |
e.preventDefault(); | |
return false | |
} | |
if ($.inArray(code, val) > -1) { | |
F[i](); | |
e.preventDefault(); | |
return false | |
} | |
}) | |
}); | |
if ($.fn.mousewheel && current.mouseWheel) F.wrap.bind("mousewheel.fb", function(e, delta, deltaX, deltaY) { | |
var target = e.target || null, | |
parent = $(target), | |
canScroll = false; | |
while (parent.length) { | |
if (canScroll || parent.is(".fancybox-skin") || parent.is(".fancybox-wrap")) break; | |
canScroll = isScrollable(parent[0]); | |
parent = $(parent).parent() | |
} | |
if (delta !== 0 && !canScroll) | |
if (F.group.length > 1 && !current.canShrink) { | |
if (deltaY > 0 || deltaX > 0) F.prev(deltaY > 0 ? "down" : "left"); | |
else if (deltaY < 0 || deltaX < 0) F.next(deltaY < 0 ? "up" : "right"); | |
e.preventDefault() | |
} | |
}) | |
}, | |
trigger: function(event, o) { | |
var ret, obj = o || F.coming || F.current; | |
if (!obj) return; | |
if ($.isFunction(obj[event])) ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1)); | |
if (ret === false) return false; | |
if (obj.helpers) $.each(obj.helpers, function(helper, | |
opts) { | |
if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) { | |
opts = $.extend(true, {}, F.helpers[helper].defaults, opts); | |
F.helpers[helper][event](opts, obj) | |
} | |
}); | |
$.event.trigger(event + ".fb") | |
}, | |
isImage: function(str) { | |
return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp)((\?|#).*)?$)/i) | |
}, | |
isSWF: function(str) { | |
return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i) | |
}, | |
_start: function(index) { | |
var coming = {}, | |
obj, href, type, margin, padding; | |
index = getScalar(index); | |
obj = F.group[index] || | |
null; | |
if (!obj) return false; | |
coming = $.extend(true, {}, F.opts, obj); | |
margin = coming.margin; | |
padding = coming.padding; | |
if ($.type(margin) === "number") coming.margin = [margin, margin, margin, margin]; | |
if ($.type(padding) === "number") coming.padding = [padding, padding, padding, padding]; | |
if (coming.modal) $.extend(true, coming, { | |
closeBtn: false, | |
closeClick: false, | |
nextClick: false, | |
arrows: false, | |
mouseWheel: false, | |
keys: null, | |
helpers: { | |
overlay: { | |
closeClick: false | |
} | |
} | |
}); | |
if (coming.autoSize) coming.autoWidth = coming.autoHeight = true; | |
if (coming.width === "auto") coming.autoWidth = | |
true; | |
if (coming.height === "auto") coming.autoHeight = true; | |
coming.group = F.group; | |
coming.index = index; | |
F.coming = coming; | |
if (false === F.trigger("beforeLoad")) { | |
F.coming = null; | |
return | |
} | |
type = coming.type; | |
href = coming.href; | |
if (!type) { | |
F.coming = null; | |
if (F.current && F.router && F.router !== "jumpto") { | |
F.current.index = index; | |
return F[F.router](F.direction) | |
} | |
return false | |
} | |
F.isActive = true; | |
if (type === "image" || type === "swf") { | |
coming.autoHeight = coming.autoWidth = false; | |
coming.scrolling = "visible" | |
} | |
if (type === "image") coming.aspectRatio = true; | |
if (type === | |
"iframe" && isTouch) coming.scrolling = "scroll"; | |
coming.wrap = $(coming.tpl.wrap).addClass("fancybox-" + (isTouch ? "mobile" : "desktop") + " fancybox-type-" + type + " fancybox-tmp " + coming.wrapCSS).appendTo(coming.parent || "body"); | |
$.extend(coming, { | |
skin: $(".fancybox-skin", coming.wrap), | |
outer: $(".fancybox-outer", coming.wrap), | |
inner: $(".fancybox-inner", coming.wrap) | |
}); | |
$.each(["Top", "Right", "Bottom", "Left"], function(i, v) { | |
coming.skin.css("padding" + v, getValue(coming.padding[i])) | |
}); | |
F.trigger("onReady"); | |
if (type === "inline" || type === | |
"html") { | |
if (!coming.content || !coming.content.length) return F._error("content") | |
} else if (!href) return F._error("href"); | |
if (type === "image") F._loadImage(); | |
else if (type === "ajax") F._loadAjax(); | |
else if (type === "iframe") F._loadIframe(); | |
else F._afterLoad() | |
}, | |
_error: function(type) { | |
$.extend(F.coming, { | |
type: "html", | |
autoWidth: true, | |
autoHeight: true, | |
minWidth: 0, | |
minHeight: 0, | |
scrolling: "no", | |
hasError: type, | |
content: F.coming.tpl.error | |
}); | |
F._afterLoad() | |
}, | |
_loadImage: function() { | |
var img = F.imgPreload = new Image; | |
img.onload = function() { | |
this.onload = | |
this.onerror = null; | |
F.coming.width = this.width; | |
F.coming.height = this.height; | |
F._afterLoad() | |
}; | |
img.onerror = function() { | |
this.onload = this.onerror = null; | |
F._error("image") | |
}; | |
img.src = F.coming.href; | |
if (img.complete !== true) F.showLoading() | |
}, | |
_loadAjax: function() { | |
var coming = F.coming; | |
F.showLoading(); | |
F.ajaxLoad = $.ajax($.extend({}, coming.ajax, { | |
url: coming.href, | |
error: function(jqXHR, textStatus) { | |
if (F.coming && textStatus !== "abort") F._error("ajax", jqXHR); | |
else F.hideLoading() | |
}, | |
success: function(data, textStatus) { | |
if (textStatus === "success") { | |
coming.content = | |
data; | |
F._afterLoad() | |
} | |
} | |
})) | |
}, | |
_loadIframe: function() { | |
var coming = F.coming, | |
iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, (new Date).getTime())).attr("scrolling", isTouch ? "auto" : coming.iframe.scrolling).attr("src", coming.href); | |
$(coming.wrap).bind("onReset", function() { | |
try { | |
$(this).find("iframe").hide().attr("src", "//about:blank").end().empty() | |
} catch (e) {} | |
}); | |
if (coming.iframe.preload) { | |
F.showLoading(); | |
iframe.one("load", function() { | |
$(this).data("ready", 1); | |
if (!isTouch) $(this).bind("load.fb", F.update); | |
$(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show(); | |
F._afterLoad() | |
}) | |
} | |
coming.content = iframe.appendTo(coming.inner); | |
if (!coming.iframe.preload) F._afterLoad() | |
}, | |
_preloadImages: function() { | |
var group = F.group, | |
current = F.current, | |
len = group.length, | |
cnt = current.preload ? Math.min(current.preload, len - 1) : 0, | |
item, i; | |
for (i = 1; i <= cnt; i += 1) { | |
item = group[(current.index + i) % len]; | |
if (item.type === "image" && item.href)(new Image).src = item.href | |
} | |
}, | |
_afterLoad: function() { | |
var coming = F.coming, | |
previous = F.current, | |
placeholder = "fancybox-placeholder", | |
current, content, type, scrolling, href, embed; | |
F.hideLoading(); | |
if (!coming || F.isActive === false) return; | |
if (false === F.trigger("afterLoad", coming, previous)) { | |
coming.wrap.stop(true).trigger("onReset").remove(); | |
F.coming = null; | |
return | |
} | |
if (previous) { | |
F.trigger("beforeChange", previous); | |
previous.wrap.stop(true).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove() | |
} | |
F.unbindEvents(); | |
current = coming; | |
content = coming.content; | |
type = coming.type; | |
scrolling = coming.scrolling; | |
$.extend(F, { | |
wrap: current.wrap, | |
skin: current.skin, | |
outer: current.outer, | |
inner: current.inner, | |
current: current, | |
previous: previous | |
}); | |
href = current.href; | |
switch (type) { | |
case "inline": | |
case "ajax": | |
case "html": | |
if (current.selector) content = $("<div>").html(content).find(current.selector); | |
else if (isQuery(content)) { | |
if (!content.data(placeholder)) content.data(placeholder, $('<div class="' + placeholder + '"></div>').insertAfter(content).hide()); | |
content = content.show().detach(); | |
current.wrap.bind("onReset", function() { | |
if ($(this).find(content).length) content.hide().replaceAll(content.data(placeholder)).data(placeholder, false) | |
}) | |
} | |
break; | |
case "image": | |
content = current.tpl.image.replace("{href}", href); | |
break; | |
case "swf": | |
content = '<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="' + href + '"></param>'; | |
embed = ""; | |
$.each(current.swf, function(name, val) { | |
content += '<param name="' + name + '" value="' + val + '"></param>'; | |
embed += " " + name + '="' + val + '"' | |
}); | |
content += '<embed src="' + href + '" type="application/x-shockwave-flash" width="100%" height="100%"' + embed + "></embed></object>"; | |
break | |
} | |
if (!(isQuery(content) && content.parent().is(current.inner))) current.inner.append(content); | |
F.trigger("beforeShow"); | |
current.inner.css("overflow", scrolling === "yes" ? "scroll" : scrolling === "no" ? "hidden" : scrolling); | |
F._setDimension(); | |
F.reposition(); | |
F.isOpen = false; | |
F.coming = null; | |
F.bindEvents(); | |
if (!F.isOpened) $(".fancybox-wrap").not(current.wrap).stop(true).trigger("onReset").remove(); | |
else if (previous.prevMethod) F.transitions[previous.prevMethod](); | |
F.transitions[F.isOpened ? current.nextMethod : current.openMethod](); | |
F._preloadImages() | |
}, | |
_setDimension: function() { | |
var viewport = F.getViewport(), | |
steps = 0, | |
canShrink = false, | |
canExpand = false, | |
wrap = F.wrap, | |
skin = F.skin, | |
inner = F.inner, | |
current = F.current, | |
width = current.width, | |
height = current.height, | |
minWidth = current.minWidth, | |
minHeight = current.minHeight, | |
maxWidth = current.maxWidth, | |
maxHeight = current.maxHeight, | |
scrolling = current.scrolling, | |
scrollOut = current.scrollOutside ? current.scrollbarWidth : 0, | |
margin = current.margin, | |
wMargin = getScalar(margin[1] + margin[3]), | |
hMargin = getScalar(margin[0] + margin[2]), | |
wPadding, hPadding, wSpace, hSpace, origWidth, origHeight, origMaxWidth, origMaxHeight, ratio, width_, height_, maxWidth_, maxHeight_, iframe, body; | |
wrap.add(skin).add(inner).width("auto").height("auto").removeClass("fancybox-tmp"); | |
wPadding = getScalar(skin.outerWidth(true) - skin.width()); | |
hPadding = getScalar(skin.outerHeight(true) - skin.height()); | |
wSpace = wMargin + wPadding; | |
hSpace = hMargin + hPadding; | |
origWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width; | |
origHeight = isPercentage(height) ? (viewport.h - hSpace) * | |
getScalar(height) / 100 : height; | |
if (current.type === "iframe") { | |
iframe = current.content; | |
if (current.autoHeight && iframe.data("ready") === 1) try { | |
if (iframe[0].contentWindow.document.location) { | |
inner.width(origWidth).height(9999); | |
body = iframe.contents().find("body"); | |
if (scrollOut) body.css("overflow-x", "hidden"); | |
origHeight = body.height() | |
} | |
} catch (e) {} | |
} else if (current.autoWidth || current.autoHeight) { | |
inner.addClass("fancybox-tmp"); | |
if (!current.autoWidth) inner.width(origWidth); | |
if (!current.autoHeight) inner.height(origHeight); | |
if (current.autoWidth) origWidth = inner.width(); | |
if (current.autoHeight) origHeight = inner.height(); | |
inner.removeClass("fancybox-tmp") | |
} | |
width = getScalar(origWidth); | |
height = getScalar(origHeight); | |
ratio = origWidth / origHeight; | |
minWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, "w") - wSpace : minWidth); | |
maxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, "w") - wSpace : maxWidth); | |
minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, "h") - hSpace : minHeight); | |
maxHeight = getScalar(isPercentage(maxHeight) ? | |
getScalar(maxHeight, "h") - hSpace : maxHeight); | |
origMaxWidth = maxWidth; | |
origMaxHeight = maxHeight; | |
if (current.fitToView) { | |
maxWidth = Math.min(viewport.w - wSpace, maxWidth); | |
maxHeight = Math.min(viewport.h - hSpace, maxHeight) | |
} | |
maxWidth_ = viewport.w - wMargin; | |
maxHeight_ = viewport.h - hMargin; | |
if (current.aspectRatio) { | |
if (width > maxWidth) { | |
width = maxWidth; | |
height = getScalar(width / ratio) | |
} | |
if (height > maxHeight) { | |
height = maxHeight; | |
width = getScalar(height * ratio) | |
} | |
if (width < minWidth) { | |
width = minWidth; | |
height = getScalar(width / ratio) | |
} | |
if (height < minHeight) { | |
height = | |
minHeight; | |
width = getScalar(height * ratio) | |
} | |
} else { | |
width = Math.max(minWidth, Math.min(width, maxWidth)); | |
if (current.autoHeight && current.type !== "iframe") { | |
inner.width(width); | |
height = inner.height() | |
} | |
height = Math.max(minHeight, Math.min(height, maxHeight)) | |
} | |
if (current.fitToView) { | |
inner.width(width).height(height); | |
wrap.width(width + wPadding); | |
width_ = wrap.width(); | |
height_ = wrap.height(); | |
if (current.aspectRatio) | |
while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) { | |
if (steps++ > 19) break; | |
height = Math.max(minHeight, | |
Math.min(maxHeight, height - 10)); | |
width = getScalar(height * ratio); | |
if (width < minWidth) { | |
width = minWidth; | |
height = getScalar(width / ratio) | |
} | |
if (width > maxWidth) { | |
width = maxWidth; | |
height = getScalar(width / ratio) | |
} | |
inner.width(width).height(height); | |
wrap.width(width + wPadding); | |
width_ = wrap.width(); | |
height_ = wrap.height() | |
} else { | |
width = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_))); | |
height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_))) | |
} | |
} | |
if (scrollOut && scrolling === "auto" && height < origHeight && width + wPadding + | |
scrollOut < maxWidth_) width += scrollOut; | |
inner.width(width).height(height); | |
wrap.width(width + wPadding); | |
width_ = wrap.width(); | |
height_ = wrap.height(); | |
canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight; | |
canExpand = current.aspectRatio ? width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight : (width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight); | |
$.extend(current, { | |
dim: { | |
width: getValue(width_), | |
height: getValue(height_) | |
}, | |
origWidth: origWidth, | |
origHeight: origHeight, | |
canShrink: canShrink, | |
canExpand: canExpand, | |
wPadding: wPadding, | |
hPadding: hPadding, | |
wrapSpace: height_ - skin.outerHeight(true), | |
skinSpace: skin.height() - height | |
}); | |
if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) inner.height("auto") | |
}, | |
_getPosition: function(onlyAbsolute) { | |
var current = F.current, | |
viewport = F.getViewport(), | |
margin = current.margin, | |
width = F.wrap.width() + margin[1] + margin[3], | |
height = F.wrap.height() + margin[0] + margin[2], | |
rez = { | |
position: "absolute", | |
top: margin[0], | |
left: margin[3] | |
}; | |
if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) rez.position = "fixed"; | |
else if (!current.locked) { | |
rez.top += viewport.y; | |
rez.left += viewport.x | |
} | |
rez.top = getValue(Math.max(rez.top, rez.top + (viewport.h - height) * current.topRatio)); | |
rez.left = getValue(Math.max(rez.left, rez.left + (viewport.w - width) * current.leftRatio)); | |
return rez | |
}, | |
_afterZoomIn: function() { | |
var current = F.current; | |
if (!current) return; | |
F.isOpen = F.isOpened = true; | |
F.wrap.css("overflow", "visible").addClass("fancybox-opened"); | |
F.update(); | |
if (current.closeClick || current.nextClick && F.group.length > 1) F.inner.css("cursor", "pointer").bind("click.fb", function(e) { | |
if (!$(e.target).is("a") && !$(e.target).parent().is("a")) { | |
e.preventDefault(); | |
F[current.closeClick ? "close" : "next"]() | |
} | |
}); | |
if (current.closeBtn) $(current.tpl.closeBtn).appendTo(F.skin).bind("click.fb", function(e) { | |
e.preventDefault(); | |
F.close() | |
}); | |
if (current.arrows && F.group.length > 1) { | |
if (current.loop || current.index > 0) $(current.tpl.prev).appendTo(F.outer).bind("click.fb", F.prev); | |
if (current.loop || | |
current.index < F.group.length - 1) $(current.tpl.next).appendTo(F.outer).bind("click.fb", F.next) | |
} | |
F.trigger("afterShow"); | |
if (!current.loop && current.index === current.group.length - 1) F.play(false); | |
else if (F.opts.autoPlay && !F.player.isActive) { | |
F.opts.autoPlay = false; | |
F.play() | |
} | |
}, | |
_afterZoomOut: function(obj) { | |
obj = obj || F.current; | |
$(".fancybox-wrap").trigger("onReset").remove(); | |
$.extend(F, { | |
group: {}, | |
opts: {}, | |
router: false, | |
current: null, | |
isActive: false, | |
isOpened: false, | |
isOpen: false, | |
isClosing: false, | |
wrap: null, | |
skin: null, | |
outer: null, | |
inner: null | |
}); | |
F.trigger("afterClose", obj) | |
} | |
}); | |
F.transitions = { | |
getOrigPosition: function() { | |
var current = F.current, | |
element = current.element, | |
orig = current.orig, | |
pos = {}, | |
width = 50, | |
height = 50, | |
hPadding = current.hPadding, | |
wPadding = current.wPadding, | |
viewport = F.getViewport(); | |
if (!orig && current.isDom && element.is(":visible")) { | |
orig = element.find("img:first"); | |
if (!orig.length) orig = element | |
} | |
if (isQuery(orig)) { | |
pos = orig.offset(); | |
if (orig.is("img")) { | |
width = orig.outerWidth(); | |
height = orig.outerHeight() | |
} | |
} else { | |
pos.top = viewport.y + (viewport.h - | |
height) * current.topRatio; | |
pos.left = viewport.x + (viewport.w - width) * current.leftRatio | |
} | |
if (F.wrap.css("position") === "fixed" || current.locked) { | |
pos.top -= viewport.y; | |
pos.left -= viewport.x | |
} | |
pos = { | |
top: getValue(pos.top - hPadding * current.topRatio), | |
left: getValue(pos.left - wPadding * current.leftRatio), | |
width: getValue(width + wPadding), | |
height: getValue(height + hPadding) | |
}; | |
return pos | |
}, | |
step: function(now, fx) { | |
var ratio, padding, value, prop = fx.prop, | |
current = F.current, | |
wrapSpace = current.wrapSpace, | |
skinSpace = current.skinSpace; | |
if (prop === "width" || | |
prop === "height") { | |
ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start); | |
if (F.isClosing) ratio = 1 - ratio; | |
padding = prop === "width" ? current.wPadding : current.hPadding; | |
value = now - padding; | |
F.skin[prop](getScalar(prop === "width" ? value : value - wrapSpace * ratio)); | |
F.inner[prop](getScalar(prop === "width" ? value : value - wrapSpace * ratio - skinSpace * ratio)) | |
} | |
}, | |
zoomIn: function() { | |
var current = F.current, | |
startPos = current.pos, | |
effect = current.openEffect, | |
elastic = effect === "elastic", | |
endPos = $.extend({ | |
opacity: 1 | |
}, startPos); | |
delete endPos.position; | |
if (elastic) { | |
startPos = this.getOrigPosition(); | |
if (current.openOpacity) startPos.opacity = 0.1 | |
} else if (effect === "fade") startPos.opacity = 0.1; | |
F.wrap.css(startPos).animate(endPos, { | |
duration: effect === "none" ? 0 : current.openSpeed, | |
easing: current.openEasing, | |
step: elastic ? this.step : null, | |
complete: F._afterZoomIn | |
}) | |
}, | |
zoomOut: function() { | |
var current = F.current, | |
effect = current.closeEffect, | |
elastic = effect === "elastic", | |
endPos = { | |
opacity: 0.1 | |
}; | |
if (elastic) { | |
endPos = this.getOrigPosition(); | |
if (current.closeOpacity) endPos.opacity = 0.1 | |
} | |
F.wrap.animate(endPos, { | |
duration: effect === "none" ? 0 : current.closeSpeed, | |
easing: current.closeEasing, | |
step: elastic ? this.step : null, | |
complete: F._afterZoomOut | |
}) | |
}, | |
changeIn: function() { | |
var current = F.current, | |
effect = current.nextEffect, | |
startPos = current.pos, | |
endPos = { | |
opacity: 1 | |
}, | |
direction = F.direction, | |
distance = 200, | |
field; | |
startPos.opacity = 0.1; | |
if (effect === "elastic") { | |
field = direction === "down" || direction === "up" ? "top" : "left"; | |
if (direction === "down" || direction === "right") { | |
startPos[field] = getValue(getScalar(startPos[field]) - distance); | |
endPos[field] = "+=" + | |
distance + "px" | |
} else { | |
startPos[field] = getValue(getScalar(startPos[field]) + distance); | |
endPos[field] = "-=" + distance + "px" | |
} | |
} | |
if (effect === "none") F._afterZoomIn(); | |
else F.wrap.css(startPos).animate(endPos, { | |
duration: current.nextSpeed, | |
easing: current.nextEasing, | |
complete: F._afterZoomIn | |
}) | |
}, | |
changeOut: function() { | |
var previous = F.previous, | |
effect = previous.prevEffect, | |
endPos = { | |
opacity: 0.1 | |
}, | |
direction = F.direction, | |
distance = 200; | |
if (effect === "elastic") endPos[direction === "down" || direction === "up" ? "top" : "left"] = (direction === "up" || direction === | |
"left" ? "-" : "+") + "=" + distance + "px"; | |
previous.wrap.animate(endPos, { | |
duration: effect === "none" ? 0 : previous.prevSpeed, | |
easing: previous.prevEasing, | |
complete: function() { | |
$(this).trigger("onReset").remove() | |
} | |
}) | |
} | |
}; | |
F.helpers.overlay = { | |
defaults: { | |
closeClick: true, | |
speedOut: 200, | |
showEarly: true, | |
css: {}, | |
locked: !isTouch, | |
fixed: true | |
}, | |
overlay: null, | |
fixed: false, | |
create: function(opts) { | |
opts = $.extend({}, this.defaults, opts); | |
if (this.overlay) this.close(); | |
this.overlay = $('<div class="fancybox-overlay"></div>').appendTo("body"); | |
this.fixed = | |
false; | |
if (opts.fixed && F.defaults.fixed) { | |
this.overlay.addClass("fancybox-overlay-fixed"); | |
this.fixed = true | |
} | |
}, | |
open: function(opts) { | |
var that = this; | |
opts = $.extend({}, this.defaults, opts); | |
if (this.overlay) this.overlay.unbind(".overlay").width("auto").height("auto"); | |
else this.create(opts); | |
if (!this.fixed) { | |
W.bind("resize.overlay", $.proxy(this.update, this)); | |
this.update() | |
} | |
if (opts.closeClick) this.overlay.bind("click.overlay", function(e) { | |
if ($(e.target).hasClass("fancybox-overlay")) | |
if (F.isActive) F.close(); | |
else that.close() | |
}); | |
this.overlay.css(opts.css).show() | |
}, | |
close: function() { | |
$(".fancybox-overlay").remove(); | |
W.unbind("resize.overlay"); | |
this.overlay = null; | |
if (this.margin !== false) { | |
$("body").css("margin-right", this.margin); | |
this.margin = false | |
} | |
if (this.el) this.el.removeClass("fancybox-lock") | |
}, | |
update: function() { | |
var width = "100%", | |
offsetWidth; | |
this.overlay.width(width).height("100%"); | |
if (IE) { | |
offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth); | |
if (D.width() > offsetWidth) width = D.width() | |
} else if (D.width() > | |
W.width()) width = D.width(); | |
this.overlay.width(width).height(D.height()) | |
}, | |
onReady: function(opts, obj) { | |
$(".fancybox-overlay").stop(true, true); | |
if (!this.overlay) { | |
this.margin = D.height() > W.height() || $("body").css("overflow-y") === "scroll" ? $("body").css("margin-right") : false; | |
this.el = document.all && !document.querySelector ? $("html") : $("body"); | |
this.create(opts) | |
} | |
if (opts.locked && this.fixed) { | |
obj.locked = this.overlay.append(obj.wrap); | |
obj.fixed = false | |
} | |
if (opts.showEarly === true) this.beforeShow.apply(this, arguments) | |
}, | |
beforeShow: function(opts, | |
obj) { | |
if (obj.locked) { | |
this.el.addClass("fancybox-lock"); | |
if (this.margin !== false) $("body").css("margin-right", getScalar(this.margin) + obj.scrollbarWidth) | |
} | |
this.open(opts) | |
}, | |
onUpdate: function() { | |
if (!this.fixed) this.update() | |
}, | |
afterClose: function(opts) { | |
if (this.overlay && !F.isActive) this.overlay.fadeOut(opts.speedOut, $.proxy(this.close, this)) | |
} | |
}; | |
F.helpers.title = { | |
defaults: { | |
type: "float", | |
position: "bottom" | |
}, | |
beforeShow: function(opts) { | |
var current = F.current, | |
text = current.title, | |
type = opts.type, | |
title, target; | |
if ($.isFunction(text)) text = | |
text.call(current.element, current); | |
if (!isString(text) || $.trim(text) === "") return; | |
title = $('<div class="fancybox-title fancybox-title-' + type + '-wrap">' + text + "</div>"); | |
switch (type) { | |
case "inside": | |
target = F.skin; | |
break; | |
case "outside": | |
target = F.wrap; | |
break; | |
case "over": | |
target = F.inner; | |
break; | |
default: | |
target = F.skin; | |
title.appendTo("body"); | |
if (IE) title.width(title.width()); | |
title.wrapInner('<span class="child"></span>'); | |
F.current.margin[2] += Math.abs(getScalar(title.css("margin-bottom"))); | |
break | |
} | |
title[opts.position === "top" ? | |
"prependTo" : "appendTo"](target) | |
} | |
}; | |
$.fn.fancybox = function(options) { | |
var index, that = $(this), | |
selector = this.selector || "", | |
run = function(e) { | |
var what = $(this).blur(), | |
idx = index, | |
relType, relVal; | |
if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is(".fancybox-wrap")) { | |
relType = options.groupAttr || "data-fancybox-group"; | |
relVal = what.attr(relType); | |
if (!relVal) { | |
relType = "rel"; | |
relVal = what.get(0)[relType] | |
} | |
if (relVal && relVal !== "" && relVal !== "nofollow") { | |
what = selector.length ? $(selector) : that; | |
what = what.filter("[" + relType + '="' + | |
relVal + '"]'); | |
idx = what.index(this) | |
} | |
options.index = idx; | |
if (F.open(what, options) !== false) e.preventDefault() | |
} | |
}; | |
options = options || {}; | |
index = options.index || 0; | |
if (!selector || options.live === false) that.unbind("click.fb-start").bind("click.fb-start", run); | |
else D.undelegate(selector, "click.fb-start").delegate(selector + ":not('.fancybox-item, .fancybox-nav')", "click.fb-start", run); | |
this.filter("[data-fancybox-start=1]").trigger("click"); | |
return this | |
}; | |
D.ready(function() { | |
if ($.scrollbarWidth === undefined) $.scrollbarWidth = | |
function() { | |
var parent = $('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"), | |
child = parent.children(), | |
width = child.innerWidth() - child.height(99).innerWidth(); | |
parent.remove(); | |
return width | |
}; | |
if ($.support.fixedPosition === undefined) $.support.fixedPosition = function() { | |
var elem = $('<div style="position:fixed;top:20px;"></div>').appendTo("body"), | |
fixed = elem[0].offsetTop === 20 || elem[0].offsetTop === 15; | |
elem.remove(); | |
return fixed | |
}(); | |
$.extend(F.defaults, { | |
scrollbarWidth: $.scrollbarWidth(), | |
fixed: $.support.fixedPosition, | |
parent: $("body") | |
}) | |
}) | |
})(window, document, jQuery); | |
(function($) { | |
$.fn.fancybox = function(options) { | |
return this.click(function(e) { | |
e.preventDefault(); | |
options = options || {}; | |
if (!$.fancybox) return; | |
if (!options.autoSize) options.autoSize = false; | |
if (!options.closeClick) options.closeClick = false; | |
$.fancybox.open($(this), options) | |
}) | |
} | |
})(jQuery); | |
DESK = window.DESK || {}; | |
(function() { | |
if (DESK && DESK.Widget) return; | |
DESK.Widget = function(opts) { | |
this.init(opts) | |
}; | |
ASSISTLY = window.ASSISTLY || {}; | |
ASSISTLY.Widget = DESK.Widget; | |
(function() { | |
DESK.Widget.ID_COUNTER = 0; | |
DESK.Widget.prototype = function() { | |
var new_chat_path = "/customer/widget/chats/new"; | |
var new_email_path = "/customer/widget/emails/new"; | |
var chat_sprite_path = "http://assets0.assistly.com/images/customer/widget/chat/launch_chat_sprite.png"; | |
var email_sprite_path = "http://assets0.assistly.com/images/customer/widget/email/launch_email_sprite.png"; | |
var chat_sprite_path_ssl = "https://d3j15y3zsn7b4t.cloudfront.net/images/customer/widget/chat/launch_chat_sprite.png"; | |
var email_sprite_path_ssl = "https://d3j15y3zsn7b4t.cloudfront.net/images/customer/widget/email/launch_email_sprite.png"; | |
var agent_check_path = "/customer/agent_online_check"; | |
return { | |
init: function(opts) { | |
this._widgetNumber = ++ASSISTLY.Widget.ID_COUNTER; | |
this._setWidgetType(opts.type); | |
var locale_code = ((opts.fields || {}).customer || {}).locale_code; | |
if (locale_code) | |
if (this._isChatWidget) new_chat_path = | |
new_chat_path.replace(/customer/, "customer/" + locale_code); | |
else if (this._isEmailWidget) new_email_path = new_email_path.replace(/customer/, "customer/" + locale_code); | |
this._secure = opts.secure || window.location.protocol == "https:"; | |
this._site = opts.site; | |
this._port = opts.port || 80; | |
if (opts.port) this._base_url = (this._secure ? "https://" : "http://") + this._site + (this._secure ? "" : ":" + this._port); | |
else this._base_url = (this._secure ? "https://" : "http://") + this._site; | |
this._widgetPopupWidth = opts.popupWidth || 640; | |
this._widgetPopupHeight = | |
opts.popupHeight || 700; | |
this._siteAgentCount = -1; | |
this._siteAgentRoutingCount = -1; | |
this._widgetDisplayMode = opts.displayMode || 0; | |
this._offerAlways = false; | |
this._offerRoutingAgentsAvailable = true; | |
this._offerAgentsOnline = false; | |
this._offerEmailIfChatUnavailable = false; | |
this._widgetID = opts.id || "assistly-widget-" + this._widgetNumber; | |
if (!opts.id) document.write('<span class="assistly-widget" id="' + this._widgetID + '"></span>'); | |
this.widgetDOM = document.getElementById(this._widgetID); | |
this.setFeatures(opts.features); | |
if (opts.fields) { | |
this._ticketFields = | |
opts.fields.ticket; | |
this._interactionFields = opts.fields.interaction; | |
this._customerFields = opts.fields.customer; | |
this._emailFields = opts.fields.email; | |
this._chatFields = opts.fields.chat | |
} else { | |
this._ticketFields = []; | |
this._interactionFields = []; | |
this._customerFields = []; | |
this._emailFields = []; | |
this._chatFields = [] | |
} | |
return this | |
}, | |
_setWidgetType: function(type) { | |
this._isEmailWidget = false; | |
this._isChat = false; | |
this._type = type; | |
switch (type) { | |
case "email": | |
this._isEmailWidget = true; | |
break; | |
case "chat": | |
this._isChatWidget = true; | |
break; | |
default: | |
this._isEmailWidget = true | |
} | |
return this | |
}, | |
setFeatures: function(features) { | |
if (features) { | |
if (!(typeof features.offerAlways === "undefined")) this._offerAlways = features.offerAlways; | |
if (!(typeof features.offerRoutingAgentsAvailable === "undefined")) this._offerRoutingAgentsAvailable = features.offerRoutingAgentsAvailable; | |
if (!(typeof features.offerAgentsOnline === "undefined")) this._offerAgentsOnline = features.offerAgentsOnline; | |
if (!(typeof features.offerEmailIfChatUnavailable === "undefined")) this._offerEmailIfChatUnavailable = | |
features.offerEmailIfChatUnavailable | |
} | |
return this | |
}, | |
setSiteAgentCount: function(data) { | |
this._siteAgentCount = data.online_agents; | |
this._siteAgentRoutingCount = data.routing_agents; | |
this.render() | |
}, | |
_buildBaseButton: function() { | |
var result = ""; | |
var sprite_path = ""; | |
var action_path = ""; | |
var show_disabled = false; | |
var ticket_params = ""; | |
var interaction_params = ""; | |
var customer_params = ""; | |
var email_params = ""; | |
var chat_params = ""; | |
var params = ""; | |
if (this._ticketFields) | |
for (param in this._ticketFields) ticket_params += "ticket[" + escape(param) + | |
"]=" + escape(this._ticketFields[param]) + "&"; | |
if (this._interactionFields) | |
for (param in this._interactionFields) interaction_params += "interaction[" + escape(param) + "]=" + escape(this._interactionFields[param]) + "&"; | |
if (this._customerFields) | |
for (param in this._customerFields) customer_params += "customer[" + escape(param) + "]=" + escape(this._customerFields[param]) + "&"; | |
if (this._emailFields) | |
for (param in this._emailFields) email_params += "email[" + escape(param) + "]=" + escape(this._emailFields[param]) + "&"; | |
if (this._chatFields) | |
for (param in this._chatFields) chat_params += | |
"chat[" + escape(param) + "]=" + escape(this._chatFields[param]) + "&"; | |
params = ticket_params + interaction_params + email_params + chat_params + customer_params; | |
if (this._isChatWidget) { | |
sprite_path = this._secure ? chat_sprite_path_ssl : chat_sprite_path; | |
action_path = new_chat_path; | |
if (!this._offerAlways) { | |
if (this._offerRoutingAgentsAvailable && this._siteAgentRoutingCount < 1) show_disabled = true; | |
if (this._offerAgentsOnline && this._siteAgentCount < 1) show_disabled = true | |
} | |
if (!this._offerAlways && !this._offerRoutingAgentsAvailable && !this._offerAgentsOnline) show_disabled = | |
true; | |
if (show_disabled && this._offerEmailIfChatUnavailable) { | |
this._isChatWidget = false; | |
this._isEmailWidget = true | |
} | |
} | |
if (this._isEmailWidget) { | |
sprite_path = this._secure ? email_sprite_path_ssl : email_sprite_path; | |
action_path = new_email_path | |
} | |
action_path += "?" + params; | |
if (!show_disabled) { | |
if (this._widgetDisplayMode == 0) result = ' <a href="#" class="a-desk-widget a-desk-widget-' + this._type + '" style="text-decoration:none;width:65px;display:inline-block;min-height:22px;background: url(' + | |
sprite_path + ') no-repeat scroll 0 0px transparent;" onmouseover="this.style.backgroundPosition=\'0 -20px\'" onmouseout="this.style.backgroundPosition=\'0 0px\'" onclick="window.open(\'' + this._base_url + action_path + "', 'assistly_chat','resizable=1, status=0, toolbar=0,width=" + this._widgetPopupWidth + ",height=" + this._widgetPopupHeight + "')\"> </a>"; | |
if (this._widgetDisplayMode == 1) result = ' <a href="' + this._base_url + action_path + '" class="a-desk-widget a-desk-widget-' + | |
this._type + '" style="text-decoration:none;width:65px;display:inline-block;min-height:22px;background: url(' + sprite_path + ') no-repeat scroll 0 0px transparent;" onmouseover="this.style.backgroundPosition=\'0 -20px\'" onmouseout="this.style.backgroundPosition=\'0 0px\'" > </a>' | |
} else result = ' <span style="width:65px;display:inline-block;min-height:22px;background: url(' + sprite_path + ') no-repeat scroll 0 -40px transparent;"> </span>'; | |
return result | |
}, | |
_renderChatWidget: function() { | |
if (this._siteAgentCount < 0) { | |
var that = this; | |
url = this._base_url + agent_check_path; | |
jQuery.getJSON(url + "?callback=?", function(data) { | |
if (data) that.setSiteAgentCount(data) | |
}) | |
} else this.widgetDOM.innerHTML = this._buildBaseButton(); | |
return this | |
}, | |
_renderEmailWidget: function() { | |
this.widgetDOM.innerHTML = this._buildBaseButton(); | |
return this | |
}, | |
render: function() { | |
if (this._isChatWidget) this._renderChatWidget(); | |
if (this._isEmailWidget) this._renderEmailWidget(); | |
if (this._widgetDisplayMode == | |
1) jQuery("#" + this._widgetID + " a").each(function() { | |
$(this).fancybox({ | |
"width": this._widgetPopupWidth, | |
"height": this._widgetPopupHeight, | |
"type": "iframe", | |
"hideOnOverlayClick": false, | |
"centerOnScroll": true | |
}) | |
}); | |
return this | |
} | |
} | |
}() | |
})() | |
})(); | |
(function($) { | |
$.autolink = function(html, target) { | |
target = target || "_blank"; | |
html = html || ""; | |
var re_proto = /\b([\w+.:-]+:\/\/)|mailto:/i, | |
re = new RegExp("(\\b(?:([\\w+.:-]+:)//|www.|mailto:)(([\\w.\\-+]+(:\\w+)?@)?[-\\w]+(?:\\.[-\\w]+)*(?::\\d+)?(?:/(?:[~\\w\\+@%=\\(\\)-]|(?:[,.;:#'][^\\s$]))*)*(?:\\?[\\w\\+@%&-=.;:/-\\[\\]]+)?(?:\\#[\\w\\-]*)?)([[^$.*+?=!:|\\/()[]{}]]|<|$|))", "g"); | |
return html.replace(re, function(str) { | |
var href = str, | |
a_target = target; | |
if (!re_proto.test(str)) href = "http://" + href; | |
else if (/mailto:/i.test(str)) a_target = | |
"_self"; | |
return $("<a/>", { | |
target: a_target, | |
href: href | |
}).html(str).outerHTML() | |
}) | |
}; | |
$.fn.highlight = function(text, o) { | |
var safe_text = text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); | |
return this.each(function() { | |
var replace = o || '<span class="highlight">$1</span>'; | |
$(this).html($(this).html().replace(new RegExp("(" + safe_text + '(?![\\w\\s?&.\\/;#~%"=-]*>))', "ig"), replace)) | |
}) | |
}; | |
$.fn.autolink_old = function(target) { | |
target = target || "_self"; | |
return this.each(function() { | |
var re = /((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g; | |
$(this).html($(this).html().replace(re, '<a target="' + target + '" href="$1">$1</a> ')) | |
}) | |
}; | |
$.fn.mailto = function() { | |
return this.each(function() { | |
var re = /(([a-z0-9*._+]){1,}\@(([a-z0-9]+[-]?){1,}[a-z0-9]+\.){1,}([a-z]{2,4}|museum)(?![\w\s?&.\/;#~%"=-]*>))/g; | |
$(this).html($(this).html().replace(re, '<a href="mailto:$1">$1</a>')) | |
}) | |
}; | |
$.fn.autolink = function(target) { | |
return this.each(function() { | |
var $this = $(this), | |
html = $.autolink($this.html(), target); | |
$this.html(html) | |
}) | |
} | |
})(jQuery); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment